From ec0e555ed0b30f4e1494a22a907e091a3a205523 Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 10 Nov 2013 21:34:42 +0100 Subject: [PATCH 001/315] Added food bags. (Sprites don't work yet) --- code/modules/reagents/Chemistry-Machinery.dm | 29 +- .../reagent_containers/food/condiment.dm | 274 ++++++++++-------- icons/obj/food.dmi | Bin 84908 -> 85152 bytes 3 files changed, 176 insertions(+), 127 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index e0197d93388..fc405354924 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -326,19 +326,29 @@ reagents.clear_reagents() icon_state = "mixer0" else if (href_list["createpill"]) - var/name = reject_bad_text(input(usr,"Name:","Name your pill!",reagents.get_master_reagent_name())) - var/obj/item/weapon/reagent_containers/pill/P + if(!condi) + var/name = reject_bad_text(input(usr,"Name:","Name your pill!",reagents.get_master_reagent_name())) + var/obj/item/weapon/reagent_containers/pill/P - if(loaded_pill_bottle && loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots) - P = new/obj/item/weapon/reagent_containers/pill(loaded_pill_bottle) + if(loaded_pill_bottle && loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots) + P = new/obj/item/weapon/reagent_containers/pill(loaded_pill_bottle) + else + P = new/obj/item/weapon/reagent_containers/pill(src.loc) + + if(!name) name = reagents.get_master_reagent_name() + P.name = "[name] pill" + P.pixel_x = rand(-7, 7) //random position + P.pixel_y = rand(-7, 7) + reagents.trans_to(P,50) else + var/name = reject_bad_text(input(usr,"Name:","Name your bag!",reagents.get_master_reagent_name())) + var/obj/item/weapon/reagent_containers/food/condiment/pack/P = new/obj/item/weapon/reagent_containers/food/condiment/pack(src.loc) + P = new/obj/item/weapon/reagent_containers/pill(src.loc) - if(!name) name = reagents.get_master_reagent_name() - P.name = "[name] pill" - P.pixel_x = rand(-7, 7) //random position - P.pixel_y = rand(-7, 7) - reagents.trans_to(P,50) + if(!name) name = reagents.get_master_reagent_name() + P.name = "[name] bag" + reagents.trans_to(P,10) else if (href_list["createbottle"]) if(!condi) @@ -410,6 +420,7 @@ dat += "

Create pill (50 units max)
" dat += "Create bottle (30 units max)" else + dat += "

Create pack (10 units max)
" dat += "Create bottle (50 units max)" if(!condi) user << browse("Chemmaster 3000Chemmaster menu:

[dat]", "window=chem_master;size=575x400") diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 06fd2b45319..178c95e875f 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -13,143 +13,151 @@ flags = FPRINT | TABLEPASS | OPENCONTAINER possible_transfer_amounts = list(1,5,10) volume = 50 + //Possible_icon_states has the reagents as key and a list of, in order, the icon_state, the name and the desc as values. + var/list/possible_icon_states = list("ketchup" = list("ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "Universal Enzyme", "Used in cooking various dishes"), "soysauce" = list("soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("saltshaker", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "Sugar", "Tasty spacey sugar!")) - attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/item/weapon/reagent_containers/food/condiment/New() + ..() + - return - attack_self(mob/user as mob) - return - attack(mob/M as mob, mob/user as mob, def_zone) - var/datum/reagents/R = src.reagents +/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/weapon/W as obj, mob/user as mob) + return - if(!R || !R.total_volume) - user << "\red None of [src] left, oh no!" - return 0 +/obj/item/weapon/reagent_containers/food/condiment/attack_self(mob/user as mob) + return - if(M == user) - M << "\blue You swallow some of contents of the [src]." - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, 10) +/obj/item/weapon/reagent_containers/food/condiment/attack(mob/M as mob, mob/user as mob, def_zone) + var/datum/reagents/R = src.reagents - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - else if( istype(M, /mob/living/carbon/human) ) - - for(var/mob/O in viewers(world.view, user)) - O.show_message("\red [user] attempts to feed [M] [src].", 1) - if(!do_mob(user, M)) return - for(var/mob/O in viewers(world.view, user)) - O.show_message("\red [user] feeds [M] [src].", 1) - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") - - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, 10) - - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 + if(!R || !R.total_volume) + user << "\red None of [src] left, oh no!" return 0 - attackby(obj/item/I as obj, mob/user as mob) + if(M == user) + M << "\blue You swallow some of contents of the [src]." + if(reagents.total_volume) + reagents.reaction(M, INGEST) + spawn(5) + reagents.trans_to(M, 10) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + return 1 + else if( istype(M, /mob/living/carbon/human) ) + + for(var/mob/O in viewers(world.view, user)) + O.show_message("\red [user] attempts to feed [M] [src].", 1) + if(!do_mob(user, M)) return + for(var/mob/O in viewers(world.view, user)) + O.show_message("\red [user] feeds [M] [src].", 1) + + M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") + user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") + + + log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + + if(reagents.total_volume) + reagents.reaction(M, INGEST) + spawn(5) + reagents.trans_to(M, 10) + + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + return 1 + return 0 + +/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/I as obj, mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity) + if(!proximity) return + if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. + + if(!target.reagents.total_volume) + user << "\red [target] is empty." + return + + if(reagents.total_volume >= reagents.maximum_volume) + user << "\red [src] is full." + return + + var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) + user << "\blue You fill [src] with [trans] units of the contents of [target]." + + //Something like a glass or a food item. Player probably wants to transfer TO it. + else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks)) + if(!reagents.total_volume) + user << "\red [src] is empty." + return + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << "\red you can't add anymore to [target]." + return + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + user << "\blue You transfer [trans] units of the condiment to [target]." + +/obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() + if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") return - - afterattack(obj/target, mob/user , proximity) - if(!proximity) return - if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. - - if(!target.reagents.total_volume) - user << "\red [target] is empty." - return - - if(reagents.total_volume >= reagents.maximum_volume) - user << "\red [src] is full." - return - - var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) - user << "\blue You fill [src] with [trans] units of the contents of [target]." - - //Something like a glass or a food item. Player probably wants to transfer TO it. - else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks)) - if(!reagents.total_volume) - user << "\red [src] is empty." - return - if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "\red you can't add anymore to [target]." - return - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - user << "\blue You transfer [trans] units of the condiment to [target]." - - on_reagent_change() - if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") - return - if(reagents.reagent_list.len > 0) - switch(reagents.get_master_reagent_id()) - if("ketchup") - name = "Ketchup" - desc = "You feel more American already." - icon_state = "ketchup" - if("capsaicin") - name = "Hotsauce" - desc = "You can almost TASTE the stomach ulcers now!" - icon_state = "hotsauce" - if("enzyme") - name = "Universal Enzyme" - desc = "Used in cooking various dishes." - icon_state = "enzyme" - if("soysauce") - name = "Soy Sauce" - desc = "A salty soy-based flavoring." - icon_state = "soysauce" - if("frostoil") - name = "Coldsauce" - desc = "Leaves the tongue numb in its passage." - icon_state = "coldsauce" - if("sodiumchloride") - name = "Salt Shaker" - desc = "Salt. From space oceans, presumably." - icon_state = "saltshaker" - if("blackpepper") - name = "Pepper Mill" - desc = "Often used to flavor food or make people sneeze." - icon_state = "peppermillsmall" - if("cornoil") - name = "Corn Oil" - desc = "A delicious oil used in cooking. Made from corn." - icon_state = "oliveoil" - if("sugar") - name = "Sugar" - desc = "Tastey space sugar!" + if(reagents.reagent_list.len > 0) + if(reagents.get_master_reagent_id() in possible_icon_states) + if("ketchup") + name = "Ketchup" + desc = "You feel more American already." + icon_state = "ketchup" + if("capsaicin") + name = "Hotsauce" + desc = "You can almost TASTE the stomach ulcers now!" + icon_state = "hotsauce" + if("enzyme") + name = "Universal Enzyme" + desc = "Used in cooking various dishes." + icon_state = "enzyme" + if("soysauce") + name = "Soy Sauce" + desc = "A salty soy-based flavoring." + icon_state = "soysauce" + if("frostoil") + name = "Coldsauce" + desc = "Leaves the tongue numb in its passage." + icon_state = "coldsauce" + if("sodiumchloride") + name = "Salt Shaker" + desc = "Salt. From space oceans, presumably." + icon_state = "saltshaker" + if("blackpepper") + name = "Pepper Mill" + desc = "Often used to flavor food or make people sneeze." + icon_state = "peppermillsmall" + if("cornoil") + name = "Corn Oil" + desc = "A delicious oil used in cooking. Made from corn." + icon_state = "oliveoil" + if("sugar") + name = "Sugar" + desc = "Tastey space sugar!" + else + name = "Misc Condiment Bottle" + if (reagents.reagent_list.len==1) + desc = "Looks like it is [reagents.get_master_reagent_name()], but you are not sure." else - name = "Misc Condiment Bottle" - if (reagents.reagent_list.len==1) - desc = "Looks like it is [reagents.get_master_reagent_name()], but you are not sure." - else - desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them." - icon_state = "mixedcondiments" - else - icon_state = "emptycondiment" - name = "Condiment Bottle" - desc = "An empty condiment bottle." - return + desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them." + icon_state = "mixedcondiments" + else + icon_state = "emptycondiment" + name = "Condiment Bottle" + desc = "An empty condiment bottle." + return /obj/item/weapon/reagent_containers/food/condiment/enzyme name = "Universal Enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" + New() ..() reagents.add_reagent("enzyme", 50) /obj/item/weapon/reagent_containers/food/condiment/sugar + New() ..() reagents.add_reagent("sugar", 50) @@ -161,6 +169,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 + New() ..() reagents.add_reagent("sodiumchloride", 20) @@ -172,6 +181,35 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 + New() ..() - reagents.add_reagent("blackpepper", 20) \ No newline at end of file + reagents.add_reagent("blackpepper", 20) + +//Food packs. To easily apply deadly toxi... delicious sauces to your food! +/obj/item/weapon/reagent_containers/food/condiment/pack + name = "condiment pack" + desc = "A small plastic bag to put on your food" + icon_state = "blankbag" + volume = 10 + amount_per_transfer_from_this = 10 + possible_transfer_amounts = 10 + flags = FPRINT | TABLEPASS + +/obj/item/weapon/reagent_containers/food/condiment/pack/attack(mob/M as mob, mob/user as mob, def_zone) //Can't feed these to people directly. + return + +/obj/item/weapon/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity) + if(!proximity) return + + //You can tear the bag open above food to put the condiments on it. + else if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) + if(!reagents.total_volume) + user << "You tear open the [src], but there's nothing in it." + Del() + return + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << "You tear open [src], but [target] is stacked so high that it just drips off!" + return + user << "You tear open the [src] above [target] and the condiments drip onto it." + src.reagents.trans_to(target, amount_per_transfer_from_this) \ No newline at end of file diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 8a47f0c3683647e7ff87f2e80792df324dac5c83..3d1095d2844b31f8b4b58d474b6f2ff61010316a 100644 GIT binary patch delta 11286 zcmZvCWk6J2wD!;~-AYTRlu8Q{(xITlARr(JBZxGdp+q{Rk(QF~9J;%^yPKhA?)ZM+ zkNe}!pE+lrb9Ou{_IlP{f8(*z6R{%M(1OaII$=G*yz5rz^Eh|%Z<_H&+?Z4at zHp_DMmG2b2{7SKEO0m#B(gV^3XAA4gDwff`&By*EgqWd!RQllfL|BJ(>Jcaa$viz%rJlPQ#h36HtgVwodm!10KY!|GX#TC~cu z7|b(o8Aj=ELmqM4DZPTQ<-5jVw{9qxn@D}Au7%a_k7peW3!XU7>9&F6qc6Z4b|$eF za%O zrmLGL^hb32#5+9_p;JJA198Hx9Y2_xp|a-ro_sHXZQ`}4Mb2@zD!pHEC9aXaA5Kfz zFsx1HWi$v3ZtFHuH2=s|m2>8yTR5$2YxC;u)TMjOPy&O;@1_7hn)kB`@W@eXRwbsl zX>1GN!6M-wr@g| z7IBcs(n?WWrwlJ)b~22Og&Uukn0UfQ^!xYk3a_h>xVp9?Fyvi+Bssl_u1g{Q*)59KR?I}|sR8IXo@8oiSv(e?@{^ z7Q7`Mzw9^{XlwzOG=$I8J}-=nc%ykd#H(<}3O>Ux(zhd!Tx-Y58*&`UzGK{dZ-`>I?piCAIeYz- zZ|KE(N}h_+Y*1^+Y0%}d2K5v8;d1uB>?>}vQE%+K(U1%r~f-eQ)&Aps2RF>kw{v%9&uMWv*CpRgq zuY2TW&WGj~PP$RDdJ$KX_f}kJw>szX!!5>rH@gF{IGCST(8nzFhlBaa8sifc3n#*- z^(;M+-PAUh?&zLgcqf-wQVQWu%R_;nIZ;sc zBbt?M;Qg}sk~fceG;eIuSzbl{@kzruxu?ARVX#R0{-fI7FKs;EF+a&LJRQ-MpKW$( z6oAFP&t}E690BX>SMT9Mr82_WO@rL_b&vUn<+6U)2 zD@(HHo~}6hrV%U))ru?i=H1XZLZ2)On1nwvKleIs;bsA7U?KjC6eNEtLGmc}Ni@e= zUNRG;gmw7HDCcgY62gUz{h8>?O*Ql*mxF~>H3a>~4_@8WR9+eUnJ9RT{^&COw>zHK zfX~=AJ(}C|^h3xvL^|V|7hVwW(56AJo#yypejJL>Cs%c8?m_w^Lr(kj)IEzoZcJedinPC^*TS?5kKeU2+A*zbVQsz#eg3 zDLV<&2uy#Og3Gx-#w&r7lFFz5GO1>{kEDbwJia>nZgP)GVAL4r{z6wc8zo5~40D1p z7QiaiE(ehz^0_8*pD0lQl-z7>>|r^hU$U=890KpG-!jm!5fp4y!jS&`Gj$#{<87l$ z5Bq6w0%`B<Rv`KX=9sNSK;5|L!y4{1@MYAFh{&xA+VbB;B6Dic7X3-rmOEQeRg< z0RaJj@7oy@Zm;GsA2Djw-%bOIh=@d|`xm)gnnqmrO|4TdF>IiDW@x$2duw`*gxM?K zA?}rSowWoqf^DKF4f|!MADVme${Au(-?tcF|2{hLDoZ7hmAQF#b#PnVPSeDE8y<`< zk<8gMdXEM&=EM9Fc81h0{C>YgPlz3l4*`Oa>|c zEQfrLFaSh%TEN^1&mN-jsDEdwMs5KI(oU1o0i0EOiJ>Z zV+K10&+FEKZ6oal>x5n=`u2j{)y*}XA(=4m@zJ=`21S9T@QTc;4mUBwx|Ww)yhnJ` zccduco6b zhHSpYf=#ifSD{&Jp4ipYIhv*W4DcK)s!$S{=K1Zed(L>&`pjTbrdbvwQrcM@>Rb;s z*EL+pCvlwchYwcvm~@oTHEm+3ZN0G+s?j=XOw!FpglY|xyuEF~*QD{nwDuWb6a zoa%VP1ll1mrq|Mkl|O0Iz)<4L^Y~<3b1%!r|n zw&>|zQOBIWmg%elU@&uA^q2J4E(#DeO5PnQ=eIx;D;mYGO19o@u{NeEN7`7?<{2XN!A2NE*`rO%3Z2rq?;OEOeWH%*Qo;+ z6hL!UV9b?yKd%jS(uqW7q3$03C^ar7x}4I5ErzM8{UXAQnRCe-AN8K7#&xod$}F@n3JP zpzOso3@QK@(|3u{X@r0sg< zhCD`%?iJJnLQM+vhY^vdzjpA%#jroPMg~}Aj<0NhoRNR)b+`9OzTDv0LZ7j#_=IdS ztc7T>zOUi6xnB5GAF8q55cAAfF|C6Vm*U^*ZWEf-T6qe`i2;SL24*GxzrEqC667Ql zLfMO66~E_~EIqV3ND5DCTn+?a?)YLwY&R9+z4f1>zQcArO4#-{uW^HE%qUmFfwczm zf0GMCVJF8p7SHAC%;Ezxj(M|wI29RPHk$vCnbjTn{cjO`e`$c}ctwnieJHnHq-M~; z4W|YzQqZBf>Kej>0QE*Jh8-;)H@IM+x4!oO*O^R)rq0O&h2d$0i3s*$vLoaL_r6so zyZZJ@L^+<8mYUqxH49rq!1g@y^2~!x#<^y`#F(j83nfj#71|vxI70c%3WA<)crTf~ zWNIfvxu-c9;c@71A}54~AM5}xHzU+fG9-LG)qhO7vD8mp8=1>L_&=a4Z%Qas9YA*e($5_n>9vvFVVd8TGloZYpP{7MCS&iJ1opm+B>|{2egg8} zX`4QwXKEmsqF%}$9qLo}g~fODl@!enQPgkJQ2?im;?5$djp_Bh=bB!!7$yxGM_kqTg!R@H6Fc_0!#cMsqW}+|#4n@E~auZie?* zT}376`(0hM&K8kGApX(r4z;fN6!|5qy#@mJ%Uc0U{H(P2Msr)1<&&#Ku@`q=@p$F=?wb9gZ38yIWZW=F$23{_JHKW@RaO?X9yiy0gUF#nM@Pqf zlEq@T=Xgb#==vPJA!NURSr%LeX!4Ty>J#+Y<0qN!tBYTn zZgHe%A!}3lHb+SgNj+fR?CfkzW4T9nPG>JtN!za0z~$S*YK9R$FsjSOj|nEgJf0tU zRP|!S(LA$}_9_0K;R@|x`mRLUnv3V&g9rim-Uwb-cVO#}JFeO-|Mok9VgJkc#g@F; zc#P8hQ>5jUDzbZcaEtj~zp$PHRzkuBZ#F-!oxk0@TV8q$sy4rSX^cHNy!m0CqO3;h z-Nn7J9}7ZSZWYwQ;r}7N$y^s$utK-lXF6xHn5)cDb4s~gMikF?z|@mqjbk5^CAyGy zuaQ-5hmieXT5EF<#VX9Z^;s9+TL<{}pb;VN`x+@V1D4or*}gAs%ZxQ`5HYOiZ;hMq zl=ZJlbM1N-m9Ef|nx3`wP|}(0GC3Xp>tu3WxCJce?D5GXpX}3>EG$5()Ge^rUFuK0 z6nyvMFEFdnrZ;oZ9He%iFC0Fr|TOL1Nx!aC{ zcA_mS3T}1w#E9J1i#|)`)ZpE!R5s7wc8mHCCsm#dQuY0(uv4#~;6;Wn(gwax#zHEu zPY{)&poM1huuH^)Iq*?_`KYmNL>?{J|heCO+a zy~H!LwDY=)AvS@v^@r2z>uwZz9X(EsB9gP!VXwCPhGwk(&;ZEa8-_IVRnMdJ@{QvZ z<_s;==}>I<7OQ_`*J)yE3SDqbni5e~zM~nUUEvK2Vyx-QBv0f{hW6+gAQF-;1(N?B z!VGd*zEP*#<#t>W#G#dw?hIh2NPC30=6~HrYIG=!gn0w;V^)ncsqRYV)Na`Q zsD7&|!TZmVDQ|9xj-TxnUrxbKuNxmBf>s#Y%8L4FVVCa8zleM;+CS`xX)u`%lO>4K zkK0NllGC-vBfXl&Pm8V@38N}Lv7RTli_2Ere8{i&0f-J-Brt!U&|$f|@;MQ2PM&$3 zS)2+*+ceF1mSVPdn0d;$cp_P_mSH;~`>M0&Z{j0nugf2-Ea%LPC6&ydh)hLEonh=o zuYPNIyiCa{gFO*{D!@igQfQdZtuO>4WR!XgUCnAw25(+wEkmrzZ$8Bb!{XzqS(U;& zQ1U1Ocpzvi3^-E9GU0Gm3x>uW9b{?{U~7`R-H2Bz48p1>b9(vYN4fBT(TlKXk@q`Z z<`$>RDE(A%k=x?Wvn?+BsTRWwg}3 z(4ZUi)*9?tc~-^WtUIXuur9J2?l>Iz{Yf*|n|nlyZsFmu*(OG#*HSw9AL2N zes~RFgUB>KvyZLHMSh*&Gzoq2qZzl2EaO=jo_zTE^)jPw3q}Ac-mn^S^?$Mb5+T|k zfHQyn_tgix;f0S7+>{q!eSk1e$Ayeo^KKi)XDOd77Ioyph{|TT(X332>e`b7P%hm+ zrQbLCtdl)vwWCN6uNseMk>JKkUeZeKPTq!qbo!1>^dwOeH68KJ;8| zHK^tYAI!#?OLUP(f7FRu z^d%6zXE;DRK_hld61`Q=B;sQbU#HbRSd280+X`K*36cpEYl&eqQ4{?c0;!#BdD28B z_0?NVJ@dZ0pIUufzKLir7)+DoUi4mWnyQxJB3S?8{CIlrEpZ|cy{~|H_UUE(aEiLA zE3fFMfcwi-msv;T$6Uno@HN23xV-2UQ57&5ACu+fn{s}#`^JcFdG-#x*w}c|delkH z1z&1v{>TA%7n%_pGx#~b#`m5HTJB2=lv4im%j%_6hjU(f7F;9Mc3b!i4oF;bguCC3 zl;K&IH0iiF$|gcTHN>lc=q>HEX89YQDgL$3*^}KhAKT&CuFu&nNuS<#J3k~&wfPng zuNI>ZpIdl;32cBu?Icb=<#s>!D}aZsiG_jR*+l}y^=o8$8SPQr8X5RchI%VSa{VHd z)vFAbtJc#rt`T;#DLf(RdNJYLUmL5W1dXUxlgeKew#-(~XZ{3Rj#wIcbiW_?A;!KkPx}c>ZYYmF(*S!*!d}noa1od2~Yu zOlE}9@}c1>pL2JK#%*>A*P@Ae|H~N$-`rnZWW(zrDWa7Vp_Uh|{d!=8m7mijrGa|O z&k4OkTI+{7y5&eg(8aIKMJgb&yImZ14&=p(I0=$>^|NqJX6s_S)BY=c_p9AGpFLH6 z_ZMmxDK=c=StFLjHo{-}(Hvfqo_+izsDba$?s%s*M2dXm_lUrJlbT~ZUTs1r;|?{~ zL#ifqVQlyPQPtsW#IJzm>KdfIcE8Y2%KS%c*;Z$M5Okvh6zB_4-B{d#W)!%N{j;ss$~?go%1d`3%ZN9NS}?QQnt|Q-#2baDx~| zGw@0&y_7CN;d`K1b8NF?@K*<5bdeT0m!%5BTH$w~#+A)p!Ey97oD)V1j&zym*RQS` zdSo=P_HVvWL2Tdf+H`M1ntixd`9?em>dY}v1;<`U%TdA`)A9um!2xuChMDrRe9zzPd#R)8XO^?oRN z`1dD8Bi=#vP35r>!qBC#L^DHEo4z$c4aJyusbnxVQL1 zm`tEsX)NBg5IDw*X4w(ypZ{1dO{szu$>elA6UhZFgO?YYFJjns+ayM8Pt4gZMeiR6 zexMe@1emPjzgtbI(1ra#rz&RnP$sGqliaOX;o243PZadF{+vPN-b z)k5!M^a{t{se*>Xfp;`$|0uXDsXPc>Vk-4L$J3`zqhe$IN3EUUkc*wsj;^lqmtIvg zRH)8;2`Hk_NS-T@-c8vtA+M_b@pAqzfWrS~@42JdB&*@x@!Lw@GK|6j3)Y`=HYUxYgSyl-Hu7qG-=~K@@+|0mz6O!X+8@y7C6Oa8^^h zHTjvWr3SVB4qwZ50MXvW(XypKHie| za>m#)&~#J;z!*j;in8RM5tycb=N7iF->u)3J|JN$ADs(t*T_Kzykuo#`}_?{wkE0U zo&JI5B8i-Z1?UU5n6V5nR*aPbUT6ZImSE&=G@6z_ax(dFo+ARvV-g#WlSKLtgwGp9 z{b-!J6&U_X3zBwu&oBp@ijJ?CC-@ul9tt5J$FWy#MYW?@S7pAAH6LCBFt|F@t{%AfW&Yy!fmCs+G{yIL>7%j@ zdKYvSYO5~mJx11RT?ty*6vqbj>JUWZWv!;n6SnMKOzP|%Ez+#NH5l>>48)ig{2nSfW#mk$v#6vtP?AHr^H#&GC|F-T&+ zkuj!W{waPOjP>&fi(CsO7z>_Tst_;qmJy2%vnZ|Uw1D(%u{+xS3J(kP57+nYetw5) z&{2!byvl)kKyy%5X{{tZ0ko4y`Y)*w>9EHI-Je!aA;{d^>=jETe0^^>Zvr&Uo|3e7 z`u@Ll3SkdeqLw>4ag_O|IeMW|QlzTkApHHqsd9WHBi*5?$Xu()q}7OCnol1qNY4g! zYtb#>IPYOXx1g+B9K-~HNMg&`RpOVNuOw%0TIfh+e6k_L#uycCc2y;NOG;H^q=fMI z*6M0Tn=o6D=Vz6g;{3ks~i*u2Vm zM@~*Uw31+L#?qE}dyn~f@0`5;v4H*O&<*8#0(|^~j%8CppmeX7&g))8;spb9<43B91_(D-uw;?2JnXznMT%0eWHnBL25pd7qmhg_s zzHGn@a~1?$z70e>AyV7h8DSvT-3}aWSAK8&WKLOtZg^rf^+0L8_hqJ}RDO8ei4<{t zm*PFP4>+R>*qlzsg|(V8Wvt0LeR32sa~*Z0TZ`;7n`(GUZz@u?(-%adY04?@sIj(> zmIl*Rs4UKKvz8S@D`ue5az_TAU?lKp`eZzYRz)1M_hC>q3--@hKDCKfEzW5A4Op8p zEt#0uRTGB?DQ3OPN`OA_5Wjf%U3qlL^VguP&E9JeND>9TBR|=qhmh2WD3WR7{sSQ& zZ6+@ydP^E)xCHvr;dQVE>r?Y71c51?^2 zdC#AEVZB%cI+BRKigQPRZ1)&j1YA=Zj}$eQTv@eos>yZ!WFQ)`WWZpN8?v}ohCHX= zaDbXl$VLQ{NSoZ?&(piBIxT~pI9t4zHH2+VKObGA%RbZBHQMz9mX7m6W%0QlCUO8E ztJk+=DhBz11<5pq*dBIdapnY}@EIFvT!y_n?wZEvD!#446jZnqj|U#v1t9ago!1L} z-3jzWO2k!24$!K|F!NUc6ZFcDd4AD=AP&(}n0wGfY6eJ23VE_(S_rSHd5DI~(WtZk zk(QC$L$QcECuA@sPh>U~>pN|2IRgV4)p-7@YCiWBw2$bRzWihPXa;1)f9Ft`O%)|| zXW7a?W=Gy!P&y+aB=XXDA5|*%`NuR)a)(XdOle~W+MvKsFPA2GC zD=`&n5Wq+hb0f@`6%yP_hCJUk4hT%6R)1m1>!*jgCwcNShV!>OeP_#10tx@O478rK zNC7TQ<{6g6!d{*$7UqK1Ilx&*Mk%-mIhKQ-E}npQGM=tom{9M?sSi5-GQcYC%*niD z(y@`Muq?TE+Ah4@PoRnTu$Pa=dF`z{hRIQLfgswHyqmFa)Ei;*QN%JCBu!#-o5f9d zTAH^q+wEL&yZPSk2X=j1$o}tY{u0AGn+7vTGHt0b;52!x!k2J(0o;8(_Qm?^g>c)i zZ#6CD*Voh2GBG*Y5lrvIL}jbDzuMrgXmSJ!deJS2a`*_zOtoYtI$N497Pw7q3XBVn zKH||hk(3QuZ}>g?`I^!yd(9(* zpWfS_Vr-aj2yfa2-ydDzJ1AMN5qB2GmU%-gR`uPmqx276`I9vd$Xy{}hF z-^F+v*IJWz+0j~>lY1JFr*?u&AKp3~mMh3@v~ zAIJ~!wg(+GWhOAVdD9_R-pzwi6n^R7QpU9ux;dGRtBsL?R88*H3oN`%1+~KN zWxcU8foEudE?yY<00mp@x25!_k}L^aR#$>g--(efHia8<^Zx&d##=hyuC{VlFU>@1R3 zk(??kN-8S;Wbr5S0Ucd?G3aI)rNYi#{^@5Y3Y)7zfqqNwnlE5$?@^K3q@Q@C{y~66 zT!6QNSqMDsxpCM{lPlsJvB<9;sNim|`&Li81N3Yvu?bSCcc5${C-d6!dgz6XEP+p z*#vwtF7!pZeWtQ*xBl`>?sC>%3a`{@l$F=`0#`9BsI-&>9RmZGfM9j>Eo^(0lDH}# zuhdw-P)fT{YWIy?I?IA>n%j@6VM%j4hz($qSzTSNd#Z1PjyiPOe*O#1T10QPhzNUS z9a4Cc;KYf!{D3s8Sc+LTA|IqVf2#JtoEnjQeT)}1%^Ned?BI(v-O+3I2qlbl2)EBn zKi*jt==5x;Kp9kEF3`=Ge!`JJr83Km@n>Un=b1)Ss@o4Pf-aRf@<0!^j=pto5TNAp z*9sM**{S(FG#`-wk%1r^?qPJn&FHP;NoaEV6+z4RuZ#mhaZ%qC>y@POfQ^lf89Pli zwGH|-T({SUb6~>zVUCdO=U`x{#5E4}m!!-Dkz*jbWj_mUf@0HMs3$CkxV#^j;_UPa z_*K)}>CL=kJyFg%?CH)9!bt-V;p?OF8D&8v5CNTcYA(B?u3bj0bMc1w$RRPLl*nKe zNSzGs*3%!irD>cs9BCgSQ>k_#e7@96*0OaC?zR>orJ+GZ5?d&o(Hs?9s@Y{fgX`g= z{FG>~LhxE=pSy!V*dPAY68!vUC|+B%?@CP6)zm^4rK{JG)jt7dkWY(SiZ{Ng_g6}D zj`rXZzaqP91IgLYFZf+xB;?V6{|(N8EqeW%4blGWx!`fxZ+)=J;Bp;|oEvXJKC(Aw zOgj8M_-6z)4AlQe^^2oW)O#tK;iyG%w7So3n70829*AK0_Mgr7+vug8Pu9`^BX}G) zk8{RFT}Is5y}NYr*x6ooex401QXM2=L_5Sx6@w~(d0gCZ^s@P8iyj)csmi)QcHT)o zUnfmtU%OF5G4alCRC$5wMp$dwv;~Rg#vf9GFN0<3@xt>kj>pGfP{~=bWm!qx;-|Q@ z4Y8{YJGswb@{sl{XKrEO4X_5B={f0r+gsMfLgTKRMz%3posO+HxZUT(O?O33Fa*K) z`YIlTkG}|^hlPc~@9xY5MLvu_>`yiKwev8%D!Mv|gU@FY;>E_t*YLpctJ?&|kmx?& zoIbOpV~sjq0v?Y)Qz3t=VNQ^UE4@)}in=^U;I{bMu34~xVt@4|26O>_hs& z6J4}XaDW=!{#AigXt1aE^DLH}4ZHYGlhbv4uH&v*n*IF@iXV(JxILM~Cxhb4Gl@RB z@f!ZP$}@HGm*Z0n8^FsgY5J#w5zrln{1i#f+zw7EpAl2mHZpoDhW$??A8UKq6G{knOY?A()U>|1g{ zha}kMB2uQXm;_Mb{QNL2UL;?5SzSFnxogaV!0$VMc#?BP37j5>pM(TKF)?U!g+bsF zu6M>T_BV59E^b~v>c3!i5wKivqcj${;4Fca54mml7uosBo74XQB1{`c)*Wl`95T|@ zd=@Vnu?92H#1Z+>};zZDXZq=P|M!~s(++?rIe(vFJQ z5Keux{Fpim_z7#6ZLT*Ey`JU#j93-16tkM#hsPGAm6&fiG|Xy#`hUdStAYE zWe~aAwzL#S^5GiCe4kTwAycV~kkhg03w<6kF2sXNk!W;klJJ7<0Og zL`TUu=`!YqJKNl+`qlyjE5Vg8R89l?*`gTe$a4Emd+efnbHe`BUf9HLv*mcSxt+g^ zG$8%^{@$~pT8VtG?)#+j{%z6qV~g%@)WgT*7K%#(IkAmJeW8u8FlL7wxV#|-s2uOB z1xUk~8`+diA}o)1@ardn@*Rn#`yyU@yodh2x(`4jA+)HMr2Goe{zAAiweGi*p+vl_qIP4lK5e!2e%0l$K&0%^J_(|8FH^p*Ro z`s`6_Wi>UY+XUTQ4IybrBgs<~F#M<_6!x@6DZe&wTE^@6LSg3?v=>M;dyv#b%(uBKjC|h!qi4!I;;W=Pp;ls8hq$Y4g5p zh74EF#+Y4?>=l<@Lf$W&RPw|^VwHJ3B9!M0&(j?&a^CWf_#>KIlG6`I-abjX@TSdf zaXmhl@ccG<;~QYzqBx43KS?L^Msd-bMRm7ltm&oe<3pC=5ui4N_Ug73jQ z3a>{bc9fU0-7txMVq9Ne-*ppzmo2G+f}IsbM@#!oPVT~-hpOp;dipCY_RNj2sOXgK zYZ?!U_&Px?0ni~2o5d|DO>WjQ2xsA^RSiJjE5-agr;x`pjJXrrjk>mVU3D6X)jKy5 zoiL@VnW_8AGVx(SiwaLG<3OFv)304c|80D0AG{rm$5X*%G0Em;+M6&uL9~&-K29k= z-^vp*z0-Qg^!j>WVj@1u7aGzr_wt(q3d(Ga*KP1`R7t^F z7$#ImbNxA?aDc6(SXfhJY@eg9`>#|BPqr0xaIb#9hVi{$gkUD zv}e*w13*+i3uIo}c8AloUkTURm7iug3keX8#C3FO$q&Iv_n+f7SS9y1+^QM1?dLDc zl+zBvc6cTg&@??bX>wo`C_LM1rBiE_9!yK>!_9#Rf z_+wQ-3hv4a#9gF#Pz-b6#SwrjBcaa%De2eu1{MWugVaS|XDH*QbmYRpU7r_4(#`aHW-9{lUS zFI{qf%@Ai@c*R(C5{^<&??1Zo3Naa-Ld7q%FM23}dTmYy;^Dg02ZD)&@VWnl5|>So1e4 zNYm>|YpGY){ZDk-gM*)8*vbylIA`_8`2OOJg31KtWTtMQmUo?s}-8zrQm_* z`#R_8qoFQ%C8r8KhWQHonY?ObF0GG%wXBw#U_p@w>}vMzVA=KN52xyzUZ>qj9lNy%#^q~8 zlkuTsS@|$X3n`Q%6!GQjy;kM-o7KFZsP@t-@oz!^NmlgUl+m4C z2&=md$c}#rK?`qtUs~GhWJ14S-C6XqoQdZGWy+McfZA`NgDd)TyaZG0DCerL7TNdu z$4BqGA@kA~_!!|w8Bs0(=$NK;)OJRRq#A8h`)3hE=hKz_jPpnME_*qs-fkxTnOz-j+3c6VUrGfM zqH8gD-Ua!VgIRbkJX>1tBZrxaGo%!YHOy0flQ|_p{2kX+y)D$C+7

QGgkTn^NC% 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 EKL;e9UjP6A From 609b05424cc6ee25f82bfd983527c928d371e59a Mon Sep 17 00:00:00 2001 From: Miauw Date: Mon, 11 Nov 2013 16:43:10 +0100 Subject: [PATCH 002/315] Condiment packs are mostly working. Still no sprites. --- code/modules/reagents/Chemistry-Machinery.dm | 8 +- .../reagent_containers/food/condiment.dm | 94 +++++++++---------- 2 files changed, 46 insertions(+), 56 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index fc405354924..5431b64029d 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -325,7 +325,7 @@ beaker = null reagents.clear_reagents() icon_state = "mixer0" - else if (href_list["createpill"]) + else if (href_list["createpill"]) //Also used for condiment packs. if(!condi) var/name = reject_bad_text(input(usr,"Name:","Name your pill!",reagents.get_master_reagent_name())) var/obj/item/weapon/reagent_containers/pill/P @@ -344,10 +344,10 @@ var/name = reject_bad_text(input(usr,"Name:","Name your bag!",reagents.get_master_reagent_name())) var/obj/item/weapon/reagent_containers/food/condiment/pack/P = new/obj/item/weapon/reagent_containers/food/condiment/pack(src.loc) - P = new/obj/item/weapon/reagent_containers/pill(src.loc) - if(!name) name = reagents.get_master_reagent_name() - P.name = "[name] bag" + P.name = "[name] pack" + P.originaldesc = "A small condiment pack. The label says it contains [name]." + P.desc = P.originaldesc reagents.trans_to(P,10) else if (href_list["createbottle"]) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 178c95e875f..1f03e969a8f 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -13,12 +13,8 @@ flags = FPRINT | TABLEPASS | OPENCONTAINER possible_transfer_amounts = list(1,5,10) volume = 50 - //Possible_icon_states has the reagents as key and a list of, in order, the icon_state, the name and the desc as values. - var/list/possible_icon_states = list("ketchup" = list("ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "Universal Enzyme", "Used in cooking various dishes"), "soysauce" = list("soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("saltshaker", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "Sugar", "Tasty spacey sugar!")) - -/obj/item/weapon/reagent_containers/food/condiment/New() - ..() - + //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. + var/list/possible_states = list("ketchup" = list("ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "Universal Enzyme", "Used in cooking various dishes"), "soysauce" = list("soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("saltshaker", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "Sugar", "Tasty spacey sugar!")) /obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/weapon/W as obj, mob/user as mob) return @@ -98,49 +94,20 @@ if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") return if(reagents.reagent_list.len > 0) - if(reagents.get_master_reagent_id() in possible_icon_states) - if("ketchup") - name = "Ketchup" - desc = "You feel more American already." - icon_state = "ketchup" - if("capsaicin") - name = "Hotsauce" - desc = "You can almost TASTE the stomach ulcers now!" - icon_state = "hotsauce" - if("enzyme") - name = "Universal Enzyme" - desc = "Used in cooking various dishes." - icon_state = "enzyme" - if("soysauce") - name = "Soy Sauce" - desc = "A salty soy-based flavoring." - icon_state = "soysauce" - if("frostoil") - name = "Coldsauce" - desc = "Leaves the tongue numb in its passage." - icon_state = "coldsauce" - if("sodiumchloride") - name = "Salt Shaker" - desc = "Salt. From space oceans, presumably." - icon_state = "saltshaker" - if("blackpepper") - name = "Pepper Mill" - desc = "Often used to flavor food or make people sneeze." - icon_state = "peppermillsmall" - if("cornoil") - name = "Corn Oil" - desc = "A delicious oil used in cooking. Made from corn." - icon_state = "oliveoil" - if("sugar") - name = "Sugar" - desc = "Tastey space sugar!" + var/main_reagent = reagents.get_master_reagent_id() + if(main_reagent in possible_states) + var/list/temp_list = possible_states[main_reagent] + icon_state = temp_list[1] + name = temp_list[2] + desc = temp_list[3] + + else + name = "Misc Condiment Bottle" + if (reagents.reagent_list.len==1) + desc = "Looks like it is [main_reagent], but you are not sure." else - name = "Misc Condiment Bottle" - if (reagents.reagent_list.len==1) - desc = "Looks like it is [reagents.get_master_reagent_name()], but you are not sure." - else - desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them." - icon_state = "mixedcondiments" + desc = "A mixture of various condiments. [main_reagent] is one of them." + icon_state = "mixedcondiments" else icon_state = "emptycondiment" name = "Condiment Bottle" @@ -189,12 +156,18 @@ //Food packs. To easily apply deadly toxi... delicious sauces to your food! /obj/item/weapon/reagent_containers/food/condiment/pack name = "condiment pack" - desc = "A small plastic bag to put on your food" + desc = "A small plastic pack with condiments to put on your food" icon_state = "blankbag" volume = 10 amount_per_transfer_from_this = 10 possible_transfer_amounts = 10 flags = FPRINT | TABLEPASS + var/originaldesc + +/obj/item/weapon/reagent_containers/food/condiment/pack/New() + ..() + pixel_x = rand(-7, 7) + pixel_y = rand(-7, 7) /obj/item/weapon/reagent_containers/food/condiment/pack/attack(mob/M as mob, mob/user as mob, def_zone) //Can't feed these to people directly. return @@ -209,7 +182,24 @@ Del() return if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "You tear open [src], but [target] is stacked so high that it just drips off!" + user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. + Del() return - user << "You tear open the [src] above [target] and the condiments drip onto it." - src.reagents.trans_to(target, amount_per_transfer_from_this) \ No newline at end of file + else + user << "You tear open the [src] above [target] and the condiments drip onto it." + src.reagents.trans_to(target, amount_per_transfer_from_this) + Del() + +/obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() + if(reagents.reagent_list.len > 0) + var/main_reagent = reagents.get_master_reagent_id() + if(main_reagent in possible_states) + var/list/temp_list = possible_states[main_reagent] + icon_state = temp_list[1] + desc = temp_list[3] + else + icon_state = pick("mixedbag") + desc = originaldesc + else + icon_state = "blankbag" + desc = "A small condiment bag. It looks empty." From 453da5356079bb900b51d353bbc9a03393e68732 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sat, 16 Nov 2013 23:10:55 +0400 Subject: [PATCH 003/315] Ling changes and some click additiong to items --- code/_onclick/click.dm | 5 +- .../gamemodes/changeling/changeling_powers.dm | 134 ++++++++++-------- code/game/objects/items.dm | 1 + 3 files changed, 81 insertions(+), 59 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 6c160b710a5..da915622e3f 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -59,8 +59,6 @@ if(stat || paralysis || stunned || weakened) return - face_atom(A) // change direction to face what you clicked on - if(next_move > world.time) // in the year 2000... return @@ -80,6 +78,9 @@ var/obj/item/W = get_active_hand() + if(W == null || !W.no_redirection) + face_atom(A) + if(W == A) next_move = world.time + 6 if(W.flags&USEDELAY) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 57b5a00202d..69f2d9a9968 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -530,59 +530,26 @@ var/list/datum/dna/hivemind_bank = list() //STINGS// //They get a pretty header because there's just so fucking many of them ;_; ////////// -/mob/proc/sting_can_reach(mob/M as mob, sting_range = 1) - if(M.loc == src.loc) return 1 //target and source are in the same thing - if(!isturf(src.loc) || !isturf(M.loc)) return 0 //One is inside, the other is outside something. - if(AStar(src.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, sting_range)) //If a path exists, good! - return 1 - return 0 - -//Handles the general sting code to reduce on copypasta (seeming as somebody decided to make SO MANY dumb abilities) -/mob/proc/changeling_sting(var/required_chems=0, var/verb_path) - var/datum/changeling/changeling = changeling_power(required_chems) - if(!changeling) return - - var/list/victims = list() - for(var/mob/living/carbon/C in oview(changeling.sting_range)) - victims += C - var/mob/living/carbon/T = input(src, "Who will we sting?") as null|anything in victims - - if(!T) return - if(!(T in view(changeling.sting_range))) return - if(!sting_can_reach(T, changeling.sting_range)) return - if(!changeling_power(required_chems)) return - - changeling.chem_charges -= required_chems - verbs -= verb_path - spawn(5) verbs += verb_path - - src << "We stealthily sting [T]." - if(!T.mind || !T.mind.changeling) return T //T will be affected by the sting - T << "You feel a tiny prick." - return - /mob/living/carbon/proc/changeling_transformation_sting() set category = "Changeling" set name = "Transformation Sting (40)" set desc= "Transform the target to one of our stored DNAs" - var/datum/changeling/changeling = changeling_power(40) - if(!changeling) return 0 - var/list/names = list() - for(var/datum/dna/DNA in changeling.absorbed_dna) + for(var/datum/dna/DNA in mind.changeling.absorbed_dna) names += DNA.real_name var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names if(!S) return - var/datum/dna/chosen_dna = changeling.GetDNA(S) + var/datum/dna/chosen_dna = mind.changeling.GetDNA(S) if(!chosen_dna) return - var/mob/living/carbon/T = changeling_sting(40,/mob/living/carbon/proc/changeling_transformation_sting) - if(!T) return 0 + give_proboscis(/mob/living/carbon/proc/sting_effect_trasnform, 1, 40, chosen_dna) + +/mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T, datum/dna/chosen_dna) if((HUSK in T.mutations) || !check_dna_integrity(T)) src << "Our sting appears ineffective against its DNA." return 0 @@ -599,19 +566,14 @@ var/list/datum/dna/hivemind_bank = list() set name = "Extract DNA Sting (25)" set desc="Stealthily sting a target to extract their DNA." - var/datum/changeling/changeling = null - if(src.mind && src.mind.changeling) - changeling = src.mind.changeling - if(!changeling) - return 0 + give_proboscis(/mob/living/carbon/proc/sting_effect_extract, 1, 25) - var/mob/living/carbon/T = changeling_sting(25, /mob/living/carbon/proc/changeling_extract_dna_sting) - if(!T) return 0 +/mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) - if(changeling.can_absorb_dna(T, usr)) - changeling.absorb_dna(T, usr) + if(src.mind.changeling.can_absorb_dna(T, usr)) + src.mind.changeling.absorb_dna(T, usr) else//If the sting fails, give the guy most of his chems back. - changeling.chem_charges += 20 + src.mind.changeling.chem_charges += 20 feedback_add_details("changeling_powers","ED") return 1 @@ -622,8 +584,9 @@ var/list/datum/dna/hivemind_bank = list() set name = "Mute sting (20)" set desc= "Temporarily mutes the target." - var/mob/living/carbon/T = changeling_sting(20,/mob/living/carbon/proc/changeling_mute_sting) - if(!T) return 0 + give_proboscis(/mob/living/carbon/proc/sting_effect_mute, 1, 20) + +/mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) T.silent += 30 feedback_add_details("changeling_powers","MS") return 1 @@ -634,8 +597,9 @@ var/list/datum/dna/hivemind_bank = list() set name = "Blind Sting (25)" set desc= "Temporarily blinds the target." - var/mob/living/carbon/T = changeling_sting(25,/mob/living/carbon/proc/changeling_blind_sting) - if(!T) return 0 + give_proboscis(/mob/living/carbon/proc/sting_effect_blind, 1, 25) + +/mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) T << "Your eyes burn horrifically!" T.disabilities |= NEARSIGHTED T.eye_blind = 20 @@ -649,8 +613,9 @@ var/list/datum/dna/hivemind_bank = list() set name = "Hallucination Sting (5)" set desc = "Causes terror in the target." - var/mob/living/carbon/T = changeling_sting(5,/mob/living/carbon/proc/changeling_lsd_sting) - if(!T) return 0 + give_proboscis(/mob/living/carbon/proc/sting_effect_lsd, 1, 5) + +/mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) spawn(rand(300,600)) if(T) T.hallucination += 400 feedback_add_details("changeling_powers","HS") @@ -662,12 +627,67 @@ var/list/datum/dna/hivemind_bank = list() set name = "Cryogenic Sting (15)" set desc = "Cools the target, slowing them." - var/mob/living/carbon/T = changeling_sting(15,/mob/living/carbon/proc/changeling_cryo_sting) - if(!T) return 0 + give_proboscis(/mob/living/carbon/proc/sting_effect_cryo, 1, 15) +/mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) if(T.reagents) T.reagents.add_reagent("frostoil", 30) T.reagents.add_reagent("ice", 30) feedback_add_details("changeling_powers","CS") - return 1 \ No newline at end of file + return 1 + +/mob/living/carbon/proc/give_proboscis(sting, range, cost, dna=null) + var/obj/item/proboscis/P = new(src) + P.sting_type = sting + P.sting_range = range + P.sting_cost = cost + P.owner = src + P.dna = dna + src.put_in_active_hand(P) + +/obj/item/proboscis + name = "proboscis" + desc = "Thing chanelings use to sting people." + icon = 'icons/obj/magic.dmi' + icon_state = "2" + flags = NOBLUDGEON + w_class = 10.0 + layer = 20 + abstract = 1 + item_state = "nothing" + no_redirection = 1 + var/sting_type + var/sting_range + var/sting_cost + var/dna = null + var/mob/living/carbon/owner + +/obj/item/proboscis/dropped() + del(src) + +/obj/item/proboscis/equipped(mob/user, slot) + if(!((slot == slot_l_hand) || (slot== slot_r_hand))) + del(src) + +/obj/item/proboscis/attack(target) + return + +/obj/item/proboscis/afterattack(target) + if(!istype(target, /mob/living/carbon/) || target == owner) + return + + var/mob/living/carbon/C = target + + if(owner.mind.changeling.chem_charges < sting_cost) + owner << "Not enough chemicals." + return + + var/list/A = AStar(owner.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance) + if(A.len <= sting_range + 2 || !isturf(owner.loc)) + owner.mind.changeling.chem_charges -= sting_cost + owner << "We stealthily sting [C]." + if(!C.mind || !C.mind.changeling) + call(owner, sting_type)(C, dna) + else + C << "You feel a tiny prick." \ No newline at end of file diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index abdde87489c..a2047529c42 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -38,6 +38,7 @@ var/list/allowed = null //suit storage stuff. var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. var/reflect_chance = 0 //This var dictates what % of a time an object will reflect an energy based weapon's shot + var/no_redirection = 0 //0 means you will change direction, it is the default setting for all items, 1 means you dont change direction when click something with this, /obj/item/device icon = 'icons/obj/device.dmi' From 6d0bbc8b24afec4e3136e86ea37f10431b963f0c Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 17 Nov 2013 02:09:43 +0400 Subject: [PATCH 004/315] Further improvement of ling code Yadda yadda --- code/_onclick/click.dm | 2 +- code/_onclick/other_mobs.dm | 14 +++++++++++++- .../game/gamemodes/changeling/changeling_powers.dm | 1 - code/game/objects/items.dm | 1 - code/modules/mob/mob.dm | 5 +++++ 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index da915622e3f..5e99cd96b34 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -78,7 +78,7 @@ var/obj/item/W = get_active_hand() - if(W == null || !W.no_redirection) + if(W == null || !W.abstract) face_atom(A) if(W == A) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 1d79994ef81..82122caba7a 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -17,8 +17,17 @@ /atom/proc/attack_hand(mob/user as mob) return -/mob/living/carbon/human/RestrainedClickOn(var/atom/A) +/* +/mob/living/carbon/human/RestrainedClickOn(var/atom/A) ---carbons will handle this return +*/ + +/mob/living/carbon/RestrainedClickOn(var/atom/A) + var/obj/item/I = get_active_hand() + if(I.abstract) + I.afterattack(A) + return 1 + return 0 /mob/living/carbon/human/RangedAttack(var/atom/A) if(!gloves && !mutations.len) return @@ -51,6 +60,7 @@ /mob/living/RestrainedClickOn(var/atom/A) return + /* Monkeys */ @@ -67,6 +77,8 @@ things considerably */ /mob/living/carbon/monkey/RestrainedClickOn(var/atom/A) + if(..()) + return if(a_intent != "harm" || !ismob(A)) return if(istype(wear_mask, /obj/item/clothing/mask/muzzle)) return diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 69f2d9a9968..fd632f5ad60 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -656,7 +656,6 @@ var/list/datum/dna/hivemind_bank = list() layer = 20 abstract = 1 item_state = "nothing" - no_redirection = 1 var/sting_type var/sting_range var/sting_cost diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a2047529c42..abdde87489c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -38,7 +38,6 @@ var/list/allowed = null //suit storage stuff. var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. var/reflect_chance = 0 //This var dictates what % of a time an object will reflect an energy based weapon's shot - var/no_redirection = 0 //0 means you will change direction, it is the default setting for all items, 1 means you dont change direction when click something with this, /obj/item/device icon = 'icons/obj/device.dmi' diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f4cd25c9737..e37dc043618 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -635,6 +635,11 @@ note dizziness decrements automatically in the mob's Life() proc. pixel_x = old_x pixel_y = old_y +/mob/proc/RestrainedClick(target) + var/obj/item/A = get_active_hand() + if(A.abstract) + A.afterattack(target) + /mob/Stat() ..() From 26c24d42bd768e3c62420b16cae5db0b681f73e1 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 17 Nov 2013 02:21:17 +0400 Subject: [PATCH 005/315] Accidently added this thing No need for it --- code/modules/mob/mob.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e37dc043618..f4cd25c9737 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -635,11 +635,6 @@ note dizziness decrements automatically in the mob's Life() proc. pixel_x = old_x pixel_y = old_y -/mob/proc/RestrainedClick(target) - var/obj/item/A = get_active_hand() - if(A.abstract) - A.afterattack(target) - /mob/Stat() ..() From b7b45881b2dd071de44465a8bd2400b37df60ccf Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 18 Nov 2013 03:53:50 +0400 Subject: [PATCH 006/315] Made abstract a flag and other stuff Everything that had abstract var now has ABSTRACT flag Everything that checked abstract var now checks ABSTRACT flag Fixed some runtimes Fixed click code and face direction changing while cuffed Added del to all attack_* of the proboscis in case shit goes real AStar is still weird so added a simple sanity check --- code/__DEFINES/flags.dm | 1 + code/_onclick/click.dm | 10 +++---- code/_onclick/other_mobs.dm | 2 +- .../gamemodes/changeling/changeling_powers.dm | 26 ++++++++++++------- code/game/objects/items.dm | 1 - code/game/objects/items/weapons/twohanded.dm | 2 +- .../mob/living/carbon/human/examine.dm | 4 +-- .../mob/living/carbon/human/human_helpers.dm | 4 +-- code/modules/mob/mob_grab.dm | 3 +-- code/modules/mob/mob_helpers.dm | 2 +- 10 files changed, 30 insertions(+), 25 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 39b63cea985..c1041d519d2 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -13,6 +13,7 @@ #define USEDELAY 16 // For adding extra delay to heavy items, not currently used #define NOSHIELD 32 // weapon not affected by shield #define CONDUCT 64 // conducts electricity (metal etc.) +#define ABSTRACT 1024 // for all things that are technically items but used for various different stuff #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 5e99cd96b34..fe1bc136e11 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -68,6 +68,11 @@ var/obj/mecha/M = loc return M.click_action(A,src) + var/obj/item/W = get_active_hand() + + if(W == null || !(W.flags & ABSTRACT)) + face_atom(A) + if(restrained()) RestrainedClickOn(A) return @@ -76,11 +81,6 @@ throw_item(A) return - var/obj/item/W = get_active_hand() - - if(W == null || !W.abstract) - face_atom(A) - if(W == A) next_move = world.time + 6 if(W.flags&USEDELAY) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 82122caba7a..83b3fcadc76 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -24,7 +24,7 @@ /mob/living/carbon/RestrainedClickOn(var/atom/A) var/obj/item/I = get_active_hand() - if(I.abstract) + if(I != null && I.flags&ABSTRACT) I.afterattack(A) return 1 return 0 diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index fd632f5ad60..fdece74a0a1 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -651,10 +651,9 @@ var/list/datum/dna/hivemind_bank = list() desc = "Thing chanelings use to sting people." icon = 'icons/obj/magic.dmi' icon_state = "2" - flags = NOBLUDGEON + flags = NOBLUDGEON | ABSTRACT w_class = 10.0 layer = 20 - abstract = 1 item_state = "nothing" var/sting_type var/sting_range @@ -662,6 +661,12 @@ var/list/datum/dna/hivemind_bank = list() var/dna = null var/mob/living/carbon/owner +/obj/item/proboscis/attack_hand(mob/user) + del(src) + +/obj/item/proboscis/attack_paw(mob/user) + del(src) + /obj/item/proboscis/dropped() del(src) @@ -682,11 +687,12 @@ var/list/datum/dna/hivemind_bank = list() owner << "Not enough chemicals." return - var/list/A = AStar(owner.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance) - if(A.len <= sting_range + 2 || !isturf(owner.loc)) - owner.mind.changeling.chem_charges -= sting_cost - owner << "We stealthily sting [C]." - if(!C.mind || !C.mind.changeling) - call(owner, sting_type)(C, dna) - else - C << "You feel a tiny prick." \ No newline at end of file + if(isturf(owner.loc)) //no stinging from inside of mechs, lockers and so on + if(get_dist(owner.loc, C.loc) <= sting_range + 1) // sanity check because AStar do some crazy shit and i have no idea how to fix it + if(AStar(owner.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 0)) //holy shit this thing is insane, please someone fix it! + owner.mind.changeling.chem_charges -= sting_cost + owner << "We stealthily sting [C]." + if(!C.mind || !C.mind.changeling) + call(owner, sting_type)(C, dna) + else + C << "You feel a tiny prick." \ No newline at end of file diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index abdde87489c..959cfd0f131 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1,7 +1,6 @@ /obj/item name = "item" icon = 'icons/obj/items.dmi' - var/abstract = 0 var/item_state = null var/r_speed = 1.0 var/health = null diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 25108058581..e6bdbbb1f69 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -99,7 +99,7 @@ name = "offhand" icon_state = "offhand" w_class = 5.0 - abstract = 1 + flags = ABSTRACT /obj/item/weapon/twohanded/offhand/unwield() del(src) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index bb5e59c44bb..4bc5c7549f9 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -104,14 +104,14 @@ msg += "[t_He] [t_has] \icon[back] \a [back] on [t_his] back.\n" //left hand - if(l_hand && !l_hand.abstract) + if(l_hand && !l_hand.flags&ABSTRACT) if(l_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] blood-stained [l_hand.name] in [t_his] left hand!\n" else msg += "[t_He] [t_is] holding \icon[l_hand] \a [l_hand] in [t_his] left hand.\n" //right hand - if(r_hand && !r_hand.abstract) + if(r_hand && !r_hand.flags&ABSTRACT) if(r_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] blood-stained [r_hand.name] in [t_his] right hand!\n" else diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 725053058ea..8cc513b9612 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -104,10 +104,10 @@ return tinted /mob/living/carbon/human/abiotic(var/full_body = 0) - if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) + if(full_body && ((src.l_hand && !( src.l_hand.flags&ABSTRACT )) || (src.r_hand && !( src.r_hand.flags&ABSTRACT )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) return 1 - if( (src.l_hand && !src.l_hand.abstract) || (src.r_hand && !src.r_hand.abstract) ) + if( (src.l_hand && !src.l_hand.flags&ABSTRACT) || (src.r_hand && !src.r_hand.flags&ABSTRACT) ) return 1 return 0 diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index d95fa724b0f..5ce7ec26399 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -3,7 +3,7 @@ /obj/item/weapon/grab name = "grab" - flags = NOBLUDGEON + flags = NOBLUDGEON | ABSTRACT var/obj/screen/grab/hud = null var/mob/affecting = null var/mob/assailant = null @@ -13,7 +13,6 @@ var/last_upgrade = 0 layer = 21 - abstract = 1 item_state = "nothing" w_class = 5.0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index d978bbfed94..bbb0f870baf 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -287,7 +287,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /mob/proc/abiotic(full_body = 0) - if(l_hand && !l_hand.abstract || r_hand && !r_hand.abstract) + if(l_hand && !l_hand.flags&ABSTRACT || r_hand && !r_hand.flags&ABSTRACT) return 1 return 0 From 64097d3acbecf62273c26c7ecfe79448d9289c38 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 18 Nov 2013 04:02:07 +0400 Subject: [PATCH 007/315] Little fix post haste --- code/modules/mob/living/carbon/human/examine.dm | 4 ++-- code/modules/mob/living/carbon/human/human_helpers.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 4bc5c7549f9..3c2f8f79eee 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -104,14 +104,14 @@ msg += "[t_He] [t_has] \icon[back] \a [back] on [t_his] back.\n" //left hand - if(l_hand && !l_hand.flags&ABSTRACT) + if(l_hand && !(l_hand.flags&ABSTRACT)) if(l_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] blood-stained [l_hand.name] in [t_his] left hand!\n" else msg += "[t_He] [t_is] holding \icon[l_hand] \a [l_hand] in [t_his] left hand.\n" //right hand - if(r_hand && !r_hand.flags&ABSTRACT) + if(r_hand && !(r_hand.flags&ABSTRACT)) if(r_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] blood-stained [r_hand.name] in [t_his] right hand!\n" else diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 8cc513b9612..774d1fee51c 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -107,7 +107,7 @@ if(full_body && ((src.l_hand && !( src.l_hand.flags&ABSTRACT )) || (src.r_hand && !( src.r_hand.flags&ABSTRACT )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) return 1 - if( (src.l_hand && !src.l_hand.flags&ABSTRACT) || (src.r_hand && !src.r_hand.flags&ABSTRACT) ) + if( (src.l_hand && !(src.l_hand.flags&ABSTRACT)) || (src.r_hand && !(src.r_hand.flags&ABSTRACT)) ) return 1 return 0 From 54b04d4641a8a6bac489b527cb6a98c5ff9f4226 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 18 Nov 2013 08:35:21 +0400 Subject: [PATCH 008/315] Proboscis will look like a SORD for now Tried to draw a proper one but holy fuck i suck so much at it This is closest to what i imagine a proboscis looks like --- code/game/gamemodes/changeling/changeling_powers.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index fdece74a0a1..79511b08bcc 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -649,8 +649,8 @@ var/list/datum/dna/hivemind_bank = list() /obj/item/proboscis name = "proboscis" desc = "Thing chanelings use to sting people." - icon = 'icons/obj/magic.dmi' - icon_state = "2" + icon = 'icons/obj/weapons.dmi' + icon_state = "sord" flags = NOBLUDGEON | ABSTRACT w_class = 10.0 layer = 20 From 0473985be4d302ef5d003bad87c509d2e90b3d37 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 19 Nov 2013 00:37:33 +0400 Subject: [PATCH 009/315] Abstract items and show_inv, some other things Abstract things now cant be neither seen in show_inv nor be interacted there Added abstract flag to golem armor so now only he himself can see what he is wearing(seems reasonable to me) Added my shitty spriting of proboscis and stings to icons/weapons, not sure it is right play or do we ever need them at all Actually changed changeling_powers to work with stingers instead of proboscis, but dont want to push it yet, maybe people will want one proboscis for all stings instead of separate stingers for each sting --- code/modules/mob/living/carbon/carbon.dm | 6 +-- code/modules/mob/living/carbon/human/human.dm | 36 +++++++++--------- .../mob/living/carbon/metroid/metroid.dm | 10 +++-- code/modules/mob/mob.dm | 8 ++-- icons/obj/weapons.dmi | Bin 21553 -> 23260 bytes 5 files changed, 32 insertions(+), 28 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 73a037fd4a6..50bc4631b91 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -466,9 +466,9 @@


[name]
-
Mask: [wear_mask ? wear_mask : "Nothing"] -
Left Hand: [l_hand ? l_hand : "Nothing"] -
Right Hand: [r_hand ? r_hand : "Nothing"]"} +
Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"] +
Left Hand: [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
Right Hand: [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]"} dat += "
Back: [back ? back : "Nothing"]" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e10c86e18b1..eaac59bd411 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -319,38 +319,38 @@
[name]
-
Mask: [wear_mask ? wear_mask : "Nothing"] -
Left Hand: [l_hand ? l_hand : "Nothing"] -
Right Hand: [r_hand ? r_hand : "Nothing"] -
Gloves: [gloves ? gloves : "Nothing"] -
Eyes: [glasses ? glasses : "Nothing"] -
Ears: [ears ? ears : "Nothing"] -
Head: [head ? head : "Nothing"] -
Shoes: [shoes ? shoes : "Nothing"]"} +
Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"] +
Left Hand: [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
Right Hand: [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"] +
Gloves: [(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "Nothing"] +
Eyes: [(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "Nothing"] +
Ears: [(ears && !(ears.flags&ABSTRACT)) ? ears : "Nothing"] +
Head: [(head && !(head.flags&ABSTRACT)) ? head : "Nothing"] +
Shoes: [(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "Nothing"]"} - dat += "
Uniform: [w_uniform ? w_uniform : "Nothing"]" + dat += "
Uniform: [(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "Nothing"]" if(w_uniform) - dat += "
Belt: [belt ? belt : "Nothing"]" + dat += "
Belt: [(belt && !(belt.flags&ABSTRACT)) ? belt : "Nothing"]" - dat += "
Exosuit: [wear_suit ? wear_suit : "Nothing"]" + dat += "
Exosuit: [(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "Nothing"]" if(wear_suit) - dat += "
Suit Storage: [s_store ? s_store : "Nothing"]" + dat += "
Suit Storage: [(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "Nothing"]" - dat += "
Back: [back ? back : "Nothing"]" + dat += "
Back: [(back && !(back.flags&ABSTRACT)) ? back : "Nothing"]" if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank)) dat += "
[internal ? "Disable Internals" : "Set Internals"]" if(w_uniform) //we checked already, but a different place. - dat += "
ID: [wear_id ? wear_id : "Nothing"]" + dat += "
ID: [(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "Nothing"]" if(handcuffed) dat += "
Handcuffed" if(legcuffed) dat += "
Legcuffed" if(w_uniform) - dat += "

Left Pocket ([l_store ? "Full" : "Empty"])" - dat += " - Right Pocket ([r_store ? "Full" : "Empty"])" + dat += "

Left Pocket ([(l_store && !(l_store.flags&ABSTRACT)) ? "Full" : "Empty"])" + dat += " - Right Pocket ([(r_store && !(r_store.flags&ABSTRACT)) ? "Full" : "Empty"])" dat += {"
@@ -390,9 +390,9 @@ //visible_message("[usr] tries to empty [src]'s pockets.", \ "[usr] tries to empty [src]'s pockets.") // Pickpocketing! - if(pocket_item) + if(pocket_item && !(pocket_item.flags&ABSTRACT)) usr << "You try to empty [src]'s [pocket_side] pocket." - else if(place_item && place_item.mob_can_equip(src, pocket_id, 1)) + else if(place_item && place_item.mob_can_equip(src, pocket_id, 1) && !(place_item.flags&ABSTRACT)) usr << "You try to place [place_item] into [src]'s [pocket_side] pocket." else return diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 0f4a12ff8e7..62c6efc75df 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -829,6 +829,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 icon_state = "golem" item_state = "golem" item_color = "golem" + flags = ABSTRACT has_sensor = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) canremove = 0 @@ -844,7 +845,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 body_parts_covered = FULL_BODY slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE | ABSTRACT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS | HEAD max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS | HEAD @@ -858,7 +859,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 icon_state = "golem" item_state = null canremove = 0 - flags = NOSLIP + flags = NOSLIP | ABSTRACT slowdown = SHOES_SLOWDOWN+1 @@ -870,6 +871,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 canremove = 0 siemens_coefficient = 0 unacidable = 1 + flags = ABSTRACT /obj/item/clothing/mask/breath/golem name = "golem's face" @@ -879,6 +881,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 canremove = 0 siemens_coefficient = 0 unacidable = 1 + flags = ABSTRACT /obj/item/clothing/gloves/golem @@ -888,6 +891,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 item_state = null siemens_coefficient = 0 canremove = 0 + flags = ABSTRACT /obj/item/clothing/head/space/golem @@ -898,7 +902,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 desc = "a golem's head" canremove = 0 unacidable = 1 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ABSTRACT heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f4cd25c9737..6b0227683b6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -233,8 +233,8 @@ var/list/slot_equipment_priority = list( \
[name]
-
Left Hand: [l_hand ? l_hand : "Nothing"] -
Right Hand: [r_hand ? r_hand : "Nothing"] +
Left Hand: [(l_hand&&!(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
Right Hand: [(r_hand&&!(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]
Close "} user << browse(dat, "window=mob\ref[src];size=325x500") @@ -483,7 +483,7 @@ var/list/slot_equipment_priority = list( \ var/slot = text2num(href_list["item"]) var/obj/item/what = get_item_by_slot(slot) - if(what && what.canremove) + if(what && what.canremove && !(what.flags&ABSTRACT)) visible_message("[usr] tries to remove [src]'s [what.name].", \ "[usr] tries to remove [src]'s [what.name].") what.add_fingerprint(usr) @@ -492,7 +492,7 @@ var/list/slot_equipment_priority = list( \ u_equip(what) else what = usr.get_active_hand() - if(what && what.mob_can_equip(src, slot, 1)) + if(what && what.mob_can_equip(src, slot, 1) && !(what.flags&ABSTRACT)) visible_message("[usr] tries to put [what] on [src].") if(do_mob(usr, src, STRIP_DELAY * 0.5)) if(what && Adjacent(usr)) diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index aef6d804a14402590a78d6270660eba66c478796..7b100392b78bc117b5ab1571a3dd21e433c29eea 100644 GIT binary patch literal 23260 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 From 5d1b10a0644f7ff19a31a02f3300af68397147cc Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 19 Nov 2013 00:49:05 +0400 Subject: [PATCH 010/315] Quick fix again Changed flag from 1024 to 128 and added proboscis to icons --- code/__DEFINES/flags.dm | 2 +- icons/obj/weapons.dmi | Bin 23260 -> 23510 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index c1041d519d2..e5f670b31bf 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -13,7 +13,7 @@ #define USEDELAY 16 // For adding extra delay to heavy items, not currently used #define NOSHIELD 32 // weapon not affected by shield #define CONDUCT 64 // conducts electricity (metal etc.) -#define ABSTRACT 1024 // for all things that are technically items but used for various different stuff +#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 7b100392b78bc117b5ab1571a3dd21e433c29eea..8d8f5052c45d5d5b06d5e9c501d2422c533c7049 100644 GIT binary patch literal 23510 zcmYgYXE=EOqC^)#L>PjI5F~mXB}#M=eGJi~CefqED|+v3wCF8*H`)-L zQHQ~|z2}_k`hLW$S+n!PGe--WM zc8H05R|34IylOTD_iKu zT{B)C5`a&0x+zP=skci;CJz~Kq?nP7yffJ-V>=%bE9Y6~MADHp7EC#iwdx$P(BsC8 zEBXOmXSSlWPPy5cw`d|yu0I>N)a|{~T(+P&{%+3Fu>FsISb^)5>#Jh+yUXNA+tkO= z93BF~(%5?}jVjhb_3JE*kHX}*Xg32LLqvp(*C_T)SP@i_KV?bmlPNh8GM3@i*ZM_~ zw?vOuLyZN(&|a4%lv5V|ZEvZ<{=qx5R-)wAm^BBUOTnRH9m^IPu?iAbX?ud#1CeRY zU)1N}<%H98{qQ4&HlmQn18JisG?`V}Bv$RA;{vqPC(@>d9u_~O(w^g}Su2&ORGi{> zGV@g(9LQEzNAc3Xkgk|K<)20DpnVfIKFZ)9m3jaGE1)DVtLc%lo$BdvM+*_$yt&Qv zmHY)Ur=345@v=%k_oprHTaW!h?M&al4a~*AXDYMHz3gE?*~vgh(ABq0hV$O=50mDf z0%qFJ49+C@@((D9Nv5A&%=Fdye#+1L^h}8>FMo97s%a>OYvZ3$XllNOW4g5K;Gdf7Ux}qM~t^PepO- z>gt?0O{s-sDFbms(M^3oD7D+~EP_JG9E}>|5PS5pE5AdR_f-|V^e!hgW$9+b2t6r(CHJ^L z39}~2iQD_muaqCpQrc6K%gCLlCCLyP8rt%1B~%PW3JlEtHo9kp7A4cx@!RD@Ml@e4 zjN3bjV~WT7HC>tJ-XJIn$8+n+cON3@k&knKr2qKQ`{^0;V-XSO@L}sMH)~mhUkFL! zsxq1b^Bp!Xi+Gtul`QV)Ac8cnXMKfu2>mYDQ^VUszyFm^s3+my$La%Mq_=LB+Rut5 z95%p6|MzagPuOPx0Tb}~gw?Gi^n9gm*NOD#31xXPA2fsXzmIwSg5e~qhv(b-+iyth zvLO%GhumKwWaw%C)A+F=23IVzn$y(%`(B!q_p=lv3SZ@4$)pSrZ2U@zIWUcP?{p0f zQ~1yXKql`zRlvU@d4<5TpF?!I*aH0iQqG#!p_0L2vazuNfMDbPi|~?-gsLd1YEhyl zujB6uV0Sh+F)$@?aCjXg3uq}RKu*D|2Z@Q)q1 z);WGLF)?+8HV=DihBBWPqiGL4d)%F05$j;WFpaCWb3b~t5N6VXnET=mC?2SAdY5{| zgSWliI`0qH2HLFBeI|Ye-pJhyzf{-IU^m#Jcam-KYD&Wq!~Dw5&O@vmdo>v$bXdBz zj1XY;7j)CPOz|dqeCyZ^<4{tp{omSoW22&a*uT$GsYR;)w>HwlCh)({F5Ewe{kNzR zySGE7=6UoKDdl}aobGeN;2#k14V)9epeEoQn!qrHq)QpW*0{QrSW*pB@aUNohT3Do z_P>{yBWBRFOB~QHm|A>EH@F6Y5-w|{RO~NJ22&*X`1r_P_t0B|M{#mX&(4kyke;U) z!AgfLYbM;h`Rb59BrsP1e7Wk|8dHsB{(p-s;tt@*qA)h?ww3KSZT9!8tgfx`@IW)- z-co`iW{7;by1pKuGl_@NkVbi1Nt+~-cbVrV-APsLT3%i@xn=2bv4`Fx$}yr`mV|0+ z)71p1VPe%V3rT|IpClm%VRy+UYfL*=dQ==p#BFg7;p`=*gdg}^!?kF2hZZanN$AW8)<$tLa?NZ+4VO0-J?kV=IOL9Rn|ja9sHgx zTb zjcpc>^Z<{I?1ZVSChsP(>xH0Glk0`1fmKp&RuikZy{NN4TS8wm_R`9?YEqD5K7mH^4w1CE6z-`Lh)7IXv(Uoy)vk)RXS9 z?F;Hav+D-uOAUgzh(xfQjg$}Ei{;=VnEaHX2CO}*@0^geDY2^n zyDYZP-F#=Ei^WL*Nq?>dxIneA=C#^6<_wX%p-q{iWeUIoAXHvTnfyMbZL52GTK}Yn zD@O?So4D2mu@dxDuYvXVk{A^gm9EXbVKbD*CXbUXW~SNKon;8yiB|OVMEG3y`QWHN zn;T%>N@v8d4Wh@t3IYwVN@~peyJY^~(Rh9_TqR5WNg}$3*h8mvSQn{tIfb0^n>QBE zQg0_EB?&P`PCcKgnU-w+PWu)8C>@==R=@%MHUzm&@i`n22UoV^WM`IkU}E#rwmw|? z@#DurE^8_gOyaj|kZ{S`Rf?1^&IPjxg0}R5E3FV1x66}^g|jYgbQXa9Eu8L-(PFrs z(Z*!%KO}P(Y@X?Y4r(@$apqctg#uT`84l|qNxw_dWV$IgMDI`od)K=`bYq+WdKk6iu{1npn=MQo%ZW| z>~+!MZq^4uy1=a_fD7erb0<(zOB%!m$3ZTP+W_`jdhM&i(@gXW!q1n+)lorUX60!p=QtHsUuqNKLQ;g#f$yUXrugz-Mx>m=5tpR3tI`-z*3Qg_p(!aqo6lY8eR_ zTA5GyU*#jP(ov(OkphG%X;chMO0-!E=TQ0#6f9N^eY}bloAh7w+y|R@ln%XG?g+mT zK^)^L2QT1X97q-?UDlP;C_S%<`FYbf90Sz$3>lzjMQ?k6__)2(oZ~#paMRY1VEWf| zw@AEQ+PhygLz3t6NN)N&?BiO^FLU>I91`?v&{xT0NvQ6FA3!p48R>)x)}=#@DHTk0>V=RTL7}z1nPhPfJ`H0p4qKb$JvJ?pyLU*K3 zO-5X|&Ykji54pH1a=Tw$tSo=0*5Z)CY@#4dmPQ5hI=)5?uZKV8{PR!ck7m#Y@;ZEA z_-oXsML#v_3p!Q8i8G1?5_NOV=Dmlc&OUZicA$7sTj-B`{ev$x-@lKcV?cSoyc)Hg zDCb2r6Dq4PJYisSF#*YDrkyiPZRCJ-~!Ph?+hRQi>m*3Eb4>Ht6Ig07{L zS;sDMBrI#@^@%daRu)3*oj+GWJ|H7XQWaM+TVN3qRuyI+!i#xr(ePc+eW7Kk=5p>^ zbB_{S_VcKqzqMfME}pdeZi>^zPEAFsq&ujczg1Q~c_1N?)HK};S+K(zIV+L8jK23p zN8HZDSGVlNu>A*q$SJvuF1|@hycA_zX17~qYKcYgbnp9`xRP-jy_dnT>DlW_-N_lG z;)lHi-h8cl4UD-cJ-yK&W3-KK=Zal9K6&;KHojr#J5z2wE>DhW&P4{PDxV zb6RR6xafg=Tzv(UD(m*#ydXv*pjpYWt&jM~zf_H;7ck^jR`xhho+U53y!@R*HQCnew8DDC@?t4~2DjN>h;Q0C zipbBX;kz9s(oveZXU~bH6jbsppYg~_Q?bbp#rd%9VYDyKiCCU^I)Hy=b|*?Iu(T_7 z^z(EAhEuC`r1UfT&AgpBAFJT0C?-oQ;v!Vv^tt_qYpeI~i3ibn$Fsr<-g{Ej8{g_J zo72U8J!mjtjZJeDUQNc;@DElPrH1c9j#tn7lOYsJk!@Ic28*I8`YkWs7d zxdhvTXj%*?g#XcUG9#LR5%o;9FHiySUa1e1$1GrYNuA!-!DM1f<0aM#9zegnBoWy# zuPbl*mVHh9yEvy9B2X;-{(8Cw{yt`XaLW3f^mQM-a8(&<>*52|uOV#-Pzzb~I-aW3 z7PCU#yCIr|7EDowzI?qk7ab*%O-;q|(0dqG_jJLM%j=^bu6zdzj|hS8hO>&ngT1m# zhbJj#M;WSl(@x9s5gA`8b9_sRieG{Ug{@*K#Rs3Rr?1cUL{e1RUjx2=I6IEZiK$N$ ztPV_mu3d}T3Z-Vh@3H6mZ3-^V=wWeavN@J#2$5AsJjMusZqDo#tS%(kwF*sxKm1I< zD3BfVPI?dKzb`*?2Xu1Kp6fJ$IU_dozyFKeVAcFf#JZY~x4CloZVKdhC(_0aZ@`0n z_2>9o%5Zu?OW+kEc8?BCU@c|RR`Jzd)~#;I2d#m)=t*FGPOjykj5PL0$AYSXgILr_ z83zxm2JhvfHchIR$koQ@L437!M0e`q!U7*|w+3jO1zL5TX}4ivv%_B!W4@?U0@h z0s4CSM!{!?-_5u5K(Ac2=v=qxjB~$#(#Dmc5#3?F_!`m2zZhAdQ}M8fj@;Fin2c0T z-I}|QPB~_s7{HGt6pf4HuJxjopcgcoCKdFs=*!9~)GhnD$K=>}umw6zy5xibLLWvR zR(l?p(C!+ci9JwDo^2BMmw=kMRKkYI)oewz=COjh`Y_k!|`l2Vwn7FyAZlo2oE9J#1@BqhgZ{A>fgW8ip zIYFQ(5>!GeDk{J8wF+MPo-Kv6p;3K$A3l6AeEW7d!n`Yr0p{bQv*5X&s^jTc(7;{| zuX7A|S2FKWZuS0dgC8;dpxaI zRA}A)b3ShUBv*h}PRUvLMLWN*)K#ZITL=Db8`7xYo~6_0N|zGr~2 z>7}>!#TY$)uVuviLQc*Z*-p`JC)VE8MMUNY%qC0P+L4NMn&g)#E>+q7A;vAVtRPcB z-`6hG9oE54n+WwYK;W=}^sA#BmK?Qo_+g3frLF07xy3eUsJ&8C8$#8k8sVrpUOsDQ zMkUv6t_X@e*5-+S z2Z7Oq zNJTH1LoN;%q}NuFA}J}Ud2es88MsrJmq3tl-8$OBB|W@V^m@(BqOs_>PZ>Ta@KiWM z2~io8f9H9xAis_k+Nk_tg+5N_;?@>vL5Kf2ArzlrV)lA>eJ}dlt7WJQSC@egc;XMp zesyQjRVjSjs3T-{9<(w{>r$duWan3iQ>4yEOnQ}9w*2~32757KUAodyYd8%QWV~$@ zt#{vBz&)@EXr=sTbb~LP{vT^I$DN-1s5H?F;7al_S=!0xEV(B!f*}(nnuym{HJ{MR z7cb-5^!gm-&1>-Xor67`)q8fF65`zz4`-!r>r&q3gt^{z_pvFx-YsTVbn@+_Iv^>< z&CSb`mGfyDo&3waw>`sa_$=k-ys4^W&n)#a>7H8%q`d*QDy_oVC2YmX^2i z0*AEJr~M6jdIws2^uuHexGIF*J4Kmpu6!lv8#-wtWYBC$D^0?hTpr|@7k{(%7 zu2G)#Fr0Ori*X0cvlGm-hQ;jIqtq%a`F+-FH->jvru)YPAVgOP0>orOa+G&jiK_*Z zsPK>8Q&wMJCa=qxKa16ab zA>Ter7Ju`5>(6?@FWAoP@T<=KR{!tQ#fCdNul=KZ5K;7Vv3D{moClx9tqNvWNuNeF z8aLqE9p)DmkBgtpG*6082@HOCqCFc_(8{+VHMT&Isq za%r?hE}GN>)fS;ggYY{}Z-7ldt~*RUI6+gG^XmjQX3PjB9)9k<{7Wu#;M}Hs->BE! zK1lm_K`?BbPH+)cDZ7>*-K<%UnjATrq1x)4Jshw7+to0eS%r;?Z<6!De}@T6RGEZ^ z;pFBOzijHKUy>Jt)LbGRi)SA+UbQ8+)grk71mZ8<{RpCU6(})aO4XX4^rkT647(9M zu*s!!0hb6Q4iMVT-=OELLlFy z#$WUVXiU`+v1r=qFMhU?-Zp>6yGmq8B6sO7)8X)&Z)7u{&c?O%qXp=OiL`Joa6}7O z7`WNJbA2!S@#ABcnfZ+G9vx`B0YwS!xY-#3@wadQ8J|8i*>8Y&-Aq!)b{%CW7m`hR zS3SDkYxZ8?*9G|AsbkvrQ znVORiJkT}b3p1oa5-22IOZ%af-itQ5L7clhiYF8lkbCYg+7Wl(7hmKl8l4t+>a_;s zvu!!mwfHkW030jyS=;D;z0TPD+-(rMcJQ4PwZ#f%mEH*B&0;BJKZxA-&IzJ%GjwS4eZP8*IVn06>jFw@O`qI>k zyt9fnI$jS7#Z+5+4hYdWE5Khj;#9f^8z@$1%Hf_2PjRvl5eSb>+$w#XdEh>28u3}! zLOS~vZj=i2>8zPUsSS@ZW7O??9kn0SYEce;0ELLF1_+G?e)6zhPcHU@R8&Mfxq&0Cg)% zJ!O;*iYFT1cm>umOt(CKRs5t$M?k+XK>$9M6mi>C_Uv50C6VwKAt}s|xBc0%wRcaJyj(}w;-M7{g>K9&DrlGa~3TI^wWnX}8l1Q5HblU{e~ zPSHsEh85e68`2#og}prOUB-X2s>}&x9iz|2!>ZG4hL^Ji7tpce(%>%H9xDVivy70I zv~{tua{ZzI5Zy1yH7QovIjanb$i2RAf?GgDW4!lw3k+Jb^YW5nFql`$$}}S*BZ1&Z z3nuoq_^x#voAUIxV%#wbtGh0C6buZ6{3V%|W*CnXOm)1VPEELp(A^o>$YxG@@i7G% zS;XcjkqVpEY@!K{v~)bDvPL{pWN2j6OVIv9i3~|i7F94!GseW^6op5S8|i8F2pv@? zW{Fyi*FftuS4Pzx>+2Bto73Oi$zKgNXhx=<+n3+34X02g&o9%rU8vIC_xuEyRI@#L zNUSr!X;_@!-o0Da%_|uEOARQd)m*W><_-+Rx1DgDRuP#XPS7=KXAJ&&}_?r~;)Idy`dp^U8YeI6bjb#3k7kdLH!@wm!@l(M_Iq)ct2~!xySx@`{!1BJkpk zuU-6h(U2d-0tWsv)pdZD#Y9_>JYJDRCe`nHYuFDig=>P%zSsJoRfe)%ts}vdg!n9L zZdS&FZX^c6-p=|oOa~-a>Rww`$5C)YMly?F98Mc-hW18A%z)!$!Lz5mYCD<6QRtN^Gl$tYC+yD~o=jI=fYA z^Z5J5BG~}S0zqTmLIooWJS-oXxAG>{dsE%#Uze`FQ4tS4F@vU4{9>MC~ygoghaCai5Z!l$D&}PMTY4r5F<;!(p37_+!_j(dGj?RyZh$L<)PXSYVwXYOV=2h%(j?qm!t(X{yWYM`8JJGJTuw@AY!BWG(+4)moPJ$;g`d z7U3^wPgKDdW%{LhYPF`)#AAkgUqB%=Ee$`YUCBI~kB-ul^c`Qb z=pPy)@>Ruz^Wlzd?xuYcuy(t0upU}0P0J+C&kxC)AfusC-`gV^6=kPn^i%rQn&^>v zYs-Q7MQEI9AN2IAA4!|?2AbdGTb_$m`P9`s71b;ry>EWt%XX6w!0VE@Hbo7>f@q<< zNxxmLTg7ARSkw7s&(E2k0oFe1@3PI8{4_t?{HBC56oq&WT}7ya{+A12`!)~9gw7Am z)1uhIl3!F?guprf3p|Hw2*LPq#VobDsnjUt={wBv3lGN0xOwv@=-0FdOMevlQ7mRr z?GHxzMDh1$SX?(fHNGB0zTXPpF)b^8OqWpNT~tpeiHrBuM68_;aAk!4lQ7OUIhoV8 zxpnw)AmqAX7v;?b)4KE5y@5qeE~rznnuHCE1xr0ICiQpn{j^?5#)T6>NERSc`>FNs zi48*uY^U5x_dJ_4F;NI$@QukKEo{U#8MLbZF!J_^ zrO8}}{*HR1z!@6F7AL6saVGdB2Hl;|D-P27$Kt>ws*fGY16?7J#`Bl|&kwU6U<4#r zQ3MmUR!UBdVYDomJ$H@W`;9-o`^Z+22U!|Gq?JCy8|Nr*2AjQpDDn=IFI6@D7BPm) zso9l_-l}{7Yr0_R%}Z z;rNOlz)$9XU)1qWcS|B;SV8t(3Blh-Z*6gJe=KkGecT@~FgR+tbS+}R#-yzk(ho?B zAEQ$Dl)m0D*T@MJX(g-4Tf_kgy0H11%OgCE9946Br77GDaX%IdC3{HYp%lTtT>NY` z?6bCh%K?f08OAW6Ih_KV$O3D?v>BQbCIZBT9bFJ;^*mLRnw@6MWN+Qr`MWg59F_N3 zz4_{^>qIQN20q2q`-2I|H#D%6_ZZabMXckTqR+Q*-nmuYwZrd@udTUT-u}ye$0OWs zfoy|L|2hYfCc6YjrT|SalNe^G@s8YfNQNxM!>1>3bYs@}5HH*SW>|UXcye82S_Sy+ zE(zN^)W%Kgrz-%OHNi})eV;*7s6eNL&Z9@CWK!gzwLLmD0|7GMQj*`DrqV#l8Y~vr z#qL$-^NgbkCby=)`(Drfw_aoc6)-ZX`T*Orl-~!wUIEV6%ng^$*Y82E8jA@2z0Wlp zEBGhaFU$L7YfVED_teSOA+Vj_?z>UH#m7vKu; z@V%6I^v5cqD2Q}Qzr}~KS^UXZD-!bOsURYk*Kj!uGLr9b9@G%}8ml?@7*i~OjEriIj z3#}&N;AsC%lOD6?g{kbXeTRP1%Awq#{%?oZ_>AAYI*97e+^Ko=e89jl9F?kz;1UO1fu&)-k6mSn^ zA7KBK)Zb!3z#!qHLb?n9Vc>6q<&(wx-Fd>xI{t+Fhj@T|ympJ=lRN%EVnG2V4K1Ov zEBOM6XF(9_ei&q0Vg)_BemZdnV72ywDz+{qQkS;CRc z<>r6s^MI9@OgK{({ADawlf7l=B!y9X>mBLT>K|JMyv65!8Ktitjsdbh=ED?-KW7*d z%WJ5*28m&Dk*uK!W!q0V93lA-^3UpS4F1t16Q!U3Xr_jUexiKRDPqER$Mu&CR&$K} zb8D4D0@AqtToQ7_z12Ke%+2K{OKtokjl0}Wx!f0$2sV-oOSyjtTBJzwe zpsqPlqI-_Ukx6;q$_{PVX1I7rYK)@i(%bKbn$J6?zi%zTV(uMM6qU_z>2)U|H=mj~ zN9=*)DUuf87j!?D1O%e-7OW9h71Qtir{6QtohSs6fZcLS7st6HcxyY3mPvHRqH62| zo;D@QAwGE>+`!f0=dICj&sF6d`Vfdj6R#0Oz^8|&5DFYtiyjtQc#U%&p@b}UH4;B~6~DEvFPp1SAoubP8efNJg!F5wwp zH++BJ)bcT7=EekbVfjyI($616#w7L|59j}*Er+k-!S%1o)nUfqI(Vo(^=J9d zS1AncLzACW|LVhnVi*p!5YE5lJ~;$HGPU*KU*!v1B?YZ5!FWNyqXLH0k_;x-JxASC zMWN%?4(mgh)G)6PJ?Gmab70w+#@(e(4Fu3-YHbjI&%E*08<2y(?eqaB96cbGwn(M+ z$yv;PW|c0S{otoTzj}#4GgoH4Up6|<_BA8|FJE|!)A57IS~?oJqVRBb<9y*^C8 zeh>PdZ{Vk0kgK=VmzN9k?ltF}kB<+BHZ&q{jcF$wF5vI>CkhAPw9Gm-&s%Jz@ZhfT zBYjxl5h4(1OQZ9qyJv3F^^osX%;h@dTGrC?*GhWgJ!<&gZo@QZ0j7^Wys`sv*COE+FiArX^p;pQMB8=5 zUhK9er3>aV3~)do5EjlD62gF1L^_xWH>JqpgWvto^xG}unpRFSm|8y7=ii zW;t4raZ7Qqe&uA?)U~q$iB}tU>gH-;V=L(!;+)3KW3oU$mzH=8z%RN#-g}N^NSFX~ zdIs?uKrUW3XS8SGbZ%f|a5lx`(e;I_m-YLj{e;2TIkftD&1Jw!1CmnsWUaA60Yz1? zyG!r&PkCyIq7lVFUT*GU6AAN6VVpxS*qdV>4q%ZGF*dmowxf7hhw}va0}o?iklbNH zqJ^(*WImoI{zET)?)(X2UdK=YzqEL(>C}o-u(64Tazr-0`$E+yUZGLwvnxS2T0mb+ zJ0)x`}Wtx#~Z4pOwaM`I%#5rbxv#fEVSfXZgvybYbYKd zfSzx57xdmp^Zp9b3lTfBO#;x@ufwq7cU)&KO~fQUe?7iKOZ(v2GyST@6DP5)kKIY5 z(-aCEgDDtg=jek=yr|5~ViwLw>_KiG=azeOldah!A-_{gw;x?}d?r2@N3xqM(d-}Q zo&qiO&zMDW$EKdfTeKB5>jmd;+N`2Tb+cbse(dEFv*{;>oeU-rlkariuP-_jA+n$? z1wl|(Dch76V(dHWDU0{vS$>R)4_4z<&D*LxD#8){nk(Xg@ac*i#|3L z_U*^B?7<$r!(3gRHYd0m@W5c|OIuqoynfShJlOQNDWjCuVXhEsRWz z{kM)(LtFRKe~fPIO6d(UHW?3@nVWx$iwgqtH%ek|WO&`{zPX-GIy5XFVcB>*;a>Cm zRQc(CM@<%XK+ClI>H*-K8FbckvYp4|xSeq8Xr<{(xybgYnp4eqn1j#HeV?}-rA?eP z0P8OuL9Lps`ZC%=d?s;3+d27NzeZcn&|PNoRlJ}HwkJ=I`f|QKI0xyYil?r1uofeg#_}M82O}ym z*lebxq{J;KsGy}qkZ)r{IWNh`bX6(~`01&sSS1V@wdM-5KjT)GJX9iUw zztYn9QZ*S?)@sxFL3MWc&!3F$t@wn57m_c-cjw!OA(@b6GqZy(h+%Vl`Q9;}|MZNX z|J;kYC+9C!60c-J>e-+1nUtX}HgeK$d^%&f6Hk{huJklt@ls^%%xT4L({&eb*O z(qGZo^MMDKr0a!-RcM>pk`W2?oQZJSw6JO7Yz2|_X>|MHeEUAr?b(c27>-F>pi*1N z22mz+mV%iX+c}uOw=HpD3}MyO(f;|c`S${~gQF_Q@$*AZV@gzW*fBi)7kki1>2!mO zx}}k`ypX|%%OT-SRLt6+k+%n)z%B-oVwuhtz9LTwJP4;u7mDl?}0ts~m^;n4+=O9O2Hknt;*c=_?x>i6|9}j=-BO%S<#)yBh6x-mm*3V!A zYHS=JO~CkD#kznh7P%-Z2@zF{{ws!N3sb|i--43uq(V=&n1)nSpMKcpSeVTfvmh(Q z-LINq^tOPBhe+N`oGw0%$}y)dsVX}{-; z#ZbPioP)&Aso+X~$s@ev%>nL$vNyzU5&Sdv!aK}ZlDBSedtdsQ@I98>2RYmg?ic5$ zA2iwoNOXCS90uRma2& z&SL^@VRM>jqC%s+e;%2ZT9<(&XE03a{>)+jNO#;gea06Lh#% zA2cKNit-%;rtN~`*&RQZrj8)KaY`r>> z4xzH02|KiBJ)g&)8jbjI5gD`iA=mp*vO(k4C&KIoJ`M%+OCExc zdJN!=huO6;Fom&AyoHKm1AtBu7-7xXbIQvY+hpEBz!y?eJvr7t23q@JI73V59k$!NKX-r0`ae9{(o zolzC;%zx|Vx`RDQm7?@R>1&6W$9rnSWl6rCI%Svp;}aGnQk_vV(k;!ugbvr=l6+f& ztXN%_8_gF-n7r6%rq>nK8T@^8)Pzs=)`sRsh8w2gmL+Y1jJ;rx5>em_`n2^*Qh%`Z zV{JI*FeUJ!YaT;VaEuw6_TT=3IL3Y5mtSpR^hm9!xIm3KjJW!!p2JfX`?tqfWNp$Y zuV5X*(NOV(M#vE(VBDBkfc02cet^kWoZ5(Jy}nv33L)K1KD1C!8b)-B^51MFu#*p~Vm}yiU|mYh;?;$tOM&=Z(O$LOkl@uV zxNb-e$*us@7)yOn2ypYJhmElC^70m|xQSzMH)GS)DNKV-Twa37Rp2Ei@HW%_0wI`7 zRU&`Vzy@ZeQWh`G*OYT;qT&r4%G6RX54u?L`oj0UatTy&{q@mrl$4y)k4Yp-z4~|! z`_wQyeL2!5FPz6>_eRwqk5lO9%58B@dJq=E6d|#CYI$3FdI!+qF4evP~HQ zUeh{B$5{mRoOU79qbrJ8P>0Mo3b}0DxS`Z35sX?N(9kUQ9Meqt~$w9TnAQNk`_}WAV7MOT^n$!9&v5gy6l6 zsVdt9#TqwYak_HvwECzfAx3dP+r=Oy^TawNHug@n$AKAmp@dC9U{GMGw)Saq6u(-{Rlll0>%%ItHl4r`K&v;tuam=PsEd8jr=#mKq#|roIQ1_u3p0leR{$ z3*eO1{8Zgn>}_Ipzm(dy`ODaJ>iv;Fr?KcH!bcB4Q@g*O^*# zTTxyfA6&bgxAWA+-8$&g8LLr*FEj|0X2=;aTWwDR$`N&R^a&6{Om-sWx%SO<8va&CF~Qup2@}#MJZ!f;Wv9tz8Y&J0b9BkBjjX?|Z zw~}sV_Xw)6*I`07WBj^hW>McPb`cWX_lw|8KS6#8)O5#cJ0y$QQ_EA~In9hyYE?#MU*?HN z?J|%QRlhqR^fO1A4^miVLeYw{c0qZMSRDK54G_!&j*|+tgW$q7a_1mxiw8(Q-kgA% zNCfSdOaiyo6JkxY?> zA381n{z4~Mp8d~1rC(^c*rcS4;)f~0G)W8gmk~~0W%i!EunDem$u#(eV^}og&0TRq zi<}`Gpcj2BIc0SuN$+*<(Cp#5>NY_O=gP@i%@l5$&?S!8)|ZVF8kO4^+)0DhosHl# z%)9$GHd{OF_rqTE-V8-Kp6@2XncL_MJwxRHI0z1V&t6BFx;|&yTl~o}Opc*47sJYD848 z;!O#t9DGmzjyVn}Pm+xD9jzBE6FX)uoPJ)^<6_w3__l?G`RT(O&&pCtIQ329l^-9P zR>EyNS9vrx@+CX4xIB)lIX*UR&{{*LDg(yttL>)Ed>#Cn1$%i4zCB%jd9jC0B*0*L z=cNo|)6b0TJy6Jxef-;5(bBjr&8UWB-B~p4MlNi!1UmHF^j~ZQoyZ+_wr6Os)DBuq zC`fEj-w4OxbZOqq727;6y?AYmE~liX3w~?Se4e1mru-|O*=a@b}x{Gre40UrsAn; zEoBGqZCQ=vlN4-PEEK|>On@DMI(4B-rk@WWe0F@Av@iU)K=*Q9=;`e>!U{XIyTkyXvg=6Hc!TOf%OJ*GMbHLLee7K@=L;+;>+E;maRdW*=S;-nH5mr;avmv7^* z_Ok*PAd*o8w<@k`Zj}^Jl)fb6te};s$~-Z(dS~{t?XCK|+rZOr7!hC=KXS9&MxlWP zNdD9z$l=0vL9Y0|d8xY(iwiiNeWV;*(^^pxp5=lop^_6YL6^QjV0RgLKuk>8y!R5%!uc$uR&@iUu-Yz&ATNxZ z)bMYQe)}Gt1H(D` zyG{7~8hf}c21MggUckry$?`#beBdVa-qO+x)f?xpnq&SfHL6N%Wyi)mOXjvm-;fbn zyy${jSts&17cEXx%8lHvps(%I`RAX1@R4cQ+u(#CwPq~iW3{x|S7r-2MV4_xY)n5B zhDcxFa&T}w7uORrR=qFE?DvaZLQGY-7Zf$YHI&7^RA!0 zCX|F+T<&YAnaCL*1pk9nhv#st$6Yc)Z{O0DenBC&f3%~O5en8}d1GxILM8VD( z(1(Xo*~hl)H&z5*X>}DHzDa`P@4lX_PFGHiSVvb^QDfMF0uE65jJZ#}wol<92S?C6 z>~H|^`}&pA0qy!yne?Dr;;|WMt?6RBlK}t~#9=7lanMbF5DaVZo6nog6kP*78L!jb zNaxc9Jc#9IrF~gek)^FYRZr~4*r8uOzJOm{lQUeG zZTz#=v+TMG4hczMg3CJiWEj}TTfF#)&h1I{xs2CG05WK;`^IRO2{4T9{wY_>+gTCA z8~1+u0W$zF@ZbEu0FKT4KAtPLc8z2a!1IqyP#sSR&oQ~zP1WG8029ycC(s0AF^*u+ zA-}*r#-Z^oLdwj0hNa+9x*znM6hw^FwSq@bW7PULHFpKhADN>YiJz=f!7wTpj^-oq z-kbmIDRNf3(j`Y4D(aL#YV5*w()P<0>UB&2sY3hA!f!3vKaH~0E(Y?nF4BAGf&?}20)ynEM~?~}p|k(j#FfWG^}YWYds!=mWKAK5h1cmF-cPPB}-vY*_V;*%Zz=pGh-XZ%Q zbMEtgzptP0KBVWFSiDnOC0)!Fe8H912)#Gk;ctE~^tUut!cJ0cMhD<_ePX;(&FH{` ztZFwWvveA0Bw@r+e`pR1!1_IOg5gjaa5z@RQVlFuj+y7f$aSZRamE1vJL6;zY0xkJ zYC|vIh2A}E{zXr#g5asTcRz5S;+G>o1568&%Vj*yFF=U8CAxT3dEVwS*sn-JKleJJ z6*iUvi@oU8fwu{2-$uh#sOj>LSFHUBg;mz=DTWQSbti3E1hg4Kj5A5!Uc1{<(y%Crg9z#a@EGE-)7_rzQGSHxvA z#OLahZG*oYdooM}&qC=+)nb|L-WU`;LSF}r>je|W#Zldwo0$3(7DZl$LTC#IT>!mI zajqyZ${ml-Pn=F5GmW=0gg0WeufJcumaZRk>ZrM#LwM5`Igs_)WZ?##ED7+6vQ?k} z$Go$GXg7xd_Rx5gyvwN>D`0^3;zv{5xqpoG!O{ibppPnhtf2e2=NkqT32POCSt7Zr zm$iD1D62X9elgaU6MgE!`>tdLRe+E=Za#MCV6kd7U^vES=7cCk zh#7_MY7H0U(1vlb&BM9#o>TnXD)v?Xd$NAYxP?X!oN9u;5V`5xHRn8$%-KU~*&`nt z242joqB33p3qLm;+J;vhCd&_eSQUAZKYj6vQdI@n!nExL2pHS(A6Ab$tnr_}~IyH0GKJZqK`JKftc-T0Jt2wKVn?KEfLIXxXan@a>Xlbi~v#ZuJM z9idCT$s0}4py1_+{8D057z922JaTkO+OC`RXs?EZZl4-S0#`$vCr_7CLt@)_UOICF zt}(7!zO-$0RP*ph8&VD_m>9;{s&uxepX{th@h}T&Pi596tx0QUAQn)F%Pq64k1jXF zPOtuWB9Y9KGUO@1{vScxatOwORX>tko7E^<`M z6Bt!~GE2*-^$^sPe(UA84hx)@HqT8mI%?SdWmFdiOE48sRQiqBGIh-w^zu(Gq4AqsfSHaLNR`ho&aESj2miM0bVTXya$`& z-Z6cfrZTB`!0>F{=8j2_Z&DIu;vVnFf=qFVV5$0YT;LKMU>ifQ_ZuwG>4|K$ zepC|;Do_T9GJmhfdS_{ksmINu;-rxVl@=N$v^kUH0=)pLg#qpA;etbqwU49SD*`eF zR%l${n#8zn-jgKsehS%Um3sh%A!(E0|G83?UE*Gfc%Oz0UQjY0K~50lZ!#JB-esHJ`7pMwZN?-!Ep&d zcvbCV$|>~lMWIz<9BiL{M1#tGtYqa)%A{EEPZ0E6a_uGCa-CsUS4?y?KzkG3aMsRtQ)t498h}F7 zE(%SIka8nw;w_(#O3F+JtcjmxGlJ3gd?rK)sD0dB5}a?u0d%&0cuTubJa6#>xIAeq z?z-tkp@-+}zAv%$$7y1Afs8S2Lj?_DG=~|NZlIqvE|^_*V%D7YL>O1lCBR?brc|WA z%5x8sCux-2&R)t-_|4o*?9pmJlb13i+Q zwLbxfO~N@GQ0KFxqp&HNz~bZ~-~UoI*Yv@Q-OjH(ic{vho%!MpV3D&)k~aX{iYzJE z-5s1sGKej70>b6X3=JBoMgy*t$r!|z0G-~+$)EkM|wv3D|X$$MUYX20)QN}t=;_gU%6R<}&t zALev~!MNX$~@o-4%Zw9N1xQ-IgiWyv+2@L8F+TSD)B_EgiGS z^sW~!sN}^B;7KlP17FJ{u?j&YNNOid)Hj?wuull*64G<}QqTrx*RFd*n;v!4<7$H=&h z{mL{Py!QByI!=44e7#M!a5cuu6+l4onmok=a$1f;GhL^JKtHrr02(a~9yNGpdzASL zu@%tLasePwuGHv6>Dp3SoF(NUWMNuv7Ctcofb5ZGUBI{F7qh_%8QAK=JpE1h#O?;v zmNd07wI&{spDB}pZ98qJQl~6O*6SyN+cq3H{-s&{fqKOn;SC_JJL*|mURZfQ`C&qy z?eKPIwv~5#pNztfaHu_~zH~b%(^YjXee!HF1XCdp&l#}k?Y>5@NYtUm&v!vx@n$%T3 zbl>&tL_vWx=nsTf%&vdpDP=tmkzvbj$nnpAM`u_+dRgsO{%hk2Oy^8=bCPyIFG3;& zv{pa{wrR8frX2*>HwgkNVzvWZMbHxP+%CKyr&1=Mc?EoS{-&;$Le4vGf$I_qUQh3e z$chVSae0J5bEnfWIgHZ#Lml+#E(Q_N4x4zJ@EHRx#36UQnQkCn?T!E-P6lz2V?CriicAPNG{&~6pCNEMWmB#{9ynyDvKdbn!W$%A$ zjN4+ppG=bI?$R-}mS(~#d^Na!#~bL~e-#Gpc$8)7ar`Dvo})@(tW^*!Bi7lEOkn2h zk&|g5a0;rWIRlI{YHy!uC1TaKpTN$?w0B8HpBEJ6OXQm1FBo|6i1+GVu(~l?B}3Mu ze`DR8Oh(Yp>z?3ZPGO2yQy?boory}tEVY9nY zJ+LtjfNyM)8=3lvFuF+aOHSdTw?RS1*MvZqWB6KIjWwwxJgTK9OD8@)J|r!TcQZ~i zn6l55T~;Qj3ae{03vf`n;_V@b>GC>s^{eoYCz0z(tIvA}?*Y{ZH6nw2W_tu~oALKv z$)TV|E!qLpvwip2!p*rXiYeG%or=s8q5?8*{QR6TGAF9rU~X#Xx7PF~W**8C1o%0Z zVwsCV;@~aK^qlHG$D303yy91f0vgr^qLqE;*my{>FPNK~>4$kR-l@fr;f#uvq2v4( zG)*r)48Jlk)1GZt0>bp_E__eJ?OQT}bhmX3c<~-Ybc=HoPX~j}8ib9-LyuSqI8KK^ znn=>({iEYhBDKgC7gkPY%*#>5#0}Warc<#zX~4`2tYksf zq*Ni%W}9o@!x=ygP2)kdUl=%_$MLCoIy!Ad_X1+>P&eovf&s z^}&l~FygU4TO;tvUU?Tjs$MUosc;I9nSi#oxRkqmKsF5p%!eUGb3CClsxjbXE^h3D5 z2wQW%GkyM8#Q6&3hT9E&mj{mLPD) zbc?(p#Y~NTFs{Uvq_ZbpULSKp)>3doWGE${n;}{)tUAQWh(Z+1Yuqq=T}oa*Q|(PW zu|ie~{n2dLfJf~v)I9c{%f+RrOeFd?`FeS3eaGY<28)u~6T(XyqWX)yDSrbmKE)Uoqt16k@8- zmaTwV?bWB1Fl=Ttwok2}T1g^mXg#nz+B7V9f>wC7cZ(kcoU?XxY?m$<(*k$=rABnJj8*MDKSkI|x1 zGh9T2^db{Po6%4ABtUHJ?2HNiEF-AF`AoqLJLn|JHSA+LQTj2ntYgZp`A^Iu$mZL8 z-(80<;PmcehaT0E??g8rrxRiPNk3CSY(?oAij~WD20ZQSr|J#}fd<^DP~iKolkUT7 zz_{ueM(0@+G}rliv}?{t-}tcB@(BZF=Xwc^!zltM7s9FMMUo(~uMAk~Ch2)ekZ>P8 zO;7>|s&4muG2+5~4T!1m20k`mw>+WniB3Pr-{uUJDPq{GT@gujWYKQx~0ex17ZbgMGeHtS&& z_+?nB+aCCI@BNGhgm#nBMQJYb0k1}?N^BLM)f^#M(1jEuJ zAV#*Qg+Z@D-I5Sl@A&XLwo6X&S4G%yH4&He&wvEXj$=QZ3@9CWtk~zYo!ZzbW7MfB zwP48ii~4HKogb%u&G?t~3sZxW^QMRUA$4>LO>fU8eC9Cr6DQCxOEmm;0>CGE%eo5o-J=pphiFtcz7=z z&s{t{nHKLate2eNIPkOB25~X|z48bX=#pfF!-Z}2k(5NKlyzpd9fAQ9&PH|1VLM{c zC`+ufrAXk3p>X+r-@Qo(x?B`B(Lk^QZhOOHpVfJ^Z9hpps?mHv)9y!yaHlPbMl{ypS}`YOja>KC@keC|zcZiT>j(Z1FicN30CUcdc0CnQsPn z@LufXR$;fxV)Sfa^lU`NPRn9;)ChNWaJ;4ck&@&)3^5<>G%6s+w_2vtMXxn9r!e$8 ztDnonGQEkqJD;aW?mrd=UF>?w3-1@p^1eH#n2XW`k%K4+v%XSa)_G>dn5C!fB*tHQ z*8PH3kBmHQOrnbpAbsSKfb7s+1)ch)WL`DT`yl(M>0nk|thP{1wAC&z$R4=>3T8Cx zelY12Hd@ukH!Xc1+i^|3WN_}hLQr2ABm6#jdeiu-p_rs)TpAa&;{6MSE7HChxt1}{ z8}nUVf(K5|JsIDnXF{^N|3bJjO1xC-KWqcHGc_SJnm6N|nXTo%kf``XH;y4!ge}y! zfep=8>5v}c_c@vWQJ`e{huH$Q$=6cat>23^OFw(gE$tb@WJ25Lw<>$3pY)*huxhsUnjo>8Lju# z%=zyp{k*&PYk4;makF5pi~ysbSm};^bLq+beWiS4kRoVKsv)Bzzv%j=lwmz`Z_p- z#Ips*c5C>Umwuq?x8JbbwN-<+JvrCUaZe+4s}LFF(;XCHuCe0}^B>Z9a0FdOxxrRB zm4MTY2`1WLp!#a!?)m`gxt2N7^AmYFO6ZVW{DkTe1$LH6ewT&oNQiK%$;Nc1tA|f|_=MEl<7k_~ zAU_9^97jOeCsCy5$4>=spY-H@rJAO`qg018G1@hx)n5dz8)bzW^<0{uf5!Nyh5P(Wk(w(v+=Ykk-kV=doBIPPqQg7K+ZhY;bIrRL-8(#`wsaOP0+=1% zdWI6aVuy6n_|m=A@PnmTqn%z>!TnBy^p_8#j7kQo@ZWUpW9f~H**0VQ6;=yvZ0IcL zp%bK7{E|fKLHx$D0-c4M&nOp(CckX79_JIe4=zp8W~rGf3INzJ#C{$Y;U z?h~1LAJDEw1LZ-lgHi5t87E^e=nRTeuH(9wgzQpgE@OZK@kp>>RfR!h*y`zrK5!} z2P4y8et5C~uOu>~e5QPQdpShyi#KY-hBmAE6RBfIn2`|O*MJNWp+<>aHr@2hhfWWL zwHuBJx>yB%Q{$4Gn%!rP+>$QwQ_UQPD;Ii6R2J_ z1z6aWq$)Hg(v3qa4!al%hVb+rzpbSx+9)U}5Kq&2zq8{yZzD1Lj&(Lhc*y~e8~X|N zu=x&DHwO9B=|{eHirm2Qms=#CgnN_Lv@p9m7{bO};>Q@Sf6dZ4P}$kHT^GJjte?L? z;s5uys6V{W%oOs^V0$jCe*sK7e``9uKra2>WZF9UYkNrCzX8zk!Zx(d4@7nY11} zh*56_I9?a<+r|9r78Qexcih}IeN95m{H#H+7B)6EW@c!316ZoxOm{gD#rK@7d|$hk zrJJEt*~9QlL(%5nr)>vd2+NK_Ay{x8Q>5IkM`&<<`t)gU{?%}`?8fV3P~Fn&?`Fp*!&FJuZAnZi4-YRmlHB z8Lp?%eEX_XrOWdJDX!GS#4aKV#-Q)tAkyCT)0oZid z#Cq}6b}}!j|9Guf2-;-ro`kNMHUD3&TXl6&zsXfw=EEPn|En$J(fIn`wu5@Qg;&L4 zP-$2WLrsPcz*(%_!)|79N=V%J{rfjXIi)-=7qqoA!J~1Fzg??23hUf&5}E{KJ(x&D zk_cnvHi`wIG}aief#YY`k2{M^7N4cv*_b7rZ)^;vbl<*xJ2M{k=9+)2e^YvAcQ^i$ z_&LWQ+J{5c>*|-063UVSkN;al)p1$;w|H6jGJFf{(uCQ%iq#vvDEQRTkyBY2s)xnf z9S9!TJ{)k8$SyCZZhXhan}Oj&NgqJwoMqSy26KPCmP?F@0StIMezT*X$u7-l>=9Y0>*+>y_ zYFr#XFrN)g zN*zjG=y^Tr3dx9>KmZF~3cbs)KE9aUkdN&iE$MhCCn?6qKC+md^4V+JqbCjnng0S7 z9+ZknBz5pW5$y+ht|a#Y!iBzJyFc@rP~!tHU-G_v6gi@XaVOl1Q^Sc!60AMCP*=tD znedv#!!59E2j{fSZ>03PD=`$oCswD@>hCyMm{C^85puYZoVaLd=^u=}C^}WlN$sNp z2!(;{B@fTx<-<;xMgX%eFynJosx&CvU;utsk z4X#`br6AkXEd>889H*7g=T5)X^2NR8_!LFPdqgy{u|1r1@pTc$`cPNb(N0O2l!{G; znra}e-_7=Y!I}%L1$0j5Yn+E56UvQ9#g*XhPd%J2*|WKIpN?rg;<+AnZl6LmcMK2P zaLfHdw*B(}k23>8JrIB)HeWmXDj1+Jy$NZEZr^a9I7t-tQEI5m#7Xlwr1oZzw!M+; zCeM)qm1mzjmog8wlDtq6E8ELXw3I#X;K2!fXz7P*s>gv?YO)I}9hw{qxY0@luni7% zh1b_p0FOR~2P#43=mpOBM~znlUZ~K$Yu;Nh-M=3?Uw;i-x>oF|gg*6&7v5$L`umg( zc^dApq=(>Zgd$q&VHwO%2nR01SJ*qM%)QuKf5ynPUsJ_W+n`wO;WV+?F@ks)hGIJz~lUcE>+Hp%q2aLK0Oufdt2w|xf7`4 zj|;|b$;&fq12SGyEkKruvqMLjay3gjCop=6`#O; zV`F+Y-zCW7R2dp+6imEsjS3FXnlvN{Z&Qb^h9mY=j!adWu+h6~-N4BQdvG?2#V)IJ zPSuvx8Ply1)lh`2&#q?zxRuJQ>g$VosDQE?^me#&tm!wW*e#4(0y-ZCxkA;$8A9k4MR&UYCU6-vzUW-=R)MuaZK#% z0neI0X{9%)T}gowUMtytBOP6>%N}S`kALvZ*9Pa&v#;h!2RKL#qfm&pI0t0 zu+wOG+=L1>s>0J_(B4!sAck<=xszE| z7G<%Ta|JC**r4N{VOq?>79;h-qG*gH`7L3fkZM(97};=%gAg1-+?-Glvu zzzitd+4(ML5tq1?p*`-k#Es9#xK&eKoXCtWJ@v1?WmuRUkj7#kHCr46If4+mh_xW9 zq_)6%cy zj(CHlfe0a?E-LnC{M@Mc_!|L8IZm~U-mUmy=?sqVoRxw<80B8`_V@L*e>EuZINPly zH~#=rzs0Zq=n+}?ho~BqkRZQ-5nepf8W-m>StAcSoZ2+uGe>{>_RagC_Qk>@ccsw& z*M1bH#bcs+%~TX{Kr@;R)H7JypT^Z|FiF?XE0_cfvhR_=(4hL`*RR9bZmtJtUiDS^ zt1dKnO}>CRHBh~q>&ELlzsh1jKjHM~cgRt*+;s`n2fr(WkpEF6Am~Fe&&o!Mdl#sm zIkP%PT3ly2%|^!Wx?P+B6-iRBc;sA;1M#Ekj|m+Ku)IpE-XwYVy`B{Kp8?cbZh2wP zZwA#mt)%Xt;s0Nk?tmW1gNF}o-LJ8PNv9x8%#GhwVztBtjg5$)$oe)=W0c{$$8(3n+%g6dQM7n+o#iC{(`B zzn99>gm?WI2htlL7l~2G)rUbl6`DbWf z2&1^$IzJwTTJ@Wh@yzStRyxBSev=k7*A0#=qM`$j-jo&JWEJ&TQYmObB1?_rzU+y8 z7qHQdL681@O;5|}rhHQHIAwB6>Cq$8FBusb(clbMO$5frmj_@mTGJD-`a3)QjhDEy zqeX8cBctLLVbgMzpPMEF>=iEwq68H10LI!^sTYpb7)bMB5`T*p-Vp(I(Q~^L2P%_^;10CH(_%bdh$Upy_KRCQBA*k9YN*!*%iLEy@T`!aGnWDu|#XHZO zs+qWlV|M*;P%9y1@gakwQjg+B|27ukIcS~;+kA}=+(^AN+dMfwflM()fm=i8>x9S3 zy@;4{kpcv`In-_SVs95Orv?(x^YQXJ9m-281slMp4nR1MgINtT1hfmj;GaM6y8q!O zRbvJs_Np6ShXb3gh?|zms!y85utH!Av<+{b9~=B`aX}jF#Ga(n9t-2k@KI9rnip!|}zb`5+6VqcdYEkexVP$3In!>_g zFnxXfJdeqRt`1$jcmN+H$q(FZMlFk1@DPWBB6-q7pI5IE>mT6 zpl-h>XAmk!;0`j_VIUY&y;%5u*h$NyL$P7i^(XY`$IW+K(X-750wLyR=2nR(2cI~% zO$|M7>y(_{FFm2(8<=wTGHb+iPPHb$k^)+pjgik*znM!&N^r>B#=Et=Ty8EP_=gjq zmS7q;GRgUcaac=Jj&>MU+>BF<9;&qK{D^aJ-0wpApcmaF87bPwzZ%Sd@o=*gBgJZx zFtoY3q+~}HIPgu1+jIR9qP$(>HUdv3B z!Ha<@eQ3-@(P^I&N+GosSf;q*Jol9+06K}>y0jg!`=4~z_&gU$|pdSfIhDM_fP zx~+~;R8=z+;D!*9r_b1svL)Ji;IhAILbEQFD{;Wz2oVV4w&G9IyjUX3K*Pn zOE~Z5lFk$>y#Wf%5&PPi;=?UkJj?#~HEuVW2oq@D=ipUffvdjRqawRU8?KU5O?-|Y zvc!HPv~}c3=+Un?du)oC&lA5%zx3YvhS45Fbo(zVIt1?K29(ipYr~8EM{_yyFiP09 zIL$|o9(nJ~RBf(RI`o^u;YxP)_Imo3`bfiklS(Y*UMgXhMh#D2l4i3xCLw)ir>{I3 zvIi`1J&~o^q&UzfSinc6SxXseeJ-44YE8CVvD0X3f|Ctw9$MxX+cHD zz|d`EX!xV)>`y~G_F$8Fa%+l+f#HTl!ocp(i8(qc={z;f!%ig}_MFOy&vzVZjx1Yi zc>3^JHC{v;3dL?5P8g|;BO!h9?NX6LggP=(B`AZiT+9@3B7g*QpkLXDR&4bsWrZ^&|+6zsai?&P3>n#s^|$mFT%9=04uw&xOgxDg38baw#I8u3tfEQY!(bb#hlcC`xnFJ zid*EPS0`2b8EtB&aqIhSYP&5A2&v=?fFx+*`x(jjeWhXMBsA^7^H8x@9U35p zQv%8hKB&fnG4w_8==w~{c~1Jq*ge}NVVd$ah$K2oI*6Rg#S8w(@gV=LFKZWUA|Bbq zGWax-t~@q6IE_7d;>Hl6;L0s;4eoeBTV*$lz&Q%gTct8#`$>I`^2k?c)tOGCxJ0 zuJPvuz}*CqtkvG16rquE@W%J7v;An-1$jvgjs#>_@9V=X@O*OCT%r$lUFYeT_#EzH zV|KTFd$@`3@p<6&C3G}fY*wAmVo4`JO+$BDKl8)?!*RypUMj@Xp`~*7@W=0o$l3+Q zNo8fx!b{;CWTZ+cQ8@wGG}q^E@0K$0(V^nw;*caq<)zDoh-7TWqI_Cf{jqgtBHBbxrv0Dh9|!BJ$2qVt~F@H)~I zk$EUUoaZ?wzs%i7wKR7?+x^9_-{iOSEt54=ve;{LvNqL7C#P?vswCvk@4E$30~S=D z%}NUegp-$DpLp1!MAW9iYobSX}GKQ8)l+&VFA05flpFRu!_KZ zi$@fffY=U2(6Z;#OOMM7(r$^J{#zUGGW;d~Hd@Be%H?u@hcJW-6w(IoT`MNeKDR9* zx_gdCZfv?`hoq!vMNE*30%bjVM2zICbki8L>-j!$ndTWnk!7%y{L39>i=?$ zifxSFZmn)n#%sWwj@m}{xw9*ayn<{QHEqA^8*#`U+&X*b;G)cg(>2Xp z)K3yq0;y|hsR`9EtS3Dk9bwMTu=e(QK+qSAS7JufjwrBIBH&VtD@t9DZFNaU%FNwU zm_wx{9`~sSU`Gd|zkmAq^%e;NLC!eVI{x%cOA8@=cs|yrrbQf}q@*mB+KCMhbboqY zemSTJSF{fn{ga++;ji&_+0~oU|3@fJ!T(-6tV)u^;ca!npYsJpv?^^xYuJ*lr$hAl z<{2GnF!!l?oHF&FXpAbPko;IvowUOtoTlwz+g|Ny4xb2++?llONE5@b6CFX!kQ!S| zvAaJs8lBD5Lj1XvsV#I${!HfW+qXTvy{fjhx5UK6LcuWC7K>Rgiae9+znrjeFPc1C zvqI3+ce5M|odDBo3slE3xzgUYqeACv}CVFxD=3%aL3avov z@bIXeOCM-D_A4rQg@uvutz<|4*VQq*qJj<^v%gOE5+o-mI@~|XTbk$v9ORLE!L=jv zx0zj>)7b*&GUJ2EtEaP2celxXaEmu@c^SJb1kjT=hf(4U7)Owkw>eaiGPp2_e0NkJ zyQ`J;n<126y}C|Ggvi!5>x);4^v{oy?Oc;!!Yds^b8s_A&xPk}P5Y2&hR;R9fX~C$ z-{JHV#P351jC&F%tUf8~=MkP+w+~~2o21Y-9!u#7ugCXo`VHb2eVj6DHm`Ty zY>*(Zl}dhMVHFv^Ih0kH34pPBVPT<)-+_s`I^o^oq9?F*G9fU&*!oEJd2qw7c%sOp zXenyovvR=Nxx<0kBXcqrG15Y*Nk=M1nq342l|;irAMpzw3#npD=L|rL|LX8*$yl(l zdeuwyc}z28T@-JGW9iag(pCk@!HD>J-^rAhx_!^!x4LO?Fpk&fCJFkU{~qX>6KL)i z2|`6pdIzE~kab77*YQXKp|sFqcPA$xX!g4t0TE%=PuF)7v!3EYs?;N<(CE`y^On}2 zApNdsTHsnAbS-fJe#arJ)7460YZA8_+>WOQ&toHGxEp(+O~^g89p^XyM5Zafh=wMX zhPR(T&db`eV~uZWmz-M1;fVT)oWS)qCQ8#tI^N>8yzuJJH)!7>brUj2T~%%F%LsT$ zGFncVayx?Jw(W;T=bVqHZ>{qxr(=WU4vB+kii1rFCqS z6WS!@B0GF8_ru=a@)GG-$jPBjcKfjiw+)*Tc`TLq_0`L}*%s{w_C5hv=ffbssmmWl zx+0#tcNCO$(#~HX1~Ywdi7%O2p929uP=ipZjERIP&izxR!mm^l?=(}sbyHnXXg~3& z|BJ|&IUSEtE@;ANIaWz#unBx;qyF>Ver2R{lj%@RaPlU!oyvf=gWAykUUV3BDivkh z%rc%w_6?H19iQ{_X($1u)U;9GMoo_;a`zXTHF`43ei4@Pz21=Sm+`~=P;E;&(y27x zm3qTTcPELhzHL3L=fN|sZ>brh&UY;DcfDIqJiG3rD1pPiEtV3rhd|&buV(oxNuCrp z1bXLZ&g?fVH>q*@zvs-&r^)vhfBaa*-UfJV5~1Qtov-oUuCJb{q=}or*7)5ZVnG`W z%-Qqij)T;n4IqL#sdhdTo>)aREv+tBHclfV(b$G6Ydry^`O>{mVXN zug5EEua;yw#(+yx0X&Mmfut$#f{GVr=Ndy(p^9_Pm3Z)=42{-?xnsE_5w*k%ALne` z2NMV8@Lh+BGOsJ>Qid_fYt2Yc=KjiMV8K}exiRY%eG>&WRQ61H1eV7l@4)#pzV zBxcAyae@t@iLnB4YphGj+2?&zw(L)|^=YoOj+T2p%H>^so{`-mB6sUwX~mLeS3Ot{ zUrp^B5rDE`^|8;aWeVUB52I!UOddv(ZB_i%gLvU+*jL!A$nFQNq5j`Kp-rzj#Pm#w zm@F(Jb6^E`zItn$$?Ib^V0&-2v;y+367)MK8BaCtLaURcrPp7) zu#mzG9dkdp%5uBUVF+iFi52X-9-DFf#hszOO|h4cGuk!AB{<~6hSdZ8HUntEcEY{2 zfml2@64QA1d$3OeZ+nI7f^LdGtBkti3K?N&jjqi7PKAcKzxkJo_ZEO=rm=b4gIy0+ z3#MjVdJoV8muxr@lVk`tfah}HomLG2T1y1k`CFFmHM~_)2qa@R&j$!^;OZ#s|r>-IsTtycjEaO>c92L z`%=pBE#7#s(b0xhS3jqFgaH%V)<{R1t~rmAbICiJN{d-w2AhCoPM!#-=(d`b)Up^3 zU)|)Wbksd_14>_LU3ObOS1rwBqda6qhp-6&To6c@WHNBgzP#~ZJva%b?%O*h3U$MN z-1~&IZ=S`_EptJ;L9zH(qQH)ysm9+(%5JQ@4wwg`rQz55`1vgs$}}iXBQrw4VKSK{ zc?AW%zAn*0AR;M`c?oVbq&D$v`p|(%dysv=Xb*a~dQEtv=WycdhDlfbKR5u12LCHY zT2vbSw>Fxow(btJHIl7-dMx3{w=*NJb})fHz+DD!dF01Q{W$(JZSFff6hy!sd|&U; z8{U^Z$wf_JjRy_E;B4&g?_aqs8X81NS;SZA8z1EsD@f9fq}zoozoZu@I|yABm*9h_ zlrK!wjEt@=3s2^Q7Cg#*{JS=hk!V>h#p#-6~ZrrLnKeWEj!2+*< zlc;?TB)ZS*dWn8SB{Ti>UUTm_CMh`RW#D;?J(=e912s`Rk<1z*_NLd;S|cK+Hvyth zE`rsK5$m2}@fDL`A`%h+xSwQli$j4W82IesLd`%6(Q;#5g!z+Moa^^53Zl=4M$%B& zE2=>YJ|rnI@wS)d9Cgf$u@D^5DM2r>&qE+&&|KaKby^Yi)%-F`=|9L8{&JAh~VV0TKD3K@sxgB~5S! z>10^j$av~oNf?Plmw}A{3uV5|x#1{&Th<|45?W~CBJC<|h>@rEc>I{+ovwvz2IS>d zhqNec*6s||i3+!GUKw8T=v+r0XOEh$>Ql)S)swxnYx@!q3%xW2;^>?P_*9;LRvs|6 z8Q<-t&JI#dbT+-<9C=#Sg%Tg;pnn?{x%VE(WGwi}Y`+Xf$)L}rF@}}=>3~uFv0yCH_C;b){mmi=kS+FTl;f$#?3}9Qa=!JhMZff2 zS-nG}XZru>WUVrXm8|RXB6n|UNkzw%;&hN7udGZWbw=oyS?Bvi?=pW9oRttcqWV*| zXzqqiBZz`}TB*;5mu+c!gzHBBB*wF|okm=&w?KcqC1)_d5ai<{9d`F6{0?2nohBca zN6}_k4LX^K&rS?fTMf!-r6?|)2a`Vt(+wsK;s$o%R8-|@PhGY*qrC6o1L2)gL^1L4 z<6G{<>8JSI+G+W};=nG(IR4Sg`uZ50a)>GRW@0WvLWq-lokH_9b<4MkHm>7|I~E_b z9}FGe_-8GV7|>eMh%Bf4$EPI-+%Z|YBxW&*dyu?0} zA#Fht)Kaozx@}%wp6^DoBTWBZHtb>h;+rD84L+1=PFH1WyZMXAL?5MPMN1)p6)S>! z+_MW&`Z~V-$2lR;Wo4d9(QM?$fSH#)muINUAu@7ui}OFxi1QrR;p4Mf)Z(9%o(SRQ zOkK&lPoNgP4J7l)iUCsiK|YIq1#>mBMg#*E%>l}%1O;%V_k^?)?3gFwmuSSL{Mj%9 z7XmT?yOl*{@0{ayYpWuS`CC)v>-tda!}D-?PSV=p`iy=JmW!#fw!HlfEiJS)mKBY8 zt@&&?eURu5c!v0=?7FdKtHOGUfoZ=t>um6EpM^ID${7aYU$o$0Q2dyimVzkc!cRv_ z%bp!^F3J%Xs$O(%A)UrXPo9~T9O)JtFgd@ud7#{Ej)3L(ocN>6HJY0_GDcYupa%VSLY@ zW1vsQfA59N?5w5tJ<-<>o}Mr&BXYcK${X@#OrVL zdu=b-ma|W$-Xe znvT^6)AZB7#|lLKFi*`K?~Uw*yz<_iPG+1uenYN2>7?f&!AKd2cP)j}qk9C&zv6ER z_y3z_(C3$=CxmnCzP5}7^`b>rn-DnjBToBx-8e4(o9uuxFW}d*#;G7i!M@Y?BT!m# zWW77#B7(Gcs%q_QM2)KVE)=L)ChisnjNtIfE}5L%+}utdUAyU^wS<5w&1|tUJX>kw ztZY#hdm;w=`4MsAiy|_e{#e@*XQ%x%X~$QuAk+Ro0FSwo{UV2{@kzWVxcl=T>G&A| zCkdvL=L8alQ=A;UDv8~R+E-M^n~@qKT^{3g>Sgb}ZZ2Y0(}dOUqEMH(TDlc(qalM|)N73x0MtiCG|ONB`T;~nRDC+KP$Gyxb?!H+lK;5 zN^G*SvOPULd$QR5p``3wm?Lce?H+~T52sEG_dp-Dm7v@UC|sU<#FF;SJbQ2qwRHr_ zMK`1FXcqFj637Me%RZdjLJcb(o7V-|6u zCM&zaQR6P~gye>W*2uWw`}wg=k-hJ#pB1**j`nf*X)g|}=*y=MK%#FgOg%Sv;`eK5 zCJLeqs|OxyP!z$JlBpfnhzHHet0zl9*SU!OxO6qmy~WAcj@u~oOuugI%j=6xP=Jw| zF7$(_;>gqekQvkPw!uw8w!jrqqo_Ce`P>`=k1M*BVJ9wNE>gzOI58(bpG?xrD{PlJ z{19OZro&RZpH+lA3fT^v=vjU8NP5TdBi$VYoZczoH7(0^)biah7IzOu64t!$~7RC#=O5j-;+ntg6(DSc%AINeLP;2o!&piRZ* z*^FaGEXYV!Qu|}}YM>w^El}9E^~Wh=>jSJo>Cya)^nn-pH=zM z6z^WppzlVPx(ys{ZK@~&89s_=b(e`(<-_8&uJszcjTTc5@@}N>?d|=AYC#mA?F0t4 zT%B@Nwu=SmPA{bDkbd@WPUnH9>1bk%K7)yK&z+g`Q(+1Q?m-!kyEm0n(c#l!ch9|j zYnJESb@HsnF2A%#v3JV%xINK<|FO~cz}53Eb822&9nI4^Ia!T1C-p{epS|tMC%Ta; z{7p;d&e_8x^_@w^axicJRP4c_P@CxiQCem&Tb7d~aU-7zNyD!98eKwX*|4Ra@44Kj z!loP~O!JE8-R4>Q=j}WusC9$59R4D~!eRov4lE0vmzNibi3f%0Q_R{|R%4H=(PX0s z?feRavVC9@pNLSQm7G&f_5?l1=_-Nf7?ZO__LT-JK>^(VG0?MDdfb$Ev<>HxpR4Faq5_yzKy^j zhjcPKF09#>$)7!W!d7=0Bx?ic*3Mpn?-O9=;9Q`OJU{YXb=4H8N zm&K)dxjh0qMz?IwRxgHAyrG=>W~&HS{<(vO$)X+okIBDkKByrH2MV$qmxg|j}I=7MOgH#|L%QQch>{?FhK zF`z%B-qL^%C(YqQ_jtrk^q0GkmIk4N zHLA-+?3--Dm-n=-IN!0tOn0Y^XFE%<9`#ku}RCcYVn+J_k<5j*S zKlkTafn~Ii#RguVOYnG)NADwEI< zEc7U%tAe2nC*&90m^{WA7052i+Kur)7M3VfXk6`dm@oTPKSRN&^5!#JL^m{wGE=jlD>y*$2MyfONU83RtB>^Jy%rPhWIPEV!}HOoK|JSBYwz1qC3a|HM!cj_b^7$VR2?^ zmlw+x#|#US=;ETvPc25=!zmd)>rtA_k{vX&0ZuP`ceV3piz+Wm#R+wOv1a&2`1l2~ zhO}{9WzfsYt}XaoF4L<~H?H%yTfiF+AWP`&f=Uzx!Rg=q$5{V4yomXaJDO451Lqyn z)^sv6mqQVY>eXuD(}fbRjMyX+`EQ2PqZUb)j274Ll#Ql!^4l?#7xX06p7?I!w^Fa- zd0zynq$;4+Vlg1Y2KD>(cjl&t?Fo5p`$^XkUgu=u&8S*|lBYe%?ny`cNV1~Zjo}G` z@%@a~TE1MtV2Yj*dtFL`M}ImK4msg+PSR|lS0GUMadN#_-i!#SQ?L!WJ*+!vl63kv zYG3}dPle4-F!j5p=Pu$rp7Df=vUlpBJZgYi!K%6Oglp?LBSiBD}}|H^%<4{h08f@fV}M;H#8#qIYq-XG+=ws=e>onFd1w)-sILY`iLHC6MjWuR)c)0eG0?<{$=Gv{c&(*p+j-nMj6i&=ue!Xx6 z7)2e6vRAX?QPnUr|JGM*DV;>t(j@BG&bpf6C-a{at^p#j6Az&Eif4N=O=ITYUTlJV zrl+S@ci0uH5-3Z3{lk(q&B=MVdrVwhNSeHlzn42PkUn$**R?9st@!VcuOp5qadw)3H(Oxh+^rM zflu5~#QZ{UN94PNAXz>UcNJCp&@gxsp+ExqvSe=Y?$X{eG8weAW>813hwaQ#t~NgN zIOd4ved&|s26vJ1Pwzi&ng9Jr(h=<_1nf&^tCFkY4e>k|Rl zVVx~LU+=xRodDR#pFo1>l5U@WzXgoPQLi_oqw;QrMXiwowew=uJ*RTyv-`6;RGJUg z&yd2(njK#S02OQ14;M<(_Zdaw*HeApXD9xq< z3Z%)CfpVxld&Ui<`1TK<69YS_hCa~x&wz6U-s{u9nmD)lIz7O3g-+e_$&;Y>Z2moq zoW|rApOncMt_4Omvg_cNvz}yAIO|;A!;<}!xsxP$t=GXtYVbZt`xLYR2fdx(anG`G z?t0=8toz+uu7#deIDg)H>7M|#(4RuK?rq7iRn3LTEv@^vmvtxZa-!Ag?WklVCFzor zlY0gRe#k@FH1FNRbM83B1D>IzYQ|REvOPK%%c`=7^nSeB9C9EeB(y4uZU|E>&;78v zdmSh{`T;m}s|Cs`|4Mq(e()QeEsjmQUM`QJqv1MVY9zj;WAN%NC9{-B+|0+*%bn_D z7&1OF$K*cairwwqT1X~Xy2gfM13b1PIh(Q><`ZF%r81YTUFaxE>yJB3ZuP9=QPNL? zwG@ya3FaW!%RmA)0@b(#?YfdJo4ne$Rfv)wiE2uSeW`g>PJ9x{Oh!UUKKp=bf$l z{J_v~>b9s7J>5k0(cB8^`b$!vG5<<3WH?n7qMCEroHvZ8mm#R>INLg0SzC>;*P>}Q!VvOC zeMjj+g`I8THB~qsrTII!hZVG*>9OeANz$eenh|%y(jZ497$yZ`ugzZbY;XNc0lT8 zLkj8{l`p0wU>b}QW~fAD*T^k*2^+*I_7C3TjZa9=Ix57+n=CtNvm^?b1%nim^XO$3 zASJbP`2+vVC2{e@?2Mgv7%ys~*rc{jP#VZRVi;?eQlYx}dzSr&LLAO~R(5w(Utt@C*QQ^qH3q?%_k&jez17P$vIZ7{8R z{w(~g?h`6MNO=*V!sxreG2rJ)p902KX5e;M>#V;oj%8!HH8NXa{ z3tSf)XW*zz6~xuP@Efl_LJ^9PlaVJh_}B3&?>Efu^|dU&W1jA2M^FSIhJE^Dqt^LH z&9G&lHh&l!GA^^^`_bJ!=Xn41#{Tz@{1_TAalwUQe!nKRwABrFFGMuhw_Y}_aorNQ zjc4B#{YkqS5b?tp*0MRS#oU)j9ynSi1Wpd-Q)0o@2cmP6jDAI6UKaK zA^UMw$iJz%)2DhlR=Cdxv(~$iy*X#Z!eAM;LRXOaHBz3qMS5KtL<-dwiW>?QI1n(t zB@HihyZBK2TP;a7TALSQ{oGI=Q5cqRdqSKs@UG6X>CtfAcB1GJAtNyrBAWRfH>A$r zuB@z?ChL|e@0KLX8EVk*wW@~nP5dZd&`6-an@54X*{a?+o(_YxZJpuT;s=h(b)Ja4 zt{_D{CFg$v{P_z@$jmwQ(P(!&`ez0sZz_`=P8`mIF#BHVjD@?3&hK#f=((dlh!1*( z#-xBu;)OUchZi~f(OmsKJCO3aQ<&>jHgUxLzd^CQJ-F+D$DSRD4#W70A>SN7{NcJq z%thV>0toHZdzZz>XL|GI?^hT)vwF|G^1w51?zF?q4L0g#0Vr@JYOGs^aP)80ArwgW z=vVf+>E3iIHO1BB-(-EVNz9&e>zj1&dl!hM6~t#s(0=Ebwjd`Vl;Ry1j+^D=T+4li zp}ob=PZap}sr-a10r_ACON#^iy{ds>r89vB(pFC3M+H>!_s(aeWf*90W@b!588XLy zf7U6m-!1iRn4jm1!C%B2#GgmHw6u>J(KZ(0N(sP2&Evnae=u}>{QMnPR<75z(`TY4 zfeQqqo>QrU&X09V%jTw;ZEwK4dS+%fhi~_HY4O=VgN%IRvfbA@4FGuM5%=&j(O~6^ zokzH;VWs}|_I455c7kz`Ry`6QU#5^cSE#r#M?bpW700a&I$Gt?#PULY(}(R(7>{&g zxTXx&zY7o~0Z#Mf6_Q$sJ@xEBln z;3YT*K83a0pTOHUWi2?+Yce%ul*Y>Clt%ilrQWOnT{VH1f4zX9z7;Vco<`rb@RNJZ zR;}q0J0ol$Tm5O^*-_^Yd9(^p)q3aT*5~9sBwEM!!aH8q5!S*UR3EZ1a&8-kX0__| zC0yp%G zp;poP`9#s%7jkOzo2m*wHwIU{)_zBzQTR4^9Ay$e0TN*8Qorx>bF0Af8vkZM1!Kf! zjd?YBkg(z7U6jz^n|+?pR|`#SuJj{5{=)$Utm{$8?Dwz}0AQ56`o93hjqzd|N_lJ+ z1!EPYwA|meuy|X&(jX7Ly1GVPx|tVcz2CH3I}xutB8>mG>sGza!9=_;^7Npm0Cb5< zM}EJ4ELW`qo}sP+&Nt}GecN}>&~Eaxexsj}Oul`jNUXuB4G4a))6fiaERGfRc2AOJ zQ?hvCfY1gtF~G1+-r8JDPldG{M0d!7Jfn&J0ydGhv~S-eCRECt~?yduK$lMdni)bLXjm@wAjW{se~*g>sXRPQW3*2leCD4Ferw~qmYqp zWEoSBU6x0-Y$G#F*~ZLdnaqs$jGpIxpFe)r^}DW_>z*_BeV_ZB`+UFOvwc1vvHe5_ z-LFpbka?&KEDbBINY6*$nf-if#=JL$J~>Zo#qiJUQ|h2Rv-{0y5C^tK&X8GG zRq&aB#(TwRMvFFOJ*ON^8|`qm#&^@xI|>jz9fhRi9-2DccT&V$dSM6-hoB4rJvANe zPqgVx(Gk7m%FH71z7MoYVpG5mH)G*jjqCAllz8S1za8G3G}9G?*@t^(CCQ`&-O_!| zhOpP~5LJ84n7PmFS~0&`VQz7|#bPfO`YJ&p_^wk6RXQc()`BYot+vKZ99&U1|E_Sa z?CR)!{dCr`y^B6gkF6J&qC1`t+_Fx((Y?>>+{@ z-ZxAs3#!}neKt<#@q_-@#f@8zt107yFWO60 zx`iz(ePNDVaCJmKaNa?Hcshyx2vPn#zl~RS{LXE*f zkZIG$l^2jSk1Tq_VOZoYCA$)+0&>=P!z_?lONW*RwdstXff)-!hCLAmxm*$~k#?e~ z{8%TN5f>LK)*)peVcM~}fH35&fqN)q(KdZiixL*deI;;zyplkFFslziU?xbk9aZlg zV1afuDdME*N+i+0xgZTW{ZJ07yHoai97=&gj2}8*q^(l{*mY(J>gGRWVcEJf5w3WL zXFYY+?1tk=U;>xQuEuGC<_Xh*y@eAzQgnOoAN0C5eYYB$zqhnE#kOTjEobYnJw7zZ zwmsQok=z+?)YFKYwr-U-dCTd$)2)h0f-WaP^XBLRh8kYZFoe_xG;eJxbE)VaRh0OcaYQ;4ZC4?Ew5-bsPEQzk5GKH7AYg0ZvK&K9#`jfe2te@hga}L98Q- zhVGdhcn-S~{|Z}ScWZ`5cEtZ;PPyE+D~3uiBOQKUQ>p6po~}|4v<94^uou@SuK^;O z+)@X{1KHv1jDP#~?PIXXX-P;*N0;i^^MP1J9cBQ1ggJ|Z>(j+yDQ95OY>h^PvmLS_ zhs3Wh&!AnfYZEJ@#vnh+GhI(Vf(t%7K@73XEJSda4r$WZ(+P@Y$0o(|21Wu5^1y#w z-~CY}{Ej~0ei^d12rQaKhkMC_fK)v`1>af&sti7iHp+c3y`8S1>slg@c~GORo2=eK z1Po|`=<$Qs%B2s3H>UzKE8ms8CWUgI=0YJrs5^s4B@V@@0&>}yWkzQocUffd|KXO! zz5JJcOHp}3hU&k>Tioe90AL81T*JHPOm(=>uAM#HZTKL-?wTj;*1}OR{_BEk)zAsx zjw^zp2$qJL*Z8gjf8K=n^2j@D7F@6F%=O8V?e^wwf^P!7yaHLq479vUD*%Xj8)py~J)MWX=w~O$ZuSxTWq6E9@*`6Fs&m>hg<5ss3MH zT0JyM#=nw88m0VSNh*y(?Z`R7Trqlz>TIK^5&O&Zf=FOK1cXokD2WI49MOybJA(mZ zypS=nRyER-K0WaFTgV%u4drt;5G_*&L4EttTs+pmR07Pc_*ViJ;JQ+g8>6|{JEWnx z<&vc%(4Dx;s_Bb zfU`d6^MAC)tJHfUS`msSFi?`Y%$`>iZs`DO%Q-H5ofOTY1tZTYA{Rt1VTUT#)*>L) zr`~|oHRfAy@1n*vpogN`B@5*&eRi&+Su+603Si7ySFlHN`+wI4-;6S>q%LG5ge|KD!XVA6O&V%T{CzRC8d!zs9IffTL?iM!^eW2I58 znb(texZcz8@;hKG$L@Jlt;|jTGhD$)mn|k{{8+h~1r9VWWaaS%J4`n)_Ni2f;gube zS&ig2!|ImWWNQvE@0P}KNK^I6i*>bc6G^2G#!nZE zn)!Z|Is}kviZe!zEzY)pRIu^nrrjnj^c3>X2U*(~+^jCZjPzz?AHeB5ZTEKzC=$Q^ zww=0mdys=TMX1CaY)7vgR%1qv#I%?y{}$A-rZ4L=c}+vMC2hhhQV}Nhc$5h547{3a za$GAkxqwG~;++6RB!&I&PZvBY7C7?t@p&NUG3Q@L=9DchCAgWOyga1X-yZ0wOf zaH%A~kkp`FZ9cf~zc#g42?c5vppL&mdEX+%HMqE^LPR(R*Xi7}#LxWIXYhJc7$=Gj zFz(-k>C5TGg z3cq=aOe&)ArA{}?k3b1HHqDfi7KBvTYW{sWa)*6{T+(jbMoU+@jZrX)vF7egB)p%jecugKwA_ylN-^Mz0b7o*taR*s#O zOe3`Qu3EXrU3@F2n2R0_Y07O%d}nzjCAWz=M)PTkir8PTBIy4i5g_+`sVt^qHVkZ+ ziuq<;cYyX|`mtYr>{Q$(npl-Jq}QJp$=M3I*@d$dpQWHLFI#>#K=VLc;IkCy`h3Ms zQ^YaI9vvN9_K*^Rz*8O0Rxl!l9LLP?XrUs+0sqD1A}70q&c+lf`nGJpFSLdiVpESQ z@6qQ62Oh{T;tdNDjaNT+|EF$$CC6nF8Z4-6-*#8HfEO)uVTEZD(q=X~o){Pt};f4b>T0(!YS*+^L`^QjOy7fQ-N2xkeD49)H85j{4$ z9I4iE6a=G_Er@mEjZXzgey?E`9)jW#4Z@KMGkG9t*3ZULY^9xbc;?!yj;>N4aYRRZvO!P|DEc)P7 zIx@x?qWui{uy4XnC3GObNeRE@FZPs7m$V#wHmo{1YAQbY19m6Bf$6WXhuo3lN5mt2P8@8r) zV`C3t(bz0VizPNj4lG1oEa`p^|RQ!o9-B`O$rgU&}zPXx2wYcXDnOjy&T8k(}9h_ zMa^&LV1X0(!_n^|ua!GX>9k(o5$G zehJ_Cq&3;wavoZLX+yJgb+NUm#ibYH%>T(;C_i1P5>w|vca zp3I0pY!w6N9e$0&Ucj2%fx~ zofoa7R(u+F<;?Ce5Gg$_Z!cEQ^5lHD-#h7wdLk3-_)s^Eo~i9!60+_$yY!NA7_>4( z>a!T~p1}?G)`Fgmrsyz5b69j#I9c<_mKL7E=gF^6cAUs~;VxvZuN{;?YfQU6HFO`x zw!ADO5JC0m4?D&9wO=$={$26C%=to8l=94bqBg#H<>-Q`%rT_KB)YLKppKwg>&blb zO~FVi_s9cni~R0;T0A=Ybv?-{qPO8UH4?Pv_1H_w7exmkPW?^-ashg=1A`S#m}pqK zf6!eY7Tgp25@KeH5ZqC#zJJ#6)%n_rHcgS2T?fqEczrZ&65`9;)=#FKcNtvCYQ`16 zvZ4+ReBs%n{>gk8c9y^E#?M$_mb3c8Iug+B9*ool?7q0&0^x><3bF*+K6$x;68Gum zAg2n43|WTPt^KiRQ_uLiA?awhE~CRW@IlP}=Yexy`xZncG}J`NuTO{B9m~J30DOx4 zx?*)M19q-J!&VGpX5N;+^CwN zPssFKKuHAM6g5y&*zN0+#=C@!7LOsntHxh?fxCnl7HyPI7WQ$A<#oM!7f!JCQq&vS zR_!f>Tj?y{n`z>8-R^Obep1oU=v{_zeXkxWfh7D!zjW1mO6w2dbQ@J1+++i?)LPJ} zuyH3=Dduo}6AHez@JamQ=%472l`@&h^9WHIs@qql$ozuL?3jE%(`C$=!UH+%Bmgn? zV8j(tue2}J%~ly(=k}DB2v(OC=I^Rdly5>mgeA4|A58z_^vaw{NvMC7-U*d(jMn%F zVe+q9!#!WI$U$9bUVPcO=`wDw+1;Pay-o~@Ppa2GyfMoYMv%FOAreLE4^HMWp9uL9 zR?5W8B}avi6>@WWt8~|(xntxX5nr2; zp`S*53l9>VAGh;vclV76dCIzFtky=$L|uly{IgK%dhp%8oUXvXW_Fx-Xvf#iao<2K z;IcVyW~=OeUV+c6(Z=iUoo}QN544=J5^0&Ap2l^ut44AW49B|$bry*ZUtx7mV_RG$ zi7wXw+RlJ&ZPY9Vi$gAqiuvGr{{L15mNa{f$4T!qBcr%^3OCld^2-|ZE1V{``2>UH18vEv6# z@6>(6(PLUqS-C4!xFFz6p2-?*VWX24$#S{8pXbDE;RMgM@z`b*AFJcB`T!Cf;L`iGGD>Q+%a`CeVDcP7HK_i+$;R~5MthGUzZKmLSBB07zYWt-{IbjRB8~c?X tK^I<5Z-bf1H5!0>l{3^bBE{B_C) Date: Tue, 19 Nov 2013 07:02:21 +0400 Subject: [PATCH 011/315] Ling buff per request and some coder fluff Doubled default ling chem regen Added poisonous sting that makes around 20 tox damage over time, also makes target drunk and deals braindamage Renamed proboscis into stinger because after reading wiki i dont like proboscis anymore --- code/game/gamemodes/changeling/changeling.dm | 2 +- .../gamemodes/changeling/changeling_powers.dm | 48 ++++++++++++------- .../gamemodes/changeling/modularchangling.dm | 7 +++ 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 8fedb01c7b7..3e7742c53b1 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -222,7 +222,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/absorbedcount = 0 var/chem_charges = 20 var/chem_storage = 50 - var/chem_recharge_rate = 0.5 + var/chem_recharge_rate = 1 var/sting_range = 2 var/changelingID = "Changeling" var/geneticdamage = 0 diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 79511b08bcc..ada04a97e53 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -547,7 +547,7 @@ var/list/datum/dna/hivemind_bank = list() if(!chosen_dna) return - give_proboscis(/mob/living/carbon/proc/sting_effect_trasnform, 1, 40, chosen_dna) + give_stinger(/mob/living/carbon/proc/sting_effect_trasnform, 1, 40, chosen_dna) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T, datum/dna/chosen_dna) if((HUSK in T.mutations) || !check_dna_integrity(T)) @@ -566,7 +566,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Extract DNA Sting (25)" set desc="Stealthily sting a target to extract their DNA." - give_proboscis(/mob/living/carbon/proc/sting_effect_extract, 1, 25) + give_stinger(/mob/living/carbon/proc/sting_effect_extract, 1, 25) /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) @@ -584,20 +584,36 @@ var/list/datum/dna/hivemind_bank = list() set name = "Mute sting (20)" set desc= "Temporarily mutes the target." - give_proboscis(/mob/living/carbon/proc/sting_effect_mute, 1, 20) + give_stinger(/mob/living/carbon/proc/sting_effect_mute, 1, 20) /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) T.silent += 30 feedback_add_details("changeling_powers","MS") return 1 +/mob/living/carbon/proc/changeling_poison_sting() + set category = "Changeling" + set name = "Poison sting (15)" + set desc= "Poisons target and gives them brain damage." + + give_stinger(/mob/living/carbon/proc/sting_effect_poison, 1, 15) + +/mob/living/carbon/proc/sting_effect_poison(mob/living/carbon/T) + if(T.reagents) + T.reagents.add_reagent("plantbgone", 10) + T.reagents.add_reagent("changelingsting", 15) + T.reagents.add_reagent("impedrezene", 25) + + feedback_add_details("changeling_powers","PS") + return 1 + /mob/living/carbon/proc/changeling_blind_sting() set category = "Changeling" set name = "Blind Sting (25)" set desc= "Temporarily blinds the target." - give_proboscis(/mob/living/carbon/proc/sting_effect_blind, 1, 25) + give_stinger("blinding stinger", "sting_blind", /mob/living/carbon/proc/sting_effect_blind, 1, 25) /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) T << "Your eyes burn horrifically!" @@ -613,7 +629,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Hallucination Sting (5)" set desc = "Causes terror in the target." - give_proboscis(/mob/living/carbon/proc/sting_effect_lsd, 1, 5) + give_stinger(/mob/living/carbon/proc/sting_effect_lsd, 1, 5) /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) spawn(rand(300,600)) @@ -627,7 +643,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Cryogenic Sting (15)" set desc = "Cools the target, slowing them." - give_proboscis(/mob/living/carbon/proc/sting_effect_cryo, 1, 15) + give_stinger(/mob/living/carbon/proc/sting_effect_cryo, 1, 15) /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) if(T.reagents) @@ -637,8 +653,8 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","CS") return 1 -/mob/living/carbon/proc/give_proboscis(sting, range, cost, dna=null) - var/obj/item/proboscis/P = new(src) +/mob/living/carbon/proc/give_stinger(sting, range, cost, dna=null) + var/obj/item/stinger/P = new(src) P.sting_type = sting P.sting_range = range P.sting_cost = cost @@ -646,8 +662,8 @@ var/list/datum/dna/hivemind_bank = list() P.dna = dna src.put_in_active_hand(P) -/obj/item/proboscis - name = "proboscis" +/obj/item/stinger + name = "stinger" desc = "Thing chanelings use to sting people." icon = 'icons/obj/weapons.dmi' icon_state = "sord" @@ -661,23 +677,23 @@ var/list/datum/dna/hivemind_bank = list() var/dna = null var/mob/living/carbon/owner -/obj/item/proboscis/attack_hand(mob/user) +/obj/item/stinger/attack_hand(mob/user) del(src) -/obj/item/proboscis/attack_paw(mob/user) +/obj/item/stinger/attack_paw(mob/user) del(src) -/obj/item/proboscis/dropped() +/obj/item/stinger/dropped() del(src) -/obj/item/proboscis/equipped(mob/user, slot) +/obj/item/stinger/equipped(mob/user, slot) if(!((slot == slot_l_hand) || (slot== slot_r_hand))) del(src) -/obj/item/proboscis/attack(target) +/obj/item/stinger/attack(target) return -/obj/item/proboscis/afterattack(target) +/obj/item/stinger/afterattack(target) if(!istype(target, /mob/living/carbon/) || target == owner) return diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 68450590a44..99d963e29e6 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -138,6 +138,13 @@ var/list/powerinstances allowduringlesserform = 1 verbpath = /mob/living/carbon/proc/changeling_lsd_sting +/datum/power/changeling/poison_sting + name = "Poison sting" + desc = "We evolve the ability to sting a target with a poisonous chemical, causing toxic and brain damage." + genomecost = 1 + allowduringlesserform = 1 + verbpath = /mob/living/carbon/proc/changeling_poison_sting + /datum/power/changeling/blind_sting name = "Blind Sting" desc = "We silently sting a human, completely blinding them for a short time." From bc6e79b041877cb7df9158146adcb61407532745 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 19 Nov 2013 08:24:56 +0400 Subject: [PATCH 012/315] The icons and some inventory change Since my personal icons were considered ok by some people i used them Added new one for poison sting and tiny tiny bit changed the older ones, also proboscis is still there just because Also now put_in_?_hand will check for ABSTRACT flag, things with it will be put in hand anyway With this even while downed you can sting someone if you are quick enough to do it before sting gets deleted from your hand(100% hack but whatever) Things like not dropping items from hands completely and other stuff cheri suggested to make after we switch to v500 If you will find any bugs just tell and ill fix them Thats probably it, ive done everything i wanted and implemented everything i was asked for Now will hope this PR will be merged, would be sad to do all this work for nothing --- .../gamemodes/changeling/changeling_powers.dm | 16 +++++++++------- code/modules/mob/inventory.dm | 4 ++-- icons/obj/weapons.dmi | Bin 23510 -> 23662 bytes 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index ada04a97e53..4fe4e610e50 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -547,7 +547,7 @@ var/list/datum/dna/hivemind_bank = list() if(!chosen_dna) return - give_stinger(/mob/living/carbon/proc/sting_effect_trasnform, 1, 40, chosen_dna) + give_stinger("transformation stinger", "sting_transform", /mob/living/carbon/proc/sting_effect_trasnform, 1, 40, chosen_dna) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T, datum/dna/chosen_dna) if((HUSK in T.mutations) || !check_dna_integrity(T)) @@ -566,7 +566,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Extract DNA Sting (25)" set desc="Stealthily sting a target to extract their DNA." - give_stinger(/mob/living/carbon/proc/sting_effect_extract, 1, 25) + give_stinger("extraction stinger", "sting_extract", /mob/living/carbon/proc/sting_effect_extract, 1, 25) /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) @@ -584,7 +584,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Mute sting (20)" set desc= "Temporarily mutes the target." - give_stinger(/mob/living/carbon/proc/sting_effect_mute, 1, 20) + give_stinger("muting stinger", "sting_mute", /mob/living/carbon/proc/sting_effect_mute, 1, 20) /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) T.silent += 30 @@ -596,7 +596,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Poison sting (15)" set desc= "Poisons target and gives them brain damage." - give_stinger(/mob/living/carbon/proc/sting_effect_poison, 1, 15) + give_stinger("poisoning stinger", "sting_poison", /mob/living/carbon/proc/sting_effect_poison, 1, 15) /mob/living/carbon/proc/sting_effect_poison(mob/living/carbon/T) if(T.reagents) @@ -629,7 +629,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Hallucination Sting (5)" set desc = "Causes terror in the target." - give_stinger(/mob/living/carbon/proc/sting_effect_lsd, 1, 5) + give_stinger("hallucinogenic stinger", "sting_lsd", /mob/living/carbon/proc/sting_effect_lsd, 1, 5) /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) spawn(rand(300,600)) @@ -643,7 +643,7 @@ var/list/datum/dna/hivemind_bank = list() set name = "Cryogenic Sting (15)" set desc = "Cools the target, slowing them." - give_stinger(/mob/living/carbon/proc/sting_effect_cryo, 1, 15) + give_stinger("cryogenic stinger", "sting_cryo", /mob/living/carbon/proc/sting_effect_cryo, 1, 15) /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) if(T.reagents) @@ -653,13 +653,15 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","CS") return 1 -/mob/living/carbon/proc/give_stinger(sting, range, cost, dna=null) +/mob/living/carbon/proc/give_stinger(name, icon, sting, range, cost, dna=null) var/obj/item/stinger/P = new(src) P.sting_type = sting P.sting_range = range P.sting_cost = cost P.owner = src P.dna = dna + P.name = name + P.icon_state = icon src.put_in_active_hand(P) /obj/item/stinger diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 212970e9900..87930516848 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -14,7 +14,7 @@ //Puts the item into your l_hand if possible and calls all necessary triggers/updates. returns 1 on success. /mob/proc/put_in_l_hand(var/obj/item/W) - if(lying) return 0 + if(lying && !(W.flags&ABSTRACT)) return 0 if(!istype(W)) return 0 if(!l_hand) W.loc = src //TODO: move to equipped? @@ -30,7 +30,7 @@ //Puts the item into your r_hand if possible and calls all necessary triggers/updates. returns 1 on success. /mob/proc/put_in_r_hand(var/obj/item/W) - if(lying) return 0 + if(lying && !(W.flags&ABSTRACT)) return 0 if(!istype(W)) return 0 if(!r_hand) W.loc = src diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 8d8f5052c45d5d5b06d5e9c501d2422c533c7049..33a6944aa1b26e63c9f19f5eaa10c27edc5da182 100644 GIT binary patch literal 23662 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 Date: Tue, 19 Nov 2013 10:04:02 +0400 Subject: [PATCH 013/315] Abstract things stay in hand while on the ground This means 2 things 1 - you can sting while stunned/weakened and so on 2 - if you are not stunned/weakened but lying - you can grab things All this ERP potential --- code/modules/mob/mob.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 6b0227683b6..f1b92f15f75 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -713,8 +713,10 @@ note dizziness decrements automatically in the mob's Life() proc. if(lying) density = 0 - drop_l_hand() - drop_r_hand() + if(r_hand && !(r_hand.flags&ABSTRACT)) + drop_r_hand() + if(l_hand && !(l_hand.flags&ABSTRACT)) + drop_l_hand() else density = 1 From e6eab9b7e9a54cc8334ea938d07990cf1fe7685a Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 21 Nov 2013 20:36:08 +0400 Subject: [PATCH 014/315] Rewrote stings Stings are now special cases of carbons' clicks All the problems with stings-items were solved automatically by this Clicking the ability sets your active sting Currently active sting is shown on the UI Changed sting icons to fit the UI Clicking other ability will reset the active sting to the new one Added "retract stinger" ability so you can get rid of any active sting Added autoequip of items below you if you go from monkey to human form as ling Added commented-out greater form, just because Monkeys now have chem counter in their UI just like humans Monkeys have active sting icon in UI as well Hope its not too much commits for one pull request Also changed some of the previous additiong to ABSTRACT items in show_inv --- code/_onclick/hud/_defines.dm | 2 + code/_onclick/hud/hud.dm | 1 + code/_onclick/hud/human.dm | 8 +- code/_onclick/hud/monkey.dm | 8 +- code/game/gamemodes/changeling/changeling.dm | 2 + .../gamemodes/changeling/changeling_powers.dm | 188 +++++++++++------- .../gamemodes/changeling/modularchangling.dm | 16 ++ code/modules/mob/living/carbon/carbon.dm | 11 + code/modules/mob/living/carbon/monkey/life.dm | 3 + code/modules/mob/mob.dm | 4 +- icons/mob/screen_gen.dmi | Bin 112366 -> 115409 bytes icons/obj/weapons.dmi | Bin 23662 -> 25149 bytes 12 files changed, 163 insertions(+), 80 deletions(-) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index a98f1eb2c07..2a3651af301 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -103,3 +103,5 @@ #define ui_iarrowleft "SOUTH-1,11" #define ui_iarrowright "SOUTH-1,13" + +#define ui_lingstingdisplay "1,6:15" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index f7ee1b2150b..d2100810193 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -89,6 +89,7 @@ var/datum/global_hud/global_hud = new() var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) var/obj/screen/lingchemdisplay + var/obj/screen/lingstingdisplay var/obj/screen/blobpwrdisplay var/obj/screen/blobhealthdisplay var/obj/screen/alien_plasma_display diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 04b32735c09..1fa069b8a2c 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -282,6 +282,12 @@ lingchemdisplay.layer = 20 lingchemdisplay.invisibility = 101 + lingstingdisplay = new /obj/screen() + lingstingdisplay.name = "current sting" + lingstingdisplay.screen_loc = ui_lingstingdisplay + lingstingdisplay.layer = 20 + lingstingdisplay.invisibility = 101 + mymob.blind = new /obj/screen() mymob.blind.icon = 'icons/mob/screen_full.dmi' mymob.blind.icon_state = "blackimageoverlay" @@ -310,7 +316,7 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) mymob.client.screen += adding + hotkeybuttons inventory_shown = 0; diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 28676afc1e2..5624617ece2 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -142,6 +142,12 @@ lingchemdisplay.layer = 20 lingchemdisplay.invisibility = 101 + lingstingdisplay = new /obj/screen() + lingstingdisplay.name = "current sting" + lingstingdisplay.screen_loc = ui_lingstingdisplay + lingstingdisplay.layer = 20 + lingstingdisplay.invisibility = 101 + mymob.blind = new /obj/screen() mymob.blind.icon = 'icons/mob/screen_full.dmi' mymob.blind.icon_state = "blackimageoverlay" @@ -162,5 +168,5 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other \ No newline at end of file diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 3e7742c53b1..1cfb4c0a350 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -231,6 +231,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/purchasedpowers = list() var/mimicing = "" var/canrespec = 0 + var/datum/dna/chosen_dna + var/chosen_sting /datum/changeling/New(var/gender=FEMALE) ..() diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 4fe4e610e50..0c10da8a32b 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -179,10 +179,55 @@ O.make_changeling(1) O.verbs += /mob/living/carbon/proc/changeling_human_form + O.unset_sting() feedback_add_details("changeling_powers","LF") . = 1 del(src) return +/* +/mob/living/carbon/proc/changeling_greater_form() + set category = "Changeling" + set name = "Greater Form ON (45)" + + var/datum/changeling/changeling = changeling_power(45,0,1) + if(!changeling) return + + changeling.chem_charges -= 45 + changeling.geneticdamage = 5 + src << "Our genes cry out!" + mutations.Add(HULK, XRAY, COLD_RESISTANCE) + update_mutations() + src.mind.changeling.chem_storage -= 45 + src.mind.changeling.chem_recharge_rate /= 2 + verbs -= /mob/living/carbon/proc/changeling_greater_form + verbs -= /mob/living/carbon/proc/changeling_lesser_form + verbs += /mob/living/carbon/proc/changeling_greater_form_off + feedback_add_details("changeling_powers","GF") + . = 1 + return + +/mob/living/carbon/proc/changeling_greater_form_off() + set category = "Changeling" + set name = "Greater Form OFF (5)" + + var/datum/changeling/changeling = changeling_power(5,0,1) + if(!changeling) return + + changeling.chem_charges -= 5 + changeling.geneticdamage = 5 + src << "Our genes cry out!" + mutations.Remove(HULK, XRAY, COLD_RESISTANCE) + update_mutations() + src.mind.changeling.chem_storage += 45 + src.mind.changeling.chem_recharge_rate *= 2 + verbs += /mob/living/carbon/proc/changeling_greater_form + verbs -= /mob/living/carbon/proc/changeling_greater_form_off + for(var/datum/power/changeling/lesser_form in mind.changeling.purchasedpowers) + verbs += /mob/living/carbon/proc/changeling_lesser_form + feedback_add_details("changeling_powers","NF") + . = 1 + return +*/ //Transform into a human @@ -214,6 +259,9 @@ var/mob/living/carbon/human/O = humanize((TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSRC),chosen_dna.real_name) O.make_changeling() + O.unset_sting() + for(var/obj/item/C in O.loc) + O.equip_to_appropriate_slot(C) //Rejoice feedback_add_details("changeling_powers","LFT") . = 1 del(src) @@ -524,12 +572,48 @@ var/list/datum/dna/hivemind_bank = list() if(src && src.mind && src.mind.changeling) src.mind.changeling.mimicing = "" +/mob/living/carbon/proc/retract_stinger() + set category = "Changeling" + set name = "-Retract stinger-" //essential enough to be always second after evolution + set desc = "Retracts the stinger, making hands useful again." + if(!src.mind.changeling.chosen_sting) + src << "Our stinger is already retracted." + return 0 + unset_sting() + src << "We retract our stinger." + return 1 ////////// //STINGS// //They get a pretty header because there's just so fucking many of them ;_; ////////// +/mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it + src.mind.changeling.chosen_sting = A + if(dna) + src.mind.changeling.chosen_dna = dna + hud_used.lingstingdisplay.icon_state = icon + hud_used.lingstingdisplay.invisibility = 0 + +/mob/living/carbon/proc/unset_sting() //unsetting the previous + src.mind.changeling.chosen_sting = null + hud_used.lingstingdisplay.icon_state = null + hud_used.lingstingdisplay.invisibility = 101 + +/mob/living/carbon/proc/sting_can_reach(mob/living/carbon/C, chem_cost) //handles all the checks there is + if(!isturf(src.loc)) return 0 + if(get_dist(src, C) > (src.mind.changeling.sting_range)) return 0 //sanity check as AStar is still throwing insane stunts + if(!AStar(src.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, src.mind.changeling.sting_range)) return 0 //hope this ancient magic still works + if(src.mind.changeling.chem_charges < chem_cost) + src << "Not enough chemicals." + return 0 + src.mind.changeling.chem_charges -= chem_cost + src << "We stealthly sting [C.name]." + if(C.mind && C.mind.changeling) + C << "You feel a tiny prick." + return 0 + else + return 1 /mob/living/carbon/proc/changeling_transformation_sting() set category = "Changeling" @@ -543,18 +627,21 @@ var/list/datum/dna/hivemind_bank = list() var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names if(!S) return - var/datum/dna/chosen_dna = mind.changeling.GetDNA(S) - if(!chosen_dna) + var/datum/dna/D = mind.changeling.GetDNA(S) + if(!D) return - give_stinger("transformation stinger", "sting_transform", /mob/living/carbon/proc/sting_effect_trasnform, 1, 40, chosen_dna) + set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) -/mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T, datum/dna/chosen_dna) +/mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) + if(!sting_can_reach(T, 40)) + return 0 if((HUSK in T.mutations) || !check_dna_integrity(T)) src << "Our sting appears ineffective against its DNA." return 0 - T.dna = chosen_dna - T.real_name = chosen_dna.real_name + + T.dna = src.mind.changeling.chosen_dna + T.real_name = src.mind.changeling.chosen_dna.real_name updateappearance(T) domutcheck(T, null) feedback_add_details("changeling_powers","TS") @@ -566,10 +653,11 @@ var/list/datum/dna/hivemind_bank = list() set name = "Extract DNA Sting (25)" set desc="Stealthily sting a target to extract their DNA." - give_stinger("extraction stinger", "sting_extract", /mob/living/carbon/proc/sting_effect_extract, 1, 25) + set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) - + if(!sting_can_reach(T, 25)) + return 0 if(src.mind.changeling.can_absorb_dna(T, usr)) src.mind.changeling.absorb_dna(T, usr) else//If the sting fails, give the guy most of his chems back. @@ -584,9 +672,11 @@ var/list/datum/dna/hivemind_bank = list() set name = "Mute sting (20)" set desc= "Temporarily mutes the target." - give_stinger("muting stinger", "sting_mute", /mob/living/carbon/proc/sting_effect_mute, 1, 20) + set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) + if(!sting_can_reach(T, 20)) + return 0 T.silent += 30 feedback_add_details("changeling_powers","MS") return 1 @@ -596,9 +686,11 @@ var/list/datum/dna/hivemind_bank = list() set name = "Poison sting (15)" set desc= "Poisons target and gives them brain damage." - give_stinger("poisoning stinger", "sting_poison", /mob/living/carbon/proc/sting_effect_poison, 1, 15) + set_sting(/mob/living/carbon/proc/sting_effect_poison, "sting_poison") /mob/living/carbon/proc/sting_effect_poison(mob/living/carbon/T) + if(!sting_can_reach(T, 15)) + return 0 if(T.reagents) T.reagents.add_reagent("plantbgone", 10) T.reagents.add_reagent("changelingsting", 15) @@ -613,9 +705,11 @@ var/list/datum/dna/hivemind_bank = list() set name = "Blind Sting (25)" set desc= "Temporarily blinds the target." - give_stinger("blinding stinger", "sting_blind", /mob/living/carbon/proc/sting_effect_blind, 1, 25) + set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) + if(!sting_can_reach(T, 25)) + return 0 T << "Your eyes burn horrifically!" T.disabilities |= NEARSIGHTED T.eye_blind = 20 @@ -629,9 +723,11 @@ var/list/datum/dna/hivemind_bank = list() set name = "Hallucination Sting (5)" set desc = "Causes terror in the target." - give_stinger("hallucinogenic stinger", "sting_lsd", /mob/living/carbon/proc/sting_effect_lsd, 1, 5) + set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) + if(!sting_can_reach(T, 5)) + return 0 spawn(rand(300,600)) if(T) T.hallucination += 400 feedback_add_details("changeling_powers","HS") @@ -643,74 +739,14 @@ var/list/datum/dna/hivemind_bank = list() set name = "Cryogenic Sting (15)" set desc = "Cools the target, slowing them." - give_stinger("cryogenic stinger", "sting_cryo", /mob/living/carbon/proc/sting_effect_cryo, 1, 15) + set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) + if(!sting_can_reach(T, 15)) + return 0 if(T.reagents) T.reagents.add_reagent("frostoil", 30) T.reagents.add_reagent("ice", 30) feedback_add_details("changeling_powers","CS") - return 1 - -/mob/living/carbon/proc/give_stinger(name, icon, sting, range, cost, dna=null) - var/obj/item/stinger/P = new(src) - P.sting_type = sting - P.sting_range = range - P.sting_cost = cost - P.owner = src - P.dna = dna - P.name = name - P.icon_state = icon - src.put_in_active_hand(P) - -/obj/item/stinger - name = "stinger" - desc = "Thing chanelings use to sting people." - icon = 'icons/obj/weapons.dmi' - icon_state = "sord" - flags = NOBLUDGEON | ABSTRACT - w_class = 10.0 - layer = 20 - item_state = "nothing" - var/sting_type - var/sting_range - var/sting_cost - var/dna = null - var/mob/living/carbon/owner - -/obj/item/stinger/attack_hand(mob/user) - del(src) - -/obj/item/stinger/attack_paw(mob/user) - del(src) - -/obj/item/stinger/dropped() - del(src) - -/obj/item/stinger/equipped(mob/user, slot) - if(!((slot == slot_l_hand) || (slot== slot_r_hand))) - del(src) - -/obj/item/stinger/attack(target) - return - -/obj/item/stinger/afterattack(target) - if(!istype(target, /mob/living/carbon/) || target == owner) - return - - var/mob/living/carbon/C = target - - if(owner.mind.changeling.chem_charges < sting_cost) - owner << "Not enough chemicals." - return - - if(isturf(owner.loc)) //no stinging from inside of mechs, lockers and so on - if(get_dist(owner.loc, C.loc) <= sting_range + 1) // sanity check because AStar do some crazy shit and i have no idea how to fix it - if(AStar(owner.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 0)) //holy shit this thing is insane, please someone fix it! - owner.mind.changeling.chem_charges -= sting_cost - owner << "We stealthily sting [C]." - if(!C.mind || !C.mind.changeling) - call(owner, sting_type)(C, dna) - else - C << "You feel a tiny prick." \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 99d963e29e6..f7533b6ef84 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -33,6 +33,13 @@ var/list/powerinstances genomecost = 0 verbpath = /mob/living/carbon/proc/changeling_transform +/datum/power/changeling/retract + name = "Retract stinger" + desc = "We retract our stinger, making possible to use hands." + genomecost = 0 + allowduringlesserform = 1 + verbpath = /mob/living/carbon/proc/retract_stinger + /datum/power/changeling/fakedeath name = "Regenerative Stasis" desc = "We become weakened to a death-like state, where we will rise again from death." @@ -108,6 +115,15 @@ var/list/powerinstances genomecost = 1 verbpath = /mob/living/carbon/proc/changeling_fleshmend +/* +/datum/power/changeling/greater_form + name = "Greater form" + desc = "We become very strong, resistant and perceptive." + helptext = "Gives you a hulk, cold resistance and x-ray while active." + genomecost = 2 + verbpath = /mob/living/carbon/proc/changeling_greater_form +*/ + /datum/power/changeling/panacea name = "Anatomic Panacea" desc = "Expels impurifications from our form; curing diseases, genetic disabilities, and removing toxins and radiation." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 50bc4631b91..dce77e5c866 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -46,6 +46,17 @@ visible_message("[M] bursts out of [src]!") . = ..() +/mob/living/carbon/ClickOn(var/atom/A, var/params) + var/list/L = params2list(params) + L.Remove("left", "icon-y", "icon-x", "screen-loc") //remove all the default params + if(!L.len && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) //if there are still params then its not a usual click so pass it to parent + if(world.time <= next_click) + return + next_click = world.time + 5 + call(src, src.mind.changeling.chosen_sting)(A) + else + ..() + /mob/living/carbon/attack_hand(mob/user) if(!iscarbon(user)) return diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 859a99abb29..002d7f3fde6 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -574,6 +574,9 @@ proc/handle_changeling() if(mind && mind.changeling) mind.changeling.regenerate() + hud_used.lingchemdisplay.invisibility = 0 + hud_used.lingchemdisplay.maptext = "
[src.mind.changeling.chem_charges]
" + ///FIRE CODE handle_fire() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f1b92f15f75..38d3720d989 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -483,7 +483,7 @@ var/list/slot_equipment_priority = list( \ var/slot = text2num(href_list["item"]) var/obj/item/what = get_item_by_slot(slot) - if(what && what.canremove && !(what.flags&ABSTRACT)) + if(what && what.canremove) visible_message("[usr] tries to remove [src]'s [what.name].", \ "[usr] tries to remove [src]'s [what.name].") what.add_fingerprint(usr) @@ -492,7 +492,7 @@ var/list/slot_equipment_priority = list( \ u_equip(what) else what = usr.get_active_hand() - if(what && what.mob_can_equip(src, slot, 1) && !(what.flags&ABSTRACT)) + if(what && what.mob_can_equip(src, slot, 1)) visible_message("[usr] tries to put [what] on [src].") if(do_mob(usr, src, STRIP_DELAY * 0.5)) if(what && Adjacent(usr)) diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index d8ca7ce35fd7646816ab891f5df9c65a7da725fd..89a2accbeea451495d8b21262fc9afef50ef2b59 100644 GIT binary patch delta 13518 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 diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 33a6944aa1b26e63c9f19f5eaa10c27edc5da182..e1728bc3504ba8a0122ae6c6b36119ed0385e29f 100644 GIT binary patch literal 25149 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 Vpsvdf{w)Ngt*Nh3detW6e*nxExPJfu literal 23662 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 Date: Thu, 21 Nov 2013 23:10:56 +0400 Subject: [PATCH 015/315] Further sting improvements Now to sting someone with active sting you alt+click them In usual mode active sting do nothing Clicking sting icon will deactivate the sting(hasnt removed the verb however) Now all monkifying will grant the monkeys what they can wear from their previous form Now all humanizing autoequips things from under you (Done by Gia's suggestion, the quality is meh) One more little change in icons --- code/_onclick/hud/screen_objects.dm | 4 +++ .../gamemodes/changeling/changeling_powers.dm | 3 +- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/transform_procs.dm | 31 ++++++++++++++++-- icons/mob/screen_gen.dmi | Bin 115409 -> 115440 bytes icons/obj/weapons.dmi | Bin 25149 -> 23603 bytes 6 files changed, 35 insertions(+), 5 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 13a02e48613..2a16ab904f2 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -179,6 +179,10 @@ var/mob/living/carbon/human/H = usr H.quick_equip() + if("current sting") + var/mob/living/carbon/U = usr + U.unset_sting() + if("resist") if(isliving(usr)) var/mob/living/L = usr diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 0c10da8a32b..f5a625bbfbc 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -28,6 +28,7 @@ //removes our changeling verbs /mob/proc/remove_changeling_powers() + src:unset_sting() for(var/datum/power/changeling/P in powerinstances) if(P.isVerb) verbs -= P.verbpath @@ -260,8 +261,6 @@ O.make_changeling() O.unset_sting() - for(var/obj/item/C in O.loc) - O.equip_to_appropriate_slot(C) //Rejoice feedback_add_details("changeling_powers","LFT") . = 1 del(src) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index dce77e5c866..bffea2cde29 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -49,7 +49,7 @@ /mob/living/carbon/ClickOn(var/atom/A, var/params) var/list/L = params2list(params) L.Remove("left", "icon-y", "icon-x", "screen-loc") //remove all the default params - if(!L.len && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) //if there are still params then its not a usual click so pass it to parent + if(L["alt"] && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) //checks for alt+click if(world.time <= next_click) return next_click = world.time + 5 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index b1f28299457..62252ab6767 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -2,6 +2,10 @@ if (monkeyizing) return //Handle items on mob + var/obj/item/rHand = r_hand + var/obj/item/lHand = l_hand + var/obj/item/Mask = wear_mask + var/obj/item/Back = back //first implants var/list/implants = list() @@ -9,11 +13,21 @@ for(var/obj/item/weapon/implant/W in src) implants += W - //now the rest - if (tr_flags & TR_KEEPITEMS) + if(tr_flags & TR_KEEPITEMS) for(var/obj/item/W in (src.contents-implants)) drop_from_inventory(W) + if(tr_flags & TR_KEEPITEMS) + if(rHand) + rHand.loc = src + if(lHand) + lHand.loc = src + if(Back) + Back.loc = src + if(Mask) + Mask.loc = src + + //Make mob invisible and spawn animation regenerate_icons() monkeyizing = 1 @@ -29,8 +43,19 @@ sleep(22) //animation = null var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) + if(tr_flags & TR_KEEPITEMS) + if(rHand) + O.equip_to_slot(rHand, slot_r_hand) + if(lHand) + O.equip_to_slot(lHand, slot_l_hand) + if(Mask) + O.equip_to_slot(Mask, slot_wear_mask) + if(Back) + O.equip_to_slot(Back, slot_back) del(animation) + + // hash the original name? if (tr_flags & TR_HASHNAME) O.name = "monkey ([copytext(md5(real_name), 2, 6)])" @@ -123,6 +148,8 @@ flick("monkey2h", animation) sleep(22) var/mob/living/carbon/human/O = new( loc ) + for(var/obj/item/C in O.loc) + O.equip_to_appropriate_slot(C) del(animation) diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 89a2accbeea451495d8b21262fc9afef50ef2b59..1123fab1a6036b7e1d8c8175878c1552d467ce8a 100644 GIT binary patch delta 12884 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 G{QeI~7tHMd delta 12853 zcmYLP1yGgI)&)dK0}x3;>F!Xvkq+sW?nasq=|)hxJEdDXrMm^`?yd{(@ZQY--x+6M zc z>E0j{dG!Q~1NFGh-c$GvP8l{F1kO)Sp9>1KJtc>q-MqWU9r|L7tB1=mdRos=Iy?07 z(gD|_`R}j;qc76S-2D8YKw_`>%uJGs%F3K}RQACTY+6JU6BA5K%tAs~L1+uq(jv51 zTc_U@!iCXR@38R+t7Qu>xYUWi2>qY>xb4Ap+1Z_7Wy`XI3B?($r!|d~Cq?Cic#=Me zTR`S3hVx@)_1A+<5SF^-nr@1GkHi&uJ^z)Wl>4_gKJWCbtOhehL)Dr+J{}w#%*@V8 zM0thcFvcq43e2BtpP}c;ru1Dv`|}A*Ul0Zp*-82Nb$8S+`)EsTua3SH>`k}(qg}6r zGRAY-5TW5Ph!iNDq&?gP24hj0Bk6x>OM~tuG&JxR7Z>+tD+6(KT;K&?)qUN^r>3SR zqoA603cBc4jzJ_GOH3 z?H+bp?{Z8sU83DFH5I$JXGup-e|z{P$O+5M$FBrfP{++pIb_ z2K8%HOe`!5`afjs?339OPd}?Qx|C-!@Ct}?b2H@SY&X?z?3N~Qo4gpOlp)E?_Odi0 z{OA!ja|%5v^IEMz8uGe|Q2UzZH(J`h=U+}SPb|V5m4CLVd3QQYcYge(Jc*zs_AWyg zZ(|WMn#hY&RhJJ5gz`)z=_5*2M05%i3tY}d#Xmy#Jj5PH@WO#F*3Y)b{Q?6Ww#Uft zZ+02++0Dt=KkiSLroApH9X0(VEloyB>f3UE6MA>&QJ}l<4|*8HlH+M>_Pj-Y@j|RX zsls+yh#IlEt}cEv)m_&7?a!2yK>&v1lM{rhUtw_IsO8mAwdgCvje&%Yt= z?mtpfhaT=P`3w9KK71TbU=0M z|FksXo(Slz!RAnkca4;&qa&NYzrW((7(iVjhgC>rB`bh^=g`oL7)kPT9m|P)j3Sj^ z?PFunCaJDsm@V<~xX;jW1(cLttEi|b3Lc;DR-<(Lyj$AX==O$x^1*TI6{TG2+7CIt zFIPv)bXs-aFZSoLUcdHJEHDJ0813?w$K|{6Ae8vU%&fQ0ZZ)1m=62fL!-MC=ix<+# zAEN&L)dDaJ4h_wcOXIt{n72_=Q!6tL=eX1S%iZh+$XW)iVd_dz~Lg-3Q;{V~ZN*Obxa?xTj#+(aHsx z^T><#EUpCkB5_Yj;&;mN!$iJ(c@HRL_3C)F@uZKouA#wxe~!Juaa%}41Tp>Bex1{< zisI+bu7^#RE_cU0^|s3hrHv=3fCV7Mvs|^!3h_uHkBeE8tLy8i`1nskLI`mT+U?!l z0WA;rNl~QYC+l&#V*mqUkwlLS8qZ>c3T_thJ6AC1Z9>6U*_}7L)1|8iC04X!d2+ibf?S_W7Y;0X)59W&IHr zhW_k1e&q&|8_n+fi}}1`{nkhsa`i`Z1~RsX&67;!xY^DOG_C|hLQzeAr?5!p6^cQh_%7P z!#5taqg7coJycX%kbJM|0D-*R~m(JJVpy88NZP;len)Iq@3S9_Ji z@x1OF%gf7Q`0S|uLV|%W-hxVSF1q;c&qK9Rle(Q`FdrWT>&3=iP^7Y|sx<&rLnEUv zHa5cn&k2q$E;fJ`j5*W$t}RdApqCQKetYq++wp>LFfC=0h+Q^W05+hc%(g8m5Nt6fKy(2|X2yb%Edv z;8cpeqtmMs8y*6LI@^3x!swl+VmDRiiAuXby?Td+V&^94G;6|u5HP!)nIa0ld;cCD z+*Nx=M*^Q`1KGRz8Y_d|XmZQHbx{&OD9T+=jRBJfieZ>^6s6tX07$|(h{5i_!XDK z5*KiXMNxMterwEjUP+6l|Q zo%Fh*AO_lo0;`frUC9cnBUZ!n9m#d1zgO3cwl0W#sna@^PxUN@5DUcxZ|~{U1dJ2$ zAWx4Vr_M1)iALhnrzLPO!;XOGWAOU>QWh2#sAy=jznvMObo#Fzz(ZJCT9(z+bdQZ; z#z=OB6L9_+9^M4NlTIyOkXE6InVFl*95pSgt?d~emZNbuHZ!B%k7GBV2)aJqtb`uC zz^wx6jV;Xf=8(@#Plp?sDtm2V2mn*t+0!ExyjW}VFIOgs1ISZ!eEgpVr`_x~ygu(< zy?Fx#2xX+({A+H!n6s#|oK-ZJ=eC+-q6~P1S5c+7hg1A3dy$WH7a19wrq(XF6%L>WXAxAVj1#)H5hGo zr|4CR)dX9-U{nkY-Q(j}I5;@XFz7-P2;J$_U&7 zN4ppm zDQN=W_Nb^R$AiBKPto3t0Mh5XT6!{+${VU!07~$blaq7XSxPLe-^`5g_Mgqz?)3A< zaCTj2a3Q*VgQR@(!5DDQvAc8BS*pWu;CW*>X`oEMvqjK_bDH1tT`%LaqMXGAKd&uU z_hoMBc{C_Y5It=IcvAaG*^F|P!4bcg^6D59_`n4X@T933COXJYz3 zt>YeESNEa!ba$fQ$In#`(~)7%Aw^R)P(+Mg&o^$I^- z2o?kS955>bL&U&oF#m(Jq9P^(1B2tv1PW*xV5R}Z0N>HrRQ;cSqUM|RHe0;LSga48>O^d=>P zCqwvTNQ^aH*oDIxk!YdA1Iu|J7;F}heY|~rpMd)(VPjL$$W7vLWwDy8TK;|5Y_Qnq z8uvC09v6~J8;YgZ%pQ7@CzqD{$dtHztw}b`62K_gw7@vJy1ERFjVk~gHilCAfl>ka zj-psCE~Zmdtdbhq-rk0z(``-$6e_Q!HBdRsCk31#fS)1gb&u=yI5iCo79e8OjH7^^ zCyP|a!Kot%Keo5|A}JIoSeVZ6AWgKip?sb<@@i^9KYn1L`uo^GEijc6zc_l$Zr~`?et)G0 z);eE_<^?ey-8s(L<>ltzdWT|-YSeHsUrMIy=aK zhlj`IpnkKgygUQ6Y@vCjUYn1`O|`X}maJ5V!Ipf@!Q4~RIC!TxxIDQ;5hbOci`h1G zu3E_+PNc5{cY_`GCYt}ETzi!>hNR)b)39U^pPf_bz9Rj`Y;8>!K1Re8q~An7(q(Ne zf`{0OE0xN5d2h7ya-B4iM+gAJ7IJdRk&0s&h-dZ%Jq5g)#dL{ijv{a&a=>B$C0@Td z-&MSQKf0<}ZH`SU9x zTI-abST1`r%wnJ!fxA0CK5iQtifC-)0m6sNFi=)-qqZ9Z zc)%_L#sNkYL>P7s4#FAoWu~Jfiyo&kii(QB1*e0fd7KV%dR#6zhv72&fce-g5<;(P zW1O0r5)l{A0&^v3`^T{!I9N8InLsjDmzN(0=EqjxwEp}3;tvZ83of6>2VIZjr>w>U ztzgP(Zx^DFP5xwW&oW)A8yD-=1#2MUbvruveHa}V*Q06E)Ro9?addf^2fE90p&>># zg$w9L8(^8TiVA22i1$DWcN|y+_^}UeXH*3R1;GA{)Y%yTfJqn{l7XK6a=J07$j_gn zC;@1W*z*hn*yE5)85x;%*yTU*tWn$hJ6CY*kDfPdpdd?2dS0OS8ty$?@~BILYKZ6I z;D|FNLc8Yy1Kf+50%%}#?kn{#>S3H zP96Y#>vG(M^LTV-W@g2~Uck$Mi^4#Id)}O7JPvHY&H4HHy~4)s0s@1}X8LM8Pp${t z9FRk3EL#FgHjPgP7*ksZ2U0%1)Ov?aN%Enwu`zj?n5&zc6W|tX0U*KW=4`Y8KD;{{ zmjlWIj6|?x&I-th29iJicvQeYe?Hw@>;w5<16r2M?fe3aFnW6LfDI*QWBUnaqwxwO zsRrjmSpcYo2B+0t$}~d=7?5J^-?1E4b4z=B1E4hoZZG!Lo7~tPHisVH_Llo=8Srgx zmj^OHdY?Q)*So*FPUdn70d=wiR_Rft3qI#Pq811v`y)^R!C3xlP66mW1+kdEfq`#P z5iP1e0`O4l9G~yghZ`e|0z%}BS5Rk zK(T?smgqF~ISljmWC#b^+Sx6GM2V7|Ty#f^QMg_qTsfnHm%=VV)|sU_ZBMnPhmzsP zPDqBxM}-vS46aMY&-_$@=y)VCgP2J%#zsa8KqWx$wgb(XsW3v5gZQq=fOHxiE;cFZ zefrnz**iG6etX!0v;;<*m5e|l{o|FcM{5?R>y-c^Gc$zhva&}40HAU>-%&m}J$2nF z$ot?VIZuBLlmT$}*TcndfB&a=czA2;>vlJ1W?=61`~91nfWtB!5L#VbT{<8x&}cL< zk{S>uA*(Su7&KQvh7?B3p9&nvCmk@3Mfu3TApFn@a!KF=Hh^3F+vxfO3`mvwU8rze zU-v$_xpDctV{$ptdt|EZ@w~@)<9es4RK7q-I+Z5@@L55zI+)RbiQNDbbvhXK6gw?J z^7avUG7zslW+wv!kTft#N9X6Fplyr?aObMbI@W4Z6QZ8eymoi81e7 zp9WeLotPNX(!yWbat}5yucXuo&D*pL3cutfTgL|xXyT)r2C>%8WKqtRoWD?;KN^m$ zvvXcuotk++8wj$j|JFUG1x2c*-TnPi<|j!>N&O=k!n=DoFdgyQ_TKd>wq}iTA-7?h zQ4$d7bX<3e+`XZvImBGgasqgglQRy3RBWWd$pS>yTXWS#hM)dEaD!5Vc$)$UF#y?Uz5?l^W_N|+n9bMFgUd8I zhE}@h#wEP5$8msCKUxb335jJu$%-T}08=5Lf#8i@3kxa0$W=HW>VR(A2IiI5?X2~& zybrhk8bJdAgE5jLg>!NEZ@9{A93UV&H+QVuK)j&0sIszBr)?K7G6;x4LY>N%3PhC2 z@Xsp{Gnp+kKLAqK&}{jfgM?SzIexnVpLd_68fjuefDo;$uFisy0@!IbtGS;c_D7ihm2UxHvEm$rn3`AjT%!~8SIV{##?=6 zOX}q&!f&htuq0T(%a`hcP9a|yC#eIh4q!n7jntcC_4) zQ}wOJYMupPO^GH(=^O;vZ$_rvl0hz%!sSFlM~BYH$Y}Pk4-l%zya$45-{fS%M=BP| z_+Hq$H&-nsnJ{9?2J)~_unY+@0WpGW*^Pvm3ZUgmLaPvmv=r90xSl$hAF$754bA%i4M zr9>+j5L+bQ4HXd)kygFEKgdBO_3wd>Fga{UM-cIbpdpDK49zTIh9%8|(=g4^N}4 zsNU`7xAx{gyrvrFGxrNBPg_G-bJ6;^CB>e*CF0=77LOlKTwXq;8z@`@0JBtwhszL* z({fD1;o;S0bA18P&Ezc|QyD!LU@yG~TeX#dh90&b%I z)zs$Y!@K#or}B_kZt5s(*yaQCL@Yf)5=VJMjRs<$MD&$*~b$`P*pS=CWD znOXZ&(@*r)wrHcSM7>EQU9^3TS|myTQnT@mwT%s2-e&Ma4uU#~AE&kM=C5@Jb4%$| z^8Q~J+Js~;tD0LLkY=0dyjh-OF8DNFezp?w1}1T$57O-b4T&ua+>;=r_vZR~Y12fR zKI#5m-KfM&T5TbXcyKgj8JKNUunzeAu-e;GqX?|0gCoM4=WWwI%glKUKXXfVQPRrA z2DlElQQnuqPA{TyLvTYfx4!HUkzzVJQm*g@UnUYdHSgg{=9eBm2v#worAzyElrgH) zLznN1usT~jEOz-@T&(OcnY8T3uv+e0QGV%N-`W_S7akbTCOxP$j#_MNKG|Xn zBmC>Ov^3@W`L^GN&vDgv7vX1!wpO365ihsDPp(Yjc2lXqx9&obrinV#b@g%Ue)DioPd95?R#G;`68D~*5O?McZ^n-9iD0na zAXKzNq9%5SUQ(d_f}VG=t$;QCJc4V6-_N8}&@pvC=<+Df)^uJSGs{>e(Sef@$}3*_ z>0&#WShHkpU2{g|8Ma*%@79AVlwg66CHflG%rbL};-56hR;x}lCZofVR`%LD*9Rwx z11JvxoEx<#XPX?Sh+Ws^R7_ zI$D_m;Qy{q7Un>_mKkq3OMO`vYwUE`^-8(XAf{x zhlv$PGjOBlcRT&3^+*>>vG_cFO1|CUwLj@(hG>q*n08RiyDSidiHY^kxN?KizP^;_ zKVkdGEOF>$LP`eKi{j ziOcUl)!dqwn^fYKzB8RWlMj!3L+8&Hb*-=nF>`ZU;9kO0>fKG2J6S{Vq|(V={;j{> zx}H0z{@CwFm=VAb%}b4g#VYQ6o8;nJ$aiWI*ml*1(P_9a#GCBF_IznuiqUSX!NW4_ z`+I_dPl(mHmy6OE{QUg1lK2syvUMbL#YVV2vMQxI_>YQOjOg#Co(b~AgSQkojee^T(jKO5_Q_dliGf6%fLcd-QSVD^AT>J zSnY9ritgYi9QP%jwCc33{mQO{LRa{WK*El^$qHpAsgIjMKH4#s|L`BwmvAsCKAS&6 zb#BU+m~y2a80hGKKj|$Yq(BZTiDX_ys!o*Weacy1yLihd@zS&`Sj)coYbS1$aYsESz(2)GLmMKs+M z4|uIt=DM>Ux5@IYA4<9K;RkkJX8RZTO6?IhpsyBPA$bEPGFC`SHGw>5te5NcQmH%^ z`Z4OT$Ps4#IkYtf(D}^41o8*4UOzFA#^yH&a5ClO)Oq+@9%-5=c zH#KQ^Mb-2XGli7DrzFKQlrlv7ZdH(*kmfcVIK@%Ut`~^Gvb&{0l zd|a&d^F>y1Z;P%cKSkv?ys}A-Lm7|nMKFqgD@?v9QvHPpG1GIZ;PbwI_uM-4dehOr@uD|MD<-F7Svq9fB0%QhUQW5{7|l;<{OS0&SDxv zgmy9w{~x%|5XHm$UvCN`?<$K`{PHp^p6d!$zLBd7@jsy_+OfQ(w>=k9#pV% zVq)~;;k!!c#7b5P@-u(Gg6BV01~X_@u(YGT#)we+_?47%KV&5WgITQa0wd3uL5#KVr5ZHHv zNcP=orrou1IN&`fq`xb^6AL34%v!A|X0dDGF2 zm6K{B1JVDUs)NJtos5pEKdejZD&;^%pWx8?YCooXKfblsPA%D&FzL@}Jl?=7v5hiz z+E9jT_-=L4`kBxb2!93k+jbn@Hp@BoFL_rS`cnF+5M49XJJuZ6U5-R+qPfn zL@|A$6DH#BGs@GJ5xJ{d#PjkuWC&BJ$LFD3Y!wDSs^DV(Vc-{}7 z{!cQN0nB6FEscJ(Fb}?E>#jqO{s6U2qmLlgX+`a-k~3qw?1?nn}G)F@>e z!q#v+MHjsdxD97){Gh$RysQwTi6Gx{y^*B2BN2|e1XB!E5Xl~1_97UV27_Rf5s)MC1UH#?56)XM#s+60BGY&x3_`7;G1>?kVd@#{AK9QCsd zzJ>Chl+L0sxoFw*SOM@DUiE!1*=~*@)NLMT+hsQ)RwiTR;(aofH{dCJ(H5h7ajC_0 z=(p+Pnz@vKk3ILDRN%=I=Quje*wt$ZcQ2)Ak_?E~K#)nE<9Q|rZ^d-?(E9YL;MlJ2 zFcNcjSCWnJw34mLd4VLph%(s6G3{YI8R3(mMvN?Lp4yYO+rpVRp5`KQp*jr6=QgPY zk>=oI2)1!?iUs3v83&?#Enij`*hgaovWla$c6eS5)gXLvV|!?9$dC1|UHJ7_Ay#SM z{7~MH9gdWyt&kw@KnkUOWV|G$}_pgrQS#3;3=^>f6 zqrh0bs>9TR3kzTHt%&N-&`?OnwOTmtTYn5vBlzM`RBWuuvV*}yK3oV!+KQs7jJWsI zl#_*zyQ?M3r0@wsff}OdvBlORvC^+bb)(*sm~$*PXzZ<7ehzxK@};rCBOj==MMR5>}hw#@{SoHID)cN<$nNBHM`0S)MJox^J4SKxw< z=Vs~&BbbYL@)TA+Lqj_Y!$3l^9V5Y@O!H{Vb$O;HdjH*;mBIB54TlsG2?Y-=9DnbPAgf=Yk?eR>p+rIyT}hEvf3j%OZ)dcz*3v& zt`TXlSxJ1&;uedvP?(AKjB>|i-!ilQ+blaWnlf2qRZQCGQre(obb|B?IrcJv!u&b% zE8-@x(qFdHS*+%9?I)u7G#8>|a-|}7VL5_9sb3Vyr!n_S`ClfNCY_i+SB5h(+zG!G z+zMMhOoK$7P&JcCe1K;#`>XcAGfIldyoY=Uwjz&Nk3!*U%FA^g74Z+JKG0Z3Q^_sj z4>5C#11Dz^K>X9C?)}})oIB-hS7Ge{sh%fX2!;E|Ev(g!+mlDBgDH2umwp931VI`0 ztx01JGG`k5c4l+d`^@1(`SfO%XGo?cSGdoh-?)5<4TxL=7!e%yD7gG3D-lQCjV(bz z$UnL@qLHY2e*>jvVOiU35pnv>t^HL1e7h3~hUqDNqha z;p{%>TANEp1P)Q~^H9Rvu%pAc=zGhlDp5Q;)_{X!XQ{+P{9WY3rHOiJIRU#9XS;9E z&E?@}%GpfGllcX%WJ7(cl;<|!es_rD3X40I}^a$2# z4DNO`p#s9-b|+B1&p0Ig$>UXK4)&0P1KBY(sRuF@oWGFzK^-K(JPt?FzAF0@Cs>ZB|AhC@#<%oV~HtS;Wl&Ht;ired5+jG4IN`K)A&3) z7ZMhdjFgj=Mvx>G^4EVp9C_B3VPyhmf9fEZ7Z!ij?0EnDS0K5Y&d2)M=y>XUu9fEAmovoP?^FPjfuVi}5(QE4kp`1(Vahbudn-wpMBew$`x z4)3g9mKI)+f|#}0qh9?M@(s8!dMq4LS-BY&+RYCE8SuP&lWvYV+isPfThEQjxqqHZ7VP+Io&rtTxOHjn9Ksb=~3A4l)LJZ!*s#UJ&t^Ms%o%eHYOE8Er$h zgYu=G>a`IMkHIuYmlt);tU_vPYP-$*Wo%S^PtS*!nXqT?y`NJ}>QVn8q590u!eT7} zCB$Ch*jvp^c=AHl$y-roal(|cjS`|d8k6}~i47lJ*@H`{g7v8wV(^7kucR?}9hfMN z&S5bAKNkdkaIv_B6)rj+|8DkfSiVE3hy@w_ei!fC0krvtjI_-iM=XCR$V2oMWLhSER4 z6aTFU15Y~=v@(8E>{W59vakrU6xFV5EK&=%gs=vhiBt}XVk1IzR6;V zQirv1&`W!6*>B_SWQN*$&Ns((zau3j1>vg-b(K2oTNRU&Ew6NILb=B8l@DY4jR@V- z3Z~+oa~wwKs&CfwpI-tM059l_dH%^j*z?aeJn#f^rj&XXCZ*mDnEa!s#d}S+gBML~ z|J!PWI)a)mR+(u>ZQj)U>nFNn`{ueHyW?M#yKRjWA~Y@)z#hfAKPY3i7KV6pQ2zQU z_OGU7Dw}6OVb`^UUzh8d#b!uX&$K{%ZRby!SEcmx?1N2AU}*?1;ntr9MbA^VwSj1Z zNxW`OS=Z6meDuk$fv?)OjA4&w-|%WTglBU`kR>F^?}GeG7dYJ8Qzv!#Ck35(GOuDN zeVX5YG5-f9>J|h23C8+5C0BIp+1PHTIn7_UrG*^k`se}usV6M?k5IpkCw$6P)WWf3 z6rXkBWcvw<*LdCP;NCvblsbjeK^tm6AWW>x>oY0m-trI8>ctxrSncZ=Y%@3LQ$m@vKA~V?CFL{ea(a}1e`mAva@rhL%QY>F zoWrY{<}RjdzJ5jgHJkp-7G|8%D`eUS+f_`hrOXonUHS(%?=QLh0+}-mrOy0T7C;Mr zrKRv$n_>4(WZSDp-w8WkZA6%gJVkXG?jmoUco%w%Y#mJ+%)hl z=a5?y5^N^6V2{23Ctl8(Vqd_OVy^~jHEk`zL;>Z25nVbe+-ZUxkBb;?PBM#s^L6050${*>B{O# zR#(CrxtP24qaC^*v4Vq5571u{X(I5QPCy(HsYtk3SXp1~>`<7Jz3a8`kMwCa4&WPb zy7Q-}<;|)K58xB^AD4P(T2-6KPEb}|NyxO`Rl+k_ zfmG{I_Yusw9({D*61m_BLhslvnoBO7*XO6ObA_%h5Se?9%%>AIFR+?gve%SqIy>`` z)HU$6eb^>za3}GqjD0n<=A>EGFsnVy2^+c4rY!RnUz<7|v?%`!Tzgs*a*{vS`(JXx zbwf~tu;F*kt5m%+X7I4O3isecYNpeWhEx}J>0W-mgex-F#N@brfe52i8y-KaIeaDH zB0t$bzK-Q`mt;B;hDps?i+4!BQNpBN3jGP5dXwenldE(DvW#A4*weZnXHi$ zii^cBY$H;>8q$lPtbDtku?r(7&pSyCHX1SSYp$Ozw)r2$BDfLh{hz;DZ73t^s|7wnK0WXrG zs-fZEv7|Ml+jE1KN2zM4q6L59Q2GufeZV*Pzn<_V&BIIlLXQ!x>;ii@@RAUf6)6$Y G^Z5^b^p=YN diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index e1728bc3504ba8a0122ae6c6b36119ed0385e29f..76e5411395b0dc7f592ab3eaa66dcee88f0990f4 100644 GIT binary patch literal 23603 zcmaI;bySq!7dDK~&?z7(BHcA00@5HQAR!^mkfPK8N)Is7f`BxNl!%}-NJz|(Qc@}% zLwC+lL%uhk@AItRZ>@K&_Yc;6=FFax_qopA``Vkg26~#5WXxnB5QtLiv6>+W1h&2T zBOwB6BJB#EfIxVLfyQR9)tp{Ac)#>~{SxK@0{MR`e5MOq6r)y1f!fuM7jwd2=>IG& ze#SC|Lhv5H_uumWTxHaQLaS0oh?Y~D&?V)ay-7w7f&!D3e1(RVM{=6w|WRtLp|_UX)AKjNdO$>b-qdEWk-Q2}inIkOi-GxB0h zkPo5iQW9#}{9R{Jj(-;Kr8M$QBnTLMw`@ndyCiRL=DuHu@v3Q~iJQ(_N!vEgl*AQ# z#<4DbSa+59G4;!@?l-IwF-?GiK2@lF)5XgkHx~_8cq2f7=C;2Z>)^OY`H&GZMasl) zRf(l2R;Dfy>hr06iGsEMYH1vQr#tQgn~T4@~d*FIM} z=MP{h@T<0tZuR*H6`k<^!xPcyCHTg6^LV7Ig`|WObUP=lPFRQYSa#i1Z z9n`SXxy;mn8AJxXL`w#+Z5tx>`2E*skudYNz5pS?AwB8wJk{DaXk1JhFH#A2UA&-TPKT0kInkd~T? zvHz#->;Qiwleun`^sIE=kH|j^mQpH7WQ!E{$==@WyN`%rPfb#Py7{;btQMg8G+Mg) zCnzD0f?YfAe(}1cfv1iW^_{Ll1M0{}8yY9U1Kx8=fA0Qy;GS|k7xZWOBp^r8ed+-^ zXjkDRCFRwSjOp;kYj%<__EgQTAbj8{Pk&oXg_?lxaVvoe_5I}3)XuRA=+O3MJi!xc z0uEX&Ev@a0mkLQKDfmIRdBL;K?ChdQSCi&Ma@Okb#y%NId?FCL-KwQG{r>awX3VHgM%6zZMlk^okRim{AOznw9a3=t zv}eAQ@n*lJh9MqGB$z{$xzaCm-RT?Zy8!1UqS#I(Uz4C8BL0n8`G|VbAtmyMUo$SUEx?GZ#J!aqC|F#Uy*F|Y?pH=x4E{f%0-V2=j%2tqb zS@HqsW4~YjdRlBc`WX_R=-Bi>kwF{A!WTGj4Lr^Tkt|!7@+Lb@l;ynW3|FYZ>$_IE$O4A3n;LF3qu&PfN z)sKHOJHxSXur#e$Z^p6?h6mRe2G`NisS3cZ`eJ9ll860QnGA1A283RMQ{Y-iZfJ6a zP)~hc9>}uZ!{;HYzaH^lC8W1rsE=`d5sw#_42bOtpmpOO2s@ddtM)Wj!{3Ms+a^PR zPPTF|gufq&d>1FL8-+6_?cuO%a@^3oII_(D^c^bBol9F0Ilf1ohH&`sH1l|R=!C2GLb($dU6(P8EWX|CKO02)l z+ipsU`Oj6`SCT4vRtK^oA;{CuCZv44ywxF>XZdw?&#K2D^9V$(g$Vv{jIN&EGkCXa ztwkLC72hhqD75TZzZz~;@Ap$Hq(#{nC)!<7GPd8eWc2=1j7HQIy! zTdR;8WBPw&--_S;Pr&IjobQ*L=av^T=y;n3dAdkWKt#kTAn+Ev>OuT-nf&2H+Jp?a zx_|Gu6!ax7c0ako9r*`CzrX{Xh8L~~wd)}3aJ$0LB!!@3l2@z0?G6qOG9{dEk&}|X zvBD5ey#xc}WuT`gMChM{`-B{}F?FrDW>q{G!^MS#0RsRUGh53*=9D+U-LYxEWUp-p z$^IwNtRc5OS)=(_Utd#CFQF7@i-|CQ)W!VeO92cP+g7sm1|yJ*QIKF08;V*I|M#0Y zUZca_-ae1Y(f?Xx<0O1ml;j{A!o?Ln-BtweD}oRGW;Cyk&-GV--B>a$h8-c`t&On! zfe1ihpDL~xA=g%$?k`5lXl8tT9l;MAi5-TON#n52b60G}IvI5cvVr&7(=-4wLlRsZ_>FCXw(u}wCz|EqVw%L<`Dc@r*x zsPDYB=Qk#`=DwB!p{ACpo<34eNQKgISHM4bt8dh&@7+Jo-KY3h#hjjANZYwL7MfB> z-d=~9l@PyL?nu;qIB87NQFbLt{;VQ2%SRExLAG}7Qgne5%!I+N(Y#mIw`jh>M&G?U zJS_npDY9q{Wc|*a=n^Vy8j@mg{r9l4Y$^0E`}AGq zlI~p9OQYti>6<<};WoEfCs0bPpA@pDJ8zlxns(PU*JoQXE_^gW0;q0AO82?t0_ya; zu4nI8(m}LkFB_*%v92q|l=U2~T`XF4ZQXDs5XKL+!GS6}pRZ1Qlys#Fru8hm_#vEa zn+54sZ(vB;|`0;}-OEa+Ee=Va1&k#5ZAy|0fvJhs}6j}vC zT{6hX$V}9^XO&L6#79~84ry9gFtftl|zEwZtP2R9f1*cwmCX)eq$r!QIrUVxY z=FXcr?UurHfG_&QbNz7icdn;wa2!}}3R4K`PdBvBq={vvC6&%sQNoA@2X0Nffd9^x zVeDdlx;A2P9v1zs?x4elJ+)x~i$sC%w>?1kAeMXQX!oUJM)E z|Gj1tQixsAcONu`1{W5?!SgdeU$u+W&$RpQ&U|Zt7xrX)ArCvbK>)u8(1gj*a^tJ8 zFg&-}#Z_0>$;3Cg%3 z{KAR@y}{sVXm~sB?OPRhcai!&OG07F>dRnqT))ett{;2Dc+F_rO^uOTp=)FB8P zNE#QQjWk+9I4gc^oeLHEFg=)e({czd;_#v5t%mwgrerq{?;`I1$>+XjE&2t+$ZpyTu-d~jW+`yxQ0o(si$NOaP zq;=DbG9JoJ5?1+$23%oY6UBo(EWZ5|5VaDEz{<+-b1?xw^ydYiX@z^u`Q|8N zPI~POpoh4x!hlz94o(ui@tUpDqQLGmoQ>s_9eKVh2R|A$-QI25ZI@P!>Jf#yUKu@o z6Zzo-2^G2P7-s?eq$kw-$by04PKxyA?l;*Ws9lnHzz%7n1UH~0D7FL@lvNxP=u(fp zwrDlQV8#7*tw5~}CQF|EBK7mrFqDZK&pFStt%6-qfi`GK30PU2v^Jwc>uF7Rm&;^b zM-u#J^}XH`dzPB`tK=&9L=>%&2Rc>*e`L{rP$0N9Laeq|ya{@q7t!qFUPa3wCztDWQK-1w?YV ziXzIeue`l0gU^o{hLVih2Um0;cAD72^B&3L7n+(%(R5uL*bzfoG`iF~5rQB?fxl7fM`%Fwhukx)) z10IC{c*`Ja)sxzHLZ^7KulhWw9o4c$2eO^Jurm!kIi41VK&VQdl_ej-e+(!oUO$|h zJF3IA!Asl?`Po3eE$*V%7Xf`4KyioJeGnFi-FO@leU7kJL7pG)I3RG#Xh)xpc2t=e z$Cr=`ubQ>5As6CbJT9mDq2hz^5%-1m$bptd@p^kN4 z8i5Z~nO&|T&@Sv68;lp7u^Blqu8Hl4Jcx55G4Y)v^0XAKRjc`MF)Q40e(a<2+(t}b9U zoj<;&SDdV=XNp@cz~@#n_|Y35Jb`(azYnc68<1l8d1jUhJBhpAI6RiM2=Q7D{}+sG zKE6&V8Lxior#}i-K0ud9)`e0*X-nk}aNu~WnuX4{Okfoi-)kFFqwtF`JoD!rljkJD z$r%~ri+CrqP<&RAn2h zObP7Zz$d*cyzZUNw^PNui#qH#^7gKYN;}o#D9XEGpX1BOrLYuRkE0E{DGA*>e2W_tkUeZO>SYN|Yy?XA5XZmYWo z%SyQD2k$Oy;x(xH6QOb;!ijK8TwTWAd&KoxRriGC<@wTa(5{NA0~h?_((XRf@b6MV z`op86;&0^|C#(w8w2aXwMuy*I%~=y2dXss4?Ck8W3N+%||LQ9#U{drIY0@Fk!M?se z``Fmn=d4O0R%<&uEttA#kN%aGvhsw9vlS$zcZ=`e-kkKWMwZtzi_6#d4Mq~t<*7rU zPNB@b?JHozkBC%*0|Ohc>Eemn^7GeOS#O2wZkZMu=6`Kw;pyrkxkb_Wt9~x5FRL*# z+pZ&uaxzQG9q>}dYt%UJOx5y@mzuwFFf+?!1T7`plZz>p#pVYcjeO+Kog^&SS2 zT2t8%l>)RUSHFcmpWVy;k^lUn(>3yd*4H$iZI91%t|&L;?8VckBZI)p@K+~8)Ctg~ zV`5^IpV~dmw))`Fn=akS6{p=herE6N+!)MqyRtr!Dw930xPi&Z$%$X6 zLd{&A@JZ=y3VQyEQnBmuW{R%DLb1#z`^ov|cB=)XZB+8IdzaV2d>iVZ%uiz2=4Fnu z{iVy3y%+n2M?D7zZD;HiD;(5=3Utet22{mYqRzX!vrTNG!ou%>%Oi0H6^imaSnN8h zovOWx42a~FdDV13XY6c+M=6N$6VtFTx-n9a5inz{%LkX`9JQX`2fu5Zp1#XlKtmZn zN3svAyqN7CXQZS=BxcZvi8FzLZ3<)GQ54%WH+iwAtaeP^)giQMBmQ9mq=i3~XGYD? zTymeIsY&T7$cSLVudBgolq4lDxkd70aO+Y4rp2 zv{^;Z*D(y3mEp76^op6uvh0ho-~w;EiWNrmza0?#Bd-lh>MJ>`!j;((cu_Z)9Iqpy zAlmDEO}2l}L&=-q%12)H+SfuH zFHY(Cr{9W!WD<)dk=h=_uzy8^;(i$r+iMrp9}(!ZA~cAxc{v%`l73C)!5&&f@y$@& zKM0?VRNembK^vZvj6SI-Vaxq1AqbLS{c!YU z`Hj@6_{D*h!@c7`Mk+|p_s)%NA~!O6TQW?WN*c|bziby=po_rk%U7a$Eqf+E>z&aU z{l>e4WH=-$x;2x~I22(65>@y-=HHt=koA1Ab^~i-h)myk!RbC>t1{@OS$^ElqXG&$8O7AlREZ75Cl{Qq9R=M<$!NDTynOj>enN z)GUDk%85+H#$emo_|wu1@V@E7dui3$MD!WCgtP7`^H)E=fSN+XwdtkHm0YzuHIdDT zMrtO^o9`#X#E9*s2u7vmh`lK?_ZU-BoS=wJ>(z^J01+=WcGID*e_fZx6Y7_RyhalJ z>Qyaq_e6rC&qzvFgg%c$g9V84>b??D-iAidPF`%+U3);ARQ;E5JM9gqPVn5^Iso5)g+1K1yueoaz7vY{97h_w9`O78<$Q?+eFSVP~tIXGfR8r?ng;Pr({cFpNB~ zb`ZTcf8Ivn^F(>~H*rhoCn<%sn)9#KuTEz9rhl{s_ba{~%caL$R;v#0a~a^IIN6L` zzcYT9d}HXu&CM;=Dm>Rk1+laAbu)bJsPgC$Ud{Au-h2Np48Dk_Oi$YM7@_pj5D+>& zcVhgvCDI#3D#Ll5;HDZ~IKMZJI3vQcMC2ie{{6#&#p)3sdLv@1@Aq1^a!Ro2`fpy= zCy(PJzMdO}iEh5_OBPb$2vprj1im_5n92$)5Gz^a1Nqxt2|F0P7?uHz>m*%b@u@mL z8B|pe-`Nb^d5Tt$hH!Zr_?Rh(GBQ0CI$a2UMtpb}g(TxY!3?YibATgvwMalo%pr9If8bgIo$b~D6{jweM zd_#)EujFst#fA=>X=zYF%SM;?pjeH^2Ck+-?f<&DOpCi94FRo9=>Wf-dJ*wFN3{c z3b-upfrDaNIINDg-frU?ItAT%H|p0KF-}RZs%?^{`ba2vf%fa8L&>Y+OL`LU@C(~v z&Bz6vl+cKgCRPQAH0Nq7cyd{&8iwObl91LFl_cQ$x79?=L@334k0q@Zj`JR?an?^w zPv=xpVgu!Uf$yvoL4sKj_a*u*gixHO0j2YjgQhI*95y?9+JA!zKbOI`x)NnmM)E~T zU@$HwBNg4Rv zsf^;w%sLBfYgDilY3AVI_ZFGtkOG8oD2!X_!QLn1>0yRF2=0q>hdzkb3_o*ULlepe z%;wIWJ3T`~nt+Y_{?jL6VJOn7Dg+vY3!P}Ot{UUp!^AzFU0bJk`BGN0BLBHP&i@!! zmj*GZkIVbJF%|shJ6~=o_UPn$RCR=rG zU+=g^s0x!?4fywI{&of}jwhJ9MP<7y?qT{r0E%r2gK#mHie!I}mKMKY=IAv98xU=mq~>8?yHsV5X}Gy54>jel-jW^s>W`ttLA<_uEc` zzjNzI-Qd!b=t!jGjSA6#&}A_(MBf#MaNdSGuC_gVz~a+&^rFzN<~qN(o0Lsns>avVusEC`8iv*myA;fcjhshRYbubgjXHN6(qdHlpSJ`ikD z=(BMd6%~+s1rxmpzo22bw<)odWS(5Fc&Rvd{r7j^-%U4&?K2pCdNjFm3jz}K;4_p; zDfP3SqJ7Qscv0v;Ar@(V0MZFt&)SH|BmDa7Ri=%nI^kz{ayL2euYW8$Zu22`s&|iA5la^R33MU+8-~kBU)bTlbl3P-r6k0 zB1itd>9^MJy2@IT)sS&pxIcA5j=-bHHWKuETPD{M@yfbihN*>?StF*j5E=zZ_qYvEGWU=uF*I|>0FN)oaA!puFMd;2*g zx{$89b#}FHOuVV-j#@t{BZAtn4t|z6?OH@Y#`V9yx%LxN2ma>ySF56-LwP4?ZAJ2V zVFcZQ->Zy4r&=eUn3jC$?^}4IZFYf2y<8}jl{M(|OVp5uwbVM>Tgdg?h})=hG`R;T zB50Rc+J7OEXvenT<<$6o`|KJ-V^y3=aHWesYnB$J;TJ{qXD)8q=2-Y{n zeHE%{YVe?e{~HTHhEM?seg{Lqp(WxAt5F&+xGwhBectR#kxgVi6;PK4JhXK6G?jgp zl6lR=8kU(xl7GKQgKZEQ+O1djg4``L!8+G|PfL&Aj&pCt?btm~u(q(OI?k2!nONA1 zei#lW0vDSGaMd>7l9{tfqb{4k~7(jUSCfb6%yZ5H;MZ5EPe(n*6}R%rbtTopDkD!Om;AKCv4g1-RR{`GP0 zi!tP^IKH~`8i0xyx3#@a&{gM+Nw61zep>!Psf$@jf{CC3Vm}oPvPy#_!d-DvAp(>3 z!Fn8h8JfsiIONk1H<-3>I71pOYLm@an;@NS{y zc<#|}QjcLw0$pm#;NJ+J@JA`&1TPQJqst|S-Jzx_6@S>St^cFl$+>MG`98j(%wak> zyn9v&$?PnV|MA>Y8IbufyeqFiE!*8%C*GFTNq$JV|54eN8Ia*$59eS0{i-9FPo*@2 z_E!eo0?;8H-cf}R!H&} zS*ks_-<$ustAjxE;u$>MJ~1oWn9gr45wfk~?|ICL88d@;L3pl52e6C*KefaJGT5<& zdB&7YA9muOmYZ6DWGoy$PiT}il!iZtGX%&cmOAG|%+`|_OuWoLMwy;fUZ{9(2AnoL z9Grlm#|HG)Z|4?K$J)&-3$0?4_wr|o#K2qAsgU7831!pWl0JB4KeN%cYO~1zx4;lytpfq0KiRcksjKV!2>Ye zK#{>zd`K9*e!N2dgKJ)Aq=|Z}MGnM%vTmc6_+fNg9Kn!CIilh3Cw-Ft>)D}teATT$ z;@yEe!XR};#hBqO@U7s=W^7^D{|9-#_zwQYS3{+9Wl$3^@IgOLSrwi$^a%=D$d^Bo z{M`Nf(P5@}@gvFDxVU>$``&D9OoxHX_|>z6b7@$)IA97u41(=D4h{~L13a@eO}2MH z96%jT+aVjp&;Qs9H?=Ah?-R1IwGrEY!`+u+sa8upA0rX8BDT|eKQ&J*Lh3@?ip4A} zIygw81ZVnzNC(${4#vNgL9P6tq4?ZR*3$3 zJ5A?lwG01};jVnh^opDjP?`&}kkV3P9pmF@jKA5g{g(g~iO=pU(5EeYkHe$3-mnrO zH9fHB>D3)!_-7>wjn-kaxXMQD)NzR!%*jv|{r#m{fl?6OS)jP%U6b`KCuEH8r0rEu zDPy>{ZO?rW-jiYZfXXht#ccG`PCuKR8*VNaBbSc;ijd$$BN)Tpr!^AK&9>MUi*XXP z^(Ztl3KlSGlWlssqdk{dXXB^|mSQ&4^Jscv0`WoAx3G^%G%Z@M0u{Uu&sI@%1n+it zA}NB!7Bd;i7Q#a$M^BdvgUsK>wsnHU*!h34)e{^mKXVtjVlM`&hj9fo4-NkOk6 zQSs)np9=QaZzsjDN{|EZN?5$O65rao90`OH@YT=Md?We%y(P;cNi(!Je2(CO<1)vC zp1VY})S=z{Bnof9zXUUzRfk^`w>N!TqkaQdi||(k8N}4A6Vir=Ufvl&DsRt=iGh?p z!CIj?x-Y9b{MY2d<(jboJ7^RlhbI;AVL;&cJT_6k$fJWYg~2?84LBEiMIJSWgqoHL zYwZacEH2>lxV!%Vd#LyryvSIeI$E`Z%}fFpyAgn_>_YrKS45lS?9Kk3D7ZeCfTG88 zyXDX{KY%D2kj>u34R;A~56Qw~(3F`Gd-*gg@m1ok`+?j+kbi@N$ozd6i~uCIe#AgJ zmjy+9>871rm9CQ#TF+%b?!0bWyJ*>Y#Y#4DLF@q%{xQY1zA%Wv2#mdb~}PF`=;NwH;^7*AZ@ z14Va(VGpb>C-cTT@}#NA&l?RBfsUQn#`}PATiFL5M7R|$4NSA^K~~?x6k7aUeQFnR zt)m-V@|Y}L$kkTm@wEz(@ZUI@W$7#%mKK{oJ0ho+jF?%%Jholy(^Jrx!aF($~?EGwULdJFY%u938lLWp|!m5 z-~WE;PV5zx|-_P$CemE$(Ma+Ayf~#e)-YXIEG4>Ga?JtEhvNqMk-J;^ zWj_#LMe=I4hw#h|9i9Bmv3sT8t6!48*^po}c3cB`rT_2ZthfNej;O^JKD_@gp3P~Q zykTBpfh6RAA6J&i-y`1g{!g+RLkLhN|CJ$BI6Q9K#OVJnR7?^?8IM=q3<;X=#Snt@ z(;=Y!)SIe@edDsZ;|eqW|F0+G{6h*6AR2MW;kiopWyR7#9zBUk3L!E5D#^4(1-U zQnJ(XxM#_aW-RFmhcpUt!b^R7WYs&>u-y`w%W_48&eiT7RwOHT>gKqf^+P-1aJYex zlYd6~T6HL;=A{HFwA$C;Bl_U)PZ5nD$>y?JvjGzPKFI(2@}$Wv+eodod8O$jMc-?+ zo;*|9Mv{NC_R8rAtlLMoXMVWN6SyqO+pH(VFHZyu~|KFi;PtikerF zIS>4IG@RVmr#+W7Z0G0-#->*QyniD26q6nQxWW?PAU62LDg_()AH!aiWoQ)g{g4c(a$Xx`th*@nb1fDtQ=;TkHWLRya&g;#gh z!b{Pws9BgJ@L@%ZS6OV^hg;fn#7{6jA~=9*??~=rMEpE&J0@2y%*gm6ehjRN%kgX) z(;wKszLt#+0~+&$yez?|bJXu>@X5sk_kVWSqy;z^_VAaL!j7}0*CYmN%-PH<5#ZJx zhhO~Z*49S&%2(uG0C!~z$}{{nUwGR9YC_DW#HM9qdH-hW&nzs+elguzEq%Y~bT6v@ z!hg-uK?IGuSb-#a=oDr!3bwTDgaq6_KX#^+G5ND+S756whW|YT^Q*_TTI>O4G5vj> z$KB{zg(9=Q=FKT00qEe%IrybddUlqO;_rvKA8>L*J4tbjHf95yXKL(%4~a^@<+nXi z&TV*nvGP_Xdv`8nxpc&(R#;Gw4DeMw*3&zFh&vdp*U-c1oo@;)n175J37c&SZ5FSC z&LAs7nHF4&Z>g*fg~X7Gc0&I->str8qqy_f_H!V*$vxqH9e1l+Up-CL=r9nZ z?6@}<>!GP@BxH6=%EM~tjFJh_EEEv4P77YfkNnE{Kx&K=yG?kA@&NJv&g{9hBR8=i zi+%}?69FQLgZfQ7Eh?GgS9!Db)~aYp6Ry`Rp)DI9ttmMQSRX6O3`dJYp2S_(@v8Mq z$+|sWkDd+k@BO3S-gHC`x(qzCv+|dIz}#ZXU)I+8bqg<1;UI!@P1(VLi<*vmdW%iY zH#MGBftjA(skppc&Bt8?SRdOCv=j+QZ0q38Hs+_>J0@DR0IA=1@<(pC)wQ)0xPmgW z)5K$DyGY3)t;I@z(9CC$!9kR5k*w=7A2dyp;<6iXp z&2*K!qk6_TXpTGVn>mISzFPj-YA;{Ir7Bi$N>#ea7QWUP-MVpy=Qeu=9BkVj(c8}V zjX00B;8*d}g5i1?nqg@2{Fh?>*Y9LJIG*(M${Lw_x5aAV*7`{1_^4$e3AW(WyIzV# zyF#;t2Y+wn+=B;_8X>7m(ioYB->y2lBgIg%x#5!qhS^u4D}vWV3mB>*xVO0Mb;{vIV50U zX&GmG=NzHV`y_M51AKz4($73PrAYT#y&tF^$>A|Sz%Qd1PML&eUdgNi$hQ6%3>CNX#Sl?Ztps(`&odu@9;D~n3G?P+aD6R6@%+R*V0c8P?VlLcA(wX8l`X{VRZTIe;NBrT$CqPq^WF&AD zhrVvQ?fbZO43pg=s%_AC)c?QEd2lWdm_>C2kn&IF=-c$1S>kpi_8YgW5eH3Y8jP;` zw*>dIkxFz5N;{F&s&mEVbo*;thWghRXlr7}S!y}saVguL18}yf^py?Y@908!aTZ*Crf)rB zR0<*Hg8NY7vH90pTvxLDo1lwzSh~&>#YcJd;BTg8>tW!IxFMFtRayA}4Dk$Z1(q3H zML-+H)}GfR6hk_Ib6fc-y{3B?SoLJptpb4kUN%>Wsip^pg++M zDOt`9r71i^oHSqIBhE#Vzm@T;*q(@e@;}(z(}+)#dgan{@R@7Y0q^LS!6(TXk_x5g z_R4T-vQQ$1xgUh1?ZZ@sx^DMaSNtLfq42gcR@PHN;^4EQ{Kl_D_m4Gvm^sdae)x!& zoBWqGQI>z$6a923c)0ZU9*@gJI3$#PI^^Nm*`Eeh2TixT^OlyGSJN>KmBZ-$EEulb zWAfk$|M?zXis1PZN64N|EA>yQ{5#qis1jQPPf}xN0hShh{@3#XzD?{mx~cxkN$Bsl zO@1@(xmB_idqWJ4dKeFCgJ(7^l3Y!k-@YO_MDv{Us!rlb$?Y}u4l>12<=Vmc*8-E- zg^`GWem@|>$Z7?!rI?c|ydys8-Mv63`Y9QB4t;_N>cq}{XOeXG7)xtnbv3X~Y_$oO z2zT`u8#hkBfR@eqxm6TT&^FhP{~g(Q{RoJHb#ZkaNgHSL7$a=6L~=F*t+IjUX2m{S zep4E5s(0-hpXIf6OfOOjybnJ^YaH`;Zy^2nP6UhZShX(FQl^<3+^OJ(nE7ksBgXw< zd|qkg!ZtK<2y1m@bJtB%L}`N#(udftjktJG0cf_~Nr6Ve&)#fqtEby+Y4^^fQ%ub^ zqJy==Vu`ZP?X+Nf+9+A0LAO1wU~;kS6NcNnF#zderGbpNGy07{ihYV0bpoF*OeCZN zQwavY9nBF1gO(F!`TMW5&Uu^sDm*JX%rmeIGeLU;qDMppYBZTOIVniF=~O_yUmrKPrXxCkR8i`zj$3W= zf=yJm73hIJ^Jw>ve*{9QM;*9@b1udlw=dPiNuP#vV|eKIW9fy=)N)B?#5$X`|9y}^ zwSRe3Gc7}#gHMGU8yy9M@bK_J{!tNS`d1&5?}L;L%=kf0+-kUcLm8!1{$ooLH$U!F z)37^Sw-gWfV=NCSSPee^UX+HapM`udDS0M-;Cgj|W1Zbw1F}qDK+eaCGsqv)%jdMk zI9KIBTyr&uKb?|G&tMrsgvhVq?Vo~ZBqZrp9s$XRV8u*}c z)Kws;^(IhvyVFa{q8*5kvb?LWcj z3zS{%6h_e0q|Gn{@hePm0D7m0#SfC3z@4{ms~$fD5{l~5_Zxk-Ci>EZB6)PuD|NG^ zNVmqy96*)cE81OK=#+9&QMPhk;Ui~3zyc^7 z-@1#Fd>@n<-JWak;%eGTP_jGK4Q(G%3W;m`C7fzHny2}gIz+~gG^UaCD2yuPA&yHM zFjYrgX7xHh`*)mCx*o~!FzSPqTXjgec8y-td~9)f|~M2weN zcDHwQ9PD>cSuQs@_TDA}eU9lu`F&T`vljuk!ZG+DAz_VupKuUAA4i{`Jj%$LdZ(8W zD~K>}{v3nFVD@iDYSF2kZ+(&KxzY2~@eQ3%vNp0KXuLl>V;Tf*O( zX`MAlUETozZl^J;=?#4CF%DcI0}7E4&mO>)Wpbf+d3}`acZCD%TTGX zd|f5EEA8PJ7*6Vg-mCoqub|7w2euRN6N)5)Z#MQ88*mmqr*%7KKGV;91o9SgTsMWG zW2pMTkPV4mrF$tscL68^-nyRN-nK7VDS$!-J=~dQ1a=kQ)`M`I;OM4SmfNlhB@Jln zLZ;<(W58BhG@UZg(2VrnmWe*9skfvex_s)4a#1Pzx*Cvcou z6iMOD16cyGQupQQR!k&g;$xKqOyXCnPV3Da@e$KM!Yotve4eVLS4eSN;otG%!QoZ@ z2&t*5Ny^T4$7Me@(Cvn;)V=)6t3oFZYOO za!5*=B#%(*qzm7qulYjiMD#xmeeP&n>XoeMRlIuOF~gLat4Ivu9};r&O|~5Roop16 zlcVHk2m?L8BbSACA@{$rwgHS2=F6nR08YQK?2V|?9Ya=^EoNaZ*4RG518W~{28hi& zAXVT(#}AA!AGAN|Ogn_w-Txrl_+f{$&ks051FSj&z+rxFNhMN~R*@MR+#uH9$m4c| z@(@8=UQPoMQOL*RcW|+@ls9;@xE{T@xOjY}D>aouWs4N+(h2cim8R%(1ae$-T~Tf1 zTIW@PudwIOWRlU}5mY;J{5O`>a|Ok4-AwVPw{fv7N+G}VU-khk0tgZJld!nFto}zB zjD;n7dD+ozvbqanr38fmKxAutQJap&iE&}DD@{QS{7MH+fA;%O2fyx4=Bq}7_F*_= zNOLeQ_O&tczj0O8qzRdlJ$?E#ordOKK+E7_3|!5>*EHb*IJ*=LXI1EXedy&#&Cy@K!uTX}n8yN{-R0XJ$#3ID^6}5ZSC}TFkdC}3t0zIB zZS?)9K32ct{kb5$=fbVVE6XA6%r!o zL3@R>wxqTGQR3}b%u_)W09CKPt_TtDq@lQOd({4SSGjd&`u{T-^-6(&Sa28Q>y*5X zqlA`G+2*u&SYyMI$v~}d57D4Zz8C*e$9twOL79a@A-x}H$6!qDXOyZoXX7A5M+Uy9 zR0WZ9?4->>zXdX218R9ito)vCTI?YQSV&b>K@Z7!g9*Od6K$oM3j9BbBKZ0l5rv7P zY5nLVhDvL29OI0)=(7EZ>z-%!A0VJ8GVvD6qhMReDYSyf(}!qAp+2EfUY{l58J!sQ zui`AP{kV!*Cu@?uuNz&U;YaO@8MSbAZP6SI(QrY{-Tj$YLseN|c{1hgbCcwRW1M#6 z#L@eloP?Vf0k9TDn%j}~1 zN&%E=C0~d)yawFc(muS`Ki6^`R8&-$PAGx#!f7wb;Bwef4IJ26_X zsOFG(TCdOlysK?^=dO@ec}dR@Jtjk5p{~mS!h;2G^rK6uCM=La=!v!482W(is%|qg zGp5}vS+E8d{-%rF?+LC8RPV=v4;{`S64sVjA^ z>Zrg68PlbE{+#dPf_BnkMDTnIJ)-L}l|mJ_{uWXFnhj=zXVL_=kzYMYyuR@7+sP<^ z^WutvK@>ZsQLB_S@V(6^=?XZ!K2l&3AkVYIml;VF3ThlWM}cE}N}fJZX~q?3daNld zXD&bF**DAzKT5qdE+_cisL5!4Rn^>z1?rf3Jb)VV<7bV(djNE8pcVwW6LIr@0f26( zKiNhN5Z#$M$>pN_57>b}hUND<}J}&)n+imG_FJhYob)M_7>Q zdkCoBYH$3hjW&}P%BrGlr?_Vb0tp8_tklInT{4+zv5Y!1H zGm+EOfTgvXd(}{{{@N|NHYCekds2q}IP@%_Rgjh->bzuu=rn>D`-T zDrE2gmw6`-_y1GKcZW5ReeWj}sfwbMRgu1QqAo?H1QA70K@ki+ARsvlUbk?uiw0RL4?kX(3z-LKe&(k~la!DQzKjn78dsF)eu{pV0v&5ksRYBsU z)Sn&i%}`09IH+I;;1Og=$mD2aWC%?6Q3@_d;G?kjx$b2DllSiu(fB>X#@`EyJ)E&1 z-)`TOeUK`7;dPYKA=HrxEo6L@kHfB|D57nv1*I+nhEONruIT5YQ3LQKBnrV>;GS^Z z6$7N z!9#Ugl!_1T*7*{A=d}3e?iMoCcIiVbu?z_ee$|MbwPeH}^hzh_)M0J_SQ{XT&kxhO zf>;w2M^pYVQYCKfO``OdO1V+6M!DKLXV(3VrV61x_nsRl)&Gto$wnU30I%Z;(xBbp z7dC-6T>jLF4Pb(&&rU-QJO>Cb+ZA+g22YKC#k8&jo&r6=3dW*kR*MR&saaX_i7zDU zX;(KvH@i_&QV>e`K936e9PTIy=hnL6g|e@q`!khlS&`|KfO)i>P2yCjeE7Ny#7TeK zbQ!fi6T2ELGgm*_mqED`9Uz&iW}1geT^*zOGuOvh23_+4XEpc@Rq5;@+`1?X=T~%~ zRZyYdc_b6P&*wj(0efk-q$wfy-z2ryvO7XEp%MV50)wavs3I$U+j5g&Zy)G8ExqEbAf7VGdF-Mm ze&8Rvj#C&QVBhwOSoZxBX__;}T1oc-xJgq|LnT?4vPi$YLgzdIU@TD_fnR50&+3W1 zO+rmXRm{K4I8h}_^LwR2+`N-fmWJ%HYXGCUO6M#D-9Vu@Pm<3ntMG)BLmk~gkC;YM ziC7LgO=~u7#pR$e{uJ(o^F;V6;^=zU>KVs!dMqfG+Iynm(NrTP2K7DNZ zE>Id6KudeTulVGx43Pkz*GFHf1qJ2d?#Hcx%CqmMPN(5KHvTP=X>+JKpU8OfugW&?-Q81Jq;^4oq@v0DMKpY2uaL;NeRgz2p?12}<1? z#OE`y6(p5_6cckjW-3wmI7wjik9+kXgnX2JmO(m_kjv&Lci;p^`w)J~ktM)T$ylF9 zIddW&A2~#I@X!~Tb`@NygK#wPF7P6+Ki!&~A_y6rVgVL0mPZs?HGb7mEzd1RhfVpt zte=2#_XYgA|d}DZd#(%e*|D;%G}2a9Gl~;F68#UKbPU#!vmS7#U@m_ z0124eJxI~U?Dc*)kbNmC?{@*Hu-g+X-6eQi19M%U6+8mZXHd_hEk`F#<1=oO_$i?_9|`bS@iM$utETU!&=+~T)V3#?~kooascKfB<+!vEQ& zQLBalC6TSz!bYie4G_%uek!rB4@tmTCw}R+u*G2lSLjQLztvtc<|k;>!GASjKmk6R zI;ix&rV-85LFfPMj#CGvp|O-l`r_?Ytw1HDu@})#mM0F43^)D!7Ij<&94lwx=ljZj zjgvtubr9F00B}n8j%gMMbxH+Yji37o`C6RuDSLW}J_E{Y_1gf0IJGt7Ob@NDwX%}X|m+%Hw7|{ z4EX+RXqNf$!T~{BbWt@Y^APgmAG_pS;?;ddXU^<^+*11ON~DHy9zf(g z*&SQnP^17vmTcLW(SM1Zx)%R)8_iE_B+GxCrvHY(T0atnlCT3FbB_7E?L*xEqnb3q zB-^l{ts4njG&cv9u34Mfm4M6Q6IMmRPA$(wg~}0W7W*fx>QXxct+WqWSAFi}%=>Y! z9ZT1=Z8QD7rEu7}Z%RAWo{phRPRZ9a6c!J?P0pqdz{55MUAWFK{gHz5&~r(yDywi? z-t(^=f@RbhsMzdJ)J4yT2uVOu$|(;K_Dg4I#EK-)tvZvM77{n|!SRQx&^bzgD~;nQ zKS+yfM@}o*t^dBZgCub5mU(0R4FA7~MdIrjC(M%{0zPWr$x6{z#kFYUpRKqm*DTuZIug#pQ(6WjGP zy!T8uTWaU$Rt7(>@(TC+OuozpR7cwKA1=T9c^tr2)d3xr2IwaoI0o+7TguacmDZW| zS#p&+nDtG;L@ZjRo4s%Z%Dncg(x-oh-+or$w|MbNDWrLG%szJf#hFKxG)vi^Y|ZoA zvixCX1p2N9Hg_DL+kSxWlnAHPoDhjV09E!w4x=}ynY%wc2L^CfD0WCUr&%oMX!76r zF4$0PA{uw3Bd9fW@o1lv4;wJG%a5D}W22@Bs<-M~6Lo$=q=LVoeUtAhd<4#hwci+= zRlg60a2a?cb2wJvn#vzL^J!l@!SDKz%!w!oqVzVL2N0;k9kqX7Se;KK-VF8q8rngH zmMwN1{2glN%h6u~Pu?F^0T{@(*O@!%q&{CS9>>3KmaD)=>LiZ!->R*k+m8g!Xtckv zZPf)|F0qp_zY#c~3Iz9w$-WG5&IJ*_QN3JtfolIDj{NGxRsBJ$H^Jb*M|56U_PV`w z%m}T-h;gGaAgR@D`z*|oN>x1M@mr%*yB3d|9tIt$@Xjq{^3Bw!Ft=WjP_g3>9$%+!y{cvIKD|h2xh=Z)ngs z_$Sj_^?n=kUXnl~1{2aN2CkxmTBfcF98At=>>m_FuP$WUL6QJw>1D$JIY3A)k5b3p zY6HD32>5J|{5q>b$ogi;x}wId0B31+1qnb8KURmSfNxUTLansHd)N^`kEX-p@nR_; zmh4WNuk4ODq{#Cc?kYA5PPBpR-}Vxv5WrtvTf;1f$>?as9~Vh zzCA!$ON#gS+fvQtw#Qr1oH5gTd&?-7a#CW}G8F~!-q$h`tCzvm%CQSM*&cU3Oe#C} z_UZ;+#laisEBkj|zM(Nm;SqX!xGvj;IrH*-#X=B0Lr%VC%fez`-$>D-D*1(?GemKq zCkop@5u*Vt-t~lIzI0cSYMoxhlXtICo1G^%N%0q!YqdYtw7^td!jRSr!mBT`Q;YYm z%3#MDwl7-r2rocUa zmGGCiZswRj+SCNnfgO-30z!ulfBuLw(3rO3P#67j@Brf>YG&_@P`HDhGKF%<^{64d zK-+Ww{`LETv2(5;+%*JcvqCPyQzhS5f$6dTO{23!eF&y$^^8g$VXwip;ZI;1uud;{ z;U0}l5rCZSv(RU+cC>GdAcY|JR5&9NRcJnq_tWPVUoG`f5y}Qc zp08_sg6s_h(<=1OyIV(vc9!s0FEw?Ecx*mseNC&U9v)lUhxKYpYHM+~uMhNFWTKCbxd!U6^8Ol@B%-Lf zw=sX=J~h&MV#P-#Jxw%+&PAHr@iA5!UY*XrE6zC0OhRiiR2C;^)(wV*o{z&G?Y}9% z(^TnRAYE`0w$wexL~gXiT}KILj$}>wYJ_V<&SLv{x5)`}jRswZ&pnWi+YTDGrM~7| zxcheU(8^s&nlbak*Ptid0tePzSgi)}4wa0Gy1$=x)3q#QoWAb|%D!U17ub!Ov&iopw=@yvmFX<{ft1qlF990U0X+LH8a}ObhT7K#I?S~8 ziDfnDOXjHBbNNIpqh?de>4vC1EGf$#?8}i|&Nfj;)i*Yg51F#{tynR`LVJW;`m3J! zJ5is}gOFBXS>o%5z8bn|UBq^@^r3`L*ESK$Q#hgU@bE_Gu|_LCX*;^w0OfSs@T!in zMBrL4M~xjTf4&p@W~qO0wSQ(w?A7pNhS~U9J1*5LVqvOs9{DCI2G1*9%=k<%@{khaC)5-5bx;s%AF59aN$mNyDrd~YEcHt-K#~b`bdX&X+bcu5n7&VVBMwRkS zfg!>W+D|t6V*SpToM(yLCfa0TUf`|2@9ma3V`q1O8}s$5Ln`|1R|~0OFGsGdmATkn+xPGB)T7dI94IJc%HW+oA5+vl z$Tji%byh0Y3Q<|$Zo&!qTAW%!oiAntRs=5!kY+YDQ(Fv&Q$--7`dQ2pvs_^g-|+Aj zOO}PF-4>b0T(VWSG8Shj{IJ!Cn0U8yU(>q62D2f9}T&wyRRL&x`DB< z71^FTf!~GPB3Njm+Ya7;*AUK={)N6fsE~Ooyj@tZzUA&%U#9^9tJD#-+fehu<#d>G z4t*i;f=A$XW%`gvA%Cn6CDHYksDuQfhsd#dkDU0I;LHQ#q{*C2KS3Aa?g!U|J&hH( zC!?$j8RswO>(G3dR$Q&#^xI7b9a=)`CQbpWNpo}Q0p2hVLdy0(h(g`oM{ps#KM%cX z&o1WL>A>9L#>j8!#@~+Ws&R6DQnfGIot5!0aO!K*(mpQutBU<|#*J2&!^0QOt2_aK zxErj=2T4KWYd#T%&4a~tcayZT_*0e=%T4R9JG`@KHq^ILI{If~U23KKn-mW|6XxXt z$M&3%-a9^Lj%a%$2M%K#vYx`1+KDEC+v(qSK}v0cF793zGCWFW%wtq&6SH=n=!#;c zn*wvv2ZfLZj@(ApWTF+9y$1f+{7KQx*^ZODo+}ms0N@eC18BF4*`rBIPMB7GPFiy` ztq_+?7*8o0O@rDFomPtR>kY4!d@xAh3Utk{FZ5_SJL>h_D(zyppR%D2s^RA3^>ClQ z`bSPg=QXR^=+94uMdUJWv2bZwoazvSoP;!vak;>WuVHnQuEGh6MWJ=;eTI7fMvRgP zSGoGHYnFXnyQ)=Ylh_`6`aMoNUI&?Zm%t-Hq$PH6y=lk zDwa5VrASpceYQ%wXkYrs1-X>UiB#*RUes{1de*(_gbLV5gceaf%yn(*x$l8#)F-9) zih3XGT|a3FbPG0{t%5ne!qgqc$FM> zs6i`zwF0*uN?hZ{H=wumr&5q(yxV>`78dsgB81!fX)KP+STtqtF`63p3~R-6kUHnm z*GCHJBgM3QTe_fh`b&?6zrRe$x%kIe5WkeMm53(M;A{z@ye8sp>w#;hwW4YW0ja18c=M^;8Ufoe0b3 z+#HWk=;?-zd?+$4-e>)~&$tCcAlh92KJ`ovBfBlS#F5)}^R)prWWK8_2`gSpAw1C# zf;4)^Z`o|yByA0^;^6D$pCcI)%BMb+9kOpjyv9aae)*?Rwa#hOLij;i875uh?YqU# zvlHKT)NC&8f?VyDT!bhl>WxS0Heg>ov%C?s!n22E4_@(B6<<~OOvGtw9wdr++i1%9jWJ@!fguwf(V&#V6rrzM+vR)7$F_AJx9pT=r54!D7+t4$- zj|Dkom`3ucYUijk<%jqonp>^z;d$_8z~r$*j*_{Y_n@mFE1y3r+dNz-VxV>&7D9%- zz|F=4c@z;`su)7Y5Jr%WBDaF4_bnP&Cr=kgRH92vd9{V~V<87$Hh_4o-Llc2JuUFW z2i z9mj=^8Mit@mOn_|+EJ}HE|JyG7j~RUDp!KU&m8b*evp7^-!0^{W4apgICIxS$g-Iz z7`8JHEgc10_XNxK3<*lz@hLp(U9=R+HGOudP@|>gDEmN?jMYia5797)(b}VZN<(SS bSkMEKjf{&rGATd|9Aa|X%&5}P>CXQF7tS`9 literal 25149 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 Vpsvdf{w)Ngt*Nh3detW6e*nxExPJfu From 87872e81e1b47804e8992db597c469f28d9e350e Mon Sep 17 00:00:00 2001 From: Incoming Date: Fri, 22 Nov 2013 04:01:51 -0500 Subject: [PATCH 016/315] Syndicate Bomb Tweaks: Syndicate Bombs now have enforced 60 second minimum timers, up from 30. Their crystal cost remains at 5. Syndicate Detonators that can get around the 60 second timers are purchasable for 1 crystal for all (there are also ways to get around it with clever uses of the wires, but that's not new) The Nuke Agents get a free syndicate detonator [MAP] Syndicate Bombs can now be further disassembled beyond disarming them to let people actually lift the explosives out of the bomb, rendering it useless. These explosives will only detonate in the presence of another explosion, and give great research levels. --- code/datums/uplink_item.dm | 11 +++- code/datums/wires/syndicatebomb.dm | 4 ++ code/game/machinery/syndicatebomb.dm | 98 ++++++++++++++++++++++++++-- maps/tgstation.2.1.2.dmm | 6 +- 4 files changed, 108 insertions(+), 11 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index d2970154a55..72e82054e38 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -373,11 +373,18 @@ var/list/uplink_items = list() /datum/uplink_item/device_tools/syndicate_bomb name = "Syndicate Bomb" - desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 30 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ - You can wrench the bomb down to prevent removal. The crew may defuse the bomb." + desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 60 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ + You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." item = /obj/item/device/sbeacondrop/bomb cost = 5 +/datum/uplink_item/device_tools/syndicate_detonator + name = "Syndicate Detonator" + desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate \ + Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of the blast radius before using the detonator." + item = /obj/item/device/syndicatedetonator + cost = 1 + /datum/uplink_item/device_tools/teleporter name = "Teleporter Circuit Board" desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur." diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 77700d9d028..8c60b0e4546 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -11,6 +11,8 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if /datum/wires/syndicatebomb/UpdatePulsed(var/index) var/obj/machinery/syndicatebomb/P = holder + if(P.degutted) + return switch(index) if(WIRE_BOOM) if (P.active) @@ -47,6 +49,8 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if /datum/wires/syndicatebomb/UpdateCut(var/index, var/mended) var/obj/machinery/syndicatebomb/P = holder + if(P.degutted) + return switch(index) if(WIRE_EXPLODE) if(!mended) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index f78ca4b746d..86d7adecaf8 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -14,6 +14,7 @@ var/open_panel = 0 //are the wires exposed? var/active = 0 //is the bomb counting down? var/defused = 0 //is the bomb capable of exploding? + var/degutted = 0 //is the bomb even a bomb anymore? /obj/machinery/syndicatebomb/process() if(active && !defused && (timer > 0)) //Tick Tock @@ -68,14 +69,37 @@ user << "You [open_panel ? "open" : "close"] the wire panel." else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler )) - if(open_panel) + if(degutted) + user << "The wires aren't connected to anything!" + else if(open_panel) wires.Interact(user) + else if(istype(I, /obj/item/weapon/crowbar)) + if(open_panel && !degutted && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) + user << "You carefully pry out the bomb's payload." + degutted = 1 + new /obj/item/weapon/syndicatebombcore(user.loc) + else if (open_panel) + user << "The wires conneting the shell to the explosives are holding it down!" + else if (degutted) + user << "The explosives have already been removed." + else + user << "The cover is screwed on, it won't pry off!" + else if(istype(I, /obj/item/weapon/syndicatebombcore)) + if(degutted) + user << "You place the payload into the shell." + degutted = 0 + user.drop_item() + del(I) + else + user << "While a double strength bomb would surely be a thing of terrible beauty, there's just no room for it." else ..() /obj/machinery/syndicatebomb/attack_hand(var/mob/user) - if(anchored) + if(degutted) + user << "The bomb's explosives have been removed, the [open_panel ? "wires" : "buttons"] are useless now." + else if(anchored) if(open_panel) wires.Interact(user) else if(!active) @@ -87,19 +111,24 @@ /obj/machinery/syndicatebomb/proc/settings(var/mob/user) var/newtime = input(usr, "Please set the timer.", "Timer", "[timer]") as num - newtime = Clamp(newtime, 30, 60000) + newtime = Clamp(newtime, 60, 60000) if(in_range(src, usr) && isliving(usr)) //No running off and setting bombs from across the station timer = newtime src.loc.visible_message("\blue \icon[src] timer set for [timer] seconds.") if(alert(usr,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, usr) && isliving(usr)) - if(defused || active) - if(defused) + if(defused || active || degutted) + if(degutted) + src.loc.visible_message("\blue \icon[src] Device error: Payload missing") + else if(defused) src.loc.visible_message("\blue \icon[src] Device error: User intervention required") return else src.loc.visible_message("\red \icon[src] [timer] seconds until detonation, please clear the area.") playsound(loc, 'sound/machines/click.ogg', 30, 1) - icon_state = "syndicate-bomb-active" + if(!open_panel) + icon_state = "syndicate-bomb-active" + else + icon_state = "syndicate-bomb-active-wires" active = 1 add_fingerprint(user) @@ -109,4 +138,59 @@ bombers += log_str message_admins(log_str) log_game(log_str) - processing_objects.Add(src) //Ticking down \ No newline at end of file + processing_objects.Add(src) //Ticking down + +/obj/machinery/syndicatebomb/proc/isWireCut(var/index) + return wires.IsIndexCut(index) + +/obj/item/weapon/syndicatebombcore + name = "bomb payload" + desc = "A powerful secondary explosive of syndicate design and unknown composition, it should be stable under normal conditions..." + icon = 'icons/obj/assemblies.dmi' + icon_state = "plastic-explosive0" + item_state = "plasticx" + flags = FPRINT | TABLEPASS + w_class = 2.0 + origin_tech = "syndicate=6;combat=5" + +/obj/item/weapon/syndicatebombcore/ex_act(severity) //Little boom can chain a big boom + explosion(src.loc,2,5,11, flame_range = 11) + del(src) + +/obj/item/device/syndicatedetonator + name = "big red button" + desc = "Nothing good can come of pressing a button this garish..." + icon = 'icons/obj/assemblies.dmi' + icon_state = "plastic-explosive0" + item_state = "plasticx" + flags = FPRINT | TABLEPASS + w_class = 1.0 + origin_tech = "syndicate=2" + var/cooldown = 0 + var/detonated = 0 + var/existant = 0 + +/obj/item/device/syndicatedetonator/attack_self(mob/user as mob) + if(!cooldown) + for(var/obj/machinery/syndicatebomb/B in machines) + if(B.active) + B.timer = 0 + detonated++ + existant++ + playsound(user, 'sound/machines/click.ogg', 20, 1) + user << "[existant] found, [detonated] triggered." + if(detonated) + var/turf/T = get_turf(src) + var/area/A = get_area(T) + detonated-- + var/log_str = "[key_name(usr)]? has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] (JMP)." + bombers += log_str + message_admins(log_str) + log_game(log_str) + detonated = 0 + existant = 0 + cooldown = 1 + spawn(30) cooldown = 0 + + + diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index c7b10c917cd..d4fe4ea659c 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -114,7 +114,7 @@ "acj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/prison) "ack" = (/obj/machinery/door_control{id = "permacell1"; name = "Cell 1 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/flasher_button{id = "PCell 1"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/prison) "acl" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) -"acm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/power/apc{dir = 4; name = "Prison Wing APC"; pixel_x = 24; pixel_y = 0; step_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/prison) +"acm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/power/apc{dir = 4; name = "Prison Wing APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/prison) "acn" = (/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "aco" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/security/warden) "acp" = (/turf/simulated/floor{icon_state = "warning"},/area/security/warden) @@ -8237,6 +8237,7 @@ "dcu" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcv" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcw" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) +"dcx" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8668,7 +8669,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcrLcrZcrZcrZcrLctscttcttcsgcqNcqNcsMctuctvcsXcsMcsMctjctwcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrQcrQcsncrQcrQcrQcrQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrKcrLcrLcrLcrLcrLcrZcrZcrZcrLctxctyctyctyctzctAcsMcsMcsMcsMcsMcsMctjctwcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcsncrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZctBcrLcrZcrZcrZcrLctCctzcsfcsgcqNcqNcsMcsXcsXcsXcsMcsMctjctDcqNctEctFcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcrQcrQcrQcrQcrQcrQcrQcrTcrQcrQcrQcrQcrQcrQcrQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZctGctHcrLcrZcrZcrZcrLcrLctIctJcrPctKcqNctLctMctMctMctMcsMcsMcsMctNctOctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZctGctHcrLcrZcrZcrZcrLcrLctIctJcrPctKcqNctLctMdcxctMctMcsMcsMcsMctNctOctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNctScqYcrLcsLcrZctGctTcrLcrZcrZcrZcrLctUcrZcrZcrLcsVcqNctVctWctXctWctYcsMcsMcsMcqNctZctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactQctQctQcubctQctQctQctQctQctQctQcubctQctQctQcuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZcrZcuccrZcrZcrZcudcrZcrZcrZcrLcswcqNcqNctkcuecufcugcqNcqNcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZcrZcuhcrZcrZcrZcuicrZcrZcujcrLcukctKcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaculculculculculculculculculculculculaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcrUcumcumcumcumcumcumcumcumcumcumcumcumcumcrScrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9785,3 +9786,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + From fe8ddd4befd3c6728f6792bc41bebef70774e6c4 Mon Sep 17 00:00:00 2001 From: Kyrah Abattoir Date: Sat, 23 Nov 2013 23:41:21 +0100 Subject: [PATCH 017/315] code/game/objects/items/robot/* lowercase pass NOTE: vision modes have to be proper. --- code/game/objects/items/robot/robot_items.dm | 16 ++++++++-------- code/game/objects/items/robot/robot_parts.dm | 14 +++++++------- code/game/objects/items/robot/robot_upgrades.dm | 8 ++++---- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index cb3f99fa4c3..bb68d3f191c 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -5,7 +5,7 @@ ***********************************************************************/ //Might want to move this into several files later but for now it works here /obj/item/borg/stun - name = "Electrified Arm" + name = "electrified arm" icon = 'icons/obj/decals.dmi' icon_state = "shock" @@ -27,7 +27,7 @@ O.show_message("\red [user] has prodded [M] with an electrically-charged arm!", 1, "\red You hear someone fall", 2) /obj/item/borg/overdrive - name = "Overdrive" + name = "overdrive" icon = 'icons/obj/decals.dmi' icon_state = "shock" @@ -41,27 +41,27 @@ /obj/item/borg/sight/xray - name = "X-ray Vision" + name = "\proper x-ray Vision" sight_mode = BORGXRAY /obj/item/borg/sight/thermal - name = "Thermal Vision" + name = "\proper thermal vision" sight_mode = BORGTHERM /obj/item/borg/sight/meson - name = "Meson Vision" + name = "\proper meson vision" sight_mode = BORGMESON /obj/item/borg/sight/hud - name = "Hud" + name = "hud" var/obj/item/clothing/glasses/hud/hud = null /obj/item/borg/sight/hud/med - name = "Medical Hud" + name = "medical hud" New() @@ -71,7 +71,7 @@ /obj/item/borg/sight/hud/sec - name = "Security Hud" + name = "security hud" New() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index a8f8117da49..eff66fb38c6 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -9,35 +9,35 @@ var/list/construction_cost = list("metal"=20000,"glass"=5000) /obj/item/robot_parts/l_arm - name = "Cyborg Left Arm" + name = "cyborg left arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_arm" construction_time = 200 construction_cost = list("metal"=18000) /obj/item/robot_parts/r_arm - name = "Cyborg Right Arm" + name = "cyborg right arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_arm" construction_time = 200 construction_cost = list("metal"=18000) /obj/item/robot_parts/l_leg - name = "Cyborg Left Leg" + name = "cyborg left leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_leg" construction_time = 200 construction_cost = list("metal"=15000) /obj/item/robot_parts/r_leg - name = "Cyborg Right Leg" + name = "cyborg right leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_leg" construction_time = 200 construction_cost = list("metal"=15000) /obj/item/robot_parts/chest - name = "Cyborg Torso" + name = "cyborg torso" desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell." icon_state = "chest" construction_time = 350 @@ -46,7 +46,7 @@ var/obj/item/weapon/cell/cell = null /obj/item/robot_parts/head - name = "Cyborg Head" + name = "cyborg head" desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals." icon_state = "head" construction_time = 350 @@ -55,7 +55,7 @@ var/obj/item/device/flash/flash2 = null /obj/item/robot_parts/robot_suit - name = "Cyborg Endoskeleton" + name = "cyborg endoskeleton" desc = "A complex metal backbone with standard limb sockets and pseudomuscle anchors." icon_state = "robo_suit" construction_time = 500 diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 2f9a968d81d..c501f406aa3 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -2,7 +2,7 @@ // Contains various borg upgrades. /obj/item/borg/upgrade - name = "A borg upgrade module." + name = "borg upgrade module." desc = "Protected by FRM." icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" @@ -78,7 +78,7 @@ /obj/item/borg/upgrade/vtec - name = "cyborg VTEC Module" + name = "cyborg VTEC module" desc = "Used to kick in a cyborg's VTEC systems, increasing their speed." construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 5000) icon_state = "cyborg_upgrade2" @@ -95,7 +95,7 @@ /obj/item/borg/upgrade/tasercooler - name = "cyborg Rapid Taser Cooling Module" + name = "cyborg rapid taser cooling module" desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate." construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500) icon_state = "cyborg_upgrade3" @@ -152,7 +152,7 @@ /obj/item/borg/upgrade/syndicate/ - name = "Illegal Equipment Module" + name = "illegal equipment module" desc = "Unlocks the hidden, deadlier functions of a cyborg" construction_cost = list("metal"=10000,"glass"=15000,"diamond" = 10000) icon_state = "cyborg_upgrade3" From 7e2b7805cc2eeda505cd9997cc83efca7e923f89 Mon Sep 17 00:00:00 2001 From: Kyrah Abattoir Date: Sun, 24 Nov 2013 00:14:46 +0100 Subject: [PATCH 018/315] FIXED: inconsistencies with stack item names. CHANGE: stacks are gender = PLURAL by default because it fits. --- code/game/objects/items/stacks/rods.dm | 2 +- code/game/objects/items/stacks/sheets/light.dm | 2 +- code/game/objects/items/stacks/sheets/mineral.dm | 2 +- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- code/game/objects/items/stacks/stack.dm | 1 + code/game/objects/items/stacks/tiles/light.dm | 2 +- code/game/objects/items/stacks/tiles/plasteel.dm | 2 +- code/game/objects/items/stacks/tiles/tile_types.dm | 4 ++-- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 6b06a62a2c2..ce2698da703 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -1,5 +1,5 @@ /obj/item/stack/rods - name = "metal rods" + name = "metal rod" desc = "Some rods. Can be used for building, or something." singular_name = "metal rod" icon_state = "rods" diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 5437fdeccd5..f9d64e495d1 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -1,5 +1,5 @@ /obj/item/stack/light_w - name = "wired glass tiles" + name = "wired glass tile" singular_name = "wired glass floor tile" desc = "A glass tile, which is wired, somehow." icon_state = "glass_wire" diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 8c1870011e8..a567f48edd2 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -22,7 +22,7 @@ Mineral Sheets icon = 'icons/obj/mining.dmi' /obj/item/stack/sheet/mineral/sandstone - name = "sandstone bricks" + name = "sandstone brick" desc = "This appears to be a combination of both sand and stone." singular_name = "sandstone brick" icon_state = "sheet-sandstone" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 2390c7eecb3..7219be973f0 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -104,7 +104,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ ) /obj/item/stack/sheet/wood - name = "wooden planks" + name = "wooden plank" desc = "One can only guess that this is a bunch of wood." singular_name = "wood plank" icon_state = "sheet-wood" diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 126dc39e929..597f61856a7 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -8,6 +8,7 @@ * Stacks */ /obj/item/stack + gender = PLURAL origin_tech = "materials=1" var/list/datum/stack_recipe/recipes var/singular_name diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index 8fdcd7a5618..e869c8d0ee4 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -1,5 +1,5 @@ /obj/item/stack/tile/light - name = "light tiles" + name = "light tile" singular_name = "light floor tile" desc = "A floor tile, made out off glass. It produces light." icon_state = "tile_e" diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm index f9d4517100e..870624124fd 100644 --- a/code/game/objects/items/stacks/tiles/plasteel.dm +++ b/code/game/objects/items/stacks/tiles/plasteel.dm @@ -1,5 +1,5 @@ /obj/item/stack/tile/plasteel - name = "floor tiles" + name = "floor tile" singular_name = "floor tile" desc = "Those could work as a pretty decent throwing weapon" icon_state = "tile" diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 535d73074cc..3046209b1a8 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -9,7 +9,7 @@ * Grass */ /obj/item/stack/tile/grass - name = "grass tiles" + name = "grass tile" singular_name = "grass floor tile" desc = "A patch of grass like they often use on golf courses" icon_state = "tile_grass" @@ -26,7 +26,7 @@ * Wood */ /obj/item/stack/tile/wood - name = "wood floor tiles" + name = "wood floor tile" singular_name = "wood floor tile" desc = "an easy to fit wood floor tile" icon_state = "tile-wood" From e6c7ae57a4bf603512332fa3fd473a045263a2bc Mon Sep 17 00:00:00 2001 From: AndroidSFV Date: Sat, 23 Nov 2013 19:11:40 -0600 Subject: [PATCH 019/315] Creates a new helper proc that can be used to compare how two mobs are facing in relation to each other --- code/__HELPERS/unsorted.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index d0390d52b84..bf47e033a28 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1256,3 +1256,17 @@ var/list/WALLITEMS = list( else user << "\blue [target] is empty!" return + +proc/check_target_facings(mob/living/initator, mob/living/target) + /*This can be used to add additional effects on interactions between mobs depending on how the mobs are facing each other, such as adding a crit damage to blows to the back of a guy's head. + Given how click code currently works (Nov '13), the initiating mob will be facing the target mob most of the time + That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/ + if(!ismob(target) || !isliving(target) || target.stat || target.lying || target.weakened || target.stunned || target.paralysis || target.resting || target.sleeping || (target.status_flags & FAKEDEATH) || istype(target, /mob/living/silicon/pai)) + //Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side + return + if(initator.dir == target.dir) //mobs are facing the same direction + return 1 + if(initator.dir + 4 == target.dir || initator.dir - 4 == target.dir) //mobs are facing each other + return 2 + if(initator.dir + 2 == target.dir || initator.dir - 2 == target.dir || initator.dir + 6 == target.dir || initator.dir - 6 == target.dir) //Initating mob is looking at the target, while the target mob is looking in a direction perpendicular to the 1st + return 3 From a58b0169ae6c37ada1b567f1bc6375339235b835 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 24 Nov 2013 06:16:22 +0400 Subject: [PATCH 020/315] Tiny abstract flag improvement By petes request made items with ABSTRACT unequipable --- code/game/objects/items/weapons/storage/storage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 3baf7f4f3f6..5ecba49ee27 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -180,7 +180,7 @@ //This proc return 1 if the item can be picked up and 0 if it can't. //Set the stop_messages to stop it from printing messages /obj/item/weapon/storage/proc/can_be_inserted(obj/item/W, stop_messages = 0) - if(!istype(W)) return //Not an item + if(!istype(W) || (W.flags & ABSTRACT)) return //Not an item if(loc == W) return 0 //Means the item is already in the storage item From 81f49385d7f03ee0bae04e2da218c26e5adfda93 Mon Sep 17 00:00:00 2001 From: AndroidSFV Date: Sat, 23 Nov 2013 21:55:33 -0600 Subject: [PATCH 021/315] Incorporated Razharas' feedback --- code/__HELPERS/unsorted.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index bf47e033a28..1449f71e421 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1261,7 +1261,7 @@ proc/check_target_facings(mob/living/initator, mob/living/target) /*This can be used to add additional effects on interactions between mobs depending on how the mobs are facing each other, such as adding a crit damage to blows to the back of a guy's head. Given how click code currently works (Nov '13), the initiating mob will be facing the target mob most of the time That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/ - if(!ismob(target) || !isliving(target) || target.stat || target.lying || target.weakened || target.stunned || target.paralysis || target.resting || target.sleeping || (target.status_flags & FAKEDEATH) || istype(target, /mob/living/silicon/pai)) + if(!ismob(target) || !isliving(target) || target.lying || istype(target, /mob/living/silicon/pai)) //Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side return if(initator.dir == target.dir) //mobs are facing the same direction From d9fc4bdd5c413735dd389d24b6745626861e7191 Mon Sep 17 00:00:00 2001 From: Kyrah Abattoir Date: Sun, 24 Nov 2013 08:49:34 +0100 Subject: [PATCH 022/315] code/game/object/items/weapons/* lowercase pass code/game/object/structure/* lowercase pass (start) --- code/game/objects/items/weapons/AI_modules.dm | 34 +++++++++--------- code/game/objects/items/weapons/cards_ids.dm | 6 ++-- .../objects/items/weapons/cigs_lighters.dm | 8 ++--- code/game/objects/items/weapons/cosmetics.dm | 1 + .../items/weapons/implants/implantchair.dm | 2 +- code/game/objects/items/weapons/kitchen.dm | 2 +- code/game/objects/items/weapons/paint.dm | 29 +++++++++------ .../game/objects/items/weapons/power_cells.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 4 +-- .../objects/items/weapons/storage/boxes.dm | 36 +++++++++---------- .../objects/items/weapons/storage/fancy.dm | 2 +- .../objects/items/weapons/storage/firstaid.dm | 6 ++-- .../objects/items/weapons/storage/lockbox.dm | 2 +- .../items/weapons/storage/uplink_kits.dm | 12 +++---- .../objects/items/weapons/vending_items.dm | 2 +- code/game/objects/items/weapons/weaponry.dm | 2 +- code/game/objects/structures/bedsheet_bin.dm | 2 +- code/game/objects/structures/displaycase.dm | 2 +- code/game/objects/structures/door_assembly.dm | 8 ++--- 19 files changed, 86 insertions(+), 76 deletions(-) diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index e40b7ff1902..f55625cbde5 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -7,7 +7,7 @@ AI MODULES // AI module /obj/item/weapon/aiModule - name = "AI Module" + name = "\improper AI module" icon = 'icons/obj/module.dmi' icon_state = "std_mod" item_state = "electronic" @@ -45,7 +45,7 @@ AI MODULES /******************** Safeguard ********************/ /obj/item/weapon/aiModule/safeguard - name = "'Safeguard' AI Module" + name = "\improper 'Safeguard' AI module" var/targetName = "" desc = "A 'safeguard' AI module: 'Safeguard . Individuals that threaten are not human and are a threat to humans.'" origin_tech = "programming=3;materials=4" @@ -73,7 +73,7 @@ AI MODULES /******************** OneHuman ********************/ /obj/item/weapon/aiModule/oneHuman - name = "'OneHuman' AI Module" + name = "\improper 'OneHuman' AI module" var/targetName = "" desc = "A 'one human' AI module: 'Only is human.'" origin_tech = "programming=3;materials=6" //made with diamonds! @@ -105,7 +105,7 @@ AI MODULES /******************** ProtectStation ********************/ /obj/item/weapon/aiModule/protectStation - name = "'ProtectStation' AI Module" + name = "\improper 'ProtectStation' AI module" desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.'" origin_tech = "programming=3;materials=4" //made of gold @@ -120,7 +120,7 @@ AI MODULES /******************** Quarantine ********************/ /obj/item/weapon/aiModule/quarantine - name = "'Quarantine' AI Module" + name = "\improper 'Quarantine' AI module" desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.'" origin_tech = "programming=3;biotech=2;materials=4" @@ -135,7 +135,7 @@ AI MODULES /******************** OxygenIsToxicToHumans ********************/ /obj/item/weapon/aiModule/oxygen - name = "'OxygenIsToxicToHumans' AI Module" + name = "\improper 'OxygenIsToxicToHumans' AI module" desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.'" origin_tech = "programming=3;biotech=2;materials=4" @@ -150,7 +150,7 @@ AI MODULES /****************** New Freeform ******************/ /obj/item/weapon/aiModule/freeform // Slightly more dynamic freeform module -- TLE - name = "'Freeform' AI Module" + name = "\improper 'Freeform' AI module" var/newFreeFormLaw = "" var/lawpos = 15 desc = "A 'freeform' AI module: ''" @@ -184,7 +184,7 @@ AI MODULES /******************** Reset ********************/ /obj/item/weapon/aiModule/reset - name = "'Reset' AI Module" + name = "\improper 'Reset' AI module" var/targetName = "name" desc = "A 'reset' AI module: Resets back to the original core laws." origin_tech = "programming=3;materials=4" @@ -197,7 +197,7 @@ AI MODULES /******************** Purge ********************/ /obj/item/weapon/aiModule/purge // -- TLE - name = "'Purge' AI Module" + name = "\improper 'Purge' AI module" desc = "A 'purge' AI Module: 'Purges all laws.'" origin_tech = "programming=3;materials=6" @@ -210,7 +210,7 @@ AI MODULES /******************** Asimov ********************/ /obj/item/weapon/aiModule/asimov // -- TLE - name = "'Asimov' Core AI Module" + name = "\improper 'Asimov' core AI module" desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=4" @@ -225,7 +225,7 @@ AI MODULES /******************** Corporate ********************/ /obj/item/weapon/aiModule/corp - name = "'Corporate' Core AI Module" + name = "\improper 'Corporate' core AI module" desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=4" @@ -241,7 +241,7 @@ AI MODULES /****************** P.A.L.A.D.I.N. **************/ /obj/item/weapon/aiModule/paladin // -- NEO - name = "'P.A.L.A.D.I.N.' Core AI Module" + name = "\improper 'P.A.L.A.D.I.N.' core AI module" desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=6" @@ -257,7 +257,7 @@ AI MODULES /****************** T.Y.R.A.N.T. *****************/ /obj/item/weapon/aiModule/tyrant // -- Darem - name = "'T.Y.R.A.N.T.' Core AI Module" + name = "\improper 'T.Y.R.A.N.T.' core AI module" desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=6;syndicate=2" @@ -272,7 +272,7 @@ AI MODULES /******************** Freeform Core ******************/ /obj/item/weapon/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE - name = "'Freeform' Core AI Module" + name = "\improper 'Freeform' core AI module" var/newFreeFormLaw = "" desc = "A 'freeform' Core AI module: ''" origin_tech = "programming=3;materials=6" @@ -299,7 +299,7 @@ AI MODULES /******************** Hacked AI Module ******************/ /obj/item/weapon/aiModule/syndicate // Slightly more dynamic freeform module -- TLE - name = "Hacked AI Module" + name = "hacked AI module" var/newFreeFormLaw = "" desc = "A hacked AI law module: ''" origin_tech = "programming=3;materials=6;syndicate=7" @@ -329,7 +329,7 @@ AI MODULES /******************** Robocop ********************/ /obj/item/weapon/aiModule/robocop // -- TLE - name = "'Robocop' Core AI Module" + name = "\improper 'Robocop' core AI module" desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'" origin_tech = "programming=4" @@ -345,7 +345,7 @@ AI MODULES /******************** Antimov ********************/ /obj/item/weapon/aiModule/antimov // -- TLE - name = "'Antimov' Core AI Module" + name = "\improper 'Antimov' core AI module" desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=4" diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 574a9c8656d..dc812d1d962 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -34,14 +34,14 @@ set src in usr if (t) - src.name = text("Data Disk- '[]'", t) + src.name = text("data disk- '[]'", t) else - src.name = "Data Disk" + src.name = "data disk" src.add_fingerprint(usr) return /obj/item/weapon/card/data/clown - name = "coordinates to clown planet" + name = "\proper the coordinates to clown planet" icon_state = "data" item_state = "card-id" layer = 3 diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index d5547dd732f..05e8dc655a3 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -223,7 +223,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM // CIGARS // //////////// /obj/item/clothing/mask/cigarette/cigar - name = "Premium Cigar" + name = "premium cigar" desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigaroff" icon_on = "cigaron" @@ -235,14 +235,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM chem_volume = 20 /obj/item/clothing/mask/cigarette/cigar/cohiba - name = "Cohiba Robusto Cigar" + name = "\improper Cohiba Robusto cigar" desc = "There's little more you could want from a cigar." icon_state = "cigar2off" icon_on = "cigar2on" icon_off = "cigar2off" /obj/item/clothing/mask/cigarette/cigar/havana - name = "Premium Havanian Cigar" + name = "premium Havanian cigar" desc = "A cigar fit for only the best for the best." icon_state = "cigar2off" icon_on = "cigar2on" @@ -336,7 +336,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lit = 0 /obj/item/weapon/lighter/zippo - name = "Zippo lighter" + name = "\improper Zippo lighter" desc = "The zippo." icon_state = "zippo" item_state = "zippo" diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index ba5088e1d25..cc0a230a848 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -1,4 +1,5 @@ /obj/item/weapon/lipstick + gender = PLURAL name = "red lipstick" desc = "A generic brand of lipstick." icon = 'icons/obj/items.dmi' diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 7b2b7197743..01cbebdc078 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 /obj/machinery/implantchair - name = "Loyalty Implanter" + name = "loyalty implanter" desc = "Used to implant occupants with loyalty implants." icon = 'icons/obj/machines/implantchair.dmi' icon_state = "implantchair" diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 53bec2de81f..ef1c816f303 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -129,7 +129,7 @@ * Bucher's cleaver */ /obj/item/weapon/butch - name = "butcher's Cleaver" + name = "butcher's cleaver" icon = 'icons/obj/kitchen.dmi' icon_state = "butch" desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products." diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 27b4a1801b2..46770713eed 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -3,7 +3,7 @@ var/global/list/cached_icons = list() /obj/item/weapon/paint - name = "Paint Can" + name = "paint can" desc = "Used to recolor floors and walls. Can not be removed by the janitor." icon = 'icons/obj/items.dmi' icon_state = "paint_neutral" @@ -13,43 +13,51 @@ var/global/list/cached_icons = list() var/paintleft = 10 /obj/item/weapon/paint/red - name = "Red paint" + gender= PLURAL + name = "red paint" item_color = "C73232" //"FF0000" icon_state = "paint_red" /obj/item/weapon/paint/green - name = "Green paint" + gender= PLURAL + name = "green paint" item_color = "2A9C3B" //"00FF00" icon_state = "paint_green" /obj/item/weapon/paint/blue - name = "Blue paint" + gender= PLURAL + name = "blue paint" item_color = "5998FF" //"0000FF" icon_state = "paint_blue" /obj/item/weapon/paint/yellow - name = "Yellow paint" + gender= PLURAL + name = "yellow paint" item_color = "CFB52B" //"FFFF00" icon_state = "paint_yellow" /obj/item/weapon/paint/violet - name = "Violet paint" + gender= PLURAL + name = "violet paint" item_color = "AE4CCD" //"FF00FF" icon_state = "paint_violet" /obj/item/weapon/paint/black - name = "Black paint" + gender= PLURAL + name = "black paint" item_color = "333333" icon_state = "paint_black" /obj/item/weapon/paint/white - name = "White paint" + gender= PLURAL + name = "white paint" item_color = "FFFFFF" icon_state = "paint_white" /obj/item/weapon/paint/anycolor - name = "Any color" + gender= PLURAL + name = "any color" icon_state = "paint_neutral" attack_self(mob/user as mob) @@ -97,7 +105,8 @@ var/global/list/cached_icons = list() return /obj/item/weapon/paint/paint_remover - name = "Paint remover" + gender = PLURAL + name = "paint remover" icon_state = "paint_neutral" afterattack(turf/target, mob/user as mob,proximity) diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index a6f58984b41..22c206a10d8 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -36,7 +36,7 @@ charge = 0 /obj/item/weapon/cell/secborg - name = "\improper Security borg rechargable D battery" + name = "security borg rechargable D battery" origin_tech = "powerstorage=0" maxcharge = 600 //600 max charge / 100 charge per shot = six shots g_amt = 40 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index ab17c8d7bfb..49e9ae665bd 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -29,7 +29,7 @@ */ /obj/item/weapon/storage/backpack/holding - name = "Bag of Holding" + name = "bag of holding" desc = "A backpack that opens into a localized pocket of Blue Space." origin_tech = "bluespace=4" icon_state = "holdingpack" @@ -85,7 +85,7 @@ item_state = "backpack" /obj/item/weapon/storage/backpack/clown - name = "Giggles Von Honkerton" + name = "Giggles von Honkerton" desc = "It's a backpack made by Honk! Co." icon_state = "clownpack" item_state = "clownpack" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 5fae276d1ee..f6cffd40c90 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -86,7 +86,7 @@ new /obj/item/clothing/gloves/latex(src) /obj/item/weapon/storage/box/masks - name = "sterile masks" + name = "box of sterile masks" desc = "This box contains masks of sterility." icon_state = "sterile" @@ -101,7 +101,7 @@ new /obj/item/clothing/mask/surgical(src) /obj/item/weapon/storage/box/syringes - name = "syringes" + name = "box of syringes" desc = "A box full of syringes." desc = "A biohazard alert warning is printed on the box" icon_state = "syringe" @@ -117,7 +117,7 @@ new /obj/item/weapon/reagent_containers/syringe( src ) /obj/item/weapon/storage/box/beakers - name = "beaker box" + name = "box of beakers" icon_state = "beaker" New() @@ -131,7 +131,7 @@ new /obj/item/weapon/reagent_containers/glass/beaker( src ) /obj/item/weapon/storage/box/injectors - name = "\improper DNA injectors" + name = "box of DNA injectors" desc = "This box contains injectors it seems." New() @@ -202,7 +202,7 @@ new /obj/item/weapon/grenade/chem_grenade/teargas(src) /obj/item/weapon/storage/box/emps - name = "emp grenades" + name = "box of emp grenades" desc = "A box with 5 emp grenades." icon_state = "flashbang" @@ -215,7 +215,7 @@ new /obj/item/weapon/grenade/empgrenade(src) /obj/item/weapon/storage/box/trackimp - name = "tracking implant kit" + name = "boxed tracking implant kit" desc = "Box full of scum-bag tracking utensils." icon_state = "implant" @@ -230,7 +230,7 @@ new /obj/item/weapon/locator(src) /obj/item/weapon/storage/box/chemimp - name = "chemical implant kit" + name = "boxed chemical implant kit" desc = "Box of stuff used to implant chemicals." icon_state = "implant" @@ -245,7 +245,7 @@ new /obj/item/weapon/implantpad(src) /obj/item/weapon/storage/box/exileimp - name = "exile implant kit" + name = "boxed exile implant kit" desc = "Box of exile implants. It has a picture of a clown being booted through the Gateway." icon_state = "implant" @@ -259,7 +259,7 @@ new /obj/item/weapon/implanter(src) /obj/item/weapon/storage/box/rxglasses - name = "prescription glasses" + name = "box of prescription glasses" desc = "This box contains nerd glasses." icon_state = "glasses" @@ -339,7 +339,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) /obj/item/weapon/storage/box/ids - name = "spare IDs" + name = "box of spare IDs" desc = "Has so many empty IDs." icon_state = "id" @@ -354,7 +354,7 @@ new /obj/item/weapon/card/id(src) /obj/item/weapon/storage/box/prisoner - name = "prisoner IDs" + name = "box of prisoner IDs" desc = "Take away their last shred of dignity, their name." icon_state = "id" @@ -369,7 +369,7 @@ new /obj/item/weapon/card/id/prisoner/seven(src) /obj/item/weapon/storage/box/seccarts - name = "Spare R.O.B.U.S.T. Cartridges" + name = "box of spare R.O.B.U.S.T. Cartridges" desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security." icon_state = "pda" @@ -384,7 +384,7 @@ new /obj/item/weapon/cartridge/security(src) /obj/item/weapon/storage/box/handcuffs - name = "spare handcuffs" + name = "box of spare handcuffs" desc = "A box full of handcuffs." icon_state = "handcuff" @@ -399,7 +399,7 @@ new /obj/item/weapon/handcuffs(src) /obj/item/weapon/storage/box/fakesyndiesuit - name = "Space Suit and Helmet" + name = "boxed space suit and helmet" desc = "A sleek, sturdy box used to hold replica spacesuits." icon_state = "box_of_doom" @@ -409,7 +409,7 @@ new /obj/item/clothing/suit/syndicatefake(src) /obj/item/weapon/storage/box/mousetraps - name = "box of Pest-B-Gon Mousetraps" + name = "box of Pest-B-Gon mousetraps" desc = "WARNING: Keep out of reach of children." icon_state = "mousetraps" @@ -473,7 +473,7 @@ return /obj/item/weapon/storage/box/lights - name = "replacement bulbs" + name = "box of replacement bulbs" icon = 'icons/obj/storage.dmi' icon_state = "light" desc = "This box is shaped on the inside so that only light tubes and bulbs fit." @@ -490,7 +490,7 @@ new /obj/item/weapon/light/bulb(src) /obj/item/weapon/storage/box/lights/tubes - name = "replacement tubes" + name = "box of replacement tubes" icon_state = "lighttube" /obj/item/weapon/storage/box/lights/tubes/New() @@ -499,7 +499,7 @@ new /obj/item/weapon/light/tube(src) /obj/item/weapon/storage/box/lights/mixed - name = "replacement lights" + name = "box of replacement lights" icon_state = "lightmixed" /obj/item/weapon/storage/box/lights/mixed/New() diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 4201bcf179e..7305201a646 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -80,7 +80,7 @@ */ /obj/item/weapon/storage/fancy/candle_box - name = "Candle pack" + name = "candle pack" desc = "A pack of red candles." icon = 'icons/obj/candle.dmi' icon_state = "candlebox5" diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index e26d44b1030..890042b9b27 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -150,7 +150,7 @@ return /obj/item/weapon/storage/pill_bottle/kelotane - name = "Pill bottle (kelotane)" + name = "pill bottle (kelotane)" desc = "Contains pills used to treat burns." New() @@ -164,7 +164,7 @@ new /obj/item/weapon/reagent_containers/pill/kelotane( src ) /obj/item/weapon/storage/pill_bottle/antitox - name = "Pill bottle (Anti-toxin)" + name = "pill bottle (Anti-toxin)" desc = "Contains pills used to counter toxins." New() @@ -178,7 +178,7 @@ new /obj/item/weapon/reagent_containers/pill/antitox( src ) /obj/item/weapon/storage/pill_bottle/inaprovaline - name = "Pill bottle (inaprovaline)" + name = "pill bottle (inaprovaline)" desc = "Contains pills used to stabilize patients." New() diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 9aea4a2dbbd..e0584437f39 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -70,7 +70,7 @@ /obj/item/weapon/storage/lockbox/loyalty - name = "Lockbox (Loyalty Implants)" + name = "lockbox (Loyalty Implants)" req_access = list(access_security) New() diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 044be6baf21..469460e3d63 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -78,12 +78,12 @@ return /obj/item/weapon/storage/box/syndie_kit - name = "Box" + name = "box" desc = "A sleek, sturdy box" icon_state = "box_of_doom" /obj/item/weapon/storage/box/syndie_kit/imp_freedom - name = "Freedom Implant (with injector)" + name = "boxed freedom implant (with injector)" /obj/item/weapon/storage/box/syndie_kit/imp_freedom/New() ..() @@ -112,7 +112,7 @@ return*/ /obj/item/weapon/storage/box/syndie_kit/imp_uplink - name = "Uplink Implant (with injector)" + name = "boxed uplink implant (with injector)" /obj/item/weapon/storage/box/syndie_kit/imp_uplink/New() ..() @@ -123,7 +123,7 @@ /obj/item/weapon/storage/box/syndie_kit/imp_adrenal - name = "Adrenal Implant (with injector)" + name = "boxed adrenal implant (with injector)" /obj/item/weapon/storage/box/syndie_kit/imp_adrenal/New() ..() @@ -134,7 +134,7 @@ /obj/item/weapon/storage/box/syndie_kit/space - name = "Space Suit and Helmet" + name = "boxed space suit and helmet" /obj/item/weapon/storage/box/syndie_kit/space/New() ..() @@ -143,7 +143,7 @@ return /obj/item/weapon/storage/box/syndie_kit/emp - name = "EMP kit" + name = "boxed EMP kit" /obj/item/weapon/storage/box/syndie_kit/emp/New() ..() diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm index 3f44e648641..9b49f566ed1 100644 --- a/code/game/objects/items/weapons/vending_items.dm +++ b/code/game/objects/items/weapons/vending_items.dm @@ -1,5 +1,5 @@ /obj/item/weapon/vending_refill - name = "Resupply canister" + name = "resupply canister" var/machine_name = "Generic" icon = 'icons/obj/vending_restock.dmi' diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index ba312a4eb9b..4b2a27aa54d 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -98,7 +98,7 @@ return 1 obj/item/weapon/wirerod - name = "Wired rod" + name = "wired rod" desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." icon_state = "wiredrod" item_state = "rods" diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index a8816a8d83c..df75746b16a 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -128,7 +128,7 @@ LINEN BINS item_color = "cargo" /obj/item/weapon/bedsheet/centcom - name = "centcom bedsheet" + name = "\improper Centcom bedsheet" desc = "Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials." icon_state = "sheetcentcom" item_color = "centcom" diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index a9a767b84bc..c6cf316b2bc 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -1,5 +1,5 @@ /obj/structure/displaycase - name = "Display Case" + name = "display case" icon = 'icons/obj/stationobjs.dmi' icon_state = "glassbox1" desc = "A display case for prized possessions. It taunts you to kick it." diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index bc38fc27fe8..816dcacaea4 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -1,7 +1,7 @@ obj/structure/door_assembly icon = 'icons/obj/doors/door_assembly.dmi' - name = "Airlock Assembly" + name = "airlock assembly" icon_state = "door_as_0" anchored = 0 density = 1 @@ -20,7 +20,7 @@ obj/structure/door_assembly base_icon_state = copytext(icon_state,1,lentext(icon_state)) door_assembly_0 - name = "Airlock Assembly" + name = "airlock assembly" icon_state = "door_as_1" airlock_type = /obj/machinery/door/airlock anchored = 1 @@ -28,7 +28,7 @@ obj/structure/door_assembly state = 1 door_assembly_com - name = "Command Airlock Assembly" + name = "command airlock assembly" icon_state = "door_as_com1" glass_base_icon_state = "door_as_gcom" typetext = "command" @@ -44,7 +44,7 @@ obj/structure/door_assembly icon_state = "door_as_gcom1" door_assembly_sec - name = "Security Airlock Assembly" + name = "security airlock assembly" icon_state = "door_as_sec1" glass_base_icon_state = "door_as_gsec" typetext = "security" From 67d045c9ab9ea1720a14f6d64ae14d9aec90fa45 Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 24 Nov 2013 15:36:24 +0100 Subject: [PATCH 023/315] Integrated Aru's condipack sprites and made the dinnerware vendor dispense ketchup and hotsauce packs. --- code/game/machinery/vending.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 4 +- .../reagent_containers/food/condiment.dm | 39 +++++++++++++----- icons/obj/food.dmi | Bin 85152 -> 86968 bytes 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 731ce8e7f04..e8a6b8a9ffa 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -631,7 +631,7 @@ desc = "A kitchen and restaurant equipment vendor" product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" - products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2) + products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5) contraband = list(/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/butch = 2) /obj/machinery/vending/sovietsoda diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 5431b64029d..b6d0a12af6a 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -345,9 +345,9 @@ var/obj/item/weapon/reagent_containers/food/condiment/pack/P = new/obj/item/weapon/reagent_containers/food/condiment/pack(src.loc) if(!name) name = reagents.get_master_reagent_name() + P.originalname = name P.name = "[name] pack" - P.originaldesc = "A small condiment pack. The label says it contains [name]." - P.desc = P.originaldesc + P.desc = "A small condiment pack. The label says it contains [name]." reagents.trans_to(P,10) else if (href_list["createbottle"]) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 1f03e969a8f..e4e39262204 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -157,12 +157,13 @@ /obj/item/weapon/reagent_containers/food/condiment/pack name = "condiment pack" desc = "A small plastic pack with condiments to put on your food" - icon_state = "blankbag" + icon_state = "condi_empty" volume = 10 amount_per_transfer_from_this = 10 possible_transfer_amounts = 10 flags = FPRINT | TABLEPASS - var/originaldesc + possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) + var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. /obj/item/weapon/reagent_containers/food/condiment/pack/New() ..() @@ -175,10 +176,10 @@ /obj/item/weapon/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity) if(!proximity) return - //You can tear the bag open above food to put the condiments on it. - else if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) + //You can tear the bag open above food to put the condiments on it, obviously. + if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) if(!reagents.total_volume) - user << "You tear open the [src], but there's nothing in it." + user << "You tear open [src], but there's nothing in it." Del() return if(target.reagents.total_volume >= target.reagents.maximum_volume) @@ -186,7 +187,7 @@ Del() return else - user << "You tear open the [src] above [target] and the condiments drip onto it." + user << "You tear open [src] above [target] and the condiments drip onto it." src.reagents.trans_to(target, amount_per_transfer_from_this) Del() @@ -198,8 +199,26 @@ icon_state = temp_list[1] desc = temp_list[3] else - icon_state = pick("mixedbag") - desc = originaldesc + icon_state = "condi_mixed" + desc = "A small condiment pack. The label says it contains [originalname]" else - icon_state = "blankbag" - desc = "A small condiment bag. It looks empty." + icon_state = "condi_empty" + desc = "A small condiment pack. It is empty." + +//Ketchup +/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup + name = "Ketchup pack" + originalname = "Ketchup" + +/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup/New() + ..() + reagents.add_reagent("ketchup", 10) + +//Hot sauce +/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce + name = "Hotsauce pack" + originalname = "Hotsauce" + +/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce/New() + ..() + reagents.add_reagent("capsaicin", 10) diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 3d1095d2844b31f8b4b58d474b6f2ff61010316a..6b8e7af858fbd6470edc3db06d29ed0770cbceed 100644 GIT binary patch literal 86968 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

?yzeTQMt;fRZFd{&}{@eE!+tLq|ua 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 D8LR2)+EiFyrGvMXKcV~4*G@T7 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

wS^m*IefCagzV2qdLE$nTxdn%jhv=H+ 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 From b72396ad31278589dbc31c604698f13731c2a749 Mon Sep 17 00:00:00 2001 From: AndroidSFV Date: Sun, 24 Nov 2013 09:21:36 -0600 Subject: [PATCH 024/315] Mr.Person is right. Kinda embarrassing to be honest. --- code/__HELPERS/unsorted.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 1449f71e421..3afdf70e2fb 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1261,7 +1261,7 @@ proc/check_target_facings(mob/living/initator, mob/living/target) /*This can be used to add additional effects on interactions between mobs depending on how the mobs are facing each other, such as adding a crit damage to blows to the back of a guy's head. Given how click code currently works (Nov '13), the initiating mob will be facing the target mob most of the time That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/ - if(!ismob(target) || !isliving(target) || target.lying || istype(target, /mob/living/silicon/pai)) + if(!ismob(target) || target.lying || istype(target, /mob/living/silicon/pai)) //Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side return if(initator.dir == target.dir) //mobs are facing the same direction From c3ab6146b252b9df2eb83ac6da310b03f699468e Mon Sep 17 00:00:00 2001 From: Malkevin Date: Sun, 24 Nov 2013 17:25:25 +0000 Subject: [PATCH 025/315] Expanded the suit storage for the Captain's Tunic Made the suit storage on the Captain's Tunic more useful than just a place to store your e-o2 tank. You can now store the nuke disk, stamps, medal box, flashes and melee weapons (mainly intended for the Chain of Command), and of course - smoking paraphernalia --- code/modules/clothing/suits/jobs.dm | 1 + html/changelog.html | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index fd56d1627d0..023a3edc0f5 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -20,6 +20,7 @@ item_state = "bio_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT + allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen) //Chaplain /obj/item/clothing/suit/chaplain_hoodie diff --git a/html/changelog.html b/html/changelog.html index 12397f294c4..ffa91c885ae 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,7 +53,16 @@ should be listed in the changelog upon commit tho. Thanks. --> - + + +

+

16 November 2013

From 20964837d17a890bf5a5941dc771f742252c17d1 Mon Sep 17 00:00:00 2001 From: Malkevin Date: Sun, 24 Nov 2013 17:34:05 +0000 Subject: [PATCH 026/315] Forgot to add the flask to the tunic --- code/modules/clothing/suits/jobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 023a3edc0f5..6adce1d083f 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -20,7 +20,7 @@ item_state = "bio_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen) //Chaplain /obj/item/clothing/suit/chaplain_hoodie From 7d52fe88750469565031050ea4d0a80ca036c5d7 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 24 Nov 2013 17:54:58 +0000 Subject: [PATCH 027/315] * Modified the disposals room to have a crusher and a stacking machine. It will allow the crew to recycle trash items. * Made conveyor belts invertable, to allow you to use corner pieces that are only intended for going backwards or forwards. * Added a new variable for disposal outlets which let you change their throw range. Default is 2 now. * The crusher can now be used by a screwdriver to de-emag it. --- code/game/machinery/recycler.dm | 4 ++ code/modules/recycling/conveyor2.dm | 9 +++- code/modules/recycling/disposal.dm | 9 ++-- maps/tgstation.2.1.2.dmm | 67 ++++++++++++++++++----------- 4 files changed, 57 insertions(+), 32 deletions(-) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 997f795b69f..429e2ce6cab 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -37,6 +37,10 @@ var/const/SAFETY_COOLDOWN = 100 safety_mode = 0 update_icon() playsound(src.loc, "sparks", 75, 1, -1) + else if(istype(I, /obj/item/weapon/screwdriver) && emagged) + emagged = 0 + update_icon() + user << "You reset the crusher to its default factory settings." else ..() diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index af110da5b57..939d55a5739 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -15,6 +15,7 @@ var/list/affecting // the list of all items that will be moved this ptick var/id = "" // the control ID - must match controller ID + var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons /obj/machinery/conveyor/centcom_auto id = "round_end_belt" @@ -38,7 +39,7 @@ operating = 0 else operating = 1 - icon_state = "conveyor[operating]" + icon_state = "conveyor[operating * verted]" // create a conveyor /obj/machinery/conveyor/New(loc, newdir) @@ -70,6 +71,10 @@ if(SOUTHWEST) forwards = WEST backwards = NORTH + if(verted == -1) + var/temp = forwards + forwards = backwards + backwards = temp /obj/machinery/conveyor/proc/setmove() if(operating == 1) @@ -87,7 +92,7 @@ operating = 0 if(stat & NOPOWER) operating = 0 - icon_state = "conveyor[operating]" + icon_state = "conveyor[operating * verted]" // machine process // move items to the target location diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index de54cfbe6ee..547c308003a 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -192,7 +192,7 @@ // can breath normally in the disposal /obj/machinery/disposal/alter_health() return get_turf(src) - + /obj/machinery/disposal/relaymove(mob/user as mob) attempt_escape(user) @@ -720,7 +720,7 @@ H.active = 0 H.loc = src return - if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile + if(istype(T,/turf/simulated/floor && T.intact)) //intact floor, pop the tile var/turf/simulated/floor/F = T //F.health = 100 F.burnt = 1 @@ -1233,6 +1233,7 @@ var/turf/target // this will be where the output objects are 'thrown' to. var/mode = 0 var/start_eject = 0 + var/eject_range = 2 New() ..() @@ -1262,10 +1263,10 @@ AM.loc = src.loc AM.pipe_eject(dir) spawn(5) - AM.throw_at(target, 3, 1) + if(AM) + AM.throw_at(target, eject_range, 1) H.vent_gas(src.loc) del(H) - return attackby(var/obj/item/I, var/mob/user) diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index c7b10c917cd..888b736c2ef 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -2542,7 +2542,7 @@ "aWT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/secondary/exit) "aWU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/secondary/exit) "aWV" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port) -"aWW" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/port) +"aWW" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aWX" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/port) "aWY" = (/obj/structure/rack{dir = 4},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/port) "aWZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2588,7 +2588,7 @@ "aXN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aXO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aXP" = (/turf/simulated/wall,/area/maintenance/disposal) -"aXQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) +"aXQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (NORTH)"; icon_state = "pipe-j2"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/port) "aXR" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aXS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aXT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2646,10 +2646,10 @@ "aYT" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) "aYU" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aYV" = (/obj/machinery/conveyor{dir = 5; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aYW" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"aYW" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aYX" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aYY" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aYZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/disposal) +"aYY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/port) +"aYZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aZa" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "aZb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/port) "aZc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2714,9 +2714,9 @@ "baj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bak" = (/turf/simulated/wall,/area/maintenance/asmaint2) "bal" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bam" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bam" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor/plating,/area/maintenance/disposal) "ban" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bao" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port) +"bao" = (/obj/machinery/mineral/stacking_unit_console{dir = 2; machinedir = 8},/turf/simulated/wall,/area/maintenance/disposal) "bap" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port) "baq" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bar" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2794,11 +2794,11 @@ "bbL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bbM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bbN" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bbO" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bbO" = (/obj/structure/disposalpipe/trunk{dir = 2},/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; layer = 3},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) "bbP" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bbQ" = (/turf/simulated/floor/plating,/area/maintenance/disposal) -"bbR" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating,/area/maintenance/disposal) -"bbS" = (/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Disposal APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bbR" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/mineral/output,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bbS" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bbT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bbU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port) "bbV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2866,11 +2866,11 @@ "bdf" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/power/apc{dir = 4; name = "Research Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bdg" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bdh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bdi" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bdj" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdi" = (/obj/machinery/power/apc{dir = 8; name = "Disposal APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/port) "bdk" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/disposal) -"bdl" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bdm" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdl" = (/obj/machinery/conveyor{dir = 10; id = "garbage"; verted = -1},/obj/machinery/mineral/input,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdm" = (/obj/machinery/conveyor{dir = 9; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) "bdn" = (/obj/structure/closet/crate,/obj/item/weapon/coin/twoheaded,/turf/simulated/floor/plating,/area/maintenance/port) "bdo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/port) "bdp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2956,7 +2956,7 @@ "beR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "beS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "beT" = (/obj/machinery/light/small{dir = 8},/obj/machinery/mass_driver{id = "trash"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) -"beU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"beU" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "beV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/port) "beW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "beX" = (/turf/simulated/wall/r_wall,/area/maintenance/port) @@ -3028,7 +3028,7 @@ "bgl" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bgm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bgn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bgo" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) +"bgo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bgp" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/disposal) "bgq" = (/turf/space,/area/supply/station) "bgr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -8237,6 +8237,20 @@ "dcu" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcv" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcw" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) +"dcx" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) +"dcy" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcz" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcA" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler,/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcB" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/disposal) +"dcC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcD" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; layer = 3; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcE" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcF" = (/obj/effect/decal/cleanable/oil,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) +"dcH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) +"dcI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcJ" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8365,16 +8379,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaTmaTnaQyathasdaToaRWaTpaRXaRXaRXaRXaTpaRWaNJaTqaTraScaSdaTsaTtaTuaTvaSeaTwaTxaTyaJNaTzaTAaTBaLhaJNaTCaTDaTEaTEaTEaTEaTFaTEaTEaTGaTHaTHaTHaTIaTHaTJaTKaTLaTLaTMaTNaTOaTOaTOaTOaTOaTPaTQaTRaTSaSKaTTaSKaSKaTUaTVaSKaTTaSKaTWaTXaTYaTZaTZaTZaTZaTZaTZaUaaUbaTLaTLaDOaUcaUdaUeaUfaFlaFlaFlaUgaUhaUiaFlaUjaUkaUlaDTaDTaDTaUmaUnaUnaUnaDTaDTaDTaUoaMbaMbaUpaUqaUraUsaImaDXaUtaTgaUuazaaUvaUwaUxaQgaUyaUwaUzaQgaUAazhaUBaBfaUCaMjaMjaUCaBfaUDazhaUEaUFaUGaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbasbaUHaJHaUIaNLaUJaUJaUJaRWaUKaUJaULaUJaNJaUMaUNaUOaUPaUQaUQaURaUSaUQaUTaTxaUUaJNaTzaTAaTBaLhaJNaUVaTDaTEaUWaUXaUXaUXaUYaTEaUZaVaaVbaVcaTKaTKaTKaTKaDAaDAaVdaVeaVfaVgaVhaViaVjaVkaVlaVmaSKaVnaVoaVpaVpaVqaVpaVpaVoaVpaVraVsaVtaVuaVvaVwaVxaVyaVzaVAaSSaDAaDAaDOaDOaDOaDOaDOaVBaMYaVBaVCaVDaDOaDOaDOaDOaDOaVEaVFaVFaVFaVFaVFaVFaVGaVFaVEaImaVHaVHaVIaThaThaThaThaVEaUtaVJaUuazaazaazaazaazaaVKazaazaazaazaazhaVLaVMaVNaVNaVNaVNaVOazhazhaVPaNAaVQaNAaNAaQtaNCaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaukanjaVRavgaQyanYanYanYanjanjanYaVSaCSaVTaNJaNJaNJaNJaNJaNJaNJaNJaNJaVUaQVaVVaSdaTsaVWaTvaVXaSeaVYaVZaWaaJNaTzaTAaTBaLhaJNaUVaTDaTEaUXaWbaWbaUXaWbaTEaUZaWcaWdaWdaWeaWfaWgaTKaWhaDAaSAaWiaWjaWkaWlaWmaWmaWlaWnaWoaSKaWpaVoaWqaWraWsaWtaWuaVoaWvaVraWwaVzaVzaWxaWyaWzaVzaWAaVAaSSaWBaDAaWCaWDaThaThaThaThaThaThaThaThaWEaThaThaThaThaWFaThaThaThaThaThaThaThaThaWDaThaThaThaThaThaThaThaThaWGaWHaWIaWJaWJaWKaWLaWLaWMaWNaWOaWLaWPaWLaWLaWQaWLaWLaWLaWLaWLaWLaWRaWSaWTaWUaVQaNAaNAaNAaPaaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaMzaMzaMzaMzaMzaMzaWWaWXaJKaWYaMzaScaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxaXxaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPaXPaXPaXQaXPaXPaXPaMzaJKaJKaJKaJKaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYQaYRaYSaYTaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPaYVaYWaYXaYXaYYaYZaZaaZbaZcaZcaZcaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibajbakaKQaKRaKRaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPbalaXPbambanaXPaXPaXPbaoaJKaJKaJKbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaXPbbNaXPbbObbPbbQbbRaXPbbSaMzaJKaMzbbTaSeaSeaSeaSeaSeaSebbUbbVbbWaMzbbXaTEaTEaTEbbYaTEaTEaTEbbZaTEaTEaTEaTEbcabcbbccbcdaWdaWdaYbbceaZwaYdaDAbcfaZxbcgbaNbchbchbchaVjbcibcjaSKaVpbckaVpbclaYmaVpaVpbckaVpaSKbcmbcnbcobcpaVzaZJbcqaVzbcrbcsbctbcuaZNbcvbcwbcxbcybczbcAbblbcBbblbcCbblbblbcDbcEbcFbcGbcHaZTbcIbbrbcIbbrbcIbcJbbraZUbcKbcKbcLbcMaZYbcNbaabcObcPbcQbcRbcRbadbcSbcTbcUbcVbcWbcXbcYbadbcZbafbdabaibdbbdcbdbbddbdebdfbaibdgbdhaaaaafaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaaaafaaaaXPbdiaXPbdjbbQbdkbdlbdmaMzaMzaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObdPbdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbekbelbembembenbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRbaibdgbeSaafaafaaaaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPbeTbeUbbQbbQaXPaXPaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsaTPbftbfuaTSaaabfvbfwbfxbfybfxbfzbfxbfAbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgibgjbgkbglbaibdgbakbakbgmbgnbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbgobeUbbQbgpaXPaaaaaaaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgIbgIbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbfJbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJbgjbeObhKbaibhLbhMbhNbhMbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbikbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbitbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbjabeObjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbjGbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbkCbeObkDbaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxaXxaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPdcBaXPaXPaXPaXPaXPbbSaJKaJKaJKbbSaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYQaYRaYSaYTaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPdcxdcydczdcAbdmaXPbeUaZbaZcaZcbgoaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibajbakaKQaKRaKRaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPaYVaYXaYXaYXbdlaXPbdibdjaMzaMzbbSbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaXPbalaXPbbObbRbambaoaXPaMzaYWaYYaYZbbTaSeaSeaSeaSeaSeaSebbUbbVbbWaMzbbXaTEaTEaTEbbYaTEaTEaTEbbZaTEaTEaTEaTEbcabcbbccbcdaWdaWdaYbbceaZwaYdaDAbcfaZxbcgbaNbchbchbchaVjbcibcjaSKaVpbckaVpbclaYmaVpaVpbckaVpaSKbcmbcnbcobcpaVzaZJbcqaVzbcrbcsbctbcuaZNbcvbcwbcxbcybczbcAbblbcBbblbcCbblbblbcDbcEbcFbcGbcHaZTbcIbbrbcIbbrbcIbcJbbraZUbcKbcKbcLbcMaZYbcNbaabcObcPbcQbcRbcRbadbcSbcTbcUbcVbcWbcXbcYbadbcZbafbdabaibdbbdcbdbbddbdebdfbaibdgbdhaaaaafaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPbbNdcIdcGdcHdcHdcKdcJaZaaYZaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObdPbdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbekbelbembembenbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRbaibdgbeSaafaafaaaaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPdcDaXPdcEbbQbbQdcFaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsaTPbftbfuaTSaaabfvbfwbfxbfybfxbfzbfxbfAbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgibgjbgkbglbaibdgbakbakbgmbgnbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbeTdcCbbPbbQbdkbgpaXPaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgIbgIbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbfJbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJbgjbeObhKbaibhLbhMbhNbhMbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaXPaXPaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbikbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbitbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbjabeObjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbjGbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbkCbeObkDbaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbkGbkHbkGbkIbkJbdzbdzbdzbdzbdzbdzbdzbdzbkKaTEaTEbkLaWdaWdbkMbkNbkObkPaYbaWdaWdbkQbkRbiibkSbkTbkUbkVbkWbkXbkYbkZblabgMaaablbblbblcbldblebfxblfblbblbaaablgblhblhblhblhblhblhblibljblkbllbllaZNaZNblmblnbloblpaZNblqbcCbblbblbblbblblrbblblsbltbblbblbblbltbblbblbkeblublvblwblxblyblzblAbiPblBblCblDblDblEblFbcPbadblGbcUbcUblHblIbcUblJblKblLblLblMblNblNblObbHblPbbHbaibaiblQbkFblRblSblTbkFbdgbbMaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUblWbdzbdzbdzbjhbjhbjhbjhbdzbdzblXblYaTEblZaWdaWdbkMbmabicbkPaYbbmbaWdbkQbkRbmcaDAaLKbkUbmdbmebmfbmgbmgbmhbgMaafaafblbblbbmibmjbmiblbblbaafaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaDAaDAbmubmvbmwbmxbmybmzbmAbmBbmCbmBbmDbmBbmBbmEbmBbmFbmGbmBbmBbmBbmHbmIbmIbmJblubmKblwbmLbmLbmMbmNbiPbexbaabmObmPbmQbmRbmRbadbmSbmTbmUblKbmVbcUbmWblKbmXbmYbmZbnabnbbncbndbnebnfbngbnhbnibnjblRbnkbnlbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbnmbjebnnbnobdzbdzbdzbdzbdzbdzbdzbdzbdzblXbnpaTEbnqaXhaWdbkMaWdbnraWdaYbaWdbjobigbnsbmcaDAaLKbkUbgMbntbnubnvbnwbnxbgMaaaaaaaafblbblbbnyblbblbaafaaaaaabmkbnzbnAbnBbnCbnDbnDbnEbnFbnGaDAaDAbnHbnIbcCblsbnJbnKbnLbnKbnMbnKbnNbnKbnObnPbjZbnQbblbblbblbnRbnSbnSbnTbnUbnVbnWblwbnXbnYblzbmNbiPaZZbaabnZbnZboabnZbnZbadblKblKblKblKbobbocbbFblKbodboebofbngbngbogbgebgebohbgeboibojbojblRbnkblRbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9785,3 +9799,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + From e428e047870229fae0d7769698474e2a77a74293 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 24 Nov 2013 17:35:31 -0500 Subject: [PATCH 028/315] Adds sprites for the detonator and the bomb core Fixes some punctuation --- code/datums/uplink_item.dm | 2 +- code/game/machinery/syndicatebomb.dm | 8 ++++---- icons/obj/assemblies.dmi | Bin 20122 -> 20569 bytes maps/tgstation.2.1.2.dmm | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 72e82054e38..c6f84807519 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -380,7 +380,7 @@ var/list/uplink_items = list() /datum/uplink_item/device_tools/syndicate_detonator name = "Syndicate Detonator" - desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate \ + desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate. \ Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of the blast radius before using the detonator." item = /obj/item/device/syndicatedetonator cost = 1 diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 86d7adecaf8..c26c3dccf26 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -147,8 +147,8 @@ name = "bomb payload" desc = "A powerful secondary explosive of syndicate design and unknown composition, it should be stable under normal conditions..." icon = 'icons/obj/assemblies.dmi' - icon_state = "plastic-explosive0" - item_state = "plasticx" + icon_state = "bombcore" + item_state = "eshield0" flags = FPRINT | TABLEPASS w_class = 2.0 origin_tech = "syndicate=6;combat=5" @@ -161,8 +161,8 @@ name = "big red button" desc = "Nothing good can come of pressing a button this garish..." icon = 'icons/obj/assemblies.dmi' - icon_state = "plastic-explosive0" - item_state = "plasticx" + icon_state = "bigred" + item_state = "electronic" flags = FPRINT | TABLEPASS w_class = 1.0 origin_tech = "syndicate=2" diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 39811fbde4ec3700dc7ee18485b1e91034200fdb..56c59b87ecd29caa0a8d65449e06f0ba2a43ef4f 100644 GIT binary patch literal 20569 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 RFhC3fadGrGU2h*u{0||YA7=mn diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index d4fe4ea659c..115aa789549 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -8237,7 +8237,7 @@ "dcu" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcv" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcw" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) -"dcx" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"dcx" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 503d0b76abaea1737a1ed7bcad2ff0a7bad840ef Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Tue, 26 Nov 2013 05:23:43 +1100 Subject: [PATCH 029/315] Recommit from clean --- code/game/area/Space Station 13 areas.dm | 2 ++ .../crates_lockers/closets/wardrobe.dm | 8 ++++---- icons/mob/back.dmi | Bin 61318 -> 61336 bytes icons/mob/items_lefthand.dmi | Bin 146313 -> 146123 bytes icons/mob/items_righthand.dmi | Bin 147627 -> 147538 bytes icons/obj/closet.dmi | Bin 75644 -> 76050 bytes icons/obj/weapons.dmi | Bin 21553 -> 21515 bytes 7 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index fd1d305168c..96ec3fd3d3f 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -150,10 +150,12 @@ proc/process_ghost_teleport_locs() /area/shuttle/escape/centcom name = "\improper Emergency Shuttle Centcom" + icon_state = "shuttle" destination = /area/shuttle/escape/station /area/shuttle/escape/transit // the area to pass through for 3 minute transit name = "\improper Emergency Shuttle Transit" + icon_state = "shuttle" destination = /area/shuttle/escape/centcom /area/shuttle/escape_pod1 diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index f123d0a9fa0..04cb0538675 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -120,8 +120,8 @@ /obj/structure/closet/wardrobe/yellow name = "yellow wardrobe" - icon_state = "wardrobe-y" - icon_closed = "wardrobe-y" + icon_state = "yellow" + icon_closed = "yeloww" /obj/structure/closet/wardrobe/yellow/New() new /obj/item/clothing/under/color/yellow(src) @@ -135,8 +135,8 @@ /obj/structure/closet/wardrobe/atmospherics_yellow name = "atmospherics wardrobe" - icon_state = "yellow" - icon_closed = "yellow" + icon_state = "atmos" + icon_closed = "atmos" /obj/structure/closet/wardrobe/atmospherics_yellow/New() new /obj/item/clothing/under/rank/atmospheric_technician(src) diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 0e1f856265003e2c963254e35285ff2c9d71a749..f48b9281daaaed3160e3ba6be939b5bb1b242388 100644 GIT binary patch literal 61336 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 literal 61318 zcmb@u2UHYYvo1V<1OWvEL6M*!f|3N0AQD7^N*2jskR+0k90yR4AfOVJoFwNQ2M{EK zNX|&kLma|{zMJ=a-}%@1!@2AH>&{w3ckk}$?!9;Is;8=+B1BC^;SxC`ISdB7^!%CZ zOBjr>`TR>p0$P&z+fXnVk&5Rl9cNi{C)0Ot9h~3V+reP&iAmoEA|~%se;io4n?A#> z&+DJZ$#*s1D$5Q-#=WStpvxrgLV3&QjD_s>v&;k27}`Ip1E!IXQmg41ZnadxtCu?NPO`6%y4;Jgbt2tA0w;RwGY3xvd&JI9bCk2? zgnoBU;&#U9D{UYrTY9m41p_&ZXVOa zK{Yd8J04Q|+j%bh`viU!P4k z>Dbk|=lWPIdij2I@qta#GYfw`*VBrPCN31?Xp7Tjs?B*Zq-yw*(?htjaIBZLnALmr zGNt_Qc2DPuM(1`7s);>Inp}RzHhnIuNKdRR`|R4*y%2OL>9BS4;9Ag+NB2mwO^nS; z_k`bQtAr`!8uTg*C=)w;Btf# zFv+Feon|yx*0988r+GI!k97G@E$IWXmy4#garvXkL@O*0t#rO+bTesHnK_aFX1uO; z@Kt#9Y295?Tk7y&3yzg)? z!dNskXi2+-#!CVHDx6bwq-OlokDp?dsEKD*nUsIoZD@J_d98-J7_o_TVqF+X)AQ)X z7jns-*(a(*^S{q_M;~3@KXSU||92!)=B?&X=Ohh9@TD&XiVuUxa=tJ=rK@(OTKcOL z@W(GPQ-bVXk94QH+mk1SR65Tel%&?oeq`j@l;`2v>C~GuS)dIo`Y^BW5LDe#y+(P= z?-*b6@k!-gbJz6ylCmc;mmU$!-}}A0BO}64SM9vqLd{Ke4}ytIg%Ab$R0ivMT}x7J zw+pk&Ws!d~+UoT}-&}HLk5b%!dj7Ac0Ms zwB=mTNLUfd+;5yPS0m5W5-kt9j~ul{%LSL z?c^@OO2s02JUxrD-Z_5w)2pa<$C|Euf|3n<(xquK-H3wEKaWF*@6&(}F&%xgEcno= z>A+~gvAXnY0;Tf?g24aX1?^dcCw(GwbUV|iqQpd|Qp-U$0+@V;dX5yV1nhr_ipqHI zjnP31G=^|au3b8HTg6wI;4l6zhQ!31${$-_pPRzOR#&T%G-BqiMCG>Ztq!E{f3Jt% z!RXA!!!g2Q$qb0Uwzz>2OwwBy0_;kHeW>kJ)x-LMD%&X`?tpji-nF&7ClzpBQ@a)} z|0OZ;)6$Yz@5urMk6y(yO6Es&q*N@?$sZ~zgd8^us|jIj?CdnxuV0++rYP#wv3)&v z8H1kj+$?;is2DXWY2Sr#s^~-xTGC}@WpVNH${83Wj;+FNt>3=Q9mbN@f&RU&)JvG@ zu&T5|D>OGjQ%F1qC+8IY#A*=QUObh7BE!P09aOM^vpD;ZuG^131WwpRdcUhYxnoBu zFIhWDU;I=j{*GLUPr-6eoX9m;6myRzdRwQ-yVk+g2RPqX$Di}<+qV~B_ub)|x-95`YKr6^)3qe%&!3kc0s|kO z-R0#SxecW>xKE-{U=%R2_>n2JEvMKP#lWadT$k=%{x203mDpJ*Ts|W>EbM2pgqH*M z#4%;kkPEvWH z5pg^dkL}`AL1{qJYwbh)yI_LjqAGhY%?;XDC@himz=!1fNLPZDF~0fQ zWQje4f#mP)bzXL37O3MDZ1u3~yQEq6n;V-cI40wxDy_Y(VqS-(a2(vWSZh^Q)$>?N z!86j;(-b;*Gdl`xDfmwvLWUEy6&1r;>xk3kxcdoxC;L5T~)A4X~j!Mer?o$Yl+g&RaY{(h( zite~@-{JECra=OVyx82J;j45Mpb+!uNY01Id8PL{j2a2yP!GkVJUgh)^&nWQZ9rlZ zXHnZYDWGFge9v+Z<2Q(<`oLV$Xk@F5;INjrFnveyrrOiy$Xb@D~Zb&|T6^#n_9oI+xeekL2fa*^~_8a_2n0L^$(1l=_T^&Cm z4NY@u{d+EDpN1yf~4>g6x)JCmMU zk0V&5(z>cYl|mz7Q{prScI$+&lcXCRj=3;Nrxm653kv4&3vaiFRHfwHMIBB;=3pIR z{+zxI!9Ue=z7*1ULB9>X z98bFIv%jHd@GZo<+E*~-(Wrj+bgfhSr|S=fAI=#IelxDrqhVnwI%P#}ZP~~fhS^P_ z5mQwuQmg?+jh?Ru)8+mwVixM}7ETtp;VTVHYwq?Uo^B}Eqvb3$*vs(rbNC|#!-JQN zGx^&5eV9 zc!nTXl^ttq$Z0+7elS;wrlw}d@84=uVZC{p`Lb44_j)ayGE_;h0+Q;fH%^zV)ETal z4pxdp4|Pz#GRm1?kR0z2loD#@OrFavX1&tAPIw`P;dF%IwR_mP(LBkwaQ2k-(2Ot?{Q=C61g1vLm@<*Y;vl9{7pp zUtnZLD^AQIqVpfq;YF@>gwAmL`U@8kK9Ti*p7egjtl##%SS_A0g)m_fB23~`5cYXX zr@2{G28|?CT7LZc?aQrC*RR_p*#j&!Z1wl=Ulo2)C)d~CrG8~MkAeY%U0RhTUC=zq zq(URPr+Iw|`U&o^F;rSG&x)fOXg!OF3e3I9Z3=ZiKD>2{0AF{Rdp!)N$^ve7dnCcW zDR(nYZH*Z`TMBWJz(Wd+95wwnM9Y_^{-0sC|1GHd?=M(d7Pbh#>RFw}(ezv1>IS^C zFyGcjgTO|Jv2jP%-88|hr>pBNTA<1qSsxp()W?F%!kF*j;p-MxohA#)Pp~xhkYwWAMS7#@ottm1~H+rKMq z1(%nW$nrFfd@|v0O08CvY~teegQft>(O$fGu}|`ed1rU`6&JY8&r4}8 z?mTxGUsq2DyuDG)wuTnBZ4Xi6SE|*|DfM;#%bT)>z(FUe?zI(^bFYX`HEFhZam9Ig z*=>lJ;dQw z`S}gG5VN>z@474Rc*nkL)3BEI`V6$yezf*Cu5@}?(bnZECgs>EtI*Ey!W$vRb4V}# z(LoVxwEH`TzP6h@-w&#c8rGS) zQXxxDOv)RNr%-~UkqLJJFp8jSTW`gaRw*GB+hq1YVqV zgGxB(##IT!g%u$3g?Cy-jxP({y7eUNb9kH7f!lm7DdQ|!4FHX0kGB!XV=0*XR&#x` zzZ(IJlzQun4kx9(HKRf-yveqiKMm*cHWZ0Q-nDm?F^o)u1+iUAxEXzm?E0vCJ^dcZ zEsaS>iP!s5*)UjuO7zd6t5+~7SaQdLP{7jcXiGi zQwaa{E-u#A9I6k%4Txz^PA-t$e`r>zN6@_fk}ElQ=G8Q?wj8{?ys3P_7iG5)M@B4% zHw=m+UMwxS-;VW-^Qy5JAiCp?*{*J;l6ofPnuHVxw8ivo{JT6I#W`VS7Hb^Si^X>5L*ad$1JE6=K6(mRqRoBf4|mnCE3VB z(vhh~&!azBxhFV5!Z#IXR|u_wagjJxRsTsS*$b_^JfJGU;ktO2QXIo`5B5PpcD}Ve z?3ycDH)kpZoW5)8@M(;XP3G5Y3AV>2q--N|*Yu{7GjXp}=TC{FqnA+kVhxArnByVWy#2LoEg)0K zI()RMR+IQX%*?`!EF-G8^*~;)>LD+$@|pnDdBdYjwd7pR*dmj(v!#2EvV5R4U_#(@`M<0Ny zCi{@3(|G{yqPm61#^)g%a<0O&JEG@%Y={=Z z`14Q>A^E>g@%V*+W3JQ^*d1^_-LLikzy;&PH_CsJH%|S&0=HzZ4Ch}OWtd#c_x?M5 zCUe6lhCfjsG@st#J&RQ&b^yL^`6bJB-|Le4$K2Th-zWLFXFEL<+voZvKLN{5o-w%Q zqWUglkn3M|{Yod!et)Tp%}rJ4j%xB&C2pW8+z;#2ihTg>O!E^Rpb|OvS=Xu%qR5GZ zi9a|&UZVz`%Pr&3WN?4<4XrzW@B;e({)WWGDo4s`4+c&T<@ zeH$B|(6F#CF)`*-_=!4ri1OUw+mgPdn$przuDf?zG_?%_zka>aX5?~V#0d!insN-OFxJejGHX()H6*|9{Br@%Kz zI<^JLB|F>$xqTx)eflKd@sKfGrkEk^hsm4&H;W9cx*LQ$4zn(*B^ewX4F2?~ZD*!l z0Cbk=kuzDulzGFv_^_A1Mt*88j`MdUAG*3Nw8)2WUaG_ ztgxu)mjwG$7>pt2)%3d_-jj{|V(L4+FuzDhmk8rC!y7O(G$c3ItSy$=5Uey0i)b`8YiWpg<0oeia}##cORL@)!_$q+wv- zkkq6oexRuHWO7Lv|qiN_a|kM{?~5@#?Df39TjE$ z7n`wDrg;5XK8l06c$QNtv%Qe#Yb+Y@t^Q;QeKT|OkaIP+ntYA7t^>9w<<{Jgo4epK zB=|O?87;S#qn>f!=dbH>HU-grcZ0ij6YnTUBDvdD8AyzQw1qAG8!-27!^4;B+7-H9-JMF+t4Hw0%zH^SQT^jHCP0%k9~s!+dL#b&1Ns@sgg zitCfLPkJ8!TF#^Xe!`#Gbj%fjUB4P_8`08o-SomEv~5MPcv)Fl^x>g10j#B^3K^n3S%tbAG7v}GOg+Fms0WzFj)nK46v?&qZz&v zrM`tZWO(g;uwCtYy~j|mYQ#)11VEg2t4bN%#Y>lLcc+Z+bK#A!gj)#Zy{xLb_or_C z0K;EinG-|cF&S^XUC2MMy99>+*l`;J7C$CSG437!)${Y81We|?7ruaeap$@ik2`w} z4$0M|Zhni2$?Cl4OJMwBQ2Uw6i&hY{G-EC!h?DnA&&tvo(`xj20lMiAf)VqewY=;2Oe|(L}uK6VTc1I}6B|m>Tyz zHrP!NH3t_{(`rajz-ML^{*0_e?0FYLx!WX5Nwh0-BKM*FMFHsO5R1uh!$xIk$;%%4r7f)e!z9pwog5BRW^Ku zM3e@)Vd{oX>i z(LFO(I7QRA1-u16CJ482vKD}N588#R=?~_>VLAVIaOK)qF)MJVJtC$$SILd%yJ-t@ zr}R1wi1jLUQEtt%ez;=urty_g6TJRPn5`Y}3ep^ZcD`nA$EngcXQqHTOdG>;1B7GX z3E>9CCA*e~dQ!iv9&LcWnH0isY<1T7N~Xqqqi|KqgR|0Y7x zUWG(HS(_oTFMYTCqF9_^cKpsaY$bHpqFfgx45Bq(Xt%AbWnCPC)7`}Ne$v|7YU{Hb z>EHw{29me0u9|^)ScrVU`o4InQxiW8i4vYCcGUo@Gxj%4CE;wVB(t+O`+tQH!wuHW#(>5LXGS`DH!@MVhCbI3-~d)I>ah=`6H zMvz)$^EJ1BYGC_UK`Gm#G3pB+tFm{L%pK=R;EaLwIo4SFeFG$C z|C>f{Xz?oa?iMF+koa*=ra7KJrCbfhENoO=s`t1eb0v$9f8_K99=@^vGRfWYdEc*1 zVJ)IH*v(fKQe?6S_s5Nz7!aO*J1g=inxFbf7KQBYa?0li6tciBRd^!I<%rD~kRPQ| zmRx+A?lujNj_!})S6vAj01hbyUv&TjF8TDcfmqRdQmS9cDM1;A^{$^aFZ>ItiPWp6 zaloUb0<36EkcBlh*UkYLAD>-Gac?U>0G(~Wel0|yNR4;rTh7rCxK;Y^ulC|7!G#+3 z)C1ORLww)e71tZZQ#z}gr*rNzzaBY-)+W_EHgG^Ibmb;00@dQ0p5%^Wzy7{jzZ)m3d!5+iEIsYyNFnTZ zM%2|FhUw7vKdz70;(t7_j*Fnb${E`Ba10%LX0f`v8YOEM$zh3DFBYWA4?)M_Lpxa% zu|;I)D*T(R(wR|cLu1<0hv>h51!Lkq?FbVs>2A>XfGk0#Z!IA zeC-h8MaXqe?|PKJbIl>KLoNxceX*-J6z4R@B0UUbhhAI~0#hREL1*Ux1;(^3 z&g-7Qp2#Nk1baWHq+E`u`fcGR%zZn|^2nN-LXm1kZ6&r4sysEUeTz0+82+ZH^JVBH zqY%K=-Oas40vPnNrw03PF2H1YcHyl=&z+FL)`|DtV3Y2pghQqX@lZ#|eG>=%n;HN- z8yi*tpE{P&ovh1Ty3F!8cwxcBU}%qe!<5Rhq_|!_oH0-zajFPwCS~#$V?P>1%Bl3v{b5$Hc^ly6rIig8K?MYkQkq@$){1 z^Xk~SrgH;xZez#uBT~I6sUauQ-h}V>60e$r@QcD4+zV}tJ>lU13zU*YJG2Rr6wHqB zB%ZTp@sr~3eJOdi#{L>vT<^Ly?hjUddRf_(w6wJFojLqp?7=Qp^$j@i${@N zyhdN4oPfLH-K3v#Wg_P;HIE>qBA&8RHTT_+mvb>v)8)GhRXTiydTiKpjN%alLcVx- zKXS_6mkcDF_-x|}e_ZCeo8OXX{`?xQCoI04=OR18gPw4b5`R?Bu3ejJR&-6G*UjSh zV=6D(Ds}Mc?KDsrD!8p#;*M-H46;SFcqB;1?KI=Jpm%?R(D~_Kdo`B2JN9 ziy8L(T~abrAJeNc86tS30yeruFA(FFoad^Rpm#gg1VY`=GR8JAvw9hBn-H}M$-ycU z@$-_63iAPUsoHTeluX)Wuz1PKq8bFSMxl_ga?i50iADxK&5@f*QDpmud3kaJJKMiO zv*_%Ok71ax%k%rX+@dG?(9n`;?)gO&k3Ks0K0otOgx8k#nzE)d^6KUm?h#_BC! z6cZC;0}3ohF;0{8BUf2dSKr)O%2W!s=na1m4r&H~nVOk-dka~i3)WMj;cltRrd9zQ zX*9SH$O+gJx-|}IFu$eDv&#|(tuzHQlGobn`$XON=pXQVNBUb=-5UfLv!I|C4Vkq? zMnuT#>Rt!hiE$=-Y)w_scJ}}~rpzt==@^e9NyJ-7-BXn})|(LF60;!-WqDl`^$h}Q zx0T5jy^if+Iy(4@)m9d>ZBa+Y4^H!w66sJW6uw#4Fy;LL<$A6`TfTcs!C-(_lzNX>8UWHqln_{`JJBVzfb9dXGJ96 zPxq;s{;7Fm+=n5yGF|Gct*%}R$&NwTBy#sB70Y??5?anrpISx7l9~?Es&0OTfZe|( zF0Nn7>T*rOBNTopH-S@)3V8^)5l`Q}yka*K#eGzx%=2(oy84b4|p&1f9y;4|l=qHKYBltT9b){-j-Yf;GtEsBlvs@46Scp>P z(Fam4Z}QgkD#o)9q#WJ^4KKKD{|RDvlGn4C%fM;vax1pF?U||*K~ge9X`*2oIG8%Nl?;DR4hF8!fQw=Y9hDucGlj8z3kG*kc^?VilaXzzNN zdV=&hhuP-ntqGY%^649rS8m%1K>mF<_EB5bp&tHmZ+bx-<#2P1YJGh@bkP+f@)XZF z_Ya3D6tI`BQIg30+wbZ$Ek-(b*C$KdPpH;5h9 z)5J{HI@xS=S$TYzja@G2tOyu}qf~JNz~%8$ZoH;$Y>X$malooG%r>N33S3u?iXBow zr+Bqdop;(D_u@p)i|Csw1EAc|T}xEqpoKb-^^AmJZup8*(a?A_0^r1f&SS5d zI-Wxyb*k->U@*)!$US#jRc_2&KrV>Gi)8>kuMeMq0>Q`PX#|8L^jl+D{6;Yd93uZh z?P4R?27i!7HSy#qUN_gS4^>t(4a^joVwOGL2hFjEoTpyzqm zxbw|7i#ZOJq}mTx#g68pSJ(N|ev3Vs%UtOY9c}^&oWvKkvPL21u`f3=wR@5pRsP7$EcNftkJUQU=e$0!*F!lK{La(gJ$=fx*ZUopr*oN1!(*zRmATNQ zP5VdX=U$X!`ZEJ3Tl-wp=r;rkjm)2$U!$a{?XwZ)?hiGVo|6$hR;wNN-108R*hsh< zm9vQ+9X*w))w!73bhFSSm1HAQZ|g1tcNRlSM5$~9L32!ihDAYDiT%e;f#wO1Jqup? z=5zhkG_4VW-kxI5!3Y*ZPj3wSeEZYn?ay7Vv zSUr5EXooZ5G>w4#MPXIIaB|@|cjYLGGo)MxwmVS(zqb*YEVmo1>Gi=!p9ysw$X27t z-pr}!AA|7H*{ph2zHd*pXqGG7p`xVZ{I=dE?Ur;`EqwkLo}65f*3lF}%(3cAa0>v@ z*`ltfl=Bzh!5pL99&wmVl$m#znfK61tPqElG))hbrd2Qc}_QBu}77-2yeIgz{G}9&o)2Il8MoU3;h!QmiiUQcQ_DXjs3{rjWT%mNapSPlZ%3XfuIV9I8yCY32zG=yt4=ccgcvi}?cM zCHbiK1n8Am<30vc=UeQ>BaSQb3u*L<`x<=KQ`)BBKE>u_GnME?twPCIbMIeN(I>gN zx#1Cm)6rzAf1EDp9H9^>B0nnrIqdGf?KeFin{OI?1|u(RIu0^D-cP2s6Y4O(rX=4_ zYN<%QNzC9|R384dJM)-qcR;fl@nS(;=YTF~Rx_;id-ksBb0!&~vzOK@b1wghr&iDL zl%7visvfopk5_1lN)@);W;HIvt38lhBz@-{vncpBIhmpW+>qZBM+kGUZ2Lrl9NGRl zZ4K$~mrAr2^&LOLjwW(5$W&P|&!6KEJ4T(bejI#1M5^qKZ#+Ainevw*Ej)VG=*Xmc z)NU+5v{L%8sT2mR_^(XIf#&bW6vMv?e)9+)pco6!TAxOB#ht3`mS$eD0CO|OXC-l@TIWZwGuw1nO6WAq7{q4|=B4H+8Qz&iUF8Z)wbk*79A z3A<(ABhD|43uOv1EV6P<5f}@q-U#UY9P26yl!}103UAZI#8BX!4er~bWaTS5rRKQX ze!G|M*Xm)LIiO>Cj^gYc9&*3}yXp zAeHrEQ|47TChptN1sEl2h=^)haQsc^JfNg3RwHq|i(mqxrdWKO$zby_9cYosD)dKG zW_zvOm`iif86rP0lYau*_oei(>5RGbwQinOnBn5VQzFI!-&?IkLGMccprCZ8f0cLD+(jqcHuPC3N8igR~2wi5W&t3SXk%7$nvxw-Z)Aq{vfkx$oYEl1C zXIeqt%CGcos?0vXonct-Zp0a$zhpg(E;iPS2fr&Rv5VH8Bl7Wd=lQ|o85tn(kGSaa za6o~zAqy+zy2w`*XKdsn5jD&&Hn?*a1{FSzhZ>D=7jJz$t=^ZnMBczNTe*%1F#$3a z20lymSW8NfuV?TlslTHm-__c_w~i}ou}3ZOLOa*FBo7bO>CRzNiFqT|Q9Y{b_Mbn0 zJ^-Qvx;lr)NTGVfX>N_bkP&>VA@C~`#ApUgww zh$gr4b2XqBBKTD=eG$VEta4{ElUufvIUvQ~#qe%&UYx&ek{LAG|LsrIc$uV5lzGW{ zPIuZ?^+9ZOzkGk4Iwhs!n57;DWFnjvDY^@85^Xv+VlCte#w&PO?v>R zLQ8`L9+2$V(WtrNiLYA9SFHxELe`I6BrEyiS^I zwBPHSsoO|Bu-7VTpBCYI>AGO%psQ+c;Ni*%Oo)}n=3Y~_`{v?t5Vl&lshX}{He%zE zyrM+1eApYBQ%;x5CD}OCh6tU@8Br>(-Co%Phl`8`tNhtr9^Q|SICc5^zt5S6M~X?g zQ;$I!Clx-p`RUO^LPhAdJU`a@y{kvh+Abc4x$)_P$62WRo4sSy9RKA0pqD;A($rhk z`krs9q_5jPKewdzhnw)x>^W(eUx$|e&2(;hUcF3MUoqj|u7_zyX7CGB_S)H2Ht@6T zoeT!NX1Bp>UAd?Ft0vt%dh|RxH-jjzvzgOX@S3%|qSb40!f)84JrOZ{zpFZm-S9^{ zknAi_M~*KxHb2UmsCJA57nR}gK&WonG8?nK>)ZYNlPHhOZbMSHy;%H^kywMG1<=a> z+R(j}7uUNdoe+x3C49D7n>mX;k@y0QI#fgA^{M?$*Tyh?OvK5tT9{6WSA2RJSi(Z= zIcvf`>ic=b=&|(TmuDC@=}7fw9Wt#qbkkx)AVs0srFP4gZOJ{~MCUSL4NB;o(gJT?`S0SK&4fK)uanK&IcB_jTji&a!)ZWd*>-B%zF4pFg{Sw!qCCKN?CkA5%$sHm zmsfxJ@{e%>{i+P$s~mOL8-7g8e&eZWmn~VYC!2Iu)FO=7K%A2=I62w*`Bkggp7J_- z9`9U&adC0MU?5+99<22Co2hqGMA!;4hW}HULjWTpp=<`3`Nn(IRyVf09#i!qg-`8| z=z>AH!fUa2nG-%d3K1YLCm*#OxwRM<7ZUBc?8L zN=l#9Sdo*G9R~|k=T$;QhV|cP-T-b zG7)ST!xTn*-Lc+zo$!bh29gQ)!Fb#f*V50~Rttk;syv@!%=Uut$JptoTqsv&*iF&5 zLdhv!WG&A#2!{0JGTxarA)$@T{gsvHxX8Q`m@`QKuda8?QebX5-wqd z^v35LeF}SOm&vXzwUVySt0ZM=*tihLWGN zEfgY{X!=7{R39*gw>C+Kg@ru@=kF-R&sT7{k{<9&L50bLjvi*3LJzw=YpLIBu{T?J zSKh=K58avaiL8SNo1x^k8I60C$t%*2a5m3{+n z0!TC6VAN#w^uBlY_uDx)4FQum}ph^6Jg7>sD}nopXEdkp@j5N>5UayAMp9?4^`Y4nVBW zqq?;*>}E6vrK|XSoSE7AsX9j~J?!8!#Tf-CeIU3IFX{6LY<3U1=0Ro7V4=PU5Xi-# zy=9o+^{0LUroW6qeDD%Fs@+m36jW)nn3UeUcaIztrc@2eVIpUa%%mpY0@A39%fq0{ z%%NZcyw83;!43#zd=_Bq##%=q;#Ods=ei~X$d$=nmi&j6~O+Ab~D6LEd)6&8e!%$Dakwf#?yK3u#825+YuLH(ZOQfo1%((l{- ziHhGqqgqr(u9bg5Tw9Y*LgGqllkPXCyF){Le_kE$%n-oN%QnDl4+p5u6jg#H3<}q% z=MYfiwgPWxsQ+O)ey7wZm0;&e673XZwBn>RBbaR zEf7Pmqz+y|6e^72IT~|m!if59PSEYD^^0Y>0 zAb|G5$cSZFU0U^5#M+gQH8rBqGj6Pc4<3|S^f5Zei!*@K;mJ~z>h94PoSlb9Nv|O% zhwGe64RoRO;j*eIvuzoMZam@Dt5>ibe)>1P@wc{X06rGnM@0ehVcYVw-{b?$;GWti z<<|dU4Wd6Zy2$Kd-?Lp{^+Hr_`1gp z(a~o0h?U-N;}vhCDk7VEdU{GdkF1p9?-Ky>OBF@x)^$n}^YN0`e^w`jvmcg%vPyL= zEfUz;eK)@Do}R3#C&$>;Wp?|S`^Zk@0DZHZ2J(r+sv4a#PQLt_9xL1$yuFaB0n?f& zVL_#CxkU(=w?$z2K-z-#{9dnKedz3b=Daa{5mXCSDl2?uuCE-r`1m2=^mp80B4OG{ zpyh08#gY(E810olq&LAN)l{KiZO-eVf4&ZVZ*Kqx=SEUus=yo?GNt=1*?+h`{jvp%=~+w4zNRmFkc=61QfuecpvwJ5%L$;mpw z`lmk;>F!IfjKg^J5Fb;vpAJ|_9=g}BV9+CG&+DQ%RS9!gLn=~;3hc(do(UA|UC4Jb z9+?96Fb+S6Odn2ZrC{I_s-FYN^}%6cJ;7Wjzl4k`P1|}N;Fm5ebww2>S?70sHB&x% zpn3?D=j5i(5?1uOG!8q}z5jrVS1dfYakfKBq zYWp4+R|#|Rxo8zOe*ufG%4UL15=e4Y(7O;lhlkne>7Wve2DTALIaOtwaOk@B4a&@{ zd`5Dg6XHl2K&txC$b(wiujAFlL(AiQ49J(_GOwH~(u)e_tt;vrR1J@0n3pyAeJix} z^ztlS1k5xTJm2E>AW$F_{dVX_NZQkn=|Aci&t;+ySD0Hw0`ork`%z`}dEF+M2VRx; zyKTe{(l{~)#nn0hR{EM8ZMZQ3GQ4futI2uoA+f7zxeFb%490m3t%l;>un1oe;8wJJZswGsd$?$P1*l@QW5~rPG!w^=X5py0?Q5tjuFK;H&y|? zb=mr%Q>X=~wl~GZu5Sd#jaXG)mFa7guZXF`#*SFEPgeG?md$#sCc*r+r#AT?@o;fD zU}{r7e>UdM12lrcY}FKbjHozka%u!&{_4yZAALBJsG6Q*KUU;6JH+Qh%j96bOoaI& zRliPEr+V>s=;+)#&Zt;h<>$|7#NBp=mme4Cl*$NI55ELBSJ6;oc;YeKr9PHn=A`xe zk7Sz+y$|B}(R<0WIMtC?(1EN0TFNK4J@|}dXs^o1mT-gO%C`Zj4w2~oh{CZ&?Zv9Y zx0ze60#LYV{lSSLpWoe*bzRsdPP1akaM;5l0$CZ_fme`SlJa)FN=E*e_bLOABw^Uu zmy|{O!V(C?r>W?hm#*;g*|Ax1ADIeDjJ^jn} zDsH>~Z!SPE3@ycmXeI<)razCGH(cpkZ%1)&mVj(`qQ;eH_rOUAaJe%NvaUYpgmz7Y z&Kcof?2Z3j2FB0=mfruQbpOBSF#UJM{}%`A3GmIp@*K^PynixS&b#CRNQb8XBt6FC z5p!AbeHM2~0jzIz)CWB3ihfXfDEsc6;Qs!;^QM`V0_wbAJvB8I1~V37B!GdEYywx* zEboycT(Sw~2Q)vd*^hwezU!7wv1hsf)QemcUV&d;NjW8rN32LW928%z&XxvF#Oo9Q zKSV!#{Ak+x;i8IasCb?0_PqlKKJ^s8|Nq#!Y`|WBsspgkVFv@?Z?Dt=KkY#=FL>g( z_9-a6dZn#xy7n7XMCUYT+cUL6N)O1dqb`8Z1R&qF0W0$waPYF{h?7BWImo*|1>Ls0 z2EPo87r1Z^@~iA-CXJe?>Y5{O%bQXT!lA41eY|MHO22`pU+tZ8{@4$|k;*VOeB7L-{amrDe0Q}yA4ZFo& ze_-)Uya?!bFkz`p6w$8pTEYKgWaI2yG2|m`J9(QoS*aI^iHCm0LqYL~f!BEb$Wu4g z1JrduFD(2v2L2yI2*8Rk>5sKe>PAMhK|dZUN4ohh$ly%f@7}%W@l)nYTwG+_*RM9m z1Bqg^3BtBt(KOFIJjAq$jlwU|-bn>nX<>rdWbnE{mu{>K)(ZC`u7DT+g5--lwGWtE zO&NeJK!WmMY?t0kkG*3}y5pxKB*+ z#4PWxrQe4N=Oa%$K5M5wt^+SbJaKA&3B>305{Tj`jE_EuC@>R}0)wd@NAcw?(AOn; zh2Nzv0y_hw<&*7tRK&r`t<%3V&pbu1Kj&{Wn;NhbVgpYG#n0N9ny?2zZG!f}tq<85pL8U28EPzNA1f+xX-a$Y*1PC4JE%Z>5 zd=r1~yU)4KKHqii{Rbo~Sy^jl*32{aJkR~yb3E$v3d{{VA&w#|FxC&Onnk+=eN8%` z{}%6eUEGnYXZrQ)Q6KEug)H{hql@!7^1_3(`1qCbW?iy5z6N8Vz^|y6KjwX&8nE*aKwscsAcO$hZ&#+A z4x}DRKU%BeQK4r85}~K2b3}DP016LPIO+$Ut>-*_Zd9mOe>~*~90`igo_!jjaDmBQ zy?QmP-TCsr!wuK-_4%>-cAsJC7=b%CZ#Flw<#xE?22$<%?E=#}S_m)=6ST4LY+d$I zA3O(Q&(Rz$Hbm3kDdQ!`{Qwty540%2D43|!a1KX5ic>O$0(SEAZKG8W!=3sAO-M6< zK6s-|0UjrB6TvJL@Kje{Urapbp6zPeHC#W%b=4K~j*F@*2XpiXb5GKj*{VOdo)5v! zTj67TkL?e{T7IOomYxw?1gKoc(#R8tXCZBM3+DbWNVx-9JAd5r*b`?;Ky+ z6T)6W5b|U1;jCEGdUYT6^8|P3_z6CHiJYc!z-R zHRpd^N7Vo14E=9>R{uJkaN*qlMQRa;zgRHtCrP5a>mAQKgtYEDH<&A5#2*g{Hqrt$ zlL8;6X&b>WPHzS1$z?x7aCgb>3-B*REw7pDLr~ru+h`T>*|dWW$~3&@)NQsb2kj8E z7*`jUG&b))S*bKES#&KD<`++(r>G{7xs&_eZ%Z#0@>TsdPI?4Lj?BDMuNd6^@3RXq zx1hs)nvw-+M-X||vJ_OlrzhSgGd^j)yA3D80T)JWY4r$7sh2kZ zd6E%ObJJ-%0xB~*w2cZ6*+jQvJMD3{(w(fV+HrT`4}ZKYo41lj%^Z+LoQ%n+rN!SLPEm>cC1n7Vzku z@aiv6l8Fj;uf}^FgqSJ4|2d&DmvVyw>&dE5JT_T56W6Hp_#BW`kCk%A_r#j``)Tv% zL>6Q}!p5rQT#moO)8gBS672M{W_{*@Ztzws9$S7-5);ua=oSbNo;%3So=Rm)joE&5 zKh;nES9kZI7isH8j!kxD`M?z}t8!Ax3e;yq!m3(`C~#N;YXTDb!of=_E0HV=BVFsY z83ts0ruiG0A^cV({5E~`AeEw`1zHB?d;uV$0R(Oom6SNd#Nc|!DXqG}k3p|M|5j{B{s^SLsI%fpuNMm!K9Hrt5yYHh0X|~ZcT0GGuGqZkyZ$_jyvC#t)&De`Foe@9Dx=0O`N@m~n1Xp32@DoMJ%bbPOC4z~u*xBL8`QLm| z*VI;s5iYw02N@UUm3F7%)FetJ;~i;6&o;GR_}}mHXz^G|8*N266%7>j-I!R8oCmgN z)kVDuxKF?`lc=MkqtY3)K-EkoU)anZYAH4{D+^c0PoF>IV8+8zdw%*)oGLLSu8h{Y zh|<8*mqR~owLtSo1;1=!xXgNvBwZe}K4{PHUAcT7Yb0~D=blwwvqFeSaYV-8GOpYGN`H_Ap|7`nPvXs?nLO ztgl~81mpP!98)L14c=fVH^S^@)_`qIds$*in9vk)rWc^ikv;9VI2S^d9h2 z^(6`@td4infaSoFjV+@51MJUrNV@p02O<{jZ5U%xe+l#ssW6Iwrb)E)=>+1c&sxdJ z-V{^SQg?@=aOCDM4`kZ4ewEX&Q?q)uQ+F2L!u_p!oa?^M417J1Tdth(U96ZDACdhf z6g~Wkl_Z8tp2!jd&0k7sNYkyeS9h9Z-wIQ&Dp`%T<)_$ zr}je<8x9xes=aLiO4dhm8>jDwgKZ|#4#s0-G3Tlbk}9U#o;&6FhkY<7BsG0DbFh6I zd*EU52x{Q%W85phGd*G3CxVD8vNvw^*YU~m^z_GPeB0QdJvlnQ(0^tcUG~%Z>C0W` zL+?gxB`iDH1Ldq&;=?b{8= z0~?#$qmh4Jl-~zKgi;y_0Vsl+hGy&!)X&ckGGA(c$)ROt$^hr8QQB0Ncye&-r>hfm zp~pnND}Qc#m2+zM&d92vRmXh$tgp8v9_Z3UtTpwfX!KUA2YvDcQ<`m!+?<#CfDr1a z{EhFQefL-JA(>yN9Yh;ilkjO0YJ4nP7s(YO@$t2zCh zGt+A^O1%SCzb*)(cg)M{Y0*WO6Ru)c@+lYMh@q7%bSV6XDQA*1aN~m}*8#eTDq;f} zEEA;J(bebuYuP(oX_nv-##MZwjxc$dVlkr2z?SJ5<5&Msq=7>(~ zXlI5A_-Q^)g@L>q;DH{@{Ray!9NPOGaNx~nn~$4&j*qgL9m%tM$$i0f8G)c-1$xP? zpkzNQ@>J6a-&DVoECJAjd{lMk90lNny{}!V_8xQRvrmI}>G0oN3s~xZbmS2{_Jj6# z)FY$o9>j{xEW^oAUygB&UM{;9k^;lw~g;TFa zq36hTzE=oFB8N@uktq|-O!Jobc!sRP+e+`^zj_bwQaF6cj!(Z`R8)$ysq#lr5c(;7@$2e239{6xYolJdK^CaH3ENl6O1lkw5enZ+ z0wcz;@Bqk7WB|!Lh!c$ey3akE}x(7RQET>xjYgq;6b%QW=quKI)FDUHGciOC`f*)LHUFpG1?@-qLVa%5}-}b9el5 z3%qm|{UB^4{g?8|&j+|{6i|P#I45A+;|2?7VoR^P!=!01ammKt)lvqmSwJ8HGT+PB zL}-uc97vy+1rY6AGu=L$E}*r=^2QbR*oR07ebf}xrn+71&;u`dhq|ka(+&|6xsyCa(QdK*fgrZf~shYM{4VF`-i2-29ci3&0du{ zj?Y}x@WP^zbuWb-y+7L^et6}*D(N;CJL;$+7Tz>9{mqer^%n2`7hjj|XlA_Z z72+-^mQX+@s-)@82Kq6c&n@VPA2PXBe1x5DmfP)y(Y93cZtQ;+^Vu3Z7IyqLGa0Q# zU>{|!#z*R`R_wvi%M8Wavkmh-kgHIUxg%p|sXNxZ?(slqJJwy8s6qMlZ#Syx+2WTx z!PPPIDB|FqRlM6Fv5?i(RVK*|*ARhN*?gq7hAq~C2D*6W^HprMq99Vq!^f~PCSx%L_!@t^cRi`d2WCc_ z_J&Lm&-k-hq@-#2fT#?@UmiW~P6!Uzn?3wDC>d%5s>9c|lRg>QF z#DFd6V5Ra~{JZU7U4iXO;y=!_;f<7uuA_%>3=lq%nf zMRPjOpP4r>j=pED$R9v8ui|gk1mO>Ls67%BSAFRA-dQ(I+K2j~WRaIXXOVJh#=}EZ zHzKk@4sT*3vr7!=5cT@&*RCxM{g}95z%tJ5ne*(G(A#t#di-Jw<9-UUP>CM;Oa)u= zB^8I7x7!aY_T|th9qR94yU#|EUJDyCj510}y97%w#kNiPo|_ej(OcCP9jIkCB~`2+ zJ#-7HmZaq82#Ls+r7T(U@J}XAr1Ht`FrLWRpv5f)Lk7skJsNk*ZOw%L2s_n$JvM^` zH<&M1s%mI>K_7-)`UX)a;b`}as=vz2Q6!C;f1~b+x-|vLOu`XDC67;%o_C?;`BCPNz=D(*8Z;sXNU}cyU=t*-|B} z;Z#E9-_wLmLZ^@Nxt-?k=9g`Kq$g*#)=ie##-{^!z9-RNEt$CQ~mNCGac_FVDq zYI4RuMaoL2sOaBuJo5PGVyX`Wlps4be7{#S(T6sjNpC%DrsHi2zECZ~fa8UHhVFC< zDld;8fT>xXI2e$*gO>daw?CAG<1{osBqpwn1w2w$e-Y@f7^F@ej4ky}`yo3Ru%l*$ zHK-d{6O2&K#Zt>hoPbLibRBP7KJy)|4f>)`(pPcXGeWiHY#^!xVLfd}yfc(1p=9Gs z^F?GfJ&3sY`y(G;6#3}!+g;!EBTq#zq(|5b{2-bd8qwV|ICJn!MvJ4~I;zSl>6d&=+aE!7d+he-ztJdWf;jw&1EACm^Osv@s=2Vsfd* zV?k7@82U*-CmLs<#y@SMOSlZ<3B<-o>;21N_9X*I=v_6IZ&z5Q>6t{G+|HA(Fp1)F zSIv0zON|O;KP@MBJeN8x8QYkwK?Hj3zajT-%wx>yH+^v4E+LQLHa>mb@Uwyu{prR? za__gT8ui0-A5U=BCCF-i-jKtgPFOJk=M(JD49uM{E8vhV__QCip_?NKsd9vC_IOd} z@)8MJqmT>gFV>cUaBnBX0&wEzIjRflnTaV_N4XF4R6eC)R^=RdJ~o;2Ozp-0tUOh9 zv(%0YdNykgmdX4O;Jzt1Xq=W=jp3qr?Xh}M%YEMeB$jecFEj0_yaFSKa2B;D^gV|L z>IpGtL$Y~7N0AfbB?y#Bc0&O@5O$U(4pIu=NvijVGZqy6Dm5$op}-e?saJue`;epw zw9{qECWsrm^ZiEkK>hrV%O}>0b>i~^0!MCNyGa^8f<#UF2#dX9IP_Ex|2eAZ}lvmW7}hBu_;+Q@Xag{PXgrCqSUK|`~z20I6>jh86q zVke(qM~Epug8-&drgC)FWoR^`$a8Q+ls>msE=kBH<*lCJb(V!w<1=`B& z-T*Z#6mS0fK6CxERGn3KhHO^x{1)8?3~<-?fRb5FQCoPS2A2p*)LIog->4>pyxnRl zhPl9EU{@RoyNcV791a3?MIh{+PhLI6{$gjtJ zkxo-Wd|+HX6W#to_vPp6G&(sV3A7KPJoaGh9Q)V;D^@^Yk|LAE0iuK3oGp;33yZSY zi~XcS@82TuyTP)V&C+g6)U^#6wj{@^apwI_oO$0ij=HFrojmbo1)sP7IGC#F>9K5^ zSVPjzFK{j+Eg_ZExpREc%?$2TPuj<*H5DdyEZYoLD;!0Nmq%;Js`K_}SPKJq91^ix zACJ>~q!&d@YA&jm214&QYxs1eC4)k%H;|iaWAlH{ou>(1I9)p`bfjKLkP0|1zz;Sh zwb~jEnn4b&0y>HOZY7JU$8V7y0L%@*gHBvy??*^_Z_zI;7}IXdGtts^D#ms*3GAO= ztz2h>;!UXN>~`8#u!_ArgqvQeH@koAFis(d8t8t5fusY8THHgF^kJCQ*}_xPc4ekyr2zO z1(6Zf<5}fC(Ml1m_JY0=UNcaYCV;4GUpGCwX%&?s;c*H0O_oLIcb?LZi4aCQwHe0{ zbG&oW+GYRr{(ZBV|AqTZ8z1D{ZiDUy)6n~%!zxo(D>CZz+}v(l0eiTp{KF}WK)aJt zvSqdzLm-%ac++ApU!&Xk!!<2w!;`=ndY(qCMpCG`$Of!44)6~g-Ndj)ZYUxPw#%JA zbaI|(Yja3{(tY-<1g9(OU`*?;+4kQ4P=EIg)e(8q2AMHEH55<4!$Ik)VR0PXA7YZW z(uWvHbI&Gi-oCbaS2>hY1cQh0T{MS4e6Z_Ur0lZve*WLEpJ`M$7W2(ryPv!n&&6tE zmqs^@Way?y{G%@zXR_}^B}F=2m!XvZqceDjAx#dS4R}Wh85Fy~e^56WQJEtA zcqa7yBQ7rW(RvkEI~v(+nS&d>Gvz)Fv?8Zu8?d91`@#7tGtm?+Kq~aHuWvQ-q(EP) zowJrD1a;vtP^#9_RpN|os>9?4pmggn`Nc;r!;b!Ac8VlLyU%Q|NYEtN=)YD2a~r@F zGM6V-%Jz~}`-@_g}Kx-8-$`jwZAIOW` zWqZLdl$;u!m@rGs!N_vvdk%!lYE8^0zpz!hihVOI-jgh@-MD8uwZz$CbEPFI8bXku z@(LY9XrOEk-6Il`r2qBgjS-lJH-AuWD1n(PXSklaEOn11y z?e?oKLlR9@RSW+p`E&UZiDob{-qF#~;e;GEd2+Tt`Nj)8m6KBJwe_^38FF{G&`%TnQ;~6w)p*kZz=xS!ib5F}`qrYeoKe`vP#rvmrWH62M zZ!r`pTdtgD00!a;3JYi@aBEd?dH(!{8USv9 zZ%0a5e}TP_z(^Jnl-5#wdF#8Yy!3Fw>BEN)iFy@|HQaH1Pw#+IFZM-IPo*lh(8LZ9 zY|#g@{CHF1y-dydLk0SqHm^^Q51ev!%_gd(#Ej?ga?8;r3)dWRBwU;7n9_#4Wkb^b z>=HQRIj?_+MHQZb%*LjDx^wpcRm~SJLLC&YzJ2+B3bt=c5(Wg`ss?o!2eTKX8E9n< zWj*>RiQQi(QhLN;9TPLxsGVd}~Vy6^Jhd4$I#r5TEJ%fw@|M=;PD=olM<;~TR zZ?=|(0awl=8Ts9OZ?R{Lrt&;O+_c9qt%@IB=J}MkVye;8yzZpd755R$8uwUk3U!!G z%@L__jD=Z5=Dn?Ky5bCz7(6aMm!1d8&wdrU3z?1D8hqh%)6*ujY;48r0Y@nIYS0rx z!w~=y;K;BLDjFJVHZ%`6_o(Ngn1sX^C7=WaXp<19g%iNo1M;#@QNIO(H{KGPK*3bV zjk@cWuU80i%}wvH_ckX)ene6gSj#jDI!wJ8+LRB2>~Qh)Ywnee<#C&FujY1zvE3^@ zNw7-daSiKe1u=d$&sEJSS;D%U0v*)$LGitzov_C@Z;i=4&a&1xDm+gp)KhwPF~GK#gewS|+mD0_$yBjEQB8CWhx zqf!qXM{D_wQDY89?;zv*gG)O_V$Ys~IoI4(JOwNe_^OKItlbJ+jOZ z&I{=uP{f6~Zh^e~1AJM<3afZR| zKpVpS&%3(1?h6PAM1Xw-05{KuVv@+o^DV!fUXE}%4A#B3=_6n zm1}!$+2G&OsE%ow0*|$taXZdlG3q{+XB6{lCO-jcKC}^9*%W|#x{=cuB_*Xn2g#5w zyhPYC*mK|&66prw+w+4N3LwCY+qzqq33PpI=V#M~>*u3Plwv_15TciMHfZ$-*bRKyinz4gICQgpC56wN?l zcW$nXNUN0lAwx?3;A5OcaX)@b4g->^Z?$>9tpTQ8)1KkYpdHl_#KszBhZ?ojY*wH{G;%vhK8RvOXzXCTfTnT%PxDamknCOS? zHPb#u(p?NqxWB01t-|<=vXXtUN@Re_b9qF1{}-I}3eaqODC0 z?l9jw$stYA3~bnAV3jvVawvJts)GSP{d{^Zl8zSw0n&!~rxL+<7Jwps1bC4*uRDBi ztTZaOdj(9K<7|;XXHHgD35Y`~$eer$U+U{qZ=<+$O+x8c2vLn`krNLe9Z<48VJ{sYz-Z0`;i2p2h~g57Y^>1AYIl^P@g}3S-Erm8a9a6 zT=S7bb708tQ1Oj)kWdXr6YlWaM9W+W5pHF0FESpv6x1+p3R zz|!WmLO8|3e9IeL6dfGic=0FUE7+#u!4j+CE}WRN=84|!k^DqJ92*i|;@EEH1jRB;bc zg}@BJ#+@?dk|#HP!Yg6uKC>n%FlFSZppE)2AETajw>K4-TU!?12$H)N!r3KJ*T}nh zs6aWfD;BUSr<}407uMm6%GG^_(oOSiaH|RZwJ&m4&gd(wyXLGaLkbp`pf~nL?`Y&W zXIl$l9&@sFrD1c`<28s6;1oKyX6onwetPWSaE~Authf?Ho>IU|{|J)7POvfe;{Hb3OQx^NqG*66G*0+Yu7nlm*X&mlN|8@$tQ`(_#Llm;Ytx zn9`{n{YW7zJ6q6afi4~5WK@QT$Stn(le zn3MBD?a?DkkQ($rVIW#1LWlw|*&!?;U|BcTBvJ`coYz6 zR9+i0B%?XCm`8ncB%K=7Y#J(z$h)EtKl z2?hTJl<9;FrVt!nBjND>>*oV+@k#%|k5`}E{SQcdA1sfT`2Y3stz8Ya1+d}FTo)@? zZV+Q<^W&$iRcDj{I$*xsmk+$Nv@y7Y`w)YaY9GSHQpx|}l!gq@TUs_4*&T3DjXm3; z>|_A>1$jS)bWtuKhJKgHn#&Kws(|7kNaINq1&B+e>ch{b=dI#XY&dXrUxA?dn-2Sy;q~=Xd8pyePh2|m5EB^sNE`^bqxXQ|%~`pL z`4684tLqe^z~)q8&)jcRwj`sEk z&)5L66n31h765yWgyTdY!LZ{N5z%!IG*JuyN&G@F0OB#Z)@yHIPC#%eT`7_lb-J3y z@jL~%xJovQ>L_a3^7+r++)uwtN^gZaJaVR&Jk{gxWG|x}UG*F=7dqo6n>txiMEM!X|w2?4qh`4-N zu9Q~XLQ%pim-4aw$e(?y)Ibtsx*&)rcec5@y9>M^;{eOK0^b?Dc5;VsKnhO>o0Oo| zbJ7MgRVb_2^sd~3Vbv@^ULgOsWXaKmD$u)*yQD9-)W_~)?s;IBusP^7>=u@}1K

R?glq%+D!aig~J#lNH9`SR3voaW9|sn)MUdJE!|6VT&v-W z24D6xPFIB|cg9c@!wrj^(3B-(sYrV{Tq;x(`k2WdxQV4C`;Kcmfj~+;*zp0kSPSK; z$L}aEZ}x(lh681^XV5X0xu6r41NSH-_&Udno=;rI$n(}$1ipDG&JB^IO*ZZw zH2U!k-YfSaPpWn2p3)}NI;r3zs3N2}NyPC}J;4K;Y-dGrFriN3S^Q?4L$IehR$65) zI+C~`ndiB5vP)jS#y>}c-iW{!!~0>t-BSQCoxkw%GZ6Owo^rk-ezvgLFDEN&24>`k zK=Kbr*HP~($dVp zwW9nUNt;pqpULuF;^)& zl$*l-LSPlQu-BDZaJ>pph~iUI`*FPw1ka-e$aJr}e|aO%u zI31#YQ;D-??*M$(1(p+iU&XXO9v7*;>rBo`Q}*|lybZDs*M>4R&F>gv34+0D?>S(# z0=-m$)%6_b&Bp}&&?EpUrX&h7vZ^4BwU9b)k43KBFBcNlGx91iLLH>(}Jsy z!fL(5HLzsMRUl@2J94mT*M&KG4lh~@w7>rPERETh%@A0)#r0%!t?mgd1XM_Q6cZ~D z26_)jeYyuJA!sfztXu_rgT%F==9&Sy*p=U35xXZgh>|M_Dk*d})|Z_J)KRr4An45h z{FA6oD=6ldrCrn-Wl_lq9w)uX9sS64VnO6RFq6pTV9weiBwUr*Ufol>!aTQkQ1ckj z6O*9=<<5v5lRVc(n{fiw=4r;tTb;@del!PH_|z05e< zDt+|Ycx3!XlgivJ_a3Ha?mF*5b?2=7-!Bx9Zw%@Gykr@h^B~s;BS1rRoPsSd{CT~> z8yxgEUHbG$UFj8v*Zz}c*Be?Lt*cfP^!yM&$gA!9_3WexP$w9Mu`w)C*(yS^65d;h z9A1~6Vl&Zcj+lCEr1`bi`2mvHo`AJK#?(!>6?<14EF=B#AYfgBY$0ZwCskaEC*pA< z`u3Nl@hb7c%g9)AUX7!d=HatKxTy~d1i>J;I3;73b_P5rt+?I=>}G2YQSuH$FRDAA zJmVw0W%KIf_^BB|GVff1JrygF1=#(Ht8{xhPYOXHJ{&Nr5M-ud_&If`N%N>*?&eKG zfRd=7tnx?uN&~108 z;oy$fkJb9nkP!NpM2r|OVGE|Wf6;a)b{XqR(j}1~ynjF8!3GRqo>*$MD*z6UL1s+Q z6j_rTXvBq}#nWW&rmyuC#}GTDh`Vmd*7R1iWSjoWW7PtR z?vjFATva;kW&ztG)?gCd+AVHap=0@F4o2ZNqKcUPm`_Vfyt3(e2kCjm22-v2EY=LT zs%eA{o0^)Obu}GFv3A%ybPVTdaf-w;LYE#1jc@h5%DWc)Hv0i{t|VSy)x++xSY06# zouI4n%GBb$&mVoBkJv+*s7#$+1F=g^)8ULB|MrZHLs89>Q5d&~pt}0Rj_|*&3jU4j|M$qh>Vtpd^Z&yI z#uLc+;Fdk5kPu&5BG3fC@pPJ;EYjE|u8gwXxvZpGey^g#xs1PIYF}^q_Nl}02Wvm( zucgwOJtv8^w`0B+QJXWl+A3!RZa$1XDHcg1K(42jst1jHyZf^i=oDIVSRR*$PXZ$x zVNh-pMWXsMN2U*@v0G_QF(h$YlT2qhFBU0(8q^|nax_@R&Qw~wA zS}wYzKd^jMb9%L(ufA+k7&I7B7=G~f%O%qndd@y3 zE1oxv=hy9tT*4{UlGF@O#l@wbjV&U)3TTQut?2LypRQtbI|!bI0nhHEn%N_Avm5Zz zFKaW{7s$Tp6MXNUC3eDki0&szN^1!$l@ojs&Q%x_>tRym zY*voyzT{6b9+2hib&N0iXXWymuZ4stFFp5|zu5E9p}99^K^M?0c&OBzbIZz$2DobF zpzR;kf>{pn;wIf6uB?>>2jxLtt93jETLHUbA9xNKB(8o1w;A$~ExD6nT)Djz1IL?) z;G%$^L|VJYTW+06ElwO&QRWW)boPl#j$zj!85g1&g~yM3IhpV$%3u>zL4K`FB3ASE zx7yh^)!vk4*do{%(#!P))klC%Jg~+k`{DDZ;rSCFBYCoxt#_iRO*gFQK&}z-?GogL z1c`c8N!84654N>H$dosHyFnQJmA$GWiFp@R#!Q$Ef9N;Err_E?1RTc!;}Mvl+2V=z%in81So-Z3xEgj5-6&=cU1n5E?tub{#L>?<45%e%rOv zgmy~Ow)oli}p%kfqZ<&N~cp+IjnQ+4q_#;YPMdm2sv!OXcOU#kQ}e3 zk`6laG)Nl7=zn4eb>|jZU-dtqJKlb&E;EnjJBUm3niI`WouL!V9P~~Sj|}HLcsJ%i zV-jDfc@m`yxeMVHMU-kMuwTp_6_*Xa9w@CUXY5#=+K?sv^LBEC)kYwiav?icIby?~ z62p&lO@gm+`xY7;k~;=K?>}e5s@Hnm_%O>M?0snW9aKjIZkzm}5{q_S(G};f5Vl+D z`P{16v9i_Bdr17s?1kTe^x?VyvDlqE;WV_g&q30sFKW>|Lz=Wisd;$*mO-Tx1BkLm zfW3wt^;8}|CXI}WDxWKMJ$3Kp;dU*6X12Hsare0&ektbMLG3L8O38Jjk^BJ-U5YJ= z%QK>Wo4XJvTe3-twNhT+wGk_dqFSuASs*=vO?S|dTH!JBDc4!rtVbMA?^5E@+D~dU zC8UwjNBG6a8_ofO%AcVYQphr5&LtZLyh^YP<0NRdAZw{bIWFENXB5B-#+bkIe+L(_ zYbU%AasTMDO|g!k2$w%cp;b#V%TLw3So~a19zWAK+PnATJdK+3qw>I8k$2pjyTEdg z%JHim=CVO>@(aE3JPND&QXHb9v?=D>A=bU|mY^Brrx4ZdoIsQ5&(QusrxA_J_^SpP zIvqY-CIRp=Sc0`ytE0htQIRz{0$AQ8uBza=J+^b^Ocz#vbXvX;QOl-0AJh5Kc5oeP z5ucL@ZJbB%p6E+)g8MWzO&KO(5^#pZip8xc+iYzT3o%B{9nMD_fFFFCQ!^uJv<&b^ zo?g=m7{#j71>*&fxOmpu79c4R(PWo?-kL<0x*Q2kUmsKT^pLIL%A+1HGz$Zth7t}Z zc7|_Aia^=f56(9Rh}6VbgXd)>^%Co4wbQ zMCK1LJW%x6m|x(*%I_p7dTZh~#IhIu6l}u9A4~=*u{y%c`?2*=Usa6#(@q?V+3O~{ zX98$@_d? z<65vvG;8$vE|xhBQ%??DKVw-ojni6H%*{*#yDd3#d~LY1OLL?wRp-3B=a7v^xvSEb zn{oBS8w@gjOWpz`FKmd2h`M_}t`-OAFD@<`02!oGux%y>9tx&}Z7Xdl-F(1iU{qDIa8v5*azHKZ&@$TR$K53A+D29k5KzIKN|?u8$gS+ol$GFt0G^2mXo7-+3+tH zfN*ZI>71xRK9vvXR6L(^n)2%a8tV;r9Zq9nzgRY`-FmP5`mMmBEP{x`;fLcTe%V#H zK9oB6RWAoUWMuQuE=2sNWB}gzUQSw;j1|G2Yv9eqGdAj$$#po%P~^{%Vv$dCgdJ)l z9IqjSy@E<_2yc@%wc7#QdKVBX;>x8*Lg%9XAvY{uZejquWSr}|{n~%ALI2k{^#4X? z{l7xm2xYxOqmI6E6Tp0ZhP$sKCy=4ZHY$=!m!lxzxU!%NNwws9Q5<8;v)sSJ(yMtK zW1WMX@|6mWmtP-$!@4W?-Z0)cvBM$mC5tgBci&U?M$y^+DEU*|cXKI|v}BPnF|=hk zX|=w}?yCN1kf2;#3X-C^l;Iq27Gh`al*1y-WCg0gj7B>pr^r2*51A%dbsJdVHG-$V z4KJ7p-6fnW-FiW3Sa&~Yklxr`)6;|3(d{Uib(1~ai^yMz!8F8Uyhv{WG5gfQ61@4Y zPg2tG*weA-KPNS(UK(^a zrz03&2-xhXRzB}PZ=I_%+xB%tS)G)MxCUl9n#TOa*8jk7I?QZ^OIJSid>dSpazdi5 zU)hYU%v;}X>ft=S_!I8=3+WWXz%&53-*?GZN{~Jqu+#o|A^>w zMbSY8ezx_oB}$4(27wz)YaA1~akId4M~mHJdRpis)5e!$O>*q7xEZ@!nTzK%!cl&= zS$`n9cldiu+Tg^pM`XtC8R~MhY30cKq0GKZuVizI(Bd>0t()z}|=40s?Vhtyl_3EL`If7F(W#0K2BX zDsQYTFXF^ZiWvYep_-&9zB+LY+EO z>q`9&Y^sWl$tAK`LGB~mX>wl%)9Cnq2VsLi6Tb#0ZGnL=+7=Am8=7k(P1UxO(nzqb znXs^6aWo-G1wwFxoeSmlxTFu;qJ#P%$m%3s(ftTM`!#q}s@!8AjEJny#x`1qx zHy!49hh%2FLw_meQjW~&JP~A#2H%N~sDL&|^U9?)4;vCM>_9zA-wAeot%5}Lve^wK zY?T3zdaRd=t7}cDM2u|Y2G}x0>r-OT9w`lP3Bo+4;= zs)5GzlYkf&8KauYk>(^Z<<%RDw@=59el^e@PxSaQ&;FG41z3IT#+1RwAUdX0ly1t& z&W1b8`(<(H`XnV-ZRsseRTZ~cfX(8-z!1!9NI zKnEM?kfTq{#1yG7)$s2B2jJpt$|3Wqr^pd*1z-SBpQy`pt{Mxjmw#xxMaLJ4WgpX^ zi^nHZ`zo^Wx*}h9{d9dEq{r135B)}*Z|u{22cIq2Dp1L6kelpa0lvMAlW0SaX$~L4 z@;ma@N-4IsYZCoAzF~hfvzNUpUbqCJ$EblJ#wK3SZ0EkhkP2VaVICuoz`9~esk+t~BEh_3~;G4)*)uI3{^hmZ>} zX+c}$d2aepf~Gmi6SAXy%8IL55?P(y&<#iltazAm3L=ZQ5;j?V!P4|FWB#=%~%xrJSwSxVZ9cr z^kUmV7hLukJfrQ=EM@? z%Veh^-=q)km;}qs=-n*iN<*(#-pHD%c`z|adb|Fr-fC&5wnB<5E6HIJRM2n##W<+j zI$xKWo?e*COs(IMO3i={`(gaYk8NP%LH*S|5c_jHJ1VyN3JKvcR|7Vy1;Ptyju|_D zvl_&&G7&LIuEwE;KRA>==xXQ!*g|-GKA-M*zEwug$xx%^czB{|XlQV|b)21~B_?)H zRk_9j!k?qjCT^y*w!SsmYgXYvgQ#+41EM!nw6tL$Y433pRFO*Jj!DoV42;^tP5l=Q zAl$WeaRvSUyw8dha$%*!ifG!k4cVDoa<+?UFmn0upEzOZMmnY9Q%Hl8ZVHRuywKFrqMQ==^K;_? zSrg<4dls>Vy;y?@(Mx*Xl|B7)jic9Pu2BXQaf_o4(5Eq|I8K$2^7TS60c88oFLJir zkaq)R{g9m8SHwzHeDp1}+W&!c35UL_L2>oISjg^NRD1jH0^2SHagzz!j09H77lAho zo{`AD{6hjnH59pxJV4Z292_NyI&TbZYWP{_|39!4pcJ9z>bN;v4}rX*gGy{*&q&G0 zK4LcIiohO^mX=enTlD~$FL%drt^vMKq0VbusxT0P9P;w)9=lG-*~)jvU$XtjwJs$d zBb{%XwmyM;U&^< zvh?;dW){^GL*g%9g_)j45vEdJ`e=G6o@^o0&(841c*F5z00I zNu7-T5cfs08&x=j0`RC!#ZfzSFg$3Z@?UI^B!Yjly#7a=kpGqU_j$snPwhAg?vPi6 zBJPeiZAuN)PdHw5CSB(6`U0k-tMfRPazqwTodPU{(jWNW860mbDr-sa5%wk~Sa$CY z0p2eS1_oRiTASZ-*oxcO$P_*vU+uE?K$r%q64xv@oFEp$Gp_G{*p>cS!jn0E@ZJo`G9ws8%_$qxBLw zeK3f!tDdK#bvx_HX`d0`c4&bhx8r|{8~Is|NsJln_rS zXW+1QCBdx6!g;D37qlKPI30X{k|MzOW@f00ZSnci`zirSvbmru_XYJC$}kO=KP&H7 zY67m%bH8JD0?4M&(6HBo28X5XwW0Vb?g7>pWn+pFcD+3Rhqbqkit2m+#Row`IwS?8 zF$h7rBm|X`Mp8gpx-5ByaXVpxEHGFZ2i%a zrFyLUm(R)xGMHJ{gIM2I%o^RdrajoZb1G?e0WmCZf2tdI)S4N&PAD-dT zmHI)e@dzH{$50A_E{?$(hS2nrZ zrqIW}8JOiAHhQ@8y}KyCKVy6fiXTM+gG0>g+Jb~bw6>_&*+4H}=BAs4bjLCAyLiD-RcBCFQ zt5xZily3P(?*?-qdP3#vNH%OgBxmYjH^pY(A<1tRyp_AIXb-|#S?V%F*jxPzhS$q{V;3eI-zQF4~?vykMOrt+Dd3*NLcx*ANPu(lZ z8!Aw1b{)cFFXykfa4RWu2Y&Hty1eitii^oa7yA$%=gF{)673np&5I3MS`=K3{V7^y zXvh+a6;0)_{nZOb0Cw+$C!f?bPMQ=x{Vknwi4_X{I;-{kXtg3CGZy6=7v@;&~bOGL9l3wsRWdGnG!9bU$*=^~EL+-ke!|>5onc~E+gMvL* zJ7KgHCP)FM88&=yJesrl{nj(yiC=?D`+T55j%SdW(TI}cxXc+A&*-J}bvkoZWlN-{ z*NkkkE%|MT0|e0OyiMNDxMCSJ*ddURC{_Uco3B|4;ltT-!@ur2rcbUQ_jdzUQ#yNt zmYga!%60;?#oaQ$ySBkfr#cyA2FU<@aF_4Tk^K)ZKLe)M0zggi1_?417hbaA0Kd{m zMcUcB3Q9GO4 zs!fq+4TE*N6xZ2$#?EM??U5+4`x*KC6EYao&zMef|Id*WE z?e&gAJ1%N_YJhjzU*qJ#T3kun`7ycT_-t9h9&o@|0Huv1R%!PodV?e-r(VDRJn@=p zEArZBnxKK63=bhkk@bn6&({YJbj+TnhrgLm9(U%I(%sf!5{lVAm_r|cB%Nf2lJyIk#=0mOecVM z=(*zPV+^uCvDeQdWom3)<{F3;Q5syB@wL#uDr%F}280*SqRz`%EV=6CZ#RBeY-sBY zTRM1-8rZL8;W3OqLKH(}WakFxY#9BLVyo;aj7(%F+!&0^-tv!^7>Jcgy>13Q+lv@0 zzTv^}55UJ^0^51`egA&wfS(7Q5dN`3k8JGTR*A~)Pv-MouocYHwEA$}{J~&G)4QJq zhQCE~cd%qWns%}1Xo0yG&qRW2oXsm%q@UYnr~446tB5G{tv-E~X3EwqBTI+*g)x^x zdlD+VdN7|tZ?E=)*IV_a80@nQg@+qSv(@odXBLEI?Pt#Dff1fXJbB39QR=tPd1+m^ z#Dn0H^eue0+R2r3&w|8CGAucM>k!A@09#c{+>?U{Tp$UsbjkSYS9z z!)_4v6v#$O_G+lQ1WIz%4~d`!AZ-=MI+E-IlyL{yhdfmQY9Bz_ktWcd)Zx+zXkL^z z`e@Ap8+^mgUXm-DV#k;?;m0(IY=!8?*}xoGL-lCu*oits5cFXLS$Z7yiW&YKP?Y5W z0&K{;tgKidO+qe7`~fvH_e02~Bx?+^{B3*TX%lXX3RVv;o^BvA*gu}(_LY)e3w8iw zJAL_q$uIUut<;0KZy1GGTXi4$xPZu(X%+xUfHOZ@qP7VX5> zh8%;K-|k_wkWrvM`j$Uru2Etgz#M$~jN+0rT@&cFPESwg;y12e#xLb|2+;AerP6Ee z{BEUGkXB?H=XP_r;ux@4V-{g(uIXjN$)Nn26}^&65}YG%qH09oAQG?g4iF4}05H7T z0c7gl{muh}1aAY?k;xkqj!pqrKaI)+5sC}jw3?jo4gofIAhJC92wX@CizOoz;Ww0h z|BRTOn}AR8!#)dLy)0_oG;yKf^MIwDLh+!EpN!R<>?n6LbHdJvXRI$$&u%7;Oc0O9 z%bn+)>a7vt*d3-&Sdv+3E8l~d#X|zn!d-BCi8@2|#5?T?lbF*VzCarqqjFG1v`6}1 zk#3dO{a=gzKMucCRfc!(3JWKaRdOpS{-ZX1`>aggdZbuSIYmCwJV)X`f&M=U1=;e< z-V7|{VbAoA&wyJ%@Ba+>KWa2Qyycyeo#6dJFaFH#LmGtwh5%eR(ir?`oc!u3p|f1q zs&?l47Fp1Q{Y%xX+lJ*(0m{OOj30Zi0~Gx#k)2R!2X5BBaez&rt87q9J;}7mhoj2L zI9Ju}i766<#fIVOGFk&Q?Ztu{L<58_0H3;F@j&JC&&$a1iAeu$_>b=~llVMQH*G@mA)p8_JdMsZ0QVX?PztFYqoyltZ#Y3N;Ba7Hk z*?Xgn>UB~xgXJtIb;swiV>rG*tcgJ?(F{`vjdFJMQ&N9$8=HPHF0D2Z`Z031?>lz( zs4cbGMMh4Jm958z*vSgq^LR^u7%;MRy0N0zk0c1th$|1>I`J}r63{F3MA!R-Dd1_*}^d{Qra_1u!x%TTqh`6HOQ;ZjmayaLD3!nARQYD6k4>;@E+EgdMct0Mvns^!*FYT(M7Cyh z3#xec41?1))%Y)R>P?FL>tH{LU^v4d%`+*&6>w)jv6@} z327OEj$SI-0FoZzM!bT_H=7TG^6DkpAnTb|7l%|>^5fQ=AUt{%&3tVI(JA00$$-*!Lt%&Ht}80o!OaHs=W6wn2RUT=gOu-k~=SH zSLo1hfm|@+cUOG8KtN|BKOK8hMtJ0jbZ3EF>T9tYhhyWCF;Bv4aQ6f+Njyr$QOf6# z4)PF>ZgZ930>Cb!jw=8==97~{E)wV5HL8xpskOfa*|j{5PaSR$c4khFk2Y<(7bMaW zS8&i@4Sxsv*vj3Mw2UqvOH z1+2!pXO=zCMtmxoUx)iQe!d6I^f#`yOF*(fR=%UtVH?=u06&QLGcY|%-^dy(*K?I5 zk8~)07OOm0aOKbI6lBUN&1;)avabBRg|mASaLf$HSq`y>GrF7mcQxp4Y0+mY$V80Yn2ehMFvV9K4VE$KY}F zRy6)x1xpPHGFkdJ9nN0oq!L9W%ao>FsSJOS3A=kXT|cPgxfUthqdC{VM=e`}z!fo1 zerC5fTl3Ki1z67$j+^V00aXlMTzWbq9sxn_=g*%9w?MW~6%Z0W#PweFuvz@ty$XNa z$~4XSeA_LdaPtSqgHfAOv+fRK<&Y#++&gmNiA~o6ouOdb{PErN&GV(6>f1WvWwT8$ zfeex#D2J7#OX?D;VkkhaYz+jNd`wPH(rM)B2vaaXwxxjAnum*PP4q(l z^RD9`gKc3IwWqg#I7wwk?JuTZeQ@MH@SyKRLwd2o*6OCW_67D9jg<8l1@?xB|wnKNj3g;}>FE%U7PHF)s4dkcQ806Qf8*3~vw7sJ7`Z!WdQr#%G*FZAt<=_W__3OwzdhVJz#n(5oOh~x~SjIO&PPN0; z8Ur&w>nzoEhmjyXz3aE{+}V<^0}pppT^IeD^Zxx0d&cVO>RB0QHG?eF^Vpcqmk+fc zoeSVqvfolVz@6Vli1&B<(1#!qxwBI!GDTNtx5YY?rPzlIgdz1@^mRYW5*kyDEXXv~ zi(59L{uB@9ubjrlNvy#0CdSOOAFlH9@}As;teLWb>45iZG6)W|X3i%r{-%dvD1kV)ErvlTzR5ihE%Zx#z(p&!0A%y4f5yDr?d?N&=V= zc)RIo@|~%r>7@e7bB1w#sU18UsqtqFu^#(str|ZHFQ^d4^$NaWc{+H1N7d9ZkZpX6 zhESU>7LPjD8jOkZ*rtJ9RX*xZ1THGL4`W&O*T~ls%;V&iHzi!c-n^Nhd#a~*RX7go zo{*3r9)$5NJJAJJA3!AvCe!u6@d)9HqvF;Y9ge&px$WtcV~;Yj%;}2?<)nqGo-^sl zQgu~V^T}K2fHS+}ftuP_%Nipuff$MfCR>jXqCFl=iJJjV5f};$jBX`6wk`H>VD&ie z2?+_=%xzh}=&FVN*B3x)RzN@?LTsx^$~q-Y89LIB&Gx1DBvH?7!WtkE{=c!k8OSonm&uD^|E4}C>(4{xBAT<*|CLVd$o@ADssF3l9f+U*$56HZswKa9;?$#?SF+4z zI{y{21cshz)K!)AoR zJ4@w<>||oAe+AASY)&PdOu5Xg$RNBmphhWuN7g}g`5NO}vO9jsr!%zkP6sC&n-Vg( z^(D2_BP#;V(y65ws;qCc(0ijnXfDa<8DGI?DcF-ExY#IB6I{vmOT|TtmhTkiTrxld z@sA{R8qHd~t?NvB8vf>G10twN-n&LaI-q2EUelN)U1>uGFpL4aD&m1jS$lUbR?f#wGxwsR# z`%6ci);*outUTS5tcxcP!*{=#$5^k6GG7W~EBvm|^PSj7XTROop;vY*r)0d-|EY|8 z!kty8ZtYQp97Npbb-+sZY2iAW@<0Bk^wugI?+CdG?Nm_}|Y|sH`1k)0J5$2~tzqUCb^1q*zNkoI6hw zvOz}zImtiomrV~8F1ssG&lJlw`<+4bL##QP=t%DGccuG2xnH`Z0t{yQoEeYqZCy0a zIp0tAT}cWs_*%poPu7dIZIozx{X^~blv)iHBK4MQfbqsf%Tcg7;Nm5)xi)Q6oaEd6 zx0I2O5Q19WIcJDSJF|Id?|zCxoHS;I5|4)(o) z0OVsrmWJhhT_S8xc;QxA@~NA&YJ*tathaQasp5ys2`^tZmdk?;$X% zZN}J)YB((%M;sBha#j|ik-Z|Y`oJ=l_7uE0``p=*Bb-XttyM`@NMb};^@)V+B>y@& z3zhFM8qOUm>y9>(2@xQ=yN(sJ*>Z9=-ykQL7$IsiGOAni7A?H+NiXHp?2MBO|3p0^ zQYhiqu_`33@3D`kp*u!zieD`)S6#r?!`k_Dq`?6^i#JTM{9TG%w%$4GCSIXI`k*iU z#-G$xjCdFaFnVL|(J&W5BvV#!DSa4Cqg42lR~8>#{W(1+`L`a69#(~f-1pIFH>@3L zxnLs&d6t|}DEN+3eZQKF4?(`QR#+~U3lDA!ovS8+hxw`^qH`%0NKCWh=^y^xeFQ#H z3WkuuyC}2aPees2EC$OQ7s%O$9zCsal(Ll zH8?$s=&@oE6ov`!Ao|fVwq^&iFyeV4=pfl6ib0f>jcmwnn4Hb>qC7LCx3AA?KR++8 z%VMbUeK49#tLB!34+|3PIDs|&_YCA&4es?3MSF?2 zkhU)~O!L`7-EBXf&?IpT%kQmZ6h8^ycWj-~Gtkq<6mba%Am%?k&YI%{3)x*(*w_yo zeeZ`_4G-jod(?iOz+B4puYdg1d*U-Sa(nSGX^2=qPR=50&c<_#bWT_+f`_o8-?yGl z!_kzegTn9>=Rs=Xx_xd<`Be+OGv#BIB%JKFj!B5zX|HW9xm=*3o#YdNH9rMtW_DHE z=vERJ4K$1!Wwk6FCD%dCQ!eKmP>Jn1JXf(((CfE1&Z>59jF-#NVf)QX@k-FL>YB`O zn)2(L)eGC3Yod%-Lw-{I{oshXGXD!tL6!m&c7F`{v^tfDKM-|O)OTzu>Id2Mk?5}o za!V^~;qbjm*soR*L$@!8uhElr%0jkieFYXMtJ;mlujbKdbEA3j7GFZm4Rnv=&+Dwz z&*-~7XupW8S&hqdrsr1oo`C#$1oxMmVTBCM%CAvtZO=!W%^N>`C1sh2g^`ii_>j%} zXkt8{3o;FFuvKn6l!&SvboqyPp2ygEUN_gsThC510N z`&sU)#l48uiQ_F!426_upVi9-JIvpqYuf&pHb ztFNaA!edlz8qqEE%lpGGI(*2Oy0}|TTGbKHJW9HezqU9g6n`7po05)rG6pauw@SX} zQui}(Q!9JSy0{D3O?r4zuv_DR2~3eqjg9wxwBb;=yoYA(GF}UPR`8|O{1?3Gna1C$ zU>^cS86AY?9SL@9s>tK2)+8MHZ)3x1ahBiy%AT}YAL2tqWS@^ zO?GCrKbgr*(INFP+i(1VXs6arLw#|X`V-wNS^O<(@5J=%dDD)DNQP7D!TT}2ATs6d zs68G;7*j`h(YqXTLJ>{e%hE;*^+MTSMK!)Zhl>l zzriXH#b2O^x#eOxbZ7f|a@dot0`s#(74ul9Q@R=S4`yXKp2r|d<)hgJ#F*{KIP2I7 z%Lr`d{FMBu72NpvWqhmTjDOj7;1XFb?Du4Q6T{rIn|{%9<}f|03(b?fLhPn_(4%lh zw1F*hWym0QET}BNyrFY-tOwU7Z5?=nz z;Sl}1+oAmq!u|Ky&AV6sUk(=1w!xdkX16xkvumlBKh3;-Q5SSvJ@fLI$cgCt*2X9z zyY|3leSz9}%Xd;EmAGutMc1;}SnBd*g$RzJ<()bid^&Kop2v80-IkVLI@QwAhdqti?3e)kYg@Q`DguU%n`=wtA>{+kN(c3c9=QPCRtd{1JSCzkD^kFD2>}=L?bM$yt zBML9TXY!!KNz?RIh#%FY+eZ26z|KFv{3(eQTHbV{Y|5q5dDfjN)8Q2VM9n%o?D+SJ z!uhg~W^MBb;;tPt^p0psL*z^nNA7skfOUsc#SMmU(nMPyQTIglo7Rioaec|aEX*7` z{W^ogpK{1MHfw4Y+0#q;^0Drbo*Ja2?KPDMVl^f{xhvy?ZYyVXH1fW}Rn z^6WMjfKbiioh-)(bp@Y7^HJ0frW+kM%l1O=?T;iKJMCx$uq+}aBZqC7h?5gdnu)gSy2-=gEWP@RYaTh9&wryS_I}u*Yhxq=1nYMln`hZH?J%VLn90SU zgxZ;TbywDx{;c0%H$xVBD#H(g9xfc>A3K4Y%klIh{!r>?Y==qWcbRvCsymfXwYgK? zMxcJwy`>1!*4L}-lh3H7?UL>XYG)b&L)8XzXSPg~YS0B|w8C)Q(H_SwEDifxp&p|uyxh}E1+Qr!U_6?5G7Wq9)NpK;m zY9}s=b4U+Em7ITKc-OT9T4U)tKjypH{}@x|sQK@y-%O3+6gHuB+RP*Oi5MjL-Y#ge zy+;jXQO5jQ;(I5>L0=|%z0=scw)WA$9gRb~x!gQ|65(rM31PJf>rZ$)A1O>d@)BXk zHP~*S@adUKd41$T0W>PhE7P7NKKqyhWz)ex%!rHH2 zaaM+KC-S%mEhxD0CmqO4W~(iyp<%-$3Qp9KZ@wpxxqJeP8~wtobNRClx4UkxDzGK} z8yFTVx}9bJnY_<*{w~;?Y$Bmgr|>L2I(Q>c8Lel`ikTI1sqYUdi5*6IY#ZKBBfbQ# zQJYj`yqH36y>fg4Ug1*iF^lQ@J!EQ4=J~KnF6FL@7wVtkn^h)5%PW;W0|zD*Q<12o z(xEP;%~$UjI#?4m#>Z<+@93IGSP1LfSlDSH{T?oE4z2WjL4)=%Mk<`VDYfKubH@Jy z4yc}~b38w1*~UKQDyg6~{o@3C_eFduk`K(_R|yOVCV@m|8kC+Ug2oM?Xl@M@#BDo& z)5*L>+;fksL)*R~{i)VrbYv%$SQ@yK2oxH6U>Y!rMSeBTBK<`dX9cN;yVhGh`K6-v z_M^5@+)vgf^Vq7Z`1q4n&WF`wCJQ?i8`$S3TOab`=^@(!H@4|1;qPxz>OSck35R=a zt$kI0L5p%ZAj|0+hjR!Y1Pd}re-CmN9IU;iEIS~emk$wdV` znSU<1*30`@$?!Ixfezy!`ntT&{Rae<;OXs^tiFN+(!- z`8LSsRSk*#Fu+T>t|j>>Vt0he7RemX&w=bPUL>#rulg30NEU#rDXVqR>baUyJ#$aS z;kx;p#Ea?*=)?g|&M}KI%NuCTsZt?nwu!Xa>z-s4iyg)zSW*wN^=LL@52c7&j|DF` z#jg9keOTExDp@M`DkJ=EE$Qz1fc2`7C?qWn6Ymr$+D2D(=iP~F^61D@wON5@^{J*g zULy5zv8B43saiDGll16sqfN99iKBj0$IE3~aoo8s#r{xB&zfPIxfWM1X`}^)WRwGZ zT1HBfqSyS3?jQ!eo_vdYq^0}Jmni8?imONyO^?D(r<@To!Yb!v-od*l5Jrd<-Ff$J zF-nQtYncK1q^gm<3eJ^8!j;sIg<{`RM0l-1DPN7(w7y$pRDe*gpU$-G_47J?COVi$ zeAlY}xN2F`n@eVL)&)z%MP)=@ytug_$H0FP{bxRR7E1by+P|Rxd}e_yF{rR1S}fs%_nH!pJ{0I zb9CkJg3U;=g1*x1UZkt$#L;aN_GD~P$*`kIUSX#A6x(z>U&xPr zcD=FJ3kb2&eSE_;y$B~Ke}bD$V47Uc7i0dhw>-q9`Eke&xpdf-tD4=`dIZP~F{hvF zzg}C?t2;zSm~Je77hV#ZS{90MZ@yJn_$Nq>=wNw`PvfZmyU|!kUSfcsW7tlt@~im) zr!?z#J4R$W8|Z2#J#MC^9GeNpLSFcs*v zP8s08k&Sfwt=%w5@UgentWe!F%O=EQqT-vHYp2cU%1(P#ns3M)zFYJZRl$3i%0A=$ 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 z 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 O8mc;vOCG*_`~Lt3%$;8V delta 81679 zcmZs?2UJtb7dIL!Dk>@>mwuHdAaDTz={7_<(mM(Q(n1fNqbPFe0@9n(dxro4q9Pz& zT0##sln_F1Y461Q|GxFsTW{7nlQVNBXJ+>7+55Nmp3}R3A^h+{)m;K``xV{0Dwcz) zCvTsJ&_|wSx?2=l8WN&jeYg5$B-#p}(|WpfY-+uAb~56UBTm?xMq7QQy|_}31ZET-|-;~NqZD}5O2|SCX8O_@yd|g#CGUk7-R~3_?YX4BBqdYI8Gl{5 zrY$bse{wmJ5C8#_fi+79c8~#8#T-@9qK0K4m({@2I~dHE@GE%^HGS3eRBCIKi_Ov3 zK&2(gr28G6jnxCifnhy8HBmKzRB1gtTdd^%4~FAj-dg#ST`z#XaEGHLRl+W9wlzRK zUYz)PQYy>a3C*H9S@r5Y-)rrEPvmEQWE1-OG`es2om%+iZ<|&w34b2HshCWNAW&Nm zNkw~Cym1pq`Tz}B*X|9EGZ4tzmmRO^8YMT*D4ApH0KwfoLYsqQI*LJ(BfhlNv9X2 zmY2gnRr#c)jp8eJi9TI1&Fg3W!R_)^#H{cxby{Q{_e;oYpMpS)BAZVC8LuG&v4ZD7 zNH~P{`p@HoJ^`g+xx?oal{<&^!$P!|_xJ%@nKZ(+l;zH0kFXHYl|BAHWsP51FI~o~ zzQ>JcP?kKjuyXqLUe#uYOrhu|wnl2|KQ?}GY`cquXB3m%S84a%b&YL2Y?3|eH2gdw zQt!LRH{k{l8c=A3M{M?J0HGDvyz&HigsRZ-^uWVDHhiNw(ftTh-QHbU&0RnaC{#_@XwFkOW`5z?8eSI;t?}&7rp|NbcyTg&9sXG)dys_nLm0;^l_PP9XTRCGp%q`jYBaFW@F*b

J;fs|XOvxtg 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 byVs9^;SpUF+sWuNTK%d@nu=x5UI+gl!|K_% diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 0ed9648152962ebb235bb7c2d95bb62c8ea4096f..31a83b8b388817b0fac8a3daaa79cb3abab30913 100644 GIT binary patch delta 81203 zcmYIw2Rs}9|3BT6Pphp~i?*nusH)n0x+rR|+AXz5N^FvAtF5+H?HOvuj=e%cTYJxx zAa)R=Mg$T0U-a|+{qONOclW;cz3+YR*LuE2~cn@48aOXLVkStj7)biPPrhuBA^N2}-br`h{0L>YNILsUyUlseC9 zLmzjVo$Fdk_a&+pY`$xv{4MSL^%8Zf-a1qk~@|1vb4|^a}OP*^4Prd{9|S<#Yb+ z^Lt3lVT>HHwOkB2Q~5_{N7#C`bIglSfROd__5Ht=Zem@Avq`P|CllTZUrl-6O|9%d z9%%5bIm%&Ns!rr&Wb@~kn}ox1$Wev;omN1!WqW2O_At|gw!OW5R{Kb~Z@!_ZW;EeO z>igYd^SS}+W#i1u%%`>AKQ~?O9m-T=7m}AZi;s^_7QsG##OG~elhxPXKM1y)5ZSo7 zR~N{K9w9?$Gbn(TS5PTbOx^8`iHWgEHYqb8b?@XM+g876oy6=XVHc~PZo&3YfQRAM zzo-n6GO#3ZPkK0NTlsYPg)v~tiT;Sy*1GS^Q5@c!JmfTIMIe);bV zedqSYYP`O}R_UH$lTo!)Maa0^*{csa67JhaGq9x&4!mH_UiQZSvj--k%yYxDKTbmA=Gz=t}#vcR4c~$Ek_bY)5KV@`T8#XNKHvu zuVu17vxqezA;WykII5pX>j-=&uBn;+XWLq13Gm*#$G@d0x6>)0wR&LeIB5Z*%wXiMg2b$UZ{9Krsn3x{z$Lv+D zsWGnv`hZtV|EgTfW9rVwn>)y8sV45?Pix3oc;Zf-dc(L0Zf_kgkS^UeQ|@>WA8nc8 zP^>dM(l;sJ_pU(Dj~B6i^=~Jp3Bg9eddBFC?a$YH8pr>hGBMS&T$ljQqxqNvfqw-y zTfT8MEu7K#+*BJRu4F%U(Czaj#@kd=l~a;zKeicSV~eVZJM)nncO*l!6SfXUP5PIa zh3Q{`i-H!-<6g;-cHHPjY3ZIw>*dT>+>AHX3ozair4x2$;Z-5FtQbSHNAJDBd{Ui- z03(GYQD>+2y_FDVA?~s)qZlp0CXZn6&!)j+Sb6xgV*uibehT1uf6}hBjY~-}8Jmr~?lL9yots@(A zowBoveS>+1iF;hfYnwD@^Vr*0fqxX257#=A7YDN(26Gv^4R~G%zZz^{AX;#eiRo!{ zM1*CH`Mz>Dd+KD@&xIXXX*dA`gWh}M=Op`K?p%VQxxwAb!8Tmp^;NFZESX4TSk!&z zz6=$kpP$a6i&UcpA+bV+EA3)dO`}WhnD@b)vRj?g&0!Y)^F67Fw*d8oO>)tzpKZ@n zKY#h+d%+?E=w_1SnH$ig{L<3Wl%Rp>SD(_CiXuS5Xob-tVPui8a% zhtmYyMIBUR=t;*oHbzT6$2NPeyX_#nf=8(@X)6!Amzej`m9D?!T`*I5_p+xP643B( z{pg#iRjO0hLbL=k(|17XQRAyv5i>bzaRD#%jqkojD52H|Dh{1{E-eAim=VG1>gsMF zn(Z~;dR5pYR-FRceH_Xu=7w<6>d6F)^Xsp=>xDGh>4tu93Z@=FETi8319goQP}RfK1< zB*YwpEWQ~}!BAIpL7G7e*-sql2$3AmrmmnxbsjT?w!;n$JI+={A%G5OJMXaWb7d&_ zxlB^8EbiJZpFT!b^RMmKKE*g}9Sx|6B}8})9btMqHQ$#R#L!jkdHnBmb#$KFu}tpy zApzp*%yv#rj=}t|&7Rc9^40Xz(T~vtof}8DL2?GiU%YFwb*Ib6314$xrLQAi+^qa| zs$8mnM45HBWxNryxXWnOXB%=~%?A=O1u#HrAOvxRX4J9N$AKbM+fzZZoO0e;6p&!6 zh%SRT>ME8_InK&8(8z8vY7f%?v;%-Eq`5F2qwj5WH`avqZ+Q9c_1F_@4GN4iSvX~$ zl<9?j&>GjzGeE4DJexsCLXzVjI4AJtXs0XXx_7_ST}W=2%QN6~?|sUy5&^F7T#bi7 z4%pqtSHW|RvOAKbk?l`5-r+nSvIoDCp8aX`(i<|qmThMgb1Phj=N~{TeW4!_s-3OW zkIYlL{!jT@ZPBesj?sQ@2+p(nrzj~Z)?%)4KM)C_20n1 zxcUuWvav8oSRW1_RC7G9vMR&*{c~D;zmTJjX@K9c4qc#6WmU~r;^nCM*4dRScdNxk zf$M%;;XoULvg<2Rg7XS$kUwm*^B}!zgJrHGZ=*IK`8T~bJ{BT=ZVZq`tzLqmEu2>t z^d6^Z&c}= z!X-ZfuJ+)s+2#ALKC&SM-%L=U*m#hJI`sj<#S_*XSaMrZesOW}IZ^E6+7gk;%W~d- z20A*PTU%QT@bEm2v0nIHY}MA$G4SoiV~o3u#j8(euB=;w_CJ(U_EvjIRCsu5e*PV> z!QszDgKm)9*#rGmtto2(@@3O960tEeXjmXKlhlKmPYVjxTdxJdNzwW9=QjaR6rM#S z`z{KYZEv{AlLvGoGDI=kk4~OEi9sLVzG9n{y1nh~Q?Rr=RFF6|J?+tS#nyXq#AWUi zTg%gP%a3G6(&V>>RD4vqMZG0nR%n!nmh$5=J{)TJKD*^-rYxJzK9s?G4C^ta8FtY> zwN@M`rtGGY*D^oQZ?A+n^7#N>^y%>`1J&&?V&UpBZd#c#W4EIF&#Gji*!>k!kyofh zA$20(yyjNiJ6+_;$KjIUrHEHpDw4!s71^InOhxib2^cm6E*SQ?qn^aA#hMHFK%AWq<>*(^mAma|(QjF1Jav=q**D`nLt;Q9#)?`S zBAd-uMpWjfOMm^b@~Ecl!uY@T6CqUN>keH0e;Qb~?_%z3nG zO*(M;q60YFZcbUxrHoPQ_L#vgge-X?fOQBEXp;a5w!@W23sVTmQPsOGw&v?(v~V zm+`l$-SODhiYx9FKYkh z2E}7xdu@7m1-{rN8D)+40ZiA>!))4ut}h=<*oakd0rXgAxnbW#+F(R6m%wWiIHG9u2CKLlyfDhlgi+zBfIP3%1$23uxF1<|=dfyjE`fdND6b)B>}&wTzF| zNVva1|LVt(rwCjV{@mwWh1kegBP4Niz854okm_3wP?dLuwiQ zK-%heCP;Y9w47TeU@btjWtgcNy-7l01;xet^&QWj1YMQ~I-bMmHOC|~ZbK>^pGY-w6oW|u2(WJI<2AOy$?a8`gi-2c`y0`a}B`9*C@3H`5)NMOe{F+&3np;U-eH^)P?ETb@`-fDR}_d z{2v0JV6C_~k$R{ULcqMT;Ms&A1RvL#|A@JdWmtdz|Arp7QDaUA-ON`m1obcO#S{vgGIyBm&D)*Y0ntuy|1F7C}$6h|6zDj7No4aj%Gk zJNkD*nYzDDzp01Zt_Pr$F|R~+bMG6(kuP7q+>(|a2FRpC2fg0*<(OuO+;^YXVk_t$ z?!6}T>nwkG(2v5T1AwPp6MRLg=ZIncH(p_*l3!4W7lRohF4z&wt&kca-f%Q(wXBAA zIBS_+vRX4cOS9OKRYNDA9jTyuni1?hnvXume^mHQcZu-~v7ra$tsH0W_pD{z0)VJY zGs9wfqrR6~ecAGI04>GY-q7kQg^)#(E!bGyx7VY4sEm&T%T-U+_Pwygb=eRKV2fJ4 zudvU)whO0icN6JP(U@jR3fn}z{TYt?x2byMD1kyixl+i{($X@OGC{l`^>-acTVgEU zpWJTz{xIOVlT*H>l@+uNu&yj&bWF=Jud5N%&vkFp1-%IUI$v`CrJ28vy=A-UdHO;< ziiKNY$^FC4QXxkW1Y^Q%ZEOUEgxX`o{_@V-h^Zq|Z~FzaXS!NizJuNkV|(l9dgxlc zJqRU>dSYWmEfiE${u?tbo$0v7bW1qEqoI8J9=e3X>a`JaKUvMHiY)oJ%V?0v_rGUM zO#WXEUHdmRA~Lez)J4H;|DAQDoPM^}!;6A?T5fLZIn6)+ptzaJ{g!~O|Uc}o+$OkD-t@tGoke$iUo^Wh$Ry2A4 z_oa}%USl5A>PHjA){*T53CB$pB)0vu;wckj%%Qh^W3i%4KU2iuR*zTrSAPaX_e2`&tOC9@X zIrvGNxCi+bR@IY{FsT5V=-6+1U&#Ls-6@fvR%F`pz6X1Ih4#Wv80K8wudPwCSq=szu_oSlDrD5Il2Td~_jd@lx<3UEHHcx5LJW$cp z&Q9-abWX7<+z%Ru;rzEI0}J=|L`IW9-?~higTZ6lQ$5 zBiHw-HQ!Y)n%u*~V3OOb06=#XshT*{-QB(7vu%y|I)!l1j3eieBzWiSah;UbP3Ekp z8<%R<>i=Y0LpOXsSb;0iYBnQM-i6b}%JQoC?#A27i8uEwKRQN7eO>QDdc4tjGWUvd zd1v`)MhScKW1dfRW7I>ZkbBmlq@Ky=h~e5C-%-~<()gtxovkO|0F0^rtFgnmi~i~Q zl{c!ieb5jeF}y-TKkZ-WmjL$tHM=4EdplVRn+wTxn8aG$<&#hYbuap(rBVl%A=$y? z&u#d8_MvoMmODn4ku~}P4KoCLPnLWg1_~c|CUyI*ruNy zVU#}PO0IIvbO46h^kVdfzFbCLbkX=LsQjXDDr-=O1sS;rwy7b$Jd=s zDu5H}Un{5_nE%M`~sV8PnMNfE+v5g9m&V}YIhuP?W1{xEjbnxI?>RArCj>yXT??;X^UH6xLfLxaGe@S<>ijHiR z%evQh2`N6yKbn*T>T7Y3{4-Gm^E)&nr z0)M2-rW#+%?4)gAb&aU2j73?Kmv1uDUc;$lAfo)Q8`JfvZ4HiCEdgddAc~`MbJ@9Y z*|pSFM)|%ee%c1AMi>w6EdRcS7zwaA#H=g)&+UtT+&aSl+{H>s5%-!zL#RykMvQPA zXiapc>oGhRm7Zhk7cOgyS?(T{DO!DYv@&FMf=h3E=a&Wis7ClB>r9u0Vi6t8O91Kh=_eWAIOjPJAVG0zg@@4R%lUyx1W zdhueu_5j!)2HzRP@6jq9?Y&cU0SB0Kgw&dwM5bMqgjNmH9FNlCN>sUPsac|PQFwjH zQKu0P`*azJFnf0bf0_a|EqHZ+Yw!GtI8iHy`R)a(`}KK%fRfKUdT6dOj-y5jmck)@ zx4S>Y!g!1Mt*q8tVzIAh{T(wwLR3*{;L+#Jp*p1Tr-@P{~h^!0kr0~K7^)>wX+{kCo=#0yqR zxdA{tu?lYG)bE8meEOs7CT{S3jWAY_7Ja1kR{}#3Ll4{4p03XR)XC4-u`bK-=qceT zWyfVm8Lw&-IY^46!+EGzRcdw$lau#kc!4N1p=CeIbNZgPC|2#>ehd!a=imCSeb>$` z38R_nr!DJ~vh?i4Eb7t;DIIvAEC#>zYD3>JUecwy(FwCCXo!`6B91g1%BXtZ@I5*y z$w@s$VT^qvK>=2yqM=cdW(HTb9JO0IdemECUFcPvR?A$c$tW0JWkggIKw<)_l~I>M z5TROkdRs{45(2p-Ur$K_yhs{X6VX6>P|LI}Zj(`a`q08vwD zOUZ`Q^di>yHB)YZGd8~dGDfd3o88LcHi(~-_!iJ2v3~2MuGJb-m#&B?5U!dB=cMvQ z3kfD*UzhMsqn)`ig$C-tm<2HAu-&n;o%e&hEo51;LB`eXYqpCL^RZf4ag{p;WXg#*{Ca1mZwjR7o7>Zm`$jJM}Zk`We_iS*YlRcOR` zVzCZ)?Kv7XA@;RDa_hP~HKeql z1~?MUqqdK1r+E=1QefMuq8MtVA%nw|`oC&4->%?L7mBIci%CiWy=qYSzHj<0X^I*( z@EIDV>`!~j?+qae_htC?o*$1jwH`Kl?q{$5W3AyT#F)F&DBV|`W1iO8FDH$qNNS3c z6YlpYLx(^viggFSiNRttX&8|5NsS?R$)AVn&ux7u*BpT{2VH z3@9!^=Tn#fIiFhTQXgG%)ig^t9C@Urd!(1S-yz8hd-z4)o(8~(70Z^5IASbJ+DoYr zFEA#+%5=fz#r2oB5ZhC*-(NK6_^bEyv>0J}j8>d9)aF;ooO#e*a;5J5<~Gder(64Es?7=A`PWSZLc>#dROhzW(;LRRKw?(^X1HV2U}PUB?>a3>G!;}OF_ zj^{%`-_*}H)RRcr-AxL`5u5j8pJ)Hk0GTpEZy`eM0(3T7It;B1PPlWpz*t~23VlZO z%d2;9zf`ZcC6%|(ym<>P28uUAxg}6C_W*~rrwsY!J@ko%(_!EHXF(wh8=Ijx{wD7V z=m1(>S>_^qk>BR~=d%&MJg9mv3>1AdVPcU6lv2;mtt*;a4|y(IGPL~OefSFO^Nh#4 zv=bd~R*C-A($V4x(@JjnZj*cI9n&$3jn{gHg}1Wd9S>Fnpnz;vyAJcvfP~9kQ@C3!Yw=|QTI(Oh@@f$R|{=A=3xK5ugN_yv57=jO3^3=-zKqbbB zv>N+Q?MR|6ATID}dE7E^8`r78sko}}q#Xc534I`wBA0Aa?Bf#?nE5;nOd=X~ z!+RU|e zOb%dz%N;Bq5h^W@F6Hc2nZ@hS4Yq`*6_YN1s&yn3UCwD=$-byCP}4~ z&Dunm!mNlHA?+i;YfmdQ^ZoNx<{Y{r(lOl2DTK@Hj}XJoA3c%BM4z3nkPi&KCgqav zb}zm;syAb_@Y!+3-6SwElo}j-M!&#VAIyTd%V>lbSYXWqL~=5Q>iD1LXL`B`*Vce$ zk?9Tl->4Pi6wF(+PV=&-cz4s(L~Xm0uBh}TX%s#kFCMF9V5m2u|DoKRwLhgl+vJ7- zotS>7)O7?o9QuZBm@zGk-T(t=LpHX4lx&!_21vL83cT74DlD zTgQSqv9*}hxVJ?|@2GXCO_!mfNx5=_3%X3*S<;*_IdHoze7imzb;Igb+-X#mz>6px zRQII0)|}nUb5+%QDk>^58MEgw?inb<*BcR^F016?zo!c7cP_LhlT6{Ou>uH#G-&WOW5J0d1BEMZ(6 zU07zO`k<<#r~GFt)bOS&1HZu;8tCZs*=u(CH3Vy)v@!1k{?VO8FXvKdB8~aK3*xxF zglrmJ&Ynn0d;l4s6($i=*iwogpvI8Si4}`GfvflFs!R52T|b7JSN$S42Yn3T@S!3zPB)t!iOWu~(nBF`h))(ol zNvq$V8h2;C6bk&mL1oa9cXhbi3xntvl&dYs- z=#;x>6Sm&#qa3U`N6a3Q`tPV;;Tk^g-<18~5rAvH)Et&KEPO>~{U-~j38F9$U;eDr z_Ii{}b^Gd%B=4P9k}(rM=_u1K6?-(a0_*yXGuFfD8q?>jJ{^pbRdTA>K(W;t-L*N? z&4F80ZHFVo$J4xSYX@4An*+?^6K~EK z4G1ZpBwTb;wU8uHW=e-9gO`$K+m*LQj)%TRDL*7x1rD8*C|e+}JNQ4%;WRL(we98Jql zjKm4$s;|cAk1jWt?^b_Z-2U#q1lZ<{lQ+l&+jf<P_3s!O#K&*F7Pf;eeFLjj z62>A@FKWg_M_IRDzFl`p5X+ZiQu0623M|#DpfcI^yghqo-pHtD3J4r_rFL&lY z?M06u>*~I-F{$S9HK@c)r9iiil&Gs3gX!lp{FGNJq@frK&FiscaiMdU;p4}dT7(I= z_-@>2;N|6w`}OOICjEF^T%6q_=-Ofxd^pI?hg_;31hRuia~OS#06YpZ$41xW?U#!n zmpt+^;FXD{0K}5w-D{lEbMg)UkweU2I+FKaG4C7cCYg{IshekoGz75SIgaF0^0UGX zkLgMx0x=tSKo;uh==ow9a_u!+a(}M?Uy;qKjZCm|E zapf@6jQ)i7k7yx7z+rW~Zrx!m0i5F2%2*!Qnm6j=nubjDpnNqu@?G~=w14g`qO)Q@BNDRSW=IKoe_;8+<=c9$IdHGjO%Wt(%<^2 z!^3_8p0q#p0@S?)93*~^OSyN(Q=(MIRqUZFEx+BPsnl%lHbta%KM8S=u~Et69g^2)@K_Df%PFp?+PF zIPzu`Nn_6};=&$IxFYFTHw3oyGFm7vKq43Kw%mU*`m2jT>}e3&8OrPfuj%_VbujI~ zqhqSPZais8KOI9!WcEA(6F<}?Z3eWepL9t%$D`!!;G7l=>mK&6(8DCTOHC0?X zT8kV$8}D#Ist~NFvYQKLFP}ns2wD^-Z7mIFvcO6Qw!@kcp)bB?TtWFq-k**>TFrfW zl)5|jEHs?38zp3@A!$ZEF5xnCZ)z1eD_WQ*h{fmCuyYws3*F;^?K}c=3@aIm+C^Hg zIL{o@@0*f|zzG5;!EkLV+nQ$^?7X6Jt>=i(?&iYIc$z?;VsQl3Hx=6*FU}wF_Q~<(hWjG7&Vv`YxB=(ZJDJM=G$dYd%WfqVFM{XT8drz@>XMn}?$i z3L^=>oLRox!dDl(_8=aC$49D80z=lRDoD&bddt2d*&jK$WERny?lxx_6ing;0 z#!dQ|C`bZKSQn9IHldsNeR^4Y2e3mJ3NWt9aT^Dy$!5cg*cv9Oi_|DzQV_cmBF1aG z^-ASUgh#_hcY8Y(01tSbzv{AqmAXn6%a~scz-h?x^YQ|5S{1cjj)2OSbrx>1p(ugG z%+9NQ1G(1hnS~ZeP<{3T^>w#AHo8^Kuo?x%p1pHt?FDrosQpw9_81(w5KGXIjlI8$ z9hbYQV!ZX(Y+13y(5Tta4p)OskS8f8%oP|2khV{8O4Voz84SrUkn04km1-AyH*6Zq zrO7K-Tmf}2p+a?G^1M&!P5t-mFWwR_#!asHVLu%Je_w0Sq;J&NmojUo#Udjj4)t>N zi^x{)rzMn=>~LKcoA!Sm!`2$vHI!uv1WtMp_xa)~Fex);DV-)2i&cV)`7!D|`>mGo zZPD)A^$M8~!np;t6h>hCk)}5HXuzXJ4_@FD>6tmn-LlIG6(^2&B(V{6nsK+bL>)3)F?ko-TE}88am=(d5^Ch~5S{SSPVIu9XSVV3qVGz)k#u#FqFBQnlQo|&>kpi~D-tB>0XmY-10x;+5gD8EvKR1o z{hq5BqeY(PBtFRX*-*@W^|O>mOjvn)vTUR8qv*_QU#l)&T~I!R%}my7*=#y07UQ4m zmnPVE0ig@CN0lXridS;Yv#J*X8*95C!NZvCBkn%NoSli(tQgct-mAla3F_5hYW&gm zdu9HE<4du~!7nY|PetkjXtmn#|D(LQh7s$DCPnQmDcApI4g6+c2;A=2djNUInSr0!aQw*wssr_!(2&)~Ykt zq@L@G@xyUpzr23M8M1DoQw`c%x8zon_kqc7v4k57R}G>fFVtC-X@90W%V%%O5WBm~ z;DJ>FNE08hj$yoZ$6CaG94uVPGej-P_RMhcZ}O^u*+3nCfBzhMZN5k8()qn<;-R@o z#e$*vQ&7q)b_k!oIsC{djsfhz4)(#Y{GMPI9`b5!m+v7{-GK0CAOV|%5$ ztW`MPTelLP&43AMc=U#n&J+7 zZ$_$p^7Kba;Tgl_E2vwbJTSzh9ezR)f(A}gNaWbAq4s{1q!Cpz8$Oo1=%M~G3AyW$ zC+J8&RwqaE-Pl#L%^Ukj<&n?KRsogVRKm*8dYO#$QOXA~*0`LouzO@nhi5un?cj~j z7J)xE*(aD(Q(#8%GJjeEz7C5SDcfMKtBh2=3i_FI$^b;+gL%eA(e28_OTs%qK^SKn zw`>;8sJD(HsT#&`7ar@xzgPX!qr1|~Cjk5T^xf9il+#;wk4Ar^1YPoaGNZEHbjrdAu{+O0eB8QjNIp-m(1% z=Qtm?W&p2zcJla9skb-tjBZi)`x&V8Tll11jKJd+p+B;~+d%P9(x0^@ivb@wao^)d zACcJX4X*6xeX0Y$aK*U|d8C_q!7WX%P@DmjgWw}ee!fIlM~HOYufOFa9dTk=MPiRc zl|4_w$&m#fbTls8q1+*1n}RKU06HKbUzW1@^i!6!7UxpRy;jXLUG}Asc9g@Qeuw)2 zyJV!lIom?5*DtJX-QIY&aboyu35OzGIv)4Da$M^H(SC5>#=#VV9UPdeyJk~6fU@^bIG>du_%|kIo+50 z{Y9{t!3sZezlBqcLs z1!RG%SM#Kyb2G9{Nz%{@SFf7%-SD>tk;PE*7~11;kk2mhEZtQGEam``FX4-F7|8e7 zSq?i83x9R~J+ScX+$_1jt9rvmKj`_mRt^F#rPkTu3L|&+CLwD<)CqNMRlf%1NCWmeut2;axervU2NmsE^xHzz`T=(C~9(L>Ouo z5i6vpkmKuqatYD^1dK2ENLrw>S>o@&uv)vYk4q+yYa^8w=wyl#vq`b(6@3vy5#og^ z&Qr!Ir=6v26O1tV25=|$U$39;PyH)04NWA6wgqDad8vV+{ed(uAP2S1_${1?2_j~w<-BbXQ$M+?1|~p zqVzY`^JN>@{8&OeT>kjs#8iQsb{H&9dO zSOEqxJTaT3xd_vti#3~x2OMKMAfO?fAkiD{EU*ZDD$mzFE}$aKUmuGaDY(>`FrNpB zN!cig#c z3t_sOA7zpNAAa&twb?`NM`f4Gi_%;mbRPEz$KMy4EY*2gu)f*xjf>Xh%r=`7s|klVPqA>@@Ybp5eWbuhX3 zHn#DBQ|>apGVfu)u@MXmZF%*<;E=PuMzf$+**d(`so@K@KpQ_~o0qQ-+?cYG;-lCT zOY>f*c(QyE7Il8JV^19QNz@m~lL#!unuk3Z_w`7)EmHW=Jb_xlMTOrDigvX}>lKc?E#IO4Lsg_Td6_6F7tBProfGN)XTYxmgg(TaN{l z#op<78DBXy2@(gVtmQ(dHNIW`e1oeWue{Ox?(fOBt$K)(S$(WNOg~rKh}NVDo#kix z*ZzEgj!Z%$W~PoIk!r1Hnf`V629?p6PZ*bcZcVv^!$_GuVDRYCdug!fcYz*$+-Ii@ zdV3WWSVBA}pje2{;Km{LHrz!!VI~poy1$fM10B2DF$)dvt?`;ZcOq_spLA2NsOxg{ zOF@+plhm($SBJF8suwq>umpRKGsh%ljo|FBd&=1JhuNmo%fCju|NMr$qf)|S`wEP! zthga_rtBV&+9CEPo_9oK(rXDN5To$G{& zr&(#eJ$zdW&L0v03zRyS+2X4xCGWs}InCodK#dru7=`boax>jd!l_!JX2GhfosAKD zTl9tkbrY+xdyV+ziK(U+te-F{@y?5w)T8Zlb8=W~qUV^zJ?f4K?WQEl z|Kgq3ra@pBKNp8wuR-868BgG!C-|;w)(~L|I{Bc>(CqQQiZ#|ZdRLH)812FK@_6hU z0p`!K2m$7sz)buhIS?!}EdIKJg3r=z-JbRd?!bzI``|8T9hL%LcV#q*LRgJG+PL^Z zShB|zh^_ryp665Sh|}HLX)R8F{!lak;PryFg8M?0JlAhXmB769!OK2)r!g^nCg06k zBUfh!u*@B_A{TL4F^q<&31HvDwQ?nwP&+ITMp^JcEJ{MMg3umb*Dt2cA_Mc{5_d7K zZPV<{D}CxPLXRe^;UtWJ+zP(tyn>m#6*51t7!}*-Jcc}nFkV=3bm>bDPxra{C-oie zQ{ua`%?l&B$bD`?@m_gNg@e~wCn=4?)U&qqgH_pCf5MEBD*(XU4NSM)aCxxk9nB5X z!ug;m#i;1cW3Z(Y4q{b)E2T3?gyv8sMg0~=(}D*3(Z7hNW+hc~k5u&Wo>3nl@XLwz zaI7#g=ZwU8!L|Zy7U=;3WXO3ow$9y8UV>}n$6$W4BcARko)srrIix>D3M|7+BKYe% z+QIz#NOgt}dozEWk$$lGb~oPFLsR};lCEG2C*udAD9Jqef>jO}OsAFRziwK3-|8L4akD(jnApff4 zu+8Fh`t!Otj)C8IM46?DuM##k}Y%2Y&H9!)@N2} zmbcrPxRZ8-(r-_Uuz@)@U0}nNyu*wd8-iqv;4LsouryB;YfQqWA~Kc$j~zEhv&M3# z?>L+1YaJsq{GgT`wO$#WSz`dTt8$ki3`&~;`yWqL9?>*GtBR%U87=@-|F&C|(y=Lj z>i-dU9(bIk+a42oxuRUZbFn2vL#eF^!TDDY|@p;B8asTj& z2N@oCkXPruCK`M??nknhkSv%E0&}?((q)vtnUyVA`=TPnvbx=RVXM|;I3Aw|CI)x< zHQ@Lz>i=EWrii0y8?=A^dzAVeFobubqY>51RTW@S={#H18%>+z=EIK3JC8k6#Xt>{ zSA^q~v8jzF2g`u{Y36>@ zd}L6X_GycUmY2d<+3FzH`H7d zEcWE^rf{B$o-&W3lx@5ZPUje33mIVfv#hGh5ZnHBR-!Xz|K=K4KN-&)HcP>4XREPXxi@Y2IrB;#2CTiN^dFYkg9@ z(zRA=&93?Nb!+8HQPl6{CV9NR6MsUKqxq^4C*$oyxN^dJ3QeB z^y|@75A}KZzID~LvMo_GO7VPkUCph@6P%Y4LB@+DOuIx&THFSB-SFkN&WY9|6%^W@ zU*33o1ymve3$07ap`io#c$`|>zICjtx|dpnXV$9jn9N|AI4tG7A5Pb_e+)>F^NcdW zI6z+WvsuHXmPZ+i#%nIZ2Jt{z8ojwvqEkB8VfdrxiF#sE{#kpxgtJ?T%QD<{YntC& z!Le(vMdS8Y(DmCXzoOewlPPdZOsw~bAgM;(#7%YcgW|PVUWsfA&FU0QFc(dF;4I(@ z=b!Z&sdfoj9Pya=KI%OJNMl(QJYU1C+8?Uubnw#$e^1MnITGN51qS-)tz{f|d7;vS zpn@Xm?|@}yi&JW3S{ZV-slSWT?5SW)=Rrt_>~jfA#nJljmRFeP_<73b8eYN_K(ovX zHeqP@?m}gc`N*X{=Y|H!3+#YqT&Zg;sSrD~XI+=s6mm5YVEn;`Aab$!mF{C?T+IsI zf1$D#xGF2b56#$M6ibNFzEGc!?l4Q(yS_`f@ABQ(Xf=_s-x3zl0-JG{FrYxr%yhMm zR=s;vjZ}2C_|2daU+?u>)Qv<&lrHMZ+O5r6yu{}mBzS5A+U#4K{=6t*ABZ~eLp#%E zOY;1!FivZR?0!i0LJLYbF8m2iaobXiU<}mQD^nL%2;mS_*)3a8PQX{C$5VBcc~o$c zAzsdt)UEIOx1#)3G&ws*n>ag>>WUFj2(*W9N)c*#P~xPr8!om(7`LgLKESd#{5ncT z@`WYb_s6{u9ohL9$K7h6;!h`nisZl3U)^xNzqIxC)4!Y=qOhanWdV(Zr_?+g6fzuS zh}}qbV8^PiPwH)8UG#TyLy%rURdy%~=0k`Q3u!rnn!*f`KrICfl5H0x6YV7sa}?R(a(&UEp7!(MNhvzxPXq??8;Xp6@L zkO;2~m%e=IjX@;NL!-IVFr(DK{`ZjYZfkSrFL=QK*t$y!IPC67k<}N?YEqd_(%#AD zwXgpc{&7F!Z6X5H@cXNKQqGbd`8{D?7eQ0^t{m^bw(Qnia*4Ok=rL~53xFEZR`aS8 zwp64;7J=$EMI8HTt%`GjA|7I<(>hh||HxAw+ zJy+?QI@X=5nu$Qx7UB>dL((-iD^AOGmT%!OpAQb>V%oU;7vGKK{bV_XEe^`2PBz;T zGVx$u>BW5nDn z^37}ZK#zfR6+ab4qMUiDil4Bi8g9Kfy<-8+F?7;%Zfg-#fT<0`DHJTbXsGJQ3e_|vvK7>XD<2HiESi+j(vpp76|(K9{|wMt zBap!ALGpl+2?Js7_TAkcLt^PBC{kXxA#C2g?9oRzpm>+3u5SZMD||k4peWZS6Z9QC z_g?8=t2S#_FiYJKaYUtC>}hjX_;fDVeJl~LG{cGXp8T_?;i0_#+A|j3U!b)!mS)7( zC^1&>Yn;r`eJs~x{QIOp=P%qH*fq(liU*^_M6Xwmwsf=S*W~jmH%8K0Pd7T$4UhF_ls}Cl};)1zFfjRKAGAA0da4P-*N_wA-fCO<3 zy3j0*ZKAz@G0AO2rjNfA%09xD0&4)>6PTHbgDI*c!WPnv@x-d-r!I?}bmVfG1idWK zY~kMCaMtwg=*sWE#V;hV;|c;4Is4j-U*UXpWkTTEZ-BxLkcQyPpr6-gWa7DGS-$j} zk9hTPb^9BYT@V)X@%y2-V`{xdq_Jl_Z9;Ztun9dm(JQ0j@f*L@$n6eO{Pd7tvz$cm zbvxE}#@(3wKm}=Kir#V|k^DJh>E2$lS(wAa#T@M2-z3KGBEUq0_+091G8$XSpyWWO zVhXT{{%4ez!>6v|)?`(gZtzG&mloQZZ7{?2FpRw5S2JHiD)(vkr2Uq892nLl#VKa- zR|XwvS)C*6ozWad50oSl%W$Yf!}&E_UpYoMslWG>^U4_7{5Z^x!U6Q8@ms;L)%TFkL7Z8EO3531lE&k5l-Us3w|Hd04psCKU9 zfVBMv&aVq<^og?y%X{93B|Lmiy8I>Sp}jPJ1z>wdA->LEf2(x~G!9(hk;AxTL-UBT zm&04STpK~mkClwC^78HRQMpDyDiUj#hE}{(BW$|hc#gZj!oB%hQ3EW|y`HZTe>P3| z_(BI5#^Uz05KU+QCIf)pl9M+KQ`oh8eay9oA*!U9tT<}|J-df>_Y#<=vu*}NLgAAs z1kt22aYxhkC5XSUMI|k&dGEG+jWqQabjvCv5lzL!Uaf$X3X@nny9d7U=)2nlk# zOFA+P;=QZV>-uZYc4x7)RO(aJ-<4AtDpn} z1znzI{ug0k2{z-oVow*SfTv0g=($%vbaN{i1d~uU!>|;!h-BEVMWKi`i`}gtAl2t%&=qWwMlCL1D%^xuAYDcKYDIN&9>W^m(R&dZO$b=oIIM63) z8p?tZv_MLp)9}|^Z3*iB9{9gJkUQ*8iGvaXp^Cs>G1(GVm^Bq`;edO$l#*l)O8FpA z=T;Y5Xg2#b0J2kj;0nHPcv(e%V3EoV#g~YqkH+8kQ2O=Y&VTu|5cth(2DFH54!t-1 z>G*xfO5$Q)w<3ipvIHU;@&6e6%CIQAuF(Ocqy+>;KtM%7KtS37rEHLv1}W)sXt+^n z2@wJ55`>|1=thu6V(65Pp=*e<$LD>{`+e8>bMEUJX4rS_z4qE`uU=nI$^nPl;d&SB z^v{~g@)9hUqV-3^h2C{Uu0c@)aY6~lNCW~1A}=Pc z4weFj70y5B%8l6xzuHRirK;9AFLzY82km)du@J|R5)x0@wJc*kkgti1KiM~C2KtG> zEF}#o3J*v>zf|kZL}ghq>4byHN-(ER6^J(-A1SV?*l!d>oD=9eDoC8~u(DbNjU0; z?z@(*V+*Byodc_}?enz>PmeCdIq@bMa*n$qXp|}c4SQoH^~*Dfz*mK@>@inX~G?`Rfg+5wy?=4s18|zjxoj~s2cy%5l`Lx7pblA}qokYC3H1NX;l2VL8 zWRFH5pH&)$i!!3FgwrTxs&HRyRh*xFH%WSb6cLyU9Vmj6ZB|EQ?2R07M3QL2Co(7J ziaa*pd((bjSjim zN}1>~OUl1I`N(A5sccS^LiEb|7oxp{0QqNMaQg%fZKPw%LY_CdCLq-O)g{s%uZ^#j- z9ZNj>JD1cyC~fyT)zXtSaR2%Q1gzc6bo7okffm@t_m(cf9)^Vr$lKLoZ#|&&Lw~%T$?tG<9K0a;oHC9Y4*=sXmFl+_{L= zTXe5R?xz>+eMO8LEXe$Ou`%HWjPvG;Ri%^3Zo_iDIK6C|*1oWL%(qFj>r~HyBYswE zfDv`LJy5(o_r$~rSw?L-!)b8G3mTe)CRn^xm&B$zo6lZeUqFG^XnWBjyw%g@@qS69 z-huuV7r4pZ81|d2aUNh3>}Px#qADdhI0!%>Y|50K4gy3!-x2x&d{Zt)_ekMgyUZjR zT}n3oR{g<|-RU@D_PAnIw#O45jrS0bL3JocGu=WEIeF`4Y(4f61kth!3txU2d!K)H zvrNFWlaYp=UTwA#JS)g;Z-tGEtG(Ai^H!P#;+a%H`_3B&hpg5uf{!|HI>@61!Z197 zI(&=E9o|5Ws?99eWjKfu!qH_T@MuTn}0$-Q$b80%sWrFYBZ1Y{qLqp zFo4KPp8NOdxO{8n2Ufm&sSaL1SLl0img_WPi*!R6`K6a^ah>orTpheLu3Kpy95D~AeeW6W!|HYOt$xhf^(6;7c8JG zS6c=Wet**!j8){pErKJ^07WH}g^ySvc*3Q&T8xuWmEL8V= zJob#(;+aKIFM)}t4Og(CKPOvts~Y0egpkfOIHlO)G+}!$e}z#z4;r*P4QbdzIguws zp!FTACImt)1AyaS5J=?#oE8m01T!v8z!nN7o#vzY!_waff7>`>MR z9H6H1kC+Jns8`WR5Sepc`K-fTPYk@|D37AHa+ACNINQHYL&sh$F$O-SzKX(%7Os* zq_@KbY_RL>53Y?luhoAbB>Rvz*sgcTq+RxPfUd7d+j&i^_$uistyRSkJ--oU(a&Cj z%?x{}tIuJ_F~g7gPS%|_^J6`aS~i>Fob7t&y8XXDATka!9E_koIYzZIg7b}Q`A|=} z4%E>)eM}s>%KE4LR!&{6vp2y*U<+HE<2{(P8cUFx{0I0n^j|VY;3q`SHpa^w6OdP& zUlO0Vh!rf&C`AS9n|*km~Yb0ZcpPtIGC{K@w@eRdWk8m zWkn382k;c=Lz!il#Yx53$@#88ds5ZGlXC)vA;tsFTNW?pV$)1e(8loKGMh>hCTgOR z;FZJ)QTO_90&noo^N}o0%U}RH!+A=N(^V;ZkJOl^t6bn~Hy?^Ia*@7GTX%*yK88HD zjRgIL23k3#qH50sS__(v4<>(Oi3MAQlrcOt(C3XAwLltG(ywY+D)g)9^MHzI258)C&?D!ZrryTV zqGATsvz6&P7cDn{)PBQI-d*JkQ-)nQ9lmb_2O^=6XKOJFJ7%=Bqj*jXPw})kJ&w-RsPu#2sVFqi>9dK4Es9b`wmXE}o;b~azXZ7r$Q2pRp`svrN*_J=XhJTi2I+HQUQAe%$ zYy6jvIp5;YB?m0zCX5oFSAedidYnMs3;2cy$#MLy_vq4|fE&3dvwE#Hbk;3pYqoej zR>YPUfFo@HU03^5egR###=o0?-nyDKxO#JeM=cpuvQG zu01Pi?M0u@MX++euhBj@jBO&n#9-w~+Hs8#(&)ySDdC^ZYF&68GG8kKehSHVjF)Y#P|_E-A^% z%S-p)Cue!U7@NT+AaDt!G;En}_!xPV?-SG+C!*NV)g{*j#R~B|&CY+jpT-F@_#K?c zD6!=*kfTXkQBhI$V8TCGOKszE!S>FM{cJNStR8HzpOcbo?d2kiEz!I;^l0BZ$t*CI z-BRCgbhavXNunJudGztdT>O-JFkU=%ZglM|`y?MTxtm~x44%Q>kPVYy75G#B{`W`Q z$g@@Dd^OXzknK;#`igug`#7I?%569szeYVKrRIteY;kA`dA8bsV%bMN#9jFJx;+%~ z+-;MYZ@Cn01yOEt{$My~TBcQL+S}X=I_fJbZFY??=)^A~n!e3C z8=?szy;Ux><38c_s^H}hVnjqt^1aU9tBVi}BalHR+&Kn=`6UpHukAf~@q!LyCX)oj z@4;gAWR1HBNGfJr1-tfH8v~%%;<}jN4>oJJ?jwqN$D_@eCKrIE*60X>aS$GriddcH zbOV{m6z^M)(!mNq?!xM$g}Ac#)!-|FJ~>)yYmW;~YTD9td(J76n?LDYwT~uviYE%` zdm#v5214rGw7czjnk|XcYG5bPg~9SeM_#Q|ij-Lkltw+TtDrl~IGm%{5r&y(Q0kj7 zEm%K{=GX1k<-c)g6kEaak(lc8%*@Q&k)m|7)*axu{d~=(Ol6w8YI2!4&VXxw4&-rZ zHmYKB$xA}4J&%|4yxLDC%x}!%qzt9WQ^4wh6C50~I+(p!F&Sz+gnT3QAziE2;@#4E zSG!(j8Kv>vVueR@1NDQ!u2=Z|&TKLA%wh5G8=UukPFJ}(YHj8gBVdyt(~|Xkd!+RF z@QNFkj8hlazE36+x2bjQA)g1cOtjDzt>}3o2*zbPPd|F}BjR3dzI^lxn&=Tm8BP)z zyx7`UGtew#0XwNontVus)4EoUZq?<7TcL}9EgIRDqc#~D>xMs$+lYN-L7d6rhjJWS zmAVw%3%Cm4Y}@LH^cOVizRt->{4#b}WKGK94+%`H6gf=A&aO=S(UzUvL0mft-!}j$ zf|f`>UmsiB979F%7C=*XUg_9okR42{m#!}6(E@I6`nN4_3lSY=K)6WXG`H0@kMzw7 zAr>&cN)D}#Q&@2W)+>!S5#aKr{n#`{;vTXlbgr) zs&;2H;YVGMQU$~N&S)fx%6<3tjuePn8Up_L9^)6p`6972Pu6*(tHyimt8~i}Y+dma zqT5eNzB@&-V&-SikhxP{LO?)fr2*)uaiJdt6T5`O*v@1Ym!KjiwAc95k!{X%IL-gi zR!OPiz%}_XRf?9~rKM`sjmOtZt8{Ga`-)XMPOn8+9<)=B+)PZS^`kGRt(LG_RTb1oE*JE-fu- z0)ucEVtt4LT=RCKQV7H+i*et-KY&?84u3LO07x+y-+sRLiUm4jc*3t{0Z_w16bCh7 z^*S$48qoKNDraroXX&LDgBQWG@av5L-=A0WSx6r#?;#ywWN4UasdUHhA`a?c7@mp= zDeX3kL4UD9X>jy3Q6Me3zCI|2=D+Y$BPItZXLXyCvz0buW3om&Yh9)aFyTWWs}`U4 zmmQL?6Yhq)9$Cj*lnU{5-~L6cNw%!IohR8`y{=i~VaTD40Tt8DT~2`2#v&eal@KA`PQN=nKoAYXF8-RapH%OptldABM7Q&}V}BU1_jECP6SE5Cm0 zAK5XC7UNWNr&;m{Og2wf3{Np{NeQgm`GsWv+e?_mfpZXfq{5L>)ZacJwXlV~uj+fu z1yvdT2Rs;J$JU{;N+Nc4>8($9-1MEK?XE7xtFHSZ5fMU?Ykg_svIl<`*~!1K`2SsG z9F2&y-f?}=4XX5q3+WDgs(A@Ha}E{aRTCQ_>S)7~zm530y7OXCwErsK!OmLfsv-cX zQ~miMJ9`lggY;)p1kI%j0(_C~DGuv@Nr-WcKJBFk=Z3%8Zu-VqUeD)TE8W?Wy9d_W zKZn(KnP)-5w<~FgODB9Uc;#28Puc6;O*ir&8`atJKQC|?^zZxR zr^2hjO?)EeALOX=`Rpr0SK0y+agWD60yNK()>dG(d0cDU0+BfqxW)UQBd)^u@OBDu z&B4YLM3wBaxD(B-9>AxOlNt5M_QplU^_zBenf>c?l~5ExKf)bH_*QWp)@c`v*`=RF$pjro%UvDEA3 zV77Rpvx^52s*xS@D{D?wB3iosE9GZ{Oz5P5Owpx;_#$RzW#y7+Jul6E{Sz7(yL<=? zw!1P>rFGh62s$yghh63K$YQm1Xm^^I*=+Y~R3i;r=i*Ae3`;iHJEhON0^z{Iq$IS< zLq%Yi+75o)p(03WpF7sD)q&XAEn7t11sN; zeyqXU+Q9a)V0sUo%hhv9e&4uZHGgjU^CQtp2eHJeo&8HF3Ky4@-)x6LW3~)#w{^lZ z1GHY-W7pfeiUEE!Izyh4dhR)mJrS3@ZDVFGQIUVaQZxnguK_IyZ=s2wxa0gW(`ukU z5f?~tV4+^fr;0$r*$iZdr40ToDes(uoQpnntLvR@u?fFvkyi)tANhIyoCTd9G(UYz zStV1h!y6tGqq$-h+cAHM!+#=Wphuj;!bwZUN-?Vu9Lk&T{0Ok7+n{ zsqf#YO?f^o>izOz($ji`JhSM-vk!X7E(hBm(E6>lp4gI=GVEAeB7m~?7|J%O3=I8r zgApxbCurqr?vizn0e1CV^eGP0?;o$Qq(E!#RhUJ(oLYSyX!mx|#ZR#0PHO$S+ROqH zG%H*S%9`kp>~qDE7tW{8{I1oY2N&Y*4Srof$Z^>U4>oZ3qFh`AXP?VN)>kp{-i~|j&@^PG3rT$pAjOX~+VW6q*c0idrJ|ryltigkuv+21BA8#r@%weJ73h}s zq8`X!XyjUFp(-14p7PY7yI+wqum^!yKlw)yOq(D(AlFX$J)|k;-gg02GS7A++3T6g z$!}$Ib8|=AIxdvU{SKMX+Mzh<(R>KAz7(xLH^%~Ci%6E3}gsChT3jct1yYB4Vi&HsX08g1Yxz*L1 zt-)7fJ$89-6@75>ARA!H(qJ~jN)mdweVgk>n(3gsG7V&C*(flbsgcPF5cihio!Xk7 z@5Kjo%@so06A`WBHazTXcq1Bmfi!pSe2cj-tv&6}>UD43xwCuBEZ`t19ObTFc967H z7a_)ogbuz75Iv}V<-R;0eYzoyahZ~~u5VhL+x^4IXnHEPq*b2~EW3gDy^pG3Wi!@AzmbFq3ASb9KNi!i6< zWaki~#}SIS=TTAaI_8UiL0^{LFY|UJ7pfYdR^4Y*_w5DqkZOYZtCL7?v}Hz1*(pA_ z|H}B9==D4W1^Ml8jzfcbSW3Hsou|e=ZeIRyJhnqP2nbMKqn7tO0O~T8t*0c)V?aQH z!8}_Z1k4?E$pZCCi<$oE`&uKGyY^MgzmS^qiPSVSYB#W(c){1iF2M>QX$(6RZ0gK@`M07UA;%K)IkPo6&7kJMlXP!6le z?I1KpTlpvIICcqv^vHWU3QzG_HVy-n{P{FA7g6egeT&^r(u%zv>V2UO>_-!|I(iL<2vz;-|63%tCU@WZqCoiQ<5AV2>!+pG*x*Y{5^|Q9{>eV(&K;@kTd6e0X5s&{jyG_0=gr zss8%+1f?}{6n&X$60nEH{oMS2!ii}{cAvo>4y7;;YY$KZp1)+>sBbAYp_i7OJ+-LB z>guP>tA@a2=B5{J|DJOxmzCLfDf0UF?!dfu=G^z&@Y!m8B+fI8+BN8u%k!I+mE5mzcM6hJ9cXUNm ztee$?VWEx7g06>q2NQ|d;qX2oi4;z?89u9*!x|p0?IUBkxdrz}gvL@h-&`#4;OX5P z;@;{6${v=`fEU!a=8}tK%!_|+vT#dI-khD&ZS1s16v;q(X)#LqF>rfU#eN;ctZ%kL z^=Eiqze2J77#3rRN;rKzG;SPHm}O3~X~sOBu^B=AJ@GSvRGQO!Os4+u>~N>|9}E>q9!c(Y+rhs!#A`AIq_)nu;nU z{gRRGvg?6P@A8(ukVmiiB&tS!!%x=RJWYGOYh||mI+z=`?Oquw zb6E0CyeIh0qpZC`H09gv+&4p?$(r_#+n@%8sA)$0`V)Pwm+r2j74O?lUIV$MK_V5P z>;OC>%=_fT1Lz5elRUNqd03OE;Jcq;!TFlde+ZJGpbC!a!+Nt+ID7WuL~My*R#Uai zAyHL=->TCisY1Vh0kh+&C0%_MAT zrjhQ_va+f)(H%EUdlD&NE?)Z(H8Xu+{5Wmm0hZEq)D5-M+khfVv&3y-o0Qsk283&M z9lC#2Edgtva13#H$T$M6iw^_2v^RfoCcOo5h^4|egsqFgC^OD#~i1lCreIyDpEe$GRUKI+!O->+VmK`fdGy>G;e^LzNcsH zRVo$%eVeTD4V)D5@A2nJ^j%53TquGk{#}L7pwPF5U{@kRd4wkMzpOu!h0#00S`_Y4 z>V9bbhyNd0f~#pSbm#1h#7RM6jZ`UFKtSMd@8KiCyRe?s!RJ7rs3*Qj_@_dz1|}-v zF}RrC)1PM~>dE}~-ZshIWc1Vbwgrw3ZxjRY)BUH&8=gaNq>u{0NaJ_y_DPf%KFsSP z#UuZ(bX}i6Dwl2p0{W@rmLd^sz^RIPhw*pQpCq&H=0Od89uqzJ(3t_mbzEQF-CHeb ze^UE;QT?^eW(5^}&^w?OTHsFe8g!R7_GxQ-QV3Lhz@BB{HVs1OwAbs1s+(-nu;Jn1 zY*75D(VUYvbR2kDh4Xi2lakQ8y+I92g|YW*HQd@xht>m(3OYED4DKCaU#1>3d!;T; z*=|;2jt-a(9b>P}F-JcSzK~p3lh%ew5m;3(lSX{TFXj1k1kWUY0> zv?l^1+HS%W81Q#6U?IdwRqT|z@sPEeVke76OENlGOK$a5y!o||-l0-BMn)SQ#ZMQ$ zyqoN-GEq6KisFR{;p^AfOzW)64+0bX2Z5{ge#N$Cd}Cspdp=W8eMRNt=pEAcuW~qL z<;Co0eTZPd>cESLQy~})`no6UO~Y31MGk-M{3eWotiDDD6NY9HTq%Hg154iRkwZ|g z;ffZ@mQ{8Axtxddb*aPYkI%Yx8i-lxik!UwKfSX0P}X9lyyK?$2G`ly!fD~eubeSt z;_E?({-d6t1rPK@Dm0eZ;Z^zE_eIZ{&_s0~w%wrdbQ|3gs-OSG)8>Q z+ZhN5F8-5_Qa!R=sjo`JTrY*769h8EVSukk0Rtu^^x#F*%Y1a^XSe16nw!V>ECy}^ zCEv<0wa(Q02S-I6o1lONH{vV>Xq)xoJVs2Eal;}qNJ1=4)zw`Jb5vVV9XwxnNq-(E z5($^=2=@9mu@hRQlbXp-?a1$K_GyYih_`k!=PEv1u}!wytVCXnD!E%%rcjP2^L!#> zCS-G&N6UB>qo!uE;88h{`-!48)OFJP%M8X=7|YyI#ZseyIj&-){*XNsk&I}lNa%L! zwS4#O?nmd`W9{f7jNVP)1kv`emdynuZ5B4`zLqY)&T;5>Cht2n*;-(MI(?ADiI}pl z@WCMDGaX=h1;<`E5sLp!!{yG?2mOxF>7nNHl8`IzcAox}jJgt6d9=&!e;>X=O!WrD z_I)d}W!>LfPHUz*^7K3=sab%`j2Rs|!QZb-ANyKSX&`Yo7lYSoB6Q|zz5F}9Jq&Ny zh*_(-WkgbE1Hk7k4TIUJ3-6DOlRK^4Pqppk#u)Ei;Ja1D3ZSK?(Zm_l3dVSQF*e0#nJDyk%c1?M9 z)BRHN_wP3zd*}-~uqZ4;fi%0`Ls@*?udm?Z9(RwJu6V8Hj9N?CjEinLV)t+6X;0L` zy=sRNeXv8Y zQISol2d!#BIa7Mq{7|)Lcv<>T-5F_#EjjtM3s(9XCufJhW>@=^7up*B&d3%sYIREI zjczzU)T{B`uJ!4_uB)xH=>XDyO$e{Yol^qTC>gx@8WfJPf3q=OkzTvexe}sg*~=@W z_Oa(DF$ca0M~rUTML7SLsswEriR|p#`UQLrU{l|sTY6fs(38XmRJG}N4?UQopI|4( zS%@2}x{r1inOI(Hk3@h8vp+jplwqB+koT)We!FM*VRK^LOZWnVz%kC|#Umh~Tw*hE zRl;el*Lh6iwMz0rg%1AuSQe;5{ehJiU_ zBtAZt6!+OGj(U66XbT%&@FLh*=x)JjF%TL$Hp6e|E?-V9DCo^>ijkJ@^7Zw-&Be7{ z9Wz4fNnEK`wFwfVx^`_WCJS?1D?1K^aSuJ3I`W((WEghfEU(?srm8bRXXKovf0F{+LqwJ))akPM95k7mlAptsLA{9@jp zK?>VscukDVF^U;v;zlRyS|ArrO*Pr(?^VguyGhe!-ciYb-hx6*jVDJtav(h<0DNu> zs&EnGB@X|r@a);8oy8soa9&_{_q+OmENfDZihA$eonNqGr?DQ#3RyaDDC36_D2(xT ztc*ulMMVyz^Y3lKfJTmsK-GIG69AWwdpB>z6KMhJLbRXSMJp8#dTve*hAO4`#7HzC zoS-Q@n|&Lr?AK~dGare!S~n&Nzz{&@#a!t8EcNB;&~IS>lc?LX2VAKg)2>zK#9FrN zO%~Q-dZ=cQSnw9_fe!0fA=Q}|8ueOo{ux;|_gHXoRbfb8|C-lV_$1`psXIOKSb<<) zk-PTuMOhz)Is~g2g{HnjgpgG)*hC>U#gh;ws^}*YJm>C|&fZv!2`BID{l}=7y;z|r z3(JSHE6)HRG;|U44h{~zsdArY`=J+w2UB8hhwIuXCARWGK&;L;o2XiHQIi&{rPqxj z848$O&-OlXxhCxqg=j3p;-8f29)7PqJH>ti1(aqt8$KS+X6IW0y17dYo%~FM^Mk?y z=07a#t0sW%P2i>#N-N0}n(-GR=q==d?QZEz6|NH=8g{{U&C5oMM%!t}3d_~gR_|A_ z&WD(dcjzR|jo6PH7;MpFf3UHitcASHNT~6;D!$Xz|s3-W763vcdM zcQ49`Fp)Qh+wu}!C14|daVP!RU#6vWhL({nVlVCQMSkPqB$2<>cslz5F~0+$C`%vNBq@Xz(3T}OA!xaP6`i@nvMq?&vhBLQGf z98x?qZID|m=r|TX+88!Cd}8Givboc(>+17Tq3i4j zP`xG6eIyTv71Xq}bEH2)a>iB?GmD76^TIEL;ZM6u_iQXLxB1%7h}6U419+ckDv;ND zETurLv#-^tb3-!eI9>f9>Ix3d&8=j}_mGmRDaunghLMQ6PQvD1UCCg2ed zu=X5JjsCHfYTpiWw$whEFxcq@F1PA?-#hJb)(3K@rCzq|=Oh6D1vdf*=V-5l{KpnB z(he6vmsa|4@$b|Xft>=k(kzO0$aJF~gZmGfSGKa;e!;P4Tg7$Hy8x-N5j&vzy5LlG z^IBBE9h^9E`<`{t#^t)!>R(dzr}wf&bO->G?r`z{6>%J(JDn@|VCt@0|0#)vk>g)q zx$I|qGNv8juC0r+RrY^q>3N6MX3}Ug(ak^XUeWq1t;B~))CacldsSL41eJvM3-rq? zNH_@h<^{bs$L+oYR#<`QGv~ z9>TX(@^UO%%zA3l5BECQy?dYM=yWH@$r}dgtpar4Aq4MT;A9`sDz$z!oQ2rPIQR5e z!cL(*T?z;HzOj9_t3+PTuW_A6XoQ}mKwL>poE*48#fRaEhL<9{@{H2(SAs&pV~V{) zl~DIQj81&JLVY~y&;!)fmFwbBVpE*9*Y4o!LNJ%vPa^j{PqX`Dsl$a<7^HH>FNWfT{)w<`v>evyDF zN?q{-ouCl)L>JQFAxy%Uw@>w&^@rD1lYsw8mmoP+yY}qvPgVpC@f*Wkk9)*TM4i9N^2gkrL^pjM8wWu za9pGC-MbH)o<~>V`8&u77@aEAJlHh1QI{=jAu~J{ze<{{vMdH_^24 zerU(dU6E|dtc!o$%8OoCtPYdQ6AzePtAeV9NHZq4Md5a8cTR@HJYNR1v23u2r4}eA zl~+}^oQfW=VZDl+a8;8j_v2!XzlYn zZk|9Kw9!0D&}&&%l>ZA(GhmPf_SkJ;8jM>RB82I+mRinQjl!`4KHxvJ6wFH+6{)+vC zIqul#j}Qr^GtHHvQPXD)?YVT_M|HG1eVy$X zU9E*<)kwDUyK9gUHYCmOlw$>v7FuH_13jzJr_%pc@NVa`Kh^xedT(7n)hE6xyRJ&glB&&0lHoB}T5j4q07bA|dCrFTc-;wR3hWyv3Ln%0lD%qL<5xtHa^d0P_;%i zU2@S2p1Y0*Te!J~$`NTiwv31qMHR^kgVnOMn2{f8Q^D(qa+$DfsAG9l*u6S@Mg;b* zYTu%-)O!DrMdLh*c5Kzof33gI_Nwd2c5_QhWbCK9)wS-n*xa?im>T`k>04Wi$dvS- zSjWLvg%%Aj%RI<|j(R0=xD+G%y|%pirZib!Z?c?w$!!-%ap`^D0T#5S$~6#!k8;nt z)4Z|D4ZGQ?_qi+aB`XpLE2sD|0OLyJYCQIRntUW1U-{t4r2a* zGH4^u+yfRA%A>j(p$gQ9WwQUY!fQwqueA2e^qxD#Z&W(#R*lVIwxZ&x>x5rjXAZ|} z`5`M4z##H`a&q~=c+?h|ZYwJKsG7ejT3Kqb?9A+|A;QxCx&MSbOC8dvV<1Z<0y9>t zZ`l^-N$gWGdrmWO2j000nYVK?+{b*eQ?0wp5np>VWvW4oVJKv&&Y3`(_i4xK#NE@3 z?gXPy^^+L2MXa%p#CqDRD|6J#lE+y>iAT3H2KIV9=st#dSy(@kqmR%n9)uSnF|->M zk590DkL7;Pg?-}We0j;g&O<#b>AXnIKe0MI{%&IY{iiqJXXS?nX;4@Y>B0Ei(vf;g zM8vH?kuMRL6_EJUH7^N>z9hm>a^j*x;BDCX3&qwVlaAgpYwhnD89_kC>H|OT zYL}6NGmllNjfOR=fZX+bqH@zqko}eLmk}XkZ-l|ohPe9PeMYdCA@|v+6*M7^upbtz zT-gf730d%b472)Y{eTX>$+?)-`NAgIuF9F)bok7n_bEe2vcL^92l`jkvK?AwL1zOhzvLZGQ3KM?i0UUX^GVm0rgJZ=PK=FxY%lw**=FwF> z_jMtD>(Tq>LfV57IN`ZC$)io4TjvZ)2-jC7Ch#Y32$N(YUw^yN=&S7h9R#6->%a0o z@tE$nT`^czk;viwp26;f z4H&kI1aWsirkYnjIy6)}BWIn&+q1k)*#IgT6T)1G2gbT5onOHCUb`sW#1z*eiPe2B z&g6kPgnDT?5T3IH)?oJ~t-`oO>ZVOB@{ytIzD+E$-eudgo6PFZbYIbXSZ?o1z!nrF zZNDw6ag9$r@Pqc8_h1~J0lT+{=m;Szo8V-Yx9pU%NOr?y`5@LgfHjB7ZNkoN#m}#YMSrW?zs7y) zkmuF*Q~a2d5Tle#OKA7 zz`Jg|@~y$eeQV547xP8Z?-`s_wJIR}^|q6w_wBo$i_9e}zX{7{FJ^aep%W>X?lDl$ z`B6o0e*|v67t)fGVUC=brll(kZ@Ns!PUg%iwC?|kaPz34!ZpW-i9ccPAXjtU`dR*Q zAAXKHcu*}xSz@Ym`+XasM@=$aw5WnQLlBgpw{Bxzcav8<=OTs zT(9Ky=-dNYg4wI5fuC&8fJ@l6>2!V?jGEK(NmEabX$`llOXBJ^H-m~E=^m#CYa_Hcl?TjVeYAAA+@53O znj2>~#?>oub-fw25Go__MruF0ax!x+4kw`NgQc_81D*AM#hhy%B^2)LPm~`;=(dfa zFZudYL2>+6udcF)>02al?cZSJ3}tQ_j$y$6%zBq;CTca*XsvUBB%95ayoSoiOfTT) z%e8aIz9(v=9qa79u_ir(pJ6&q4?StT(W59ndpCOBZ1vpDt3l4m5(r{oMHACMT;@yq zb(YrBM7U>}qP{LYkf}*>{esvi;xTOO~ut`OKRZ}lm!suprKh(<*F zr?NYKFyY8~t-@+(i2wMeSJE|!VlkVF4N=L{49f05Bj-=?ia2Gu@$?KIPSkp)I|X6| zajFLc_r>mn;aX4kKooF2z`s4I%L276s{!F}ZTe44>hkKrH9nHCw*kFZX-Ft?->1eV z&?qfR4`gc-E0tOp?KD{Xj%;=P&;-B|uqZ3yGzsBRdAoLPy^=R2@$&%=NExfr-ee2I zX9r9`J2S#CRT$Vg&3uTI24LB1M%w#NURl!b8M>FI$L;=RVHhOIp@(c4CPObvI8FNn zvxd9YpY>F?=c#~Y#j#V5=i}>}KoQmSov1_p5Fp)Xu$W^B!<5_ec8tkmLBZ#{P0Oo_ z+ZSpGJc7q^m-!^K{QD+@0gJ((3d`BA$aQxUclanO3~Z^)L(VhmKE_G56c!EC1SJ)fiqbVr)h9pe0&bj1F>;)lQBy`P8VQn zQ+2GMO0kcZ=ZhD?C0hhEw6p}6*aOTI73`*kf`S4is4%fk8=0adgXhJ6M4oOKM2!%7#UHf*O(nRihhQck2mKtOyM&v&|c*zU$sKKAW?d|Qo z^dG)E*qA8u8b8V&%Y<;$1v4zr8V@SG!@NOos7s?dCJa|FsjAf*(4LJz%%Kxbe}jCG zj&FBrbo%-%j{~R*z@Z$-Qoiyi8)G8z1;_X*8Bzf6cn5Nd`n|9#ul{4_#&v6uob12u zt^n7YKQlDk_~#Mqgy6e~DLTmSFz>eBS&c@e;)2a;K zvt`a|0OR&NU#ZAZJUu}!BDvC)_PiDjNy$k}F@=e)t+V_9NPUy|_3>ar_u0xS?Rm+) zN*m1N;c7&Cx#2{us|NS85RF>Cd(h^#Ax&^)oDAeTO%!AIraZ zer9`)PV(YX=Q)R@Jz`?HYENg$w7Un9;_KtIX*h|^=4{vA9#b7SyP(LLuP%iF>Kw17 z8RsXT8q}jNeMamMe~KGBV_QFD;~`>@61#3sUVpM#rE>U6@$j^Tw(cAMcRJc6w`VW( z^q!AyEb}EE5SBS#fhT9WJve*>)Rk-DIV<5YW@POrNKGr@Q1Hg1&B&3TYsr`Z8F@qM?>V{{!nSU zO~+*A<)nNY?eojm0IPu8}dMiPl;J;2~jXLeAa$kITe|=To7ldAOgehKTlhD6>+>J?D{2WOu_AUrrst|M+ek zciRg3eKiHhHX6QWMedp+v9b}qgBo3X8UfHOd+5z@fgvC$sm%yLcNm4OzRkdMRAF8V zvXm>27t-Wrh}pqfGoKo-`KYTVtv7-T&wiLy-mgiOVZvMoz<6i{&0pw=V+odMnUy0e zZK7$lyT3|Bp2XkN-#R0>5SXS3P1`l|-_;%aHf zm#Z4!DGp2wn^4u*Z!O@*6HeW8SMRRLOC46ynd6&!;C)|HF~uCm9LMC8v!*rCPDlE2ybUWPf~&hOK$R2Y;>vae>(( zWtF>H!SrBaKa`jgC-pkh={N!)HQ8wm%ZIwy z;jT^lYU~b}m~Y@3KbG^sW}Cy=xt1mI72TIf5ib%N{e#MdrQ8(Uf8X)A9SlyTZGFmK1@-@lKJKTdx=HYTKU0S_wggn3rVUNR2H+A%KR}~9z zj0Lk#@$K^si^uY*`!m*=o-Ry3p-^V-pWtJ`I_WnW9$rS_QM1acRE&p9M`Dm5>O}6= zTV=X;>jWFfn#-H@8#kXW9;xvO284u!xQXpNKDb3kN7u&K7!{je-u2J2;*BO_-9M|} zl4wZMtbXkxJvlW|zVst2YDnddwa(%HVe3DjnrObqaX8q(MiBv}h@yakG!>Apf}&Iv zkWNHIloom?E22`AE(D~h^cv|>qqI;I6oCK%0@6bXHIyXeKhfv&JKyu3ch5<(J3F(P zy)*aDom&@5ahd!()0_zPYUDmB_wzONj04zTm9}!LRU^;8SGYbvO&SN=1kMW*dIg-! zpG?#p5OpDHq?MP{`3w19G!N}+O4@Qct;nWe%(ds2TslJU>L=W5p=qp(0@k=l(CFRo zWo})z`X58Sj_2y1kTw;LB4RGF1-?xt1$HjWxbcpD+U~l^9k{s~p>Op^0h*}_AD4G2 zcBat)QkCpWh2mkw{l<*p!0Rloag4%1ViFtbR}|g-5xVSle};hkz#X}{|q4SF^{~^UpV@* zJmP_|k%G0X{cR<3m<{%`U*7?JeX$kA>B#8B#9ZA}MWcb0n<7QIKNh|Aj-$R#xmklG zG*6B?)Ev7G@T{`p&fe%JrYiBDn0rwt=q`6l1(_5{kJEP`sBqtt!i6_0QXXX^xOzRb zQ|lHsQ|;u))?Jbx#J{KEX~1PNWPHy5YNur#`XuWDoij)Bkmh>#$6OIlTUawip@dJoy1a>ab%FBl}=qo^FZ{aLZS2*@z#`KlfMjan1JB)#vo& z(fvO6)lCwwVIzO6{4r<1asT#q&kdLO^b-(EfA$aVCt$Ky)$Bo9~uWD&>y8~k6v)8;>>uE9>qX1;TtxjNWQ9plaE0-zq5Fsr@ z&iuAxY#+k5W%xI2h&Fb73h2%ZGqq5$SnnTKisoe>7@sl5F%xi)>FC!SHYWAl5C{h_ z`*S>CVK`}`x>!AAZDk%EGUo5R{BTebrmwC2yF;m7)6DFBtlC0w9zIWHg~2V9&XZLG z!!Z*)+}ww1$s(se%6>-t<{kE4Q-pohPM8~`yzVkn9{rw+s!BA3AjCv%4MZr%#`vQ&S^=TR(W+y|m%6!9i&7bwp0J(+<6C zcMqKFh1I_}NUMORZtB@9E$xy;%A8eTQuABS1Jn6gnloR)Lz^5_Z(1#=!mjzWzPgIW zOZeDtMO3Cuw7G`ecmQTYX8t-z+N9|FXWwZ0<(5kKzjm0woS1Q}YCeA%i}_i z?d&p;G-&54sg9jW#=~K-3_WPiz*Sfdv0Z7lFW3_F<}#5yx__yDVmQV0?=aT=6?O4=+g=w0m;BbXAC@Z z%JMz`-xecDm$1L#=`W!l6q^hz!;Sd=9g)W$c{2UKD-DfH(x_d3rYDesMr)X&(1eD7 z^`_1HqC$nM*3SRcGE`+~saa1ewHe8tFV-2!?}`BXbH*Xo3RLp9T}PRm9VcCXwAuIz z>Q{XD@~I(LS^i(A^Hpy}oss~b9~kp`!z@wj(l-FkzK>rMN~6RLY$?b1d@X*Hl3hPV zLU&z@|NY;ja>Mx2iglHlQMl8-Ax=Q8I&(upL(g44OMP(fbfC4=Uo|v{w8VIHUGS*l z8`b6lbc0zD-5JnDhLy$b>qi`Ehs&jg5B~SwUgNdDs|lf+EA21nAG$uV6^XUGeOrGC zH0Ghlo0jovXLlN*(PMx?0_?x#mJ(Lh8#1mJ4dBobIy3}AOSIq-7$@QznK~L7pB<%O z-MFt4?(zZ{Bh$M_X;|ZXBin-XBbb8+qfcWZPK%jxB;<#ZvChSkJ!Wr;;=_TNx)4WJ z;c1hXiw|V9gp2xw-icw#xy_5Xh7eV49lG;TeJ^g`gN_$HxW>YAF6iYxcDDxTWwnm; zvDfOjTOF3KK`^(y#`09;pD@uqCtuW#Z!!x8 zoaW-*+HYI*KmB?C<&`r`{+G>5+8aHRJ-A|G@Qhe?OE6}S_4uDW@X(0w0VV1NOBj=lk$VDSwrKTN|DotCIpB3 zIJJeo@uI9~Z2lGz8alBCY*`Z}^IoM>IO1hM@cY~3^>mVPJ>|)ro3>eR`Q#YbwyidP6sHzOGgK)RyJqnOO)h^eP3hPgBsm4O&UOb?qBYD zrR$uFPuWX)jC>nLV%h>*K(rn?@NSjB6>IZFW!FC%o^*&-0S~1vRDJnkQYX8Fp(Fc> zEtM`vN|FmSPM>2gzJ3%Fx1qYmKQ~lS0QT{6GMdkxJsXk~xPSNVSTD~D3Rg`OzruZx zcEemlqwDI#5pnkze)6aHbFS6^{;&_7m)!~695F!nZMu{>=eDz{zYxM|u1dWtCMJH< zu5HQh3ABWd{f)r{%u&}o695|Wy!QV45eyg-E?-jvX3pE+ax9Ngj`j17R-1s#lYI*j z%e9q;*k&Az+RBG81d`u^6_Z-8#Yu3bvmKVQt`EFoRSG-p-)$&P&>qm?$L@be1Dfnw~C zPBF~S&wmVTn!EDj#ht2p&n*d`?NXpPno@>yE`b0-gqe<`A)c=nmI6}T$%CuGNtY|S zun7Z(@#*D_0U#kG)GvkkW#T-nSQi|Yi-hqJ9!|9}h>q_J<` zzHPRVCj^vrw6#S8y)%Iv!PO9dGNauMDzJO~o&eGxpK$y)=4#vFugxCTblQJ^7-o^$Y&F3NQz=Dcu@QfVAmZZqxi~b%SjEo$czn`hI)E+Uwt2a z+av1O%~Um$;uCZkSdH`6i-vSuFCKTBY3z1N>v(yP^W7#dgtMO9RGmG+2{(Rj_xSN` zQ`01!G-Xpuh_=x|8|4ensaXU$qpNp!=KChwoR`B4hZr~ zf!J6hb$xxk8Mj1`u=pZvD0SRwV}G$TyR-X-tNL)@jK<88lBgo+glmEne2FoZNg)28 z8^RD8EV0p4a2b1E$v#Yre%O_w(C~7JO?mnGZ&2<#7Q_s)A48+Qz^Xc;3uFa=XEbvA zh}LdltX!z9-*jIQD=#in$D$JwL{$9A?-D&?LF6|rFo2<d*8b5N-e2DJUx({ zR7Y8=4g0FthjfYzs{&C(Dj5Yx2$gI5#~s)H%(9k2usyyn2(8GQ-@$&Dj0F$P@mv() z1R?nR*>pV}e|N@KJ7nH_E{lh2AaJmZ?|=K8%rG_3E>Jy zMZqVhB-VFHl@{GqJs7^+gt8$c=&A(mhZIS`9V#idP(A$fPYVk1hnZ)u{cN>3* zyb!b2H7_X$)v2uv_|ABuHb?Oi?Kl!^Pi639ATEfkHLJ0~MhXdq^>qowe(CbMy9aJS zixgB-UAYbdnQ5LA7cXd?de|Bzh)xSwZNK*Rj=|s&3*DdfkY}KYG+3dyHe8(~-)nD4 z2!%bAR~QCV^FxeLTi$sIiFm+oLE1o_%E*qJv&($+vAYhLL`Y}(rmd}A(SIzD)$Fo- z{Y9)-s?SA(b0ztTZRDkG3%&UvUB-tD=I#)GTbc$;CC)JD2qK_BE4 z$!%RiEy=7%z`DWG1i~M5UQ4Bki4NDSeRBoj3rarujeUiJg6a=G0!5tkjRJVG z&3$7h&S9fo+D^JSpm184-5ImP)_hHt!i&YQ&A3IGUnTlEpNj7a4IT?$HqZ2XRZhVk zZK6G~(E;cOSKV1wFQS0lS?_alUlEE8$=WlCTa|mLVD@`C*R9;Du6ju+L zUi}A0njYkji%hbdjAJ9nAA3=2T`)g#c@)wuRNS3yVw+0YrP%@|&&>a+7~(2*)StB7 zk6x4+1iAOz0ktJ&u&KR^0*vdWveNRtRr?Z~iWo&?&%ZT$%753n_SLPwEBHPb@mSv& zzMzEi^pQ?L{edr`xApW;&7L)#9UbRHbF_tWSywBATP+taG7x$R2VH;s34X&FcCV5# z`5A1XdI)QL20Y*lWs{^oOkJ7ffdhA0ZK?WmfXW=6tp0g44Cq5i<^Tej#Y4!^fwG48 zfRoH8VA93Y1GbQVrlS~x2kmw$1T`om)N0`^G?+2)Tbb0z`BNy&+mchvP# zo;|t%QR%xaJPrXQW6bpvarOS2irFs^95FuBv!dL5xx?rPF1?_?R5Ne(ieuK=&ijIQ zl!`?p?+pfn!U?tn^gRYcTrsfp6CHJg^t% zrKI$Y3=M(W7Lb}2SN?li?IGBv^zw43{94Ed5O}MD1lHv{mKC0Gv<#>lPaZy-vGY!A z;ZMdfs4QN&s-nz8lE^z-&BIZ>qCIaH1QBLgfr|q1&Mu)l=*2y^AC0zl(omyDJ(2*X`4P<-L2}(-GI%oA`443nTy9 zU9~+fj0b?@+PR9)BmYjpw<0@==?9Y;)OYBss7~Ss5%6)m^1qC2&*3RP%2pFWzaW}m z{O&r*Ub&J%njY%^uX$!+Jf#KjTZY>a1TK!4RX&XPoIX8rjPJh+>}Il(L4S&=r(D;L za45Jc9G48+^WQC&WM0&@Jn`8lTvtH}#3()e)_!E)WrgJ@8}k2E0ww#$BoXX-ER0u8iskK)bCb+By4eL_a9qCmp3Gv#XvOmepqPX==%F+$bA~`oM%-<-;gtDbv}jE* zLFSGTSgqH{QU&Sr^SC#Y#|M^jk@GxZZLj)%r(HH9t^BRBQSBUhj3eplub3Av+!%lP z>(gP|5yed^ba!oAjo;=E%2OSAMqOl|+JdG0B+vb)vpz>U6ElTCe6y2(bPR=rAocz? z#}8~hmbaz}#Soj|tkcJ5Rd&@ciR8I;d#d-dahOWoXCDi+^a$9+S$^qi+g3Yb6Purs z!f*HEyK!&5RCly2s++62+e>pp9NA#_dKej_9I$P%y&A~lkV^l|fTc(A1eJsVO=dow z;kh8p)1hHkfBYTRsmc(2lLs1=oR_S-%Wo>R672ea-#eOEXww*d^S;T6O;5^()n4V3 zuR!%@I{+HAxS(@UQeu)&74WgAiO|I z@1j71$YrThMY2?{SGGFT=*u<3?I$fIyP~U{s@(2_A4u5Fqk8gfKST`y_wSmR%wD~u z@%qSi*5U&_`?hF!_*wN#;DGq`FEDxRMubkTdVOvhJ%b=fcGcW$CBCv|w6YpIp1{+l zVHe71_35(4q0YmZpDo~9($>I`!UgnZ#LDg z`@IAJicMBE;udqqJ}|gwIDbw)Fu%l)@gyDHbTMdtPXl_sS24-nWf$Nta?X883@>pd zv|Y97k_fVmW?$U)Tnpgm@beC$>d}KOiCY@&uY@oxTf882TwfsXv2dA{H`!HvF|1$Z zRb`a3q~-d6XK$A0{xsI#Pj@3s3YZ^`jDrp(4wN?oo7l*a+QIx;|6v+?bep#0%e;M;z&V3a#f)f)4GpekMYg#keC18F14ve6GlMH>1;YrmF~;Zky2LqXG-8(w2{P#KS(|_!+G5!spLH};(r8u>j#c& z>DROV~rmCtCsN4CmM=p$%Tq6)ed|qYVKQ4m69+!tc6AT_nQn^5DJB|Ig#w!>|*T{>w&|xOB--EMNVl5%gkW>@Ygd zs!2}o-z&r3N44!A`|lhUx)pHre=8yE#S0k!zZ^QXiYWu>@#=McW^_lcNjNy|eCgZHyyU*P5h-@FIOD>Gq1cLea z%_yiyl~-I%jZp11Sv5HnLx>$cS@d|c&i9socSpye$x7HhW+tD|!kwm$YZzFuS%sE1 z1mr|+Kre0#IGyX< z-*ymVgyknKyRV+gao2ICbtfAc&5NCc)HWVuOsKd|>&Svg=bn9^EnI^q9W;^Jz%n&Q zC!}3B-rcdlLu%wA%3@3Sq}QPF+gD?$mla<=N`@^6!Pvr3aHOe`kkf!hB2OkC`G=z;nIkJbW$nl z`M4yNNeHJ;Z8d%HxmTfHQ%Yg}`{k@cN6cb>;V%V|_;}_lIH92jtq(U3t+*l*~$*)BL ztK#e5CIvE*ygc(J^Rskuf#C-*j6=@jnPOsM=OiS4Y%ZR(vwE;r6 z$zAhe{-S*QN}B?Aoku0sk%mTjp7S{2Q_1pWU)xNo=2On3Mj0^|n|m+Cbc~|fEaeHp zQfhKHwK`d~ZcbUpqy_Hrb#F~WK@n(~TY}WJ%iE~SU^5?1Y_Vx+X&Lf&F?P^TmXny; zeh;iTF9XyxGV{7SlrwDFM4Qux?sLV*UjizU3Xi#-pQk3Eo!{xbT*ek3v*@l9trtdQ zhZi-iCGRGK`SWQ*h*Q$y+^bivi~6xCjlcAqopmJ4q+&B_O<-4MxW=H-pGt$!5lT%7 zXKcIK)6wkVK$PFQXcW$;p}HU$lD6?WogO0MhkUxUmpIHc1NNstxZMXtT>P8!i}*^d zg&qrEa8E4PX5W=}e09QyAF=2EooThZ?S3qZm_0UN)|Kt%-pfb&;PmrTB-IYS?T)^VC4Rl{%GNg#kMfMtGc}`5XX*JP_xljR6u{3W%8< zJCo+Ghos;M_629$9!WaBBqYmY3N$nh9Dz=pc#r!fy|F--{feVBv^?xBT_6^qy>7uF z^$+QHfe^;47?_@4+dT1L4XKEmq=bn0JMQX7YydvtS@_O_tE5p{^($xIR*!BK|Mlpy zoecvZY`h1Ay~v37*4~<J3(B!_ZOy@na+cv0vJpvbRY&EBYnYl!$a`2}+;WXD)sb_5fW%!Qzz8`TN$KMK| zK~OO9yX)nBD%z(I`z%S;x$)^G9p^&tQ6zBP&zp@G1=U4+G&2LU>vqT@{t>U5Exkvw z6g_ewt2s#1Doq(ECB~+=42S1!{n5!qXZJxs>o5bzRP!b>WDG3r21ZyYquCsri3psr z7x!!uk|;_&#^DQ0kVJmeqfyt|FW{g#&g2akCvvAu6Zt#e)8QG=73IK-OtLjJKyG^X ztrgKzG+kfQYU;z*LI-3c0g5x+Soo!0ljil_j~>i+4tT|RZU+465$VQlzuB*tW`Bo4Ou^NxIcwC!$fG?1Clqe3bzU{G5WzD!>dfh@`% zfMxaZfGs>`DJz*%{F}V>D0PitLH0lO1(Rcl!evwSU>of8na;J!-9YzUJ!}b+rg0>7N`2K7V_#{dK5r z+j6SDxkL8stt-zWKUKXv#!~$@QUHUiaKMo&5b6DuKswMZc=W&2AGRcM2#r_oymR*==l`s_Q-U-+_@%{3rGWot{3oty9%@0(6{n-Hi- zD<=|Wac4<3cfRJN-QDfMGO#vS3jQ$e4Ia&Y%4!pvo=!T>!_)cR*a}q?D^aV&7A+w` z2~F9MeHJ%rWfkZjR|3|U{8wL~94oy5e&wKeh)t%=|* zEv~FPJn&bFKW+71xNWIsUb4>)+L*Hb#QR0h{FL`}M8pM-U!}*Ct8Ww~X2u>Bu|w;a-ce zpDb&S5kjnAmF1-o2-Jp!QJU|$J*1uWMLf>yuP^<{k;%)vI_dh|*u_jD^$8imRvJH{+s|w?0fo>N&Ne zkrHg*8z8BbimtTU%oE5r?9cZG0X=ORVQHky_)^&=w3a^U=L3z$(A;j*)YO!?IGfRs zGg`04pLHTJQ|zsHitYwA_+**DW@|DDfmFMexilT{@)?(y z_*cMQKF{`@{KlM$2=vZ$!&Hvwt1GXL1$U`Hn-RI`1+vYX#9cJ(RhnrqUMLI)E=um*!I zvx$EVdM+j<9+#g_bg(df@X{u}?62fgm!p+2`Ms(rsT_)x|0Hamgu$MOCD%WD_q0br zvL|CI{o9Z|SFzXw1mJ%U_B$xWL8iilA0QUVp_?$(u{Vhwx=|PKf%}e5{7=5OaX0{$ zRw15U^CY}YC}!C1pugqY!~eBUu?XI?%vf#e{k#pN3e9YlpDzBo`B*;;1mC>CFW{|% zW6RHt>WmfEwpYQ)wLBswndtOwc*{wcmTIVQzRA-q84}dk>MJlmyA7?Jj%1F`SB#=7 z$ZUL{98)2nE}DKyOX4?3o_?yjD~fZaGP@}M{a=>%1_#ERXD!X#t`(n@X&eNkBSXy* z;Vj^tuzNl8v$EeAgxDu#N$rG-_XYhv>m0wXHXJNdks(o6jW>zVhbLb zyEVzuUo#q1POAlK>trDg;#Ls(c5yZ~?z^7O^mj~KfMlAmnS@vg)JNmk?g^mI&`m@@ zlyH<@Q%L9AiGqfa<=WrNX3)n^)2wp*{Otnn(bUaJP`w-cFLR3NGr$|L>E|ah<(I{RYtfQ9dGW!e%1m zgW5~TV^?>>$t|GpJA~%Q*4}9}B#2VZOrY{5ql;M~Z^fg6k_;Wac{r*a13$gGCMy(ts(kaz^DwKXE2ofd zhaM3J`|Y%6%4)Rcu>P3=c6p(p7Cml=hnudy17#{GJ*K4~Xl}C&m}9HgIu-8wJR_=z zMzw#l?6Ywz;T)EER;cS>L+m;!1o_^1yh7)P8V~?{f*#cE-3Z%N3lf2Qd)p%By6Rhp zX#b`S(#k*d#MV(KJTHy_1( zYP#7|W~V>r`&%~*BQ7QuixE5?Q?|V5H%f z-QYw@tXo+L!v?F0=#~V|_ur*2pA~XzscM*VB-9w$Zq8+Rs(JL6Y&5a03BFbQ4*iy) z>td+h-#k3GCrF+fOucS!JTX2}+qn3h ztv0I9=i*bHb>8fi+h8l=_B*Y6K0rCt3$9qux*1&K#Thg4t%9xbsz}}!(ll{~9DCWg zqcls!UYYxfh#wfR%#J`k#DJyg%*6F_iph@&Ds^e`X7kZv10Jx7i;bv3R}vrDt9kU5 ztTaWjtO>pY-L+4oXIt+E-wWB+Ke|S^@*R>U4!oxWn}w_CivwpAn-DPv4vg(RaKyv; zgm?0=^pc$EY5{zHf%*29zv~7>IDdh|)o{Ze`>0l>537N;=8ZBOxnHMK!}_JT)y9rB z`MmmW$@lx3ISKq4)z>Q^IFpg3P0wcO!>BuA!|^}pn^DJ-#+CVJ`?~)1pO}ES7)N$0 zMz5GWA%$JaM7X5Sw_~gM3@Khz$R?@$8AtKoHRSp0#LIS(J;zdl;wUoB(^q5>D}AV6|@{N?>e}S ztii#g21}$}55CKXkh+p;h{)VDRRQ`LK2F98!4iJUaxcHMtx*V(uP*HNpX{h4EMf=x zlK<4_L$R;@zscR(`{g&SA<@j6tb1uvuyc>#I;)@bQd^*maFgCXL*#3M&^TXQw%Nw( znQbIBJIWM1;R`Wh{8C$pLq4U20c|!+ZklTjg;}Oz>38zu+XUMnHa})dUhl_FI(JCK z2@Em)kHeP4v4(#@`v3tBY!8qK!WZH7iX2PM$6^>18VC#bZmMJc(U>6s%U2g>M;@R4 zz=}`2aubPc7{WZOI6^d|(Xv&9QV;B3+jjoj{dBpah&<{2^~wE2w%jH;hN2AikPmPQ zTZIbydSS#{*ZxY1zukcSPvI7d;(5>X2zsCOEtpvxufk{mTNh$zAuBY_@H@AuYFMlN zI%&IN)^lAbyp7?}gv_EnDOAa&QB=wO_5NRxB-l4^=h;^tqV zyV&a~pQ;)GBGDiBZC;pN(J{cjt7f!${`3)GJz)u-cLv~j(941Ef4L70P6k`U%~7}0 z6vZ|CUl|*tEPZ(`(P!U&yB{m6R&*03RROJ%l`ioCDJDb*&{YDdXEp27tPexb!b!Cx1!Xmn16dR0foSX z_gI1XO0i|n5VS^<_g`O@*avr=FCr$Z__dw1OS`~KUW{W+Rcw!3#2XB$GJwD|ar7Gk zL-VQz4u^Xvtypn+vZc`pdTNQ4?!G19cTuC=n+NnzbHK*(X|eh)*a?J(wgD^ZiXV3d zTKDN1yWp#gs@CN$?Zg(l`8`oeBIBd7ymRF4L*Pbyo^;JvC8A(7b*RmA4apb2CiQ%l zrIGnL?0XN#7O{T^L$AFB7Z|Eov#nh+Szjc;$)v%vsXz!aLZ{|3wyauq|$r=payjiFkP*X@dlv+|BMFIvUFEaL6|WYs_3s!m$n z(WGR3`IEao-(yuwyD$HYkZ+s%EjselP?h}!95OF?=|1dkFl9VBw5^VmDs1q2Bf)vj z>1_%HhCk#?snpuFDPW7+s0%`vKFfnVmVT*+doSj*2Gn}wx!d}%3n+WERXKS+#p!8z zFUIOw)@sdxfvODjzo6oBttOMb)Zy^g-&M0T5Z;~~e46`B9&m$e%Qq@;tm-)rLMX(7 z%cn=L>+~*{a#X7Ey~#T$RNCe-eq7>M%)$F3m}1`fo0B(w$kyqEESA*r^g;Q?IGgLA z{_czNm%dD}&XDm46o{PC?6;LA8<1p zA9lqG=$Y)XO+_15Vo&4l(||~fdG|>aNF(McqMzniXmtWi&Q0HzdmF>a{*x_7h28GZ zyDp6vs65u7U%XJXb)%uTKDb1c@%`>W0Ca}$)QJK!y8Zq0UEl5Mc9g;zE?e!$sa}zjp{t#u3#1)ZWog_-f814^d98uS zTR-`du z4J|SWRas=#-q4}-Z2SsMd6pvkb>v}eVu_qVX_ee%e~Z z{tMn~er^C6xY4Lg&p7%$B8*o^^aWx|YQgRYhHkZAA7O;t;K_DRXKkNJ>(*jzFQZq9Mq?X*I2qU+E^J+? zK$nVTu{|9o>=JtlUM&oH-{vkJJ%jIL?My4p=uxS!2r%>ejxE;jqOsfKg4FNV>>RG% zR(e9L2|_>szb3~%s`peHi4Vp-0yOk6Hpc09PQlV5zH_NV%QujqN^l;k&M4F=Rq~82 z4L|gZP*ZW-$nZ9(7Z}1O@0)BkdcEe%MxF7kc02v<`@p<+#k17|p*F}+Q_aDfG#1ut8HR6}tpkWoGK?#{>(8rFdQ62=*s%Kl^R)$Xn|E zO1ciqu=t0+n{VXdPF-owaO^~+iK5idA5W; znQfaQ_g*U0*BmUZx*r*u^!pmRyg%06%-^(Z?6?p zqB*oA_H}jD<}Y3ke0|V^*7n~ff0Zm-PQOB*VxfUwEz&da@>NwPA0gxqyh<))7 zS<;WUPDB=UBKF;+Zk=G)$f#z)3$s%f5JV}s+phPTYErFVZCyo?P9>?}U5C2nR7H2k zRA|QAm+S`6cC35zz11PRsr$aOxsC+m3kat*63$Owg>y= z&lPztj~>|WgWr`58Ye$;*lqGUm?8=nk7Wz*$h>(tzK8krC}G!cwL-|W!8)q0tm@JV z9xkG?O?GDB@#vuWg--c}7*Y6du&MLZSDC77fDq}9YREh`3?Na({=^Gd3YO%AX+Wgc zZ4KJ3?lc6h5=ZM-k)}z7gJt#YJiNFarI$5L&p5}cBFsKZX%&3_<+eg?dB-JeLH=>kqAQhs69-)y5>kwhxK;w759>1|x8ROL^B)CKTW zaT%W`(VL@~=Gf~mfu=sRlnh1ke zA?a-XX8$X|s~i`}2d<-iCaw_M^BH7cA|z{%C&9 ze3Op)%A&<$hEo`Lx1$DWQ5kqXXBT~zDy=xBHL)OPyVUz3a`iky$ z7HBF_ilqSNR17;}zO_2y+pT~yYGyhIaSfB5JU^6bg|nTCDbsh58cZG1GV0_GI(p6W zdfj!q6A>7DAG~{Q6*~UQrOKzQ3@(Nk7oWg#onBIPzf`eYhWCYE_qQm_mR+P$aGfBs zdX!)}xU|Kr-s<;oH)z(H!EeLZPg`3uaj)+-3OR~DXHwh0C=Yx1fZa+n5!!e9y$KVF z^*xg-3L0cmfbIwHUFND9&1ax(&)^Zz_V0mwb{EFrjQaq`8vTn#nO|aN=ZLuzCvub6 z#LY>W@IIRC{@G{c&+Q+WFxpD(>mLd}TjL>TW$7YhEQwcc=J^_i#+yQ?HEm;DuhQ}8 zZ`%a56gpqX1OW+Jew_z*|5j3>@%|X6LLIOG5c)eG?J*~ms^s-9n2SrqZ_ha;C3Cl^ zn-jWsmr6p6fK$Y*{Xj}E(5P$L@8ZyKL6mhX(`}9QuS|2%3E8!R*EI6ko;N0JD!S){ z(Br-`&J+o-AE~N$=5npwS%GbT*5|2uy^Gv$nyK>vOn~5MX)@jdD92EXtxRT@lswvo z4lRRt?ztb)qdYsoUlHo?dVSrbOTwiSe;N|Iw^pdP>sW|>d#`x!oRgivt_h%gu}p#2 zD+4JW8+Xx+hB!^HX!-ES+XIbOsZ1O1E*SLk-PD}ih!J=j@uqzR0w4lTJbj{`F~s1n zhEAAsg5@AOyf;d|jp>a_fJw9KV}0AKfE5DW>7t8(8nUkLo`*(u1NoKm&TPg<1(xCG ze$=fMvlkPZf`PqBJ3~C5%3hA`QF{hwucDvi^K#}kacR?eKZmqHdx*Ru?z1h>55DFDXy^7m(+ zgCCq}oli->4WXMCR1#C8)--OZON&2;Xx|Qf%?{IIIo7(YzUjr+*i5k<(WyiAn>J1J zyHLTbLclU3arD*+8kkR&(_be+9-%{D(=DoZmKjvkhd%rC3Fs`5LZCMctN51ImHJia zq^nwLp0vr~_=2U^UV42oiux8{@ zygPdZE=W3M(-VO%`LwEj_XM={tA6Bl=na-*{mV_Z{;ZDa!S}gZ*Ba&)aagi@Hyb|? zMlohN^}utrM(Y_8`G0D#EyafptU9|3gCAhS@0vo`Itimb>XJLFs43AXl_#|VaOz|U zcJh-HWV#EHTlpA9K|gz?Re0FcsGl#bJozTKdGuA+>GC|;7t+l4{KvJqU-R4m-HVrR zXm4D&1zXS1n!IH5}%(?h7oUb}-{$-P@#y9*3ByQ(T^aWX4NQ)W(5mTo<~ zN`aZ5PIh2_k^LF~vWzzR8&O9`T#cLI6Fmh*@rn1dFLl^(!~jQG+5a#Kvrkw^xSxWztw znx(tN@a4EqRXxoBjJfN1o?D5t_}+n+o~-Oh>%b*fYEBo~K|kMzhIoIv?%d`&CyCD2 zy6!IF!q^!9N19lAh423FV)-yC2+gFyu=+A*d>w>7+*=s5;PRI<9$aeL$4MDVBwf6=7Q1JUfpD0)UF3 z>4l*ZcY6Uk##FU)R%Ukbn}^c}g=CMuOfxK<8ow5CDtPpiPJc1ia4}Cz4@u9*hq3fVBZI%MaeXic`qEFyHS5j;4uO{x5cv+JG}VqmJ?rW zuwC*u(g$}mbYe0U;tMLrH?b8w$ZgCzEYI;Wxy+{Z$cEHRdiqwwg5nzX13oxnNbVeS zw_GqmyVjGFM3wr?ep}Sfq~wOg)>`_(#-s10J>!X^c0PY7%pz5?s$^$2IeUCGzcT&^ zQpsE3;^=l2$L(5`@5qJEL#0a`FI<9=Zh=8NxUOJMh`?qp{e5eoR%Ia9N!@MPQPG2} zSfH-9(uIk*HneE1JIcH9Cz2X{uLrgXPrZvU&5^p=FTw&}0M< z1vAlJ60e9~ard8=H+_Jz9oyOa)%FoYE#~;FaMz~wEr)yL6{Pb>K}O~tb!y}u{M%wiv$SOUdWDk6%)-Sih~bW@FmedFE30cADi z=2gv`vW+h4*5y^qRmgY2%Y#t@#WE1RGMI4Cz*u;vgzI&!%9jnNs4%_uHH_`ZS)oUw zEEul^{=Vw@FxYn`dUoSe1e-JMJoC82YJYDcg#Sj;FP6H!ZXvPsNdq7X-9pVVKw5XSC4p!2>ukCo--GD$*4guLca?D~tD(UgM-a0Nl z9Sxkzg&q0}IXG4VEu6oM9}pH|=m^?7I>H~bEFDd`srM4;B)HqWv+L(SUrkP2C-!Lr ziJYA>3xd*^_C%guc>@lS@)3v=&VIY~*L~j25csaXNnxQOm&0fi1U$Y}FZHb;-IN_LTR+oyGAsrNd4o%l%-2G4|mPtbe4y&oRpI;r_I>r(2NoE|c;hqO#inua1yT9l^ei zZEmeq9Jx(w^UoFrhs(*mRmDy3w8vcDbX<#u zFc8}Io05btwVd2Jqcik81VSG2DW77RCoR{n5}aL((T0;hE-vG)PoHYTm*np9ZStZ( zMHY8Tke*aw=5lUD*+={ylOKO75SGfO`N<`#7%MjX?l;cudr9tfR`F5Fl6)_{#POW3 z5m&WwV#0s;c)>N6+LQLPN4)4m1_FUvyBF=vma9%}g5fdeY1#pTJOh>&b*J%{e4R2C zXj3O%45x?RshSMlsrm2~nYM%-=U4RHD!zE?6R+~NB5Wsqt#VTJ=rrmWTMX>QA&^5N zROuUuqJ60jA+X9%N%-psqTn&mZl8F7jN4Kg~Xz zrA8dbk~Oe~0{Cxx>jPS%xmEYnkHamG5zBCH&nVYJWXj z4YQKcZC@HGk=ap9oe1ItA1#j+-HH0y%^(k*xT0dN&Lil;Vz^}-1>gdEj>|tpULxll zxZ~>$+5G!)GR zpt4-3sFC7q3<-7NN?`{M_>avW-k5-6uoxW=H0+t(IFH+__HY^k=z1=FCOZ^pdg#^C zGbut-K@|lxkrJv-Me)ofJg4EmW6&wqLg)bf)TMhLq+Dp-xZrPvb_2D`xYxT|bd~ez z%4C8;C^j1Is^l$V9>rmv>JzAV(lzZrl6)>2SK(o$<&lio=6+MIuRDhY)#71szMTi7 zJBJEZ%Ee4kG+|@uJI13s(A-}c5I;42Bgt?xSaco>^T8!&SEEC4!dSS4L&WE+N2lUu zhD0`1-69!&WOMV+;q$<(I-qPj=KU~TVsyXsey7KO-WUmQc3a_d440}H-gc$k_SGx8 zehgn$)Hl%_l|3sil{d}=(B zUL&p627eWMk$i8BT8>3voj$oovM$f-N#Gz}M)qsC#=gvy#PIYZ?3 zsQrBm2O$CZELRAJ>zg>1h~j=XK`7tW+iVxCBtgWV=|R2ZK2(xpnpfgDTaML}|E~c2 z5^ijJiHcn3nFA_6!|g8ND|t))65-vC)n#L!tR0K6F^WKxWQU$HX4gdCvjy+UKk_?P zhzLK5QvP+$gEq?hd`|hBF@ZXtGoQWOfhY89a@;%4@BedHWF6$tuhZFY?KD-UZn}L5 zfpz+AvfQ>Cfy|0hbU?+c6~P%ns!o48Dx>!GGe}+q)gGvV@M`AAyKe{?i@M3J8#K~cnX0vT}ERu`MNQr&BKcag27$gkfeU0jIUZcFCIA^Br zF|54j{2Y7TD9*0kzvtf6;q%wbooJQFy!$zsBx1rCPR>qKcbj^B#Grs%?xMaGs3|+@71$ zi#OJVMhoTEyAQvtL#r^_@A>(VwKfgue4q}qXCQ$Q^=cyNwmCXkhToEZB}Wq3wk{NIAC_x{d*=A;cQVRPI& zZk3Qn;z1{^DstF_Hj2JV$95|q_WKX~iGF`6L^_ZZ^3KQBn$3`ODDaYY{y-N|5@z~e zF5m8*Gee z(?(?(e0D)&4eA;cesDED0^0WS%!r8K9Ht6bbk;x1bZ>)8L-e{mZ@(d0{Ae^>UMJ^7 z#91v4v{`=ITa!^4LTQ^lhnf7225G!?5S3m}BOE-o0PK25dLKay)e!`ZoPK zJ;|H*aZOf4BG8)M2|a zhC3FD(9?~l&n}0zwpDdb?|Ke~u`Ddd?lueB_!L?!_uRoL_G{Wi$GjRjr`^O11ryv& znZOa{hw_;nqZ`?#I_z<*yH9eyA@4B<|Dj`0;I4;O0$Q z<`?MHfrPc0ZEzRo9oh4-CVSG3D_=f{d5M`F;M@eDXES#`T$U`GuHE;1cHmc-bX&`{ zuk-7-e!7(q#MawTBS5(QHk5MN$hBKp#^X|Tvp`XIjfKTuM!b2K zKnXCc%Q|^i1A6_V)y~oRh>_KOVH4LQ;KI{po-b3s5&j&?trtjfP_+7p$c1}qb4z49aEJPOMCIti3SPS1>bJI*4~eB3l)#h zJXnYQ?N&v@t!qVzg(U2yXxvuwJzIKg?-7nM!dJO}4IRAz&)JrCkH-44y{13P$kI+K-wuZy zj%5iVM33der@)o(?Wi_T#Bct|crUq9mK?kL<;=(C)^`6k)IYuO@!wwf+eI<|c9Dcn zuSD}~yRM6w=k_;K+$8;xnrhJDe7~Q+wCQ9I7ubjWy`5M0N3}+%bYnq+qLs&zb4gy* z_b5n)I@#MXf75S}4C(1Iu+0g2U;pPjZw_d?S8Dc)gP$qc_Kxf?N~r>mj~L0j#!}A@ z?CpW;&E9svYBl9=vbC?s-{e>VJ-Lp89{xL?K#2h){Koh;=pT?C z5)Xk4!o)*Cldk2AzSn*0<-h9W2nD@U&k7bLXP*O+qWVwV zk9gmD5O&(7=rX{JkTipRjfFW>dL*telP8ClDD(O563I-DP1xrIs`v;p=H*oJkzYqV z)%k-m7^1^p!9T|SlgD3Qb_bHUFU%~$^j+i+*4SPz_GY`l!*N=uLu$Bhy_Nr;zzI3(v zMT5{5Z1CxIZ>BEq#^fh~DpqLY%8hyJsqp{-E?IaxDhI;LB9r}NWWC*X7HdHj%bXhC z^7whk-iIH5JY-l^WJ~K(MExQor&W4DC9cJI4=X~7ZXL(z?^6VE{#t&0F@+;+>6gp& zcTVZHwrfh!7lRVq{wV-`pO8D>VRhCTL8Pk@iZsH>@i)Ea!JA2 zYRHS)RNkJ;u+*torOAU+s$UVWl}AIy1|Oex)^i}TOezfwK1QU@4>ts5m|C!_HxZVk z5hTZ%t%eJR(}dOFhfpynKKzEdYslnlD%pED13X1b&0>{?+|VkU;WYGpf){6U^~YQA zW_=(S%V#oLRUH248+6 z1ImRJg_+o5*kG7TRPSfj1v-RFzQcsdXDSSVi0>c3pWOa;HG}tRJ-3YgZ{@-X0U3Kl zV`v5M3cfI1$%bO(yQDH2UpQCHO>)y2-FQOl_%>|vpUfql;UePiCsfC5H{8kZ76+gTkHTDf*!j&w zC7+dvP}DX}9em3J@jp6^hx^WH?imj}C6NxTVilQ06gDFzpl5xyBE;o3oGmCwza%>v ze`UV-7|G3Iv=|hWHLTM{h;bQyPmwRQGX%AwXBLRH2L@fv2OfZy_}?F${yAv?GsyZ6 zU?TWjcpLs=AtZe1mq9p3mn`^Yfl@6CnUhMrx}0j^d|jmC=@@CI6dP4s`zC=P3bR0z zz|SW#8Xr5`o=Lua4)X!E3AM#9Rdr-Z0{-JJ#r5)l*j*}|i>F0>M!o7alfYf&)Jpxc zEneV2Q@yDYxPei?4sI=u&3hUtt>_RMEu>OENh*}BCCli2|FIfu55I!~Vo+PE8%x3H z5&Kum6WnUiAGR9uY_aaE@oqAlmw#>!4qlIk>Id@u6TQq2TJ(fCccb(K#mcRcmM1*K zCa!2UJXW#2vL&w27PlqLM%xs0p;?IDj*wKC8WcK!%o$u>fAayF7;I};){Z~oV7xi+ zBY^$&L8l>azQ*`Z`!WG~dUizlVIj>hV;b&M>Z)0B$_=Us8u}PQLQOdAaz8!DSwNeh zimx0$V@`W^&IrC$Y(C-m#*+qPxuFy;ndozUV zRHRdS%{1ra%Q*S*wua$UwD&Y0f_VS+RRV-RK3HC|JRuZ*`V}N}c24p~RLy+TC zy$}UEx)mQwCV&!p59=yxRiZ?m_rDFXdaP2(Y!c~l4dGW7IeB4h;b6SyIm1yiSC z6{&c`g6Bp#7zGuny0k>$XVS6^7D%7o@~YnU6%nrmRlM)6J;7)5#AP9uvlW?--nNRB z9|U{KE+eeh6vy|r!4Nou`IwY&uyQ0D`zWk4K1ZkM?}WbynD^A$N>Z);pyB2 zdqgm5U0zfQ1(64~mvWE_P?~Q5pYT~Rs8DEk&KNaU|KS%Ull!`Q2bwMyv;ED@Clfo) z9VW&Ti^p;LX2BdG?dVZ^CZ1{7;ZxZc6q-B`lmKT!^QwQSi6neeGz_}i`{c(wdUtQh zoH3;}lF{?z_&6w!0*@swNbgd-=b z$fuaY03ZMG)R}g7_cXJ=;Git5+~3c{RhMxPRR9>vRXkc_A ze7C#*011-zg^^6tQ2U@F1m(cBnV3zoz%(@8Te3sVRV=01bSx3z;Tu+RhNiUKFS@j_ z;YGVOzpnM7xpOF>Tu-r|l=;p2j6OY}@xBssfe$<+0Z6iHA>qIqC&oil`%WyJ6xGX9 zR!EFKzC!S=#0YGQ8}v*rilRXah@(kDT z(MPt((00n@ES|`A>hQHtYF!z_hd#>RdzIqBy-2_3_h=UgU-nW<5)*ch78Z9{uWf$H z*CU4ssJEd`+BW0=J7?*YEWmn~ryoZ{598oL6nNC3j&~F%TE8njrx7d(U7Chqopcvk zJI`-}Zm@rIMCiWdWsd=%ufK!oV|BKlpJ3+MqYdjc!K*34xRNp=ac7yEW6agCu#vHH zpBA4h7~gqdE08d~y*~R&c_IeH>+AL4q3WS>jkupa$tj!hMX#oy`p-9lA=Lofr75^| zZOyfJU4i_lkY%Nooez>~g+IT3?dP&syu~7@NArXqTVH^|rebksG3+wnSB<&GDhJj)XJk07D-FKiu1)0&@bs*wo17i zyGy56189)thI>-UDgRhld>%THw}I3q%#6+Sfv2rmgK1FRvQOx&R!JJw=C1XSb~h|H zqWt^bhu5)C`k2`s03=0{KU5CE%rY=*z$j^YTU@~v4Li`d`GFyU0At5=a~W19&D%3J zfQh(|$}TuUb+Pr^Sys}r%VU`tj$raj{4#k$N7opxxLrTR2wXCxdnQV3kD!-_`xhMG z5-3S6TH@My^yGUbpY5be;>CSqd(ye#QRWslo%L_o9Wcx*-I9l!+lGSP*NWSfes1so zNm3w3Y|X6CT7<&=F;`-zFkCQ|Tot34M-9fk`zQw&_j$Jzs>RVVvIZw;m}`YLw7F4c zPs071@vt_QhlHFH5~9Cb+{+7ZHlUGPBX6mOUaVOrRFbY;UaIcmW6Hd-t}(h9pWXj+ zg#24V&wi}i!=gM)6 z+iGunk$LO6nbYlxy)NxlF&TqxaWJDACh2QVrrQ;xubDkk-zav{ad43jP@jp#3&lX2 zY8bj=VOh?8$QBLDevBbONwaKHy)L^pJf18^A(w|z#4o^!_@CfG9_4b^yO!D|isglM zUxzFE$&1!6<+bz5JsE-XCQJ5Q@pK7kyoV1UV*NnY?C!%&RB*CAf$KkLNuRA`SrY%r z*BBgqYD>dE=-Y|e@KdK&*dmX5T5x9BdAUx%eu%VM!3*EoKC>SnpsCfnjOO+iu|WJ8 zAn{qi!%Z+ZauW7#rrX_R-0py1^-335q=GWQSobKU1uoDvSg?^Y_tu!_4NvgQ~~o-Zi&XtY*8bmnMtc+%}JqOZ?*a2{=rcy~zn zTDzOviK6ooDLL@2vNGFB>EZBs0$)`a>JJ|k8?09{BFvMSwGY&6y?d`XTYbpA5 z_7=Bnt7K>Yoz6E+qQKGIoA2w2_rQ%lXnnTr!b?fGseyWymn3}VK-=~QVa_P(>Q6MLJ~H8qWNHAy-{_Xc?y?yt<3IgX{o7jDWBEg-Y9c@=ww@1{m}k$ zeox7`UouN)p1u3i2lH?iJz1(f7m3;CkyVn93)Q@!_9|<(`&Qrj?3pWP>xw(CxbhcDqhgU|LGpONCLc<7i5f2fq3j(Rn5r+FQYjQ4Nkr*=+o|xsgVPr(Wz|I)xjxW3iNBwpiMO z^kk-;a?5$TDOB1;<)7?uSul2f7gTWS+10)*eY3&-2No7zBnmD-wqz1#$cT2PV7e%d z?9Q*<+uI(J>%vzV!kZNm8&2wsRWg1(e6;s0tUS^4r}VSEBhBFVJV9w|JKdiCgy5|> zbNck>!D)UEs=lD0;9~$P`S?iOLc?r-BD=Fy7)bXoVl}ezjq-IVRcpr-DYtK$D0&vn z5~?b^!%c0Vc7Rj4-q~6gwS!_toD{p%n-&80jE2b^08HbYFLhNFn0d@m#;zxb9r2m1 zcUCc_>@6*z8(F3FdtJfIlxpj))Tn&ZO%HY*@kel6S^BQolI8OG}nDPtsbA$2-t09XB@m; z_{gjA(fI3`q=884@bGh+3(Sfn4k`AjPW9%*TsU%mg-lRV_uUm~ADNk%5t5E-$DXCP zz~1e+hnGNqD-<~wEl&UpcNWB-iHUuPI9VqqM4lrp+`Y(b6}lb^$9pZe-8mEC@BF>> z9JSLWsj)30F;Sdpa%xDLx}+ah-Yqt*C075Nx9phxSSzJlV==@#6(gB&;Uc+ zT>XoFgvwTuQAva+>5$fz=|@OxI<-}#;JjGhH22;Xr`zgGVf_ap#LD;yU$TO>p1->d z%`S5VvXuxSDZb$`F@SeP|Lg@A(>JgO;8`B6Jd)e+uImQC!8uy2X7X}Ct@Ss2^7<5{ z6cJC_f4`hduSyAa5`&T)uocNeT~uDm6_^*t4-?)|bGZ_c=N?#vW-r-OTbFmFZST zzI?>f#a#GwG?q{x8VD4sSZH$pxw~QEymmJ)-Z|Vsop%}@35r<20Pu!0KNGX>FG~)u z#=SnXJNm@Isw;(l__!=<5)^Vwqz@xOeQ@pp9P`Z5O3jOkv>xqvfKWltDjS0y8mZK6{Q@Og;B^%jRdTx%X_G~Ch^vTYT z@m$I?thZQ1$tPxF<8j=#H1y5lTGu z!}{#*&SGfm(`g;6tM1;~TTZ6;ka%H@2EPi0ikOJk1qGL#m;2ZxB_#oC-Vy(?y;mN! zbS!sv`uZDlEFCsL)-HNJZ0o@W%xwQTcKwuW*=Lp<^H(?ZB;*EqFR z)-MM~h6uFex3|2Y*xU&1$N!S0>t9uVsLxHGBkA*Mwp49+s4yeK*J&2%KDqkrlE>&g zV549)Z)0I$(UXOn^BO#fZD2O)U%6sG+L~)hD^O_jfb67+;;nVKD0CedNP*@g;(oHM zQ`q8e_?vj1O3%=KyXlm3ww1K+T;+-6B&l@FabLa=$St|OzuC@aLcnssil2`cP$0(d z_lVPpiimj4mx~X9f{wpn+u2O{`A})Y9uG^lAd-}gKuuF}}kVu7z41N~n zH4mYO4{uGm??|B^V))N6feHHSvhMXfw# zb2M~qB*m!;QCy#OV#)Rc<%PN(&|xIU?m3+f=<;uNd-C*Ro=BB+E3uu^U4yJF0QDvk zUM)v4=p;`^FS;w8d4rQ3O|bb?QnZS)8yfxNKi>cOOY)adWQCMLM)|rxjFNF`YAOQJ z5^}PJPuGY6G4TBkjJ5OkW?LyXxGJV=)W7RVCDs%4ka>8{;En6xb?MpEqZFt^Dg1U6*{%-iKdhr!NlW}$mSz@}J<0b((GU%EqV}x=H z4D08EOk02%^XB#Idpw0rf?w5pNuHP8Cw!NKLAlB7>W=sMC>B;^ExmehK)}3o{fMGFjE#ywR{2&q6Hl zaQcCEgZ!A$8J6z9ODrw7X#0OF{uWl{uL}UIcxBUHC)XE01!99wAWY)8LJ7eq`<5Jr z$=)~jOvOS30w1laT^@hTwrr!!(K|Z_&Mwi+)lL8ttI}9Gw<>`S-Yo< zF`_zoYW@Sz$N-`6l$S-Fi>Z??#{S2=s@0a5`$A2FML}&X8^MCj{*7Ck6E}c^(qSC2 zo35K(w^JX^rmzh-wShI*NAnZ;SOXiCg$|vZ;H4knylh~7w_eAL11 zYu|u^!jb2j9dUw8M!kfqYW847*;KHAYt>%{9a-@`ple+l@E(kEb?TNqeS1A~w2L-< z_VnqRpZ97q5~H-muia?ZPb<4deEd%x%88hMzRniu7(5CZ%wsgl%H-aXa|x#gW;&-wj3+I(>h~bL<<0Y#^Aju9k0YvKZg!o|e_z%&2p#zLF}hb2;Hs#N*L!%+w}yJW4` z3{!2(R~9`tmRyTH3w1kz;ovP3%-L==WfA6T<14Zt<@?_?bkif(vDN44`35lsq!W3a z>dzD#!FxO|=xV+6V1D5Ll;qJ^7~gRB=FxZmy9jEb>KLPl`0on(4C5Kaym0%H;BY8S z77F{qwxX5N^&>;e>Uyi$kd}eL(*#B$!4GsBQDE?l0u(wpA;C)uea@Kx-Bfau1{b5D zr)IQ|mugAV)KJQ>zr|kxH~(lHDUvg4>gwuxt%dfhu{Qn`ok0n#o)f=FB)p|y11Q*6 z6yy^c@y@+_q|~$%S6E0y^fC;UB4LZr0K z*V0r#;5*$)@brGzdzggzL5)F?p3!(Fmzx0rOllgG=26jDxPa;3UE6%#L3kwITJR;j zx|qK1;*odF`tA|#OaAn{f^v_RxJg_-AS_N4;0c(*Of16`qA%Q^uLRMMjfrq@G+k<2 zA_?k%YqM*p!|9b2RU1Xb9qX+`ng{QPkG}Z608Hv3S9*Wu!MlY6~Gv*T>~*_N0KLNgGN^y#?CkV6-QFEnyf~ z*g^S`Q3sV(RB+?uPgE4Nu)2)v)qR#Sy$NgB8HNs|T|hjK#0!px53hYNyg3c#mZ)UWpt7*|(v)sps%i+bi(SWU<198^_^&NiBp=3_f$2g}0{Q|tE{1fk1 z`u!*fw?FMub5U9)!}_(SXv)?!s&)-|J+0~n5*ta1Rs_YhZG1*%uxk2dX$3xm})rezbVoMUbg zI&=wITduHv4R#FUb<@u*1JtMCxK79uKP2J-6&sxvC zqXYy{Z0eRMB5Yj3llW&Er-iW5cpY+ZQ-k4+tj^Z(N76U1U3>8bnb~)bmEu(~jcR%8 zu(t`du&wg6j#^|&qJEarvxRqI|EJU|zJiyxeFG~h*cu>Mz&*_Z0%H7u^b?e275za@ zuW88aGHtN_2Q|0iK_L)uwzVKy!Q--08Tp*EiF7S37X)1;&6y(Yw!E0uu10@^HKa2! zH?OvwGy|=5PMgiJ6XxlFa8@K#_8jj=Hd4Qe*IGaI$3-^=-}&r4Ul*E??j+p2eSpdAEwE=esXy7*X3$d7F0Em^LZLa=f3lrW&<{+^r9C+v(5^qe6s+`& zRE&;@Y0}2~Fz0yH98GCMc`mdurh8o_7)WMf2O8uQ^w|+w^W9>(EQDRzMW<|Mo2S&5 z_DbhCY0~;*;_zH#!&a3*2V}0p4;n>4QWgrHD~Sx|n%J<-lj#$1=`>jm>W4pKG&e`c zO*_A`s6}5123HM&3}eg|%55tjZ7#Tk#K66ZoA(yVeO`gKxinW27W@UccnUxX8^qjM z>FQ5QC;(YIDR!4>l_>bKMz7HN8cCDbvg{cHp`zv~V zNQih{INf0i=qzG)H#*<)0PE^AFt8reh^Dm953M6)Bw)_qY4qmw;q$Ql{NK*-2QJI` zjAz5bG)o~=j*~Kt1scVTckd>exnFl%aNl*R!^1Y(gtyNlcd!YPR-&zH&`c?}gq^v};ml%AUId|CE4#TA#ciQuhhi#djun zREED>g$p8#JnE0hcuwv|On}Fs*C5tA_|qo}e~A~ZC9(B>3p()ctC4M(NPzR2TLF{KBxbgi>?1Fw?Dw7##VOhiolf4=&knkM8;r`_@)3dj)!41%4&fQ@S=z;)T+ zjp5wbF46Y!MZz3>q!M+uD-zIrj|6ZKqKlB9%$-$}`0t+W+qYS@TyEUw{x^eLi--UI zW%-}|bh>|q7}RwAseZ^ubN!|QQK|sa=Kj-@`jIKGCIxK!qMKw2L{;}Sqgt{gKRP_s zciq>VxLdyeRBHivRVLt4eKW@cG{isBt%WgHw!_x)hZp;vI$UgZ6h>%=3v1YI$d(Kn zXWn8vkXUkJvGqnBRenzfOBfW-C4Js|%;LK^2OC5R-DfX(n?^S1Nm}v1{;E=tYD4iT z+kT)bw!`~kYKDV!)(+W~7>1+O-SIgQRIImJ*{B`oihve&wu{d2dIYF_>f&p5M@O*J zz6hezGz&4`v$ce_RC-gY|6a6xMG9roY^An;3J;&aTJpw0NB!i8m>fVKK)4AF|E3xv z=3?+=|3|<(SDOeHB@&XGRKo8PZm|DFMTJ6p$f9d`rn!CtP`i?DOGbn;q^D8`1+t$L zDq^Rg_lMy>lN`Xg%tPc?mnQhZ2P#{9s1r>f4tFQ}2F>N#8WODW|IO_M8k0}a^HE#8 zJk*cuCv`N=$-=A}dTc9z4~?Pvp{C}~$!rUCJJVS2rFA0f=AkD+oF@a-Sz|6(uK+!!)S zv}iaa{a!7BYm|Ekg|Q*%30-OexYJ^esDi9?LAW? z=NnB*?LUuWO1_)Yir6~{D4{+%FRO?GNUovx=&lVYP`81Y4_{c0hjPU@or-br%e0$+&S$?hFT^j zA%KfXC^Wb!@!ivk*SzW82Vt8!Yc(+KDHQETzIXAAv{Jvmc;IwiWAzuC^T52jvn496 z{d$GT?CVbjuVHXQ_X zJYRPq5IXXPzx^Emdmblsq8g1Smaezo);IbT9uexe{rFcp?SrNjX!hxl4Ox8 zy2JyOL5m@fcoi+p&2c*YCIjHh4(8V$^xq>aAxYwP4vqQbbt_1{Lqu!u2T>E zsK#Sd>6q|i5U7d=?Jms|S<@>kBMG|-NP$2+V0|dcgJ6HXrCu8`0nU%Xtc3z-C!KT~4j z@LTY>_aQv~(xkt9gTIt%M5S9?VtDx3f<*m2fZA&*L6(&{a{5n^u1W9Ag}u`R=iScy zjW%emMcnK`c~DP^EFTAgKU8>$Y%8Bfg(6Sc5TCo>ETrCum1r50@7P%js7?uOt1Z}c zS{>3kOTt*o2z8=^j3 znf`Q-tplGwYu!jSa|%(J?TK4L&`Y#v+~B*N8S@e{DL;`+nMd`wxs~-$yk1wsm9DH^ z-_m~oytbDQIzYxDy-IHCP55M?z3kn-K!hL~K?pRPb zZ?2ycb)(`&1t^*drXP)sE6}~)FO`9<++OtQvBCTS!p z6_<{iIXFnF1RduzeDL69SlFwX6??}luJ#KU(pjAtETb|Yf;hm+s`c<;FwhM^2cH+a z*!P{~!J|i$t)Fo?o;OU3KWv7a$x|2#uaYMz6fnMBYp!`Uv-Z?62=b>io_BIOwP$Vf zsxgOj73~sKr;4Hdx=Vu?lcn2G20;EdY9?Pa9ydD_jZY)&?%P@my?Eh5&F5Flk}@Z> z45a8w)(cKfNmewpg~ePHelzNWG!vfYqt@R*y|lZ8u8zXrYZhp>xB3;gL0n$zXjf1+ zqj7)Br0bh3=uj=7yvmy0Y)by~gfRbeW*JtQA`ovCh_;>qz}qQ*k6I9?X4=JuyQy~h zvpBMJoQ$v0;I8Sc@u`)o>2D6@qssnZiguOe#&(xb7B+oxOnxSnUb>reqr8AD8;~5W!Zc-dJy#{g8C*`SVD1z(+DmB> zS>5jIcP?kb+*9lCFRAoD(ikc--P%>I{M%NY_4Jd&nQ-~igw2j~M=T}UqTLEH(_6l| z4;X=`4w2?W0KKz+BiI;ShoUD?qV(_m~D1 zmgUYicj7^Kl9!C9+wtssv~uxlJXK8!0neO0cTwf`oJxtFI?Mgg$``}Bd9*BAXKddd zcRY&av{7d-O?&+$Mra77hax`t|4PpvzeG5bJIFJqV;nGHay>lR(_(TPfIe&wmZGq%U&>AWI7dWMMa z#Unn@&s~=cPTyPr6cd_YjJ7Bq(JW0rbnDiw*tm2E&|Yfk>Ah{KWy#3NX#iOcmN8{A zuI1jSlRIZIHeM^owie2GD4n*?4++bizIl*T!lX?jTW-l7QcTawGkHaoN6aMsP4zr| z^ZQxSrVVaL6yo6NyPze`#pNkwsoscqs|D|=#^P1?a{_`duAWEpanPq16lO~t7Z=2} z&4brTYe5fYFF0~@9bk*?)Ys4$onI2I^+9WbU>S*j-R{rj7r zhl9D9I8@Z?<_RBc+Ii#Y>vqH4d*G}us5v};xi3l+tljA68DJgcpF;2r92zpv($qZE zSDR|zv3C6QcvoPq;OA!qb||`>G`;mu{i-M0S2kf&9p~iecreB<;6@qCm&+Z1+3U~b zyCcyh_NR$()!wN_vEMbTfa5cNjdbP4*srkg@NO36W2aV3sRH&+^;j7P>fQvyisO6s zIE-%pF3{6xnx0!f7nLEqa~AQtdBOiA&s+tAa#scC1DR(Y-#=&$3&N1>;LPZ-D@Bzt z!!``qJkgupg;cZ2>1X~GDd&WR)6e?xFi#1b6YP<0M==BDyJAC{7Gf@z2puLRKw~J_ zl0u0&4JWlUH^19w|LYp1{Pk;3=E>zfngsuTD1u6D`v4^&$Da2Cqwo4l;p$CjwPLd& z;A%5^&u^`%Wmyks?e%07euXHoc0Fy?BD0nR9>s`ZjXSE|^Lj#f(FZ(2@EwJ@fm)X$ zio180-L&b$Q$q4^x#?t>Hs(~cx_%^`Hg3g1i<4=WI(=O7$zK11Cl2>Ht>mUr z#}mAku4#c3HlCxd@eL>MN<3{k^n9?Oep6QQisfn85<(Plb)YLHQ*;2tZ_fkT?-gna zqDNl_A~yud#gi}(?onRV{k1^tX>*B1WVvZVYUCQT>J&6{$X`%cL`^r!t_-D2H${S()>YF}C~t z!otE#=%3{bb6Q`ro0GvuC_bK#tVQK>0V`&(tuF$s8e@Taf|dXSg%v~7A?&g$!^Bij z6~pcGGMiNFKeTvYP+$z$?9(C=bc^R)?;aubQ=js`A zKLD~i@(b|6)dp<6*T5tN7y1$@>+2=&F> z$v|6`o}(uhjo&^+VJ#URT`DsWp_H$;RA*5QZT(P}eQ?KP!(Q^qyC&K6=OFx+MscQ7 z-?U>dy>2%Eos~=cemwz?RM{h@=+gRJVVCwmP<0nBU2NcWSQLler4!q(-Mue<5SJzX zfV<7oEx5K!0X|-QR!lkdc6lW4jM{ z(8erT=pB}->tt}clfZk90rXbvy0yBRmck`ljN32&I- z_+km6Ay(Q(0>IR{_Ul!7mo>Gu{Qwtp6u1FH&M72Pw1WXH<2M|lHM^5QsXt7s;cmUY|)WSHWeBmcm#~qU0myPXy@zmV>7Gs8sJ1vYa z79t#278g!(agzH0h*-J(JVB(0PVQHEsdM`TmPc6;G7wDxVTmL0BC6!P51-kP!GA|o`x6p2vTL2Q9MT>@EOom zB{H1+9G(ICs)*=K+F`_uD1-ZExCZo%mhXj3Hhc2hs?_dr#uKReP4rB3^fzsYc4ZFd za>GtNM6i=EJPSJI(Hq$Xzmt*BcOcz>krWEfAyQgUVnH_=seY`#eo0D7`%>Jzw|CD; zo3hKF3IJNurLwT2nkw&3!e_MLZyXN@p)qhLgR;c7rv!G^ckYQ5)1c1bPE$&GYK~hU zZ!{EygblQ5<0B%c=a`M`Z#Dkt0XcU;PG_s@MPYcsPV|FiUxoU)eux>^A;q-qD5)mG zR6D8#3sqi(?K?irGaG#X1KgHKY5LhCBO`O*Y6oBg(=HGNle^jCP|*j$uU_XH z!v(*RzySG%Fyq22W7kU5{>s|ihiC$Qoe6IG1-3Hu_4OUVy`VuF0~{6Zg#7`oKo1%9 zE<(dnc!uglSM(k~kdyt>r%w>KO9%WwM@J{%{rmTUpaBm|xrYh5=m7`lTh$LJ!(S+D zQoi^WARCbMX7$R#IPfPLRuG5c7yi=RBfRJ?{^ zNU#E)F|i;NALZ-40Al$du{|@t+fkF``n9Rn6yW`FV&CuNYZO)1)7C&a{4GPiE&B7~ zHU>bB{Q|Knnfnfbhx;eLvAo-ob4}8YSe9OX?YY+(Zk9APS4%HaXo94f{}+4@FTgIF zAILW&Ba$m90Sb5{pwGTLO{=po8M_hMsF!{rgth6LqsdKAoV$B(8(d9~Z<+a$`4P-s z@}GXG>7KP3jB~x1g3VFsDv(`#q=GaKPBnKL`r6i#$Y%e)T~$Xx!%?IE`t|}J;q3nt z!M2|*Fjmgxn}pXvo$dsu+Hl_z9*C>K_;-5|Iqv4X;-UYEv6hF4OQm6l3;my*_?&R0 zdC_%VlK+3n2kHRr%p2UVa`H5)5$7^5cqHH{ZX@Bye-C>>4Mc09bkeiTg|8p+#jR19ZH6w_Ibjge?5mkrtHNvxClyDGO|p?S-P^>Ylri! z*gOjGFyi(b0@%5X%HhIwMC8BOIc0;P6t_{F%Y#(H{wqCB$>zWpA8_wAH8uVG^Fhh3 zWSFtqWqn3V(zJFjn$alI9N5tstnj0UW1gJ5w*dbn_<`sj+YgW~XMGw=&crz--(fWB zO>J-^_yk;g_5Ygs5_qV-_y0kq1(Bi%*_Dit>=Y`JB}-(jBqGK(w!u}h6q0P&wb%wD zvTvi0Le{JkW9;iN_H7vBf2Pmp`+xn;>vd=5-Z}T&bDr~@bIU7D!VS%n8R~JL0Q=|f}tmyr^-%NPQmlk^JhHW+}vV|6XN2=Y=niY<-P}WESDMG zb6?5i6{hzCAoK8jA<2^fYzCs)wPEi9!^$MTf8rheCb+&5TdREc>em-W*4Ea@>e}IV z)i2h%doWhZ{TS%V$sD~wnS;&VwH3psyphkx;u8~16B83{_k(wF%yH2P00z8HQFKb} z(Wj4OoEUIUkuy-`;=`tsEA)MR$%nxTF(JCCdD|yiGAk>~7j|JEVwr@KIo@n2am_wN zQ=~ti+2AB-=UmS>r-qrzw1BPoEfGG+jx-7I z%j?OPgYKR#k7rAZA{~qevurFi>FffZT*Y(=S}s0&y%VVpU@Hv_NT;?x!r3qY?)|)? z535$F4irHnl@zS954R7$d|4B$OyS0+wyiozX8f=6b92ple|g<=D>malBvO?2hDdZg z&B5X5yOSxRn=I55&HHoI$PfktW(UJv9`{K8pN(Ix-dHkAdg*Ow_|9!3H%52Gn*Mj4 zOQwIRDu7GBEw%XZwAOn`sKdo9UsU+u(aCIREFsM3oy&8o3T(_&@h=UVvD+ispBAG& zpS@P7O}%G6@H;~B;9%eNczwWnZVdL2HY~`3x2J+us5147Hr+aI!@kU#ej4$Ry_Wm; z2dp)cVfyp>s@1%A%PEQry~_=F)-iPJsNF;MtGri)Azho4cC{yOTll_?y3FoDP3@-v zyX8E!?RBr^QEJk#5)|Bz7J$Qf!HJW}KhhHu$!a;TUIo(eRY*%TFT?@<>$83yD95>^ z(EWVkzNIBo1zuu*7l-8-nXDcT2~iK8@jM+QR)H_P>o4>mK?T@rj`CYtls~_ri> zyI}B?O&h2~7I*7_$Uhl)%+SEVwY;@o1~cWF=Yl=dt;C1)Ak08y6y}`2bKD3v(m-5H zOx|XiI9U9Da*%AYvi=Dr*8p?N#LtQ3@3`t(g|j_}B*esW3qVyeJ8c$3a!1I(hN!>~ zH3ZhA#jg(Z8DHH?<(RBPwBPOaxDLUhbX^Z-yu0Z3CA_Ww0h+lN4<6|Fcg?=Y8&vm& zhFjy@=o<n0*#vwsMk%vGz>_mwhv%C;390Fj+6abGE6*_qYV4}h+| zfC>*{S$QiZAtB+okY6-lVuBkZ@rO>2N`bPoLD?oILpV@+;adnAyhm{~Z@^(0nXyde zC1-t_KO`i~4DAl(Z^rk_R@xMK4ONrRLp?u2XNH37Cv{rw zB(K#%<0*S)4^IDWRBU&Ih?U@N0lN+uXZ#jmC8IO8dG$g(zU$iLH4 z8e!e^8{TF1EzcwyC+FytJ8ck&ew_Bv57<`G1IH!(wB}9h`QTQg*??$;sFHl&`va$> z#GPJ;M=uXfx#ho!UY_Tc$?SqyTx-%|4QiE<$v%%K>gsWZT~!Yz40PkCx$9MCpOTxl zfBZm&BuvV#r;3&Jcj-&+_vXAgpj&CLo%JufUt|tXPufo1;WMi_R`1vEKKiHhJmRZ| zwCmWJ-{1x$BTFrPzNv&<0h=n4X#BChsf_2@{`n1g(d4_i1eXc}Dg(qS(N?l@EkYOw zV`#-W0Mumc?k;U;WJDW{OgxIG0q(9sJ$2V9(LFD2>%HBB^U6M~AU5mwcl;V(K^9=q z5KvG!_uGw5+Obb;wI%YLkNup1f2DVkpLbHxJjwZ`#XzXsaDVGr$z=oK3%|*(&n~JC z*KjT~@w_=F^YkIqmwT_eE?2I09CPIN3HrKH3_ijCszP9^L2ba^v(422T?Am{l54f& z^_h{YYb+)~*N4XucUHHs8BIzTL#J#QG8qr~IapOlkR6belQzToBUVdJeyEhOgtBqw zZDG5}5sDIU5BVA9w8a&Fa2R%sRqJ=Pi^W>^#15o??hVA?v_0WE`G1~+F>0FYP@4hu zthaPBqjJ)D249yeTqqaL_!@oC!bBl{{8;IN_)U>e;U8HE#ea_MPJw77d9*;NC(-Rx> zcjDrCezq|bHIS;KFL**Z`lh?do91tE1sY7(Ep(RI7XLjV}r zJ5F9|E6E3nl{s9IO+X^t3P9P1A7dA}0Ee@vA1$!KT7w0pZt^c6?7?B1tE;Q7HH3FU z#{gsq&21<+Nyfe$rC#b!c8^I)dW}b5t$g7?47={)0%0(*`M}c6uYKwiu(?{+`mj0i zxYuPAPd0fGc}L4Gm1{7@1+Fu{Vhyb=gcd7{Rce~ORq{;0>dVcQ$^%XcrT7ops++wf zD(t9<@W&+c<|#e^mVk>WmI?)7(ohu``%-kiw<>YcrqYvbAvG5A#JN~GDRE^$I1B-* zPVYryM#%EAG(_9#i5g^~9RC5_3Vef2FpsIE&sXF6YmyPQc9&Isp_FCY>Gk^#J6sCZ zNcK9NE=;a6a%5XUJoSWx3gvf(=5*frpPB8jkL3a)cys0`k*CKz z3iM}>p;cXHU3K@uE2luGRsRiT(dtD9uNp#np+$usOcO}P>IsnD^O4$f07$$UqRv8( zH|DyNRbCGdTb>Nc1zt!kB~1K>K>Xwr+V9nel0>x)`+&F)JBy=i5ih@L08HO}RgLZ; ze!#ikUi^|GA6z1Yl^#~jZM@w#_~wl@x|*R;`O66Thr-o^6ClHcvBKH4z@N?*6=|v# z_qsJqysv+N!upglSn4O0zL4o)_;QyT&n?TFj3z8;OlZ{BV%3{NCWQJ&yoSsEkK-nl zvdD*NdGeJYjKHmU4aQ(%I`EYLl!A6yzH&0pTlJn^JG3z1oW4GL=@WRC`?(zOER%FK zQ??>BUa(z*n09g<_l|j;@gbJbc`Mp9k1i9^X3jY_@Vm_KbH!R8S>)iEf^|)Ltbv$P ziqST79HvD$$U|_J#Lp{O%XGbloK@0PtzIX~Gy{j9k*U?SHTS+$h0xv{aU@?bN9p;Z z2eU$ERx0vfKlIfA-j9nD10X6!34>(^6t=}jU15ZU{}o0NvwZ(w7==FFisp?1<0F)E zziqlLQ3r^zaj-saw@ID9qRpGG(p6%Si{3x2a+qXaBZ=a7O%~;F*NzHEh4SZ{V#|b^-z&3-l*s z5GUwUZPb<+zh>M(2Lk3Z9dD`(R(K%JM7nG8C=93y?~d1zvnT6W|L#0$NnR|+KUiM% znjbs^X0+Rh=~k=1_VCI6cc+AE@-O+xtf;ORr)cu(e zym-U`OA3z77TzjaO-AaO=jY3UTD@3FPfVZH+~zs<{;)L+b_S-cdBgZWSK`yD1TQ6S z*%8Ls(`R0L9qq{5G3_;LFO1J0~k^VxU^?&frg}M7^?}lwC+Ygm#){ z$|X^4P~LpprpOsLN|o4&!S@9k1Vy*Vqmn;a-<#ieNH9(*ER;|m>fkWdJSKgCty;TX zzT-`%RmF>Il6tP6phxjv8+<;zI{x|Rr(!uRBggwgp-Ytu<#|J8?PA|058pwL6-RyZ zNv>qRJhjL-qt`T9Tx`Eog;?L$;z&wFb$N8TO-y<7b^a;gS9&?n&~?9sfmzP~8s0l&|ko5_5Q!EPL!7AxiJf?gvG&9`CtO>y5;{ zF14J1;S-!q(_KXmE~z;L_Uwf1Liai0LdcUza)eDqS<$4)A!)Hv8YmY?jAiFht-1JJ z9$|sM&zzS;Wb~01vzHKT%l#*OLU?ZE$1mpMekl}tEZVhUV(aUz+1SXvjKS^;g>6RB z1fmXOhd!6UE)nUdC*2&P2B1+vsX>jk1Ej?=Ke~nv>0qmhu+b#XzJVGAy1Ye}{AvFYr-#s)wlSne@Fa&un<(q3fOc5DXc%(-MTftnv(9ngT z6{Hn=yrIH{fTreGo4>YX`5t{<;qiF|_aCmgQ2Du}8-?LVUyxq;&%RPP43qz8pl(6H zojZES*v`(*y4k|4)1GK!V8XhP-Wi2kY)Yn;CvFupGQIEaTLmB$J8~qet4`ED+83Fu z>x`8STw*w~CD5Ra;-XA6C zi8l31+9>2ABmL>O)F1qzACg=2FgQY?x)BtCuC=foO!L; z=M3gl`SaIi`~q_Z9^IVpZz4*XY6XxK2eF6@$pPh*{k^Tc-63SjZrhoXPaBRBkbZ~g zL&-R#*y;Tf=)Use-VL?b1=883YH;#54YWAVA?2QY< z&ip=pzs21lg$7|tXMmpcsQ%F<=V%pn<9VA9>1(iMDF!?~K{Bzm_0IhAvMH^GXnnQB zANlRB)mW?zcp2ZpjBngkw3V8i`W0(vX?dA^WI?a6@l8*DRHs?H78A3!(5cmpWPA44 zn#PYEv_M7;(;erV4NKdguE6~|kDH&?zfje*dXDqKH8dbYjFylrRf1EIS*cmBzppPB zY#UPu8?54;J*`CCXtji`L~Aq_5+^xF1s6O1S@K<-iRP0y-R&$xKYDZHZzn#yIS?MTfnOEF7(KL4y|KhkwRQv#e z?DiQ+|Hg@WwRdwPYWW!g0t^wojDpGIPAH2Mp2lamk%4Sk$_QXaKZNV=wRNR3mZv+! zFlYI#WxT!4PN6N6T48X@kF6^*&OaZy3_h~gy)PBK?4t}%JcW&!aVm-jWV4tpQ=lS3 zBZPRP+ulG9eK8nB?70CJCZ@Z71q<@mbGBy8`$v?^=%%X}PUg*9Gt@5rcFiZMR^D40 z`OO~FOHr5`TsNiy8!QK>cEcH-Uayj~e zUp}>4aVV#~D9KvJ1_8$F{0-_()yd1;N_d|nXt~RKvHkaEmTsHXK1wx~hYsl>|C~wW zl>2Oj-q~N=pN3{ceKq$z83%ohNUmSfdYJKJ`re7hyT`tB-Z6CN(2kK&NFN|AuuM) zC#^-j3oPZQ%O*ZWxHq?k^sJ0QNcE#EYQBKYXcT2;X2$IJPFw@uO$2Vm=kxU23+C-9 zBi`wkZyk|TkMR# zreB0zx?s7JQNVSrl7T|vrUmbI zzu7}}BPydE)uLO^*f#r7_2T&&jCRv+&IqjjnmxWe_=z6%w$nF#a<%f+_VatDae+5a zy?(Vg_)WB^tTi<;$tAEL+#IqUwhV43duhyB85w>4^bA)EkOKxO3pQ=*`KCJ3NpWBr zD_EAP*kMgN>L(MOvP5w)0Gh-IPRWGv@kfxhNNiq%;;3S86>9>2(^{8zU@aGHh9W|OuNQ6{z+-5Neq0l7CVN^AK>v(uLD zfz-nc@P}TqYF;~GYi^(L^X@Z3XPGX^h^by3Mtgb{(XJaFEXtL>ot!S)xqRy~2jo$G zo)j9;G3Ul>c4fpDeMyVd4h!iy5g#b6hTjEbVuh+Tdd%e&qZ)mb*N zT<79tRO(_egGII)MPPG5F2G^=mH>PAlNzuW$0H{~X<~YFQ$(HA-k?xx-!{D>+wuG# zT(7L`rHt!7_;TkQ;lUFE*wLP2dpbp9nwxqcu zoU5H3FOr^&$bX%<^^(VPfYh(>>*i$2BiV!I*_)cm1my6}Q!`SvL}nrNq3dI%(Fh1@ z;2Aaf!(4f7&TF&pqkUwTAKd2K63qLhiB+W@Z2@9u;&hq7@pHjLn!7jTXVt3~<^{QP zv^VTi80OZkZ}s|7k#FunYlqp`&T*eFzWf#G-j-f$v~Or^xJWMcUi|YBU;;k@=1a^$ zy_)M-5ZAeLY&`s{Z+VpB!oy=d?im_R{P-GVKgV(%i9o#^CXH6;3xnAudb~Mkzi-d9 z^-j{<3`;{Ht77xyYOM?X9|u6xq0U45Hq%N(hHsb&u9DyxXLJ>aDyA?e+ThTzyM$T5b7^Hz6eW&67wbZHfBN zAv_+RPb}}V;C z=i<%qix*=+GKMYQSMpjk5EK*~QhzLCEQv;0w~-vvl95v<{q8uUBoUqMLDsdsi+ zrmw@bjJmpLbAvQr4WXnb|4Uufec4TlWm0sZaz*&|%oEJZ@0rzGq!m1pRbNwT!@E;J%yvru|@}MZX22F3XMycVx_Zr=e}o!3_KB zE7}$>=`rytiGDDf#2iW<`ZE@8By5g;h6;|MPEQwi{O%`NApWo!@TvO$$vvRp-*yDY z+A_FgE2X{#%b=W`uoZj=SQ9yqS8xVv!Tj1~r!peix#_EwCYB*ET6ssv|3un;D5@aH ziuD)TVorSTowjglUWw|F^8Xx%LB9i2ADHwcX=9f>2Q`23GznSs+mDdGLW!aM{dSx? zizF%|=UYYSoRjLe+S08GoS)UyoT4Os6A*CU@9EO^9+b1Q-}oSov#_TzqJL`LGs|{o zxmrhv8r{`4n9`)8_SVR$_{pzR06skO@`Do1(5tcmmDga51=1cj=G$abCw0yMwOhMFh6 z(9kFWEs?M_t7fFhmi;k;x0T6Zk^q_6vcJE7bvvCt3q>Lw{X?hL3d#Q1y0hcFge&}J zt<=PtH0Q+u-sH1#jNd$!^!>+d0m(-m5<)zi{(+B8 zJ4#TXXRQ#)?quYF=$x$l$#<$zdRgs~(2D(usokuMSZ~GyvGKXXlgi0;92>XzzL!bnZ=Yu=p-aI zKB~}KZZEGMKt_nFZ@gW~>mq-Dk&KE;6ClpmC`00jjz^}#`UOffHA6KqWVM(HvntQT zfZp*-IXw?5OlO7obai!O12cRsQaF;#5k^L_A8jEQr6xB=34z-wq_a&!u+*i$LN@FQ zw>8lVEW8FDI5h_2w6|ZsdHwLJ-(A^Za`7P>N}cemS1^O@HkTx&&8_UhefX)AO6zrK z7fxAaS1|A>5|^k@>f9*lpipe3jiY`;cSDqP#bLOY;7Z!9hv)h$TkI zi(LHqaL4<S`Zja%mDO6I`Q$^M8~7YYBt%_pPi*o-{adS{gf~<9}2n@tzvJdLluUJ`N($?FdG@m@0PJO#=<< zzlr+D7d8T>{vODxB5UORyWN=E75UW?n?s!l;fntM6&~V{-Y>dHB)-RBFvhT2fUKvV zre-rw_b*mE;C+QfI+u@NchIT8|85D=aX8kX2H@4S5BibRfkgANRMWp&DO$w>5)dyw zp>*DFtQQ4zTH!M)os~HLtB=@|1jezL&mH$OdJ;S=zLPfptLSxpsmH}1dSy?S0>gWb p&VRXKHWM0G66w_F#X08>=)U{CHV-?Ns7L!#`=*{IM*ZQ-{|9*tzNY{H delta 82390 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 beOUa=@D2tUcAHjza6?T+OBtj1;_d$eSFG$6 diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index d60800ce307a24e84b1cbffec9cff00c47a3ca0b..496994e5c0ad2f3c75cf8cecc97d9d78464b7000 100644 GIT binary patch delta 12146 zcmYMa2|QH)_dkBezRSKPNRipw9CfP&TgmW+-0jplP2SU? zxi#ATVR+OGMAXs}^OY?z6wAQAk z`E;QKiKQ!&X2ZWw-JSteuPmGY#N8F>w1pfkepWKK&=#tMF5gM7#mL0GZLa?0B?z&) z5{+HBI{E8r%lkj?C#SzL-O5>@f-wf>Vo2Wat`~hLf@n?QvAg>>tyA-=KW))Ie*Lxx ze^hDb>R!|{DXk@CIK=&RX=he4!)Gzi?PArT?+2--?$6+d@Ul&`hd_G_PgIzrMh#rs z^3Mmsv5d=q^H`ds^yPdcXvZZOZX}C#S_m+y(kAJIbz~GD&^n@mnwg3%`L}clTcmyl&L{?t50-19;~E+PJ>OOia{{ zPt9Kv0+alcG-q8BF=L-~zhQX&OC^^24keAL7VX&Q9Delah6`$XB>(V4OJ`{OxB#8G z&|iHsmG^i1D;jjUUNC32#`gS_ry4WF%};gxE`68LrokvF_PTILgWeLuxIJ{4t?4E; zuR$GGFAr7j3}e>opf#QH5R^FsH(5V5HOeW@gm1FQ_b6?7Y|9M&7u`r;1|5R>4QW50 zu9T88lO7;v~oCf z>EmAV_kIn<_Sc7mHss|D`1K0bS1IeU<>05#MX#B6#wxS~7=))67jJ)5*=A=Ju^?rc-Sn&ols*=`@-Q#k?_wW`32-ew(Bf>8D|hS( z1~+cM>s(ZlNt1Cbl?7uz*d6;^=g=BQ2X^N@-12b0@z6iHJ&CZ)E)I&0L6ut`JoM*6 z?!JnRm9*3Fr%|7s<~B!+Ql%=(Py?p~c-oupS30@I?KN}{_dx-4GIX6#Oe^h)^Y|WE zEq3{R5vV}Dczpz__kde)>+wDm4AK1t5-csQwvG?RAx4z>ZEZBYri{z<5%+i;=IVxu zV99A|G2%s8RjTYlEq(P+idw&uM*8E<*y#U?B8&BVltWq^e+!t`BwoL}9Bf|GfcpGr zdQb;}rcZ!cZHfT54J11S%;J9RWC->qogu6o$$`sK83*N%;t}^B85xS~nj|o@0F7FA zP1YoT5Ek~Tfy3P|K(SF>OW?+I6k-7YauS`vLBZ>=Sqcbua6-M##L@cmGPYk z9Y~c|rOJzBE6OjE^_GBAYq<3+PCrQyW9;D7{Wq z+hW*hf0u>C`DHjwnj!KO8#n^>e}hY6)j8Ex7lbw#r?EeBMWfNfv-FXo43VO-yA&~4K2u=#n-J%AD*mq~g;%HxA+9oc(P zk0_^=rprSZ-@Qx1#XGI-h3O>q$BW3o@D}~30=PQ-Np!z;w497q)p3XC~=q$ z*ob#FO&{uz)7+m(gf7ks!BfsN+?|3oxu>xL(IhOSg)FQV4efm|-kl|i?JmokOUZDj z4&RS=GW}lp0`_z<3XbedvW34r&#(oRZO`E zf}c?$@iF<=GiJ{UF+bO@+jO>1&uJ=f76Y{DHIQDqmU+=I*LY9 zL`#PkwjTwbbJ+?i`1^yI+?K&t&gL?FI;`36-qx0xyk>j@N7EqSyMO(n^d) zv`)KHqfMXvoHSs0aj4O$|HiZ)A~_~)^Ps_f@tSndqm*nynyvIP`nz8;Cq;wD$K-?A z5YQ9I9(%0d{qs~dm&)wDXSMZ`9oGdk5Y;AaxSD`=+v?tXVEbRGX%+2#aWVub|3ZSM zO~DkY)ju||*Vr{&DIgw!YCU9<0w6n67}&IYSXl>$^8Lk9EIjgeir&8G+bjflPzExL zJs^#2xm1opqivfB4zKl1M9MqHt(L*8f*anRSBfRxo7zpij8&0ID%<%1H$xj;s<$bw zb^3Wq$H{V>-afJSJuMJ)FmN_&C^^n_e_sXhNpQ_Q<4@Qpfwd4c^p`9-mvcFbuxvTh zA1More-Bj!=HFpv55j(kJK<9N>=b>ss<}o0z$kOeQ=gs10U0)MxEip_z6`#h=fi%? zz7}nWO@=lSk95XnQEUL<)v$75j*B}y8|WP$j&6P8adSwZcI`0N-t~&Vy2mA6-XKb5 z0k7VsEp3|q`n|LE!Y7`#eIaPHY^NKHG9&fS-iB&Z%0N;Utpg?N!sRfiANE)0wtIGO z-63`Bb|h}Ab5%^3IR!Og=(+&K>a$~1GM)c`F3%Nkoc zs<8hw#2H`EAiA@$yByhB%dNS1_phY-yov^BX~wnrUekEYsb8$}(SlWQU0K5reFdVz zieebi>xmGlrzz?y$fjIce;Ju&3DD&DstoKEMWZwia=jqfPhYJD0HVOnYdYpa-mMSX zq){2TUdyai6^$&v11CgNsZk7_8BcgK7oP4D`S*_cevh~?Fh5K>9rHc(>^RyOfiBvZ z!_PoM!#*;{q!fc%^p2xjdVr&d4kr(htmlZhF`V3s+V_D|OFxa~1Nk1oAyeyJbk=i9GIy zahA-4KrQG0FJaEMMa^@)xTY0x?VM46)Su}Un1nJ+?eEl5*&J8(9U-+%P4Y&S-_tW? zFDRAb0T_|h-kok^+XP>xpY02eN2oLPW^pJY)~@W;D}R9D`8=@TzeG_VL$>uG>_xek zG2Ph}wvPc<&+vQH=i;s390Es zAko<#UE4TxMeTMG7`e_H4)G*=IlPqhv_&yn{J_A*(F!J{sA7b@e%T!M<8=iR<>t#S z^S4eC2CP}Dm_lgpPHkd$IF{rZi!F0WFW6eFp5)SI*G$TL4QRW1gd0&?RoRRy3c5nh zcXeeCd)#<`OgxIU5c6=HGWfvu=v{vcq*gf4%{)}2Z*;Vc7*t29M9eugB7_i%zd{$4TQZE@<2;|yq*)Gjh)LHz)7TmFyEyy!qc>B)|*jJji)~qx2#8O{G`1a zU_!|gJ3hHA*w~-v6&y{0Hi7!oqf*WI2>}(Mpb?RjpU`=yX>r;faAMi>xWebU6)w$a zmJXmC(t4f#(@^S13Wl>!<4D;AVxcMdyDq1@e|<_0B)i6jV`L`bshO~#(S_lRP0%C+ zd--ecBUd2hos48b;l4M9nEx#YGIF=-tG{1u*p`Q!;#wU$7=xANT~V z4Q2*^J>F@$g{xfk{@pKq{M2Q^>mHgtTn@D0y@h>edxYkDk%^c}tZ6@5+F2j0&e5BS zzRdijqM7<3@4SZ|SKmm@ee4{x3kF)w#r*o@{0-|b>?!|U@pCVgIlsE;Bgn;~_ofz0 z4WMTq<4raa5XhIBiFL74#Dqzjl7QFt<&lB2Doz;}5g}zsq-`qM_4}=9Vb+rG!0Z}= zwYB7mi&x<<*jF58yjp}7PfP2#jn1Y6Jd|Aleh=kq)+GgnC7rhp9u5zWf{ROH$ay;> zRzHC0@z=B4cGhRUG=8z(y|0mbE}0SAnP&3f^1|=-7}E!r@58(ml9qCri8I(Slx;6` zH-q$i5dqY~aY9x|c*R9*|NFEkd>#@49GBKwRT0+sU~OSTb1f~T#EZL@ix>&sLgKde zBXGV-cp2xGNpj=+bpZ*+4ncR?aQF)ge=!Z^OB49>P08KK$YXqB`FTt*H%R6fox95D z@?Z}inF1nY59TTnk3qI-!k9+pWL8u@TxECT=Wt$XVDhZ(%%;x2u7{%mX~ z<-2(|7|_b3ad<--C|IPgCBU&|!9kk|RxCo;#zllU0(1g7miV~C53#RV2gZSt-*inQ zbVjBee=USq)~7gNkIx-GEn^4P%cTM>(+h{ZTgH};gHpQX&(&X%2HvTnY3~uXIWuh# z&jk^@$5fkPWEOEEhuVj+m_aPr3SZrR;0~`B(q|9NNf((4kXlU?$y`6oQ9SgoV(Wi< z5#$a3VhqlFip#Q(H0$X%X-9_oU&sQhn!)Eur1e^wGIj+-7L|NaUVeYtjVRd?I=Po; z;wc{==G7J}2i9(Tmc*Dhnmsx~H4iSXg&}fIPL6LL1=h>c2dTH)X zquE^>LK-U1XztOLHf?x?)`cZ+lVm@z^=sle>;0MnrEjfZFx5}358yS3u_$9zk9-3x zrWpRT_@>f{&F>L=F2LLKe!Mpca#8~3?{*%U02&9$2cpGxZF|B_a9Nb#n zMO8q;Z%_+`-$|hJw2?tnr03K?>;` z`ZEsrxmCGF(N%UOuAw5ghh0sFCL^8GWEXJD56qR7nPwNzxTiXhbdyr!J2&1kAj_s# z{EC_ib7`^n?xnv?ibUgZ<@;rGHT;ws<+!;~_9YtX?!bm}*}8RX?EsM_A8qBO^7fu4 z>JEgFSF4p#LX2O)k|Jiy#M3W$*{`x6Gi~8>>h|5&OH6|v8^U1{O-fApM{D!z5pw05 zNN7?Cm;6DX{ReEqO4}?h(mc z_{Qf<)So{M&(dZM*nU2a5%kl)w$BbyI*96PA=e5Z%m%JPb_q0>~;5@ZvOYfz|{+9 zC${vYbPEZ&e|v<1;Dbv%z|%`)qr{ugTCkoU$saw6j2%D8_hUs)l4ZW}Qe11){>a7^ zerS+z4ZULyR!eSayF-YBp&8)nIYOj!Ys&<|^ftyDQA1zoqxj)vFIF6!q|&&z_JY1-{x z=a`dnmdP_S_&0TrUwtAOB`Pg^n(#K6JSn4^V^T}>k(DH@pN74>_qo2&;k_QLrXlFM zwR_{upV;xA2Ik6&wX7|QRO*nP?hjlNizi#AIJSMPZ293$RrK8SOu{eR(`!O31s<+X zgu-cciO$iJ4_dO|4o1n|U@}ya2(`Gl6>vn|YE341Kz!|Rh7a|qoy5cxoLT_nP*SqC z8{`}moBP*NSyA+EKJzi|2g5Kg1I+s)i^{N zL4p)KlykLdK^J`m00~)p^wg4E&LovCY450#w|qf%b8i154pS74%<$5u zB2W3??*GT8cytw*y6*0-Zoxv$Qwk^s7;7J&e(6HSfRywXn)h)O4s>q_My_R?@tH%g z35{xNbS2rAro8)EuVq! ztdu=_M9AR>p6rna?Yz_jN9{UpCnhO=I!{4E#)v9{I$9Y`>KCl@W=HKnhgYiI%x;`@ z-g7!(7?uO$vw6!`3Cb~dT*b=pY=Fr=%61yD`dPE#30aukz~|J75b#6_{g%&ZLYY+$ z02sT@7>72Y+F|l2<1quY1O>z8HeA9w=h(k6pa?`-`^Vm!nckX+p$nfenr3c z=c9el6P(Xkrhm6(Hvo61$ctm~c}LX1OX#0CyOjEAtqY|htHce#ZTueJ1C34ce98$2 zqc?;Cl>l4hs`wN|R=TR&1z`TYIy*Ihz^>h<&hR}r?x8awoxEE5`- zfG31$ZC0-3?=VdPp(aYb&wL2Gu-^fs^-a}@v{ed+pS z=&YCDMHgj6-9&lci|54IFZ;$ygB!i-)tVJpSe3$qN2?uw3*EtH4ND#@58t6K-dD|O!dWx{!($9tiUI$9D`?~z*`H*@#`sqJ( z8{t5f9aGGPQApjf&oQdX?NxSl<%0iG8hZJGYUmQb(k$M0>y62WaU`R$_C*>i&0jJIWGJc9}dKvv!mwzN~VB>djhp z&WoSVnKa+Qh-k~NW`QT1jflq~e6Zvde%z<<4Gb=SRSkY-kK~KA&@Q{uV&!(E4ls8S zC=q=N|Ii&`MpZ~meRKs7mC8Y_q-viZ{*^^o*kP~6t!=QV@DuN?Z4Q)y=Q;IRwhunm z)ia6>a?<3QS$m+}q0yX=Pu6|VGfI_5a~HqlOm{1Q4lJelujGUBBS_f~zn4yce@vp# z_BYyIyP0LndY@Bq|6Mgn_2}C$HkpDODDZu7kaI4uj~;2ITSDj-nLS~~ab5{ySLP`* zo@}&wP56j~6#(c-uyed+bB8cj|EGQ!dyAhodXHPXr{uFxI8XWGVgh*KC{XEU0&h!t z2e)g;Xo)6!!pK$7&FuvRp!=+fJPGUmvFS|e77-)`l2o}4To9%2=f(*1dc>{mP3_gO zY0f=F_kuC_j!%&^$rL}uTh3<240xR`H(*}^Rec{m|6Y=wV@Fy}>mu*^g4$h?WA_fG z#5&~E0Cn<#qL(-)sLg$KO^^jp3lS-6#((`HX4-((|EuAZsg#yTu78>;=Yn5#ahb1_ za5-+u@>$DT*t8&8hV>$?$T*By1$k$<{BIeUb+8Mn^IR>vxG?q>t&XC0CQnUY<_EzD zJF;4XS~(#}l z#uAUV!6brmPz)LsF;fpu;f>|8@X1ZXe$QJF#tU+KMK5Ql0w7s1D*5?}FbwJg%5=dVn*cS| z;|^DLmO9ft_2RcL--5{k2a91=gfFifv03!t-pV&Z2#KcWWv*nI)Q^Ik&riPZF@U8; zS&-xoY~Y#;hy%*Et3|jmSKvpps$Y*QQ&Y2ht>U(ud`%un-;*J)D6LopWT>6M=4R0` ze#Zus-{}q9amB6P?%yr!@90gzT7EGv{=`?$m3QZhUXwfatkZ4$4LFb{UznORz2AaH zg>=>28H+3Zq`wfyuC^L;EXf6w4rSKY3bx`Q|4OJ+K@@XRzVQD@y!SN~oa*H6Rmr=9 z#pCfqaWfEnRGB)(pFN`x3s0nu%O37EmnF7L8RipIYL0c0k!k%lg=py*PP?~X37E)0 z^;l0L6iX;NBwk7RTVzij&!rF18u9WEI>R+)T&*K&kFD@ba{>`feSlu{nWrCe`rA+C z#GGv_!`C-1UL>a)uATmP=^p9Q)m0~ouCKMc8!jSvfv+nr1q*XHzYAI9u2h>&;?eN| zo=Z5q;)2xFU{c}Xr{kQys|E4 zCwpikx?kEoFeQ95W6PFTTVc>(8MbVUIdL4$e%MXjw@Yu>s2N)KrpTByFptbI;Z6e1!Re9TcpFDkJMEjGRywmRu_DQH$ zVGP_>(YkH@d1%i*Ln!`39xVKIh$Xf_Q#5Ku|(wlid-L;B4DYUz8tokSK` zGx%qxGgN90F0*bY*jihe-`x^+oyI=@qSw$WnC|W^YW@RqOvs^E% z;8x<@C$$Y;p=|X(KY&LP>!Cla-c@j45J8J~(QU?+a!H8kn1kgo#%i18bqyuU2W@4p$YN19*-db29#53{kP>#)e> z4Z5q_*VJnb-|T4iH-z0W<+gZ|CZyg{744rL$j<~bFn%{5CU(xT0?FlrSqK@P;s_Us zF_aAeJ-QE@O<(IA8r$E!Af=wbd{*WtQ1=YsaY9@O72>q4>dDPK+=?P#niupF4g7;j z|C&oupzVjSF{`imMqanrzY}MbDERR%ZmpkiT8uLWLk!m?&BUNu^#XrE1-{py`)AeZ zV;)W?JShYJwByt@EPXC=7ZOWtkak8o++Y^}l9EiFnzlOEtrfXkD8-MFYdb0J;9ikZ zE%=+hRO?f0*1l06lXW6^HP{Z73$wyDH^V42W1&aR90>pA zL;IlUCJbU zj*2&npE|xmK+qn9?}>kRR$?BElsTDw3?f<~{6dbG>(@pf98C*Tn(GHmq?cQ&mqN7} zq3YDeLfuL-lXGaNko-b?XDLg!?4w6ctv0pEv1(+M&$kn_|S*$4&b+n!_stJAiR0vU}xv<8N%{W8SEhGHx}sc z`&8)w-f%|o-ID(g(Tc1eqOdaVLF5WkyKk0h4Rg79J)ZyO>QLjbvhflHPmRt>1rl;l(KLGzjTityH)n&G_ z^&+wAXF|PW)`@qg*nzsbx=76Z?eU8A%MY18{Nbd4x@*8WNkH8y&6&D3n+b5JNYzO^ z3kKc{&Mk+`kMe0QO3ba$UBJ=B}}TvO<$ zG~DxmwARGjTxx)(>RRCreeL`f21(YWW93$cPCcv?mzWQ&7%AF;>h7XlWD5A{nUmiw6QKc&{XrXhw=8pTtiZwc~ClM~P86mdZ z^c|f#Wn*IJz(~WQ&!4I7?d@F)%21Uu|Il{?;~Z6L-6kDH7(HO8VZDUuNUh@G&02Mu zZ1$@2>`FgN$gLM}elDt|)^;`=@>FhR0{O$C^1I*s&u2DiGRD%!jONIz&A81=-@kuX zY2+0aP7s3Ewk}lljam$w$=^6Z_>dRv;y-w%4Y!B6pukC7GUzIwrjl0{a9@mV7H+20 zC&KxXS$WLu@k?}t&!0LjpS~F2+VqVbVOOPFxWgAWz)OjF%4Jl1F@VQ$ZL6#;*b>TE z(9sepq98of)H;}<@Q6W#(0G(_MqBzhO*)K4*S6*4HjxZ=8rA;?YT}s%`iQ^$?ci>Y z59(#M_CER+@L#$Nzd?dacu!@Cw9R5>z3Yf?n5zgYnl6v#o^l~@M?m5}+DippcwEL;MWzC9wx zt03c8va^Gz`=`undM%)+q`cM>vL){g9_t_RIyv4gp6@8@Jr(dS!QX*?e&El{y|qBg zvWCg7GXWE*jxX&%_;sTz!n6HalEo{R2D9}-TxzDq#8^Q!K>PkXXZMt=NdEP^VkhpW zfy&ypjJFh#1}|pQ_VOf*G(q0vxBMDWJ_;1OEG;8^Eb1jx{6_DMa;>nsH-CIZM}8P} z3%$)zD}Tsu9ujUY{jk1(Xh?oUH8~Y}DdeBMmw%iEGAKCU0V8>@oAG?U#Ld)?S4ycW zNjE_^fDQNdQGS}|HnmKkjMLqN$^a^sRNcfWzb;>$gUOmC6V?_xO9?#UB-?2ggly_K z@7yugwZ309w=terBEISm*Qi2q0`p0^td&1l4{_F(B@RbrSD1P>DXl^>E&kbSvM+ou zw+UC1}~@MZcatYw@2vj3SEv)IF~O(!rdtOb}~-m_FV zbcOc}=LNTy2OCEif-d>x7K#e7`yuW3w)p-fWh=EvIPqvm^~;@<(*D$n!EGOH%ZgY} zh;N|4e#Jh1Z!(tZ3#*sD+gsXGVvEiN>hhGEq~AnI zK8m<)Is5v>2qL&_lYK;?YGbym1O0NE+F$+z88oF?OU5hLY#-d_AIz_c_y5T!7|nR7 zo?Lgp&d)C*=W1KoN!5=r{IAX_hXSi#4|_(qukF83aNs(uLZw~m_#PhIKHw0wSf3*w z-oX54BnbEXt8V&0;Aur(k2=8s-E|XgUBWE?DL#EOj(>Z`>!oj8q!Xq_Yym8KkrJr$ z@yEjxY8v)OTxnLXJW&{Y*Z!gp<`*Ko}1^m_CU^4#FNJ zoq}ld9>@0-#-?;3wC`2OIPR(~WSu5m%p(L`A!jx)SD+ko`!;qa4rKCP#_IX#vMipf zTl@+~`83Q9ZazJx&q2Tk!2gpMl=;$@QPz6$bZVbUjbFu1V^z3ne!~|8trmYXE3gNR zs&w?&)3|rCr$94Hx>7j2&rr**`L6-JmPqviS_;z|DH3n7*~NrQ&GUGXbgD zkS&Bo2sqb%w49)i-`~z?Pz1qcNJiLuj}61U6;?|Gh{|1vP3M)5Y86!u{+FxV+E19r z-!$1F3n&bfh$uC5DHyF zNl^X|kFHV5u6?sy;9lpGF=S8He2+&3!>sbEgWIhT zP2bWp1|J>Nm%OJirC>#c_H9Y0NI5fS_1)%+0{y7*nS))}`*^y)?EAzEVWsgF}Awt>v5RNTmME2ff z&*M1jf7JK)`~6+#x_G_s{XWnA+~eGz`*~vfDe*m&(U(A|x2~bvJ!@C1m$on5Y@M9| z;8jY&r$(po+e~kI4h_gy!P`Y-Bt<@P#tzP<6auM-y zCJgF(j)-sN>ZQScBH#$<1mx&mRKkHYHa)ewahakW)7Qbez9-f^k+pTwDp6!hQuExuUo8$l>C11Au#;%yq60d?37aWdtX)kY`z6~ z%lE1hyv2b}=VKnlILNFFa><^Pf4MceX7dC&B&2jdrPNVh#tk`L6q==%RZiJoH{W0B zcHU+W7d7q-yDc<1o4#?n-~CzKNTa-Ssa&j<$oUeQUTT<~Dr4mbJqroq3~q=GR5=3gZh&Bo?# z*OCL?ko#O|o!K0N-|S0tTTIT+Eg!69vw+JzzN^Pje!V?zw<)`B>vsOWJDdCPsfJJ2 ze=?$PYSvQ>Js7%mn5L(FDuN@#=t#?Z3v?=b9tV1w6MJ$hbbYmT7OL}B_b9|WJG<{< z9v6kX9ymI(^XV>logUnAa*pr5JpH}3dU?$oG9qnOM6ov5Emizo+7nM% zj(~#idL*8z`#!r+T*kdpeYb}xsHEUtJA#%mAolvOY7gp)O;lj)O`6l$v5>J`+HREA z(_(**Qj5Uk{#ezVnUH7az6oR+hT3)HR)>BI_;e$B<;k^&;av}z=SSE?T%I1jK4g7y zrlRA~jB119F6+|Rt&kbkv$I|MJ`2or3CgqT>)_&EV!P0{?Jvouf^Y>+wdre|_qx6F z3~}=kb$YI{OTq0_={HoQb0;&?*pVM2zj;!mGHV8Z` z9plf|&&_r^4(vl!j}52in~r%ohT1uc>DmHJ0cakpcw!PXNwW(=Mcu-!^#k(EX8zBL zWiDv?v-0uIzP604FE3lHpIfdgG|9tB-s=q0GVF*b<-tbro6{nh!s(I4DC=#B*H{Uv zN{!N&&v_3oMTg3E#sP~@7^j^F^k`Hv4bs(R6D7V1KF0C0AFLBjYw%lm60&5xvXtqJ3J|=W%>P54^?qyUT*&B`FJ<;rL1jN)ow=0|X5Qe)o-6Nr zoB8c1hdDT+nHyKmHwQ391GKc!sh1`*q;YBfpsv%G?*r<3o+5R4x#j(@e>VRd|E`;? zIyS&e)flJ+iI6(@#{Bi65)Li7kS$Xwuz6BL+xrmJP6&CeeB^d6O}iErp1S|K$GJWG zNsOx$`=QM;%FW~4f*^SQ2>KNdNz+2@YEoaUn=XOnXF5NSX7`Oysn+lFx9ftxTI5hK zUPNH;jw58QQ|a5oe^z`@QLAI;DKNoWH4dX}U8y#5cAKsO@{j74V^-<{sf;5*b>&VG z_9)y-Bj{2-_U`&ZlYvm!Ht`UlDj{NQ;6wM#?$gFc^59}vLN&ewayifL6V}}zDqLlffQ-KkF1a`N76M^gIF!?di2^=zrF&tZYEtMD4l= zfB8H-ch`m{O8$`_5AnENPykd1^)zmV7dUe2TD>l*=-#Ld-uGTGFqj{l{4RSe?&an6 z>iMLre)|*Xh#m$vPRjBkUw#f9irHNtjg%!908DvzqCQ31M|1i!i}MuXo|l(<#3J#K zdB*r%Y9MZ|^TkyB9}nEp{jw}Uu$qv^>ofM}wgZrNFm`aP-_5TD%D}IYq@~BLwLk-# zoURS&G2~0W~nJ;q} zuEM4%ue!%kDKIsG8M`^64<$#LC@-XR*+jm6&}SWX84lOlusTl@ME=lRP0>_Zc%Nxp zX(&h#J+(aT2s5s+G%?~n>Z<=ivKQk1nI|8_s}~=rO(?0_Tn!> zg{ik_UAVYnkHbE*Z~G~nfeTXszfEu@1CB*}qrus8&1AzOupL`f{tDt2?nqxts(^Q0 znc9g1KjD)*tBi=5`edirOEeG1&C6_}*nkis7ScfCxf5jGn=IIYJdf=t%ASr-wxfpH4Ps(6Pfs;a85O})Wie0Fli6z*ApPWPx79U!4r;L@_n(^ zyK#tgg8fI)iu(d&cj#g(g=jh4}HA!Ic*t#pQYkc}$Bz~h6QDBuMy)di!@i%7;T?Lm z2LQeGxIzrID05l1MvL{$DkoV}DA0FLdfH>XxZz+NW?HnhK$Hi0eO@JDq~qUecYwR0 zmD3U{W2B7>K*OA|^Pztz1ruukS8_5l9q!Yu)Igsp?V$*dM^TfNmQMmX=xTtOdrDOP z*Nv*H2@^U`O3u?B8W6_n_a&vW(25QFQ1WaL*vB)iL88FX+>FA6Uzf<#xx$479K{AAWz25u<-EL^tP7n(!7Aov{jpYZW#-YW9}5pQ!#W_OM( z5m{4{V$RfW%5L9y7em)Wm$#gp?)!z|R*f9I9HwMaa&xy2U%<`}!9Pyb?=xx)T0Q^9 z%XWHo>$#(npS=*agO7<=kf%Qz7ECQ5UB3zbVvI=ufb)RrJq6wD%O*FH#CrF#&GrTb z?|Ag)Oq8aW7da1S{L*Exm}#jeu7G~aPIxyZYT&kySi6(?6w~unK?HVie~Wa;RA2w& z^MDL{LK)bJgAkx#uhr3F8;i4+*&E2>7P0{=w@L6^cUjEkZ(s}!-w<# z`vxy_=#aINK`>h-{~6n3-tdo3(^4f~0~yoo=7h~+kH^18XNX!w6YZ5B9OwdN~TFAu7d6CgQ_mEhUT4!#CzM^6g{w>|p` zNw1)&<8Jt~P3*TFpxhc5w&>y-P!5mwMOwbHXrtc^O(c!hsqeIoaOmxgUu@g5FSb?> zF^h^!;}uT2rCRDIWz{Lt^{c>f3(OcM5;&?rN?l)gp84?TmS?SvPB^;WR1nLCIN1Su&z~9ZT9fGxsp4~6A_%5fVm{Oa;^mBm zmkzh~UDmz0>h0^R1yuewSCI*T(nYVjd&+7J|-7Um-oX z;Pf`8w`k3wUHl2b(+EQk^Um?wvN4!(n9(!WzDNj&b4g(RN&4`}b0+lL;DuH5JMPrL z$)BjJ)u8F>{@#=v>L3_`#XZWz+rD1U@6Nb-7b-tJ9`-hk_g3PcUr%pjfQ`CQHF*X) zjuLmF=@SkL3XTN{pO5` zz#S}f!qo6(HqvEOW;^2^5i0M|XgB5cX!o=pzS2y9FiK_8*Bk^NuhqUmkO%*p!NWzg z?&8)C4}#{9?o@-}UOEiO*MAOh=Ih_vKm1%-c-sD_fevVF5E>Op2$>r*S^-#p56O>I zl**`#W<8#LCiCTD94%JBfUNWEL8h_}`Io#Z?L*5fI)W*-?6mMQAEwt^!vz6MAlAg6 z@)#DX9pB_woFP6gf&ld*S9L@PWZ@U2{9!SNA6sk~p&cAc*l&N2i)FGqMvSh6TRj96 z^&;4LmkpRZWkO;Ouqk=w+QO4D4LG{C@pfHb? zgikN(rsko5R6*w?+p|BVeB0szmtl)H!ryMv(8(`Fdh4(u?1LV4^=dcwQkcuvZ6PzV z5D#+pjfEg#xJ(HMP)vPy2LWzDL5Ct@$Kj_ zONx>I8*ZZB+Kr?AyaU3`_o(O#Tq{sUOaQb+tJy~y$yyp6Y z=$C&^JNVUdz0Mhi0EN2s>4}K%7UI+Y2Am$>6>Nj&vVi_RjGiF5xVyz|2ywH$^?cZF zC$5#gj%{TK2>uM45AUFiXbjkMzn?|VB6oAiGeLBg8#2B|=|LfOefa%w{dBJ9ZMhNt^EQyai4yp=O@wK+Z9~l&;>Aqn93jb__NFwURhy$- z!WR5m6Ijt4>NBC4!{*U_c^K2HS$kYB&5HrIC5d$z%>2ce4Yb8VBJGjo@(@Ju*;T@N zWIKVcwg;UPrrwaV<-H7ItKCtUuN!HStZye)s}96ITd{1n_7uEdKr~k#Dm#)sbaDW< z<_$vQyTB#5OkK|t)9NiGRe<^WgBj$>EWlkto*t2s%7R%6xAQz7sHre2zZ>kua(UZR z!NayZ*U`T9oshwHS3Ik(xHzrc%=W5m$(c7P?4`w@wW6$$6C-cgtf?J6HiC!}D%Y}y^ndc;EF1htONSo4XKBH#y6I`*qCZ=%Q|C^oy(@5i%T71Cr2!!W2>UJ}F?4 z;7=b=hZq&hn{#HB8Wq`9c_oQNTsXk6AD=^-Z;msogFp*>2~@aEi-^T$E7 zohi&5S8-waRw-RyRS$>--L+=?NDn`vVUHp#(CJ-|^`WqRN%$efO21uS_CSVd&fR3q zP|*U|BsYV%VFiyfPr#m z+7&9XLg$VkQRf=8bRMCU0nf<{3vLgcC@x7jm!LMg3a!C!B&~l8ueLI8$lC;UOo@xVd3&p=af0)Tjv{E2{;K`ghiSa5ToG?iF)Hg>Wp)7% z_={PJQzpc{ZixOKWH5|HxDnJO)H`E{AJces#cx>@HwJubyPp6_M8qTR7i+-qqm}Nr zxIjrPw4ZeML#dPU-$B~B#c*GWbj2kuUXwZ3aX0k17Jg?Zf%`leC)7YaEB+>TDKs3U z2MYqX+1on;2&oobCw04d#IB$!!$_*AT|*PkX4?L}-M$Q7`-T>B8O)j?&J=9@hw-le zZr7|9uM}%A1B`Wen2tNPi6yuhZ1SB7mBxRC$)7_1j)Qb*{A*wo-N(`;au?(O*Z~cz zLI%EvM{31G0nvzZLOx8mLlrAMYCzPay#g|OTYJBM-OqMZxV%XXEYxFbwN789t^8ZP zPkunJ=PLt%d98pWcJI%Fjv$ftFZ`A{{4V(r`;BDE6e{z1O3>_sd5!m=5L$Z#nL6Lk zOyI+$3Sv6PJkKMLX4+|CXYaXD*9A)&nY%xT^!l!pm zr9|+z1Qmr>fUM{(Ps$7H}1Clq#)B{$9Z^YJC;HQt)P0QB_+=&kI}!UheWI5@g~ z-#A~#iv8HYV&^>DKYV(YXf!T{YC9Dd`hVS&rEuN| zvPJ9ht@rM|y+&RD*>Dk&SDPSFxpcn_A{sjAT2-0MSc6`@fazW?@oLV5ERqX0;Xbvr zZ90F=I~k1$aDUGbMPeLzEqgloz`M`41%`?`y1MpIWgL9|BixeW^w~k0#b2aO>TnUkQx=i?1Xyp%)0t^M)v)>v*Z4CoP!9RSd`(U|j%qd^(2= zseZIX0TiOwt^hMR@MWn<;!C}&n(WB^a^uF_#a<)Q8NLHENum_c&@mVHcCcsG?A+XO znO>XSu(P+zxr{{80;3}u9gpUyEUMB>iF-fGj~a!DUKXbSmcrjDR<*qsjbMZ2!MyWe z$7UjhLlU326ZcqL!Sh(;Sb5tiK&P2sOx%wiNS}FeHQRgvwyYGthK~FQ>z)5iE13|zUQ#2rObl5y^wxxAVQGnc<^**UZf0Zd; zzj)cDVa+P8eMA;*qW3=2ChENu0B)DDAf#8J@>4M~!YNhS`}GUwM^0w8fx+y0R#Y+v z!$KKf`E9G<>`+5O8YrXj+ZNIwrmP{1$`sIknN49ka6fD+;T)w8Ir`iPauLu&0{C@n zBQ2*TXLrro`pe47pKWW*`(vabmU1_80Ro5)#m{`Yx9n*^E6~?Z_LjU=#+F^r!{jsH zm#uORrkV8&Y-7r=YC3^!V`p{90{}0u4+aGOiANq${v51r67GhJ+T& zKRBV}a`Q@VF@fkYXWQ#g;LJQsqUwmh@#Bfz!SoLZPlJZQl_Jr?_Vf$0Z?$+OW@KG8 zZpIGGQEudXYgrg@p%M5?@yiJXum`kRhwb-H$E}|-0croW#EJ6Pz)7jRaiJOceZhz* zcO&StLfb=I^h>62tQN6vuZ#ST(%-mJpH@Po!3=q=rub4g{7Wc}|0c3PUE;nhca%Xx zLH7n^(K8>Cmsbt|_aA65Rq*LU+5a|4J{M{&GrY8=zI@4XBc68eBYWzw?`?Me3at|KcS+)O%5a4mVdY4Z(RrvaXiM;C5t zKK1Puf%IyeMia<*GhdWfj>?Cu-KwCNX@k&t-XtdQ4-9-MXr*7m3!-lkJ<~|y{ae0z z;%E^?{AXx!7%8QrAOs4&omnyohR7R`=0A9v#kgIvvmqAOw`=UN@9vm;PVe@PPGLvc zj__Ys<@j1i zy+tEHQP6ZUb;M^_TNqm!V@}bK`%cwkT#3`|ij4jna;hS`3`ns`C-6&X&PLqAm0c@- zA#wate&BXH9$ZVJcj%O5k0rjpDhUN77I~Z7!tdZ~`d4kt+A8Y=f%6uf$XsCklX)6N zpXZs=P%+LQLLKw>zc^9!{gf>{3-XwC_*1!DFR}E1cNS4ILDFYbcrQZAf#(}Ouhz_8 zHk-!stcBtZK^6bAwWdT&qtj%S(mOnLz)!X>fEwgQBY-h^3=a9s)X@vzQ@$gPO1tT- z2M{nX<=rC-VOOQEmj3c%(@6A3batKy=SR-P{kl#?oDN31#^*XYjl7)3Q(w%ahR{LV z(H5)pe3AXUWN#F1V^=*~EW)Cnsf(hCLpQk$%Rm7G7sTF;_}!b5boC?Gb7P2|O?Gme zIE)68N*Bw*8ZesnLzL)xxe&W})kHXjmLAqAZhf?!H2KP6{>C}D)SFQqSBn}$_-e;= z()3Yp(p#XwAgg?2U6*W!}WFET@lLESNrEpJ6~ z@Pf_j?_4cnZxagf>sow(z9`X*JfCM<=IQSdu1Z%sBdmW+p@GG=8-xAkI>vz?!UlK9 zAioEzZUe@B5(p~8f?B#y6r7~$dvAxo$rMnjccG9vJ6;`Eq(~f4-4n|^etXeBLxs)v z&YUpe(+!6FullWfNWv<#A?1s6?k=Ghe0&Ux^uy;~BZ?cpblJVfM!vYBnU?!dgfP_g zHPKZu6^}W<3TjLZ%1Xop~VsXeQ9-c}IroeFs)Cc7`y z91wcp0ps07EsVQY%j07agZCS0LLW%>l?#?V{gPrXyPA4;ifL{!Sb-na5#ZR~_V8isIRK!!L&y|Ynn^d^(kaFmAV0)S_AtOU;nqd`R zKcx@1Id)8vb%_KgT?KZLF?C>|9g*yM-^kH)Hh7&t_o8qg4Fs59o9#8x>6EPdh9z{Z zVsdtE`a`1x)WDVH{{Uq+Kg_npYe!@ zV{xx;D)fbu{ce~R&6azm2!KJJL(how>*zcVRN(w6sjl*_06}j8=o=b0?sML9xFkBL zFV7-6McR1hEWqQVvbjI*&H1kR{^!q?6v4GB=qh5eP2HBHKRY0jgiD$u-o-L97#jS+ zA;5T&_H>EvcJGJ%o4!~gGy`w#JJ|ytP1QaaBp9?jnLlIkwbJ5+E+tvV9O$RxJkl~> z*!5?nZqON+(Q(~@7Rse;`sgtb@4uY)9v4O|fef%ayiv$(?5MSQG1(;Y-jAe28UcXB zN{gGqgY2yYdgprZ*FmeV@`TmRKz$3)Ur|buzLg26llOAudT?-{a`wYzbp-tq8sD2l zX2Br6(#BV5vE%g%-}lST0*MGh zj{$TE$1zFSF#vTMd3XASMhuT%uTSk%<`wToaY>J$JleH;Br(=0vFq-!%Mmo_)+?f0pYHi`g#49Xh`|U6s^}$-T|4Ek6cg-7W<=jOE-)e zeE(d(BjFW3>G~x{F{XcO{m=KIhc{;`Ufe|upZ-dljZf%DlfRx+BDJ`WAg}R0QBz^c zo3Y@H=UP}~9SDi+e8rhzMubJ3v&5KmeAUi6B-8av2`W(Mfp1p3U&kP1EXJY}yh>R0 ztiSeZO7jjr6m1kmJ%rv`=YN011@=A`S;K0*-$GuV_h@SUbOwzKJ54i%XLLJ3=>mig ziQ;KtF$gZsZIv8S*}?|*7pN7B@KnuD8+uT_+4?)>ukIEvkxljC6yQi8zs=Erjs_rA z`hwJEc!D|W4)hjRl@`%Rok8uII>oaa7Uxmq8m=DeDVLe+9l%FZx0|!{wBaGHTfAFr z(C}nSw21N%F>YFt#4<|F<}Q5<`3Bh=-MYkyd0H9nkMR{hVsRP|AcYg2~VinMpXeM>|Iny>j(uHQHVG?Ggk76$~N%h3H8{bXMk`9u{)@(p{IuvY~=d- zY5j5j-W{P@d0NDG3azuPdLm;}yP}7MmH(=;>}h0|x#^-FAdeAn;)JRSmL8xPa) z3x_sjBKY$v$j0DTQjuI<$pM`}^uOwpT<2n%4i9QcEzg~*(77-CRJsku1!S>Z8=&0) zcb-*1t6fQ@qp!Nv8i!)~7cwImbdmRX={!dG0vt(au4>Jk@K`6Z=KuH%RJh%qBWKYV z@>_$QQh_Fvd{bre>0PD}n_SofYj#nS+`|heKt`D%_Svq%W6^Q;tQ^Ae8x=4i*@8_4 z$Q3oetVi`z16^s!!ZVYMEo_X=V*GD`Xg^`|!y!@_ZtelutPs|x%WWt-&vj&e_DHZH+w10QtMJdG<3VpKC zhdGvVk}A_71BLCVxBnkc!HGn;92GZt0;N+DAHItmCkLthLRJxkjidOu15@|~g6uvo z96n;XbV8OPyrT9EY5z++HsE#7E^G!#S4dI-^@MFyQ)tU9Cq6tZihaNOIMO4b zkr8O2KMidVr#>!2o*X84JEO$7Pi=N06nm4+7YYC3GPDkQc8r`q+AFk6Gu+(duNsKCuK;cWTxGma57s3N`!|-bZgEvY=@yALj!lW#%DzH8}Hj5 zU%?(h$p$J-U_B_4EK}@j#vLB9@s^K!*30>T4z9 zF0Zo%>)w?Wdl?x&GH5mmL-g2X{Ex|{MyM=Q=dDtQ0=!tX-vv@39v;54#3kPpC7YbM zTgEHTdItYf>%^z-J)f-vVflsq6aeRSJ(C~WzVFviQ)3gGF2+N%vdb#8`Zg0mcx11| z&K7SY(R13PhESsJ?z@-9zvuj&3*qldBTq`tajqqAk5$p1O{o>6cb(2E&}MY=GqH zk>Zvsjnc?8(fp(ccQa~>;a`)FmpyHYq{rLXht@s4J9U7D(xqyTEgL>|{XI6PzKqPg z_QkbX7!QzMJVA_9)%tJY=n6LC{>*uE=KaJsz8s3+FNNPSB@;Y4#f>r{&Rui68j*NVz)O>rHRD(0hOf0E2G47 zF6_@4R3AWJjO6%vc#X74^u5&MzyCK(XHOR_Yt-^vTVCv>v-h2f+88miG{dwEP!|F~ zq2btd5Kj|@v<^(LYFISf(=(g`19CPKuZ{e($I1mMU|@}2EMzrfmwJui+qk?1gON zw~BTw{#RvD&VvX0-VdF|J3uejKmB-a5TMjhHRPJ z2cGVcEUC`Nj+8gfgom~-~uM@dXL~UeVZA+?zZOD(x(bd0< zn~3aja&!B{%$pthrGx=@=oh@NO6y@YaC$Kp04RQ(oF(vs%ms^O{LlO3fU`HfEJD3( z9x=7HD0@$Qt@1;sT*zij1O@4NDz1FxgFsQ=nNlNioO4A(Xrb*2R*fIaE-PnrM=Rq0 z3t&y@S#!BZ_L67nKdE?eEL5X{#oT^>uBvX@sC@HB5ip77NRr_3oNzgNxPiMLEhyTL zHI20VPgv3yAmjX-uWfT~*Dii3;nCJ}U`WiFJADd)No^3vL|hPjJ!SMR87;tA3lksNo6~dOh z`CL?zBqmXVyxc)fLR;|P7Dg}2#{;@tCa(i~L;sv?+ftIrzW>OuMUXMBoDocryd4RB z_T3F5W#GE>DU@4(p8N^`MT@`W& z*CT;?VOn~YxR0ivp%EpvEMk|gGn8eYO?7^OqO=;geA~}n#ge-%n=6L2$Cb0y#p8S3 zv(+Yl{DU%>M@oI>^%DnqT|y3PAo*RnojysAv)N{{TY|cIN;9 diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index aef6d804a14402590a78d6270660eba66c478796..a14e8860a5a33bf601825f6502494e8ca161d88c 100644 GIT binary patch delta 20686 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 delta 20672 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 From 1cecc231fd79f80e6565bb7636727adfd8e767d6 Mon Sep 17 00:00:00 2001 From: Incoming Date: Tue, 26 Nov 2013 11:06:14 -0500 Subject: [PATCH 030/315] Bomb payload big...yeah yeah yeah! It's not small...no no no! --- code/game/machinery/syndicatebomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index c26c3dccf26..3457c9f0bea 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -150,7 +150,7 @@ icon_state = "bombcore" item_state = "eshield0" flags = FPRINT | TABLEPASS - w_class = 2.0 + w_class = 3.0 origin_tech = "syndicate=6;combat=5" /obj/item/weapon/syndicatebombcore/ex_act(severity) //Little boom can chain a big boom From 67e4e04da2bef870bcd8bb9e3ae7cd4e7fe41846 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Tue, 26 Nov 2013 17:40:41 +0000 Subject: [PATCH 031/315] Adds a stat check for AI vocal announcements. Fixes #1908 Moves some other checks under input, as they could change after input is done. --- code/modules/mob/living/silicon/ai/say.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 0ea2cafed14..4f9ef6db24a 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -73,10 +73,6 @@ var/const/VOX_DELAY = 600 src << "Please wait [round((announcing_vox - world.time) / 10)] seconds." return - if(control_disabled) - src << "Wireless interface disabled, unable to interact with announcement PA." - return - var/message = input(src, "WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", src.last_announcement) as text last_announcement = message @@ -84,6 +80,13 @@ var/const/VOX_DELAY = 600 if(!message || announcing_vox > world.time) return + if(stat != CONSCIOUS) + return + + if(control_disabled) + src << "Wireless interface disabled, unable to interact with announcement PA." + return + var/list/words = stringsplit(trim(message), " ") var/list/incorrect_words = list() From 61a7049cd787585b9236e93a07dee4d406ad09c6 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Tue, 26 Nov 2013 19:33:39 +0000 Subject: [PATCH 032/315] Viruses are less random and you can determine the level of symptom you would get. Virus food will generate low level symptoms, Mutagen will generate medium level symptoms and Liquid Plasma will generate high level symptoms. Virologist starts with a small bottle of liquid plasma. Filled in the gaps between the chem master with RGBA(255, 255, 255, 1) so you do not accidentally click on the floor anymore. ChemMasters now has the green light overlay, which is only used by Pandemics but it looks better than red. --- code/datums/diseases/advance/advance.dm | 21 +++++++----------- code/game/machinery/kitchen/smartfridge.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 1 + code/modules/reagents/Chemistry-Reagents.dm | 2 +- code/modules/reagents/Chemistry-Recipes.dm | 13 ++++++----- .../reagent_containers/glass/bottle.dm | 10 +++++++++ html/changelog.html | 13 ++++++++++- icons/obj/chemical.dmi | Bin 29386 -> 29490 bytes 8 files changed, 41 insertions(+), 21 deletions(-) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 4c633a7b7db..ee8f7c2ae55 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -7,8 +7,6 @@ */ -#define RANDOM_STARTING_LEVEL 2 - var/list/archive_diseases = list() // The order goes from easy to cure to hard to cure. @@ -62,7 +60,7 @@ var/list/advance_cures = list( if(!symptoms || !symptoms.len) if(!D || !D.symptoms || !D.symptoms.len) - symptoms = GenerateSymptoms() + symptoms = GenerateSymptoms(0, 2) else for(var/datum/symptom/S in D.symptoms) symptoms += new S.type @@ -136,7 +134,7 @@ var/list/advance_cures = list( return 0 // Will generate new unique symptoms, use this if there are none. Returns a list of symptoms that were generated. -/datum/disease/advance/proc/GenerateSymptoms(var/type_level_limit = RANDOM_STARTING_LEVEL, var/amount_get = 0) +/datum/disease/advance/proc/GenerateSymptoms(var/level_min, var/level_max, var/amount_get = 0) var/list/generated = list() // Symptoms we generated. @@ -144,13 +142,12 @@ var/list/advance_cures = list( var/list/possible_symptoms = list() for(var/symp in list_symptoms) var/datum/symptom/S = new symp - if(S.level <= type_level_limit) + if(S.level >= level_min && S.level <= level_max) if(!HasSymptom(S)) possible_symptoms += S if(!possible_symptoms.len) - return - //error("Advance Disease - We weren't able to get any possible symptoms in GenerateSymptoms([type_level_limit], [amount_get])") + return generated // Random chance to get more than one symptom var/number_of = amount_get @@ -159,10 +156,8 @@ var/list/advance_cures = list( while(prob(20)) number_of += 1 - for(var/i = 1; number_of >= i; i++) - var/datum/symptom/S = pick(possible_symptoms) - generated += S - possible_symptoms -= S + for(var/i = 1; number_of >= i && possible_symptoms.len; i++) + generated += pick_n_take(possible_symptoms) return generated @@ -269,8 +264,8 @@ var/list/advance_cures = list( return // Randomly generate a symptom, has a chance to lose or gain a symptom. -/datum/disease/advance/proc/Evolve(var/level = 2) - var/s = safepick(GenerateSymptoms(level, 1)) +/datum/disease/advance/proc/Evolve(var/min_level, var/max_level) + var/s = safepick(GenerateSymptoms(min_level, max_level, 1)) if(s) AddSymptom(s) Refresh(1) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index f35e91d9171..496ee082dba 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -288,4 +288,4 @@ /obj/machinery/smartfridge/chemistry/virology name = "smart virus storage" desc = "A refrigerated storage unit for volatile sample storage." - spawn_meds = list(/obj/item/weapon/reagent_containers/syringe/antiviral = 4, /obj/item/weapon/reagent_containers/glass/bottle/cold = 1, /obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1, /obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1, /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1) \ No newline at end of file + spawn_meds = list(/obj/item/weapon/reagent_containers/syringe/antiviral = 4, /obj/item/weapon/reagent_containers/glass/bottle/cold = 1, /obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1, /obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1, /obj/item/weapon/reagent_containers/glass/bottle/plasma = 1, /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index e0197d93388..df62cabf511 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -199,6 +199,7 @@ /obj/machinery/chem_master/New() create_reagents(100) + overlays += "waitlight" /obj/machinery/chem_master/ex_act(severity) switch(severity) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9cdebc3d7bb..8ebe88e6912 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -621,7 +621,7 @@ datum virus_food name = "Virus Food" id = "virusfood" - description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." + description = "A mixture of water and milk. Virus cells can use this mixture to reproduce." reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#899613" // rgb: 137, 150, 19 diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 8b2b69a1bd9..0d4b861e776 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -460,7 +460,7 @@ datum name = "Virus Food" id = "virusfood" result = "virusfood" - required_reagents = list("water" = 5, "milk" = 5, "oxygen" = 5) + required_reagents = list("water" = 5, "milk" = 5) result_amount = 15 mix_virus @@ -469,7 +469,8 @@ datum result = "blood" required_reagents = list("virusfood" = 5) required_catalysts = list("blood") - var/level = 2 + var/level_min = 0 + var/level_max = 2 on_reaction(var/datum/reagents/holder, var/created_volume) @@ -477,7 +478,7 @@ datum if(B && B.data) var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) - D.Evolve(level - rand(0, 1)) + D.Evolve(level_min, level_max) mix_virus_2 @@ -485,14 +486,16 @@ datum name = "Mix Virus 2" id = "mixvirus2" required_reagents = list("mutagen" = 5) - level = 4 + level_min = 2 + level_max = 4 mix_virus_3 name = "Mix Virus 3" id = "mixvirus3" required_reagents = list("plasma" = 5) - level = 6 + level_min = 4 + level_max = 6 rem_virus diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 1837e3b2eef..a9e2028ea10 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -87,6 +87,16 @@ ..() reagents.add_reagent("mutagen", 30) +/obj/item/weapon/reagent_containers/glass/bottle/plasma + name = "liquid plasma bottle" + desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle8" + + New() + ..() + reagents.add_reagent("plasma", 30) + /obj/item/weapon/reagent_containers/glass/bottle/synaptizine name = "synaptizine bottle" diff --git a/html/changelog.html b/html/changelog.html index 12397f294c4..26c94592384 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,7 +53,18 @@ should be listed in the changelog upon commit tho. Thanks. --> - + + +

+

16 November 2013

diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 13e318b6a562de9fa5cd93d8bfa544cedb7cc958..8755190607883818828e318ea913bcf54c0748f7 100644 GIT binary patch delta 10587 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 delta 10482 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
  • (E) (C) (M) " else html += "
  • " @@ -402,12 +446,63 @@ client //This should all be moved over to datum/admins/Topic() or something ~Carn if( (usr.client != src) || !src.holder ) return - if(!check_rights(R_VAREDIT)) - return if(href_list["Vars"]) debug_variables(locate(href_list["Vars"])) //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). + + if(href_list["datumrefresh"]) + var/datum/DAT = locate(href_list["datumrefresh"]) + if(!istype(DAT, /datum)) + return + src.debug_variables(DAT) + + else if(href_list["mob_player_panel"]) + if(!check_rights(0)) return + + var/mob/M = locate(href_list["mob_player_panel"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + src.holder.show_player_panel(M) + href_list["datumrefresh"] = href_list["mob_player_panel"] + + else if(href_list["godmode"]) + if(!check_rights(R_REJUVINATE)) return + + var/mob/M = locate(href_list["godmode"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + src.cmd_admin_godmode(M) + href_list["datumrefresh"] = href_list["godmode"] + + else if(href_list["mark_object"]) + if(!check_rights(0)) return + + var/datum/D = locate(href_list["mark_object"]) + if(!istype(D)) + usr << "This can only be done to instances of type /datum" + return + + src.holder.marked_datum = D + href_list["datumrefresh"] = href_list["mark_object"] + + else if(href_list["regenerateicons"]) + if(!check_rights(0)) return + + var/mob/M = locate(href_list["regenerateicons"]) + if(!ismob(M)) + usr << "This can only be done to instances of type /mob" + return + M.regenerate_icons() + +//Needs +VAREDIT past this point + + if(!check_rights(R_VAREDIT)) return + else if(href_list["rename"]) if(!check_rights(0)) return @@ -453,17 +548,6 @@ client cmd_mass_modify_object_variables(A, href_list["varnamemass"]) - else if(href_list["mob_player_panel"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["mob_player_panel"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.holder.show_player_panel(M) - href_list["datumrefresh"] = href_list["mob_player_panel"] - else if(href_list["give_spell"]) if(!check_rights(0)) return @@ -487,7 +571,7 @@ client href_list["datumrefresh"] = href_list["give_spell"] else if(href_list["ninja"]) - if(!check_rights(0)) return + if(!check_rights(R_FUN)) return var/mob/M = locate(href_list["ninja"]) if(!istype(M)) @@ -497,19 +581,8 @@ client src.cmd_admin_ninjafy(M) href_list["datumrefresh"] = href_list["ninja"] - else if(href_list["godmode"]) - if(!check_rights(R_REJUVINATE)) return - - var/mob/M = locate(href_list["godmode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_godmode(M) - href_list["datumrefresh"] = href_list["godmode"] - else if(href_list["gib"]) - if(!check_rights(0)) return + if(!check_rights(R_FUN)) return var/mob/M = locate(href_list["gib"]) if(!istype(M)) @@ -552,7 +625,7 @@ client usr.client.cmd_assume_direct_control(M) else if(href_list["make_skeleton"]) - if(!check_rights(0)) return + if(!check_rights(R_FUN)) return var/mob/living/carbon/human/H = locate(href_list["make_skeleton"]) if(!istype(H)) @@ -606,7 +679,7 @@ client message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") else if(href_list["explode"]) - if(!check_rights(0)) return + if(!check_rights(R_FUN)) return var/atom/A = locate(href_list["explode"]) if(!isobj(A) && !ismob(A) && !isturf(A)) @@ -617,7 +690,7 @@ client href_list["datumrefresh"] = href_list["explode"] else if(href_list["emp"]) - if(!check_rights(0)) return + if(!check_rights(R_FUN)) return var/atom/A = locate(href_list["emp"]) if(!isobj(A) && !ismob(A) && !isturf(A)) @@ -627,17 +700,6 @@ client src.cmd_admin_emp(A) href_list["datumrefresh"] = href_list["emp"] - else if(href_list["mark_object"]) - if(!check_rights(0)) return - - var/datum/D = locate(href_list["mark_object"]) - if(!istype(D)) - usr << "This can only be done to instances of type /datum" - return - - src.holder.marked_datum = D - href_list["datumrefresh"] = href_list["mark_object"] - else if(href_list["rotatedatum"]) if(!check_rights(0)) return @@ -652,7 +714,7 @@ client href_list["datumrefresh"] = href_list["rotatedatum"] else if(href_list["makehuman"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"]) if(!istype(Mo)) @@ -666,7 +728,7 @@ client holder.Topic(href, list("humanone"=href_list["makehuman"])) else if(href_list["makemonkey"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) if(!istype(H)) @@ -680,7 +742,7 @@ client holder.Topic(href, list("monkeyone"=href_list["makemonkey"])) else if(href_list["makerobot"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["makerobot"]) if(!istype(H)) @@ -694,7 +756,7 @@ client holder.Topic(href, list("makerobot"=href_list["makerobot"])) else if(href_list["makealien"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["makealien"]) if(!istype(H)) @@ -708,7 +770,7 @@ client holder.Topic(href, list("makealien"=href_list["makealien"])) else if(href_list["makeslime"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["makeslime"]) if(!istype(H)) @@ -722,7 +784,7 @@ client holder.Topic(href, list("makeslime"=href_list["makeslime"])) else if(href_list["makeai"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["makeai"]) if(!istype(H)) @@ -736,7 +798,7 @@ client holder.Topic(href, list("makeai"=href_list["makeai"])) else if(href_list["setmutantrace"]) - if(!check_rights(0)) return + if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["setmutantrace"]) if(!istype(H)) @@ -755,15 +817,6 @@ client H.update_body() H.update_hair() - else if(href_list["regenerateicons"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["regenerateicons"]) - if(!ismob(M)) - usr << "This can only be done to instances of type /mob" - return - M.regenerate_icons() - else if(href_list["adjustDamage"] && href_list["mobToDamage"]) if(!check_rights(0)) return @@ -794,11 +847,6 @@ client message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") href_list["datumrefresh"] = href_list["mobToDamage"] - if(href_list["datumrefresh"]) - var/datum/DAT = locate(href_list["datumrefresh"]) - if(!istype(DAT, /datum)) - return - src.debug_variables(DAT) return From 17f6441f5e31b6fc2c39da068c629f333c300c46 Mon Sep 17 00:00:00 2001 From: Alek2ander Date: Thu, 12 Dec 2013 23:32:48 +0300 Subject: [PATCH 143/315] Oops --- code/datums/datumvars.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index fe8fbebc845..ad6a74a8997 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -370,7 +370,7 @@ client proc/debug_variable(name, value, level, var/datum/DA = null) var/html = "" - if(DA & check_rights(R_VAREDIT)) + if(DA && check_rights(R_VAREDIT)) html += "
  • (E) (C) (M) " else html += "
  • " From 193656347fbe0c6aeb71f4d1bd2b2573752f463b Mon Sep 17 00:00:00 2001 From: Alek2ander Date: Thu, 12 Dec 2013 23:49:15 +0300 Subject: [PATCH 144/315] Oh that's how it works --- code/datums/datumvars.dm | 704 +++++++++++++++++++-------------------- 1 file changed, 352 insertions(+), 352 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index ad6a74a8997..2a5e9d84fe3 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -172,7 +172,7 @@ client if(istype(D,/atom)) var/atom/A = D if(isliving(A)) - if(check_rights(R_VAREDIT)) + if(check_rights(R_VAREDIT,0)) body += "[D]" if(A.dir) body += "
    << [dir2text(A.dir)] >>" @@ -211,7 +211,7 @@ client "} else - if(check_rights(R_VAREDIT)) + if(check_rights(R_VAREDIT,0)) body += "[D]" if(A.dir) body += "
    << [dir2text(A.dir)] >>" @@ -269,29 +269,29 @@ client if(ismob(D)) body += "" body += "" - if(check_rights(R_REJUVINATE)) + if(check_rights(R_REJUVINATE,0)) body += "" - if(check_rights(R_VAREDIT)) + if(check_rights(R_VAREDIT,0)) if(ismob(D)) body += "" body += "" body += "" body += "" body += "" - if(check_rights(R_BUILDMODE)) + if(check_rights(R_BUILDMODE,0)) body += "" - if(check_rights(R_FUN)) + if(check_rights(R_FUN,0)) body += "" body += "" body += "" if(ishuman(D)) - if(check_rights(R_SPAWN)) + if(check_rights(R_SPAWN,0)) body += "" body += "" body += "" @@ -302,13 +302,13 @@ client if(isobj(D) || ismob(D) || isturf(D)) - if(check_rights(R_FUN)) + if(check_rights(R_FUN,0)) body += "" body += "" body += "" if(isobj(D)) - if(check_rights(R_DEBUG|R_SERVER)) + if(check_rights(R_DEBUG|R_SERVER,0)) body += "" body += "" @@ -316,7 +316,7 @@ client body += "" body += "
  • T&W8ge*<~O0Ew?U4tXBY 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 Date: Tue, 26 Nov 2013 19:54:48 +0000 Subject: [PATCH 033/315] Updated changelog to a table of symptoms. --- html/changelog.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index 26c94592384..5f4fec1b77c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -59,7 +59,7 @@ should be listed in the changelog upon commit tho. Thanks. -->

    26 November 2013

    Giacom updated:

      -
    • A less annoying virology system! From now on, you can only get low level virus symptoms from virus food, medium level virus symptoms from unstable mutagen and high level virus symptoms from liquid plasma.
    • +
    • A less annoying virology system! From now on, you can only get low level virus symptoms from virus food, medium level virus symptoms from unstable mutagen and high level virus symptoms from liquid plasma. You can find a list of symptoms, and which chemicals are required to get them, here: http://wiki.ss13.eu/index.php/Infections#Symptoms_Table
    • The virologist starts with a bottle of plasma in his smart fridge.
    • Made it so you cannot accidentally click in the gaps between chem masters.
    From 72ae84a0bbc62c08b215c8e9e90c301f6ae445a3 Mon Sep 17 00:00:00 2001 From: WitheredGryphon Date: Tue, 26 Nov 2013 20:20:14 -0600 Subject: [PATCH 034/315] Fixed the greyed out portable flasher issue. --- code/game/machinery/flasher.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 6dd2af1418d..37bb63254cf 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -26,12 +26,12 @@ bulb = new /obj/item/device/flash(src) /obj/machinery/flasher/power_change() - if (powered() && bulb && anchored) + if (powered() && anchored && bulb) stat &= ~NOPOWER if(bulb.broken) - icon_state = "[base_state]1-p" - else icon_state = "[base_state]1" + else + icon_state = "[base_state]1-p" else stat |= ~NOPOWER icon_state = "[base_state]1-p" @@ -132,14 +132,15 @@ if (!anchored && !isinspace()) user << "[src] is now secured." overlays.Cut() - power_change() anchored = 1 + power_change() + else user << "[src] can now be moved." overlays += "[base_state]-s" - power_change() anchored = 0 + power_change() else ..() From cdfc7ae7c3fff66b7cf72ec732ef5a184034cca0 Mon Sep 17 00:00:00 2001 From: WitheredGryphon Date: Tue, 26 Nov 2013 20:50:44 -0600 Subject: [PATCH 035/315] Re-fixed the flashers after breaking them --- code/game/machinery/flasher.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 37bb63254cf..05129852379 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -29,9 +29,9 @@ if (powered() && anchored && bulb) stat &= ~NOPOWER if(bulb.broken) - icon_state = "[base_state]1" - else icon_state = "[base_state]1-p" + else + icon_state = "[base_state]1" else stat |= ~NOPOWER icon_state = "[base_state]1-p" @@ -134,8 +134,6 @@ overlays.Cut() anchored = 1 power_change() - - else user << "[src] can now be moved." overlays += "[base_state]-s" From e4de436a1ecc6db7ad7ba07aef38a5023e30d85d Mon Sep 17 00:00:00 2001 From: TZK13 Date: Thu, 28 Nov 2013 00:15:56 -0600 Subject: [PATCH 036/315] Renamed psilocybin to mushroom hallucinogen, removed psilocybin/mushroom hallucinogen from huge mushroom slice, removed space drugs from reishi, added anti-toxin to reishi and lowered the amount of sleep toxin in reishi. --- code/modules/events/vent_clog.dm | 2 +- code/modules/food/recipes_microwave.dm | 4 +-- code/modules/hydroponics/grown.dm | 28 +++++++++---------- code/modules/hydroponics/seeds.dm | 4 +-- code/modules/reagents/Chemistry-Reagents.dm | 8 +++--- code/modules/reagents/Chemistry-Recipes.dm | 2 +- .../reagent_containers/food/snacks.dm | 9 +++--- 7 files changed, 28 insertions(+), 29 deletions(-) diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 8dce200e64f..405c54f99f4 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -25,7 +25,7 @@ if(activeFor % interval == 0) var/obj/vent = pick_n_take(vents) - var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","psilocybin","lube", + var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube", "plantbgone","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = vent diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 571ffbc6974..1b5b92b86e9 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -27,7 +27,7 @@ /* /datum/recipe/bananaphone - reagents = list("psilocybin" = 5) //Trippin' balls, man. + reagents = list("mushroomhallucinogen" = 5) //Trippin' balls, man. items = list( /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/device/radio @@ -704,7 +704,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup /datum/recipe/rofflewaffles - reagents = list("psilocybin" = 5, "flour" = 10) + reagents = list("mushroomhallucinogen" = 5, "flour" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/egg, diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 58525834c72..34dbd48b826 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -727,8 +727,8 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment",1+round((potency / 50), 1)) - reagents.add_reagent("anti_toxin",1+round((potency / 25), 1)) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("anti_toxin", 1+round((potency / 25), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper @@ -765,22 +765,22 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi seed = "/obj/item/seeds/reishimycelium" name = "reishi" - desc = "Ganoderma lucidum: A special fungus believed to help relieve stress." + desc = "Ganoderma lucidum: A special fungus known for its medicinal and stress relieving properties." icon_state = "reishi" potency = 10 New() ..() spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1) - reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("space_drugs", 1+round(potency / 25, 1)) + reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1)) + reagents.add_reagent("stoxin", 2+round(potency / 3, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) + user << "- Anti-Toxin: [reagents.get_reagent_amount("anti_toxin")]%" user << "- Sleep Toxin: [reagents.get_reagent_amount("stoxin")]%" - user << "- Space Drugs: [reagents.get_reagent_amount("space_drugs")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita seed = "/obj/item/seeds/amanitamycelium" @@ -793,14 +793,14 @@ spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1) reagents.add_reagent("amatoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("psilocybin", 1+round(potency / 25, 1)) + reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%" - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel seed = "/obj/item/seeds/angelmycelium" @@ -813,14 +813,14 @@ spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) - reagents.add_reagent("psilocybin", 1+round(potency / 25, 1)) + reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%" - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap seed = "/obj/item/seeds/libertymycelium" @@ -832,13 +832,13 @@ ..() spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("psilocybin", 3+round(potency / 5, 1)) + reagents.add_reagent("mushroomhallucinogen", 3+round(potency / 5, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet seed = "/obj/item/seeds/plumpmycelium" @@ -878,7 +878,7 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment",1+round((potency / 25), 1)) + reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom @@ -897,7 +897,7 @@ potency = 30 plant_type = 2 spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("radium",1+round((potency / 20), 1)) + reagents.add_reagent("radium", 1+round((potency / 20), 1)) if(istype(src.loc,/mob)) pickup(src.loc)//adjusts the lighting on the mob else diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 74b271e1b58..4360c5f2a1e 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -429,7 +429,7 @@ /obj/item/seeds/reishimycelium name = "pack of reishi mycelium" - desc = "This mycelium grows into something relaxing." + desc = "This mycelium grows into something medicinal and relaxing." icon_state = "mycelium-reishi" species = "reishi" plantname = "Reishi" @@ -439,7 +439,7 @@ maturation = 10 production = 5 yield = 4 - potency = 15 // Sleeping based on potency? + potency = 15 oneharvest = 1 growthstages = 4 plant_type = 2 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9cdebc3d7bb..9c0381f4d97 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1946,10 +1946,10 @@ datum ..() return - psilocybin - name = "Psilocybin" - id = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." + mushroomhallucinogen + name = "Mushroom Hallucinogen" + id = "mushroomhallucinogen" + description = "A strong hallucinogenic drug derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 on_mob_life(var/mob/living/M as mob) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 8b2b69a1bd9..c130d60f23e 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -2113,7 +2113,7 @@ datum name = "Hippies Delight" id = "hippiesdelight" result = "hippiesdelight" - required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) + required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1) result_amount = 2 bananahonk diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 91bf272d0a2..ea45c21d4d4 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -545,7 +545,6 @@ New() ..() reagents.add_reagent("nutriment", 3) - reagents.add_reagent("psilocybin", 3) src.bitesize = 6 /obj/item/weapon/reagent_containers/food/snacks/tomatomeat @@ -873,7 +872,7 @@ ..() reagents.add_reagent("nutriment", 5) reagents.add_reagent("amatoxin", 3) - reagents.add_reagent("psilocybin", 1) + reagents.add_reagent("mushroomhallucinogen", 1) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/plump_pie @@ -1112,7 +1111,7 @@ New() ..() reagents.add_reagent("nutriment", 6) - reagents.add_reagent("psilocybin", 6) + reagents.add_reagent("mushroomhallucinogen", 6) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/amanitajelly @@ -1124,7 +1123,7 @@ ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("amatoxin", 6) - reagents.add_reagent("psilocybin", 3) + reagents.add_reagent("mushroomhallucinogen", 3) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/poppypretzel @@ -1467,7 +1466,7 @@ New() ..() reagents.add_reagent("nutriment", 8) - reagents.add_reagent("psilocybin", 8) + reagents.add_reagent("mushroomhallucinogen", 8) bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/stew From fc94341bcec0934f4e2613c93816897348255e59 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 28 Nov 2013 05:45:49 -0300 Subject: [PATCH 037/315] Removed the impossible NOBLOODY flag, replaced it with a simple proc. rejects_blood() --- code/__DEFINES/flags.dm | 1 - code/game/atoms.dm | 4 +++- .../objects/items/devices/radio/intercom.dm | 5 ++++- .../objects/items/weapons/melee/energy.dm | 19 +++++++++++-------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 39b63cea985..a3e62b1a83b 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -16,7 +16,6 @@ #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define NOBLOODY 65535 // used by objects that don't want to get bloodied #define GLASSESCOVERSEYES 1024 #define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5e0141ce40e..9dd09d89494 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -241,7 +241,7 @@ var/list/blood_splatter_icons = list() //returns 1 if made bloody, returns 0 otherwise /atom/proc/add_blood(mob/living/carbon/M) - if(flags & NOBLOODY) + if(rejects_blood()) return 0 if(!initial(icon) || !initial(icon_state)) return 0 @@ -294,6 +294,8 @@ var/list/blood_splatter_icons = list() update_inv_gloves() //handles bloody hands overlays and updating return 1 //we applied blood to the item +/atom/proc/rejects_blood() + return 0 /atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) if( istype(src, /turf/simulated) ) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 83c7fb7f1c0..52c4945ef18 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -5,7 +5,7 @@ anchored = 1 w_class = 4.0 canhear_range = 2 - flags = FPRINT | CONDUCT | TABLEPASS | NOBLOODY + flags = FPRINT | CONDUCT | TABLEPASS var/number = 0 var/anyai = 1 var/mob/living/silicon/ai/ai = list() @@ -73,3 +73,6 @@ icon_state = "intercom-p" else icon_state = "intercom" + +/obj/item/device/radio/intercom/rejects_blood() + return 1 \ No newline at end of file diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index f7d484b1832..3ae20446c88 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -1,11 +1,14 @@ /obj/item/weapon/melee/energy var/active = 0 - flags = FPRINT | TABLEPASS | NOBLOODY + flags = FPRINT | TABLEPASS - suicide_act(mob/user) - viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ - "\red [user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") - return (BRUTELOSS|FIRELOSS) +/obj/item/weapon/melee/energy/suicide_act(mob/user) + viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ + "\red [user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + return (BRUTELOSS|FIRELOSS) + +/obj/item/weapon/melee/energy/rejects_blood() + return 1 /obj/item/weapon/melee/energy/axe name = "energy axe" @@ -16,7 +19,7 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS | NOBLOODY + flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS origin_tech = "combat=3" attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") @@ -50,7 +53,7 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY + flags = FPRINT | TABLEPASS | NOSHIELD origin_tech = "magnets=3;syndicate=4" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/hacked = 0 @@ -152,7 +155,7 @@ throw_speed = 1 throw_range = 1 w_class = 4.0//So you can't hide it in your pocket or some such. - flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY + flags = FPRINT | TABLEPASS | NOSHIELD attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/datum/effect/effect/system/spark_spread/spark_system From e82a06fc68a8af00a8b6d919bf8dfef7bafc8d9d Mon Sep 17 00:00:00 2001 From: Emil Date: Thu, 28 Nov 2013 15:55:01 +0100 Subject: [PATCH 038/315] Update mind.dm Should fix #1870 where href-crap was saved in the adminlogs. --- code/datums/mind.dm | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index e639bd179a9..58da8fc0f72 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -504,7 +504,7 @@ datum/mind ticker.mode.update_rev_icons_removed(src) special_role = null message_admins("[key_name_admin(usr)] has de-rev'ed [current].") - log_admin("[key_name_admin(usr)] has de-rev'ed [current].") + log_admin("[key_name(usr)] has de-rev'ed [current].") if("rev") if(src in ticker.mode.head_revolutionaries) @@ -519,7 +519,7 @@ datum/mind ticker.mode.update_rev_icons_added(src) special_role = "Revolutionary" message_admins("[key_name_admin(usr)] has rev'ed [current].") - log_admin("[key_name_admin(usr)] has rev'ed [current].") + log_admin("[key_name(usr)] has rev'ed [current].") if("headrev") if(src in ticker.mode.revolutionaries) @@ -545,7 +545,7 @@ datum/mind ticker.mode.update_rev_icons_added(src) special_role = "Head Revolutionary" message_admins("[key_name_admin(usr)] has head-rev'ed [current].") - log_admin("[key_name_admin(usr)] has head-rev'ed [current].") + log_admin("[key_name(usr)] has head-rev'ed [current].") if("autoobjectives") ticker.mode.forge_revolutionary_objectives(src) @@ -595,7 +595,7 @@ datum/mind current << "\red You have been brainwashed! You are no longer a cultist!" memory = "" message_admins("[key_name_admin(usr)] has de-cult'ed [current].") - log_admin("[key_name_admin(usr)] has de-cult'ed [current].") + log_admin("[key_name(usr)] has de-cult'ed [current].") if("cultist") if(!(src in ticker.mode.cult)) ticker.mode.cult += src @@ -607,7 +607,7 @@ datum/mind if (istype(cult)) cult.memorize_cult_objectives(src) message_admins("[key_name_admin(usr)] has cult'ed [current].") - log_admin("[key_name_admin(usr)] has cult'ed [current].") + log_admin("[key_name(usr)] has cult'ed [current].") if("tome") var/mob/living/carbon/human/H = current if (istype(H)) @@ -638,7 +638,7 @@ datum/mind special_role = null current.spellremove(current) current << "\red You have been brainwashed! You are no longer a wizard!" - log_admin("[key_name_admin(usr)] has de-wizard'ed [current].") + log_admin("[key_name(usr)] has de-wizard'ed [current].") if("wizard") if(!(src in ticker.mode.wizards)) ticker.mode.wizards += src @@ -646,7 +646,7 @@ datum/mind //ticker.mode.learn_basic_spells(current) current << "\red You are the Space Wizard!" message_admins("[key_name_admin(usr)] has wizard'ed [current].") - log_admin("[key_name_admin(usr)] has wizard'ed [current].") + log_admin("[key_name(usr)] has wizard'ed [current].") if("lair") current.loc = pick(wizardstart) if("dressup") @@ -668,7 +668,7 @@ datum/mind if(changeling) del(changeling) current << "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!" message_admins("[key_name_admin(usr)] has de-changeling'ed [current].") - log_admin("[key_name_admin(usr)] has de-changeling'ed [current].") + log_admin("[key_name(usr)] has de-changeling'ed [current].") if("changeling") if(!(src in ticker.mode.changelings)) ticker.mode.changelings += src @@ -676,7 +676,7 @@ datum/mind special_role = "Changeling" current << "Your powers are awoken. A flash of memory returns to us...we are a changeling!" message_admins("[key_name_admin(usr)] has changeling'ed [current].") - log_admin("[key_name_admin(usr)] has changeling'ed [current].") + log_admin("[key_name(usr)] has changeling'ed [current].") if("autoobjectives") ticker.mode.forge_changeling_objectives(src) usr << "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually." @@ -702,7 +702,7 @@ datum/mind objectives-=O current << "\red You have been brainwashed! You are no longer a syndicate operative!" message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].") - log_admin("[key_name_admin(usr)] has de-nuke op'ed [current].") + log_admin("[key_name(usr)] has de-nuke op'ed [current].") if("nuclear") if(!(src in ticker.mode.syndicates)) ticker.mode.syndicates += src @@ -716,7 +716,7 @@ datum/mind ticker.mode.forge_syndicate_objectives(src) ticker.mode.greet_syndicate(src) message_admins("[key_name_admin(usr)] has nuke op'ed [current].") - log_admin("[key_name_admin(usr)] has nuke op'ed [current].") + log_admin("[key_name(usr)] has nuke op'ed [current].") if("lair") current.loc = get_turf(locate("landmark*Syndicate-Spawn")) if("dressup") @@ -753,7 +753,7 @@ datum/mind special_role = null current << "\red You have been brainwashed! You are no longer a traitor!" message_admins("[key_name_admin(usr)] has de-traitor'ed [current].") - log_admin("[key_name_admin(usr)] has de-traitor'ed [current].") + log_admin("[key_name(usr)] has de-traitor'ed [current].") if(isAI(current)) var/mob/living/silicon/ai/A = current A.set_zeroth_law("") @@ -766,7 +766,7 @@ datum/mind special_role = "traitor" current << "\red You are a traitor!" message_admins("[key_name_admin(usr)] has traitor'ed [current].") - log_admin("[key_name_admin(usr)] has traitor'ed [current].") + log_admin("[key_name(usr)] has traitor'ed [current].") if(isAI(current)) var/mob/living/silicon/ai/A = current call(/datum/game_mode/proc/add_law_zero)(A) @@ -845,12 +845,12 @@ datum/mind A << "\red You have been patched! You are no longer malfunctioning!" message_admins("[key_name_admin(usr)] has de-malf'ed [A].") - log_admin("[key_name_admin(usr)] has de-malf'ed [A].") + log_admin("[key_name(usr)] has de-malf'ed [A].") if("malf") make_AI_Malf() message_admins("[key_name_admin(usr)] has malf'ed [current].") - log_admin("[key_name_admin(usr)] has malf'ed [current].") + log_admin("[key_name(usr)] has malf'ed [current].") if("unemag") var/mob/living/silicon/robot/R = current @@ -868,7 +868,7 @@ datum/mind R.module_state_3 = null R.contents -= R.module.emag message_admins("[key_name_admin(usr)] has unemag'ed [R].") - log_admin("[key_name_admin(usr)] has unemag'ed [R].") + log_admin("[key_name(usr)] has unemag'ed [R].") if("unemagcyborgs") if (istype(current, /mob/living/silicon/ai)) @@ -888,7 +888,7 @@ datum/mind R.module_state_3 = null R.contents -= R.module.emag message_admins("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.") - log_admin("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.") + log_admin("[key_name(usr)] has unemag'ed [ai]'s Cyborgs.") else if (href_list["common"]) switch(href_list["common"]) @@ -898,7 +898,7 @@ datum/mind if("takeuplink") take_uplink() memory = null//Remove any memory they may have had. - log_admin("[key_name_admin(usr)] removed [current]'s uplink.") + log_admin("[key_name(usr)] removed [current]'s uplink.") if("crystals") if (check_rights(R_FUN, 0)) var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink() @@ -909,11 +909,11 @@ datum/mind if (!isnull(crystals)) if (suplink) suplink.uses = crystals - log_admin("[key_name_admin(usr)] changed [current]'s telecrystal count to [crystals].") + log_admin("[key_name(usr)] changed [current]'s telecrystal count to [crystals].") if("uplink") if (!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors))) usr << "\red Equipping a syndicate failed!" - log_admin("[key_name_admin(usr)] attempted to give [current] an uplink.") + log_admin("[key_name(usr)] attempted to give [current] an uplink.") else if (href_list["obj_announce"]) var/obj_count = 1 From f91adaea9d6dcb75503a71c65ad6e03b54b6e461 Mon Sep 17 00:00:00 2001 From: Miauw Date: Thu, 28 Nov 2013 19:38:32 +0100 Subject: [PATCH 039/315] Cult talismans now appear in your hand instead of on the floor. --- code/game/gamemodes/cult/talisman.dm | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index a343fa47974..3c981c1de40 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -90,29 +90,37 @@ if (href_list["rune"]) switch(href_list["rune"]) if("newtome") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "newtome" if("teleport") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")]" T.info = "[T.imbue]" if("emp") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "emp" if("conceal") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "conceal" if("communicate") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "communicate" if("runestun") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "runestun" if("armor") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "armor" if("soulstone") - new /obj/item/device/soulstone(get_turf(usr)) + var/obj/item/device/soulstone/T = new /obj/item/device/soulstone(usr) + usr.put_in_hands(T) if("construct") new /obj/structure/constructshell(get_turf(usr)) src.uses-- From abb2b6bdf68f7d8203faf8894a63c65e82f23f23 Mon Sep 17 00:00:00 2001 From: VistaPOWA Date: Thu, 28 Nov 2013 20:19:24 +0100 Subject: [PATCH 040/315] Removes an annoying message from hydrophonics. It's been bothering me for some time., it looks out of place and it's not like that the botanist won't notice it. (No idea why some empty lines were modified) --- code/modules/hydroponics/hydroponics.dm | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index b9c25badad5..a7f14f589f3 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -228,7 +228,7 @@ obj/machinery/hydroponics/proc/hardmutate() obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant! if(!planted || dead) return - + var/oldPlantName = myseed.plantname if(myseed.mutatelist.len > 0) var/mutantseed = pick(myseed.mutatelist) @@ -282,7 +282,6 @@ obj/machinery/hydroponics/proc/plantdies() // OH NOES!!!!! I put this all in one pestlevel = 0 // Pests die if(!dead) update_icon() - visible_message("\improper\red [myseed.plantname] are looking very unhealthy!") dead = 1 @@ -314,9 +313,9 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) else if(istype(O, /obj/item/weapon/reagent_containers) ) // Syringe stuff (and other reagent containers now too) var/obj/item/weapon/reagent_containers/reagent_source = O var/datum/reagents/S = new /datum/reagents() - + S.my_atom = src - + var/obj/target = myseed ? myseed.plantname : src if(istype(reagent_source, /obj/item/weapon/reagent_containers/syringe)) @@ -327,7 +326,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(!reagent_source.reagents.total_volume) user << "[reagent_source] is empty." return 1 - + if(istype(reagent_source, /obj/item/weapon/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/weapon/reagent_containers/pill)) visible_message("[user] composts [reagent_source], spreading it through [target].") reagent_source.reagents.trans_to(S,reagent_source.reagents.total_volume) @@ -345,7 +344,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) else if(reagent_source.amount_per_transfer_from_this) // Droppers, cans, beakers, what have you. visible_message("[user] uses [reagent_source] on [target].") - + // Beakers, bottles, buckets, etc. Can't use is_open_container though. if(istype(reagent_source, /obj/item/weapon/reagent_containers/glass/)) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) @@ -540,7 +539,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) user << "-Water level: \blue [waterlevel]/100" user << "-Nutrition level: \blue [nutrilevel]/10" user << "" - + else if(istype(O, /obj/item/weapon/minihoe)) if(weedlevel > 0) user.visible_message("[user] uproots the weeds.", "You remove the weeds from [src].") From ce063d78cfe006856848577f21a1edb8d51b1de1 Mon Sep 17 00:00:00 2001 From: TZK13 Date: Thu, 28 Nov 2013 14:17:08 -0600 Subject: [PATCH 041/315] Returned the amount of sleep toxin in reishi back to what it was before. --- code/modules/hydroponics/grown.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 34dbd48b826..de28dd85e59 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -773,7 +773,7 @@ spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1) reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1)) - reagents.add_reagent("stoxin", 2+round(potency / 3, 1)) + reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob) From 94f64b17521a0f5d03533bd5709c5e3da7ec689f Mon Sep 17 00:00:00 2001 From: Zelacks Date: Fri, 29 Nov 2013 05:20:49 +0800 Subject: [PATCH 042/315] Changes feedback message for NOCLONE in cloner --- code/game/machinery/computer/cloning.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index ea04fbd5775..5400185bd75 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -325,10 +325,10 @@ if (subject.suiciding == 1) scantemp = "Subject's brain is not responding to scanning stimuli." return - if ((!subject.ckey) || (!subject.client)) - scantemp = "Mental interface failure." - return if (NOCLONE in subject.mutations) + scantemp = "Subject no longer contains the fundamental materials required to create a living clone." + return + if ((!subject.ckey) || (!subject.client)) scantemp = "Mental interface failure." return if (find_record("ckey", subject.ckey, records)) From e3d2f9ffe7ce02877e7babe9b746dcda46bb8613 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Thu, 28 Nov 2013 23:07:50 -0500 Subject: [PATCH 043/315] DONE Leather gloves now have heat protection like black gloves (to allow removing lights bulbs/tubes) DONE Plants require 4 light, mushrooms only 2 DONE Harvesting should report how many items were harvested (whether plantbag is used or not) DONE Plantbag should have a mode to only pick up one kind of plant at a time. Trash and ore bags too. DONE 1 unit of mutagen should cause non-species mutations. (Radium too) DONE Uranium should be like radium but even weaker --- code/game/objects/items.dm | 6 ++- .../objects/items/weapons/storage/storage.dm | 6 ++- code/modules/clothing/gloves/miscellaneous.dm | 6 ++- code/modules/hydroponics/hydroponics.dm | 40 +++++++++++++++---- code/modules/mining/mine_turfs.dm | 2 +- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5543df78437..564e8f1679e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -180,19 +180,23 @@ if(istype(W,/obj/item/weapon/storage)) var/obj/item/weapon/storage/S = W if(S.use_to_pickup) - if(S.collection_mode) //Mode is set to collect all items on a tile and we clicked on a valid one. + if(S.collection_mode) //Mode is set to collect multiple items on a tile and we clicked on a valid one. if(isturf(src.loc)) var/list/rejections = list() var/success = 0 var/failure = 0 for(var/obj/item/I in src.loc) + if(S.collection_mode == 2 && !istype(I,src.type)) // We're only picking up items of the target type + failure = 1 + continue if(I.type in rejections) // To limit bag spamming: any given type only complains once continue if(!S.can_be_inserted(I)) // Note can_be_inserted still makes noise when the answer is no rejections += I.type // therefore full bags are still a little spammy failure = 1 continue + success = 1 S.handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. if(success && !failure) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 3baf7f4f3f6..9ffdefc464d 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -20,7 +20,7 @@ var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. - var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile + var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type /obj/item/weapon/storage/MouseDrop(obj/over_object) @@ -351,8 +351,10 @@ set name = "Switch Gathering Method" set category = "Object" - collection_mode = !collection_mode + collection_mode = (collection_mode+1)%3 switch (collection_mode) + if(2) + usr << "[src] now picks up all items of a single type at once." if(1) usr << "[src] now picks up all items in a tile at once." if(0) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 6ab112d03d8..2e551d4161b 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -42,8 +42,12 @@ item_color = "medical" //Exists for washing machines. Is not different from latex gloves in any way. /obj/item/clothing/gloves/botanic_leather - desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." + desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm." name = "botanist's leather gloves" icon_state = "leather" item_state = "ggloves" permeability_coefficient = 0.9 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT \ No newline at end of file diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index b9c25badad5..e3c032c7d30 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -58,6 +58,18 @@ obj/machinery/hydroponics/process() if(nutrilevel <= 0 && myseed.plant_type != 1) adjustHealth(-rand(1,3)) +//Photosynthesis///////////////////////////////////////////////////////// + // Lack of light hurts non-mushrooms + if(isturf(loc)) + var/turf/currentTurf = loc + var/lightAmt = currentTurf.lighting_lumcount + if(myseed.plant_type == 2) // Mushroom + if(lightAmt < 2) + adjustHealth(-1) + else // Non-mushroom + if(lightAmt < 4) + adjustHealth(-2) + //Water////////////////////////////////////////////////////////////////// // Drink random amount of water adjustWater(-rand(1,6)) @@ -349,8 +361,8 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) // Beakers, bottles, buckets, etc. Can't use is_open_container though. if(istype(reagent_source, /obj/item/weapon/reagent_containers/glass/)) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - - // There needs to be a good amount of mutagen to actually work + + // Requires 5 mutagen to possibly change species. if(S.has_reagent("mutagen", 5)) switch(rand(100)) if(91 to 100) plantdies() @@ -361,6 +373,11 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(11 to 20) mutateweed() if(1 to 10) mutatepest() else user << "Nothing happens..." + // 2 or 1 units is enough to change the yield and other stats. + else if(S.has_reagent("mutagen", 2)) + hardmutate() + else if(S.has_reagent("mutagen", 1)) + mutate() // Antitoxin binds shit pretty well. So the tox goes significantly down if(S.has_reagent("anti_toxin", 1)) @@ -463,10 +480,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) adjustNutri(round(S.get_reagent_amount("nutriment")*1)) // Poor man's mutagen. - if(S.has_reagent("radium", 1)) - adjustHealth(-round(S.get_reagent_amount("radium")*1.5)) - adjustToxic(round(S.get_reagent_amount("radium")*2)) - if(S.has_reagent("radium", 10)) + if(S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) switch(rand(100)) if(91 to 100) plantdies() if(81 to 90) mutatespecie() @@ -476,6 +490,14 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(11 to 20) mutateweed() if(1 to 10) mutatepest() else user << "Nothing happens..." + // Can change the yield and other stats, but requires more than mutagen + else if(S.has_reagent("radium", 4) || S.has_reagent("uranium", 5)) + hardmutate() + else if(S.has_reagent("radium", 2) || S.has_reagent("uranium", 3)) + mutate() + else if(S.has_reagent("radium", 1) || S.has_reagent("uranium", 1)) + adjustHealth(-round(S.get_reagent_amount("radium")*1.5)) + adjustToxic(round(S.get_reagent_amount("radium")*2)) // The best stuff there is. For testing/debugging. if(S.has_reagent("adminordrazine", 1)) @@ -812,10 +834,12 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/machinery/hydroponics/proc/update_tray(mob/user = usr) harvest = 0 lastproduce = age - if((yieldmod * myseed.yield) <= 0) + if(istype(myseed,/obj/item/seeds/replicapod/)) + user << "You harvest from the [myseed.plantname]." + else if((yieldmod * myseed.yield) <= 0) user << "\red You fail to harvest anything useful." else - user << "You harvest from the [myseed.plantname]." + user << "You harvest [yieldmod * myseed.yield] items from the [myseed.plantname]." if(myseed.oneharvest) del(myseed) planted = 0 diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index c182a1a5a32..a92a6019ec3 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -415,7 +415,7 @@ if(istype(W,/obj/item/weapon/storage/bag/ore)) var/obj/item/weapon/storage/bag/ore/S = W - if(S.collection_mode) + if(S.collection_mode == 1) for(var/obj/item/weapon/ore/O in src.contents) O.attackby(W,user) return From 3fc5314e2b65895b8fcc066a5223df39afca4165 Mon Sep 17 00:00:00 2001 From: adrix89 Date: Fri, 29 Nov 2013 10:56:17 +0200 Subject: [PATCH 044/315] Quick equip active storage,toolbelt,backpack. --- code/modules/mob/living/carbon/human/inventory.dm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index d6badd8be93..d9a7d1d4499 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -13,8 +13,18 @@ update_inv_l_hand(0) else update_inv_r_hand(0) - else - H << "\red You are unable to equip that." + else if(s_active && s_active.can_be_inserted(I,1)) //if storage active insert there + s_active.handle_item_insertion(I) + else + var/obj/item/weapon/storage/S = H.get_item_by_slot(slot_belt) + if(S && S.can_be_inserted(I,1)) //else we put in belt + S.handle_item_insertion(I) + else + S = H.get_item_by_slot(slot_back) //else we put in backpack + if(S && S.can_be_inserted(I,1)) + S.handle_item_insertion(I) + else + H << "\red You are unable to equip that." /mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/I, list/slots, del_on_fail = 1) From 6b9d399298495d6c097aaa6a723677ae9194f368 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Fri, 29 Nov 2013 08:33:24 -0300 Subject: [PATCH 045/315] Larvas won't try to use their non-existant plasma display and runtime to hell anymore. --- code/modules/mob/living/carbon/alien/alien.dm | 3 +-- code/modules/mob/living/carbon/alien/screen.dm | 9 ++++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 1c07bd94b24..23fcf21929a 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -41,8 +41,7 @@ /mob/living/carbon/alien/adjustToxLoss(amount) storedPlasma = min(max(storedPlasma + amount,0),max_plasma) //upper limit of max_plasma, lower limit of 0 - if(hud_used) //clientless aliens - hud_used.alien_plasma_display.maptext = "
    [storedPlasma]
    " + updatePlasmaDisplay() return /mob/living/carbon/alien/adjustFireLoss(amount) // Weak to Fire diff --git a/code/modules/mob/living/carbon/alien/screen.dm b/code/modules/mob/living/carbon/alien/screen.dm index 26b699276f8..8ad742fdb64 100644 --- a/code/modules/mob/living/carbon/alien/screen.dm +++ b/code/modules/mob/living/carbon/alien/screen.dm @@ -1,3 +1,10 @@ /obj/screen/zone_sel/alien/update_icon() overlays.Cut() - overlays += selecting \ No newline at end of file + overlays += selecting + +/mob/living/carbon/alien/proc/updatePlasmaDisplay() + if(hud_used) //clientless aliens + hud_used.alien_plasma_display.maptext = "
    [storedPlasma]
    " + +/mob/living/carbon/alien/larva/updatePlasmaDisplay() + return \ No newline at end of file From aa18fb79d19a6abd404feb4b56bf07755d3264c8 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Fri, 29 Nov 2013 09:10:22 -0500 Subject: [PATCH 046/315] Fixed a bug where uranium wasn't dealing health damage. Made the mutation rate for radium and uranium equal for simplicity's sake, but radium adds more toxicity. --- code/modules/hydroponics/hydroponics.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index e3c032c7d30..fa230aa3bf9 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -491,13 +491,18 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(1 to 10) mutatepest() else user << "Nothing happens..." // Can change the yield and other stats, but requires more than mutagen - else if(S.has_reagent("radium", 4) || S.has_reagent("uranium", 5)) + else if(S.has_reagent("radium", 5) || S.has_reagent("uranium", 5)) hardmutate() - else if(S.has_reagent("radium", 2) || S.has_reagent("uranium", 3)) + else if(S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) mutate() - else if(S.has_reagent("radium", 1) || S.has_reagent("uranium", 1)) - adjustHealth(-round(S.get_reagent_amount("radium")*1.5)) - adjustToxic(round(S.get_reagent_amount("radium")*2)) + + // After handling the mutating, we now handle the damage from adding crude radioactives... + if(S.has_reagent("uranium", 1)) + adjustHealth(-round(S.get_reagent_amount("uranium")*1)) + adjustToxic(round(S.get_reagent_amount("uranium")*2)) + if(S.has_reagent("radium", 1)) + adjustHealth(-round(S.get_reagent_amount("radium")*1)) + adjustToxic(round(S.get_reagent_amount("radium")*3)) // Radium is harsher (OOC: also easier to produce) // The best stuff there is. For testing/debugging. if(S.has_reagent("adminordrazine", 1)) From 3cfbd7ecff76fe5cb8d6f55e5dfb0f6b6e1422f0 Mon Sep 17 00:00:00 2001 From: adrix89 Date: Fri, 29 Nov 2013 16:20:17 +0200 Subject: [PATCH 047/315] Added putting in box if you have it in your other hand --- code/modules/mob/living/carbon/human/inventory.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index d9a7d1d4499..b916df2c0be 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -5,6 +5,7 @@ if(ishuman(src)) var/mob/living/carbon/human/H = src var/obj/item/I = H.get_active_hand() + var/obj/item/weapon/storage/S = H.get_inactive_hand() if(!I) H << "You are not holding anything to equip." return @@ -15,8 +16,10 @@ update_inv_r_hand(0) else if(s_active && s_active.can_be_inserted(I,1)) //if storage active insert there s_active.handle_item_insertion(I) - else - var/obj/item/weapon/storage/S = H.get_item_by_slot(slot_belt) + else if(S && S.can_be_inserted(I,1)) //see if we have box in other hand + S.handle_item_insertion(I) + else + S = H.get_item_by_slot(slot_belt) if(S && S.can_be_inserted(I,1)) //else we put in belt S.handle_item_insertion(I) else From 0a31f2640296ca6734593187599b524c0ff191d1 Mon Sep 17 00:00:00 2001 From: adrix89 Date: Fri, 29 Nov 2013 21:55:45 +0200 Subject: [PATCH 048/315] Fixed bug that tried to put things in items with no storage This should work perfectly now. --- code/modules/mob/living/carbon/human/inventory.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b916df2c0be..86469725bd0 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -16,15 +16,15 @@ update_inv_r_hand(0) else if(s_active && s_active.can_be_inserted(I,1)) //if storage active insert there s_active.handle_item_insertion(I) - else if(S && S.can_be_inserted(I,1)) //see if we have box in other hand + else if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1)) //see if we have box in other hand S.handle_item_insertion(I) else S = H.get_item_by_slot(slot_belt) - if(S && S.can_be_inserted(I,1)) //else we put in belt + if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1)) //else we put in belt S.handle_item_insertion(I) else S = H.get_item_by_slot(slot_back) //else we put in backpack - if(S && S.can_be_inserted(I,1)) + if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1)) S.handle_item_insertion(I) else H << "\red You are unable to equip that." From f968f803006e7a9da1ab4d8a64038a6178a65bb6 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 29 Nov 2013 20:30:38 +0000 Subject: [PATCH 049/315] Tweaked meteors to stop playing unnecessary sounds. Made meteors shake the screen more if you're closer and shake the screen of everybody on the station a little (big meteors only). --- code/game/gamemodes/meteor/meteors.dm | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 3c57249bb7c..e6f8833a2a6 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -1,5 +1,3 @@ -#define METEOR_TEMPERATURE - /var/const/meteor_wave_delay = 625 //minimum wait between waves in tenths of seconds //set to at least 100 unless you want evarr ruining every round @@ -95,18 +93,9 @@ icon_state = "smallf" pass_flags = PASSTABLE | PASSGRILLE -/obj/effect/meteor/Move() - var/turf/T = src.loc - if (istype(T, /turf)) - T.hotspot_expose(METEOR_TEMPERATURE, 1000) - ..() - return - /obj/effect/meteor/Bump(atom/A) spawn(0) - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view - shake_camera(M, 3, 1) + if (A) A.meteorhit(src) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) @@ -117,9 +106,7 @@ if(!istype(A,/obj/machinery/power/emitter) && \ !istype(A,/obj/machinery/field/generator) && \ prob(15)) - explosion(src.loc, 4, 5, 6, 7, 0) - playsound(src.loc, "explosion", 50, 1) del(src) return @@ -146,16 +133,18 @@ if(--src.hits <= 0) del(src) //Dont blow up singularity containment if we get stuck there. - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view - shake_camera(M, 3, 1) if (A) + for(var/mob/M in player_list) + var/turf/T = get_turf(M) + if(!T || T.z != src.z) + continue + shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3) + M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10) explosion(src.loc, 0, 1, 2, 3, 0) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) + if (--src.hits <= 0) if(prob(15) && !istype(A, /obj/structure/grille)) explosion(src.loc, 1, 2, 3, 4, 0) - playsound(src.loc, "explosion", 50, 1) del(src) return From 31ba392a85f1b2a658b8e270a777d0ac00b15123 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 29 Nov 2013 21:05:23 +0000 Subject: [PATCH 050/315] Fixes DAs not correctly getting the right traitor title before being set as a target. --- code/game/gamemodes/traitor/double_agents.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm index f8276ee8222..f07cd2a5437 100644 --- a/code/game/gamemodes/traitor/double_agents.dm +++ b/code/game/gamemodes/traitor/double_agents.dm @@ -65,9 +65,10 @@ if(i + 1 > late_joining_list.len) i = 0 target_list[traitor] = late_joining_list[i + 1] + traitor.special_role = traitor_name // Now, give them their targets - for(var/datum/mind/traitor in late_joining_list) + for(var/datum/mind/traitor in target_list) ..(traitor) late_joining_list = list() From 95a2fff302684beee34be57e404a07a0c4e981b1 Mon Sep 17 00:00:00 2001 From: Emil Date: Sat, 30 Nov 2013 00:17:38 +0100 Subject: [PATCH 051/315] Fixed out of date mind.dm, then applied the fix. --- code/datums/mind.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 58da8fc0f72..9f058a3e9a6 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -47,6 +47,8 @@ datum/mind var/has_been_rev = 0//Tracks if this mind has been a rev or not + var/list/cult_words = list() + var/datum/faction/faction //associated faction var/datum/changeling/changeling //changeling holder @@ -64,6 +66,9 @@ datum/mind current.verbs -= /datum/changeling/proc/EvolutionMenu current.mind = null + nanomanager.user_transferred(current, new_character) + + if(key) if(new_character.key != key) //if we're transfering into a body with a key associated which is not ours new_character.ghostize(1) //we'll need to ghostize so that key isn't mobless. @@ -821,7 +826,8 @@ datum/mind log_admin("[key_name(usr)] attempting to humanize [key_name(current)]") message_admins("\blue [key_name_admin(usr)] attempting to humanize [key_name_admin(current)]") H = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) - src = H.mind + if(H) + src = H.mind else if (href_list["silicon"]) switch(href_list["silicon"]) @@ -1184,7 +1190,7 @@ datum/mind mind.special_role = "" //BLOB -/mob/camera/overmind/mind_initialize() +/mob/camera/blob/mind_initialize() ..() mind.special_role = "Blob" @@ -1217,4 +1223,3 @@ datum/mind mind.special_role = "Cultist" - From 0dfa79b2de7e9884a5aecf3505f4929750528bf1 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sat, 30 Nov 2013 00:47:01 +0000 Subject: [PATCH 052/315] Bugfixes Fixes the damage_converter.dm symptom trying to heal robotic limbs Adds some NEEDED sanity checks to attempt_initiate_surgery (certain human only procs were being called on monkeys/other mobs) --- .../advance/symptoms/damage_converter.dm | 25 ++++++++--- code/modules/surgery/helpers.dm | 15 ++++--- tgstation.dme | 42 ------------------- 3 files changed, 28 insertions(+), 54 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 95369ade024..6d7be3439b1 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -35,9 +35,22 @@ Bonus /datum/symptom/damage_converter/proc/Convert(var/mob/living/M) - if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) - var/get_damage = rand(1, 2) - M.adjustFireLoss(-get_damage) - M.adjustBruteLoss(-get_damage) - M.adjustToxLoss(get_damage) - return 1 \ No newline at end of file + var/get_damage = rand(1, 2) + + if(istype(M, /mob/living/carbon/human)) //is it human? (thus augmentable) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/limb/affecting in H.organs) //Find limb + if(affecting.status == ORGAN_ORGANIC) //is it organic? + if(affecting.burn_dam > 0 || affecting.brute_dam > 0)// is it damaged? + affecting.heal_robotic_damage(0, get_damage) // 0 brute, get_damage burn + affecting.heal_robotic_damage(get_damage, 0) // get_damage brute, 0 burn + M.adjustToxLoss(get_damage) + return 1 + + else //Usual routine + if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) + M.adjustFireLoss(-get_damage) + M.adjustBruteLoss(-get_damage) + M.adjustToxLoss(get_damage) + return 1 + diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 23866878825..5c380a0d14c 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -13,14 +13,17 @@ if(S.target_must_be_fat && !(FAT in M.mutations)) continue - if(S.requires_organic_chest && M.getlimb(/obj/item/organ/limb/robot/chest)) //This a seperate case to below, see "***" in surgery.dm - RR - continue + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M //So we can use get_organ and not some terriblly long Switch or something worse - RR - var/mob/living/carbon/human/H = M //So we can use get_organ and not some terriblly long Switch or something worse - RR - var/obj/item/organ/limb/affecting = H.get_organ(user.zone_sel.selecting) + if(S.requires_organic_chest && H.getlimb(/obj/item/organ/limb/robot/chest)) //This a seperate case to below, see "***" in surgery.dm - RR + continue - if(affecting.status == ORGAN_ROBOTIC) //Cannot operate on Robotic organs - RR - continue + + var/obj/item/organ/limb/affecting = H.get_organ(user.zone_sel.selecting) + + if(affecting.status == ORGAN_ROBOTIC) //Cannot operate on Robotic organs - RR + continue for(var/path in S.species) if(istype(M, path)) diff --git a/tgstation.dme b/tgstation.dme index 5bd8184b7dd..e37f31b61a0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,48 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES From 42a053029243ce224675ae7b6c53af77761a45e0 Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 30 Nov 2013 12:32:16 +0200 Subject: [PATCH 053/315] Fixes alien embryos from runtiming when checking limbs affected_mob was null when it checked for limbs. --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 7c0e231aa07..056cb434c3b 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -11,10 +11,11 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds var/stage = 0 /obj/item/alien_embryo/New() - if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest)) //If our Victim is augmented in the chest, No Babby - RR - return + if(istype(loc, /mob/living)) affected_mob = loc + if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest)) //If our Victim is augmented in the chest, No Babby - RR + return processing_objects.Add(src) spawn(0) AddInfectionImages(affected_mob) From 69f71194675aa4f451e50a5c2e304135e9651b0c Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sat, 30 Nov 2013 13:28:40 +0000 Subject: [PATCH 054/315] Removes the DME, God damn silly error --- .../advance/symptoms/damage_converter.dm | 25 ++++++++++++++----- code/modules/surgery/helpers.dm | 15 ++++++----- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 95369ade024..6d7be3439b1 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -35,9 +35,22 @@ Bonus /datum/symptom/damage_converter/proc/Convert(var/mob/living/M) - if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) - var/get_damage = rand(1, 2) - M.adjustFireLoss(-get_damage) - M.adjustBruteLoss(-get_damage) - M.adjustToxLoss(get_damage) - return 1 \ No newline at end of file + var/get_damage = rand(1, 2) + + if(istype(M, /mob/living/carbon/human)) //is it human? (thus augmentable) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/limb/affecting in H.organs) //Find limb + if(affecting.status == ORGAN_ORGANIC) //is it organic? + if(affecting.burn_dam > 0 || affecting.brute_dam > 0)// is it damaged? + affecting.heal_robotic_damage(0, get_damage) // 0 brute, get_damage burn + affecting.heal_robotic_damage(get_damage, 0) // get_damage brute, 0 burn + M.adjustToxLoss(get_damage) + return 1 + + else //Usual routine + if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) + M.adjustFireLoss(-get_damage) + M.adjustBruteLoss(-get_damage) + M.adjustToxLoss(get_damage) + return 1 + diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 23866878825..5c380a0d14c 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -13,14 +13,17 @@ if(S.target_must_be_fat && !(FAT in M.mutations)) continue - if(S.requires_organic_chest && M.getlimb(/obj/item/organ/limb/robot/chest)) //This a seperate case to below, see "***" in surgery.dm - RR - continue + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M //So we can use get_organ and not some terriblly long Switch or something worse - RR - var/mob/living/carbon/human/H = M //So we can use get_organ and not some terriblly long Switch or something worse - RR - var/obj/item/organ/limb/affecting = H.get_organ(user.zone_sel.selecting) + if(S.requires_organic_chest && H.getlimb(/obj/item/organ/limb/robot/chest)) //This a seperate case to below, see "***" in surgery.dm - RR + continue - if(affecting.status == ORGAN_ROBOTIC) //Cannot operate on Robotic organs - RR - continue + + var/obj/item/organ/limb/affecting = H.get_organ(user.zone_sel.selecting) + + if(affecting.status == ORGAN_ROBOTIC) //Cannot operate on Robotic organs - RR + continue for(var/path in S.species) if(istype(M, path)) From c7b7ee981f1f304d9d6978e263ded6e16e98c599 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sat, 30 Nov 2013 13:46:38 +0000 Subject: [PATCH 055/315] Fixes the DME Please... --- tgstation.dme | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index 5bd8184b7dd..e37f31b61a0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,48 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES From 90d3c7b654e132469f6b4269d4ae9e754b949a82 Mon Sep 17 00:00:00 2001 From: Metacide Date: Sat, 30 Nov 2013 16:12:59 +0000 Subject: [PATCH 056/315] Updated MetaStation.v38M.dmm to MetaStation.v38N.dmm Key Changes: -MiniSat turrets now start deactivated. -Moved MiniSat turret control buttons to outside the entrances of each room. -Added named cameras to a lot of the station, more to come in further updates. -Added a black market shop to maintenance and slightly adjusted the area around it. -Added exile implants to the gateway atrium, and electrified the windows. -Overhauled the maint. bar, now called "The Gobbetting Barmaid" Smaller Changes: -Added more orange jumpsuits and shoes to the brig holding cell. -Added electric shavers to robotics and medical surgery areas. -Added a togglable shutter to the teleporter room, giving access only to the portal section. -Added wrench to outer armoury area so the warden can toggle portable flashers -Added igniters to toxins. -Added chef and bartender access level to maint. doors leading to the maint. bar. -Added more donk pockets to the kitchen and various parts of maint. -Added tube lamp to mining ore collection area on request. -Added named cameras to security, crew quarters, cargo, atmoshperics and engineering. -Added named cameras to the all primary hallways and arrivals. -Added three sheets of plasma to virology on roundstart. -Added a photocopier to the HoP's office. -Re-added the glass around the chef's mulebot delivery area. -Moved tube lamp in cargo bay by the orders console to prevent burnt hands. -Moved the security console in the engineering security post to try and stop stop EMPs breaking it. -Removed tinted windows for Research Foyer -Removed un-needed r-wall opposite the kitchen. -Fixed being unable to reach top-right corner of the detective's desk. -Fixed AI core flasher appearing over cyborg statue. -Fixed EVA oxygen tank dispenser sometimes appearing over oxygen tanks. -Fixed missing pipe manifold on the MiniSat meaning a few vents were unconnected. -Fixed some airless plating on the disposals mass driver to try and prevent items sliding off it. -Fixed tiles under the corporate showroom window accidentally being wooden panelling. -Fixed a floating light switch in the lawyer's office. -Fixed access level on theatre maint. door, it is allows either theatre access or maint access. -Fixed access levels on maint. access to EM storage at medbay and research. Both now allow staff or maint. access. -Improved test site - test subjects no longer freeze to death & are named correctly. -Improved the layout of arrivals. -Electrified the council chamber windows. --- ...aStation.v38M.dmm => MetaStation.v38N.dmm} | 1158 +++++++++-------- 1 file changed, 625 insertions(+), 533 deletions(-) rename maps/{MetaStation.v38M.dmm => MetaStation.v38N.dmm} (95%) diff --git a/maps/MetaStation.v38M.dmm b/maps/MetaStation.v38N.dmm similarity index 95% rename from maps/MetaStation.v38M.dmm rename to maps/MetaStation.v38N.dmm index c1b2d669fac..8ea6a108821 100644 --- a/maps/MetaStation.v38M.dmm +++ b/maps/MetaStation.v38N.dmm @@ -42,7 +42,7 @@ "aaP" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "0"; req_one_access_txt = "1:13"},/turf/simulated/floor/plating,/area/security/processing) "aaQ" = (/turf/simulated/wall,/area/security/main) "aaR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"aaS" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"aaS" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/crew_quarters) "aaT" = (/turf/space,/area/solar/auxport) "aaU" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aaV" = (/obj/machinery/door/airlock/external{name = "Escape Pod Two"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters) @@ -93,7 +93,7 @@ "abO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "abP" = (/obj/structure/table,/obj/machinery/recharger,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "abQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) -"abR" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/holodeck) +"abR" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "abS" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Holodeck APC"; pixel_x = -1; pixel_y = 26},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/holodeck) "abT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore) "abU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) @@ -185,7 +185,7 @@ "adC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) "adD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) "adE" = (/turf/simulated/floor{icon_state = "grimy"},/area/security/main) -"adF" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"adF" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera{c_tag = "Holodeck"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/holodeck) "adG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation Monitoring"; req_access = null; req_access_txt = "1"},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "adH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "adI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/main) @@ -211,7 +211,7 @@ "aec" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "aed" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aee" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/power/apc{dir = 4; name = "Garden APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aef" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/camera{c_tag = "Brig Control Room"},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aef" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeg" = (/obj/machinery/vending/security,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeh" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "aei" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) @@ -222,7 +222,7 @@ "aen" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeo" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 22},/obj/machinery/computer/crew,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aep" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) -"aeq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer{pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) +"aeq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aer" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "aes" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) "aet" = (/obj/machinery/portable_atmospherics/canister/air,/obj/item/weapon/tank/air,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -234,7 +234,7 @@ "aez" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "aeA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aeC" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 1},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aeC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeD" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -26; pixel_y = 26; req_access_txt = "2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeF" = (/obj/structure/closet/secure_closet/warden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) @@ -246,11 +246,11 @@ "aeL" = (/obj/structure/rack,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/under/rank/medical/purple,/obj/item/clothing/tie/stethoscope,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "aeM" = (/turf/simulated/wall,/area/security/brig) "aeN" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/fore) -"aeO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) +"aeO" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeP" = (/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/starboard) "aeQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aeR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) -"aeS" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aeS" = (/obj/structure/sign/poster{pixel_y = -32},/obj/item/weapon/vending_refill/cigarette,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "aeU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -261,7 +261,7 @@ "afa" = (/obj/structure/rack,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/mask/gas,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "afb" = (/obj/machinery/disposal,/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "afc" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/turf/simulated/floor,/area/security/main) -"afd" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) +"afd" = (/obj/item/weapon/cigbutt,/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/fore) "aff" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/turf/simulated/floor,/area/security/main) "afg" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) @@ -278,14 +278,14 @@ "afr" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afs" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/packageWrap,/turf/simulated/floor,/area/security/main) "aft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) -"afu" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"afu" = (/obj/machinery/light_construct/small,/obj/item/weapon/toolbox_tiles_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afv" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) "afw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "afx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) "afy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "afz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "afA" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/security/brig) -"afB" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"afB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/holodeck) "afD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/holodeck) "afE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) @@ -303,7 +303,7 @@ "afQ" = (/turf/simulated/wall/r_wall,/area/security/brig) "afR" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/reagent_dispensers/peppertank{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) -"afT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"afT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afV" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/security/brig) @@ -317,7 +317,7 @@ "age" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "agf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/brig) "agg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) -"agh" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) +"agh" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 1},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "agi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "agj" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/seccarts{pixel_x = -3; pixel_y = -2},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "agk" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) @@ -373,7 +373,7 @@ "ahi" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/device/flash,/turf/simulated/floor,/area/security/main) "ahj" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) "ahk" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/blue{pixel_x = -2; pixel_y = 3},/turf/simulated/floor,/area/security/main) -"ahl" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"ahl" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Warden's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "ahm" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/laborcamp/station) "ahn" = (/turf/simulated/wall/r_wall,/area/security/range) "aho" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) @@ -409,7 +409,7 @@ "ahS" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ahT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/laborcamp/station) "ahU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) -"ahV" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ahV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer{pixel_y = -2},/obj/machinery/camera{c_tag = "Brig Infirmary"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) "ahW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "ahX" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/laborcamp/station) "ahY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -441,11 +441,11 @@ "aiy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "aiz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "aiA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/turf/simulated/floor,/area/security/main) -"aiB" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aiB" = (/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security Office Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "aiC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/warden) "aiD" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aiE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/warden) -"aiF" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) +"aiF" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aiG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) "aiH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aiI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) @@ -462,7 +462,7 @@ "aiT" = (/obj/structure/table/reinforced,/obj/item/seeds/appleseed,/obj/item/seeds/bananaseed,/obj/item/seeds/cocoapodseed,/obj/item/seeds/grapeseed,/obj/item/seeds/orangeseed,/obj/item/seeds/sugarcaneseed,/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/item/weapon/paper/hydroponics,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aiU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aiV" = (/obj/structure/table/reinforced,/obj/item/clothing/head/greenbandana,/obj/item/clothing/head/greenbandana,/obj/item/clothing/head/greenbandana,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aiW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aiW" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aiX" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/pestkiller{pixel_x = 3; pixel_y = 4},/obj/item/nutrient/ez,/obj/item/nutrient/rh{pixel_x = 2; pixel_y = 1},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aiY" = (/obj/machinery/seed_extractor,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aiZ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area) @@ -479,7 +479,7 @@ "ajk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "ajl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) -"ajn" = (/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ajn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -492,7 +492,7 @@ "ajx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ajy" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "ajz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) -"ajA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"ajA" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "ajC" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area) "ajD" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) @@ -502,7 +502,7 @@ "ajH" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "ajI" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area) "ajJ" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Dormitories APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) -"ajK" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"ajK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Crew Quarters Hallway Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "ajL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "ajM" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor,/area/security/brig) "ajN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) @@ -562,7 +562,7 @@ "akP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) "akQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/prison/solitary{name = "Prisoner Education Chamber"}) "akR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/prison/solitary{name = "Prisoner Education Chamber"}) -"akS" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) +"akS" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Garden"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) "akT" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) "akU" = (/obj/machinery/power/solar_control{id = "foreport"; name = "Fore Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "akV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/auxsolarstarboard) @@ -591,7 +591,7 @@ "als" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "alt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "alu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"alv" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Crew Quarters Hallway APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) +"alv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "alw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "alx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/engineering) "aly" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/engineering) @@ -655,7 +655,7 @@ "amE" = (/obj/structure/stool/bed/chair,/obj/machinery/flasher{id = "holdingflash"; pixel_x = -25},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amG" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) -"amH" = (/obj/structure/rack,/obj/item/clothing/under/color/orange{pixel_x = 2; pixel_y = -3},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = -1; pixel_y = 1},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/machinery/flasher{id = "holdingflash"; pixel_x = 25},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"amH" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "windoor"; req_access_txt = "0"},/obj/item/weapon/book/manual/engineering_hacking,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amJ" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fore) "amK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) @@ -670,7 +670,7 @@ "amT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "amU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engineering) "amV" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Blast Door Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/item/stack/sheet/cardboard,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"amW" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"amW" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c20{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "amY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "amZ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -710,7 +710,7 @@ "anH" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) "anI" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) "anJ" = (/obj/effect/decal/cleanable/oil,/obj/machinery/power/apc{dir = 4; name = "Disposal APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"anK" = (/obj/structure/stool/bed/chair{name = "Judge"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/crew_quarters/courtroom) +"anK" = (/obj/structure/table/reinforced,/obj/machinery/light_construct/small{dir = 8},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anL" = (/obj/machinery/door/poddoor/shutters{id = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anM" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "anN" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -718,7 +718,7 @@ "anP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "anQ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "Disposal Exit"; layer = 3.1; name = "disposal mass driver blast door"; opacity = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "anR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"anS" = (/obj/machinery/door/poddoor{id = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) +"anS" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c100,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "anU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/engine/engineering) "anV" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/wrench,/obj/machinery/light{dir = 8},/obj/item/weapon/hand_labeler,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -750,7 +750,7 @@ "aov" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aow" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aox" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) -"aoy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aoy" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "aoz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "aoA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/holodeck) "aoB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -762,11 +762,11 @@ "aoH" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aoI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) "aoJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) -"aoK" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/security/brig) +"aoK" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera{c_tag = "Security Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aoL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 0; pixel_y = -26; req_access_txt = "1"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "aoM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "aoN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 2; name = "Brig APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"},/area/security/brig) -"aoO" = (/obj/structure/closet/secure_closet/detective,/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"aoO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Security Office Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "aoP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "aoQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/brig) "aoR" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/hand_labeler,/turf/simulated/floor/carpet,/area/security/detectives_office) @@ -782,7 +782,7 @@ "apb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) "apc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "apd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Brig"; req_access = null; req_access_txt = "63; 42"},/turf/simulated/floor,/area/crew_quarters/courtroom) -"ape" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/door_timer/cell_1,/turf/simulated/floor{icon_state = "red"},/area/security/brig) +"ape" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/disk/data,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "apg" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) "aph" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) @@ -814,14 +814,14 @@ "apH" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "apI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "apJ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"apK" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area/maintenance/disposal) +"apK" = (/obj/machinery/door/airlock/maintenance{name = "Secure Storage Room"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "apM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) "apN" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "apO" = (/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/courtroom) "apP" = (/obj/effect/landmark/start{name = "Lawyer"},/turf/simulated/floor,/area/crew_quarters/courtroom) "apQ" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/courtroom) -"apR" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor,/area/crew_quarters/courtroom) +"apR" = (/obj/item/weapon/grown/log,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apS" = (/obj/machinery/door/window/southright{dir = 4; name = "Engineering Deliveries"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "apT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "apU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -887,8 +887,8 @@ "arc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "green"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "ard" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "are" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"arf" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) -"arg" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"arf" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) +"arg" = (/obj/item/weapon/caution/cone,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) "ari" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall,/area/holodeck) "arj" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal) @@ -927,7 +927,7 @@ "arQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "arR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/maintenance/starboard) "arS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"arT" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"arT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/crowbar/red,/obj/item/weapon/grenade/empgrenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) "arV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arW" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -947,7 +947,7 @@ "ask" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "asl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "asm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) -"asn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"asn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area) "aso" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "asp" = (/obj/structure/rack,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -965,7 +965,7 @@ "asC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "asD" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor,/area/security/processing) "asE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) -"asF" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"asF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/firealarm_electronics,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asG" = (/obj/structure/rack,/obj/item/weapon/tank/oxygen/red{pixel_x = -4; pixel_y = -1},/obj/item/weapon/tank/oxygen/red{pixel_x = 4; pixel_y = -1},/obj/item/weapon/tank/anesthetic{pixel_x = 2},/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asH" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asI" = (/obj/machinery/atmospherics/binary/pump,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -1011,10 +1011,10 @@ "atw" = (/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "atx" = (/obj/machinery/computer/med_data,/obj/machinery/newscaster{pixel_x = 28},/turf/simulated/floor/carpet,/area/security/detectives_office) "aty" = (/obj/structure/closet/secure_closet/security,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"atz" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"atz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Dorms Aft"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "atA" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 8; name = "Detective APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/taperecorder{pixel_x = 3; pixel_y = 0},/obj/item/weapon/storage/box/evidence,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"atB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"atC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) +"atB" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"atC" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/tie/red{pixel_x = -5; pixel_y = 3},/obj/item/clothing/tie/horrible,/obj/item/clothing/tie/blue{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/obj/item/weapon/dice/d8,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "atD" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "atE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "atF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) @@ -1028,11 +1028,11 @@ "atN" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "atO" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "atP" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"atQ" = (/obj/machinery/computer/security/wooden_tv{pixel_x = 3; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/table/woodentable,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/carpet,/area/security/detectives_office) +"atQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Security EVA Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) "atR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters) "atS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atT" = (/obj/structure/cable,/obj/machinery/power/emitter{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"atU" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/safe{pixel_x = 32},/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) +"atU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/yellow,/obj/item/weapon/mop,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "atV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atX" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -1139,7 +1139,7 @@ "avU" = (/turf/simulated/wall/r_wall,/area/security/nuke_storage) "avV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/freezer/money,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "avW" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/nuke_storage) -"avX" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/nuke_storage) +"avX" = (/obj/item/weapon/bucket_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avY" = (/obj/machinery/power/apc{dir = 1; name = "Vault APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/nuke_storage) "avZ" = (/obj/machinery/computer/secure_data/detective_computer,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "awa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/crew_quarters) @@ -1192,7 +1192,7 @@ "awV" = (/turf/simulated/wall,/area/quartermaster/miningdock) "awW" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock) "awX" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/folder,/obj/item/weapon/paper/hydroponics,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/prison) -"awY" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock) +"awY" = (/obj/item/weapon/vending_refill/snack,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "awZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/prison) "axa" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "axb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1241,11 +1241,11 @@ "axS" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/door_control{id = "Cabin5"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "axT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "axU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"axV" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/camera{c_tag = "Mining Dock"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) "axW" = (/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/crew_quarters) "axX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/security/processing) "axY" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/table,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) -"axZ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) +"axZ" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Crew Quarters Hallway APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Crew Quarters Hallway Aft"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "aya" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "ayb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/processing) "ayc" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -1279,8 +1279,8 @@ "ayE" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/crew_quarters) "ayF" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/crew_quarters) "ayG" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"ayH" = (/obj/machinery/door/morgue{name = "Area of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) -"ayI" = (/obj/machinery/door/morgue{name = "Area of Quiet Contemplation"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"ayH" = (/obj/structure/closet/secure_closet/detective,/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Detective's Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"ayI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/camera{c_tag = "Engineering Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "ayJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters) "ayK" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "ayL" = (/obj/machinery/turret{dir = 8},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) @@ -1308,7 +1308,7 @@ "azh" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/processing) "azi" = (/obj/machinery/mineral/input,/obj/machinery/mineral/labor_claim_console{machinedir = 2; pixel_x = 30},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/laborcamp/station) "azj" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"azk" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) +"azk" = (/obj/machinery/computer/security/wooden_tv{density = 0; pixel_x = 3; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/table/woodentable,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/carpet,/area/security/detectives_office) "azl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "azm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "azn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -1317,7 +1317,7 @@ "azq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "azr" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "azs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) -"azt" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 3; pixel_y = -30},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) +"azt" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/safe{pixel_x = 32},/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) "azu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/main) "azv" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "azw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Offices"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) @@ -1335,7 +1335,7 @@ "azI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock) "azJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall,/area/quartermaster/miningdock) "azK" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"azL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore) +"azL" = (/obj/structure/rack,/obj/machinery/flasher{id = "holdingflash"; pixel_x = 25},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "azM" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) "azN" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1406,7 +1406,7 @@ "aBb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/shuttle/mining/station) "aBc" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "aBd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"aBe" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder/yellow,/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) +"aBe" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock) "aBf" = (/obj/machinery/door_control{id = "permacell2"; name = "Cell 2 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/flasher_button{id = "PCell 2"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "aBh" = (/obj/structure/closet/secure_closet/miner,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) @@ -1420,7 +1420,7 @@ "aBp" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/nuke_storage) "aBq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBr" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_x = -27},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"aBs" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) +"aBs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aBt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) "aBv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) @@ -1447,7 +1447,7 @@ "aBQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aBR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBS" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/turf/simulated/floor/wood,/area/lawoffice) -"aBT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aBT" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera{c_tag = "Vault"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/nuke_storage) "aBU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "aBV" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plating/airless,/area) "aBW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) @@ -1511,13 +1511,13 @@ "aDc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/security/hos) "aDd" = (/obj/machinery/computer/crew,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/bridge) "aDe" = (/obj/structure/window/reinforced,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/security/range) -"aDf" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aDf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aDh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aDi" = (/obj/structure/rack,/obj/item/weapon/storage/lockbox/loyalty,/obj/machinery/bot/secbot{health = 35; name = "Securitron #359"; on = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aDj" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Shooting Range"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "warning"},/area/security/range) "aDk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/prison) -"aDl" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) +"aDl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aDn" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) @@ -1612,7 +1612,7 @@ "aEZ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor,/area/construction) "aFa" = (/turf/space,/area/supply/station) "aFb" = (/obj/structure/target_stake,/obj/item/target/syndicate,/turf/simulated/floor,/area/security/range) -"aFc" = (/obj/machinery/power/apc{dir = 4; name = "Arrivals APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aFc" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig Hallway Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) "aFd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Cabin7"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "aFe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) "aFf" = (/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1622,7 +1622,7 @@ "aFj" = (/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/engine/break_room) "aFk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"aFm" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) +"aFm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/door_timer/cell_1,/obj/machinery/camera{c_tag = "Brig Hallway Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "aFn" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -1630,7 +1630,7 @@ "aFr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/hallway/primary/starboard) "aFs" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "aFt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aFu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) +"aFu" = (/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aFv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aFw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aFx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -1654,7 +1654,7 @@ "aFP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aFQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aFR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) -"aFS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aFS" = (/obj/item/hand_labeler_refill,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aFT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aFU" = (/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aFV" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) @@ -1679,8 +1679,8 @@ "aGo" = (/obj/item/weapon/wirecutters,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "aGp" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area) "aGq" = (/obj/machinery/the_singularitygen{anchored = 1},/turf/simulated/floor/plating/airless,/area) -"aGr" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/construction) -"aGs" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor,/area/construction) +"aGr" = (/obj/machinery/camera{c_tag = "Interrogation"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"aGs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig Hallway Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aGt" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/construction) "aGu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) "aGv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -1690,26 +1690,26 @@ "aGz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGB" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGC" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aGC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) "aGE" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGI" = (/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aGJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGK" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/table,/obj/item/clothing/gloves/orange,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aGL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aGN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGO" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGP" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGP" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGQ" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "aGT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"aGV" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint2{name = "Customs"}) +"aGV" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/range) "aGX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGY" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) @@ -1771,7 +1771,7 @@ "aIc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "aId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/quartermaster/storage) "aIe" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage) -"aIf" = (/obj/machinery/autolathe,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aIg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{icon = 'icons/obj/doors/Dooreng.dmi'; name = "Tech Storage"; req_access_txt = "0"; req_one_access_txt = "23;30"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/storage/tech) "aIh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/storage/tech) "aIi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools) @@ -1779,8 +1779,8 @@ "aIk" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) "aIl" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aIm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"aIn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2{name = "Customs"}) -"aIo" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) +"aIo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Dorms Fore"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "aIp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aIq" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aIr" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) @@ -1789,7 +1789,7 @@ "aIu" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/hallway/primary/central) "aIv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/fore) "aIw" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIx" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = -29; pixel_y = 0},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) +"aIx" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters) "aIy" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aIz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aIA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -1800,7 +1800,7 @@ "aIF" = (/turf/simulated/floor,/area/crew_quarters/locker) "aIG" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "aIH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/central) -"aII" = (/obj/structure/table,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aII" = (/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "aIJ" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps{opacity = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aIK" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aIL" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -1813,9 +1813,9 @@ "aIS" = (/obj/machinery/door/airlock/maintenance{name = "Supply Maintenance"; req_access_txt = "50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aIT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aIU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aIV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aIW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aIX" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aIV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"aIW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Armoury"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) +"aIX" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 3; pixel_y = -30},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aIY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "aIZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aJa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/break_room) @@ -1920,7 +1920,7 @@ "aKV" = (/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; name = "Deliveries"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/break_room) "aKX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aKY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aKY" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aKZ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/break_room) "aLa" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engine/break_room) "aLb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -1935,10 +1935,10 @@ "aLk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/station) "aLl" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod1/station) "aLm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/construction) -"aLn" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/construction) +"aLn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Evidence Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aLo" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/quartermaster/storage) "aLp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/quartermaster/storage) -"aLq" = (/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8},/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8},/obj/machinery/computer/supplycomp,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) +"aLq" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aLr" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aLs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aLt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -1952,7 +1952,7 @@ "aLB" = (/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "aLC" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aLD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{name = "Escape Pod 4"; req_access = null; req_access_txt = "32"},/turf/simulated/floor,/area/engine/break_room) -"aLE" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aLE" = (/obj/item/stack/sheet/cardboard,/obj/machinery/light_construct/small{dir = 1},/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/obj/structure/sign/poster{pixel_y = 32},/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/watertank,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aLF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aLG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -1986,7 +1986,7 @@ "aMj" = (/turf/simulated/floor,/area/engine/break_room) "aMk" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/engineering) "aMl" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) -"aMm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) +"aMm" = (/obj/structure/table,/obj/item/weapon/soap/deluxe,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aMn" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aMo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warning"},/area/engine/engineering) "aMp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -2029,7 +2029,7 @@ "aNa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aNc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aNd" = (/obj/structure/table,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) +"aNd" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aNe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2053,7 +2053,7 @@ "aNy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNA" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4},/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/bridge) -"aNB" = (/obj/structure/lattice,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/space,/area/hallway/secondary/entry{name = "Arrivals"}) +"aNB" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) "aNC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aND" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2066,7 +2066,7 @@ "aNL" = (/turf/simulated/wall/r_wall,/area/engine/chiefs_office) "aNM" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 5},/obj/item/weapon/pen,/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering) "aNN" = (/obj/machinery/power/apc{dir = 2; name = "Supply Offices APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aNO" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) +"aNO" = (/obj/machinery/door/poddoor{id = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aNP" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNQ" = (/obj/machinery/door/airlock/external{name = "South Containment Arm Access"},/turf/simulated/floor/plating,/area/engine/engineering) "aNR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) @@ -2086,14 +2086,14 @@ "aOf" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "aOg" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aOh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aOi" = (/obj/structure/closet/toolcloset,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) +"aOi" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/item/weapon/wrench,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aOj" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aOk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) "aOl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) "aOm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aOn" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm) "aOo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/secure_data,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aOp" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aOp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Dorms Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "aOq" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) "aOr" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aOs" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) @@ -2119,7 +2119,7 @@ "aOM" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aON" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "CE Office APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aOO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central) -"aOP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/heads) +"aOP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aOQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/hallway/primary/central) "aOR" = (/obj/machinery/light_switch{pixel_x = -38},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) "aOS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) @@ -2193,7 +2193,7 @@ "aQi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "aQj" = (/obj/machinery/computer/secure_data,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "aQk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) -"aQl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aQl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Tech Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aQm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard) "aQn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aQo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -2202,7 +2202,7 @@ "aQr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aQs" = (/turf/simulated/floor/plating,/area/maintenance/starboard) "aQt" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) -"aQu" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aQu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aQv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aQw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/engine/chiefs_office) "aQx" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2212,7 +2212,7 @@ "aQB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aQC" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aQD" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"aQE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) +"aQE" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "aQF" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor{icon_state = "neutral"},/area/engine/chiefs_office) "aQG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tech) "aQH" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/crew{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/card{pixel_x = 2; pixel_y = -2},/obj/item/weapon/circuitboard/communications{pixel_x = 5; pixel_y = -5},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) @@ -2225,10 +2225,10 @@ "aQO" = (/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "aQP" = (/obj/machinery/light_construct,/turf/simulated/floor,/area/construction) "aQQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aQR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/construction) +"aQR" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "aQS" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aQT" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) -"aQU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aQU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aQV" = (/turf/simulated/wall,/area/security/checkpoint/supply) "aQW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aQX" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) @@ -2242,12 +2242,12 @@ "aRf" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engineering) "aRg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aRh" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Security APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) -"aRi" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) +"aRi" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder/yellow,/obj/structure/table,/obj/machinery/camera{c_tag = "Bridge - Central"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "aRj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/security/checkpoint/engineering) "aRk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "aRl" = (/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor/plating,/area/engine/engineering) "aRm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aRn" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aRn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aRo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/janitor) "aRp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aRq" = (/obj/machinery/door/airlock{name = "Central Emergency Storage"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -2260,21 +2260,21 @@ "aRx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/hallway/primary/port) "aRy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "aRz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"aRA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) +"aRA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aRC" = (/obj/structure/lattice,/obj/structure/grille,/turf/simulated/wall/r_wall,/area) "aRD" = (/obj/structure/grille,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area) "aRE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge) -"aRF" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/wood,/area/bridge) +"aRF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRG" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aRI" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) -"aRJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/storage) -"aRK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/storage) +"aRJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2{name = "Customs"}) +"aRK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRL" = (/obj/structure/closet/crate,/obj/item/device/assembly/prox_sensor,/turf/simulated/floor/plating,/area/maintenance/starboard) "aRM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall,/area/maintenance/storage) "aRN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) -"aRO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/storage) +"aRO" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint2{name = "Customs"}) "aRP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aRQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall,/area/maintenance/storage) "aRR" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) @@ -2290,7 +2290,7 @@ "aSb" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aSc" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aSd" = (/obj/structure/table,/obj/structure/sign/maltesefalcon/right{pixel_y = 32},/obj/item/weapon/book/manual/barman_recipes{pixel_y = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSe" = (/obj/structure/closet/secure_closet/cargotech,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aSe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aSf" = (/obj/machinery/light,/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aSg" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area) "aSh" = (/obj/machinery/door/airlock/external{name = "Escape Pod One"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2307,7 +2307,7 @@ "aSs" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "aSt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aSv" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) +"aSv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/effect/landmark/start{name = "Captain"},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aSw" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/bridge) "aSx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSy" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/supply) @@ -2315,11 +2315,11 @@ "aSA" = (/obj/structure/rack,/obj/machinery/cell_charger,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aSB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) "aSC" = (/obj/structure/table,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) -"aSD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aSD" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = -29; pixel_y = 0},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/camera{c_tag = "Custodial Closet"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aSE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "aSF" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aSG" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2{name = "Customs"}) -"aSH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aSH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Supply Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aSI" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)"; icon_state = "comfychair_brown"; dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aSJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/hos) "aSK" = (/obj/machinery/hologram/holopad,/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/carpet,/area/security/hos) @@ -2349,24 +2349,24 @@ "aTi" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/port) "aTj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aTk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) -"aTl" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/item/clothing/gloves/fyellow,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) +"aTl" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aTm" = (/turf/simulated/wall/r_wall,/area/engine/break_room) "aTn" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aTo" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aTp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aTq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/port) "aTr" = (/obj/machinery/door/airlock/command{name = "Command Desk"; req_access = null; req_access_txt = "19"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"aTs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTx" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aTs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Auxiliary Tool Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aTt" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Engineering"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aTu" = (/obj/machinery/autolathe,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTv" = (/obj/structure/table,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTw" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/camera{c_tag = "Mailroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTx" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aTy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"aTz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) +"aTz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "aTA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aTB" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge) -"aTC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/engine/break_room) +"aTC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "aTD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "63"},/turf/simulated/floor,/area/security/checkpoint/supply) "aTE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply) "aTF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/checkpoint/supply) @@ -2395,7 +2395,7 @@ "aUc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aUd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/storage) "aUe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUf" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUf" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) "aUg" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "aUh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) "aUi" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2424,18 +2424,18 @@ "aUF" = (/obj/item/device/radio/beacon,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aUG" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor,/area/crew_quarters/heads) "aUH" = (/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"aUI" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"aUI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Courtroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUJ" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) "aUK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aUL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aUM" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUN" = (/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore-Starboard Corner"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUO" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUP" = (/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUP" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aUQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"aUR" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore-Port Corner"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) -"aUT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUT" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "aUU" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "aUV" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aUW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/maintenance/storage) @@ -2443,12 +2443,12 @@ "aUY" = (/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "aUZ" = (/obj/machinery/door/morgue{name = "Study #2"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVa" = (/turf/simulated/wall,/area/hallway/primary/starboard) -"aVb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aVb" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "aVc" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/supply) "aVd" = (/obj/machinery/door/morgue{name = "Study #1"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVe" = (/obj/machinery/photocopier{pixel_y = 3},/turf/simulated/floor/wood,/area/library) "aVf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"aVg" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aVg" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "aVh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "aVi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "aVj" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) @@ -2472,7 +2472,7 @@ "aVB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central) "aVC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "aVD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aVE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aVE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aVF" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "aVG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/maintenance/storage) "aVH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2493,7 +2493,7 @@ "aVW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVX" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVY" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aVZ" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 24; req_access_txt = "24"},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) +"aVZ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) "aWa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aWb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "aWc" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply) @@ -2502,10 +2502,10 @@ "aWf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) "aWg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aWh" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aWi" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aWj" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWi" = (/obj/structure/closet/toolcloset,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) +"aWj" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aWk" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) -"aWl" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "aWn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWo" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2531,7 +2531,7 @@ "aWI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "aWJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aWK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central) -"aWL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/hos) "aWN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L4"},/area/hallway/primary/central) "aWO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -2544,14 +2544,14 @@ "aWV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central) "aWW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/central) "aWX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/central) -"aWY" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aWZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/hallway/primary/port) -"aXa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) -"aXb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"aWY" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; layer = 2.9; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aXa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/light/small{dir = 4},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aXc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/library) "aXd" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aXe" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) -"aXf" = (/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"aXf" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aXg" = (/turf/simulated/floor{icon_state = "neutral"; dir = 10},/area/hallway/primary/port) "aXh" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/port) "aXi" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) @@ -2576,15 +2576,15 @@ "aXB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "hopflash"; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "aXC" = (/obj/machinery/power/apc{dir = 1; name = "Theatre APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aXD" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) -"aXE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aXE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 8; network = list("SS13")},/obj/structure/rack,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) "aXF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aXG" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aXH" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXI" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aXG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/item/clothing/gloves/fyellow,/obj/item/clothing/suit/hazardvest,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) +"aXH" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) +"aXI" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Supply Foyer"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aXJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "aXK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aXL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aXN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "20;12"},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aXO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aXP" = (/obj/structure/piano,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -2599,7 +2599,7 @@ "aXY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) "aXZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/port) "aYa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) -"aYb" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"aYb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "aYc" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 6; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "aYd" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/obj/structure/lattice,/turf/space,/area) "aYe" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/computer/station_alert,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) @@ -2646,8 +2646,8 @@ "aYT" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "aYU" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/bridge) "aYV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; name = "Unfiltered & Air to Mix"; on = 1},/turf/simulated/floor,/area/maintenance/storage) -"aYW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"aYX" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"aYW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) +"aYX" = (/obj/structure/stool/bed/chair,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aYY" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 3; pixel_y = -3},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aYZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aZa" = (/obj/machinery/recharge_station,/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) @@ -2655,7 +2655,7 @@ "aZc" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) "aZd" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/port) "aZe" = (/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"aZf" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aZf" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aZg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aZh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2679,7 +2679,7 @@ "aZA" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aZB" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/maintenance/storage) "aZC" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aZD" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aZD" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aZE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "aZF" = (/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "aZG" = (/obj/machinery/vending/cigarette,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) @@ -2690,9 +2690,9 @@ "aZL" = (/turf/simulated/wall,/area/hallway/primary/central) "aZM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "aZN" = (/turf/simulated/wall,/area/janitor) -"aZO" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"aZO" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Bridge - Starboard Access"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) "aZP" = (/turf/simulated/wall/r_wall,/area/bridge) -"aZQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aZQ" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Council Chamber"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/bridge) "aZR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/storage) "aZS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZT" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -2711,7 +2711,7 @@ "bag" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bah" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/central) "bai" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"baj" = (/obj/machinery/vending/cola,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"baj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) "bak" = (/turf/simulated/floor{icon_state = "warning"},/area/engine/break_room) "bal" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bam" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) @@ -2740,7 +2740,7 @@ "baJ" = (/obj/machinery/power/apc{dir = 1; name = "Customs APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "baK" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "baL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) -"baM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"baM" = (/obj/machinery/photocopier{pixel_y = 3},/turf/simulated/floor/wood,/area/crew_quarters/heads) "baN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "baO" = (/obj/structure/closet/jcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "baP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/storage/art) @@ -2780,7 +2780,7 @@ "bbx" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/space,/area) "bby" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/hallway/primary/central) "bbz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) -"bbA" = (/obj/machinery/power/apc{dir = 1; name = "Port Hallway APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"bbA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bbB" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bbC" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/woodentable,/obj/item/weapon/pinpointer,/obj/item/weapon/disk/nuclear,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bbD" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2824,13 +2824,13 @@ "bcp" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bcq" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/arrival/station) "bcr" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (WEST)"; icon_state = "burst_r"; dir = 8},/turf/space,/area/shuttle/arrival/station) -"bcs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bcs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bct" = (/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) "bcu" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area) -"bcv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) -"bcw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) +"bcv" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"bcw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "bcx" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) -"bcy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) +"bcy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bcz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2{name = "Customs"}) "bcA" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "bcB" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/heads) @@ -2844,7 +2844,7 @@ "bcJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) "bcK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/quartermaster/storage) "bcL" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) -"bcM" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) +"bcM" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bcN" = (/obj/structure/table,/obj/item/trash/syndi_cakes{pixel_y = 4},/turf/simulated/floor,/area/engine/break_room) "bcO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) "bcP" = (/obj/machinery/door/window/southright{dir = 4; name = "Bar Door"; pixel_x = -3; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "25;28"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) @@ -2854,12 +2854,12 @@ "bcT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/storage/art) "bcU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorengglass.dmi'; name = "Art Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/art) "bcV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/break_room) -"bcW" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/maintenance/storage) +"bcW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/camera{c_tag = "Port Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) "bcX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/break_room) "bcY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room) "bcZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 6},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/hallway/primary/starboard) "bda" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Foyer"; req_access_txt = "0"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/break_room) -"bdb" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) +"bdb" = (/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 2; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bdd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bde" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge) @@ -2876,9 +2876,9 @@ "bdp" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/filingcabinet{pixel_x = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdq" = (/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdr" = (/obj/machinery/door/window/westright,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bds" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/effect/landmark/start{name = "Captain"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bds" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bdt" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorint.dmi'; name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bdu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) +"bdu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engine/break_room) "bdv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bdw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bdx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2893,7 +2893,7 @@ "bdG" = (/obj/machinery/computer/security/telescreen{name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/obj/machinery/light{dir = 1},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/engineering) -"bdJ" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bdJ" = (/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bdK" = (/turf/simulated/floor/carpet,/area/hallway/primary/port) "bdL" = (/obj/machinery/computer/security/mining,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bdM" = (/turf/simulated/wall,/area/construction/Storage{name = "Storage Wing"}) @@ -2921,9 +2921,9 @@ "bei" = (/obj/machinery/computer/ordercomp,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bej" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bek" = (/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) -"bel" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"bel" = (/obj/machinery/recharge_station,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bem" = (/obj/item/weapon/paper,/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) -"ben" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"ben" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "beo" = (/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) "bep" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 1; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor,/area/maintenance/storage) "beq" = (/obj/machinery/computer/security/telescreen{dir = 8; name = "Telecoms Camera Monitor"; network = list("tcomm"); pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) @@ -2963,7 +2963,7 @@ "beY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "beZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 4; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) "bfa" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) -"bfb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bfb" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Atmospherics"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) "bfc" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "bfd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/carpet,/area/bridge) "bfe" = (/obj/structure/transit_tube{tag = "icon-N-SE"; icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) @@ -2971,7 +2971,7 @@ "bfg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/bridge) "bfh" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge) "bfi" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/photo_album{pixel_y = -4},/obj/item/device/camera{pixel_y = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bfj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/turretid{name = "MiniSat West Wing turret control"; pixel_x = 0; pixel_y = 60},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bfj" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) "bfk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bfl" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bfm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/bridge) @@ -3008,17 +3008,17 @@ "bfR" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "bfT" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/clothing/mask/horsehead,/obj/item/clothing/mask/muzzle/gag,/obj/machinery/light_switch{pixel_x = -23; pixel_y = -11},/turf/simulated/floor/wood,/area/crew_quarters/theatre) -"bfU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) +"bfU" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2{name = "Customs"}) "bfW" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bfX" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bfX" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals Middle Arm Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bfZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 1; icon_state = "manifold-y"; level = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/maintenance/storage) "bga" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "transittube"; name = "Transit Tube Blast Door"; opacity = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "bgb" = (/obj/machinery/vending/autodrobe,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bgc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "bgd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"bge" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/turretid{name = "MiniSat East Wing turret control"; pixel_x = -23; pixel_y = 0},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bge" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/hallway/primary/port) "bgf" = (/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "bgg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/break_room) "bgh" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 6; icon_state = "intact-y"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) @@ -3057,7 +3057,7 @@ "bgO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "bgP" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bgQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "blackcorner"},/area/hallway/primary/starboard) -"bgR" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) +"bgR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "bgS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/starboard) "bgT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/break_room) "bgU" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/table,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) @@ -3081,16 +3081,16 @@ "bhm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bhn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) "bho" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/computer/security/telescreen{dir = 2; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"bhp" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/machinery/turretid{name = "MiniSat Central Foyer turret control"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bhp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "bhq" = (/obj/machinery/light/small{dir = 4},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 4; name = "MiniSat West Wing APC"; pixel_x = 29; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "bhs" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) -"bht" = (/obj/structure/closet/firecloset,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bht" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "bhu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/engine/break_room) "bhv" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness) "bhw" = (/turf/simulated/floor,/area/crew_quarters/fitness) "bhx" = (/obj/machinery/vending/tool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bhy" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) +"bhy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bhz" = (/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating,/area/engine/engineering) "bhA" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating,/area/engine/engineering) "bhB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) @@ -3122,7 +3122,7 @@ "bib" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bic" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bid" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"bie" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) +"bie" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bif" = (/obj/machinery/door/airlock/silver{name = "Bathroom"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "big" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bih" = (/obj/machinery/door/poddoor/shutters{id = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -3132,7 +3132,7 @@ "bil" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=13-Engineering"; location = "12-Central-Starboard"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "bim" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bin" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"bio" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) +"bio" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Arrivals Middle Arm"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bip" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "biq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bir" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -3144,7 +3144,7 @@ "bix" = (/obj/machinery/computer/telecomms/traffic{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "biy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "biz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"biA" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/turret{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"biA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "biB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "biC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "biD" = (/obj/structure/stool/bed/chair{name = "Bailiff"},/turf/simulated/floor,/area/crew_quarters/courtroom) @@ -3152,7 +3152,7 @@ "biF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "biG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "biH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"biI" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"biI" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Atmospherics Control Room"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "biJ" = (/turf/simulated/wall,/area/maintenance/storage) "biK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/maintenance/storage) "biL" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) @@ -3174,7 +3174,7 @@ "bjb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) "bjc" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/engine/engineering) "bjd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/engineering) -"bje" = (/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bje" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/camera{c_tag = "Atmospherics Entrance"; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "bjf" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/weapon/table_parts,/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bjg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/primary) "bjh" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/vending/coffee{pixel_x = 1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) @@ -3200,7 +3200,7 @@ "bjB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b"; level = 2; tag = "icon-manifold-b (NORTH)"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b"; level = 2; tag = "icon-manifold-b"},/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjD" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/transit_tube_pod,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) -"bjE" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"bjE" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 101},/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Atmospherics Distro Loop"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjF" = (/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/crew_quarters/courtroom) "bjG" = (/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bjH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) @@ -3211,7 +3211,7 @@ "bjM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "bjN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/bridge) "bjO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge) -"bjP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bjP" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/hallway/primary/central) "bjR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "bjS" = (/turf/simulated/wall,/area/crew_quarters/theatre) @@ -3229,12 +3229,12 @@ "bke" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) "bkf" = (/obj/structure/table,/obj/item/clothing/under/suit_jacket/female{pixel_x = 3; pixel_y = 1},/obj/item/clothing/under/suit_jacket/really_black{pixel_x = -2; pixel_y = 0},/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bkg" = (/obj/machinery/washing_machine,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/locker) -"bkh" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"bkh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Art Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bki" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bkj" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bkk" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bkl" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) -"bkm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bkm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Port Primary Hallway - Middle"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkn" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/fitness) "bko" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bkp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/fore) @@ -3248,11 +3248,11 @@ "bkx" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/quartermaster/office{name = "\improper Supply Offices"}) "bky" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) "bkz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"bkA" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 101},/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"bkA" = (/obj/machinery/power/apc{dir = 1; name = "Port Hallway APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkB" = (/obj/machinery/turret{dir = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bkC" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 2; icon_state = "freezer_0"; on = 1; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bkD" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/arrival/station) -"bkE" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bkE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bkG" = (/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bkH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) @@ -3345,7 +3345,7 @@ "bmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bmr" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bms" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bmt" = (/obj/machinery/light/small,/obj/machinery/turret{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bmt" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Arrivals Station Entrance"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bmu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/turf/simulated/floor/wood,/area/crew_quarters/courtroom) "bmv" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bmw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/storage/primary) @@ -3385,7 +3385,7 @@ "bne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bnf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/device/flash,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "bng" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bnh" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) +"bnh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bni" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bnj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bnk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) @@ -3411,11 +3411,11 @@ "bnE" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "bnF" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bnG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bnH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/fore) +"bnH" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/camera{c_tag = "Bridge - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) "bnI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"bnJ" = (/obj/machinery/light/small{dir = 8},/obj/machinery/turret{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"bnK" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/hallway/primary/fore) -"bnL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/hallway/primary/fore) +"bnJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Bridge - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bnK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bnL" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bnM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/maintenance/fore) "bnN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "bnO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) @@ -3435,9 +3435,9 @@ "boc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage) "bod" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage) "boe" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) -"bof" = (/obj/item/device/radio/beacon,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bog" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"boh" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bof" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bog" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Engineering Foyer Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) +"boh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Port Primary Hallway - Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "boi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "boj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bok" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;9"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -3469,7 +3469,7 @@ "boK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "boL" = (/turf/simulated/wall,/area/bridge) "boM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/port) -"boN" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/bridge) +"boN" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "boO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "boP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/structure/rack,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/timer,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge) "boQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) @@ -3497,18 +3497,18 @@ "bpm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bpn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bpo" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/fore) -"bpp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) +"bpp" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -34; req_access_txt = "19"},/obj/machinery/camera{c_tag = "Bridge - Command Chair"; dir = 1; network = list("SS13")},/turf/simulated/floor/carpet,/area/bridge) "bpq" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bpr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/fore) "bps" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/primary/fore) "bpt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-Storage"; location = "1-SecurityCheckpoint"},/turf/simulated/floor,/area/hallway/primary/fore) "bpu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) "bpv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) -"bpw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/fore) -"bpx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/hallway/primary/fore) +"bpw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/newscaster{pixel_x = 28; pixel_y = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bpx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bpy" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) -"bpz" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/fore) -"bpA" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/hallway/primary/fore) +"bpz" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bpA" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bpB" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Mix to Filter"; on = 1},/turf/simulated/floor,/area/maintenance/storage) "bpC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bpD" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -3524,7 +3524,7 @@ "bpN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "bpO" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bpP" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) -"bpQ" = (/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"bpQ" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bpR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) "bpS" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bpT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) @@ -3536,33 +3536,33 @@ "bpZ" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/effect/landmark{name = "blobstart"},/obj/machinery/door_control{id = "Toilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bqa" = (/turf/simulated/wall,/area/library) "bqb" = (/obj/machinery/door/airlock{id_tag = "Toilet2"; name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bqc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/hallway/primary/fore) +"bqc" = (/obj/item/device/radio/beacon,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bqd" = (/obj/item/weapon/book/manual/security_space_law,/obj/machinery/newscaster{hitstaken = 1; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply) -"bqe" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/hallway/primary/fore) +"bqe" = (/obj/machinery/light/small,/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bqf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bqh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "bqj" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply) -"bqk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bqk" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bql" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/supply) "bqm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bqn" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/power/apc{dir = 1; name = "Quartermaster's Office APC"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm) -"bqo" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"bqp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bqo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bqp" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bqq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply) "bqr" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/qm) "bqs" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bqt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/bridge) "bqu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall,/area/bridge) -"bqv" = (/obj/machinery/camera/emp_proof{c_tag = "Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) +"bqv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/bridge) "bqx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) "bqy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) "bqz" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bqC" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bqC" = (/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Fore Primary Hallway APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bqE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bqF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central) @@ -3577,7 +3577,7 @@ "bqO" = (/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"bqR" = (/obj/machinery/light/small{dir = 8},/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air{pixel_x = 5; pixel_y = -2},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bqR" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 24; pixel_y = 5},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqS" = (/obj/structure/window/reinforced,/obj/machinery/power/apc{aidisabled = 0; dir = 2; name = "MiniSat Exterior APC"; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/light,/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqT" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bqU" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/lattice,/turf/space,/area) @@ -3587,7 +3587,7 @@ "bqY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bqZ" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/crew_quarters/fitness) "bra" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = -6; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = 4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) -"brb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"brb" = (/obj/machinery/light/small{dir = 8},/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air{pixel_x = 5; pixel_y = -2},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "brc" = (/obj/machinery/door/airlock{id_tag = "Toilet4"; name = "Unit 4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "brd" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bre" = (/obj/structure/table,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack{pixel_x = 10; pixel_y = 2},/obj/item/stack/medical/ointment{pixel_y = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -3606,7 +3606,7 @@ "brr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "brs" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "brt" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) -"bru" = (/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) +"bru" = (/obj/machinery/power/apc{dir = 4; name = "Arrivals APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "brv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brw" = (/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "brx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) @@ -3643,7 +3643,7 @@ "bsc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood,/area/library) "bsd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "bse" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bsf" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bsf" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera{c_tag = "Arrivals Lounge"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bsg" = (/obj/machinery/door/airlock/maintenance{name = "Tool Storage Maintenance"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/primary) "bsh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/storage/primary) "bsi" = (/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -3653,7 +3653,7 @@ "bsm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsn" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/item/weapon/pen/red,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/qm) "bso" = (/obj/effect/landmark/start{name = "Quartermaster"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) -"bsp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bsp" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bsq" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/bridge) "bsr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bss" = (/turf/simulated/floor/wood,/area/bridge) @@ -3661,12 +3661,12 @@ "bsu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bsv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Locker Room APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) -"bsx" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"bsx" = (/obj/machinery/vending/cola,/obj/machinery/newscaster{pixel_x = -28; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) "bsy" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) "bsz" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsB" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bsC" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bsC" = (/obj/machinery/turretid{control_area = "\improper MiniSat East Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat East Wing turret control"; pixel_x = 24; pixel_y = -26},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bsD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bsE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsF" = (/obj/machinery/door/airlock/command{name = "Emergency Escape"; req_access = null; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3677,7 +3677,7 @@ "bsK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bsL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bsM" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bsN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bsN" = (/obj/machinery/turretid{control_area = "\improper MiniSat Central Foyer"; enabled = 0; icon_state = "motion0"; name = "MiniSat Central Foyer turret control"; pixel_x = 25; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bsO" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/starboard) "bsP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsQ" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -3696,17 +3696,17 @@ "btd" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes{capacity = 9e+006; charge = 1e+006; chargelevel = 50000; chargemode = 1; charging = 1; output = 50000},/obj/machinery/light_switch{pixel_x = -24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) "bte" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) "btf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"btg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bth" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bti" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) -"btj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) +"btg" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/vending/coffee,/obj/machinery/camera{c_tag = "Engineering Foyer Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) +"bth" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) +"bti" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing - Security Access Door"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) +"btj" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage Wing Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "btk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "btl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) -"btm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) +"btm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "btn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) "bto" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "btp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) -"btq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) +"btq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Cargo Bay Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) "btr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "bts" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "btt" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/fyellow,/obj/machinery/light/small,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) @@ -3739,7 +3739,7 @@ "btU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "btV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Council Chamber"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) "btW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) -"btX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"btX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/lawoffice) "btY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "btZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bua" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3796,7 +3796,7 @@ "buZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central) "bva" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/library) "bvb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bvc" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) +"bvc" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/turf/simulated/floor/wood,/area/lawoffice) "bvd" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bve" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) "bvf" = (/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3807,7 +3807,7 @@ "bvk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/wood,/area/bridge) "bvl" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bvm" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/bridge) -"bvn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"bvn" = (/obj/structure/stool/bed/chair{name = "Judge"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Courtroom"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/crew_quarters/courtroom) "bvo" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/bridge) "bvp" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/turf/simulated/floor/carpet,/area/bridge) "bvq" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet,/area/bridge) @@ -3821,7 +3821,7 @@ "bvy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/qm) "bvA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) -"bvB" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"bvB" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "bvC" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bvD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/locker) "bvE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Quarters Access"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) @@ -3856,11 +3856,11 @@ "bwh" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) "bwi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bwj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/fore) -"bwk" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/turf/simulated/floor/wood,/area/security/vacantoffice) -"bwl" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/wood,/area/security/vacantoffice) -"bwm" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/turf/simulated/floor/wood,/area/security/vacantoffice) +"bwk" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/construction) +"bwl" = (/obj/machinery/conveyor{dir = 1; id = "QMLoad2"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bwm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Locker Room Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bwn" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bwo" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bwo" = (/obj/machinery/photocopier,/obj/machinery/camera{c_tag = "Law Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/lawoffice) "bwp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bwq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bwr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3881,12 +3881,12 @@ "bwG" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red,/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "bwH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) -"bwJ" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bwJ" = (/obj/machinery/hologram/holopad,/obj/structure/sign/kiddieplaque{pixel_y = 32},/obj/machinery/camera{c_tag = "AI Upload Chamber - Fore"; dir = 2; network = list("SS13","RD","AIUpload")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bwK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bwL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/locker) "bwM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) "bwN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) -"bwO" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) +"bwO" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/camera{c_tag = "Fitness Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "bwP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "bwQ" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/bridge) "bwR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fore Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/fore) @@ -3906,7 +3906,7 @@ "bxf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/sortjunction{sortType = 5},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) "bxg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) "bxh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bxi" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bxi" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/lawoffice) "bxj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) "bxk" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Auxiliary Tool Storage APC"; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) "bxl" = (/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) @@ -3934,7 +3934,7 @@ "bxH" = (/turf/simulated/floor/wood,/area/security/vacantoffice) "bxI" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/wood,/area/security/vacantoffice) "bxJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/secure_data{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/security{pixel_x = 1; pixel_y = -1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"bxK" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) +"bxK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/brig) "bxL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/cloning{pixel_x = 0},/obj/item/weapon/circuitboard/med_data{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/clonescanner,/obj/item/weapon/circuitboard/clonepod,/obj/item/weapon/circuitboard/scan_consolenew,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bxM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bxN" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/obj/item/device/multitool,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) @@ -3956,7 +3956,7 @@ "byd" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm) "bye" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm) "byf" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/qm) -"byg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"byg" = (/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 26},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) "byh" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area) "byi" = (/obj/machinery/computer/arcade,/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/crew_quarters/fitness) "byj" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/closet/crate/internals,/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) @@ -3972,7 +3972,7 @@ "byt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "byu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "byv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"byw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"byw" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "byx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "byy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "byz" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/surgery) @@ -3981,8 +3981,8 @@ "byC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) "byD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "byE" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) -"byF" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/wood,/area/lawoffice) -"byG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/lawoffice) +"byF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig Desk"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) +"byG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Fore Primary Hallway Cells"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "byH" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "byI" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/device/assembly/igniter,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "byJ" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) @@ -4037,7 +4037,7 @@ "bzG" = (/obj/machinery/sleep_console{density = 0; dir = 8; icon_state = "console"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bzH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzJ" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Restrooms"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bzK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bzM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -4045,7 +4045,7 @@ "bzO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bzR" = (/obj/machinery/photocopier,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/wood,/area/lawoffice) +"bzR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/brig) "bzS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) @@ -4053,21 +4053,21 @@ "bzW" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bzX" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bzY" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/lawoffice) -"bzZ" = (/obj/structure/table,/obj/item/weapon/wirecutters,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) +"bzZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/brig) "bAa" = (/obj/machinery/door/airlock{id_tag = "Toilet1"; name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bAb" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bAc" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/fyellow,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/storage/primary) "bAd" = (/obj/structure/table,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bAe" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bAf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Storage Access"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bAg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bAh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) +"bAg" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) +"bAh" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "bAi" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Engine Room APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bAj" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bAj" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bAk" = (/obj/machinery/computer/station_alert,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bAl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bAm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engine/engineering) -"bAn" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) +"bAn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/brig) "bAo" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) "bAp" = (/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness) "bAq" = (/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/toxins/lab) @@ -4093,9 +4093,9 @@ "bAK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil,/obj/item/weapon/screwdriver,/obj/item/weapon/weldingtool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bAL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/black,/obj/item/weapon/extinguisher{pixel_x = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/clothing/glasses/meson,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bAM" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bAN" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bAN" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/brig) "bAO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"bAP" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bAP" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "bAQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "bAR" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bAS" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4109,7 +4109,7 @@ "bBa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bBb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bBc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/crew_quarters/locker) -"bBd" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/lawoffice) +"bBd" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) "bBe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central) "bBf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{aidisabled = 0; dir = 1; name = "AI Chamber APC"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai) "bBg" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/obj/machinery/door/window{dir = 1; name = "Primary AI Core Access"; pixel_y = 0; req_access_txt = "16"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai) @@ -4144,7 +4144,7 @@ "bBJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/lab) "bBK" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bBL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer's Office"; req_access_txt = "56"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/chiefs_office) -"bBM" = (/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 26},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/hallway/primary/fore) +"bBM" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bBN" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm Close"; dir = 4; network = list("Singulo")},/turf/space,/area) "bBO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bBP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -4161,7 +4161,7 @@ "bCa" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) "bCb" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) "bCc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) -"bCd" = (/obj/structure/closet/boxinggloves,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) +"bCd" = (/obj/structure/table,/obj/item/clothing/head/hardhat/orange{name = "protective hat"; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/construction) "bCe" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/stool{pixel_y = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/locker) "bCf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/security/vacantoffice) "bCg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) @@ -4193,9 +4193,9 @@ "bCG" = (/turf/simulated/wall/r_wall,/area/gateway) "bCH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bCI" = (/obj/structure/closet/lasertag/red,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) -"bCJ" = (/obj/machinery/teleport/station,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) +"bCJ" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bCK" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bCL" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) +"bCL" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bCM" = (/obj/structure/closet/lasertag/blue,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "bCN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/gateway) "bCO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) @@ -4209,7 +4209,7 @@ "bCW" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/security_space_law,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bCX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bCY" = (/obj/machinery/turret{dir = 1},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bCZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/science{pixel_x = 32},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) +"bCZ" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) "bDa" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/lab) "bDb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/sign/chemistry{pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bDc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/disposal/deliveryChute{dir = 4; name = "Crate Disposal Chute"; pixel_x = -5; pixel_y = 2},/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Crate Disposal Chute"; req_access_txt = "0"},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) @@ -4236,7 +4236,7 @@ "bDx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "bDy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) "bDz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) -"bDA" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/camera/autoname{c_tag = "Engineering SMES Room"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) +"bDA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/construction) "bDB" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Power Monitoring"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bDC" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "bDD" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) @@ -4274,7 +4274,7 @@ "bEj" = (/turf/simulated/wall,/area/crew_quarters/kitchen) "bEk" = (/obj/machinery/computer/telescience,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bEl" = (/obj/structure/stool,/obj/machinery/light{dir = 1},/obj/machinery/newscaster{dir = 8; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"bEm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/telesci) +"bEm" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor,/area/construction) "bEn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office) "bEo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage) "bEp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/fore) @@ -4287,10 +4287,10 @@ "bEw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bEx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) -"bEz" = (/obj/machinery/hologram/holopad,/obj/structure/sign/kiddieplaque{pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD","AIUpload")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bEz" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Courtroom Gallery"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bEA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/fore) -"bEC" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"},/area/hallway/primary/fore) +"bEC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bED" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/obj/structure/stool,/turf/simulated/floor,/area/maintenance/storage) "bEE" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor,/area/maintenance/storage) "bEF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/gateway) @@ -4303,7 +4303,7 @@ "bEM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Prisoner Education Gallery"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/prison/solitary{name = "Prisoner Education Chamber"}) "bEN" = (/obj/machinery/chem_master,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bEO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bEP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bEP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "bEQ" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bER" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/library) "bES" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) @@ -4323,7 +4323,7 @@ "bFg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "bFh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bFi" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bFj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) +"bFj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bFk" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/lab) "bFl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/cryo) "bFm" = (/turf/simulated/wall/r_wall,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -4331,10 +4331,10 @@ "bFo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "purplefull"},/area/hallway/primary/aft) "bFp" = (/obj/machinery/door/airlock/maintenance{name = "Gateway Maintenance"; req_access_txt = "17"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/gateway) "bFq" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) -"bFr" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bFr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bFs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "bFt" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/library) -"bFu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) +"bFu" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bFv" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bFw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bFx" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4345,7 +4345,7 @@ "bFC" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bFD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bFE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"bFF" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"bFF" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/quartermaster/storage) "bFG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bFH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bFI" = (/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4364,12 +4364,12 @@ "bFV" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) "bFW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bFX" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) -"bFY" = (/obj/structure/closet,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bFY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) "bFZ" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bGa" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) "bGb" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bGc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bGd" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/hallway/primary/fore) +"bGd" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals Fore Arm Far"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bGe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) "bGf" = (/obj/item/weapon/cigbutt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -4435,17 +4435,17 @@ "bHo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bHp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "bHq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/primary) -"bHr" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bHr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bHs" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bHt" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bHu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bHv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/fore) "bHw" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/turretid{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 8; pixel_y = 24},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -8; pixel_y = 22},/obj/effect/landmark/start{name = "Cyborg"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "AI Upload Access APC"; pixel_x = 0; pixel_y = -27},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai_upload_foyer) "bHx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bHy" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"bHy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bHz" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/wood,/area/security/vacantoffice) "bHA" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bHB" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) +"bHB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bHC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bHD" = (/obj/machinery/chem_dispenser,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bHE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/antitoxin,/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) @@ -4473,17 +4473,17 @@ "bIa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bIb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Medical Officer's Office"; req_access_txt = "40"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bIc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bIe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) +"bId" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bIe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bIg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bIh" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bIi" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bIj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bIj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bIl" = (/obj/machinery/sleep_console{density = 0; dir = 4; icon_state = "console"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bIm" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bIn" = (/obj/machinery/door/airlock/maintenance{name = "Telescience Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bIn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "bIo" = (/obj/item/device/radio/beacon,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) "bIp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bIq" = (/obj/structure/stool/bed,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -4505,18 +4505,18 @@ "bIG" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Telescience Lab"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bIH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bII" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bIL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bIL" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIM" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bIN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/central) "bIO" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/weapon/pen,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bIP" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1441; icon_state = "on"; id = "co2_in"; on = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bIQ" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/lab) "bIR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bIS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD","AIUpload")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) +"bIS" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) "bIT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bIU" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"bIU" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) "bIV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bIW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/solar/port) "bIX" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4534,7 +4534,7 @@ "bJj" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 23},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bJk" = (/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bJl" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bJm" = (/obj/structure/table,/obj/item/clothing/head/hardhat/orange{name = "protective hat"; pixel_y = 8},/turf/simulated/floor,/area/construction) +"bJm" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bJn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bJo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bJp" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/library) @@ -4576,7 +4576,7 @@ "bJZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "bKa" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bKb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"bKc" = (/obj/structure/sign/poster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bKc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bKd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) "bKf" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/library) @@ -4587,7 +4587,7 @@ "bKk" = (/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bKl" = (/obj/machinery/light/small,/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bKm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area) -"bKn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Emergency Storage Maintenance"; req_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bKn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bKo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 9},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4625,7 +4625,7 @@ "bKW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) "bKX" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bKY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "O2 to Pure"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) -"bKZ" = (/obj/machinery/light/small{dir = 8},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"bKZ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bLa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bLb" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bLc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -4659,7 +4659,7 @@ "bLE" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bLF" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "N2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bLG" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) -"bLH" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bLI" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 1; name = "O2 Outlet Valve"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bLJ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bLK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -4691,7 +4691,7 @@ "bMk" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) "bMl" = (/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "bMm" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"bMn" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"bMn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bMo" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bMp" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "bMq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/port) @@ -4708,10 +4708,10 @@ "bMB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "bMC" = (/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/trash/candy,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bMD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) -"bME" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bMF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bME" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) +"bMF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bMG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bMH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bMH" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "bMI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bMJ" = (/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "bMK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 10; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -4742,9 +4742,9 @@ "bNj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) "bNk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bNl" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bNm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bNm" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bNn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bNo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bNo" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNp" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bNq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/turret_protected/ai_upload) "bNr" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -4785,7 +4785,7 @@ "bOa" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bOb" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bOc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bOd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway) +"bOd" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bOe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/engine,/area/toxins/telesci) "bOf" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bOg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/hydroponics) @@ -4844,7 +4844,7 @@ "bPh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) "bPi" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/hallway/primary/central) -"bPk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bPk" = (/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8},/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8},/obj/machinery/computer/supplycomp,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bPl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPm" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bPn" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/hydroponics) @@ -4853,7 +4853,7 @@ "bPq" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/space,/area) "bPr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/hydroponics) "bPs" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics) -"bPt" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bPt" = (/obj/structure/closet/lawcloset,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/wood,/area/lawoffice) "bPu" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 9; icon_state = "intact-y"; level = 2},/turf/space,/area) "bPv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/minihoe,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bPw" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) @@ -4863,11 +4863,11 @@ "bPA" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPB" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/space,/area) "bPC" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/space,/area) -"bPD" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bPD" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/construction) "bPE" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/space,/area) "bPF" = (/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "7"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPG" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"bPH" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/maintenance/storage) +"bPH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/construction) "bPI" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bPJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "bPK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4886,7 +4886,7 @@ "bPX" = (/obj/structure/filingcabinet/filingcabinet,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bPY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPZ" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics) -"bQa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bQa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/construction) "bQb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bQc" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bQd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4929,13 +4929,13 @@ "bQO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research and Development Lab"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/lab) "bQP" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bQQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "gateshutter"; name = "Gateway Access Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/gateway) -"bQR" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bQR" = (/obj/structure/table,/obj/item/weapon/wirecutters,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Tool Storage"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bQS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQT" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "evashutter"; name = "E.V.A. Storage Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bQU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQW" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway) -"bQX" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"bQX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Fore Primary Hallway Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bQY" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/space,/area) "bQZ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bRa" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4972,7 +4972,7 @@ "bRF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "purple"},/area/hallway/primary/aft) "bRG" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 10; icon_state = "whitepurple"},/area/toxins/lab) "bRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bRI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bRI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/construction) "bRJ" = (/turf/simulated/wall/r_wall,/area/toxins/server) "bRK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bRL" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) @@ -4981,7 +4981,7 @@ "bRO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bRP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bRQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central) -"bRR" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"bRR" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bRS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/surgery) "bRU" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/primary) @@ -5008,9 +5008,9 @@ "bSp" = (/obj/machinery/atmospherics/pipe/tank/oxygen{volume = 3200},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bSq" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bSr" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bSs" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD","AIUpload")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bSs" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Engineering Power Monitoring"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) -"bSu" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD","AIUpload")},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bSu" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/camera{c_tag = "AI Upload Chamber - Starboard"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bSv" = (/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSw" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSx" = (/obj/structure/stool/bed/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) @@ -5019,7 +5019,7 @@ "bSA" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bSB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bSC" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) -"bSD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bSD" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bSE" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bSF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bSG" = (/obj/structure/table,/obj/item/device/healthanalyzer,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) @@ -5038,7 +5038,7 @@ "bST" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bSU" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bSV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/hor) -"bSW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) +"bSW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "AI Upload Chamber - Port"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bSX" = (/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bSY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bSZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/hydroponics) @@ -5051,12 +5051,12 @@ "bTg" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/cryo) "bTh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bTi" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bTj" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bTj" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTk" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bTl" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bTm" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTn" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/machinery/light,/turf/simulated/floor/wood,/area/library) -"bTo" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bTo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Crew Quarters Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bTp" = (/obj/structure/table,/obj/item/weapon/cell/potato,/obj/machinery/light,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -3; pixel_y = -26},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bTq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "bTr" = (/obj/machinery/chem_master,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) @@ -5078,7 +5078,7 @@ "bTH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bTI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bTJ" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) -"bTK" = (/obj/structure/sign/poster{pixel_x = -32; pixel_y = 0},/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bTK" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bTL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) "bTM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bTN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -5096,7 +5096,7 @@ "bTZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bUa" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/wood,/area/library) "bUb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bUc" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"bUc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/construction) "bUd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bUe" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) "bUf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5108,7 +5108,7 @@ "bUl" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bUm" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bUn" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) -"bUo" = (/obj/structure/sign/poster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bUo" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bUp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hydroponics) "bUq" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bUr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5135,7 +5135,7 @@ "bUM" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bUN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "bUO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bUP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'; name = "Gateway Chamber"},/turf/simulated/floor,/area/gateway) +"bUP" = (/obj/structure/closet/boxinggloves,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "bUQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "bUR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUS" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - CO2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) @@ -5154,7 +5154,7 @@ "bVf" = (/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bVi" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bVi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bVj" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bVk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -5175,8 +5175,8 @@ "bVA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bVB" = (/obj/structure/rack,/obj/item/weapon/paper,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bVC" = (/obj/structure/stool/bed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bVD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bVE" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bVD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/construction) +"bVE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/construction) "bVF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bVG" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVH" = (/obj/structure/table,/obj/structure/sign/greencross{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5195,12 +5195,12 @@ "bVU" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bVV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bVW" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) -"bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/construction) "bVY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bVZ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/space,/area) "bWa" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bWb" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Toxins Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) -"bWc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bWc" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) "bWd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bWe" = (/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/reagentgrinder{pixel_y = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bWf" = (/turf/simulated/wall,/area/medical/medbay2{name = "Medbay Storage"}) @@ -5309,7 +5309,7 @@ "bYe" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bYf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYg" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/item/trash/popcorn,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"bYh" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bYh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/telesci) "bYi" = (/obj/structure/closet,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYj" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 0},/obj/machinery/chem_master,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/maintenance/storage) @@ -5329,7 +5329,7 @@ "bYy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bYz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bYA" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bYB" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bYB" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = -5; pixel_y = 2},/obj/item/weapon/storage/backpack/satchel_tox,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = 5; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bYC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -5355,7 +5355,7 @@ "bYY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bYZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server) "bZa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"bZb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bZb" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZc" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "bZd" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "24"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bZe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5365,10 +5365,10 @@ "bZi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard) "bZj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bZk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) -"bZl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bZl" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bZn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/central) -"bZo" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bZo" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bZq" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/maintenance/storage) "bZr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central) @@ -5386,7 +5386,7 @@ "bZD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZF" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bZG" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bZG" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "bZH" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bZI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -5408,16 +5408,16 @@ "bZZ" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area) "caa" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "cab" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/port) -"cac" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cac" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cad" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science) "cae" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caf" = (/obj/machinery/computer/med_data,/obj/machinery/light{dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "cag" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/power/apc{dir = 1; name = "Sleeper Room APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "cah" = (/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) -"cai" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"caj" = (/obj/structure/sign/poster{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cai" = (/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"caj" = (/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cak" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"cal" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cal" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cam" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "can" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) "cao" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5426,8 +5426,8 @@ "car" = (/obj/structure/disposalpipe/sortjunction{dir = 2; sortType = 20},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cas" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) "cat" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Kitchen"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/crew_quarters/kitchen) -"cau" = (/obj/structure/closet{name = "Spare Table Modules"},/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) -"cav" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) +"cau" = (/obj/structure/sign/poster{pixel_x = 32; pixel_y = 0},/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"cav" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/science{pixel_x = 32},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "caw" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics) "cax" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "cay" = (/obj/structure/closet,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5482,7 +5482,7 @@ "cbv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cbw" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/starboard) "cbx" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cby" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cby" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "cbz" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "cbA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cbB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) @@ -5502,18 +5502,18 @@ "cbP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/library) "cbQ" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central) "cbR" = (/obj/structure/closet/crate/rcd{pixel_y = 4},/obj/machinery/door/window/northleft{dir = 4; name = "RCD Storage"; pixel_x = 1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cbS" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"cbS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cbT" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Air"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "cbU" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) "cbV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cbW" = (/obj/machinery/door/airlock/maintenance{name = "Kitchen Maintenance"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cbX" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/teleporter{name = "\improper Teleporter Room"}) -"cbY" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/aft{name = "Aft Maintenance"}) -"cbZ" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cbY" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) +"cbZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cca" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "ccb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "ccc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"ccd" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"ccd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cce" = (/obj/structure/table/woodentable,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/wood,/area/library) "ccf" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) @@ -5530,7 +5530,7 @@ "ccr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccs" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cct" = (/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) -"ccu" = (/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"ccu" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "ccv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "ccw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "ccx" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics) @@ -5541,7 +5541,7 @@ "ccC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) "ccD" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "ccE" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"ccF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"ccF" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ccG" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "ccH" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "ccI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -5560,7 +5560,7 @@ "ccV" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "ccW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/gateway) "ccX" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"ccY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"ccY" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) "ccZ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Plasma to Pure"; on = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage) "cda" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cdb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5597,7 +5597,7 @@ "cdG" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/power/apc{dir = 8; name = "E.V.A. Storage APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cdH" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/chemistry) "cdI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"cdJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cdJ" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/aft{name = "Aft Maintenance"}) "cdK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdL" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/science) "cdM" = (/obj/machinery/power/apc{dir = 8; name = "Research Wing Security APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/science) @@ -5610,7 +5610,7 @@ "cdT" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "cdV" = (/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"cdW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cdW" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cdX" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdY" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery) @@ -5649,15 +5649,15 @@ "ceG" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "ceH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/maintenance/storage) "ceI" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"ceJ" = (/obj/structure/table,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"ceK" = (/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceJ" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceK" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ceL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "ceM" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "ceN" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/northleft{dir = 8; name = "Disposals Chute"; pixel_x = -1; pixel_y = 0; req_access_txt = "0"},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposals chute"; pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) -"ceO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) +"ceO" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "ceP" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "ceQ" = (/obj/machinery/door/airlock/external{name = "Auxiliary Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"ceR" = (/obj/structure/closet,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"ceR" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "ceS" = (/obj/structure/barricade/wooden,/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ceT" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "ceU" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/window/westright{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/turf/simulated/floor{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics) @@ -5665,11 +5665,11 @@ "ceW" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "ceX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "ceY" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) -"ceZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/storage) +"ceZ" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfa" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor,/area/medical/surgery) "cfb" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) "cfc" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) -"cfd" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) +"cfd" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfe" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) "cff" = (/obj/machinery/gibber,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cfg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5679,26 +5679,26 @@ "cfk" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cfl" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/medical/cryo) "cfm" = (/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/wood,/area/security/vacantoffice) -"cfn" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"cfn" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cfp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "cfq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cfr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) +"cfr" = (/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/table/woodentable,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cfu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) +"cfu" = (/obj/structure/stool,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfv" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "cfw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cfx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cfx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfy" = (/turf/simulated/floor{icon_state = "greenfull"},/area/hallway/primary/central) "cfz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hallway/primary/central) -"cfA" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfA" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "cfB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/aft) "cfC" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfD" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cfE" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfF" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cfG" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/maintenance/storage) +"cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "cfI" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "cfJ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -5706,7 +5706,7 @@ "cfL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cfM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/maintenance/storage) "cfN" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"cfO" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cfO" = (/obj/structure/closet/secure_closet/bar{pixel_x = -3; pixel_y = -1; req_access_txt = "25"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cfQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/watertank,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) "cfR" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) @@ -5732,7 +5732,7 @@ "cgl" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway) "cgm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) "cgn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) -"cgo" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"cgo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cgp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor,/area/medical/cryo) "cgq" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/cryo) "cgr" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/cryo) @@ -5742,7 +5742,7 @@ "cgv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cgw" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cgx" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/multitool,/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cgy" = (/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cgy" = (/obj/structure/stool,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cgA" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "cgB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/storage) @@ -5752,14 +5752,14 @@ "cgF" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "cgG" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "cgH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) -"cgI" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"cgI" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgJ" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgK" = (/obj/structure/closet,/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/maintenance/storage) "cgM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 2; icon_state = "blackcorner"},/area/maintenance/storage) "cgN" = (/obj/machinery/atmospherics/pipe/vent{dir = 2},/turf/simulated/floor/plating/airless,/area) "cgO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) -"cgP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cgP" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/table/woodentable,/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/starboard) "cgR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "cgS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "20;12"},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -5787,13 +5787,13 @@ "cho" = (/obj/structure/table,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chp" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chq" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"chr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"chr" = (/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "chs" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cht" = (/obj/structure/optable,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/surgery) "chw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"chx" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"chx" = (/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "chy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Surgery Observation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chA" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway) @@ -5816,7 +5816,7 @@ "chR" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) "chS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/starboard) "chT" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) -"chU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway) +"chU" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "chV" = (/obj/structure/sign/chemistry,/turf/simulated/wall,/area/medical/chemistry) "chW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Maltese Falcon"},/turf/simulated/floor,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chX" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "CO2 to Pure"; on = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/storage) @@ -5833,7 +5833,7 @@ "cii" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cij" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central) "cik" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cil" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cil" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/keycard_auth{pixel_x = 26; pixel_y = 0},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cim" = (/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cin" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) "cio" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -5866,7 +5866,7 @@ "ciP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ciQ" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/hallway/secondary/exit) "ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"ciS" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/security/vacantoffice) +"ciS" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ciT" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "ciU" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/wirecutters,/obj/item/weapon/weldingtool,/turf/simulated/floor/plating,/area/maintenance/starboard) "ciV" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) @@ -5874,7 +5874,7 @@ "ciX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/aft) "ciY" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ciZ" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Research and Development"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/lab) -"cja" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"cja" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "cjb" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "dark"},/area/library) "cjc" = (/turf/simulated/wall,/area/assembly/chargebay) "cjd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) @@ -5901,7 +5901,7 @@ "cjy" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/device/t_scanner,/obj/item/device/t_scanner,/obj/item/device/t_scanner,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cjz" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor,/area/medical/surgery) "cjA" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) -"cjB" = (/obj/machinery/vending/wallmed2{pixel_y = -28},/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"cjB" = (/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "cjC" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) "cjD" = (/obj/structure/closet/crate/freezer,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor,/area/medical/surgery) "cjE" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5909,7 +5909,7 @@ "cjG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "cjH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; pixel_y = -2; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) "cjI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cjJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cjJ" = (/obj/structure/sign/poster{pixel_y = -32},/obj/structure/table/woodentable,/obj/machinery/light_construct/small,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cjK" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cjL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) "cjM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -5919,11 +5919,11 @@ "cjQ" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "cjR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "cjS" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/robotics) -"cjT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cjT" = (/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cjU" = (/obj/machinery/light/small,/obj/machinery/power/apc{dir = 8; name = "Library APC"; pixel_x = -25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/library) -"cjV" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor,/area/maintenance/storage) +"cjV" = (/obj/machinery/vending/wallmed2{pixel_y = -28},/obj/machinery/light,/obj/machinery/camera{c_tag = "Medbay Surgery"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cjW" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) -"cjX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway) +"cjX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cjY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cjZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/library) "cka" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/library) @@ -5968,7 +5968,7 @@ "ckN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckO" = (/turf/simulated/wall,/area/medical/morgue) "ckP" = (/obj/structure/sign/vacuum,/turf/simulated/wall,/area/hallway/secondary/exit) -"ckQ" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/device/flashlight,/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) +"ckQ" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "ckR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckS" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/clothing/mask/pig,/obj/item/weapon/bikehorn,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckT" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6020,7 +6020,7 @@ "clN" = (/obj/structure/dresser,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clP" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) -"clQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway) +"clQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) "clR" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) "clS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "clT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6047,10 +6047,10 @@ "cmo" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/light{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmp" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/library) "cmq" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cmr" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cmr" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cms" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "cmt" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/security/vacantoffice) -"cmu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"cmu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cmv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cmw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cmx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6246,7 +6246,7 @@ "cqf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"cqi" = (/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"cqi" = (/obj/machinery/door/airlock/maintenance{name = "Telescience Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/hallway/secondary/exit) "cqk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/chapel/main) "cql" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) @@ -6282,7 +6282,7 @@ "cqP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cqQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqR" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"cqS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"cqS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cqT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/assembly/robotics) "cqU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cqV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) @@ -6309,7 +6309,7 @@ "crq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) "crr" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "crs" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"crt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"crt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cru" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "crv" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "crw" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) @@ -6392,15 +6392,15 @@ "csV" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "csW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) "csX" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) -"csY" = (/obj/structure/table,/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"csY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "csZ" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Lab APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cta" = (/obj/structure/largecrate,/obj/item/weapon/paper,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) "ctb" = (/obj/structure/table,/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "ctc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "ctd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cte" = (/obj/machinery/alarm{pixel_y = 32},/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/gloves/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cte" = (/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "CMO's Office"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ctf" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"ctg" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ctg" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) "cth" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) "cti" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctj" = (/turf/simulated/wall,/area/medical/genetics_cloning) @@ -6463,12 +6463,12 @@ "cuo" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cup" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cuq" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing) -"cur" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "mix vent bast door"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"cur" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cus" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) "cut" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) "cuu" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing) "cuv" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing) -"cuw" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing) +"cuw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cux" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cuy" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) "cuz" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing) @@ -6481,7 +6481,7 @@ "cuG" = (/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) "cuH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) "cuI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) -"cuJ" = (/obj/structure/table,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) +"cuJ" = (/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cuK" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cuL" = (/turf/simulated/floor/plating/airless,/area/solar/port) "cuM" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/server{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) @@ -6507,15 +6507,15 @@ "cvg" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing) "cvh" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1449; id = "tox_airlock_pump"},/turf/simulated/floor/engine,/area/toxins/mixing) "cvi" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing) -"cvj" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"cvj" = (/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) "cvk" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cvl" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) "cvm" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cvo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvp" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cvq" = (/obj/machinery/door_control{dir = 2; id = "genetics"; name = "Shutter Control"; pixel_x = 26; pixel_y = 6; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) -"cvr" = (/obj/machinery/dna_scannernew,/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"cvq" = (/obj/structure/stool,/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cvr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cvs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cvt" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cvu" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -6536,8 +6536,8 @@ "cvJ" = (/turf/simulated/wall,/area/assembly/robotics) "cvK" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "cvL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/assembly/robotics) -"cvM" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) -"cvN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/obj/structure/sign/fire{pixel_y = -32},/turf/simulated/floor/engine,/area/toxins/mixing) +"cvM" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"cvN" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics Starboard-Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "cvO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cvP" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual inlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cvQ" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing) @@ -6551,7 +6551,7 @@ "cvY" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "cvZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/plating,/area/toxins/server) "cwa" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cwb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cwb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "cwc" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = list("SS13","RD"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cwd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cwe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) @@ -6702,7 +6702,7 @@ "cyT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyV" = (/obj/machinery/power/solar_control{id = "starboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cyW" = (/obj/structure/closet/lawcloset,/turf/simulated/floor/wood,/area/lawoffice) +"cyW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port-Aft"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cyX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cyY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyZ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -6715,9 +6715,9 @@ "czg" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "czh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/medical/virology) "czi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/medical/virology) -"czj" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"czj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "czk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"czl" = (/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) +"czl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czm" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics_cloning) "czn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "0"},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) "czo" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/genetics_cloning) @@ -6726,22 +6726,22 @@ "czr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "czs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "czt" = (/obj/machinery/smartfridge/chemistry/virology,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"czu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) +"czu" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "czv" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "czw" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czx" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"czy" = (/obj/structure/stool/bed/roller,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) -"czz" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"czy" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"czz" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) "czA" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czC" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "czF" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security in red at the top, you see engineering in yellow, science in purple, escape in checkered red-and-white, medbay in green, arrivals in checkered red-and-blue, and then cargo in brown."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"czG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics) +"czG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czH" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"czJ" = (/obj/structure/stool/bed/roller,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) +"czJ" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "czK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/assembly/chargebay) "czL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "czM" = (/obj/machinery/power/apc{dir = 8; name = "Xenobiology APC"; pixel_x = -25},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) @@ -6846,7 +6846,7 @@ "cBH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cBI" = (/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cBJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cBK" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cBK" = (/turf/simulated/wall,/area/gateway) "cBL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cBM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/aft) "cBN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) @@ -6885,7 +6885,7 @@ "cCu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCv" = (/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cCx" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = -30},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cCx" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cCy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCz" = (/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCA" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) @@ -6899,7 +6899,7 @@ "cCI" = (/turf/space,/area/syndicate_station/southeast) "cCJ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,/obj/item/weapon/reagent_containers/glass/bottle/cold{pixel_x = 3; pixel_y = 3},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cCK" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCL" = (/obj/structure/table,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cCL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cCM" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/packageWrap,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cCN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCO" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) @@ -6916,7 +6916,7 @@ "cCZ" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cDa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "cDb" = (/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cDc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) +"cDc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cDd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology) "cDe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cDf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -6967,7 +6967,7 @@ "cDY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/medical/genetics) "cDZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cEa" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cEb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) +"cEb" = (/obj/machinery/door/poddoor/shutters{id = "teleshutter"; name = "Teleporter Access Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cEc" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard) "cEd" = (/turf/space,/area/syndicate_station/south) "cEe" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area) @@ -7271,10 +7271,10 @@ "cJQ" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/genetics) "cJR" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cJS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) -"cJT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cJT" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cJU" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cJV" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) -"cJW" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"cJW" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/teleporter{name = "\improper Teleporter Room"}) "cJX" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/simulated/shuttle/plating,/area/centcom/evac) "cJY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cJZ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7293,14 +7293,14 @@ "cKm" = (/turf/simulated/shuttle/floor,/area/centcom/evac) "cKn" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cKo" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"cKp" = (/obj/machinery/light,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cKp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) "cKq" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/item/robot_parts/chest{name = "Cyborg Torso Exhibit"; pixel_x = -2; pixel_y = 2},/obj/item/robot_parts/head{name = "Cyborg Head Exhibit"; pixel_x = 3; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cKr" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKt" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKu" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"cKw" = (/mob/living/carbon/monkey,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cKw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Gateway - Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "cKx" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKy" = (/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/grapeseed,/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cKz" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) @@ -7381,7 +7381,7 @@ "cLW" = (/obj/machinery/door/unpowered/shuttle{name = "cargo door"},/turf/simulated/shuttle/plating{dir = 1; icon_state = "delivery"},/area/shuttle/escape/centcom) "cLX" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape/centcom) "cLY" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) -"cLZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cLZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) "cMa" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cMc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) @@ -7406,11 +7406,11 @@ "cMv" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/plating{icon_state = "floorgrime"},/area/shuttle/escape/centcom) "cMw" = (/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) "cMx" = (/turf/unsimulated/wall,/area/centcom/ferry) -"cMy" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "Cloning Lab APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cMy" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cMz" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/control) "cMA" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"cMB" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) -"cMC" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) +"cMB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'; name = "Gateway Chamber"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/gateway) +"cMC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 26; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) "cMD" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "cME" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "cMF" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) @@ -7427,7 +7427,7 @@ "cMQ" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "cMR" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"cMT" = (/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; req_access_txt = "9"},/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) +"cMT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cMU" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Nanotrasen Corporate Showroom APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/cigbutt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cMV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/storage/primary) "cMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) @@ -7471,7 +7471,7 @@ "cNI" = (/obj/machinery/sleeper,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cNJ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "cNK" = (/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"cNL" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cNL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/gateway) "cNM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cNO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/oil,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -7482,7 +7482,7 @@ "cNT" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac) "cNU" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cNV" = (/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"cNW" = (/obj/machinery/vending/cola,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) +"cNW" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "cNX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) "cNY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) "cNZ" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) @@ -7752,7 +7752,7 @@ "cTd" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) "cTe" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) "cTf" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"cTg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"cTg" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cTh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) "cTi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "cTj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) @@ -8768,7 +8768,7 @@ "dmF" = (/turf/simulated/floor/airless,/area/mine/abandoned) "dmG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dmH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"dmI" = (/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/table,/obj/item/weapon/folder/white,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/paper,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dmI" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Starboard Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "dmJ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dmK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dmL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) @@ -8848,7 +8848,7 @@ "doh" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "doi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doj" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dok" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dok" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37;25;28"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dol" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dom" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/mine/north_outpost) "don" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/mine/north_outpost) @@ -8865,7 +8865,7 @@ "doy" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/airless,/area/mine/abandoned) "doz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/morgue) -"doB" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/folder/white,/obj/item/clothing/gloves/latex,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"doB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "doC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "doD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/north_outpost) "doE" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/north_outpost) @@ -9237,10 +9237,10 @@ "dvG" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) "dvH" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/mine/production) "dvI" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/production) -"dvJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/production) +"dvJ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dvK" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/production) "dvL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) -"dvM" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dvM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dvN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/gateway) "dvO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway) "dvP" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) @@ -9252,7 +9252,7 @@ "dvV" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dvW" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor,/area/mine/production) "dvX" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) -"dvY" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor,/area/mine/production) +"dvY" = (/obj/structure/closet{name = "spare parts locker"},/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/wrench,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "dvZ" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/mine/production) "dwa" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dwb" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) @@ -9462,9 +9462,9 @@ "dzX" = (/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A stand with an empty construction mech bolted to it. The clamps are rated at 9300PSI."; icon = 'icons/mecha/mecha.dmi'; icon_state = "firefighter"; name = "Construction Mech Exhibit"},/obj/machinery/light/small{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "dzY" = (/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern mech appliances, as well as the development of the uncorruptable cyborg servants of tomorrow, available today."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Machine' Exhibit"; pixel_x = 0; pixel_y = 32},/obj/structure/showcase{desc = "This cyborg looks frighteningly robust, with cold unseeing eyes. Signs praise the incorruptible nature of synthetics."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "Security"; name = "Cyborg Exhibit"; pixel_y = 3},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "dzZ" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death."; icon = 'icons/obj/cloning.dmi'; icon_state = "pod_0"; name = "Cloning Pod Exhibit"},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"dAa" = (/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/really_black,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dAa" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "dAb" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dAc" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dAc" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dAd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "dAe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "dAf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology) @@ -9506,7 +9506,7 @@ "dAP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dAQ" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "dAR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"dAS" = (/obj/machinery/door_control{desc = "A remote control switch for the cloning door."; id = "CloningDoor"; name = "Cloning Exit Button"; normaldoorcontrol = 1; pixel_x = -23; pixel_y = 8},/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dAS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "dAT" = (/obj/item/weapon/storage/box,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -9522,16 +9522,16 @@ "dBf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/laborcamp/station) "dBg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dBh" = (/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dBi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"dBi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "dBj" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "dBk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "dBl" = (/obj/machinery/power/apc{dir = 1; name = "Mech Bay APC"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/assembly/chargebay) "dBm" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/laborcamp/station) "dBn" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/laborcamp/station) -"dBo" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/ale,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "dBp" = (/obj/machinery/camera{c_tag = "Virology Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dBq" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/sign/biohazard{pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"dBr" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "dBs" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod4/station) "dBt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) "dBu" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) @@ -9543,7 +9543,7 @@ "dBA" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) "dBB" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) "dBC" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) -"dBD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBD" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) "dBE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "dBF" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/effect/landmark{name = "blobstart"},/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing) "dBG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) @@ -9592,14 +9592,14 @@ "dCx" = (/obj/machinery/vending/wallmed1{pixel_y = -28},/obj/structure/table,/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dCy" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dCz" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"dCA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"dCA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/wood,/area/security/vacantoffice) "dCB" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod4/transit) "dCC" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/medical) "dCD" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dCE" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod4/transit) "dCF" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) "dCG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) -"dCH" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing) +"dCH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dCI" = (/obj/item/weapon/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "dCJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "dCK" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod4/transit) @@ -9656,7 +9656,7 @@ "dDJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDK" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"dDM" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/item/clothing/gloves/fyellow,/obj/item/device/t_scanner,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) +"dDM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Command Hallway - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "dDN" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) "dDO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dDP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/crew_quarters/locker) @@ -9683,7 +9683,7 @@ "dEk" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) "dEl" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isola"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/exam_room{name = "Patient Room B"}) "dEm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "isola"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/exam_room{name = "Patient Room B"}) -"dEn" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = -5; pixel_y = 2},/obj/item/weapon/storage/backpack/satchel_tox,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) +"dEn" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/lattice,/turf/space,/area) "dEo" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area) "dEp" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area) "dEq" = (/turf/simulated/wall,/area/medical/exam_room{name = "Patient Room B"}) @@ -9841,7 +9841,7 @@ "dHm" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) "dHn" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHo" = (/obj/machinery/vending/sustenance,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dHp" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"dHp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dHq" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/laborcamp) "dHs" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) @@ -9946,7 +9946,7 @@ "dJn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dJp" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dJq" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dJq" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "dJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJs" = (/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dJt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -9983,14 +9983,14 @@ "dJY" = (/obj/machinery/door/airlock{id_tag = "AuxToilet1"; name = "Unit 1"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJZ" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet1"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dKa" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plating/airless,/area) -"dKb" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/human{name = "Artifical Test Subject Beta"; voice_name = "Artifical Test Subject Beta"},/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area) +"dKb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "dKc" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dKd" = (/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade{pixel_x = 2; pixel_y = 2},/obj/item/weapon/lipstick/purple{pixel_x = -2; pixel_y = -2},/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dKe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/landmark/costume,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dKf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) +"dKf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "dKg" = (/obj/structure/table,/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dKh" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/landmark/costume,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dKi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dKi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Command Hallway - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "dKj" = (/obj/machinery/door/airlock{id_tag = "AuxToilet3"; name = "Unit 3"},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dKk" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dKl" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) @@ -9999,7 +9999,7 @@ "dKo" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/chapel/main) "dKp" = (/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor,/area/hallway/secondary/exit) "dKq" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) -"dKr" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) +"dKr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "24"},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/maintenance/storage) "dKs" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) "dKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKu" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -10027,7 +10027,7 @@ "dKQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area) "dKR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) "dKS" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area) -"dKT" = (/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"dKT" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "dKU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) "dKV" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) "dKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 26; pixel_y = 26; req_access_txt = "39"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) @@ -10046,10 +10046,102 @@ "dLj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing) "dLk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "dLl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"dLm" = (/obj/structure/window/reinforced,/mob/living/carbon/human,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area) +"dLm" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dLn" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing) "dLo" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "dLp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/ore_box,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dLq" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/folder/red,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dLs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dLt" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLu" = (/obj/structure/table/woodentable,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/clipboard,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLv" = (/obj/structure/table/woodentable,/obj/item/device/camera_film{pixel_y = 9},/obj/item/device/camera_film{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLw" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLx" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge) +"dLy" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge) +"dLz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge) +"dLA" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge) +"dLB" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"dLC" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"dLD" = (/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/obj/machinery/light/small{dir = 1},/obj/structure/table/woodentable,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/really_black,/obj/item/clothing/glasses/sunglasses,/obj/machinery/camera{c_tag = "Corporate Showroom"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dLE" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/obj/machinery/camera{c_tag = "Gateway - Atrium"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLF" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLG" = (/obj/structure/dispenser/oxygen{layer = 2.9; pixel_x = -1; pixel_y = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"dLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLJ" = (/obj/machinery/camera{c_tag = "Arrivals Aft Arm Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) +"dLN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Kitchen"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"dLO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Arrivals Aft Arm"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLR" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"dLS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) +"dLT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/gateway) +"dLV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway) +"dLW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"dLX" = (/obj/structure/closet/secure_closet/exile,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLY" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/device/flashlight,/obj/structure/closet/crate,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) +"dLZ" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) +"dMa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMb" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) +"dMc" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = -30},/obj/machinery/camera{c_tag = "Virology Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMd" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Corner"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMg" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMh" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dMi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"dMj" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"dMk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dMl" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/toxins/mixing) +"dMm" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"dMn" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/folder/white,/obj/item/clothing/gloves/latex,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"dMo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Virology Break Room"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dMp" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing) +"dMq" = (/obj/machinery/camera{c_tag = "Medbay Hallway Aft"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"dMr" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/stool/bed/chair{dir = 1},/mob/living/carbon/human{dir = 1; name = "Artifical Test Subject Beta"; voice_name = "Artifical Test Subject Beta"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area) +"dMs" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing) +"dMt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing) +"dMu" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"dMv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dMw" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Medbay Security Post"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"dMx" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"dMy" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Virology Testing Area"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMz" = (/obj/structure/table,/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMA" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/gloves/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMB" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMC" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dME" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dMF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dMG" = (/obj/machinery/door_control{dir = 2; id = "genetics"; name = "Shutter Control"; pixel_x = 26; pixel_y = 6; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) +"dMH" = (/obj/structure/table,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/camera{c_tag = "Genetics Desk"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) +"dMI" = (/obj/machinery/dna_scannernew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"dMJ" = (/obj/machinery/computer/scan_consolenew,/obj/machinery/camera{c_tag = "Genetics Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"dMK" = (/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) +"dML" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) +"dMP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) +"dMQ" = (/obj/machinery/light,/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dMR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dMS" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMT" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dMU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Middle"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMV" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair,/mob/living/carbon/human{name = "Artificial Test Subject Alpha"; real_name = "Artificial Test Subject Alpha"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area) +"dMW" = (/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) +"dMX" = (/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics) +"dMY" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) +"dMZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "Cloning Lab APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/obj/machinery/camera{c_tag = "Genetics Cloning Lab"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dNa" = (/obj/machinery/door_control{desc = "A remote control switch for the cloning door."; id = "CloningDoor"; name = "Cloning Exit Button"; normaldoorcontrol = 1; pixel_x = -23; pixel_y = 8},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dNb" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dNc" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/production) +"dNd" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/production) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10113,12 +10205,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaadaapaapaapaapaapaadadAaadaapaapaapaapaapaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEabaabaaadaaaaaaaaaajCajaajDajaajCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaanyanyanyanyajCajcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaTaaTaaOaaTaaTaadadAaaaaaTaaTaaOaaTaaTaaaaaEaadaadaadaadaaEabaaaEaadaadaadaaaaadaadaadaaaaadaadaadahqaaPahqakeakfakgahqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaadaaaanyayEayEaaqaaraaraauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadacNacNacNacNacNaaOafiaaOacNacNacNacNacNaadabaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaamaaNaaPaasaataaGahqaaaaaadBfdBmdBmdBmdBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadanyanyawzaaKaaHanyanyanyabAabAaehaeiaejaekaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaakaakaakabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaakaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaiaaiaajaaiaajaaiaaiaaaahqaamahqahqabMahqahqaaaaaaahTabKdpCabLahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyabxabrabrabrabBanyabzabyabAaaMaaraaraaLaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaakaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaiaaiaajaaiaajaaiaaiaaaahqaamahqahqabMahqahqaaaaaaahTabKdpCabLahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyabxabrabrabrabBanyabzabyaaSaaMaaraaraaLaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaapaapaapaapaapaadadAaadaapaapaapaapaapaadaakaaaaadaadaadaaaaaaaaaaaaaadaadaaiabeaaoabfaaoabgaaiaadaadaaaahqabmabnabkablabiabjabhdAodAodAoabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaacaaaaaaaaaanuabcabdabdaaYaaZanyanyaaVanyanyajCaDZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadadwaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadabaaaaaaTaaTaaOaaTaaTaaaaAwaaaaaTaaTaaOaaTaaTaaaaakaaaaaaaaaaadaaaaaaaadaadaadaaaabbayNayPaaRayQayRaxKaaaaadaadawyayUayTawsaySawscRVcRWcRXcRXcRXcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaayJabcabdanyayIayHanyabAayFabAanyanyanyaadaadaadaadaadaakaakaakaakaakaakaakaaaaelaaaabaaakaakaakabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadabaaaaaaTaaTaaOaaTaaTaaaaAwaaaaaTaaTaaOaaTaaTaaaaakaaaaaaaaaaadaaaaaaaadaadaadaaaabbayNayPaaRayQayRaxKaaaaadaadawyayUayTawsaySawscRVcRWcRXcRXcRXcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaayJabcabdanyaIVaIIanyabAayFaIxanyanyanyaadaadaadaadaadaakaakaakaakaakaakaakaaaaelaaaabaaakaakaakabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadacNacNacNacNacNaaOadAaaOacNacNacNacNacNaadabaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaiayZazaaaCazdazbaaiaaaaaaaadahqazfazeazhaAmabiabjabhcRXcRXaziahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaopabcayVanyawKameaaVayYabAayXayWayXayWaaaaadaaaaaaaaaaaEaaaabCaupaupaupabCaaaaelaadaupabCaupaupabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaaEaadaadaadaadaadaadaaaaaaaaiaajaaiaaiaxRaxOaxQaaiaaiaxKaaiaadahqaxIaxHaxGaxFaaaaadaxNaxMaxLcGdahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyaxDaxEanyaxCaxBanyanyanyanyanyanyanyaadaadaaaaaaaaaaakaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaapaapaapaapaapaadadAaadaapaapaapaapaapaaaaakaaaaaaaadauWauWauNauWaaiaaiayCaxkaytayvaaRaysaBMaygayeaaiaadahqaybaxXawCaAlabiabjabharEarEayfahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadanyanyanyaxJapmaxVaxTapVaxSavbaxWanuaaaaaaaaaaadaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaapaapaapaapaapaadadAaadaapaapaapaapaapaaaaakaaaaaaaadauWauWauNauWaaiaaiayCaxkaytayvaaRaysaBMaygayeaaiaadahqaybaxXawCaAlabiabjabharEarEayfahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadanyanyanyaxJapmaIoaxTapVaxSavbaxWanuaaaaaaaaaaadaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaaaaOaaTaaOaaOaaTaaaajdaaaaaTaaOaaTaaTaaOaaaaaaaaaaaaaadauWauWauNauWaaiaxaaaBaayaayawrawxawuaaJawwawAaaiaadawyawEawDawCawBawsasDauxarEarEarEcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaakaaaaaaaaaaaaaadaaaanuawcauuawdawhavTavhawbawaavSavNaopaaaaadaadaadaadaadaadaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaxnawZaayaaxawXaxcaxmaaoaaWazRaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaOaaOaaTaaTaaOaaaabYaaaaaTaaOaaTaaOaaTaaaaaaaaaaaaaadauWaaiauUauVaaRaaRauRaaRauSauTaaUauPauQaayaayauOauNauMauDauCauzahqaaaaadahTahRahRahRahTaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaadaadaaaanyanyanyapmauvaurauqapVausauuautanuaaaaadaaaaaaaacaaaaaaaakaadafgafgafgafgafgaupafMaupafgafgafgafgafgaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10127,113 +10219,113 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaadaaaaadaadabYaadaadaaaaaaaaaaaaaaaauWabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiauNawyavoavnavqavpaaaaadaaaabvabvabvabvabvaaaaadaaaaaaabwabwaWyaWMaYuabwabwaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadanyanyanyapmamRaurauqapVaFdavbauYanuaaaaadaaaaaaaaaaaaaaaaaEaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaDuabvabvaadaadabwabwaDFaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaadaaaakhaQJakhaadaadaadaadaadaadauNaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiaajayOaWfaWeaWkayOaadabvabvaEsaEqaEpaEpaErabvabvaadabwaDYaEaaEbaEeaUCaVuaEmabwaadahwaSNaSPaWxahwaaaaaaaaaaadaaaaaaaaaaadaaaaopaseaExaEvaEwaDoaEuanyanyanyanyanyaaaaaaaadaaaaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaaaaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaCYaBtaBLaFVaBJaBIaBWaBRaBOaBNaadabvaDiaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaaaaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaCHaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaDfaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaCUaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaDlavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapMalGapXalGalHaoFakTaqaalJareakTaKBagVaKBaaaaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaAyazmazlazkazjazjazEabvaadabwaBsaCeaBYaCcaAIaBXaztabwaadahwaAqaAraCAahwaAcadraAdadsaAeaAfadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanSapKakSammanHamnafaakTamoarHamqakTajnbMbaKBaKBaaaauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaBTaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFaoFanQammamnamnalKalDakTaleanbakTbrTbrTbrTaKBaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaakBakAakCakAarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHajKajJajAajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZanGanHanIanJalDaoYapvbGxaKBbHMamubrTaKBaadaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaioaipaiqairaiJakbacBakiakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcaiFahwaicadsajwaibadraiaahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFamSaoFamVaoHanEahdanFahfarXaeJarXahbahVaKBaKBaKBagVaKBaKBaKBaKBaaaadradradrafQagXagZagYahjahGahDahEaiIahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHaiDahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsahsadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZaoFapyalHaoFaoFbHMacpbrTaKBaKBaKBaKBaKBbrSbHMarnafVaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaghabQaenaidaiBaexahlafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaoFamZaqjaqkaqkaqlaqmajqacpbrTaKBafBbHMbrTaKBbrTbrTbrTaKSaKBaKBaKBahLafxagOaviahMafyafyafAafvaeraiRafuabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftafsafjagpagoagmafeaeYaeYaeYaeZaeVaeTaeXaeWakWamiamiamiamiamiaoAadZabXaeOaCWaeQaJOaJOaJObmQaJOaeSaCWaQsbnBaQsaQsbWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFaoFarjaoFarkaoFaoFagrbZlarXaeJarXagqbrTaKBbrTbrTbHMagSagvbrTaKBadYahsagPagAafQaeLaeKaeKaeqaeraiRaesacIaeDaeEaeFaefafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjafdacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWaedbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBaaIajtaKBbMeaDnadpbrTaspaKBagracpbrTaKBbrTaKSbrTaKBaeubrTbHMbrTaqhbrTaKBaetahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaeIadOaeyaevaewaenaaXaeCaexaezadRadPadNadMadLadJadKadJadIadHadGadEadFaepadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadlbyOavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaiWaeUafrafRbrTbrTbrTbrTbrTahcagnafTacracqagvbrTbrTbrTbrTaKBagracpadsadradradradradradradradradracAadradradrackaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFadoacGacHabPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNabNabNaaSaaQabOabUabTabSabRabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIaciarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBarVarXarXarXarXarXatzatBazLatCatDatEatFawpatGatIasaasaatKasaasaascaApaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatraAgazpabvabvabvaAnaAoaexaexaaQazuazxazwazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaugavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadapZapZapWaKBasLaUDbHMbrTbrTbHMarSaowaowarTagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslasFasCazsasbarZashasgasjasiaslaskaskasgasnasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaapWapZapWaKBaKBaKBbHMbrTbrTbHMavaarlbrTaqcagrbJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUazoaqSajgajhajiargaeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFarJarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaXOaXOaXOaoyarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGapeapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaoKapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWavXavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFawYanharuawVatqarMaxbaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIamHaldaunamyamxamAatQatUaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaamWanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldaoOajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkaxZanZayaaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyarfawVazNazOazPazQahZadrakYadraaaazSazTazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwalvaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObnZbnObnVboaboebobbombolbnHbBMbnKbnLafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCybDdadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbpzbpAbpwbpxafQainaneanebEcbubanebsianeaneakZbaabaabaabrbbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObqcbqebECbGdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbpQallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbqvaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaGraCkaCkaCkaCkaCkaCkaGsaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubaWbsebaVbaybppbbUboubaTbaUbaRbitbisbiqbiebikbicbidbiobipbimbDpbAObAQbAfbAgbDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoeanKaogaohaoiaojaoabyEadqbyFbyGaDsaqLakZbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbhyaFZasPbhxaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXaHYaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbnhasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbEzbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohapRaoabzYaBSbyWaBUbzRaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbkmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbjZaHLbjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkaCkaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbBdaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbiIaEDacjarNaKhblOaHDaGaasPblPblQaDBaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkaLnaCkaCkaCkaEXaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpaLqaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxacyWaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtblQaDBaAObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkaCkaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKubAbaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbzZbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbAhaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbAnbAmbAjbAiblQaDBaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkaEUaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVdDMbjlaaaaFsbSubAPaLQbTmaGYbANbSsaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBacTgbBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbCdbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbCzbCybCsbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbTobBHbBHbBHbBKbBHbBHbBHbBHbZMbBHbBHbBHbBHbBKbBHbBHbBHaQucCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsbmNbmNaCkaEUaEUaEUaEUaCkaCkaCkaCkaEUaEUaKBarVagvafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebygaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbDAaTgbDCbDBbDIbDHbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbKZbzWaQMbmNaEUbueaEUaQPbJGbJmaEUaEUaEUbuwaQRbueaKBasdbKdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaQVaQVaQVaQVaQVaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbsCaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbsNbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahraQsbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbtmbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaSgaQNaQNaShaSiaQNaQNaQNbvfaQNblSblSblSblSaQNaQNbvnaQNaQNaQNbtqaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbsfaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbISaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbAVaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpbtybtfbthbtibtjaTsaTtaTsaTsaTsaTsaTuaTsaTvaTwaTxbtXaTzaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbNcbIVbvdbvcbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybvBbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaULaZCbPDaUNaUMaUMaUMaUMaUOaQOaQOaUPaUMaUMaUMaUOaQOaUQaURaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbwOaQbaVsburaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVEaVDbvbbwKaVDbwJaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbyOaNLbxpbxpbxpbIUbxpbIZaNLbxubuVbxiaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbxSaxxayMbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaWgaQNaQNaQNaTpaWhaTpaWiaQOaQOaWjaTpaWhaTpaSDaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaOpaOmaOlaQVaQVaQVaQVaWzaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaOiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaONaNLaNUaNSaNRaHoaNTaNOaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaNBaPBaXEbeNaXFbhtaXHaVgaXIaXFbeNaXJaXKaQNaXLaXMaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaSeaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaKYaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaSXaNiaTjaSYaNjaSXaSYaSYaLdaYGaRkaJzaMAaMHaMFaMyaMwaMzaHUaMvaMuaHUaaaavAacjaVMaMraNIaNVaNdaVMaQsaNbbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaMmaHoaMlaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaPAawqatXawlawkawjatXawiaOWaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjbcsaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaRnaHgaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaTlaSBaTkaQEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaRiaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaQlaFUaFUaFUatXaTKawfavmatXatXatXauZavdaTJaGvaFUaFUaFUaQvaQucXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaSHbaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCbdGbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjbqpatXatXaSUatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaIrbckbcqbcraTpaZjbcsaGVaInbcvbcwbcxbcybczbcAbaeaGCaISaIbaIbaIaaHuaHqaHgaHgaHgaHgaGPaHsaHraGNaGOaGHaGQaGRaFhaIRaIQaIOaIHaYpbRAaZNaIxaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdrbdsaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaFcaZlaFGbekbelbembenaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaGJaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaBebfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaFubfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaFSaTmaFJaFLaFMaFnaFoaFnaFmaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnbfUbfVbfUbaHbaHaNcaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaLOaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaLEatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaIoaIIaIwaHgaGFaHtaNNaPgaIfaHgaKGaKIaKHaKCaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIVaIWaFOaGjaOGbiwbiwbiyaIXaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaJqaJqaJqajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLaZOaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObjPaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbcMaJqaJqbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbfXaJXbhibkYbhobhdbhhbhqaJXbhpbmbbgNbinbgebhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbkEbkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbaMbizbjJbbAbizbkXbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTaZQaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasaQsbOoavAaQsbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbfjbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIaYQcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbkGaSWbqTbdKbrKbdKbTjaSWcNWbjxbfubmCbrJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbdcbcBblebdLbeibpHbtIbfBblqbmYbmZbskbsYbncbndblGbeJbnfboPboybnibnjbnkaSCaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbgpbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbgRbjybgTbltbhjblWbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbwobwSbvKbvLaLybvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPBaQNaXFbzWaXFbajbofbogbohaXFbzWboibojaQNaZjbkFbkGaSWbqTbdKbdFbdKbdJaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbdubkVbdvbosbosbnDboAboBbkQblebbubbVbbfbdbbbfbbvbbfbtIbtIboJboKboLboLboLbjhboNbndbdEbjiboLboLboLboQboRaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbeTbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaTmaTmaTmaTmbeCaTmbfpbjmbjrbsaaJqaJqbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbjeaJXbqRbqfbqhbqkbqobhXaJXbiAbpCbmtaMQbnJbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaULaWhaULaWiaQOaQOaWjaULaWhaULaWLbrsbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWaSvaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTaOPaSTaPEaWFaUBaWGaQkaUtbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbqCaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSaaZfaZfavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDaTmaTmbhcaYsaYnaTCaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaYSaZvbPOaMQaYWaYXaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaQUbrsbrsbrtaQOaQObrubrsbrsbrraRAaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGaXGbleaVJaOoaNwaVpbtIaOJbspboLbsqaZuaSwbssbssaREaRFaZnaYUboLbsxbsyaZTbszbsAbsBaZzaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaSnavAavAavAavAavAavAavAaRPavAaRRaRSaRTbiJbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMaRKaRJaROaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaUEaUFaUIclMaTVaTWaUuaUKaUAaXdaXkbfbaLIaLIaSQaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULaZCaWYaUcaUfaUeaUeaUTaUeaUeaUebcaaZEaZDbacaXjaKeaWZaXbaXaaXfaXeaXhaXgbbKbcJbaxbbJbalaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbcHbtVbtWbcObtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbiJaYkaYlaYbaYeaYmbgXbkrbcWbdHbkuaVRbkabtubjCbjBbkAbjEbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWclMbixbdRbiaaZVbkJckwbeqclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaQNaWgaQNaQNbuNbojaQNbuNbojaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRaUXbuQbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqaaVbaYpbRAaXTaXSaUHaSEaXRaSEaUHaUHaXBbBibviaZxbqtbvkaTBbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbkhaVlaVnaUvaVoaVGaVIaVKaVZbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGaWdaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUclMbfJbfKbfNaZkaZtaZSaZyclMaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQciSccRbwkbwkbwlbwkbuQcpocpocsUdJRdJYdJZaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpaZKaXTcbabZQbZWbYobYobYobYEbYnbBibwPbwQaZPaZPaZPceOcfrcfrcfrcfuaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAcjaaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPbHnbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaaaFUclMcumctZcunbkJcwscvRcAIclMaFUaaaaMfdIJbBHcjTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpcngcmDbuQchIccRbwmchLbxHchQbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcbkcbAcaPcdqcaPcbgcaPcdqcaPcaTcdDcdjbylcjIbynbyobypbypbypcegbypbymbyrbysbytceicekbyobyocjJbywbyxbyybyocelcfLbyCbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjbyVaKBcmCbNSbGxbuQcfmccRbxHbxHbxHbxKbuQaUxdJPaUxdJRdJQdJSaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAbWNcblbXCbzPbZzbZJcbGbZycfxbWcbVXbVYcaWcaZbzHcaQbZObzIbzIbzJbzKbzIbZObzMbzNbzObzPcaDcaWcfwbzSbzTccMccLbzPbzVcftccCcjwcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUcfOcfWavAbpqcgQcgYcgUcgLcgBcgOcgMcfGcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtchxbBHbBHdIBcCmaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjbyVaKBcmvaKBaKBbuQbWmccRbxHbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVbrVckVaXcbqgbWCbZkbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqbBjbBibVjbBlbBmbBnbBobBlbVibBibBjbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlbCGbZrbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfeceZceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaabDrbDrbDscAlajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhbZmbAGcfodnUarXagvbuQbWmccRbCfcnlchQbxHbuQdKmdKnaUxdKkdKjdKlaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNeckQcvOckLbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbCGdvMdvNdvOdvTbCGbCGbCGbCGbCGcPEbCGcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnuaRKcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcnYbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaMLaWgaPBaQNckJaSlbxFaQNaQNaMLdAbaZjcJTaKBaZmaUDcmrbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpbrVbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadckDcjWcjXcDccJWclQcvxcPCcOKbCGcgVbCGckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlcmAcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbKIbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpdKibrsbrsbrsbrsbrsbrsbrsbrsbrrbrsbpNchraKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnbHMdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTchUcicchNchAbCGcgVbCGcmubqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYaQsaQsaSRbgXbxqcfKcfJcfNcjVbxvbxwbxxbxychHbbmcfibQZbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtclAaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIbwncXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULbwBaUMaUcciMcihbtgcilbtgbtgbtgcgRcgPdKfaKBaZmbMeaqhbuQbWmbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpasdbqacjUbxXckacjZbrVccDckdckcbrVcdtbqacdFbqgaYpcdIbSAcbRbFvcbScfYcbicbicbUcbXcdPccqbBqdzXdzYbGybGzbGAbGBdAaclGcjlbGFdzZbCGcgIbJPcgncgobCGcglcgXcgWbCGcgVbCGcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQscxnaQsbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaTpceQaTpaQNbuNbojaQNbuNbojaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbCGbHEbJPbLubLDbOdbWxbWnbWpbCGbQWbCGbXkbqFbqGbUXcwybLzbLEbLEbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCdJCaQsaQsbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZbWbbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXFbeNaXFaaaaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUybUubuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIobFubJObBqcKqcLEcxwbJDbJEcbndJIcyvbJHbJIdJHbCGbFsbGIbPJbGNbUPbUQbUCbUNbFpbEFbCGbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjbUcbHabKabKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQsaThbgXbArbZqbZpbUebBXbAvbBYblXbxwbAwbbmcaObKIbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULceQaULaaaaaaaaaaaaaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnbrTbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPbHgbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlbCJbCLbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbCGbEadJDbDYdJEbOdbSIbSIbSWbCGbGYbCGbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAaQsckFaQsaQsaOhaQsckEaQsbgXbgXbQXaSkbAubiJbAvbDhblXbDibOybbmchBbQZbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtbKtbKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpbSDbSAbSAbQTbQTbQTbSAbSAbBqbBqbBqbBqbBqbMEbMFbMGbMEbMHbMHbMHbMFbMIbMEbMFbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNbCGbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJbPHblXbEDbEEbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgaYpbYeccrccnccicciccicclcdoccrccrccrccYbYLccrbNDbNJbNKbNKbNKbXTbNKbXYbNNcccccKccJbXwcfSccFccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQbFRbnIbFSbFTbFUbOzchXccabHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTarnaKBaadaadaadaadaadaadaadaKBbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZbPabPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjchPcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjcaucavcatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcancaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbKIbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfcalbBHbBHbBHbBHbBHbBHbBHctQbBHbBHbBHbBHbBHbBHbBHcaccCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTdJybrTbrTaKBaaaaaaaaaaaaaaaaadaqXaKBavabrTbZAbKtbKtbKtbKtbKtbKtbZDbZEbZEbZEbOMbOScdJcQabTPbQabQdbQcbQebQdbZXbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZcgZcdUchachachachibZobRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMbZjcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXblXblXbbmccjbQZbHWbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBaKBaadaadcgNaadaadaadaKBaKBaKBaKBaKBaKBaKBaKBbMbbMbbHMbYfbYcbYdbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLdJMbRwbRwcezceDbRwbRwbRwbYacbDbqFcbBcbCbRDbRDbRDbXDcexbRDbRDdJLaZLbSXbNpbNpciTaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMibWQbMibMibiNbRhbWLbWMblXbWHbevbWJbevbevbevbWGblXbbmbIHbWybUiaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBaadaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqaKBaKBaKBaKBbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLbRRbSNbRRbLObYKbRRbSNbRRbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjaUnbMkcrCavAbgXbMnbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbKIbUiaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaadaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaCYaBtaBLaFVaBJaBIaBWaBRaBOaBNaadabvaDiaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaadaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaCHaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaOiaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaCUaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaOpavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapMalGapXalGalHaoFakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaAyazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaAfadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaNBaNdammanHamnafaakTamoarHamqakTaMmaLEaLqaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFaoFanQammamnamnalKalDakTaleanbakTatUavXawYatCajeaadaadaadaaaaadaaaaaaaaaaaaaaaakBakAakCatQarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHatBajJatzajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZanGanHanIanJalDaoYapvbGxaWoarTamuargasFasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaioaipaiqairaiJakbacBakiakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadraiaahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFamSaoFamVaoHanEahdanFahfarXapKarXahbapRapeaWoapZaKBagVaKBaKBaKBaaaadradradrafQagXagZagYahjahGahDahEaiIahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHaiDahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsahsadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZaoFapyalHaoFaoFbHMacpbrTaWoanKamHamWanSaWoaKBaKBarnaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaoyabQaenaidaoKaexaoOafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaoFamZaqjaqkaqkaqlaqmajqacpbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBahLafxagOaviahMafyafyafAafvaeraiRalvabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftafsafjagpagoagmafeaeYaeYaeYaeZaeVaeTaeXaeWakWamiamiamiamiamiaoAadZabXajKaCWaeQaJOaJOaJObmQaJOakSaCWaQsbnBaQsaQsbWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFaoFarjaoFarkaoFaoFagraiFarXaeJajnagqaiWbrTajAaKBbHMagSagvafVaKBadYahsagPagAafQaeLaeKaeKahVaeraiRaesacIaeDaeEaeFahlafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjaiBacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWaedbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBaaIajtaKBbMeaDnadpbrTaspaKBafBafTbrTaKBardafdafuaeSaeOaKBaeubrTaqhbrTaKBaetahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaeIadOaeyaevaewaenaaXaghaexaezadRadPadNadMadLadJadKadJadIadHadGadEadEaepadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadlbyOavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaeCaeUafrafRbrTbrTbrTbrTbrTahcagnaeqacracqagvbrTbrTbrTbMbaKBaefaZmadradradradradradradradradradracAadradradrackaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFadoacGacHabPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNabNabNabRaaQabOabUabTabSadFabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIaciarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBarVarXarXarXarXarXaIfaZmadraInatDatEatFawpatGatIasaasaatKasaasaascaApaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatraAgazpabvabvabvaAnaAoaexaexaaQazuazxazwazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaugavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadapZapZapWaKBasLaUDbHMarlbrTbHMaGPaGCaGJaGVagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslaGsasCazsasbarZashasgasjasiaslaskaskasgaskasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaapWapZapWaKBaKBaKBbHMbrTbrTbHMaFSbrTaKBaqcaFubJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUazoaqSajgajhajiaGraeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFarJarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGaFmapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaFcapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWaBTavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMaxbaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkayaanZayIaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyaxVawVazNazOazPazQahZadrakYadraaaazSazTazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwaxZaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywbyFafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCybDdadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObAnbANbAPbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbAjallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbBMaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubaWbsebaVbaybtqbbUboubaTbaUbaRbitbisbiqbtjbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLakZbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbhxaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbvBasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbwJbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaBSbyWaBUbwoaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbwmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbjZaHLbjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkaCkaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbwOaEDacjarNaKhblOaHDaGaasPblPblQaDBaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQaaEXaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtblQaDBaAObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKubAbaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbSsbAmbRRbAiblQaDBaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbCzbCybCsbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbBKbBHbBHbBHbBHbZMbBHbBHbBHbBHbBKbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebViaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbDHbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaQVaQVaQVaQVaQVaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbEzaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbEPbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbFFaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbFYaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbAVaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbGdbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbNcbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbKZaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsburaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbwKaVDaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbxpbxpbxpbOdbxpbIZaNLbxubuVbNmaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbxSaxxayMbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaWjaOmaOlaQVaQVaQVaQVaWzaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaONaNLaNUaNSaNRaHoaNTaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaURaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUIaNiaTjaSYaNjaSXaSYaSYaLdaYGaUNaJzaMAaMHaMFaMyaMwaMzaHUaMvaMuaHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaNbbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaMlaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaPAawqatXawlawkawjatXawiaOWaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaXIaHgaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaXbaFUaFUaFUatXaTKawfavmatXatXatXauZavdaTJaGvaFUaFUaFUaQvaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCbdGbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaIrbckbcqbcraTpaZjaSeaROaRJaRFaRKbcxaRAbczbcAbaeaTlaISaIbaIbaIaaHuaHqaHgaHgaHgaHgaSHaHsaHraGNaGOaGHaGQaGRaFhaIRaIQaIOaIHaYpbRAaZNaSDaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdraSvaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaQlbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaLOaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaTwaTvaIwaHgaGFaHtaNNaPgaTuaHgaKGaKIaKHaKCaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaTsaIUaFOaGjaOGbiwbiwbiyaTtaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbnKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbmtbkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIaYQcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbsfbdKbrKbdKbspaSWbsxbjxbfubmCbrJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbdcbcBblebdLbeibpHbtIbfBblqbmYbmZbskbsYbncbndblGbeJbnfboPboybnibnjbnkaSCaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbgpbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbltbhjblWbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpaadaaaaadaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbpxbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbohbkVbdvbosbosbnDboAboBbkQblebbubbVbbfboNbbfbbvbbfbtIbtIboJboKboLboLboLbjhbppbndbdEbjiboLboLboLboQboRaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbeTbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqbfpbjmbjrbsaaTmaTmbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbqRaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBaWGaQkaUtbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDaJqaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaYSaZvbPOaMQaMQbelaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaOJbajboLbsqaZuaSwbssbssaREaZQaZnaYUboLaZObsyaZTbszbsAbsBaZzaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaSnavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaUEaUFbcvclMaTVaTWaUuaUKaUAaXdaXkbcwaLIaLIaSQaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMbfXaUcaUeaUeaUeaUebiebhybiobcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbalaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbcHbtVbtWbcObtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlbiIaYeaYmbgXbkrbjebdHbkuaVRbkabtubjCbjBbjEbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWclMbixbdRbiaaZVbkJckwbeqclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAaXTaXSaUHaSEaXRaSEaUHaUHaXBbBibviaZxbqtbvkaTBbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbfbaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGaWdaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUclMbfJbfKbfNaZkaZtaZSaZyclMaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYdJZaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpaZKaXTcbabZQbZWbYobYobYobYEbYnbBibwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPbHnbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaaaFUclMcumctZcunbkJcwscvRcAIclMaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpcngcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcbkcbAcaPcdqcaPcbgcaPcdqcaPcaTcdDcdjbylcjIbynbyobypbypdLrcegbypbymbyrbysbytceicekbyobyodLsbyobyxbyybyocelcfLbyCbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQdJSaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAbWNcblbXCbzPbZzbZJcbGbZydKidKfdKbbVYcaWcaZbzHcaQbZObzIbzIdJqbzKbzIbZObzMbzNbzObzPcaDcaWcfwbzSbzTccMccLbzPbzVcftccCcjwcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHdIBcCmaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVbrVckVaXcbqgbWCbZkbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqbBjbBibVjbBlbBmbBnbBobBldDMbBibBjbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKbZrbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDscAlajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmdKnaUxdKkdKjdKlaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcnYbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpbrVbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlcmAcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbKIbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNdLOaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnbHMdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYaQsaQsaSRbgXbxqcfKcfJcfNdLRbxvbxwbxxbxychHbbmcfibQZbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtclAaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIbwncXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMdLJdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpasdbqacjUbxXckacjZbrVccDckdckcbrVcdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPccqbBqdzXdzYbGybGzbGAbGBdLDclGcjlbGFdzZbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQscxnaQsbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCdJCaQsaQsbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZbWbbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUybUubuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcKqcLEcxwbJDbJEcbndJIcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHabKabKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQsaThbgXbArbZqbZpbUebBXbAvbBYblXbxwbAwbbmcaObKIbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnbrTbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPbHgbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAaQsckFaQsaQsaOhaQsckEaQsbgXbgXcJTaSkbAubiJbAvbDhblXbDibOybbmchBbQZbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtbKtbKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJczJblXbEDbEEbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgaYpbYeccrccnccicciccicclcdoccrdBiccidASbYLccrbNDbNJbNKbNKbNKbXTbNKbXYbNNcccccKccJbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQbFRbnIbFSbFTbFUbOzchXccabHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTdAcaKBaadaadaadaadaadaadaadaKBbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZbPabPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjchPcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjdvYdAacatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcancaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbKIbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfdvMbBHbBHbBHbBHbBHbBHbBHctQbBHbBHbBHbBHbBHbBHbBHdvJcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTdJybrTbrTaKBaaaaaaaaaaaaaaaaadaqXaKBavabrTbZAbKtbKtbKtbKtbKtbKtbZDbZEbZEbZEbOMbOSdokcQabTPdoBbQdbQcbQebQdbZXbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZcgZcdUchachachachidmIbRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMbZjcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXblXblXbbmccjbQZbHWbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBaKBaadaadcgNaadaadaadaKBaKBaKBaKBaKBaKBaKBaKBbMbbMbbHMbYfbYcbYdbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLdJMbRwbRwcezceDbRwcNWbRwbYacbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDdJLaZLbSXbNpbNpciTaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMibWQbMibMibiNbRhbWLbWMblXbWHbevbWJbevbevbevbWGblXbbmbIHbWybUiaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBaadaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqaKBaKBaKBaKBbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjaUnbMkcrCavAbgXcyWbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbKIbUiaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaadaadaadaadaaaaaaaadcZYbTsbTsbTsbTsbTsbTtbTubTvbTwbTwbTxaKBaUDaUDaKBbTybGxaKBbMbbSobWqdJzbSmbSnbXxbXxbXxbXxbSCbSBaZLbePbYIbWsbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobNgcsgbNabNfavAavAavAbvSavAavAbgXbNibMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbKIbUiaadaaaaaaaadaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaaabKmbKjbKjbKeaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMaKBbwqbKoaeJbKpbzkbKnbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAavAavAaQsaQsbKvaQscasbgXbKubKFbKDbKCbKAbKzbKybKxbKwbKYbKWbKUbKLbKJbKIbKHaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbVObVPbVQbVRbTvbVSbNRbOqbOCbTQaKBdJybrTaKBbTybrTaKBbMebtwbNSbObaKBbOcbQNbQubXxbXxbQRbYIbYIbAUbYIbLabDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJaQsavAcfRchjavAaUnaQsaQsaQsaOhaQsaThbgXbwbbwbbLybwbbLFbwbbLybLCbLAbLIbKIbwbbLJbWFbLHbgXaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdaKBbrTbOBaKBcsrbZwaKBbxzbxzbxzbxzbxzbxzbZbbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEccubSEcctcctdJAbUIbTLbTSbTTbRRbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbLWbCRbOWctcckvarwbNrarwdJCavAaQsaQsaQsdJBbOQaQsaQsbgXbgXbONbOIbOEbOFbOEbOIbOEbOFbOFbODbOEbODbOHbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadbYtcWRcWRcdvbTsbTsbTsbTsbTsbYwbYwbPibYwbYwbYwbYwbYwbYwbYwbPkbYwbYwcazcaBcafcagcbmbxzcaHcaGcaJcaIcaCbYIcaFcaEcaLbStcdsbZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbZhbYwaQsaQsaQsavAaQsaQsavAaQsaQsaQsaQsaQsbOoavAavAaadaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqaadaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadcZYaaeaaeaaebPlbNmbPlckAckBckBbTibThbZxbZxbZxbZxbZxbZxcpHbNncslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbBWbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgbNobYwbWBbJfbDNbElbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgcbubYwbWIbZibUsavAciVcjQavAbyOaQsbEvaQsavAcgaavAaadaadbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadbZZaaebYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsbYBbJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBccEccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgcizbYwbYwbYwbYwavAavAavAavAavAavAavAbYwbYwaadaaaaaaaadbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaaaaadaadbYwbYwbYhbZGcaicpqcajbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwbHrbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbQLbYwbFYbFZbGbavAbVGbVHbVIbVKbVTbWebYwaaaaadaadaadaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacdWcbybQLbQLdBrcpqbQLcpqbYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTSbYNbYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbrZbkSceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQdttcbxcakbGwbGvavAcbwaQsbQLbQLcpqbENbYwaaaaadaaaaaaaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaabYwbTKbQLbQLdBocpqbUobYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNdHpcfvbEUbUqbZNbZNbDbbTSbCZbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEedEnbEmbEbbZgbQLbYwbErbEtbEubYwbTFcpqbQLbQLbQLbQLbYwaaaaadaaaaaaaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaacdWbVDbQLdBDctgcpqbQLbVEbYwbQKbYwcfacfbcfccfdbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNbFFcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbESbEPbFrbESbESbFjbEbbZgbZhbYwbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaaaaaabYwbYwbKccpqcpqbQLbQLcfAbYwbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpcgycembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFbILbIJcfnbIdbIjbIebInbRIbQLdJwbYwbIMcwNceScfkbQLbQLbQLcotbHfbYwaadaadaaaaRCaaaaRCaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacdWcfEbQLbQLbQLbQLbUobYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgcotcgJbYwbJebJbcfDcakdJxbIXbQLbQLcfCclraaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaabYwccdbQLcbYbYwcbZcbZbYwcgKbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMbHybKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRbHBcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgcizcjubYwbYwbYwbYwcbEcbKbHjbQLbQLbHhbYwaaaaadaaaaadaWuaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaaaaaacdWceRceKceJbYwctGctGbYwbIObQKbYwcjzcjAcjBcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehbPtbAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpcaScbfbTEbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwaaabYwbYwbYwbYwclrbYwbYwbYwaaaaadaadaadaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaaaaaabYwcdWbYwcdWbYwcdYdJqbYwbQLbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaaaaaaaaaaaaaaaaaabYwbYwdJpbYwbQLbQKbZhcucdCMbQLcpZcuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbctecsYcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaadaadaaebYwdJsbYwcLZdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCcwGcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizbQLbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEcvrcoCcuJcvqcxJcxJcvGbTScBgcmPcvCclUcwzcwDdBtcwFcvHcwwckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvbQLdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLbQLbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGcEbcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRcJScmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcrSbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjczGczJczuczyczldEvcyIcyRcAKdEwcDSbTSdBMcjccANcmTcmTcmTdBtcmTczKczLczXcBOcKNcKJcrfcpMcpNdCqcKfcKddCNcpSdBwdExcpVdEycrScdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdASdAccMycoCcMBcMCcMTcMCcMBcoCdELdEKdEMcnRdENcnNcNBcpbcNDcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKdLncNhdCudCvaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCcKOcKwcKpcKwcKTcoCdEBcKOcKOcxJcrtbTSbYNcjccMpclUcMoclWdBtdBAcLvcLYckUbTXcrEcrFdAKcrHcrIcrJcrKcrLdzRcrNcNCdLldLkdCpcrSdBFcOGcrVcrWdLjdLicKUcKUdEIcMXaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddLmcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdokctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqlcrfcsFcsFcsGcsHdCFcqncsKcqmcsMcxNcqocsPcsQcsRcsScsTdEAdIHdIIcnrcnscsWaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaacwucyJcwucwucyJcwucyJcwucwucwucyJcwuaaaaaabYwcizcpWbYwbYgdnEcqqcqScqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIclKclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDctBcrScrScrScrScrSctCcrScPtcphcpndmIcrSctHctIctJctKctLctMctNctKcrfctKaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacwucjmcjjcnXczbczcczdczeczfczgczdcwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwcqiduXduRduUduYcAactfckOcDPcmLclIclKclIduAduNcDRckOcszbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswcrScuqcurcuscutcuucuvcuucuwcuxcuycrScrSctKcqQcsactKcuzcpxcpBcuCcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadaaEcyJczxcjnczzczcczcczAczBczCczDczAcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdoBdoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQcrfcuqcurcvfcvfcvgcvhcvicvjcvkcvlcrScvmbQLdACcvpctKctKctKctKctKcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcnAczZcrMcAbcAcdApczcczccAecAfconcAhczicwEaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdABctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacudcrScuqcurcvfcvMcuucvNcuudCHcvPcvQcrScuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadcwucAwcrUclDcAzcAzcsmdzUcACcADdAiczhdAedzVdAhdAfdwbdwFdxxcwudvAdvBctvdvVcrXdzOdzScxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZctldAMctmcrSbZhbZhcwnbQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddKbcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaaabKmbKjbKjbKeaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMaKBbwqbKoaeJbKpbzkcvrbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAavAavAaQsaQsbKvaQscasbgXbKubKFbKDbKCbKAbKzbKybKxbKwbKYbKWbKUbKLbKJbKIbKHaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbVObVPbVQbVRbTvbVSbNRbOqbOCbTQaKBdJybrTaKBbTybrTaKBbMebtwbNSbObaKBbOcbQNbQubXxbXxcvMbYIbYIbAUbYIbLabDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJaQsavAcfRchjavAaUnaQsaQsaQsaOhaQsaThbgXbwbbwbbLybwbbLFbwbbLybLCbLAbLIbKIbwbbLJbWFcvNbgXaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdaKBbrTbOBaKBcsrbZwaKBbxzbxzbxzbxzbxzbxzczzbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbLWbCRbOWctcckvarwbNrarwdJCavAaQsaQsaQsdJBbOQaQsaQsbgXbgXbONbOIbOEbOFbOEbOIbOEbOFbOFbODbOEbODbOHbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadbYtcWRcWRcdvbTsbTsbTsbTsbTsbYwbYwbPibYwbYwbYwbYwbYwbYwbYwczGbYwbYwcazcaBcafcagcbmbxzcaHcaGcaJcaIcaCbYIcaFcaEcaLbStcdsbZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbZhbYwaQsaQsaQsavAaQsaQsavAaQsaQsaQsaQsaQsbOoavAavAaadaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqaadaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadcZYaaeaaeaaebPlczjbPlckAckBckBbTibThbZxbZxbZxbZxbZxbZxcpHbNncslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbBWbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgczlbYwbWBbJfbDNbElbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgcbubYwbWIbZibUsavAciVcjQavAbNobWIbEvaQsavAcgaavAaadaadbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadbZZcxdbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBccEccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgcizbYwbYwbYwbYwavAavAavAavAavAavAavAbYwbYwaadaaaaaaaadbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaaaaadaadbYwcfdceZcfncfrcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbQLbYwceRbFZbGbavAbVGbVHbVIbVKbVTbWebYwaaaaadaadaadaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaaaaadcfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbrZbkSceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQdttcbxcakcfEbGvavAcbwaQsbQLbQLcpqbENbYwaaaaadaaaaaaaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbQLbYwbErbEtbEubYwbTFcpqbZbbQLbZlbQLbYwaaaaadaaaaaaaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbZhbYwbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaaaaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFcrtcqSckQcjXcmrclQcqicmubQLdJwbYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadaadaaaaRCaaaaRCaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgcotcgJbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaacacciScalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgcizcjubYwbYwbYwbYwcbEcbKbHjbQLbQLbHhbYwaaaaadaaaaadaWuaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaaaaaacaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpcaScbfbTEbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwaaabYwbYwbYwbYwclrbYwbYwbYwaaaaadaadaadaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaaaaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaaaaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLcpZcuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaadaadaaebYwdJsbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizbQLbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPcvCclUcwzcwDdBtcwFcvHcwwckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvbQLdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLbQLbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRcJScmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcrSbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjccANcmTcmTcmTdBtcmTczKczLczXcBOcKNcKJcrfcpMcpNdCqcKfcKddCNcpSdBwdExcpVdEycrScdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbcNDcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKdLncNhdCudCvaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdMScKTdMRdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjccMpclUcMoclWdBtdBAcLvcLYckUbTXcrEcrFdAKcrHcrIcrJcrKcrLdzRcrNcNCdLldLkdCpcrSdBFcOGcrVcrWdLjdLicKUcKUdEIcMXaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqlcrfcsFcsFcsGcsHdCFcqncsKcqmcsMcxNcqocsPcsQcsRcsScsTdEAdIHdIIcnrcnscsWaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaacwucyJcwucwucyJcwucyJcwucwucwucyJcwuaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDctBcrScrScrScrScrSctCcrScPtcphcpndMhcrSctHctIctJctKctLctMctNctKcrfctKaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacwucjmcjjcnXczbczcczdczeczfczgczdcwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPcmLclIclKclIduAduNcDRckOcszbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswcrScuqdMmcuscutcuucuvcuudMpcuxcuycrScrSctKcqQcsactKcuzcpxcpBcuCcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadaaEcyJczxcjndMoczcczcczAczBczCczDczAcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQcrfcuqdMmcvfcvfcvgcvhcvidMlcvkcvlcrScvmbQLdACcvpctKctKctKctKctKcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcnAczZcrMcAbcAcdApczcczccAecAfconcAhczicwEaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdABctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacudcrScuqdMmcvfdMucuudMtcuudMscvPcvQcrScuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadcwucAwcrUclDcAzcAzcsmdzUcACcADdAiczhdAedzVdAhdAfdwbdwFdxxcwudvAdvBctvdvVcrXdzOdzScxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZctldAMctmcrSbZhbZhcwnbQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddMrcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcztdDycAZcBacBbcBccticBectdcsNcBhdDCdDBdKWdKVdKXdDHdDDdDFdDKdDLdKYdDJdDOdKEdKCdKDdKFdDSdDQbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcAScwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucBCcBDcuZcBecBFcvncBHcBIcvIcBKcwudDpdDodDqcwudBjdBpcyMcwudBqdBUctvdCsdCxdCydCzcxLdCAdCCdKTbYwdAWbZxbZxbZxbZxdBacARclpdBidBgdBdcwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdCJcmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucCacCbcCccCdcCecCfcCgcChcCicCjcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcwxcwvdzPbYwcwocnpcnpcnpcnpcwmbNGbNGcwjcwTcwkbTScwbcsedKrdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucCxcCycCzcCAcxecBDcCBcxecamcBDcwuaadaadaadbYwcmzbQLbQLbQLcxgcxbclpclpclpdKtdKucxLcwUdKscwWcwVcwMcnpcwJcwJcnpcnpcnpcnpcnpcnpcwkbTSbYNcsecokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaacwucCJcCycCKcCLcxecCzcjncxecCXcCzcwuaaaaadaaabYwcdYcxRcxQcxQcybcxWbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocnpcyZczaczjczrczvczFcyDcyKcyLcyQcyXcsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucBCcBDcuZcBecBFcvncBHcBIcvIdMycwudDpdDodDqcwudBjdBpcyMcwudBqdBUctvdCsdCxdCydCzcxLdMwdCCdMxbYwdAWbZxbZxbZxbZxdBacARdMvbCRdBgdBdcwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdCJcmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucCacCbcCccCdcCecCfcCgcChcCicCjcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcwxcwvdzPbYwcwocnpcnpcnpcnpcwmbNGcwjcdYcwTcwkbTSdMacsedMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwudMccCycCzcCAcxecBDcCBcxecamcBDcwuaadaadaadbYwcmzbQLbQLbQLcxgcxbclpclpclpdKtdKucxLcwUdKscwWcwVcwMcnpcwJcwJcnpcnpcnpcnpcnpcnpcwkbTSbYNcsecokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaacwucCJcCycCKdMdcxecCzcjncxecCXcCzcwuaaaaadaaabYwcdYcxRcxQcxQcybcxWbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocnpcyZczadMeczrczvczFcyDcyKcyLcyQcyXcsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcCWcCXcCYcCZcDacDbdAAcDadAAcDbcwuaaaaaaaaabYwbYwcAAbYwbYwbYwcAEbYwbYwbQLcwmcAncAmcAmcAycAmcAmcBfcBicAXcAYcoxcoxcoxcoxcAHcALcAFcAGcAMcAQclpclpclpclpcBkcBjclpcBlcBScoVcoWcxlcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucwucDkcDlcwucwucyJcwucwucwucyJcwuaadaadaadbGhcGkcGjbGhcGccGbcGacDTbGhcJZbYwbYwbYwbYwcGlbYwbYwbYwcnpcCCcAYcBJcBLcBMcBNcBNcDIcDLcDMcDGbYwbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwcwNcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadcwucAwcDwcwuaaaaadaaaaaaaaaaadaaaaaaaaaaaabGhdKvcMQbGhcMYcMDcMhcMLbGhbpYbpYaBrcNKcNfcNbcNJdKwdKocLtcAXcAYcLkcwTcwTcxDcLxcLAcLwcxDcwTcwTaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwbQLbQLbQLcNLbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaacZYaaaaaaaadaaaaaaaaaaadaadaaaaaaaaabGhcoKbMpbGhcOMcOZcONbJZbGhcQwcPSbtBbtBbrPcQXcQLcQLcRkcyKcRucRvbYNcwTcRMcRTcRTcRUcSjcSSdKycyAaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFbQLcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucwucDkcDlcwucwucyJcwucwucwucyJcwuaadaadaadbGhcGkcGjbGhcGccGbcGacDTbGhcJZbYwbYwbYwbYwcGlbYwbYwbYwcnpcCCcAYcBJcBLcBMcBNcBNcDIcDLcDMcDGbYwbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadcwucAwcDwcwuaaaaadaaaaaaaaaaadaaaaaaaaaaaabGhdKvcMQbGhcMYcMDcMhcMLbGhbpYbpYaBrcNKcNfcNbcNJdKwdKocLtcAXcAYcLkcwTcwTcxDcLxcLAcLwcxDcwTcwTaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaacZYaaaaaaaadaaaaaaaaaaadaadaaaaaaaaabGhcoKbMpbGhcOMcOZcONbJZbGhcQwcPSbtBbtBbrPcQXcQLcQLcRkcyKcRucRvbYNcwTcRMcRTcRTcRUcSjcSSdKycyAaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaadwIaaaaaaaaEaaaaaaaaaaadaaaaaaaaaaaabGhcTMdKAdiLdcndkOdkGdkRbGhdlobpYdlxdlvdlCdlydlGdlGdmjdmvdlZdmbdmHcxDcyBcxGcxGcolcoqcxGcyaczkaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaakaaaaaaaaaaadaaaaaaaaaaaabGhcoKcoJbGhcoHcoGcoFcoDcoAcozbpYbwzbwAbrPcoybwzbKEdKocovcowcoxcorcwTcoscxGcxGcolcoqcxGcojcwTaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaaaaaEaakaaEaadaaEaaEaaEaaaaaEbpYbGhbGhbGhbGhbGhbGhcoQcoRbGhbGhbpYcoPbxVbrPcoybxUcoObpYbpYcwTcxDcwTcwTcoNcxGcxGcoMcoqcxGcoLcwTaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11270,9 +11362,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdlBdDtdDtdDtdqJdqJdqJdqJdqJdqJdDtdDtdlBdlBdlBdlBdlBdlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlddlddlddlBdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdkQdkXdDtdDtdDtdDtdDtdDtdDtdlBdqkduIduJduKduJdqkduLdtgdtcduOduPdqkduQdtbduSdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaadaadaadaadaadaadaadaadaaddrVduTdsZdtBdrVdrVdrVdrVduVdrVduWdrVdrVdtadqBdqBdqBdqBdDtdlBdlddlddlfdlfdlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdlcdlgdlgdlgdlhdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdDtdlBdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdlcdlgdlgdlgdocdoddlgdlgdlgdlhdDtdDtdDtdDtdqkdtodtndvadvbdqkdvcduPduPdvddvedqkdvfdtpdvhdqkdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaaddvidvidvidvidviaadaaaaaadrVdvjdtmdtBdtjdvmdvnduCduCdvoduCduDdrVdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdlcdlhdDtdDtdkQdkXdDtdDtdofdlgdlgdlgdlgdlgdoedDtdlBdlddlddlddlddlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdkHdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdtqdvqdvrdvsdvedqkduqdIjduqdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaaddvidvidvidvidviaadaaadsodrXdvudvvdvwdrVdrVdrVdrVdrVdrVdvxdvydrVdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlBdlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdlBdDtdFpdDtdDtdlcdlgdlgdocdoddlgdlgdoedDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdlgdlhdDtdDtdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdqkdIkdIldpkdFEdDtdDtdDtdDtdDtaaaaaaaaaaadaaaaaaaaaaaddvidvidvidvidvidvCdsWdvDdvEdsqdvFdtBdtudvGdvHdvIdvJdvKdvLdvydrVdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlBdlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdlBdDtdFpdDtdDtdlcdlgdlgdocdoddlgdlgdoedDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdlgdlhdDtdDtdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdqkdIkdIldpkdFEdDtdDtdDtdDtdDtaaaaaaaaaaadaaaaaaaaaaaddvidvidvidvidvidvCdsWdvDdvEdsqdvFdtBdtudvGdvHdvIdNcdvKdvLdvydrVdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlddlddlddlddlddlBdlBdnTdlBdDtdDtdDtdDtdkIdkMdDtdDtdDtdDtdFpdDtdlBdlBdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdkIdtydtxdtxdtxdtxdtwdkMdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaadaaddvidvidvidvidvidvPdsqdvPdsqdsqdvFdtBdsqdsqdvQdsqdsqdvRdvSdtvdrVdDtdDtdDtdDtdlBdlddlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdnTdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaddvidvidvidvidvidrWdsWdvUdImdsqdvFdvWdugdugdvXdugdugdvYdvZdwadrVdDtdDtdDtdDVdnTdlddlddlddlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdnTdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaddvidvidvidvidvidrWdsWdvUdImdsqdvFdvWdugdugdvXdugdugdNddvZdwadrVdDtdDtdDtdDVdnTdlddlddlddlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdDtdDtdDtdDtdlcdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlhdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaddvidvidvidvidviaadaaaduxdrXdIndvFdtBdsqdsqdwcdvGdsqdsqdvxdwddrVdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdDtdkQdkXdDtdDtdDtdwedweaaaaaaaaaaaddvidvidvidvidviaadaaaaaadwfdwfdwgdwhdugdwidwjdwkdwldwmdvSdvydrVdDtdDtdDtdDtdlBdlddlddlddlddlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdocdoddlgdlgdlgdwndwodwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwqdwrdwsdsqdsqdsqdpfdwudwvdwwdwxdpedrVdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 91d7150eed4c56aad6be848c3050e838bca22756 Mon Sep 17 00:00:00 2001 From: YotaXP Date: Sat, 30 Nov 2013 14:33:02 -0500 Subject: [PATCH 057/315] NTSL, parrots, and ID consoles hate apostrophes less. NTSL's timestamp() will fetch the proper station time. ID consoles enforce standard player name restrictions on the ID name and assignment. --- code/__HELPERS/time.dm | 9 ++++--- code/_globalvars/misc.dm | 1 + code/game/machinery/computer/card.dm | 24 ++++++++++++------- code/modules/mob/living/say.dm | 2 +- .../scripting/Implementations/Telecomms.dm | 4 ++-- .../scripting/Implementations/_Logic.dm | 3 --- code/world.dm | 2 ++ html/changelog.html | 10 ++++++++ 8 files changed, 38 insertions(+), 17 deletions(-) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 6b4dcda2c46..bf1bacc94f8 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -1,9 +1,12 @@ //Returns the world time in english proc/worldtime2text() - return "[round(world.time / 36000)+12]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]" + return gameTimestamp("hh:mm") -proc/time_stamp() - return time2text(world.timeofday, "hh:mm:ss") +proc/time_stamp(var/format = "hh:mm:ss") + return time2text(world.timeofday, format) + +proc/gameTimestamp(var/format = "hh:mm:ss") // Get the game time in text + return time2text(world.time - timezoneOffset + 432000, format) /* Preserving this so future generations can see how fucking retarded some people are proc/time_stamp() diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 1a2880b341a..59a49e0b087 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -5,6 +5,7 @@ var/global/obj/effect/overlay/slmaster = null // atmospheric overlay for sleepin // nanomanager, the manager for Nano UIs var/datum/nanomanager/nanomanager = new() +var/timezoneOffset = 0 // The difference betwen midnight (of the host computer) and 0 world.ticks. // For FTP requests. (i.e. downloading runtime logs.) // However it'd be ok to use for accessing attack logs and such too, which are even laggier. diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 149d5ab7556..0ddf619e7cd 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -160,21 +160,21 @@ var/target_owner var/target_rank if(modify) - target_name = modify.name + target_name = html_encode(modify.name) else target_name = "--------" if(modify && modify.registered_name) - target_owner = modify.registered_name + target_owner = html_encode(modify.registered_name) else target_owner = "--------" if(modify && modify.assignment) - target_rank = modify.assignment + target_rank = html_encode(modify.assignment) else target_rank = "Unassigned" var/scan_name if(scan) - scan_name = scan.name + scan_name = html_encode(scan.name) else scan_name = "--------" @@ -323,9 +323,12 @@ if (authenticated) var/t1 = href_list["assign_target"] if(t1 == "Custom") - var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_NAME_LEN) - if(temp_t) - t1 = temp_t + var/newJob = reject_bad_name(input("Enter a custom job assignment.", "Assignment", modify ? modify.assignment : "Unassigned")) + if(newJob) + t1 = newJob + else + usr << "\red Invalid job name entered." + return else var/datum/job/jobdatum for(var/jobtype in typesof(/datum/job)) @@ -345,7 +348,12 @@ var/t2 = modify //var/t1 = input(usr, "What name?", "ID computer", null) as text if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) - modify.registered_name = copytext(sanitize(href_list["reg"]),1,MAX_NAME_LEN) + var/newName = reject_bad_name(href_list["reg"]) + if(newName) + modify.registered_name = newName + else + usr << "\red Invalid name entered." + return if ("mode") mode = text2num(href_list["mode_target"]) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 3b53d5d549a..5539a1b74a3 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -298,7 +298,7 @@ var/list/department_radio_keys = list( var/mob/living/simple_animal/parrot/P = A if(P.speech_buffer.len >= 10) P.speech_buffer.Remove(pick(P.speech_buffer)) - P.speech_buffer.Add(message) + P.speech_buffer.Add(html_decode(message)) if(istype(A, /obj/)) //radio in pocket could work, radio in backpack wouldn't --rastaf0 var/obj/O = A diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 6a8f0741cc9..d3f3e9f7ebd 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -90,7 +90,7 @@ // Signal data - interpreter.SetVar("$content", signal.data["message"]) + interpreter.SetVar("$content", html_decode(signal.data["message"])) interpreter.SetVar("$freq" , signal.frequency) interpreter.SetVar("$source" , signal.data["name"]) interpreter.SetVar("$job" , signal.data["job"]) @@ -207,7 +207,7 @@ // Time interpreter.SetProc("time", /proc/time) - interpreter.SetProc("timestamp", /proc/timestamp) + interpreter.SetProc("timestamp", /proc/gameTimestamp) // Run the compiled code interpreter.Run() diff --git a/code/modules/scripting/Implementations/_Logic.dm b/code/modules/scripting/Implementations/_Logic.dm index d4bc9976625..871ffd1905f 100644 --- a/code/modules/scripting/Implementations/_Logic.dm +++ b/code/modules/scripting/Implementations/_Logic.dm @@ -142,9 +142,6 @@ /proc/time() return world.timeofday -/proc/timestamp(var/format = "hh:mm:ss") // Get the game time in text - return time2text(world.time + 432000, format) - /* //Makes a list where all indicies in a string is a seperate index in the list // JUST A HELPER DON'T ADD TO NTSCRIPT diff --git a/code/world.dm b/code/world.dm index 860536fba51..00d45043c40 100644 --- a/code/world.dm +++ b/code/world.dm @@ -52,6 +52,8 @@ // dumb and hardcoded but I don't care~ config.server_name += " #[(world.port % 1000) / 100]" + timezoneOffset = text2num(time2text(0,"hh")) * 36000 + makepowernets() sun = new /datum/sun() diff --git a/html/changelog.html b/html/changelog.html index 06d02f2bdc7..1efc32d4e95 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,16 @@ should be listed in the changelog upon commit tho. Thanks. --> +
    +

    30 November 2013

    +

    Yota updated:

    +
      +
    • The identification console will now require that ID and job names follow the same restrictions as player names.
    • +
    • NTSL scripts and parrots should now handle apostrophes and such properly. It&#39;s about time.
    • +
    • NTSL scripts now have a better sense of time.
    • +
    +
    +

    27 November 2013

    RobRichards updated:

    From cb6896489ffebd8fc640c63e915e03c973888a44 Mon Sep 17 00:00:00 2001 From: YotaXP Date: Sat, 30 Nov 2013 16:42:08 -0500 Subject: [PATCH 058/315] Fixes Issue #1867 --- code/modules/nano/nanoexternal.dm | 2 +- code/modules/nano/nanoui.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm index 609bb604dcb..8ceb45e6adc 100644 --- a/code/modules/nano/nanoexternal.dm +++ b/code/modules/nano/nanoexternal.dm @@ -13,7 +13,7 @@ var/datum/nanoui/ui = locate(uiref) - if (ui) + if (istype(ui)) ui.close() if(ui.ref) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 901f68ec35f..d488e8b5c70 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -402,7 +402,7 @@ nanoui is used to open and update nano browser uis if (status != STATUS_INTERACTIVE || user != usr) // If UI is not interactive or usr calling Topic is not the UI user return - if (src_object.Topic(href, href_list)) + if (src_object && src_object.Topic(href, href_list)) nanomanager.update_uis(src_object) // update all UIs attached to src_object /** From 4e050485241e262fcef105fd47ba7fc6fc3459cb Mon Sep 17 00:00:00 2001 From: Perakp Date: Sun, 1 Dec 2013 08:52:34 +0200 Subject: [PATCH 059/315] Fixes multiple embryos in single host MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added checks so you can’t have multiple embryos in a single host. Checks are included in both facehugger.dm and alien_embryo.dm, because there might be ways to implant embryos without facehuggers in the future, but we also want to avoid creating and instantly deleting objects. Also changes chest augmentation surgery to remove any embryos. Before you could remove the whole chest without finding the embryo inside. --- .../mob/living/carbon/alien/special/alien_embryo.dm | 4 +++- .../mob/living/carbon/alien/special/facehugger.dm | 7 ++++--- code/modules/surgery/limb augmentation.dm | 2 ++ code/modules/surgery/xenomorph_removal.dm | 13 +++++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 056cb434c3b..6de54fc375d 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -14,8 +14,10 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds if(istype(loc, /mob/living)) affected_mob = loc - if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest)) //If our Victim is augmented in the chest, No Babby - RR + if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest) | affected_mob.status_flags & XENO_HOST) //If our Victim is augmented in the chest, No Babby - RR + Del(src) return + affected_mob.status_flags |= XENO_HOST processing_objects.Add(src) spawn(0) AddInfectionImages(affected_mob) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index a37b3483a60..b9b04c90203 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -161,14 +161,15 @@ var/const/MAX_ACTIVE_TIME = 400 if(!sterile) //target.contract_disease(new /datum/disease/alien_embryo(0)) //so infection chance is same as virus infection chance - new /obj/item/alien_embryo(target) - target.status_flags |= XENO_HOST - target.visible_message("\red \b [src] falls limp after violating [target]'s face!") Die() icon_state = "[initial(icon_state)]_impregnated" + if(!target.getlimb(/obj/item/organ/limb/robot/chest) && !(target.status_flags & XENO_HOST)) + new /obj/item/alien_embryo(target) + + if(iscorgi(target)) var/mob/living/simple_animal/corgi/C = target src.loc = get_turf(C) diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm index 0a38c93cdc9..79ee6030520 100644 --- a/code/modules/surgery/limb augmentation.dm +++ b/code/modules/surgery/limb augmentation.dm @@ -61,6 +61,8 @@ if("head") H.organs += new /obj/item/organ/limb/robot/head(src) if("chest") + var/datum/surgery_step/xenomorph_removal/xeno_removal = new + xeno_removal.remove_xeno(user, target) // remove an alien if there is one H.organs += new /obj/item/organ/limb/robot/chest(src) for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it A.cure(1) diff --git a/code/modules/surgery/xenomorph_removal.dm b/code/modules/surgery/xenomorph_removal.dm index 6577d89d66d..9143713034d 100644 --- a/code/modules/surgery/xenomorph_removal.dm +++ b/code/modules/surgery/xenomorph_removal.dm @@ -16,6 +16,13 @@ user.visible_message("[user] begins to search in [target]'s chest for a xenomorph.") /datum/surgery_step/xenomorph_removal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(remove_xeno(user, target)) + user.visible_message("[user] successfully extracts the xenomorph from [target]!") + else + user.visible_message("[user] can't find anything in [target]'s chest!") + return 1 + +/datum/surgery_step/xenomorph_removal/proc/remove_xeno(mob/user, mob/living/carbon/target) var/obj/item/alien_embryo/A = locate() in target.contents if(A) user << "You found an unknown alien organism in [target]'s chest!" @@ -27,10 +34,8 @@ A.AttemptGrow() A.loc = get_turf(target) - user.visible_message("[user] successfully extracts the xenomorph from [target]!") - else - user.visible_message("[user] can't find anything in [target]'s chest!") - return 1 + return 1 + /datum/surgery_step/xenomorph_removal/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/alien_embryo/A = locate() in target.contents From af1f8866c3d537701693147eac62973007fa8569 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Sun, 1 Dec 2013 19:24:04 +1100 Subject: [PATCH 060/315] Amended north inhand sprite for riot shield. --- icons/mob/items_lefthand.dmi | Bin 146123 -> 146085 bytes icons/mob/items_righthand.dmi | Bin 147538 -> 147548 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 82537a479da152cdf3c507fb09bb36ea3d67dab9..9d46d7889a78c6b784362d409c7bc9d5a477538e 100644 GIT binary patch delta 80874 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%0Al53$4ffX$rJufi`_l*kqg9DVgN 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
    ;-FJmYc!e*R|1 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 Date: Sun, 1 Dec 2013 18:51:29 +0000 Subject: [PATCH 061/315] Reduces the amount of get_turf calls. Removes random noises. --- code/game/sound.dm | 12 ++++++------ code/modules/mob/living/carbon/human/life.dm | 6 ------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index c2f9e9fca02..cf876319587 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -7,21 +7,22 @@ return var/frequency = get_rand_frequency() // Same frequency for everybody + var/turf/turf_source = get_turf(source) // Looping through the player list has the added bonus of working for mobs inside containers for (var/P in player_list) var/mob/M = P if(!M || !M.client) continue - var/turf/T = get_turf(M) - if(T && T.z == source.z) - if(get_dist(T, source) <= world.view + extrarange) - M.playsound_local(source, soundin, vol, vary, frequency, falloff) + if(get_dist(M, turf_source) <= world.view + extrarange) + var/turf/T = get_turf(M) + if(T && T.z == turf_source.z) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff) var/const/FALLOFF_SOUNDS = 1 var/const/SURROUND_CAP = 7 -/mob/proc/playsound_local(var/atom/source, soundin, vol as num, vary, frequency, falloff) +/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff) if(!src.client || ear_deaf > 0) return soundin = get_sfx(soundin) @@ -36,7 +37,6 @@ var/const/SURROUND_CAP = 7 else S.frequency = get_rand_frequency() - var/turf/turf_source = get_turf(source) if(isturf(turf_source)) // 3D sounds, the technology is here! var/turf/T = get_turf(src) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 91f17a70704..94e0f6a5b81 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1209,12 +1209,6 @@ // make it so you can only puke so fast lastpuke = 0 - //0.1% chance of playing a scary sound to someone who's in complete darkness - if(isturf(loc) && rand(1,1000) == 1) - var/turf/currentTurf = loc - if(!currentTurf.lighting_lumcount) - playsound_local(src,pick(scarySounds),50, 1, -1) - proc/handle_stomach() spawn(0) for(var/mob/living/M in stomach_contents) From 7629c5d4a361024e1002afb8512c3fa146f09c4f Mon Sep 17 00:00:00 2001 From: Limeliz Date: Sun, 1 Dec 2013 23:18:59 +0100 Subject: [PATCH 062/315] I found #1870 in more places. Replaced [key_name_admin(usr)] with [key_name(usr)] in all logging, to remove href-tags from logfiles. --- code/game/machinery/computer/arcade.dm | 2 +- code/game/machinery/computer/robot.dm | 2 +- code/modules/admin/NewBan.dm | 4 +-- code/modules/admin/admin_ranks.dm | 36 +++++++++++++------------- code/modules/admin/newbanjob.dm | 6 ++--- code/modules/admin/topic.dm | 10 +++---- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 97d21c9fecf..2eff6aad2a7 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -154,7 +154,7 @@ new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) new /obj/item/clothing/head/collectable/petehat(src.loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") - log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") src.New() emagged = 0 else if(!contents.len) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index a02adde4d09..1499eb08075 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -160,7 +160,7 @@ else message_admins("\blue [key_name_admin(usr)] detonated [R.name]!") - log_game("\blue [key_name_admin(usr)] detonated [R.name]!") + log_game("\blue [key_name(usr)] detonated [R.name]!") R.self_destruct() else usr << "\red Access Denied." diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 5402e8b3f1f..38a4334fae7 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -134,8 +134,8 @@ var/savefile/Banlist log_admin("Ban Expired: [key]") message_admins("Ban Expired: [key]") else - ban_unban_log_save("[key_name_admin(usr)] unbanned [key]") - log_admin("[key_name_admin(usr)] unbanned [key]") + ban_unban_log_save("[key_name(usr)] unbanned [key]") + log_admin("[key_name(usr)] unbanned [key]") message_admins("[key_name_admin(usr)] unbanned: [key]") feedback_inc("ban_unban",1) usr.client.holder.DB_ban_unban( ckey(key), BANTYPE_ANY_FULLBAN) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index e8cd48844c5..b678d99d560 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -3,7 +3,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums /datum/admin_rank var/name = "NoRank" var/rights = 0 - var/list/adds + var/list/adds var/list/subs /datum/admin_rank/New(init_name, init_rights, list/init_adds, list/init_subs) @@ -74,7 +74,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums next = findchar(line, "+-", prev+1, 0) R.process_keyword(copytext(line, prev, next), previous_rights) prev = next - + previous_rights = R.rights else establish_db_connection() @@ -117,7 +117,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums var/list/rank_names = list() for(var/datum/admin_rank/R in admin_ranks) rank_names[R.name] = R - + if(config.admin_legacy_system) //load text from file var/list/Lines = file2list("config/admins.txt") @@ -214,7 +214,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums return var/datum/admins/D = admin_datums[adm_ckey] - + switch(task) if("remove") if(alert("Are you sure you want to remove [adm_ckey]?","Message","Yes","Cancel") == "Yes") @@ -228,57 +228,57 @@ var/list/admin_ranks = list() //list of all admin_rank datums if("rank") var/datum/admin_rank/R - + var/list/rank_names = list("*New Rank*") for(R in admin_ranks) rank_names[R.name] = R - + var/new_rank = input("Please select a rank", "New rank", null, null) as null|anything in rank_names - + switch(new_rank) if(null) return if("*New Rank*") new_rank = ckeyEx(input("Please input a new rank", "New custom rank", null, null) as null|text) if(!new_rank) return - + R = rank_names[new_rank] if(!R) //rank with that name doesn't exist yet - make it if(D) R = new(new_rank, D.rank.rights, D.rank.adds, D.rank.subs) //duplicate our previous admin_rank but with a new name else R = new(new_rank) //blank new admin_rank admin_ranks += R - + if(D) //they were previously an admin D.disassociate() //existing admin needs to be disassociated D.rank = R //set the admin_rank as our rank else D = new(R,adm_ckey) //new admin - + var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs - + message_admins("[key_name_admin(usr)] edited the admin rank of [adm_ckey] to [new_rank]") log_admin("[key_name(usr)] edited the admin rank of [adm_ckey] to [new_rank]") log_admin_rank_modification(adm_ckey, new_rank) if("permissions") if(!D) return //they're not an admin! - + var/keyword = input("Input permission keyword (one at a time):\ne.g. +BAN or -FUN or +/client/proc/someverb", "Permission toggle", null, null) as null|text if(!keyword) return - + D.disassociate() - + if(!findtext(D.rank.name, "([adm_ckey])")) //not a modified subrank, need to duplicate the admin_rank datum to prevent modifying others too D.rank = new("[D.rank.name]([adm_ckey])", D.rank.rights, D.rank.adds, D.rank.subs) //duplicate our previous admin_rank but with a new name //we don't add this clone to the admin_ranks list, as it is unique to that ckey - + D.rank.process_keyword(keyword) - + var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs - + message_admins("[key_name(usr)] added keyword [keyword] to permission of [adm_ckey]") log_admin("[key_name(usr)] added keyword [keyword] to permission of [adm_ckey]") log_admin_permission_modification(adm_ckey, D.rank.rights) - + edit_admin_permissions() \ No newline at end of file diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm index 3ba12599ba7..289d4833f37 100644 --- a/code/modules/admin/newbanjob.dm +++ b/code/modules/admin/newbanjob.dm @@ -175,9 +175,9 @@ var/savefile/Banlistjob log_admin("Banjob Expired: [key]") message_admins("Banjob Expired: [key]") else - log_admin("[key_name_admin(usr)] unjobbanned [key] from [rank]") - message_admins("[key_name_admin(usr)] unjobbanned:[key] from [rank]") - ban_unban_log_save("[key_name_admin(usr)] unjobbanned [key] from [rank]") + log_admin("[key_name(usr)] unjobbanned [key] from [rank]") + message_admins("[key_name(usr)] unjobbanned:[key] from [rank]") + ban_unban_log_save("[key_name(usr)] unjobbanned [key] from [rank]") feedback_inc("ban_job_unban",1) feedback_add_details("ban_job_unban","- [rank]") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 0034cf3b2fe..7a207b8a1e9 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1671,7 +1671,7 @@ MAX_EX_HEAVY_RANGE = 7 MAX_EX_DEVESTATION_RANGE = 3 message_admins("\red [key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]", 1) - log_admin("[key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]") + log_admin("[key_name(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]") if("wave") feedback_inc("admin_secrets_fun_used",1) @@ -1944,7 +1944,7 @@ for(var/name in listkicked) strkicked += "[name], " message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]", 1) - log_admin("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") + log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") else usr << "You may only use this when the game is running" if("showailaws") @@ -2070,7 +2070,7 @@ newChannel.is_admin_channel = 1 feedback_inc("newscaster_channels",1) news_network.network_channels += newChannel //Adding channel to the global network - log_admin("[key_name_admin(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!") + log_admin("[key_name(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!") src.admincaster_screen=5 src.access_news_network() @@ -2105,7 +2105,7 @@ for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) NEWSCASTER.newsAlert(src.admincaster_feed_channel.channel_name) - log_admin("[key_name_admin(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!") + log_admin("[key_name(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!") src.access_news_network() else if(href_list["ac_create_channel"]) @@ -2170,7 +2170,7 @@ news_network.wanted_issue.body = src.admincaster_feed_message.body news_network.wanted_issue.backup_author = src.admincaster_feed_message.backup_author src.admincaster_screen = 19 - log_admin("[key_name_admin(usr)] issued a Station-wide Wanted Notification for [src.admincaster_feed_message.author]!") + log_admin("[key_name(usr)] issued a Station-wide Wanted Notification for [src.admincaster_feed_message.author]!") src.access_news_network() else if(href_list["ac_cancel_wanted"]) From fd61d1f9bdb128de57e98d71fe7fa72a22e0cbab Mon Sep 17 00:00:00 2001 From: Emil Date: Sun, 1 Dec 2013 23:26:59 +0100 Subject: [PATCH 063/315] Fixed a mistake in newbanjob.dm Accidently removed the href tags from an ingame message earlier. --- code/modules/admin/newbanjob.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm index 289d4833f37..60ed1aa886a 100644 --- a/code/modules/admin/newbanjob.dm +++ b/code/modules/admin/newbanjob.dm @@ -176,7 +176,7 @@ var/savefile/Banlistjob message_admins("Banjob Expired: [key]") else log_admin("[key_name(usr)] unjobbanned [key] from [rank]") - message_admins("[key_name(usr)] unjobbanned:[key] from [rank]") + message_admins("[key_name_admin(usr)] unjobbanned:[key] from [rank]") ban_unban_log_save("[key_name(usr)] unjobbanned [key] from [rank]") feedback_inc("ban_job_unban",1) feedback_add_details("ban_job_unban","- [rank]") From b642db40a1de6b934f6c7992588b329beb4042a7 Mon Sep 17 00:00:00 2001 From: Emil Date: Sun, 1 Dec 2013 23:30:22 +0100 Subject: [PATCH 064/315] Reverting a change I never did? --- code/modules/admin/admin_ranks.dm | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index b678d99d560..770456a6e35 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -3,7 +3,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums /datum/admin_rank var/name = "NoRank" var/rights = 0 - var/list/adds + var/list/adds var/list/subs /datum/admin_rank/New(init_name, init_rights, list/init_adds, list/init_subs) @@ -74,7 +74,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums next = findchar(line, "+-", prev+1, 0) R.process_keyword(copytext(line, prev, next), previous_rights) prev = next - + previous_rights = R.rights else establish_db_connection() @@ -117,7 +117,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums var/list/rank_names = list() for(var/datum/admin_rank/R in admin_ranks) rank_names[R.name] = R - + if(config.admin_legacy_system) //load text from file var/list/Lines = file2list("config/admins.txt") @@ -214,7 +214,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums return var/datum/admins/D = admin_datums[adm_ckey] - + switch(task) if("remove") if(alert("Are you sure you want to remove [adm_ckey]?","Message","Yes","Cancel") == "Yes") @@ -228,57 +228,57 @@ var/list/admin_ranks = list() //list of all admin_rank datums if("rank") var/datum/admin_rank/R - + var/list/rank_names = list("*New Rank*") for(R in admin_ranks) rank_names[R.name] = R - + var/new_rank = input("Please select a rank", "New rank", null, null) as null|anything in rank_names - + switch(new_rank) if(null) return if("*New Rank*") new_rank = ckeyEx(input("Please input a new rank", "New custom rank", null, null) as null|text) if(!new_rank) return - + R = rank_names[new_rank] if(!R) //rank with that name doesn't exist yet - make it if(D) R = new(new_rank, D.rank.rights, D.rank.adds, D.rank.subs) //duplicate our previous admin_rank but with a new name else R = new(new_rank) //blank new admin_rank admin_ranks += R - + if(D) //they were previously an admin D.disassociate() //existing admin needs to be disassociated D.rank = R //set the admin_rank as our rank else D = new(R,adm_ckey) //new admin - + var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs - + message_admins("[key_name_admin(usr)] edited the admin rank of [adm_ckey] to [new_rank]") log_admin("[key_name(usr)] edited the admin rank of [adm_ckey] to [new_rank]") log_admin_rank_modification(adm_ckey, new_rank) if("permissions") if(!D) return //they're not an admin! - + var/keyword = input("Input permission keyword (one at a time):\ne.g. +BAN or -FUN or +/client/proc/someverb", "Permission toggle", null, null) as null|text if(!keyword) return - + D.disassociate() - + if(!findtext(D.rank.name, "([adm_ckey])")) //not a modified subrank, need to duplicate the admin_rank datum to prevent modifying others too D.rank = new("[D.rank.name]([adm_ckey])", D.rank.rights, D.rank.adds, D.rank.subs) //duplicate our previous admin_rank but with a new name //we don't add this clone to the admin_ranks list, as it is unique to that ckey - + D.rank.process_keyword(keyword) - + var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs - + message_admins("[key_name(usr)] added keyword [keyword] to permission of [adm_ckey]") log_admin("[key_name(usr)] added keyword [keyword] to permission of [adm_ckey]") log_admin_permission_modification(adm_ckey, D.rank.rights) - - edit_admin_permissions() \ No newline at end of file + + edit_admin_permissions() From 2cbe155988ee19ab1b742eb821f22bb7e093daa8 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Sun, 1 Dec 2013 21:24:29 -0500 Subject: [PATCH 065/315] Made my mark upon the changelog! Also added streamlined grass-preparation from sandstone code. --- code/modules/hydroponics/grown.dm | 7 ++++++- html/changelog.html | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 58525834c72..e1696d99f1b 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -716,7 +716,12 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) user << "You prepare the astroturf." - new/obj/item/stack/tile/grass(user.loc) + // Copied Urist's from sandstone-creation code: + var/location = get_turf(user) + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/grassToConvert in location) + new /obj/item/stack/tile/grass(location) + del(grassToConvert) + new /obj/item/stack/tile/grass(location) del(src) /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod diff --git a/html/changelog.html b/html/changelog.html index 06d02f2bdc7..9bf687a148e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,7 +53,20 @@ should be listed in the changelog upon commit tho. Thanks. --> - + + +

    +

    1 December 2013

    +

    Rolan7 updated:

    +
      +
    • Leather gloves can be used to removes lights.
    • +
    • Plant, ore, and trash bags have a new option to pick up all items of single type
    • +
    • Creating astroturf now works like sandstone, converting all the grass at once.
    • +
    • Uranium and radium can be used instead of mutagen. 10 can mutate species, 5 or 2 mutate traits. Highly toxic.
    • +
    • Plants require a little light to live. Mushroom require even less (2 units vs 4) and take less damage.
    • +
    +
    +

    27 November 2013

    From 178136a101632dbe4cfa9f05710ffa12f1b9a3a6 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 2 Dec 2013 10:42:23 -0700 Subject: [PATCH 066/315] Adjustments to nuke object -Added a isspace() check when anchoring the nuke -Removed the "Make Deployable" verb as it was being used to create an indesctructable wall by griefers -Removed the requirement to deploy it before being able to use it. *Now, to toggle the anchor, you need to be fully authorized. --- code/game/gamemodes/nuclear/nuclearbomb.dm | 53 ++++++++++------------ 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 8c73138bd6f..72f6167c087 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -7,7 +7,6 @@ var/bomb_set icon_state = "nuclearbomb0" density = 1 - var/extended = 0.0 var/timeleft = 60.0 var/timing = 0.0 var/r_code = "ADMIN" @@ -37,9 +36,6 @@ var/bomb_set /obj/machinery/nuclearbomb/attackby(obj/item/weapon/I as obj, mob/user as mob) if (istype(I, /obj/item/weapon/disk/nuclear)) - if (!src.extended) - user << "You have to deploy the bomb first." - return usr.drop_item() I.loc = src src.auth = I @@ -51,32 +47,29 @@ var/bomb_set return src.attack_hand(user) /obj/machinery/nuclearbomb/attack_hand(mob/user as mob) - if (src.extended) - user.set_machine(src) - var/dat = text("\nAuth. Disk:
    []
    ", src, (src.auth ? "++++++++++" : "----------")) - if (src.auth) - if (src.yes_code) - dat += text("\nStatus: []-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src) - else - dat += text("\nStatus: Auth. S2-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \n[] Safety: Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + user.set_machine(src) + var/dat = text("\nAuth. Disk: []
    ", src, (src.auth ? "++++++++++" : "----------")) + if (src.auth) + if (src.yes_code) + dat += text("\nStatus: []-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src) else - if (src.timing) - dat += text("\nStatus: Set-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) - else - dat += text("\nStatus: Auth. S1-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) - var/message = "AUTH" - if (src.auth) - message = text("[]", src.code) - if (src.yes_code) - message = "*****" - dat += text("
    \n>[]
    \n123
    \n456
    \n789
    \nR0E
    \n
    ", message, src, src, src, src, src, src, src, src, src, src, src, src) - var/datum/browser/popup = new(user, "nuclearbomb", name, 300, 400) - popup.set_content(dat) - popup.open() + dat += text("\nStatus: Auth. S2-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \n[] Safety: Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) else - user << "You have to deploy the bomb first." + if (src.timing) + dat += text("\nStatus: Set-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + else + dat += text("\nStatus: Auth. S1-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + var/message = "AUTH" + if (src.auth) + message = text("[]", src.code) + if (src.yes_code) + message = "*****" + dat += text("
    \n>[]
    \n123
    \n456
    \n789
    \nR0E
    \n
    ", message, src, src, src, src, src, src, src, src, src, src, src, src) + var/datum/browser/popup = new(user, "nuclearbomb", name, 300, 400) + popup.set_content(dat) + popup.open() return - +/* /obj/machinery/nuclearbomb/verb/make_deployable() set category = "Object" set name = "Deploy Bomb" @@ -88,7 +81,7 @@ var/bomb_set flick("nuclearbombc", src) src.icon_state = "nuclearbomb1" src.extended = 1 - +*/ /obj/machinery/nuclearbomb/Topic(href, href_list) if(..()) return @@ -143,11 +136,13 @@ var/bomb_set bomb_set = 0 if (href_list["safety"]) src.safety = !( src.safety ) + src.icon_state = "nuclearbomb1" if(safety) src.timing = 0 bomb_set = 0 if (href_list["anchor"]) - src.anchored = !( src.anchored ) + if(!isinspace()) + src.anchored = !( src.anchored ) src.add_fingerprint(usr) for(var/mob/M in viewers(1, src)) if ((M.client && M.machine == src)) From ad1650494a779df0953d010be32606b1acd70466 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 2 Dec 2013 19:40:31 +0000 Subject: [PATCH 067/315] * Removed the emag code. --- code/game/machinery/recycler.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 429e2ce6cab..5d111fa7cdf 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -30,6 +30,7 @@ var/const/SAFETY_COOLDOWN = 100 ..() update_icon() +/* /obj/machinery/recycler/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/card/emag) && !emagged) emagged = 1 @@ -43,6 +44,7 @@ var/const/SAFETY_COOLDOWN = 100 user << "You reset the crusher to its default factory settings." else ..() +*/ /obj/machinery/recycler/update_icon() ..() From eb8b23b87326898d764b45610dea7ec28ec2e376 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 3 Dec 2013 00:45:05 +0400 Subject: [PATCH 068/315] Fixed some issues Removed all item stings legacy Removed game balance changes Moved stings handling to AltClickOn, added the dead check i forgot to add Reverted monkeyizing keeping items from previous form Fixed the grammar in the comments --- code/_onclick/other_mobs.dm | 4 -- code/game/gamemodes/changeling/changeling.dm | 2 +- .../gamemodes/changeling/changeling_powers.dm | 71 +------------------ .../gamemodes/changeling/modularchangling.dm | 23 ------ code/modules/mob/living/carbon/carbon.dm | 6 +- code/modules/mob/mob.dm | 6 +- code/modules/mob/transform_procs.dm | 24 ------- 7 files changed, 8 insertions(+), 128 deletions(-) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 83b3fcadc76..e7f606789e5 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -23,10 +23,6 @@ */ /mob/living/carbon/RestrainedClickOn(var/atom/A) - var/obj/item/I = get_active_hand() - if(I != null && I.flags&ABSTRACT) - I.afterattack(A) - return 1 return 0 /mob/living/carbon/human/RangedAttack(var/atom/A) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 1cfb4c0a350..be0b2314f2c 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -222,7 +222,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/absorbedcount = 0 var/chem_charges = 20 var/chem_storage = 50 - var/chem_recharge_rate = 1 + var/chem_recharge_rate = 0.5 var/sting_range = 2 var/changelingID = "Changeling" var/geneticdamage = 0 diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index f5a625bbfbc..f84cb8a428c 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -28,7 +28,8 @@ //removes our changeling verbs /mob/proc/remove_changeling_powers() - src:unset_sting() + var/mob/living/carbon/C = src + C.unset_sting() for(var/datum/power/changeling/P in powerinstances) if(P.isVerb) verbs -= P.verbpath @@ -185,51 +186,6 @@ . = 1 del(src) return -/* -/mob/living/carbon/proc/changeling_greater_form() - set category = "Changeling" - set name = "Greater Form ON (45)" - - var/datum/changeling/changeling = changeling_power(45,0,1) - if(!changeling) return - - changeling.chem_charges -= 45 - changeling.geneticdamage = 5 - src << "Our genes cry out!" - mutations.Add(HULK, XRAY, COLD_RESISTANCE) - update_mutations() - src.mind.changeling.chem_storage -= 45 - src.mind.changeling.chem_recharge_rate /= 2 - verbs -= /mob/living/carbon/proc/changeling_greater_form - verbs -= /mob/living/carbon/proc/changeling_lesser_form - verbs += /mob/living/carbon/proc/changeling_greater_form_off - feedback_add_details("changeling_powers","GF") - . = 1 - return - -/mob/living/carbon/proc/changeling_greater_form_off() - set category = "Changeling" - set name = "Greater Form OFF (5)" - - var/datum/changeling/changeling = changeling_power(5,0,1) - if(!changeling) return - - changeling.chem_charges -= 5 - changeling.geneticdamage = 5 - src << "Our genes cry out!" - mutations.Remove(HULK, XRAY, COLD_RESISTANCE) - update_mutations() - src.mind.changeling.chem_storage += 45 - src.mind.changeling.chem_recharge_rate *= 2 - verbs += /mob/living/carbon/proc/changeling_greater_form - verbs -= /mob/living/carbon/proc/changeling_greater_form_off - for(var/datum/power/changeling/lesser_form in mind.changeling.purchasedpowers) - verbs += /mob/living/carbon/proc/changeling_lesser_form - feedback_add_details("changeling_powers","NF") - . = 1 - return -*/ - //Transform into a human /mob/living/carbon/proc/changeling_human_form() @@ -571,18 +527,6 @@ var/list/datum/dna/hivemind_bank = list() if(src && src.mind && src.mind.changeling) src.mind.changeling.mimicing = "" -/mob/living/carbon/proc/retract_stinger() - set category = "Changeling" - set name = "-Retract stinger-" //essential enough to be always second after evolution - set desc = "Retracts the stinger, making hands useful again." - - if(!src.mind.changeling.chosen_sting) - src << "Our stinger is already retracted." - return 0 - unset_sting() - src << "We retract our stinger." - return 1 - ////////// //STINGS// //They get a pretty header because there's just so fucking many of them ;_; ////////// @@ -599,7 +543,7 @@ var/list/datum/dna/hivemind_bank = list() hud_used.lingstingdisplay.icon_state = null hud_used.lingstingdisplay.invisibility = 101 -/mob/living/carbon/proc/sting_can_reach(mob/living/carbon/C, chem_cost) //handles all the checks there is +/mob/living/carbon/proc/sting_can_reach(mob/living/carbon/C, chem_cost) //handles all the checks there are if(!isturf(src.loc)) return 0 if(get_dist(src, C) > (src.mind.changeling.sting_range)) return 0 //sanity check as AStar is still throwing insane stunts if(!AStar(src.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, src.mind.changeling.sting_range)) return 0 //hope this ancient magic still works @@ -646,7 +590,6 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","TS") return 1 - /mob/living/carbon/proc/changeling_extract_dna_sting() set category = "Changeling" set name = "Extract DNA Sting (25)" @@ -665,7 +608,6 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","ED") return 1 - /mob/living/carbon/proc/changeling_mute_sting() set category = "Changeling" set name = "Mute sting (20)" @@ -680,13 +622,6 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","MS") return 1 -/mob/living/carbon/proc/changeling_poison_sting() - set category = "Changeling" - set name = "Poison sting (15)" - set desc= "Poisons target and gives them brain damage." - - set_sting(/mob/living/carbon/proc/sting_effect_poison, "sting_poison") - /mob/living/carbon/proc/sting_effect_poison(mob/living/carbon/T) if(!sting_can_reach(T, 15)) return 0 diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index f7533b6ef84..68450590a44 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -33,13 +33,6 @@ var/list/powerinstances genomecost = 0 verbpath = /mob/living/carbon/proc/changeling_transform -/datum/power/changeling/retract - name = "Retract stinger" - desc = "We retract our stinger, making possible to use hands." - genomecost = 0 - allowduringlesserform = 1 - verbpath = /mob/living/carbon/proc/retract_stinger - /datum/power/changeling/fakedeath name = "Regenerative Stasis" desc = "We become weakened to a death-like state, where we will rise again from death." @@ -115,15 +108,6 @@ var/list/powerinstances genomecost = 1 verbpath = /mob/living/carbon/proc/changeling_fleshmend -/* -/datum/power/changeling/greater_form - name = "Greater form" - desc = "We become very strong, resistant and perceptive." - helptext = "Gives you a hulk, cold resistance and x-ray while active." - genomecost = 2 - verbpath = /mob/living/carbon/proc/changeling_greater_form -*/ - /datum/power/changeling/panacea name = "Anatomic Panacea" desc = "Expels impurifications from our form; curing diseases, genetic disabilities, and removing toxins and radiation." @@ -154,13 +138,6 @@ var/list/powerinstances allowduringlesserform = 1 verbpath = /mob/living/carbon/proc/changeling_lsd_sting -/datum/power/changeling/poison_sting - name = "Poison sting" - desc = "We evolve the ability to sting a target with a poisonous chemical, causing toxic and brain damage." - genomecost = 1 - allowduringlesserform = 1 - verbpath = /mob/living/carbon/proc/changeling_poison_sting - /datum/power/changeling/blind_sting name = "Blind Sting" desc = "We silently sting a human, completely blinding them for a short time." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index bffea2cde29..2a06ec24238 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -46,10 +46,8 @@ visible_message("[M] bursts out of [src]!") . = ..() -/mob/living/carbon/ClickOn(var/atom/A, var/params) - var/list/L = params2list(params) - L.Remove("left", "icon-y", "icon-x", "screen-loc") //remove all the default params - if(L["alt"] && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) //checks for alt+click +/mob/living/carbon/AltClickOn(var/atom/A) + if(!src.stat && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) if(world.time <= next_click) return next_click = world.time + 5 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 38d3720d989..d9941e57a35 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -713,10 +713,8 @@ note dizziness decrements automatically in the mob's Life() proc. if(lying) density = 0 - if(r_hand && !(r_hand.flags&ABSTRACT)) - drop_r_hand() - if(l_hand && !(l_hand.flags&ABSTRACT)) - drop_l_hand() + drop_r_hand() + drop_l_hand() else density = 1 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 62252ab6767..bca7be9241e 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -2,10 +2,6 @@ if (monkeyizing) return //Handle items on mob - var/obj/item/rHand = r_hand - var/obj/item/lHand = l_hand - var/obj/item/Mask = wear_mask - var/obj/item/Back = back //first implants var/list/implants = list() @@ -17,17 +13,6 @@ for(var/obj/item/W in (src.contents-implants)) drop_from_inventory(W) - if(tr_flags & TR_KEEPITEMS) - if(rHand) - rHand.loc = src - if(lHand) - lHand.loc = src - if(Back) - Back.loc = src - if(Mask) - Mask.loc = src - - //Make mob invisible and spawn animation regenerate_icons() monkeyizing = 1 @@ -43,15 +28,6 @@ sleep(22) //animation = null var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) - if(tr_flags & TR_KEEPITEMS) - if(rHand) - O.equip_to_slot(rHand, slot_r_hand) - if(lHand) - O.equip_to_slot(lHand, slot_l_hand) - if(Mask) - O.equip_to_slot(Mask, slot_wear_mask) - if(Back) - O.equip_to_slot(Back, slot_back) del(animation) From d920dbac34d16a509d9c54b7466b035bbb53525c Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 3 Dec 2013 00:52:17 +0400 Subject: [PATCH 069/315] And i forgot something again Goddamn this low attention span --- .../game/gamemodes/changeling/changeling_powers.dm | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index f84cb8a428c..4bb3b1c8103 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -622,18 +622,6 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","MS") return 1 -/mob/living/carbon/proc/sting_effect_poison(mob/living/carbon/T) - if(!sting_can_reach(T, 15)) - return 0 - if(T.reagents) - T.reagents.add_reagent("plantbgone", 10) - T.reagents.add_reagent("changelingsting", 15) - T.reagents.add_reagent("impedrezene", 25) - - feedback_add_details("changeling_powers","PS") - return 1 - - /mob/living/carbon/proc/changeling_blind_sting() set category = "Changeling" set name = "Blind Sting (25)" @@ -651,7 +639,6 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","BS") return 1 - /mob/living/carbon/proc/changeling_lsd_sting() set category = "Changeling" set name = "Hallucination Sting (5)" @@ -667,7 +654,6 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","HS") return 1 - /mob/living/carbon/proc/changeling_cryo_sting() set category = "Changeling" set name = "Cryogenic Sting (15)" From 9d49d997fb98d2e3bc8a074f0ab182ae950437d1 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 2 Dec 2013 21:12:24 +0000 Subject: [PATCH 070/315] Removed spawn() --- code/game/gamemodes/meteor/meteors.dm | 64 ++++++++++++--------------- 1 file changed, 29 insertions(+), 35 deletions(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index e6f8833a2a6..75b7be1afff 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -94,25 +94,21 @@ pass_flags = PASSTABLE | PASSGRILLE /obj/effect/meteor/Bump(atom/A) - spawn(0) + if (A) + A.meteorhit(src) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) + if (--src.hits <= 0) - if (A) - A.meteorhit(src) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - if (--src.hits <= 0) - - //Prevent meteors from blowing up the singularity's containment. - //Changing emitter and generator ex_act would result in them being bomb and C4 proof. - if(!istype(A,/obj/machinery/power/emitter) && \ - !istype(A,/obj/machinery/field/generator) && \ - prob(15)) - explosion(src.loc, 4, 5, 6, 7, 0) - del(src) - return + //Prevent meteors from blowing up the singularity's containment. + //Changing emitter and generator ex_act would result in them being bomb and C4 proof. + if(!istype(A,/obj/machinery/power/emitter) && \ + !istype(A,/obj/machinery/field/generator) && \ + prob(15)) + explosion(src.loc, 4, 5, 6, 7, 0) + del(src) /obj/effect/meteor/ex_act(severity) - if (severity < 4) del(src) return @@ -125,28 +121,26 @@ return Bump(atom/A) - spawn(0) - //Prevent meteors from blowing up the singularity's containment. - //Changing emitter and generator ex_act would result in them being bomb and C4 proof - if(!istype(A,/obj/machinery/power/emitter) && \ - !istype(A,/obj/machinery/field/generator)) - if(--src.hits <= 0) - del(src) //Dont blow up singularity containment if we get stuck there. + //Prevent meteors from blowing up the singularity's containment. + //Changing emitter and generator ex_act would result in them being bomb and C4 proof + if(!istype(A,/obj/machinery/power/emitter) && \ + !istype(A,/obj/machinery/field/generator)) + if(--src.hits <= 0) + del(src) //Dont blow up singularity containment if we get stuck there. - if (A) - for(var/mob/M in player_list) - var/turf/T = get_turf(M) - if(!T || T.z != src.z) - continue - shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3) - M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10) - explosion(src.loc, 0, 1, 2, 3, 0) + if (A) + for(var/mob/M in player_list) + var/turf/T = get_turf(M) + if(!T || T.z != src.z) + continue + shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3) + M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10) + explosion(src.loc, 0, 1, 2, 3, 0) - if (--src.hits <= 0) - if(prob(15) && !istype(A, /obj/structure/grille)) - explosion(src.loc, 1, 2, 3, 4, 0) - del(src) - return + if (--src.hits <= 0) + if(prob(15) && !istype(A, /obj/structure/grille)) + explosion(src.loc, 1, 2, 3, 4, 0) + del(src) /obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/pickaxe)) From 25de3084bdd29db047b03f9213da446265b1683f Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 2 Dec 2013 18:31:54 -0700 Subject: [PATCH 071/315] Fixed inverted portaflasher overlay state The light should be on while bolted, not the other way around. --- code/game/machinery/flasher.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 05129852379..180da00b5a5 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -131,12 +131,12 @@ if (!anchored && !isinspace()) user << "[src] is now secured." - overlays.Cut() + overlays += "[base_state]-s" anchored = 1 power_change() else user << "[src] can now be moved." - overlays += "[base_state]-s" + overlays.Cut() anchored = 0 power_change() From d0bded382ed763f5a3767c1ea38050ffb569f45a Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 2 Dec 2013 18:35:13 -0700 Subject: [PATCH 072/315] Removed depreciated code from comments --- code/game/gamemodes/nuclear/nuclearbomb.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 72f6167c087..2cd05ee1b8e 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -69,19 +69,7 @@ var/bomb_set popup.set_content(dat) popup.open() return -/* -/obj/machinery/nuclearbomb/verb/make_deployable() - set category = "Object" - set name = "Deploy Bomb" - set src in oview(1) - if(isliving(usr)) - if(!src.extended) - src.anchored = 1 - flick("nuclearbombc", src) - src.icon_state = "nuclearbomb1" - src.extended = 1 -*/ /obj/machinery/nuclearbomb/Topic(href, href_list) if(..()) return From 445f2870dc895b92d4c241e232e27aedf1c42669 Mon Sep 17 00:00:00 2001 From: cookingboy3 Date: Mon, 2 Dec 2013 20:59:21 -0800 Subject: [PATCH 073/315] Sandbox modification --- code/game/gamemodes/sandbox/h_sandbox.dm | 41 +++++++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index cbda89004ca..7f0235c1396 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -1,5 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 +// OOC: Subtumaka: i need to go an roll around in pain on the ground for a bit, i forgot i have a hude paper cut and i tried to squeeze a lemon for lemon nande brb + var/hsboxspawn = 1 mob @@ -49,25 +51,34 @@ datum/hSB "Spawn All-Access ID" = "hsbaaid", "Building Supplies", + "Spawn 50 Wood" = "hsbwood", "Spawn 50 Metal" = "hsbmetal", "Spawn 50 Plasteel" = "hsbplasteel", + "Spawn 50 Reinforced Glass" = "hsbrglass", "Spawn 50 Glass" = "hsbglass", "Spawn Full Cable Coil" = "hsbspawn&path=[/obj/item/weapon/cable_coil]", "Spawn Hyper Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/hyper]", + "Spawn Inf. Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/infinte]", "Spawn Rapid Construction Device" = "hsbrcd", "Spawn RCD Ammo" = "hsb_safespawn&path=[/obj/item/weapon/rcd_ammo]", "Spawn Airlock" = "hsbairlock", "Miscellaneous", "Spawn Air Scrubber" = "hsbscrubber", - "Spawn Canister..." = "hsbcanister", + // "Spawn Canister..." = "hsbcanister", + // Removed for further redevlopment. "Spawn Welding Fuel Tank" = "hsbspawn&path=[/obj/structure/reagent_dispensers/fueltank]", "Spawn Water Tank" = "hsbspawn&path=[/obj/structure/reagent_dispensers/watertank]", "Bots", "Spawn Cleanbot" = "hsbspawn&path=[/obj/machinery/bot/cleanbot]", "Spawn Floorbot" = "hsbspawn&path=[/obj/machinery/bot/floorbot]", - "Spawn Medbot" = "hsbspawn&path=[/obj/machinery/bot/medbot]") + "Spawn Medbot" = "hsbspawn&path=[/obj/machinery/bot/medbot]", + // the following is code built to replace the shit hsbcanister thing and to prevent griff. + // note as of 2/12/13: this shit works fine, admin ones need to be fixed. + "Canisters", + "Spawn O2 Canister" = "hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/oxygen]", + "Spawn Air Canister" = "hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/air]") if(!hsbinfo) @@ -75,9 +86,17 @@ datum/hSB if(admin) hsbinfo += "Administration
    " hsbinfo += "- Toggle Object Spawning
    " - hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " + hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " + // these buttons seem to just be for admin dickery really. might have a use or somethin'. + hsbinfo += "Canister Spawning
    " + hsbinfo += "Remember, the first rule about adminbuse, is don't talk about the adminbuse
    " + hsbinfo += "- !!!DANGER!!! Spawn Plasma Canister
    " + hsbinfo += "- !!!DANGER!!! Spawn CO2 Canister
    " + hsbinfo += "- !!!DANGER!!! Spawn Nitrogen Canister
    " + hsbinfo += "- !!!DANGER!!! Spawn N2O Canister
    " else hsbinfo += "Some item spawning may be disabled by the administrators.
    " + hsbinfo += "Only administrators may spawn dangerous canisters.
    " for(var/T in hrefs) var/href = hrefs[T] if(href) @@ -124,7 +143,6 @@ datum/hSB world << "\red Sandbox: \black [usr.key] has added a limiter to object spawning. The window will now auto-close after use." config.sandbox_autoclose = 1 return - // // Spacesuit with full air jetpack set as internals // @@ -167,6 +185,13 @@ datum/hSB var/obj/hsb = new/obj/machinery/portable_atmospherics/scrubber{volume_rate=50*ONE_ATMOSPHERE;on=1}(usr.loc) hsb.update_icon() // hackish but it wasn't meant to be spawned I guess? + // + // General Purpose Items + // + + if("hsbrglass") + new/obj/item/stack/sheet/rglass{amount=50}(usr.loc) // might work. probably. i dunno. + if("hsbmetal") new/obj/item/stack/sheet/metal{amount=50}(usr.loc) @@ -176,6 +201,9 @@ datum/hSB if("hsbglass") new/obj/item/stack/sheet/glass{amount=50}(usr.loc) + if("hsbwood") + new/obj/item/stack/sheet/wood{amount=50}(usr.loc) + // // All access ID // @@ -204,13 +232,16 @@ datum/hSB // // Canister select window // + /* + code cut for better replacement. + uncomment if new code breaks if("hsbcanister") if(!canisterinfo) canisterinfo = "Choose a canister type:
    " for(var/O in (typesof(/obj/machinery/portable_atmospherics/canister/) - /obj/machinery/portable_atmospherics/canister/)) canisterinfo += "[O]
    " usr << browse(canisterinfo,"window=sandbox") - + */ // // Object spawn window // From a56336a621897134531976bd60fd6828a8c5504f Mon Sep 17 00:00:00 2001 From: Emil Date: Tue, 3 Dec 2013 09:35:32 +0100 Subject: [PATCH 074/315] Update grenade_launcher.dm Removed href-tags from log_game and corrected the log message. --- code/modules/reagents/grenade_launcher.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/grenade_launcher.dm b/code/modules/reagents/grenade_launcher.dm index 22a535e5236..392c4deb898 100644 --- a/code/modules/reagents/grenade_launcher.dm +++ b/code/modules/reagents/grenade_launcher.dm @@ -57,9 +57,9 @@ F.loc = user.loc F.throw_at(target, 30, 2) message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name_admin(user)] used a grenade ([src.name]).") + log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") F.active = 1 F.icon_state = initial(icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) spawn(15) - F.prime() \ No newline at end of file + F.prime() From d9f5224646134e14628109ba26a208efc83d1823 Mon Sep 17 00:00:00 2001 From: Perakp Date: Tue, 3 Dec 2013 13:15:19 +0200 Subject: [PATCH 075/315] Changed Del to del Proc names are case sensitive --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 6de54fc375d..53baea581e7 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -15,7 +15,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds if(istype(loc, /mob/living)) affected_mob = loc if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest) | affected_mob.status_flags & XENO_HOST) //If our Victim is augmented in the chest, No Babby - RR - Del(src) + del(src) return affected_mob.status_flags |= XENO_HOST processing_objects.Add(src) From 446728d45d9bc20c27ded012f66f417d5fe27b8d Mon Sep 17 00:00:00 2001 From: cookingboy3 Date: Tue, 3 Dec 2013 06:56:32 -0800 Subject: [PATCH 076/315] removed dev comments, added changelog --- code/game/gamemodes/sandbox/h_sandbox.dm | 23 ++--------------------- html/changelog.html | 10 ++++++++++ 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 7f0235c1396..50104306fbb 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -1,7 +1,5 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -// OOC: Subtumaka: i need to go an roll around in pain on the ground for a bit, i forgot i have a hude paper cut and i tried to squeeze a lemon for lemon nande brb - var/hsboxspawn = 1 mob @@ -65,8 +63,6 @@ datum/hSB "Miscellaneous", "Spawn Air Scrubber" = "hsbscrubber", - // "Spawn Canister..." = "hsbcanister", - // Removed for further redevlopment. "Spawn Welding Fuel Tank" = "hsbspawn&path=[/obj/structure/reagent_dispensers/fueltank]", "Spawn Water Tank" = "hsbspawn&path=[/obj/structure/reagent_dispensers/watertank]", @@ -74,8 +70,7 @@ datum/hSB "Spawn Cleanbot" = "hsbspawn&path=[/obj/machinery/bot/cleanbot]", "Spawn Floorbot" = "hsbspawn&path=[/obj/machinery/bot/floorbot]", "Spawn Medbot" = "hsbspawn&path=[/obj/machinery/bot/medbot]", - // the following is code built to replace the shit hsbcanister thing and to prevent griff. - // note as of 2/12/13: this shit works fine, admin ones need to be fixed. + "Canisters", "Spawn O2 Canister" = "hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/oxygen]", "Spawn Air Canister" = "hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/air]") @@ -87,7 +82,6 @@ datum/hSB hsbinfo += "Administration
    " hsbinfo += "- Toggle Object Spawning
    " hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " - // these buttons seem to just be for admin dickery really. might have a use or somethin'. hsbinfo += "Canister Spawning
    " hsbinfo += "Remember, the first rule about adminbuse, is don't talk about the adminbuse
    " hsbinfo += "- !!!DANGER!!! Spawn Plasma Canister
    " @@ -186,7 +180,7 @@ datum/hSB hsb.update_icon() // hackish but it wasn't meant to be spawned I guess? // - // General Purpose Items + // Stacked Materials // if("hsbrglass") @@ -229,19 +223,6 @@ datum/hSB if("hsbairlock") new /datum/airlock_maker(usr.loc) - // - // Canister select window - // - /* - code cut for better replacement. - uncomment if new code breaks - if("hsbcanister") - if(!canisterinfo) - canisterinfo = "Choose a canister type:
    " - for(var/O in (typesof(/obj/machinery/portable_atmospherics/canister/) - /obj/machinery/portable_atmospherics/canister/)) - canisterinfo += "[O]
    " - usr << browse(canisterinfo,"window=sandbox") - */ // // Object spawn window // diff --git a/html/changelog.html b/html/changelog.html index 0ad3397044d..87850384094 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,16 @@ should be listed in the changelog upon commit tho. Thanks. --> +
    +

    12 March 2013

    +

    cookingboy3 updated:

    +
      +
    • Added two new buttons to the sandbox panel.
    • +
    • Removed canister menu, repaced it with buttons.
    • +
    • Players can no longer spawn "dangerous" canisters in sandbox, such as Plasma, N20, CO2, and Nitrogen.
    • +
    +
    +

    28 November 2013

    Malkevin updated:

    From d687e6feaccbb40847edac3765eece812583b1fc Mon Sep 17 00:00:00 2001 From: cookingboy3 Date: Tue, 3 Dec 2013 07:14:29 -0800 Subject: [PATCH 077/315] removed a comment I missed --- code/game/gamemodes/sandbox/h_sandbox.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 50104306fbb..10af015777e 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -184,7 +184,7 @@ datum/hSB // if("hsbrglass") - new/obj/item/stack/sheet/rglass{amount=50}(usr.loc) // might work. probably. i dunno. + new/obj/item/stack/sheet/rglass{amount=50}(usr.loc) if("hsbmetal") new/obj/item/stack/sheet/metal{amount=50}(usr.loc) From 1df342954a3253a1df549b7bd4036c60a8724bb1 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 3 Dec 2013 08:42:24 -0700 Subject: [PATCH 078/315] Detailed Custom Vote Results https://dl.dropboxusercontent.com/u/831776/bossofme.png Custom vote results will show how many votes each option recieved, and as a percentage of server population. --- code/controllers/voting.dm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index b84ae936c0a..393b46954a7 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -90,12 +90,19 @@ datum/controller/vote var/list/winners = get_result() var/text if(winners.len > 0) - if(winners.len > 1) - text = "Vote Tied Between:\n" - for(var/option in winners) - text += "\t[option]\n" - . = pick(winners) - text += "Vote Result: [.]" + if(mode == "custom") + text += "Vote Results:
    " + for(var/i=1,i<=choices.len,i++) + var/votes = choices[choices[i]] + if(!votes) votes = 0 + text += "[choices[i]]: [votes] ([(votes/clients.len)*100]%)
    " + else + if(winners.len > 1) + text = "Vote Tied Between:\n" + for(var/option in winners) + text += "\t[option]\n" + . = pick(winners) + text += "Vote Result: [.]" else text += "Vote Result: Inconclusive - No Votes!" log_vote(text) From 72e16e4482597238a57aaab5203fb7add169325a Mon Sep 17 00:00:00 2001 From: Emil Date: Tue, 3 Dec 2013 16:54:38 +0100 Subject: [PATCH 079/315] Removing href-tags from log_game in transfer_valve.dm Not sure I'm doing this the best way, but I couldn't come up with a cleaner way. Suggestions are welcome! --- .../objects/items/devices/transfer_valve.dm | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 29b1678d8b5..d4fbe08b0fc 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -167,21 +167,24 @@ else attacher_name = "[attacher.name]([attacher.ckey])" - var/log_str = "Bomb valve opened in [A.name] " - log_str += "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" + var/log_str1 = "Bomb valve opened in " + var/log_str2 = "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" - if(attacher) - log_str += "(?)" + var/log_attacher = "" + if(attacher) + log_attacher = "(?)" - var/mob/mob = get_mob_by_key(src.fingerprintslast) - var/last_touch_info = "" - if(mob) - last_touch_info = "(?)" + var/mob/mob = get_mob_by_key(src.fingerprintslast) + var/last_touch_info = "" + if(mob) + last_touch_info = "(?)" - log_str += " Last touched by: [src.fingerprintslast][last_touch_info]" - bombers += log_str - message_admins(log_str, 0, 1) - log_game(log_str) + + var/log_str3 += " Last touched by: [src.fingerprintslast]" + bombers += "[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]" + + message_admins("[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]", 0, 1) + log_game("[log_str1] [A.name] [log_str2] [log_str3]") merge_gases() spawn(20) // In case one tank bursts for (var/i=0,i<5,i++) @@ -197,4 +200,4 @@ // this doesn't do anything but the timer etc. expects it to be here // eventually maybe have it update icon to show state (timer, prox etc.) like old bombs /obj/item/device/transfer_valve/proc/c_state() - return \ No newline at end of file + return From e2a6628aecbf3790627516f727c661329d0aee54 Mon Sep 17 00:00:00 2001 From: Emil Date: Tue, 3 Dec 2013 21:33:58 +0100 Subject: [PATCH 080/315] Removing href-tags from log_game in grenade.dm Cleaning up after Ikarrus @ 2f92f67a --- code/game/objects/items/weapons/grenades/grenade.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index a98a6918ac9..630224d05ac 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -64,9 +64,8 @@ add_fingerprint(user) var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) - var/log_str = "[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP)." - message_admins(log_str) - log_game(log_str) + message_admins("[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP).") + log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).") if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() From 36f1ba55103b7dce7b473f4f0be6416f0e4a590c Mon Sep 17 00:00:00 2001 From: Emil Date: Tue, 3 Dec 2013 21:43:26 +0100 Subject: [PATCH 081/315] Removing href-tags from log_game in say.dm --- code/modules/mob/living/silicon/ai/say.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 0ea2cafed14..cf1b16bc6cc 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -104,7 +104,7 @@ var/const/VOX_DELAY = 600 announcing_vox = world.time + VOX_DELAY - log_game("[key_name_admin(src)] made a vocal announcement with the following message: [message].") + log_game("[key_name(src)] made a vocal announcement with the following message: [message].") for(var/word in words) play_vox_word(word, src.z, null) @@ -141,4 +141,4 @@ var/const/VOX_DELAY = 600 return 1 return 0 -#endif \ No newline at end of file +#endif From 3bebf172a0bb8a92b04894407ddaa437850b8d3b Mon Sep 17 00:00:00 2001 From: Cem Kocagil Date: Tue, 3 Dec 2013 22:15:39 +0200 Subject: [PATCH 082/315] Hitbox helper tool --- tools/HitboxExpander/.gitignore | 3 + tools/HitboxExpander/hitbox_expander.py | 107 + .../third_party/Imaging-1.1.7/BUILDME | 11 + .../third_party/Imaging-1.1.7/CHANGES | 1767 +++++++++ .../third_party/Imaging-1.1.7/CONTENTS | 299 ++ .../third_party/Imaging-1.1.7/Docs/effbot.css | 118 + .../third_party/Imaging-1.1.7/Docs/index.html | 103 + .../Imaging-1.1.7/Images/courB08.bdf | 2676 ++++++++++++++ .../Imaging-1.1.7/Images/courB08.pbm | Bin 0 -> 1273 bytes .../Imaging-1.1.7/Images/courB08.pil | Bin 0 -> 5143 bytes .../third_party/Imaging-1.1.7/Images/lena.gif | Bin 0 -> 16336 bytes .../third_party/Imaging-1.1.7/Images/lena.jpg | Bin 0 -> 4788 bytes .../third_party/Imaging-1.1.7/Images/lena.png | Bin 0 -> 37723 bytes .../third_party/Imaging-1.1.7/Images/lena.ppm | 4 + .../third_party/Imaging-1.1.7/MANIFEST | 279 ++ .../third_party/Imaging-1.1.7/PIL.pth | 1 + .../Imaging-1.1.7/PIL/ArgImagePlugin.py | 504 +++ .../Imaging-1.1.7/PIL/BdfFontFile.py | 133 + .../Imaging-1.1.7/PIL/BmpImagePlugin.py | 251 ++ .../Imaging-1.1.7/PIL/BufrStubImagePlugin.py | 68 + .../Imaging-1.1.7/PIL/ContainerIO.py | 116 + .../Imaging-1.1.7/PIL/CurImagePlugin.py | 88 + .../Imaging-1.1.7/PIL/DcxImagePlugin.py | 78 + .../Imaging-1.1.7/PIL/EpsImagePlugin.py | 349 ++ .../third_party/Imaging-1.1.7/PIL/ExifTags.py | 157 + .../Imaging-1.1.7/PIL/FitsStubImagePlugin.py | 73 + .../Imaging-1.1.7/PIL/FliImagePlugin.py | 142 + .../third_party/Imaging-1.1.7/PIL/FontFile.py | 146 + .../Imaging-1.1.7/PIL/FpxImagePlugin.py | 224 ++ .../Imaging-1.1.7/PIL/GbrImagePlugin.py | 70 + .../Imaging-1.1.7/PIL/GdImageFile.py | 85 + .../Imaging-1.1.7/PIL/GifImagePlugin.py | 407 ++ .../Imaging-1.1.7/PIL/GimpGradientFile.py | 124 + .../Imaging-1.1.7/PIL/GimpPaletteFile.py | 61 + .../Imaging-1.1.7/PIL/GribStubImagePlugin.py | 68 + .../Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py | 70 + .../Imaging-1.1.7/PIL/IcnsImagePlugin.py | 211 ++ .../Imaging-1.1.7/PIL/IcoImagePlugin.py | 86 + .../Imaging-1.1.7/PIL/ImImagePlugin.py | 336 ++ .../third_party/Imaging-1.1.7/PIL/Image.py | 2127 +++++++++++ .../Imaging-1.1.7/PIL/ImageChops.py | 302 ++ .../third_party/Imaging-1.1.7/PIL/ImageCms.py | 786 ++++ .../Imaging-1.1.7/PIL/ImageColor.py | 263 ++ .../Imaging-1.1.7/PIL/ImageDraw.py | 378 ++ .../Imaging-1.1.7/PIL/ImageDraw2.py | 105 + .../Imaging-1.1.7/PIL/ImageEnhance.py | 90 + .../Imaging-1.1.7/PIL/ImageFile.py | 528 +++ .../Imaging-1.1.7/PIL/ImageFileIO.py | 39 + .../Imaging-1.1.7/PIL/ImageFilter.py | 289 ++ .../Imaging-1.1.7/PIL/ImageFont.py | 390 ++ .../third_party/Imaging-1.1.7/PIL/ImageGL.py | 28 + .../Imaging-1.1.7/PIL/ImageGrab.py | 71 + .../Imaging-1.1.7/PIL/ImageMath.py | 207 ++ .../Imaging-1.1.7/PIL/ImageMode.py | 50 + .../third_party/Imaging-1.1.7/PIL/ImageOps.py | 439 +++ .../Imaging-1.1.7/PIL/ImagePalette.py | 184 + .../Imaging-1.1.7/PIL/ImagePath.py | 71 + .../third_party/Imaging-1.1.7/PIL/ImageQt.py | 84 + .../Imaging-1.1.7/PIL/ImageSequence.py | 38 + .../Imaging-1.1.7/PIL/ImageShow.py | 163 + .../Imaging-1.1.7/PIL/ImageStat.py | 164 + .../third_party/Imaging-1.1.7/PIL/ImageTk.py | 296 ++ .../Imaging-1.1.7/PIL/ImageTransform.py | 95 + .../third_party/Imaging-1.1.7/PIL/ImageWin.py | 215 ++ .../Imaging-1.1.7/PIL/ImtImagePlugin.py | 93 + .../Imaging-1.1.7/PIL/IptcImagePlugin.py | 288 ++ .../Imaging-1.1.7/PIL/JpegImagePlugin.py | 492 +++ .../Imaging-1.1.7/PIL/McIdasImagePlugin.py | 70 + .../Imaging-1.1.7/PIL/MicImagePlugin.py | 95 + .../Imaging-1.1.7/PIL/MpegImagePlugin.py | 82 + .../Imaging-1.1.7/PIL/MspImagePlugin.py | 103 + .../Imaging-1.1.7/PIL/OleFileIO.py | 528 +++ .../third_party/Imaging-1.1.7/PIL/PSDraw.py | 199 + .../Imaging-1.1.7/PIL/PaletteFile.py | 55 + .../Imaging-1.1.7/PIL/PalmImagePlugin.py | 225 ++ .../Imaging-1.1.7/PIL/PcdImagePlugin.py | 76 + .../Imaging-1.1.7/PIL/PcfFontFile.py | 256 ++ .../Imaging-1.1.7/PIL/PcxImagePlugin.py | 167 + .../Imaging-1.1.7/PIL/PdfImagePlugin.py | 211 ++ .../Imaging-1.1.7/PIL/PixarImagePlugin.py | 71 + .../Imaging-1.1.7/PIL/PngImagePlugin.py | 620 ++++ .../Imaging-1.1.7/PIL/PpmImagePlugin.py | 131 + .../Imaging-1.1.7/PIL/PsdImagePlugin.py | 291 ++ .../Imaging-1.1.7/PIL/SgiImagePlugin.py | 92 + .../Imaging-1.1.7/PIL/SpiderImagePlugin.py | 294 ++ .../Imaging-1.1.7/PIL/SunImagePlugin.py | 86 + .../third_party/Imaging-1.1.7/PIL/TarIO.py | 57 + .../Imaging-1.1.7/PIL/TgaImagePlugin.py | 201 + .../Imaging-1.1.7/PIL/TiffImagePlugin.py | 860 +++++ .../third_party/Imaging-1.1.7/PIL/TiffTags.py | 209 ++ .../Imaging-1.1.7/PIL/WalImageFile.py | 126 + .../Imaging-1.1.7/PIL/WmfImagePlugin.py | 167 + .../Imaging-1.1.7/PIL/XVThumbImagePlugin.py | 73 + .../Imaging-1.1.7/PIL/XbmImagePlugin.py | 94 + .../Imaging-1.1.7/PIL/XpmImagePlugin.py | 129 + .../third_party/Imaging-1.1.7/PIL/__init__.py | 12 + .../Imaging-1.1.7/PIL/_imaging.pyd | Bin 0 -> 193536 bytes .../Imaging-1.1.7/PIL/_imagingmath.pyd | Bin 0 -> 14848 bytes .../third_party/Imaging-1.1.7/README | 300 ++ .../third_party/Imaging-1.1.7/Sane/CHANGES | 34 + .../third_party/Imaging-1.1.7/Sane/README | 22 + .../third_party/Imaging-1.1.7/Sane/_sane.c | 1325 +++++++ .../Imaging-1.1.7/Sane/demo_numarray.py | 39 + .../Imaging-1.1.7/Sane/demo_pil.py | 33 + .../third_party/Imaging-1.1.7/Sane/sane.py | 289 ++ .../Imaging-1.1.7/Sane/sanedoc.txt | 294 ++ .../third_party/Imaging-1.1.7/Sane/setup.py | 24 + .../third_party/Imaging-1.1.7/Scripts/README | 83 + .../Imaging-1.1.7/Scripts/enhancer.py | 53 + .../Imaging-1.1.7/Scripts/explode.py | 107 + .../Imaging-1.1.7/Scripts/gifmaker.py | 135 + .../Imaging-1.1.7/Scripts/painter.py | 72 + .../Imaging-1.1.7/Scripts/pilconvert.py | 96 + .../Imaging-1.1.7/Scripts/pildriver.py | 524 +++ .../Imaging-1.1.7/Scripts/pilfile.py | 94 + .../Imaging-1.1.7/Scripts/pilfont.py | 54 + .../Imaging-1.1.7/Scripts/pilprint.py | 93 + .../Imaging-1.1.7/Scripts/player.py | 121 + .../Imaging-1.1.7/Scripts/thresholder.py | 68 + .../Imaging-1.1.7/Scripts/viewer.py | 46 + .../third_party/Imaging-1.1.7/Tk/booster.txt | 108 + .../third_party/Imaging-1.1.7/Tk/install.txt | 41 + .../Imaging-1.1.7/Tk/pilbitmap.txt | 149 + .../third_party/Imaging-1.1.7/Tk/tkImaging.c | 265 ++ .../third_party/Imaging-1.1.7/_imaging.c | 3281 +++++++++++++++++ .../third_party/Imaging-1.1.7/_imagingcms.c | 608 +++ .../third_party/Imaging-1.1.7/_imagingft.c | 502 +++ .../third_party/Imaging-1.1.7/_imagingmath.c | 284 ++ .../third_party/Imaging-1.1.7/_imagingtk.c | 70 + .../build/temp.win32-2.7/Release/_imaging.exp | Bin 0 -> 670 bytes .../build/temp.win32-2.7/Release/_imaging.lib | Bin 0 -> 1736 bytes .../temp.win32-2.7/Release/_imagingmath.exp | Bin 0 -> 690 bytes .../temp.win32-2.7/Release/_imagingmath.lib | Bin 0 -> 1882 bytes .../third_party/Imaging-1.1.7/decode.c | 689 ++++ .../third_party/Imaging-1.1.7/display.c | 836 +++++ .../third_party/Imaging-1.1.7/doctest.py | 1111 ++++++ .../third_party/Imaging-1.1.7/encode.c | 540 +++ .../Imaging-1.1.7/libImaging/Access.c | 255 ++ .../Imaging-1.1.7/libImaging/Antialias.c | 307 ++ .../Imaging-1.1.7/libImaging/Bands.c | 129 + .../Imaging-1.1.7/libImaging/Bit.h | 30 + .../Imaging-1.1.7/libImaging/BitDecode.c | 138 + .../Imaging-1.1.7/libImaging/Blend.c | 79 + .../Imaging-1.1.7/libImaging/Chops.c | 148 + .../Imaging-1.1.7/libImaging/Convert.c | 1132 ++++++ .../Imaging-1.1.7/libImaging/ConvertYCbCr.c | 387 ++ .../Imaging-1.1.7/libImaging/Copy.c | 58 + .../Imaging-1.1.7/libImaging/Crc32.c | 87 + .../Imaging-1.1.7/libImaging/Crop.c | 61 + .../Imaging-1.1.7/libImaging/Dib.c | 311 ++ .../Imaging-1.1.7/libImaging/Draw.c | 1167 ++++++ .../Imaging-1.1.7/libImaging/Effects.c | 373 ++ .../Imaging-1.1.7/libImaging/EpsEncode.c | 80 + .../Imaging-1.1.7/libImaging/Except.c | 83 + .../Imaging-1.1.7/libImaging/File.c | 193 + .../Imaging-1.1.7/libImaging/Fill.c | 101 + .../Imaging-1.1.7/libImaging/Filter.c | 179 + .../Imaging-1.1.7/libImaging/FliDecode.c | 205 + .../Imaging-1.1.7/libImaging/Geometry.c | 959 +++++ .../Imaging-1.1.7/libImaging/GetBBox.c | 316 ++ .../Imaging-1.1.7/libImaging/Gif.h | 109 + .../Imaging-1.1.7/libImaging/GifDecode.c | 297 ++ .../Imaging-1.1.7/libImaging/GifEncode.c | 319 ++ .../Imaging-1.1.7/libImaging/HexDecode.c | 67 + .../Imaging-1.1.7/libImaging/Histo.c | 169 + .../Imaging-1.1.7/libImaging/ImDib.h | 64 + .../Imaging-1.1.7/libImaging/ImPlatform.h | 72 + .../Imaging-1.1.7/libImaging/Imaging.h | 497 +++ .../Imaging-1.1.7/libImaging/Jpeg.h | 104 + .../Imaging-1.1.7/libImaging/JpegDecode.c | 267 ++ .../Imaging-1.1.7/libImaging/JpegEncode.c | 284 ++ .../Imaging-1.1.7/libImaging/Lzw.h | 52 + .../Imaging-1.1.7/libImaging/LzwDecode.c | 230 ++ .../Imaging-1.1.7/libImaging/Matrix.c | 74 + .../Imaging-1.1.7/libImaging/ModeFilter.c | 78 + .../Imaging-1.1.7/libImaging/MspDecode.c | 91 + .../Imaging-1.1.7/libImaging/Negative.c | 42 + .../Imaging-1.1.7/libImaging/Offset.c | 61 + .../Imaging-1.1.7/libImaging/Pack.c | 566 +++ .../Imaging-1.1.7/libImaging/PackDecode.c | 92 + .../Imaging-1.1.7/libImaging/Palette.c | 316 ++ .../Imaging-1.1.7/libImaging/Paste.c | 555 +++ .../Imaging-1.1.7/libImaging/PcdDecode.c | 78 + .../Imaging-1.1.7/libImaging/PcxDecode.c | 75 + .../Imaging-1.1.7/libImaging/PcxEncode.c | 148 + .../Imaging-1.1.7/libImaging/Point.c | 263 ++ .../Imaging-1.1.7/libImaging/Quant.c | 1610 ++++++++ .../Imaging-1.1.7/libImaging/Quant.h | 40 + .../Imaging-1.1.7/libImaging/QuantDefines.h | 25 + .../Imaging-1.1.7/libImaging/QuantHash.c | 477 +++ .../Imaging-1.1.7/libImaging/QuantHash.h | 36 + .../Imaging-1.1.7/libImaging/QuantHeap.c | 150 + .../Imaging-1.1.7/libImaging/QuantHeap.h | 23 + .../Imaging-1.1.7/libImaging/QuantTypes.h | 28 + .../Imaging-1.1.7/libImaging/RankFilter.c | 105 + .../Imaging-1.1.7/libImaging/Raw.h | 15 + .../Imaging-1.1.7/libImaging/RawDecode.c | 89 + .../Imaging-1.1.7/libImaging/RawEncode.c | 89 + .../Imaging-1.1.7/libImaging/Storage.c | 413 +++ .../Imaging-1.1.7/libImaging/SunRleDecode.c | 112 + .../Imaging-1.1.7/libImaging/TgaRleDecode.c | 118 + .../Imaging-1.1.7/libImaging/Unpack.c | 1028 ++++++ .../Imaging-1.1.7/libImaging/UnpackYCC.c | 162 + .../Imaging-1.1.7/libImaging/UnsharpMask.c | 398 ++ .../Imaging-1.1.7/libImaging/XbmDecode.c | 81 + .../Imaging-1.1.7/libImaging/XbmEncode.c | 106 + .../Imaging-1.1.7/libImaging/Zip.h | 57 + .../Imaging-1.1.7/libImaging/ZipDecode.c | 271 ++ .../Imaging-1.1.7/libImaging/ZipEncode.c | 341 ++ .../third_party/Imaging-1.1.7/map.c | 379 ++ .../third_party/Imaging-1.1.7/outline.c | 179 + .../third_party/Imaging-1.1.7/path.c | 587 +++ .../third_party/Imaging-1.1.7/selftest.py | 202 + .../third_party/Imaging-1.1.7/setup.py | 487 +++ .../third_party/zlib/DLL_FAQ.txt | 397 ++ .../third_party/zlib/README.txt | 60 + .../HitboxExpander/third_party/zlib/USAGE.txt | 89 + .../third_party/zlib/include/zconf.h | 511 +++ .../third_party/zlib/include/zlib.h | 1768 +++++++++ .../third_party/zlib/lib/zdll.lib | Bin 0 -> 15256 bytes .../third_party/zlib/lib/zlib.def | 86 + .../third_party/zlib/test/example_d.exe | Bin 0 -> 38912 bytes .../third_party/zlib/test/minigzip_d.exe | Bin 0 -> 35840 bytes .../HitboxExpander/third_party/zlib/zlib1.dll | Bin 0 -> 107520 bytes 224 files changed, 57727 insertions(+) create mode 100644 tools/HitboxExpander/.gitignore create mode 100755 tools/HitboxExpander/hitbox_expander.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pbm create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pil create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.gif create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.jpg create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.png create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.ppm create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/MANIFEST create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL.pth create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ArgImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imaging.pyd create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imagingmath.pyd create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/README create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.exp create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.lib create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.exp create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.lib create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/decode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/display.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/LzwDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/map.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/path.c create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py create mode 100755 tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt create mode 100755 tools/HitboxExpander/third_party/zlib/README.txt create mode 100755 tools/HitboxExpander/third_party/zlib/USAGE.txt create mode 100755 tools/HitboxExpander/third_party/zlib/include/zconf.h create mode 100755 tools/HitboxExpander/third_party/zlib/include/zlib.h create mode 100755 tools/HitboxExpander/third_party/zlib/lib/zdll.lib create mode 100755 tools/HitboxExpander/third_party/zlib/lib/zlib.def create mode 100755 tools/HitboxExpander/third_party/zlib/test/example_d.exe create mode 100755 tools/HitboxExpander/third_party/zlib/test/minigzip_d.exe create mode 100755 tools/HitboxExpander/third_party/zlib/zlib1.dll diff --git a/tools/HitboxExpander/.gitignore b/tools/HitboxExpander/.gitignore new file mode 100644 index 00000000000..8e987a0b84b --- /dev/null +++ b/tools/HitboxExpander/.gitignore @@ -0,0 +1,3 @@ +*.obj +pythondoc-PIL.*.html + diff --git a/tools/HitboxExpander/hitbox_expander.py b/tools/HitboxExpander/hitbox_expander.py new file mode 100755 index 00000000000..063e423bf91 --- /dev/null +++ b/tools/HitboxExpander/hitbox_expander.py @@ -0,0 +1,107 @@ +import os +import sys +import inspect +import shutil + +def AddToPath(path): + if path not in sys.path: + sys.path.insert(0, path) + delimeter = ':' if os.name == "posix" else ";" + os.environ['PATH'] = path + delimeter + os.environ['PATH'] + +current_dir = os.path.split(inspect.getfile(inspect.currentframe()))[0] + +AddToPath(os.path.abspath(os.path.join(current_dir, "third_party/Imaging-1.1.7/PIL"))) +AddToPath(os.path.abspath(os.path.join(current_dir, "third_party/zlib"))) + +import Image +import _imaging + +def PngSave(im, file): + # From http://blog.client9.com/2007/08/28/python-pil-and-png-metadata-take-2.html + + # these can be automatically added to Image.info dict + # they are not user-added metadata + reserved = ('interlace', 'gamma', 'dpi', 'transparency', 'aspect') + + # undocumented class + import PngImagePlugin + meta = PngImagePlugin.PngInfo() + + # copy metadata into new object + for k,v in im.info.iteritems(): + if k in reserved: continue + meta.add_text(k, v, 0) + + # and save + im.save(file, "PNG", pnginfo=meta) + +def ProcessFile(path): + name, ext = os.path.splitext(path) + ext = ext.lower() + if (ext != ".dmi" and ext != ".png") or os.path.splitext(name)[1] == ".new": + return + + try: + im = Image.open(path) + print name + ": " + im.format, im.size, im.mode + if im.mode != "RGBA": + return + width, height = im.size + pix = im.load() + + n_transparent = 0 + + make_opaque = [] + + def add(x, y): + if pix[x, y][3] == 0: + make_opaque.append((x, y)) + + for x in range(0, width): + for y in range(0, height): + if pix[x, y][3] > 0: + if x > 0: + add(x - 1, y) + if x < width - 1: + add(x + 1, y) + if y > 0: + add(x, y - 1) + if y < height - 1: + add(x, y + 1) + else: + n_transparent += 1 + + for coords in make_opaque: + pix[coords] = (0, 0, 0, 1) + + PngSave(im, path) + except: + print "Could not process " + name + +root_dir = os.path.abspath(os.path.join(current_dir, "../../")) +icons_dir = os.path.join(root_dir, "icons") + +def Main(): + if len(sys.argv) != 2: + print "Usage: hitbox_expander.py filename.dmi" + return 0 + + try: + with open(sys.argv[1]): + ProcessFile(os.path.abspath(sys.argv[1])) + return 0 + except IOError: + pass + + for root, subdirs, files in os.walk(icons_dir): + for file in files: + if file == sys.argv[1]: + path = os.path.join(root, file) + ProcessFile(path) + return 0 + + print "File not found: " + sys.argv[1] + +if __name__ == "__main__": + Main() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME b/tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME new file mode 100755 index 00000000000..a3c6295376f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME @@ -0,0 +1,11 @@ +# $Id$ +# quick build (for lazy programmers). for more information on the +# build process, see the README file. + +if [ "$1" = "clean" ]; then + python setup.py clean + rm -f *.so PIL/*.so +fi + +python setup.py build_ext -i +python selftest.py diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES b/tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES new file mode 100755 index 00000000000..b516d32bbd8 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES @@ -0,0 +1,1767 @@ +-*- coding: utf-8 -*- + +The Python Imaging Library +$Id$ + +ACKNOWLEDGEMENTS: PIL wouldn't be what it is without the help of: +David Ascher, Phil Austin, Douglas Bagnall, Larry Bates, Anthony +Baxter, William Baxter, Denis Benoit, Jan Blom, Duncan Booth, Alexey +Borzenkov, Jeff Breidenbach, Roger Burnham, Zac Burns, Gene Cash, +Kevin Cazabon, Fred Clare, Greg Coats, Chris Cogdon, Greg Couch, Bill +Crutchfield, Abel Deuring, Tim Docker, Fred Drake, Graham Dumpleton, +Matthew Ellis, Eric Etheridge, Daniel Fetchinson, Robin Friedrich, +Pier Paolo Glave, Federico Di Gregorio, Markus Gritsch, Daniel +Haertle, Greg Hamilton, Mark Hammond, Bernhard Herzog, Rob Hooft, Bob +Ippolito, Jack Jansen, Bill Janssen, Edward Jones, Richard Jones, +Håkan Karlsson, Robert Kern, David Kirtley, Bob Klimek, Matthias +Klose, Andrew Kuchling, Magnus Källström, Victor Lacina, Ben Last, +Hamish Lawson, Cesare Leonardi, Andrew MacIntyre, Jan Matejek, Naveen +Michaud-Agrawal, Gordon McMillan, Skip Montanaro, Fredrik Nehr, +Russell Nelson, Luciano Nocera, Travis Oliphant, Piet van Oostrum, +Richard Oudkerk, Paul Pharr, Andres Polit, Conrado Porto Lopes Gouvêa, +Eric Raymond, Victor Reijs, Bertil Reinhammar, Nicholas Riley, Don +Rozenberg, Toby Sargeant, Barry Scott, Les Schaffer, Joel Shprentz, +Klamer Shutte, Gene Skonicki, Niki Spahiev, D. Alan Stewart, Perry +Stoll, Paul Svensson, Ulrik Svensson, Miki Tebeka, Michael van +Tellingen, Ivan Tkatchev, Dan Torop, Adam Twardoch, Rune Uhlin, Dmitry +Vasiliev, Sasha Voynow, Charles Waldman, Collin Winter, Dan Wolfe, +Ka-Ping Yee, and many others (if your name should be on this list, let +me know.) + +*** Changes from release 1.1.6 to 1.1.7 *** + +This section may not be fully complete. For changes since this file +was last updated, see the repository revision history: + + http://bitbucket.org/effbot/pil-2009-raclette/changesets/ + +(1.1.7 final) + ++ Set GIF loop info property to the number of iterations if a NETSCAPE + loop extension is present, instead of always setting it to 1 (from + Valentino Volonghi). + +(1.1.7c1 released) + ++ Improved PNG compression (from Alexey Borzenkov). + ++ Read interlaced PNG files (from Conrado Porto Lopes Gouvêa) + ++ Added various TGA improvements from Alexey Borzenkov, including + support for specifying image orientation. + ++ Bumped block threshold to 16 megabytes, made size estimation a bit + more accurate. This speeds up allocation of large images. + ++ Fixed rounding error in ImagingDrawWideLine. + + "gormish" writes: ImagingDrawWideLine() in Draw.c has a bug in every + version I've seen, which leads to different width lines depending on + the order of the points in the line. This is especially bad at some + angles where a 'width=2' line can completely disappear. + ++ Added support for RGBA mode to the SGI module (based on code by + Karsten Hiddemann). + ++ Handle repeated IPTC tags (adapted from a patch by Eric Bruning). + + Eric writes: According to the specification, some IPTC tags can be + repeated, e.g., tag 2:25 (keywords). PIL 1.1.6 only retained the last + instance of that tag. Below is a patch to store all tags. If there are + multiple tag instances, they are stored in a (python) list. Single tag + instances remain as strings. + ++ Fixed potential crash in ImageFilter for small target images + (reported by Zac Burns and Daniel Fetchinson). + ++ Use BMP instead of JPEG as temporary show format on Mac OS X. + ++ Fixed putpixel/new for I;16 with colors > 255. + ++ Added integer power support to ImagingMath. + ++ Added limited support for I;16L mode (explicit little endian). + ++ Moved WMF support into Image.core; enable WMF rendering by default + if renderer is available. + ++ Mark the ARG plugin as obsolete. + ++ Added version query mechanism to ImageCms and ImageFont, for + debugging. + ++ Added (experimental) ImageCms function for fetching the ICC profile + for the current display (currently Windows only). + + Added HWND/HDC support to ImageCms.get_display_profile(). + ++ Added WMF renderer (Windows only). + ++ Added ImagePointHandler and ImageTransformHandler mixins; made + ImageCmsTransform work with im.point. + ++ Fixed potential endless loop in the XVThumbnail reader (from Nikolai + Ugelvik). + ++ Added Kevin Cazabon's pyCMS package. + + The C code has been moved to _imagingcms.c, the Python interface + module is installed as PIL.ImageCMS. + + Added support for in-memory ICC profiles. + + Unified buildTransform and buildTransformFromOpenProfiles. + + The profile can now be either a filename, a profile object, or a + file-like object containing an in-memory profile. + + Additional fixes from Florian Böch: + + Very nice - it just needs LCMS flags support so we can use black + point compensation and softproofing :) See attached patches. They + also fix a naming issue which could cause confusion - display + profile (ImageCms wording) actually means proof profile (lcms + wording), so I changed variable names and docstrings where + applicable. Patches are tested under Python 2.6. + ++ Improved support for layer names in PSD files (from Sylvain Baubeau) + + Sylvain writes: I needed to be able to retrieve the names of the + layers in a PSD files. But PsdImagePlugin.py didn't do the job so I + wrote this very small patch. + ++ Improved RGBA support for ImageTk for 8.4 and newer (from Con + Radchenko). + + This replaces the slow run-length based encoding model with true + compositing at the Tk level. + ++ Added support for 16- and 32-bit images to McIdas loader. + + Based on file samples and stand-alone reader code provided by Craig + Swank. + ++ Added ImagePalette support to putpalette. + ++ Fixed problem with incremental parsing of PNG files. + ++ Make selftest.py report non-zero status on failure (from Mark + Sienkiewicz) + ++ Add big endian save support and multipage infrastructure to the TIFF + writer (from Sebastian Haase). + ++ Handle files with GPS IFD but no basic EXIF IFD (reported by Kurt + Schwehr). + ++ Added zTXT support (from Andrew Kuchling via Lowell Alleman). + ++ Fixed potential infinite loop bug in ImageFont (from Guilherme Polo). + ++ Added sample ICC profiles (from Kevin Cazabon) + ++ Fixed array interface for I, F, and RGBA/RGBX images. + ++ Added Chroma subsampling support for JPEG (from Justin Huff). + + Justin writes: Attached is a patch (against PIL 1.1.6) to provide + control over the chroma subsampling done by the JPEG encoder. This + is often useful for reducing compression artifacts around edges of + clipart and text. + ++ Added USM/Gaussian Blur code from Kevin Cazabon. + ++ Fixed bug w. uninitialized image data when cropping outside the + source image. + ++ Use ImageShow to implement the Image.show method. + + Most notably, this picks the 'display' utility when available. It + also allows application code to register new display utilities via + the ImageShow registry. + ++ Release the GIL in the PNG compressor (from Michael van Tellingen). + ++ Revised JPEG CMYK handling. + + Always assume Adobe behaviour, both when reading and writing (based on + a patch by Kevin Cazabon, and test data by Tim V. and Charlie Clark, and + additional debugging by Michael van Tellingen). + ++ Support for preserving ICC profiles (by Florian Böch via Tim Hatch). + + Florian writes: + + It's a beta, so still needs some testing, but should allow you to: + - retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF. + Existing code doesn't need to be changed. + - access embedded profiles in JPEG, PNG, PSD, TIFF. + + It also includes patches for TIFF to retain IPTC, Photoshop and XMP + metadata when saving as TIFF again, read/write TIFF resolution + information correctly, and to correct inverted CMYK JPEG files. + ++ Fixed potential memory leak in median cut quantizer (from Evgeny Salmin). + ++ Fixed OverflowError when reading upside-down BMP images. + ++ Added resolution save option for PDF files. + + Andreas Kostyrka writes: I've included a patched PdfImagePlugin.py + based on 1.1.6 as included in Ubuntu, that supports a "resolution" + save option. Not great, but it makes the PDF saving more useful by + allowing PDFs that are not exactly 72dpi. + ++ Look for Tcl/Tk include files in version-specific include directory + (from Encolpe Degoute). + ++ Fixed grayscale rounding error in ImageColor.getcolor (from Tim + Hatch). + ++ Fixed calculation of mean value in ImageEnhance.Contrast (reported + by "roop" and Scott David Daniels). + ++ Fixed truetype positioning when first character has a negative left + bearing (from Ned Batchelder): + + Ned writes: In PIL 1.1.6, ImageDraw.text will position the string + incorrectly if the first character has a negative left bearing. To + see the problem, show a string like "///" in an italic font. The + first slash will be clipped at the left, and the string will be + mis-positioned. + ++ Fixed resolution unit bug in tiff reader/writer (based on code by + Florian Höch, Gary Bloom, and others). + ++ Added simple transparency support for RGB images (reported by + Sebastian Spaeth). + ++ Added support for Unicode filenames in ImageFont.truetype (from Donn + Ingle). + ++ Fixed potential crash in ImageFont.getname method (from Donn Ingle). + ++ Fixed encoding issue in PIL/WalImageFile (from Santiago M. Mola). + +*** Changes from release 1.1.5 to 1.1.6 *** + +(1.1.6 released) + ++ Fixed some 64-bit compatibility warnings for Python 2.5. + ++ Added threading support for the Sane driver (from Abel Deuring). + +(1.1.6b2 released) + ++ Added experimental "floodfill" function to the ImageDraw module + (based on code by Eric Raymond). + ++ The default arguments for "frombuffer" doesn't match "fromstring" + and the documentation; this is a bug, and will most likely be fixed + in a future version. In this release, PIL prints a warning message + instead. To silence the warning, change any calls of the form + "frombuffer(mode, size, data)" to + + frombuffer(mode, size, data, "raw", mode, 0, 1) + ++ Added "fromarray" function, which takes an object implementing the + NumPy array interface and creates a PIL Image from it. (from Travis + Oliphant). + ++ Added NumPy array interface support (__array_interface__) to the + Image class (based on code by Travis Oliphant). + + This allows you to easily convert between PIL image memories and + NumPy arrays: + + import numpy, Image + + im = Image.open('lena.jpg') + + a = numpy.asarray(im) # a is readonly + + im = Image.fromarray(a) + ++ Fixed CMYK polarity for JPEG images, by treating all images as + "Adobe CMYK" images. (thanks to Cesare Leonardi and Kevin Cazabon + for samples, debugging, and patches). + +(1.1.6b1 released) + ++ Added 'expand' option to the Image 'rotate' method. If true, the + output image is made large enough to hold the entire rotated image. + ++ Changed the ImageDraw 'line' method to always draw the last pixel in + a polyline, independent of line angle. + ++ Fixed bearing calculation and clipping in the ImageFont truetype + renderer; this could lead to clipped text, or crashes in the low- + level _imagingft module. (based on input from Adam Twardoch and + others). + ++ Added ImageQt wrapper module, for converting PIL Image objects to + QImage objects in an efficient way. + ++ Fixed 'getmodebands' to return the number of bands also for "PA" + and "LA" modes. Added 'getmodebandnames' helper that return the + band names. + +(1.1.6a2 released) + ++ Added float/double support to the TIFF loader (from Russell + Nelson). + ++ Fixed broken use of realloc() in path.c (from Jan Matejek) + ++ Added save support for Spider images (from William Baxter). + ++ Fixed broken 'paste' and 'resize' operations in pildriver + (from Bill Janssen). + ++ Added support for duplex scanning to the Sane interface (Abel + Deuring). + +(1.1.6a1 released) + ++ Fixed a memory leak in "convert(mode)", when converting from + L to P. + ++ Added pixel access object. The "load" method now returns a + access object that can be used to directly get and set pixel + values, using ordinary [x, y] notation: + + pixel = im.load() + v = pixel[x, y] + pixel[x, y] = v + + If you're accessing more than a few pixels, this is a lot + faster than using getpixel/putpixel. + ++ Fixed building on Cygwin (from Miki Tebeka). + ++ Fixed "point(callable)" on unloaded images (reported by Håkan + Karlsson). + ++ Fixed size bug in ImageWin.ImageWindow constructor (from Victor + Reijs) + ++ Fixed ImageMath float() and int() operations for Python 2.4 + (reported by Don Rozenberg). + ++ Fixed "RuntimeError: encoder error -8 in tostring" problem for + wide "RGB", "I", and "F" images. + ++ Fixed line width calculation. + +(1.1.6a0 released) + ++ Fixed byte order issue in Image.paste(ink) (from Ka-Ping Yee). + ++ Fixed off-by-0.5 errors in the ANTIALIAS code (based on input + from Douglas Bagnall). + ++ Added buffer interface support to the Path constructor. If + a buffer is provided, it is assumed to contain a flat array + of float coordinates (e.g. array.array('f', seq)). + ++ Added new ImageMath module. + ++ Fixed ImageOps.equalize when used with a small number of distinct + values (reported by David Kirtley). + ++ Fixed potential integer division in PSDraw.image (from Eric Etheridge). + +*** Changes from release 1.1 to 1.1.5 *** + +(1.1.5c2 and 1.1.5 final released) + ++ Added experimental PERSPECTIVE transform method (from Jeff Breiden- + bach). + +(1.1.5c1 released) + ++ Make sure "thumbnail" never generates zero-wide or zero-high images + (reported by Gene Skonicki) + ++ Fixed a "getcolors" bug that could result in a zero count for some + colors (reported by Richard Oudkerk). + ++ Changed default "convert" palette to avoid "rounding errors" when + round-tripping white source pixels (reported by Henryk Gerlach and + Jeff Epler). + +(1.1.5b3 released) + ++ Don't crash in "quantize" method if the number of colors requested + is larger than 256. This release raises a ValueError exception; + future versions may return a mode "RGB" image instead (reported + by Richard Oudkerk). + ++ Added WBMP read/write support (based on code by Duncan Booth). + +(1.1.5b2 released) + ++ Added DPI read/write support to the PNG codec. The decoder sets + the info["dpi"] attribute for PNG files with appropriate resolution + settings. The encoder uses the "dpi" option (based on code by Niki + Spahiev). + ++ Added limited support for "point" mappings from mode "I" to mode "L". + Only 16-bit values are supported (other values are clipped), the lookup + table must contain exactly 65536 entries, and the mode argument must be + set to "L". + ++ Added support for Mac OS X icns files (based on code by Bob Ippolito). + ++ Added "ModeFilter" support to the ImageFilter module. + ++ Added support for Spider images (from William Baxter). See the + comments in PIL/SpiderImagePlugin.py for more information on this + format. + +(1.1.5b1 released) + ++ Added new Sane release (from Ralph Heinkel). See the Sane/README + and Sane/CHANGES files for more information. + ++ Added experimental PngInfo chunk container to the PngImageFile + module. This can be used to add arbitrary chunks to a PNG file. + Create a PngInfo instance, use "add" or "add_text" to add chunks, + and pass the instance as the "pnginfo" option when saving the + file. + ++ Added "getpalette" method. This returns the palette as a list, + or None if the image has no palette. To modify the palette, use + "getpalette" to fetch the current palette, modify the list, and + put it back using "putpalette". + ++ Added optional flattening to the ImagePath "tolist" method. + tolist() or tolist(0) returns a list of 2-tuples, as before. + tolist(1) returns a flattened list instead. + +(1.1.5a5 released) + ++ Fixed BILINEAR/BICUBIC/ANTIALIAS filtering for mode "LA". + ++ Added "getcolors()" method. This is similar to the existing histo- + gram method, but looks at color values instead of individual layers, + and returns an unsorted list of (count, color) tuples. + + By default, the method returns None if finds more than 256 colors. + If you need to look for more colors, you can pass in a limit (this + is used to allocate internal tables, so you probably don't want to + pass in too large values). + ++ Build improvements: Fixed building under AIX, improved detection of + FreeType2 and Mac OS X framework libraries, and more. Many thanks + to everyone who helped test the new "setup.py" script! + +(1.1.5a4 released) + ++ The "save" method now looks for a file format driver before + creating the file. + ++ Don't use antialiased truetype fonts when drawing in mode "P", "I", + and "F" images. + ++ Rewrote the "setup.py" file. The new version scans for available + support libraries, and configures both the libImaging core library + and the bindings in one step. + + To use specific versions of the libraries, edit the ROOT variables + in the setup.py file. + ++ Removed threaded "show" viewer; use the old "show" implementation + instead (Windows). + ++ Added deprecation warnings to Image.offset, ImageDraw.setink, and + ImageDraw.setfill. + ++ Added width option to ImageDraw.line(). The current implementation + works best for straight lines; it does not support line joins, so + polylines won't look good. + ++ ImageDraw.Draw is now a factory function instead of a class. If + you need to create custom draw classes, inherit from the ImageDraw + class. All other code should use the factory function. + ++ Fixed loading of certain PCX files (problem reported by Greg + Hamilton, who also provided samples). + ++ Changed _imagingft.c to require FreeType 2.1 or newer. The + module can still be built with earlier versions; see comments + in _imagingft.c for details. + +(1.1.5a3 released) + ++ Added 'getim' method, which returns a PyCObject wrapping an + Imaging pointer. The description string is set to IMAGING_MAGIC. + See Imaging.h for pointer and string declarations. + ++ Fixed reading of TIFF JPEG images (problem reported by Ulrik + Svensson). + ++ Made ImageColor work under Python 1.5.2 + ++ Fixed division by zero "equalize" on very small images (from + Douglas Bagnall). + +(1.1.5a2 released) + ++ The "paste" method now supports the alternative "paste(im, mask)" + syntax (in this case, the box defaults to im's bounding box). + ++ The "ImageFile.Parser" class now works also for PNG files with + more than one IDAT block. + ++ Added DPI read/write to the TIFF codec, and fixed writing of + rational values. The decoder sets the info["dpi"] attribute + for TIFF files with appropriate resolution settings. The + encoder uses the "dpi" option. + ++ Disable interlacing for small (or narrow) GIF images, to + work around what appears to be a hard-to-find bug in PIL's + GIF encoder. + ++ Fixed writing of mode "P" PDF images. Made mode "1" PDF + images smaller. + ++ Made the XBM reader a bit more robust; the file may now start + with a few whitespace characters. + ++ Added support for enhanced metafiles to the WMF driver. The + separate PILWMF kit lets you render both placeable WMF files + and EMF files as raster images. See + + http://effbot.org/downloads#pilwmf + +(1.1.5a1 released) + ++ Replaced broken WMF driver with a WMF stub plugin (see below). + ++ Fixed writing of mode "1", "L", and "CMYK" PDF images (based on + input from Nicholas Riley and others). + ++ Fixed adaptive palette conversion for zero-width or zero-height + images (from Chris Cogdon) + ++ Fixed reading of PNG images from QuickTime 6 (from Paul Pharr) + ++ Added support for StubImageFile plugins, including stub plugins + for BUFR, FITS, GRIB, and HDF5 files. A stub plugin can identify + a given file format, but relies on application code to open and + save files in that format. + ++ Added optional "encoding" argument to the ImageFont.truetype + factory. This argument can be used to specify non-Unicode character + maps for fonts that support that. For example, to draw text using + the Microsoft Symbol font, use: + + font = ImageFont.truetype("symbol.ttf", 16, encoding="symb") + draw.text((0, 0), unichr(0xF000 + 0xAA)) + + (note that the symbol font uses characters in the 0xF000-0xF0FF + range) + + Common encodings are "unic" (Unicode), "symb" (Microsoft Symbol), + "ADOB" (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple + Roman). See the FreeType documentation for more information. + ++ Made "putalpha" a bit more robust; you can now attach an alpha + layer to a plain "L" or "RGB" image, and you can also specify + constant alphas instead of alpha layers (using integers or colour + names). + ++ Added experimental "LA" mode support. + + An "LA" image is an "L" image with an attached transparency layer. + Note that support for "LA" is not complete; some operations may + fail or produce unexpected results. + ++ Added "RankFilter", "MinFilter", "MedianFilter", and "MaxFilter" + classes to the ImageFilter module. + ++ Improved support for applications using multiple threads; PIL + now releases the global interpreter lock for many CPU-intensive + operations (based on work by Kevin Cazabon). + ++ Ignore Unicode characters in the PCF loader (from Andres Polit) + ++ Fixed typo in OleFileIO.loadfat, which could affect loading of + FlashPix and Image Composer images (Daniel Haertle) + ++ Fixed building on platforms that have Freetype but don't have + Tcl/Tk (Jack Jansen, Luciano Nocera, Piet van Oostrum and others) + ++ Added EXIF GPSInfo read support for JPEG files. To extract + GPSInfo information, open the file, extract the exif dictionary, + and check for the key 0x8825 (GPSInfo). If present, it contains + a dictionary mapping GPS keys to GPS values. For a list of keys, + see the EXIF specification. + + The "ExifTags" module contains a GPSTAGS dictionary mapping GPS + tags to tag names. + ++ Added DPI read support to the PCX and DCX codecs (info["dpi"]). + ++ The "show" methods now uses a built-in image viewer on Windows. + This viewer creates an instance of the ImageWindow class (see + below) and keeps it running in a separate thread. NOTE: This + was disabled in 1.1.5a4. + ++ Added experimental "Window" and "ImageWindow" classes to the + ImageWin module. These classes allow you to create a WCK-style + toplevel window, and use it to display raster data. + ++ Fixed some Python 1.5.2 issues (to build under 1.5.2, use the + Makefile.pre.in/Setup.in approach) + ++ Added support for the TIFF FillOrder tag. PIL can read mode "1", + "L", "P" and "RGB" images with non-standard FillOrder (based on + input from Jeff Breidenbach). + +(1.1.4 final released) + ++ Fixed ImageTk build problem on Unix. + +(1.1.4b2 released) + ++ Improved building on Mac OS X (from Jack Jansen). + ++ Improved building on Windows with MinGW (from Klamer Shutte). + ++ If no font is specified, ImageDraw now uses the embedded default + font. Use the "load" or "truetype" methods to load a real font. + ++ Added embedded default font to the ImageFont module (currently + an 8-pixel Courier font, taken from the X window distribution). + +(1.1.4b1 released) + ++ Added experimental EXIF support for JPEG files. To extract EXIF + information from a JPEG file, open the file as usual, and call the + "_getexif" method. If successful, this method returns a dictionary + mapping EXIF TIFF tags to values. If the file does not contain EXIF + data, the "_getexif" method returns None. + + The "ExifTags" module contains a dictionary mapping tags to tag + names. + + This interface will most likely change in future versions. + ++ Fixed a bug when using the "transparency" option with the GIF + writer. + ++ Added limited support for "bitfield compression" in BMP files + and DIB buffers, for 15-bit, 16-bit, and 32-bit images. This + also fixes a problem with ImageGrab module when copying screen- + dumps from the clipboard on 15/16/32-bit displays. + ++ Added experimental WAL (Quake 2 textures) loader. To use this + loader, import WalImageFile and call the "open" method in that + module. + +(1.1.4a4 released) + ++ Added updated SANE driver (Andrew Kuchling, Abel Deuring) + ++ Use Python's "mmap" module on non-Windows platforms to read some + uncompressed formats using memory mapping. Also added a "frombuffer" + function that allows you to access the contents of an existing string + or buffer object as if it were an image object. + ++ Fixed a memory leak that could appear when processing mode "P" + images (from Pier Paolo Glave) + ++ Ignore Unicode characters in the BDF loader (from Graham Dumpleton) + +(1.1.4a3 released; windows only) + ++ Added experimental RGBA-on-RGB drawing support. To use RGBA + colours on an RGB image, pass "RGBA" as the second string to + the ImageDraw.Draw constructor. + ++ Added support for non-ASCII strings (Latin-1) and Unicode + to the truetype font renderer. + ++ The ImageWin "Dib" object can now be constructed directly from + an image object. + ++ The ImageWin module now allows you use window handles as well + as device contexts. To use a window handle, wrap the handle in + an ImageWin.HWND object, and pass in this object instead of the + device context. + +(1.1.4a2 released) + ++ Improved support for 16-bit unsigned integer images (mode "I;16"). + This includes TIFF reader support, and support for "getextrema" + and "point" (from Klamer Shutte). + ++ Made the BdfFontFile reader a bit more robust (from Kevin Cazabon + and Dmitry Vasiliev) + ++ Changed TIFF writer to always write Compression tag, even when + using the default compression (from Greg Couch). + ++ Added "show" support for Mac OS X (from Dan Wolfe). + ++ Added clipboard support to the "ImageGrab" module (Windows only). + The "grabclipboard" function returns an Image object, a list of + filenames (not in 1.1.4), or None if neither was found. + +(1.1.4a1 released) + ++ Improved support for drawing RGB data in palette images. You can + now use RGB tuples or colour names (see below) when drawing in a + mode "P" image. The drawing layer automatically assigns color + indexes, as long as you don't use more than 256 unique colours. + ++ Moved self test from MiniTest/test.py to ./selftest.py. + ++ Added support for CSS3-style color strings to most places that + accept colour codes/tuples. This includes the "ImageDraw" module, + the Image "new" function, and the Image "paste" method. + + Colour strings can use one of the following formats: "#f00", + "#ff0000", "rgb(255,0,0)", "rgb(100%,0%,0%)", "hsl(0, 100%, 50%)", + or "red" (most X11-style colour names are supported). See the + documentation for the "ImageColor" module for more information. + ++ Fixed DCX decoder (based on input from Larry Bates) + ++ Added "IptcImagePlugin.getiptcinfo" helper to extract IPTC/NAA + newsphoto properties from JPEG, TIFF, or IPTC files. + ++ Support for TrueType/OpenType fonts has been added to + the standard distribution. You need the freetype 2.0 + library. + ++ Made the PCX reader a bit more robust when reading 2-bit + and 4-bit PCX images with odd image sizes. + ++ Added "Kernel" class to the ImageFilter module. This class + allows you to filter images with user-defined 3x3 and 5x5 + convolution kernels. + ++ Added "putdata" support for mode "I", "F" and "RGB". + ++ The GIF writer now supports the transparency option (from + Denis Benoit). + ++ A HTML version of the module documentation is now shipped + with the source code distribution. You'll find the files in + the Doc subdirectory. + ++ Added support for Palm pixmaps (from Bill Janssen). This + change was listed for 1.1.3, but the "PalmImagePlugin" driver + didn't make it into the distribution. + ++ Improved decoder error messages. + +(1.1.3 final released) + ++ Made setup.py look for old versions of zlib. For some back- + ground, see: http://www.gzip.org/zlib/advisory-2002-03-11.txt + +(1.1.3c2 released) + ++ Added setup.py file (tested on Unix and Windows). You still + need to build libImaging/imaging.lib in the traditional way, + but the setup.py script takes care of the rest. + + The old Setup.in/Makefile.pre.in build method is still + supported. + ++ Fixed segmentation violation in ANTIALIAS filter (an internal + buffer wasn't properly allocated). + +(1.1.3c1 released) + ++ Added ANTIALIAS downsampling filter for high-quality "resize" + and "thumbnail" operations. Also added filter option to the + "thumbnail" operation; the default value is NEAREST, but this + will most likely change in future versions. + ++ Fixed plugin loader to be more robust if the __file__ + variable isn't set. + ++ Added seek/tell support (for layers) to the PhotoShop + loader. Layer 0 is the main image. + ++ Added new (but experimental) "ImageOps" module, which provides + shortcuts for commonly used operations on entire images. + ++ Don't mess up when loading PNG images if the decoder leaves + data in the output buffer. This could cause internal errors + on some PNG images, with some versions of ZLIB. (Bug report + and patch provided by Bernhard Herzog.) + ++ Don't mess up on Unicode filenames. + ++ Don't mess up when drawing on big endian platforms. + ++ Made the TIFF loader a bit more robust; it can now read some + more slightly broken TIFF files (based on input from Ted Wright, + Bob Klimek, and D. Alan Stewart) + ++ Added OS/2 EMX build files (from Andrew MacIntyre) + ++ Change "ImageFont" to reject image files if they don't have the + right mode. Older versions could leak memory for "P" images. + (Bug reported by Markus Gritsch). + ++ Renamed some internal functions to avoid potential build + problem on Mac OS X. + ++ Added DL_EXPORT where relevant (for Cygwin, based on input + from Robert Yodlowski) + ++ (re)moved bogus __init__ call in BdfFontFile (bug spotted + by Fred Clare) + ++ Added "ImageGrab" support (Windows only) + ++ Added support for XBM hotspots (based on code contributed by + Bernhard Herzog). + ++ Added write support for more TIFF tags, namely the Artist, + Copyright, DateTime, ResolutionUnit, Software, XResolution and + YResolution tags (from Greg Couch) + ++ Added TransposedFont wrapper to ImageFont module + ++ Added "optimize" flag to GIF encoder. If optimize is present + and non-zero, PIL will work harder to create a small file. + ++ Raise "EOFError" (not IndexError) when reading beyond the + end of a TIFF sequence. + ++ Support rewind ("seek(0)") for GIF and TIFF sequences. + ++ Load grayscale GIF images as mode "L" + ++ Added DPI read/write support to the JPEG codec. The decoder + sets the info["dpi"] attribute for JPEG files with JFIF dpi + settings. The encoder uses the "dpi" option: + + im = Image.open("file.jpg") + dpi = im.info["dpi"] # raises KeyError if DPI not known + im.save("out.jpg", dpi=dpi) + + Note that PIL doesn't always preserve the "info" attribute + for normal image operations. + +(1.1.2c1 and 1.1.2 final released) + ++ Adapted to Python 2.1. Among other things, all uses of the + "regex" module has been repleased with "re". + ++ Fixed attribute error when reading large PNG files (this bug + was introduced in maintenance code released after the 1.1.1 + release) + ++ Ignore non-string objects in sys.path + ++ Fixed Image.transform(EXTENT) for negative xoffsets + ++ Fixed loading of image plugins if PIL is installed as a package. + (The plugin loader now always looks in the directory where the + Image.py module itself is found, even if that directory isn't on + the standard search path) + ++ The Png plugin has been added to the list of preloaded standard + formats + ++ Fixed bitmap/text drawing in fill mode. + ++ Fixed "getextrema" to work also for multiband images. + ++ Added transparency support for L and P images to the PNG codec. + ++ Improved support for read-only images. The "load" method now + sets the "readonly" attribute for memory-mapped images. Operations + that modifies an image in place (such as "paste" and drawing operations) + creates an in-memory copy of the image, if necessary. (before this + change, any attempt to modify a memory-mapped image resulted in a + core dump...) + ++ Added special cases for lists everywhere PIL expects a sequence. + This should speed up things like "putdata" and drawing operations. + ++ The Image.offset method is deprecated. Use the ImageChops.offset + function instead. + ++ Changed ImageChops operators to copy palette and info dictionary + from the first image argument. + +(1.1.1 released) + ++ Additional fixes for Python 1.6/2.0, including TIFF "save" bug. + ++ Changed "init" to properly load plugins when PIL is used as a + package. + ++ Fixed broken "show" method (on Unix) + +*** Changes from release 1.0 to 1.1 *** + ++ Adapted to Python 1.6 ("append" and other method changes) + ++ Fixed Image.paste when pasting with solid colour and matte + layers ("L" or "RGBA" masks) (bug reported by Robert Kern) + ++ To make it easier to distribute prebuilt versions of PIL, + the tkinit binding stuff has been moved to a separate + extension module, named "_imagingtk". + +*** Changes from release 0.3b2 to 1.0 final *** + ++ If there's no 16-bit integer (like on a Cray T3E), set + INT16 to the smallest integer available. Most of the + library works just fine anyway (from Bill Crutchfield) + ++ Tweaks to make drawing work on big-endian platforms. + +(1.0c2 released) + ++ If PIL is built with the WITH_TKINTER flag, ImageTk can + automatically hook into a standard Tkinter build. You + no longer need to build your own Tkinter to use the + ImageTk module. + + The old way still works, though. For more information, + see Tk/install.txt. + ++ Some tweaks to ImageTk to support multiple Tk interpreters + (from Greg Couch). + ++ ImageFont "load_path" now scans directory mentioned in .pth + files (from Richard Jones). + +(1.0c1 released) + ++ The TIFF plugin has been rewritten. The new plugin fully + supports all major PIL image modes (including F and I). + ++ The ImageFile module now includes a Parser class, which can + be used to incrementally decode an image file (while down- + loading it from the net, for example). See the handbook for + details. + ++ "show" now converts non-standard modes to "L" or "RGB" (as + appropriate), rather than writing weird things to disk for + "xv" to choke upon. (bug reported by Les Schaffer). + +(1.0b2 released) + ++ Major speedups for rotate, transform(EXTENT), and transform(AFFINE) + when using nearest neighbour resampling. + ++ Modified ImageDraw to be compatible with the Arrow graphics + interface. See the handbook for details. + ++ PIL now automatically loads file codecs when used as a package + (from The Dragon De Monsyne). Also included an __init__.py file + in the standard distribution. + ++ The GIF encoder has been modified to produce much smaller files. + + PIL now uses a run-length encoding method to encode GIF files. + On a random selection of GIF images grabbed from the web, this + version makes the images about twice as large as the original + LZW files, where the earlier version made them over 5 times + larger. YMMV, of course. + ++ Added PCX write support (works with "1", "P", "L", and "RGB") + ++ Added "bitmap" and "textsize" methods to ImageDraw. + ++ Improved font rendering code. Fixed a bug or two, and moved + most of the time critical stuff to C. + ++ Removed "bdf2pil.py". Use "pilfont.py" instead! + ++ Improved 16-bit support (still experimental, though). + + The following methods now support "I;16" and "I;16B" images: + "getpixel", "copy", "convert" (to and from mode "I"), "resize", + "rotate", and "transform" with nearest neighbour filters, and + "save" using the IM format. The "new" and "open" functions + also work as expected. On Windows, 16-bit files are memory + mapped. + + NOTE: ALL other operations are still UNDEFINED on 16-bit images. + ++ The "paste" method now supports constant sources. + + Just pass a colour value (a number or a tuple, depending on + the target image mode) instead of the source image. + + This was in fact implemented in an inefficient way in + earlier versions (the "paste" method generated a temporary + source image if you passed it a colour instead of an image). + In this version, this is handled on the C level instead. + ++ Added experimental "RGBa" mode support. + + An "RGBa" image is an RGBA image where the colour components + have have been premultipled with the alpha value. PIL allows + you to convert an RGBA image to an RGBa image, and to paste + RGBa images on top of RGB images. Since this saves a bunch + of multiplications and shifts, it is typically about twice + as fast an ordinary RGBA paste. + ++ Eliminated extra conversion step when pasting "RGBA" or "RGBa" + images on top of "RGB" images. + ++ Fixed Image.BICUBIC resampling for "RGB" images. + ++ Fixed PCX image file handler to properly read 8-bit PCX + files (bug introduced in 1.0b1, reported by Bernhard + Herzog) + ++ Fixed PSDraw "image" method to restore the coordinate + system. + ++ Fixed "blend" problem when applied to images that was + not already loaded (reported by Edward C. Jones) + ++ Fixed -f option to "pilconvert.py" (from Anthony Baxter) + +(1.0b1 released) + ++ Added Toby J. Sargeant's quantization package. To enable + quantization, use the "palette" option to "convert": + + imOut = im.convert("P", palette=Image.ADAPTIVE) + + This can be used with "L", "P", and "RGB" images. In this + version, dithering cannot be used with adaptive palettes. + + Note: ADAPTIVE currently maps to median cut quantization + with 256 colours. The quantization package also contains + a maximum coverage quantizer, which will be supported by + future versions of PIL. + ++ Added Eric S. Raymond's "pildriver" image calculator to the + distribution. See the docstring for more information. + ++ The "offset" method no longer dumps core if given positive + offsets (from Charles Waldman). + ++ Fixed a resource leak that could cause ImageWin to run out of + GDI resources (from Roger Burnham). + ++ Added "arc", "chord", and "pieslice" methods to ImageDraw (inspired + by code contributed by Richard Jones). + ++ Added experimental 16-bit support, via modes "I;16" (little endian + data) and "I;16B" (big endian). Only a few methods properly support + such images (see above). + ++ Added XV thumbnail file handler (from Gene Cash). + ++ Fixed BMP image file handler to handle palette images with small + palettes (from Rob Hooft). + ++ Fixed Sun raster file handler for palette images (from Charles + Waldman). + ++ Improved various internal error messages. + ++ Fixed Path constructor to handle arbitrary sequence objects. This + also affects the ImageDraw class (from Richard Jones). + ++ Fixed a bug in JpegDecode that caused PIL to report "decoder error + -2" for some progressive JPEG files (reported by Magnus Källström, + who also provided samples). + ++ Fixed a bug in JpegImagePlugin that caused PIL to hang when loading + JPEG files using 16-bit quantization tables. + ++ The Image "transform" method now supports Image.QUAD transforms. + The data argument is an 8-tuple giving the upper left, lower + left, lower right, and upper right corner of the source quadri- + lateral. Also added Image.MESH transform which takes a list + of quadrilaterals. + ++ The Image "resize", "rotate", and "transform" methods now support + Image.BILINEAR (2x2) and Image.BICUBIC (4x4) resampling filters. + Filters can be used with all transform methods. + ++ The ImageDraw "rectangle" method now includes both the right + and the bottom edges when drawing filled rectangles. + ++ The TGA decoder now works properly for runlength encoded images + which have more than one byte per pixel. + ++ "getbands" on an YCbCr image now returns ("Y", "Cb", "Cr") + ++ Some file drivers didn't handle the optional "modify" argument + to the load method. This resulted in exceptions when you used + "paste" (and other methods that modify an image in place) on a + newly opened file. + +*** Changes from release 0.2 (b5) to 0.3 (b2) *** + +(0.3b2 released) + +The test suite includes 825 individual tests. + ++ An Image "getbands" method has been added. It returns a tuple + containing the individual band names for this image. To figure + out how many bands an image has, use "len(im.getbands())". + ++ An Image "putpixel" method has been added. + ++ The Image "point" method can now be used to convert "L" images + to any other format, via a lookup table. That table should + contain 256 values for each band in the output image. + ++ Some file drivers (including FLI/FLC, GIF, and IM) accidently + overwrote the offset method with an internal attribute. All + drivers have been updated to use private attributes where + possible. + ++ The Image "histogram" method now works for "I" and "F" images. + For these modes, PIL divides the range between the min and + max values used in the image into 256 bins. You can also + pass in your own min and max values via the "extrema" option: + + h = im.histogram(extrema=(0, 255)) + ++ An Image "getextrema" method has been added. It returns the + min and max values used in the image. In this release, this + works for single band images only. + ++ Changed the PNG driver to load and save mode "I" images as + 16-bit images. When saving, values outside the range 0..65535 + are clipped. + ++ Fixed ImageFont.py to work with the new "pilfont" compiler. + ++ Added JPEG "save" and "draft" support for mode "YCbCr" images. + Note that if you save an "YCbCr" image as a JPEG file and read + it back, it is read as an RGB file. To get around this, you + can use the "draft" method: + + im = Image.open("color.jpg") + im.draft("YCbCr", im.size) + ++ Read "RGBA" TGA images. Also fixed the orientation bug; all + images should now come out the right way. + ++ Changed mode name (and internal representation) from "YCrCb" + to "YCbCr" (!) + *** WARNING: MAY BREAK EXISTING CODE *** + +(0.3b1 released) + +The test suite includes 750 individual tests. + ++ The "pilfont" package is now included in the standard PIL + distribution. The pilfont utility can be used to convert + X BDF and PCF raster font files to a format understood by + the ImageFont module. + ++ GIF files are now interlaced by default. To write a + non-interlaced file, pass interlace=0 to the "save" + method. + ++ The default string format has changed for the "fromstring" + and "tostring" methods. + *** WARNING: MAY BREAK EXISTING CODE *** + + NOTE: If no extra arguments are given, the first line in + the string buffer is the top line of the image, instead of + the bottom line. For RGB images, the string now contains + 3 bytes per pixel instead of 4. These changes were made + to make the methods compatible with the "fromstring" + factory function. + + To get the old behaviour, use the following syntax: + + data = im.tostring("raw", "RGBX", 0, -1) + im.fromstring(data, "raw", "RGBX", 0, -1) + ++ "new" no longer gives a MemoryError if the width or height + is zero (this only happened on platforms where malloc(0) + or calloc(0) returns NULL). + ++ "new" now adds a default palette object to "P" images. + ++ You can now convert directly between all modes supported by + PIL. When converting colour images to "P", PIL defaults to + a "web" palette and dithering. When converting greyscale + images to "1", PIL uses a thresholding and dithering. + ++ Added a "dither" option to "convert". By default, "convert" + uses floyd-steinberg error diffusion for "P" and "1" targets, + so this option is only used to *disable* dithering. Allowed + values are NONE (no dithering) or FLOYDSTEINBERG (default). + + imOut = im.convert("P", dither=Image.NONE) + ++ Added a full set of "I" decoders. You can use "fromstring" + (and file decoders) to read any standard integer type as an + "I" image. + ++ Added some support for "YCbCr" images (creation, conversion + from/to "L" and "RGB", IM YCC load/save) + ++ "getpixel" now works properly with fractional coordinates. + ++ ImageDraw "setink" now works with "I", "F", "RGB", "RGBA", + "RGBX", "CMYK", and "YCbCr" images. + ++ ImImagePlugin no longer attaches palettes to "RGB" images. + ++ Various minor fixes. + +(0.3a4 released) + ++ Added experimental IPTC/NAA support. + ++ Eliminated AttributeError exceptions after "crop" (from + Skip Montanaro) + ++ Reads some uncompressed formats via memory mapping (this + is currently supported on Win32 only) + ++ Fixed some last minute glitches in the last alpha release + (Types instead of types in Image.py, version numbers, etc.) + ++ Eliminated some more bogus compiler warnings. + ++ Various fixes to make PIL compile and run smoother on Macs + (from Jack Jansen). + ++ Fixed "fromstring" and "tostring" for mode "I" images. + +(0.3a3 released) + +The test suite includes 530 individual tests. + ++ Eliminated unexpected side-effect in "paste" with matte. "paste" + now works properly also if compiled with "gcc". + ++ Adapted to Python 1.5 (build issues only) + ++ Fixed the ImageDraw "point" method to draw also the last + point (!). + ++ Added "I" and "RGBX" support to Image.new. + ++ The plugin path is now properly prepended to the module search + path when a plugin module is imported. + ++ Added "draw" method to the ImageWin.Dib class. This is used by + Topaz to print images on Windows printers. + ++ "convert" now supports conversions from "P" to "1" and "F". + ++ "paste" can now take a colour instead of an image as the first argument. + The colour must match the colour argument given to the new function, and + match the mode of the target image. + ++ Fixed "paste" to allow a mask also for mode "F" images. + ++ The BMP driver now saves mode "1" images. When loading images, the mode + is set to "L" for 8-bit files with greyscale palettes, and to "P" for + other 8-bit files. + ++ The IM driver now reads and saves "1" images (file modes "0 1" or "L 1"). + ++ The JPEG and GIF drivers now saves "1" images. For JPEG, the image + is saved as 8-bit greyscale (it will load as mode "L"). For GIF, the + image will be loaded as a "P" image. + ++ Fixed a potential buffer overrun in the GIF encoder. + +(0.3a2 released) + +The test suite includes 400 individual tests. + ++ Improvements to the test suite revealed a number of minor bugs, which + are all fixed. Note that crop/paste, 32-bit ImageDraw, and ImageFont + are still weak spots in this release. + ++ Added "putpalette" method to the Image class. You can use this + to add or modify the palette for "P" and "L" images. If a palette + is added to an "L" image, it is automatically converted to a "P" + image. + ++ Fixed ImageDraw to properly handle 32-bit image memories + ("RGB", "RGBA", "CMYK", "F") + ++ Fixed "fromstring" and "tostring" not to mess up the mode attribute + in default mode. + ++ Changed ImPlatform.h to work on CRAY's (don't have one at home, so I + haven't tried it). The previous version assumed that either "short" + or "int" were 16-bit wide. PIL still won't compile on platforms where + neither "short", "int" nor "long" are 32-bit wide. + ++ Added file= and data= keyword arguments to PhotoImage and BitmapImage. + This allows you to use them as drop-in replacements for the corre- + sponding Tkinter classes. + ++ Removed bogus references to the crack coder (ImagingCrack). + +(0.3a1 released) + ++ Make sure image is loaded in "tostring". + ++ Added floating point packer (native 32-bit floats only). + +*** Changes from release 0.1b1 to 0.2 (b5) *** + ++ Modified "fromstring" and "tostring" methods to use file codecs. + Also added "fromstring" factory method to create an image directly + from data in a string. + ++ Added support for 32-bit floating point images (mode "F"). You + can convert between "L" and "F" images, and apply a subset of the + available image processing methods on the "F" image. You can also + read virtually any data format into a floating point image memory; + see the section on "Decoding Floating Point Data" in the handbook + for more information. + +(0.2b5 released; on windows only) + ++ Fixed the tobitmap() method to work properly for small bitmaps. + ++ Added RMS and standard deviation to the ImageStat.Stat class. Also + modified the constructor to take an optional feature mask, and also + to accept either an image or a list containing the histogram data. + ++ The BitmapImage code in ImageTk can now use a special bitmap + decoder, which has to be patched into Tk. See the "Tk/pilbitmap.txt" + file for details. If not installed, bitmaps are transferred to Tk as + XBM strings. + ++ The PhotoImage code in ImageTk now uses a Tcl command ("PyImagingPaste") + instead of a special image type. This gives somewhat better performance, + and also allows PIL to support transparency. + *** WARNING: TKAPPINIT MUST BE MODIFIED *** + ++ ImageTk now honours the alpha layer in RGBA images. Only fully + transparent pixels are made transparent (that is, the alpha layer + is treated as a mask). To treat the alpha laters as a matte, you + must paste the image on the background before handing it over to + ImageTk. + ++ Added McIdas reader (supports 8-bit images only). + ++ PIL now preloads drivers for BMP, GIF, JPEG, PPM, and TIFF. As + long as you only load and save these formats, you don't have to + wait for a full scan for drivers. To force scanning, call the + Image.init() function. + ++ The "seek" and "tell" methods are now always available, also for + single-frame images. + ++ Added optional mask argument to histogram method. The mask may + be an "1" or "L" image with the same size as the original image. + Only pixels where the mask is non-zero are included in the + histogram. + ++ The "paste" method now allows you to specify only the lower left + corner (a 2-tuple), instead of the full region (a 4-tuple). + ++ Reverted to old plugin scanning model; now scans all directory + names in the path when looking for plugins. + ++ Added PIXAR raster support. Only uncompressed ("dumped") RGB + images can currently be read (based on information provided + by Greg Coats). + ++ Added FlashPix (FPX) read support. Reads all pixel formats, but + only the highest resolution is read, and the viewing transform is + currently ignored. + ++ Made PNG encoding somewhat more efficient in "optimize" mode; a + bug in 0.2b4 didn't enable all predictor filters when optimized + storage were requested. + ++ Added Microsoft Image Composer (MIC) read support. When opened, + the first sprite in the file is loaded. You can use the seek method + to load additional sprites from the file. + ++ Properly reads "P" and "CMYK" PSD images. + ++ "pilconvert" no longer optimizes by default; use the -o option to + make the file as small as possible (at the expense of speed); use + the -q option to set the quality when compressing to JPEG. + ++ Fixed "crop" not to drop the palette for "P" images. + ++ Added and verified FLC support. + ++ Paste with "L" or "RGBA" alpha is now several times faster on most + platforms. + ++ Changed Image.new() to initialize the image to black, as described + in the handbook. To get an uninitialized image, use None as the + colour. + ++ Fixed the PDF encoder to produce a valid header; Acrobat no longer + complains when you load PDF images created by PIL. + ++ PIL only scans fully-qualified directory names in the path when + looking for plugins. + *** WARNING: MAY BREAK EXISTING CODE *** + ++ Faster implementation of "save" used when filename is given, + or when file object has "fileno" and "flush" methods. + ++ Don't crash in "crop" if region extends outside the source image. + ++ Eliminated a massive memory leak in the "save" function. + ++ The GIF decoder doesn't crash if the code size is set to an illegal + value. This could happen since another bug didn't handle local + palettes properly if they didn't have the same size as the + global palette (not very common). + ++ Added predictor support (TIFF 6.0 section 14) to the TIFF decoder. + ++ Fixed palette and padding problems in BMP driver. Now properly + writes "1", "L", "P" and "RGB" images. + ++ Fixed getpixel()/getdata() to return correct pixel values. + ++ Added PSD (PhotoShop) read support. Reads both uncompressed + and compressed images of most types. + ++ Added GIF write support (writes "uncompressed" GIF files only, + due to unresolvable licensing issues). The "gifmaker.py" script + can be used to create GIF animations. + ++ Reads 8-bit "L" and "P" TGA images. Also reads 16-bit "RGB" + images. + ++ Added FLI read support. This driver has only been tested + on a few FLI samples. + ++ Reads 2-bit and 4-bit PCX images. + ++ Added MSP read and write support. Both version 1 and 2 can be + read, but only version 1 (uncompressed) files are written. + ++ Fixed a bug in the FLI/FLC identification code that caused the + driver to raise an exception when parsing valid FLI/FLC files. + ++ Improved performance when loading file format plugins, and when + opening files. + ++ Added GIF animation support, via the "seek" and "tell" methods. + You can use "player.py" to play an animated GIF file. + ++ Removed MNG support, since the spec is changing faster than I + can change the code. I've added support for the experimental + ARG format instead. Contact me for more information on this + format. + ++ Added keyword options to the "save" method. The following options + are currently supported: + + format option description + -------------------------------------------------------- + JPEG optimize minimize output file at the + expense of compression speed. + + JPEG progressive enable progressive output. the + option value is ignored. + + JPEG quality set compression quality (1-100). + the default value is 75. + + JPEG smooth smooth dithered images. value + is strengh (1-100). default is + off (0). + + PNG optimize minimize output file at the + expense of compression speed. + + Expect more options in future releases. Also note that + file writers silently ignore unknown options. + ++ Plugged memory leaks in the PNG and TIFF decoders. + ++ Added PNG write support. + ++ (internal) RGB unpackers and converters now set the pad byte + to 255 (full opacity). + ++ Properly handles the "transparency" property for GIF, PNG + and XPM files. + ++ Added a "putalpha" method, allowing you to attach a "1" or "L" + image as the alpha layer to an "RGBA" image. + ++ Various improvements to the sample scripts: + + "pilconvert" Carries out some extra tricks in order to make + the resulting file as small as possible. + + "explode" (NEW) Split an image sequence into individual frames. + + "gifmaker" (NEW) Convert a sequence file into a GIF animation. + Note that the GIF encoder create "uncompressed" GIF + files, so animations created by this script are + rather large (typically 2-5 times the compressed + sizes). + + "image2py" (NEW) Convert a single image to a python module. See + comments in this script for details. + + "player" If multiple images are given on the command line, + they are interpreted as frames in a sequence. The + script assumes that they all have the same size. + Also note that this script now can play FLI/FLC + and GIF animations. + + This player can also execute embedded Python + animation applets (ARG format only). + + "viewer" Transparent images ("P" with transparency property, + and "RGBA") are superimposed on the standard Tk back- + ground. + ++ Fixed colour argument to "new". For multilayer images, pass a + tuple: (Red, Green, Blue), (Red, Green, Blue, Alpha), or (Cyan, + Magenta, Yellow, Black). + ++ Added XPM (X pixmap) read support. + +(0.2b3 released) + ++ Added MNG (multi-image network graphics) read support. "Ming" + is a proposed animation standard, based on the PNG file format. + + You can use the "player" sample script to display some flavours + of this format. The MNG standard is still under development, + as is this driver. More information, including sample files, + can be found at + ++ Added a "verify" method to images loaded from file. This method + scans the file for errors, without actually decoding the image + data, and raises a suitable exception if it finds any problems. + Currently implemented for PNG and MNG files only. + ++ Added support for interlaced GIF images. + ++ Added PNG read support -- if linked with the ZLIB compression library, + PIL reads all kinds of PNG images, except interlaced files. + ++ Improved PNG identification support -- doesn't mess up on unknown + chunks, identifies all possible PNG modes, and verifies checksum + on PNG header chunks. + ++ Added an experimental reader for placable Windows Meta Files (WMF). + This reader is still very incomplete, but it illustrates how PIL's + drawing capabilities can be used to render vector and metafile + formats. + ++ Added restricted drivers for images from Image Tools (greyscale + only) and LabEye/IFUNC (common interchange modes only). + ++ Some minor improvements to the sample scripts provided in the + "Scripts" directory. + ++ The test images have been moved to the "Images" directory. + +(0.2b2 released) +(0.2b1 released; Windows only) + ++ Fixed filling of complex polygons. The ImageDraw "line" and + "polygon" methods also accept Path objects. + ++ The ImageTk "PhotoImage" object can now be constructed directly + from an image. You can also pass the object itself to Tkinter, + instead of using the "image" attribute. Finally, using "paste" + on a displayed image automatically updates the display. + ++ The ImageTk "BitmapImage" object allows you to create transparent + overlays from 1-bit images. You can pass the object itself to + Tkinter. The constructor takes the same arguments as the Tkinter + BitmapImage class; use the "foreground" option to set the colour + of the overlay. + ++ Added a "putdata" method to the Image class. This can be used to + load a 1-layer image with data from a sequence object or a string. + An optional floating point scale and offset can be used to adjust + the data to fit into the 8-bit pixel range. Also see the "getdata" + method. + ++ Added the EXTENT method to the Image "transform" method. This can + be used to quickly crop, stretch, shrink, or mirror a subregion + from another image. + ++ Adapted to Python 1.4. + ++ Added a project makefile for Visual C++ 4.x. This allows you to + easily build a dynamically linked version of PIL for Windows 95 + and NT. + ++ A Tk "booster" patch for Windows is available. It gives dramatic + performance improvements for some displays. Has been tested with + Tk 4.2 only, but is likely to work with Tk 4.1 as well. See the Tk + subdirectory for details. + ++ You can now save 1-bit images in the XBM format. In addition, the + Image class now provides a "tobitmap" method which returns a string + containing an XBM representation of the image. Quite handy to use + with Tk. + ++ More conversions, including "RGB" to "1" and more. + +(0.2a1 released) + ++ Where earlier versions accepted lists, this version accepts arbitrary + Python sequences (including strings, in some cases). A few resource + leaks were plugged in the process. + ++ The Image "paste" method now allows the box to extend outside + the target image. The size of the box, the image to be pasted, + and the optional mask must still match. + ++ The ImageDraw module now supports filled polygons, outlined and + filled ellipses, and text. Font support is rudimentary, though. + ++ The Image "point" method now takes an optional mode argument, + allowing you to convert the image while translating it. Currently, + this can only be used to convert "L" or "P" images to "1" images + (creating thresholded images or "matte" masks). + ++ An Image "getpixel" method has been added. For single band images, + it returns the pixel value at a given position as an integer. + For n-band images, it returns an n-tuple of integers. + ++ An Image "getdata" method has been added. It returns a sequence + object representing the image as a 1-dimensional array. Only len() + and [] can be used with this sequence. This method returns a + reference to the existing image data, so changes in the image + will be immediately reflected in the sequence object. + ++ Fixed alignment problems in the Windows BMP writer. + ++ If converting an "RGB" image to "RGB" or "L", you can give a second + argument containing a colour conversion matrix. + ++ An Image "getbbox" method has been added. It returns the bounding + box of data in an image, considering the value 0 as background. + ++ An Image "offset" method has been added. It returns a new image + where the contents of the image have been offset the given distance + in X and/or Y direction. Data wraps between edges. + ++ Saves PDF images. The driver creates a binary PDF 1.1 files, using + JPEG compression for "L", "RGB", and "CMYK" images, and hex encoding + (same as for PostScript) for other formats. + ++ The "paste" method now accepts "1" masks. Zero means transparent, + any other pixel value means opaque. This is faster than using an + "L" transparency mask. + ++ Properly writes EPS files (and properly prints images to postscript + printers as well). + ++ Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR + files. Cursor animations are not supported. + ++ Fixed alignment problems in the Sun raster loader. + ++ Added "draft" and "thumbnail" methods. The draft method is used + to optimize loading of JPEG and PCD files, the thumbnail method is + used to create a thumbnail representation of an image. + ++ Added Windows display support, via the ImageWin class (see the + handbook for details). + ++ Added raster conversion for EPS files. This requires GNU or Aladdin + Ghostscript, and probably works on UNIX only. + ++ Reads PhotoCD (PCD) images. The base resolution (768x512) can be + read from a PhotoCD file. + ++ Eliminated some compiler warnings. Bindings now compile cleanly in C++ + mode. Note that the Imaging library itself must be compiled in C mode. + ++ Added "bdf2pil.py", which converts BDF fonts into images with associated + metrics. This is definitely work in progress. For info, see description + in script for details. + ++ Fixed a bug in the "ImageEnhance.py" module. + ++ Fixed a bug in the netpbm save hack in "GifImagePlugin.py" + ++ Fixed 90 and 270 degree rotation of rectangular images. + ++ Properly reads 8-bit TIFF palette-color images. + ++ Reads plane separated RGB and CMYK TIFF images. + ++ Added driver debug mode. This is enabled by setting Image.DEBUG + to a non-zero value. Try the -D option to "pilfile.py" and see what + happens. + ++ Don't crash on "atend" constructs in PostScript files. + ++ Only the Image module imports _imaging directly. Other modules + should refer to the binding module as "Image.core". + +*** Changes from release 0.0 to 0.1 (b1) *** + ++ A handbook is available (distributed separately). + ++ The coordinate system is changed so that (0,0) is now located + in the upper left corner. This is in compliancy with ISO 12087 + and 90% of all other image processing and graphics libraries. + ++ Modes "1" (bilevel) and "P" (palette) have been introduced. Note + that bilevel images are stored with one byte per pixel. + ++ The Image "crop" and "paste" methods now accepts None as the + box argument, to refer to the full image (self, that is). + ++ The Image "crop" method now works properly. + ++ The Image "point" method is now available. You can use either a + lookup table or a function taking one argument. + ++ The Image join function has been renamed to "merge". + ++ An Image "composite" function has been added. It is identical + to copy() followed by paste(mask). + ++ An Image "eval" function has been added. It is currently identical + to point(function); that is, only a single image can be processed. + ++ A set of channel operations has been added. See the "ImageChops" + module, test_chops.py, and the handbook for details. + ++ Added the "pilconvert" utility, which converts image files. Note + that the number of output formats are still quite restricted. + ++ Added the "pilfile" utility, which quickly identifies image files + (without loading them, in most cases). + ++ Added the "pilprint" utility, which prints image files to Postscript + printers. + ++ Added a rudimentary version of the "pilview" utility, which is + simple image viewer based on Tk. Only File/Exit and Image/Next + works properly. + ++ An interface to Tk has been added. See "Lib/ImageTk.py" and README + for details. + ++ An interface to Jack Jansen's Img library has been added (thanks to + Jack). This allows you to read images through the Img extensions file + format handlers. See the file "Lib/ImgExtImagePlugin.py" for details. + ++ Postscript printing is provided through the PSDraw module. See the + handbook for details. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS b/tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS new file mode 100755 index 00000000000..8846fb94547 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS @@ -0,0 +1,299 @@ +Imaging/README + +Imaging/CHANGES + +Imaging/CONTENTS +Imaging/MANIFEST + +Imaging/BUILDME + +Imaging/setup.py + +Imaging/selftest.py +Imaging/doctest.py + +Imaging/libImaging/Imaging.h +Imaging/libImaging/ImDib.h +Imaging/libImaging/ImPlatform.h + +Imaging/libImaging/Quant.h +Imaging/libImaging/QuantHash.h +Imaging/libImaging/QuantHeap.h +Imaging/libImaging/QuantDefines.h +Imaging/libImaging/QuantTypes.h + +Imaging/libImaging/Access.c +Imaging/libImaging/Antialias.c +Imaging/libImaging/Bands.c +Imaging/libImaging/Blend.c +Imaging/libImaging/Chops.c +Imaging/libImaging/Convert.c +Imaging/libImaging/ConvertYCbCr.c +Imaging/libImaging/Copy.c +Imaging/libImaging/Crc32.c +Imaging/libImaging/Crop.c +Imaging/libImaging/Dib.c +Imaging/libImaging/Draw.c +Imaging/libImaging/Effects.c +Imaging/libImaging/Except.c +Imaging/libImaging/File.c +Imaging/libImaging/Fill.c +Imaging/libImaging/Filter.c +Imaging/libImaging/Geometry.c +Imaging/libImaging/GetBBox.c +Imaging/libImaging/Histo.c +Imaging/libImaging/Matrix.c +Imaging/libImaging/ModeFilter.c +Imaging/libImaging/Negative.c +Imaging/libImaging/Offset.c +Imaging/libImaging/Pack.c +Imaging/libImaging/Palette.c +Imaging/libImaging/Paste.c +Imaging/libImaging/Point.c +Imaging/libImaging/Quant.c +Imaging/libImaging/QuantHash.c +Imaging/libImaging/QuantHeap.c +Imaging/libImaging/RankFilter.c +Imaging/libImaging/Storage.c +Imaging/libImaging/Unpack.c +Imaging/libImaging/UnpackYCC.c +Imaging/libImaging/UnsharpMask.c + +Imaging/libImaging/Bit.h +Imaging/libImaging/Gif.h +Imaging/libImaging/Jpeg.h +Imaging/libImaging/Lzw.h +Imaging/libImaging/Raw.h +Imaging/libImaging/Zip.h +Imaging/libImaging/BitDecode.c +Imaging/libImaging/EpsEncode.c +Imaging/libImaging/FliDecode.c +Imaging/libImaging/GifDecode.c +Imaging/libImaging/GifEncode.c +Imaging/libImaging/HexDecode.c +Imaging/libImaging/JpegDecode.c +Imaging/libImaging/JpegEncode.c +Imaging/libImaging/LzwDecode.c +Imaging/libImaging/MspDecode.c +Imaging/libImaging/PackDecode.c +Imaging/libImaging/PcdDecode.c +Imaging/libImaging/PcxEncode.c +Imaging/libImaging/PcxDecode.c +Imaging/libImaging/RawDecode.c +Imaging/libImaging/RawEncode.c +Imaging/libImaging/SunRleDecode.c +Imaging/libImaging/TgaRleDecode.c +Imaging/libImaging/XbmDecode.c +Imaging/libImaging/XbmEncode.c +Imaging/libImaging/ZipDecode.c +Imaging/libImaging/ZipEncode.c + +Imaging/_imaging.c +Imaging/decode.c +Imaging/encode.c +Imaging/display.c +Imaging/map.c +Imaging/outline.c +Imaging/path.c + +Imaging/_imagingtk.c +Imaging/_imagingft.c +Imaging/_imagingcms.c +Imaging/_imagingmath.c + +Imaging/PIL.pth +Imaging/PIL/__init__.py +Imaging/PIL/ArgImagePlugin.py +Imaging/PIL/BdfFontFile.py +Imaging/PIL/BmpImagePlugin.py +Imaging/PIL/BufrStubImagePlugin.py +Imaging/PIL/ContainerIO.py +Imaging/PIL/CurImagePlugin.py +Imaging/PIL/DcxImagePlugin.py +Imaging/PIL/EpsImagePlugin.py +Imaging/PIL/ExifTags.py +Imaging/PIL/FitsStubImagePlugin.py +Imaging/PIL/FliImagePlugin.py +Imaging/PIL/FontFile.py +Imaging/PIL/FpxImagePlugin.py +Imaging/PIL/GbrImagePlugin.py +Imaging/PIL/GdImageFile.py +Imaging/PIL/GifImagePlugin.py +Imaging/PIL/GimpGradientFile.py +Imaging/PIL/GimpPaletteFile.py +Imaging/PIL/GribStubImagePlugin.py +Imaging/PIL/Hdf5StubImagePlugin.py +Imaging/PIL/IcoImagePlugin.py +Imaging/PIL/IcnsImagePlugin.py +Imaging/PIL/Image.py +Imaging/PIL/ImageChops.py +Imaging/PIL/ImageCms.py +Imaging/PIL/ImageColor.py +Imaging/PIL/ImageDraw.py +Imaging/PIL/ImageDraw2.py +Imaging/PIL/ImageEnhance.py +Imaging/PIL/ImageFile.py +Imaging/PIL/ImageFileIO.py +Imaging/PIL/ImageFilter.py +Imaging/PIL/ImageFont.py +Imaging/PIL/ImageGL.py +Imaging/PIL/ImageGrab.py +Imaging/PIL/ImageMath.py +Imaging/PIL/ImageMode.py +Imaging/PIL/ImageOps.py +Imaging/PIL/ImagePalette.py +Imaging/PIL/ImagePath.py +Imaging/PIL/ImageQt.py +Imaging/PIL/ImageSequence.py +Imaging/PIL/ImageShow.py +Imaging/PIL/ImageStat.py +Imaging/PIL/ImageTk.py +Imaging/PIL/ImageTransform.py +Imaging/PIL/ImageWin.py +Imaging/PIL/ImImagePlugin.py +Imaging/PIL/ImtImagePlugin.py +Imaging/PIL/IptcImagePlugin.py +Imaging/PIL/JpegImagePlugin.py +Imaging/PIL/McIdasImagePlugin.py +Imaging/PIL/MicImagePlugin.py +Imaging/PIL/MpegImagePlugin.py +Imaging/PIL/MspImagePlugin.py +Imaging/PIL/OleFileIO.py +Imaging/PIL/PaletteFile.py +Imaging/PIL/PalmImagePlugin.py +Imaging/PIL/PcdImagePlugin.py +Imaging/PIL/PcfFontFile.py +Imaging/PIL/PcxImagePlugin.py +Imaging/PIL/PdfImagePlugin.py +Imaging/PIL/PixarImagePlugin.py +Imaging/PIL/PngImagePlugin.py +Imaging/PIL/PpmImagePlugin.py +Imaging/PIL/PsdImagePlugin.py +Imaging/PIL/PSDraw.py +Imaging/PIL/SgiImagePlugin.py +Imaging/PIL/SpiderImagePlugin.py +Imaging/PIL/SunImagePlugin.py +Imaging/PIL/TarIO.py +Imaging/PIL/TgaImagePlugin.py +Imaging/PIL/TiffImagePlugin.py +Imaging/PIL/TiffTags.py +Imaging/PIL/WalImageFile.py +Imaging/PIL/WmfImagePlugin.py +Imaging/PIL/XbmImagePlugin.py +Imaging/PIL/XpmImagePlugin.py +Imaging/PIL/XVThumbImagePlugin.py + +Imaging/Docs/index.html +Imaging/Docs/effbot.css +Imaging/Docs/pythondoc-PIL.ArgImagePlugin.html +Imaging/Docs/pythondoc-PIL.BdfFontFile.html +Imaging/Docs/pythondoc-PIL.BmpImagePlugin.html +Imaging/Docs/pythondoc-PIL.BufrStubImagePlugin.html +Imaging/Docs/pythondoc-PIL.ContainerIO.html +Imaging/Docs/pythondoc-PIL.CurImagePlugin.html +Imaging/Docs/pythondoc-PIL.DcxImagePlugin.html +Imaging/Docs/pythondoc-PIL.EpsImagePlugin.html +Imaging/Docs/pythondoc-PIL.ExifTags.html +Imaging/Docs/pythondoc-PIL.FitsStubImagePlugin.html +Imaging/Docs/pythondoc-PIL.FliImagePlugin.html +Imaging/Docs/pythondoc-PIL.FontFile.html +Imaging/Docs/pythondoc-PIL.FpxImagePlugin.html +Imaging/Docs/pythondoc-PIL.GbrImagePlugin.html +Imaging/Docs/pythondoc-PIL.GdImageFile.html +Imaging/Docs/pythondoc-PIL.GifImagePlugin.html +Imaging/Docs/pythondoc-PIL.GimpGradientFile.html +Imaging/Docs/pythondoc-PIL.GimpPaletteFile.html +Imaging/Docs/pythondoc-PIL.GribStubImagePlugin.html +Imaging/Docs/pythondoc-PIL.Hdf5StubImagePlugin.html +Imaging/Docs/pythondoc-PIL.IcoImagePlugin.html +Imaging/Docs/pythondoc-PIL.IcnsImagePlugin.html +Imaging/Docs/pythondoc-PIL.Image.html +Imaging/Docs/pythondoc-PIL.ImageChops.html +Imaging/Docs/pythondoc-PIL.ImageColor.html +Imaging/Docs/pythondoc-PIL.ImageDraw.html +Imaging/Docs/pythondoc-PIL.ImageEnhance.html +Imaging/Docs/pythondoc-PIL.ImageFile.html +Imaging/Docs/pythondoc-PIL.ImageFileIO.html +Imaging/Docs/pythondoc-PIL.ImageFilter.html +Imaging/Docs/pythondoc-PIL.ImageFont.html +Imaging/Docs/pythondoc-PIL.ImageGL.html +Imaging/Docs/pythondoc-PIL.ImageGrab.html +Imaging/Docs/pythondoc-PIL.ImageOps.html +Imaging/Docs/pythondoc-PIL.ImagePalette.html +Imaging/Docs/pythondoc-PIL.ImagePath.html +Imaging/Docs/pythondoc-PIL.ImageSequence.html +Imaging/Docs/pythondoc-PIL.ImageStat.html +Imaging/Docs/pythondoc-PIL.ImageTk.html +Imaging/Docs/pythondoc-PIL.ImageTransform.html +Imaging/Docs/pythondoc-PIL.ImageWin.html +Imaging/Docs/pythondoc-PIL.ImImagePlugin.html +Imaging/Docs/pythondoc-PIL.ImtImagePlugin.html +Imaging/Docs/pythondoc-PIL.IptcImagePlugin.html +Imaging/Docs/pythondoc-PIL.JpegImagePlugin.html +Imaging/Docs/pythondoc-PIL.McIdasImagePlugin.html +Imaging/Docs/pythondoc-PIL.MicImagePlugin.html +Imaging/Docs/pythondoc-PIL.MpegImagePlugin.html +Imaging/Docs/pythondoc-PIL.MspImagePlugin.html +Imaging/Docs/pythondoc-PIL.OleFileIO.html +Imaging/Docs/pythondoc-PIL.PaletteFile.html +Imaging/Docs/pythondoc-PIL.PalmImagePlugin.html +Imaging/Docs/pythondoc-PIL.PcdImagePlugin.html +Imaging/Docs/pythondoc-PIL.PcfFontFile.html +Imaging/Docs/pythondoc-PIL.PcxImagePlugin.html +Imaging/Docs/pythondoc-PIL.PdfImagePlugin.html +Imaging/Docs/pythondoc-PIL.PixarImagePlugin.html +Imaging/Docs/pythondoc-PIL.PngImagePlugin.html +Imaging/Docs/pythondoc-PIL.PpmImagePlugin.html +Imaging/Docs/pythondoc-PIL.PsdImagePlugin.html +Imaging/Docs/pythondoc-PIL.PSDraw.html +Imaging/Docs/pythondoc-PIL.SgiImagePlugin.html +Imaging/Docs/pythondoc-PIL.SpiderImagePlugin.html +Imaging/Docs/pythondoc-PIL.SunImagePlugin.html +Imaging/Docs/pythondoc-PIL.TarIO.html +Imaging/Docs/pythondoc-PIL.TgaImagePlugin.html +Imaging/Docs/pythondoc-PIL.TiffImagePlugin.html +Imaging/Docs/pythondoc-PIL.TiffTags.html +Imaging/Docs/pythondoc-PIL.WalImageFile.html +Imaging/Docs/pythondoc-PIL.WmfImagePlugin.html +Imaging/Docs/pythondoc-PIL.XbmImagePlugin.html +Imaging/Docs/pythondoc-PIL.XpmImagePlugin.html +Imaging/Docs/pythondoc-PIL.XVThumbImagePlugin.html + +Imaging/Scripts/pilconvert.py +Imaging/Scripts/pildriver.py +Imaging/Scripts/pilfile.py +Imaging/Scripts/pilfont.py +Imaging/Scripts/pilprint.py + +Imaging/Images/lena.gif +Imaging/Images/lena.png +Imaging/Images/lena.ppm +Imaging/Images/lena.jpg + +Imaging/Images/courB08.bdf +Imaging/Images/courB08.pbm +Imaging/Images/courB08.pil + +Imaging/Sane/README +Imaging/Sane/CHANGES +Imaging/Sane/setup.py +Imaging/Sane/sanedoc.txt +Imaging/Sane/_sane.c +Imaging/Sane/sane.py +Imaging/Sane/demo_numarray.py +Imaging/Sane/demo_pil.py + +Imaging/Scripts/README +Imaging/Scripts/enhancer.py +Imaging/Scripts/explode.py +Imaging/Scripts/gifmaker.py +Imaging/Scripts/painter.py +Imaging/Scripts/player.py +Imaging/Scripts/viewer.py +Imaging/Scripts/thresholder.py + +Imaging/Tk/tkImaging.c +Imaging/Tk/install.txt +Imaging/Tk/booster.txt +Imaging/Tk/pilbitmap.txt + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css b/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css new file mode 100755 index 00000000000..b03ae458cdc --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css @@ -0,0 +1,118 @@ +/* effbot.css */ + +BODY { + font: 100% Georgia, Times, serif; + color: black; + margin: 0px 20px 0px 20px; +} + +#effbot-body { + background: white; + padding: 10px 40px 10px 40px; + max-width: 50em; +} + +#effbot-menu { + display: none; +} + +.adsense { + background: #f8fff8; + border: 1px solid #084; + padding: 10px 4px 4px 4px; +} + +.sidebar { + border: 1px solid #000; + float: right; clear: right; + width: 200px; + background: white; + padding: 10px; + margin: 0px -25px 10px 0px; +} + +/* visual style */ + +P { + line-height: 1.3em; +} + +CODE, PRE { + font: 100% "Courier New", Courier, Monaco, monospace; + color: #042; margin-left: 20px; +} + +H1, H2, H3 { + font-family: Georgia, Times, serif; + color: #084; margin-top: 30px; +} + +H1, H2, { border-top: 1px solid #084; } + +H4, H5, H6 { + font-family: Georgia, Times, serif; + color: #084; margin-top: 15px; +} + +A:link, A:hover { color: #084; } +A:visited { color: #404040; } + +UL LI { list-style-type: square; } + +.title { margin-bottom: 2px; color: #084; } +.info { font-size: 80%; color: #084; margin-top: 0px; } + +.bluebox { color: #084; margin-top: 10px; } + +.highlight { background: #cfc; } +.mark { color: #084; } +.small { font-size: 80%; } +.display { background: #eee; padding: 20px; } + +.note { + background: #efe; + border-top: 1px solid #084; + border-bottom: 1px solid #084; + padding: 2px 20px; +} + +.example { + border-top: medium solid #084; + border-bottom: medium solid #084; + padding: 5px; +} + +.figure { + border-top: medium solid #084; + border-bottom: medium solid #084; + padding: 5px; +} + +.fixme { + background: #eee; + border: 1px solid #084; + padding: 2x 20px; +} + +.simpletable { + border: 1px solid #084; + border-collapse: collapse; +} + +.simpletable TH { + text-align: left; + background: #cfc; + border: 1px solid #084; + margin: 0px; + padding: 1px 5px; +} + +.simpletable TD { + border: 1px solid #084; + margin: 0px; + padding: 5px; +} + +/* xmldiff markup */ +.new { text-decoration: underline; color: red; background: #fff0f0; } +.old { text-decoration: line-through; color: blue; background: #f0f0ff; } diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html b/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html new file mode 100755 index 00000000000..fbc76a99dfb --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html @@ -0,0 +1,103 @@ + + + + + +The Python Imaging Library + + + +

    The Python Imaging Library

    + +

    Online Resources

    + +
    +
    Python Imaging Library (official product page at pythonware.com)
    +
    Python Imaging Library (development page at effbot.org)
    +
    + +

    Package Contents

    + +

    The following pages are generated from pythondoc markup in the source files.

    + +
    +
    The PIL.Image Module
    +
    The PIL.ImageChops Module
    +
    The PIL.ImageColor Module
    +
    The PIL.ImageDraw Module
    +
    The PIL.ImageEnhance Module
    +
    The PIL.ImageFile Module
    +
    The PIL.ImageFileIO Module
    +
    The PIL.ImageFilter Module
    +
    The PIL.ImageFont Module
    +
    The PIL.ImageGL Module
    +
    The PIL.ImageGrab Module
    +
    The PIL.ImageMath Module
    +
    The PIL.ImageMode Module
    +
    The PIL.ImageOps Module
    +
    The PIL.ImagePalette Module
    +
    The PIL.ImagePath Module
    +
    The PIL.ImageQt Module
    +
    The PIL.ImageSequence Module
    +
    The PIL.ImageStat Module
    +
    The PIL.ImageTk Module
    +
    The PIL.ImageTransform Module
    +
    The PIL.ImageWin Module
    +
     
    +
    The PIL.ArgImagePlugin Module
    +
    The PIL.BdfFontFile Module
    +
    The PIL.BmpImagePlugin Module
    +
    The PIL.BufrStubImagePlugin Module
    +
    The PIL.ContainerIO Module
    +
    The PIL.CurImagePlugin Module
    +
    The PIL.DcxImagePlugin Module
    +
    The PIL.EpsImagePlugin Module
    +
    The PIL.ExifTags Module
    +
    The PIL.FitsStubImagePlugin Module
    +
    The PIL.FliImagePlugin Module
    +
    The PIL.FontFile Module
    +
    The PIL.FpxImagePlugin Module
    +
    The PIL.GbrImagePlugin Module
    +
    The PIL.GdImageFile Module
    +
    The PIL.GifImagePlugin Module
    +
    The PIL.GimpGradientFile Module
    +
    The PIL.GimpPaletteFile Module
    +
    The PIL.GribStubImagePlugin Module
    +
    The PIL.Hdf5StubImagePlugin Module
    +
    The PIL.IcnsImagePlugin Module
    +
    The PIL.IcoImagePlugin Module
    +
    The PIL.ImImagePlugin Module
    +
    The PIL.ImtImagePlugin Module
    +
    The PIL.IptcImagePlugin Module
    +
    The PIL.JpegImagePlugin Module
    +
    The PIL.McIdasImagePlugin Module
    +
    The PIL.MicImagePlugin Module
    +
    The PIL.MpegImagePlugin Module
    +
    The PIL.MspImagePlugin Module
    +
    The PIL.OleFileIO Module
    +
    The PIL.PSDraw Module
    +
    The PIL.PaletteFile Module
    +
    The PIL.PalmImagePlugin Module
    +
    The PIL.PcdImagePlugin Module
    +
    The PIL.PcfFontFile Module
    +
    The PIL.PcxImagePlugin Module
    +
    The PIL.PdfImagePlugin Module
    +
    The PIL.PixarImagePlugin Module
    +
    The PIL.PngImagePlugin Module
    +
    The PIL.PpmImagePlugin Module
    +
    The PIL.PsdImagePlugin Module
    +
    The PIL.SgiImagePlugin Module
    +
    The PIL.SunImagePlugin Module
    +
    The PIL.TarIO Module
    +
    The PIL.TgaImagePlugin Module
    +
    The PIL.TiffImagePlugin Module
    +
    The PIL.TiffTags Module
    +
    The PIL.WalImageFile Module
    +
    The PIL.WbmpImagePlugin Module
    +
    The PIL.WmfImagePlugin Module
    +
    The PIL.XVThumbImagePlugin Module
    +
    The PIL.XbmImagePlugin Module
    +
    The PIL.XpmImagePlugin Module
    +
    + + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf new file mode 100755 index 00000000000..5a48895d1de --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf @@ -0,0 +1,2676 @@ +STARTFONT 2.1 +COMMENT $XConsortium: courB08.bdf,v 1.5 94/04/10 21:46:11 gildea Exp $ +COMMENT +COMMENT Copyright 1984, 1987 Adobe Systems, Inc. +COMMENT Portions Copyright 1988 Digital Equipment Corporation +COMMENT +COMMENT Adobe is a registered trademark of Adobe Systems, Inc. Permission +COMMENT to use these trademarks is hereby granted only in association with the +COMMENT images described in this file. +COMMENT +COMMENT Permission to use, copy, modify, and distribute this software and +COMMENT its documentation for any purpose and without fee is hereby granted, +COMMENT provided that the above copyright notices appear in all copies and +COMMENT that both those copyright notices and this permission notice appear +COMMENT in supporting documentation, and that the names of Adobe Systems and +COMMENT Digital Equipment Corporation not be used in advertising or +COMMENT publicity pertaining to distribution of the software without +COMMENT specific, written prior permission. Adobe Systems and Digital +COMMENT Equipment Corporation make no representations about the suitability +COMMENT of this software for any purpose. It is provided "as is" without +COMMENT express or implied warranty. +COMMENT +COMMENT ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL +COMMENT WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +COMMENT WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE +COMMENT SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, +COMMENT INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +COMMENT RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +COMMENT CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +COMMENT CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +COMMENT +COMMENT +FONT -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO8859-1 +SIZE 8 100 100 +FONTBOUNDINGBOX 8 11 -1 -2 +STARTPROPERTIES 22 +COMMENT Begin LogicalFontDescription +FONTNAME_REGISTRY "" +FAMILY_NAME "Courier" +FOUNDRY "Adobe" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 11 +POINT_SIZE 80 +RESOLUTION_X 100 +RESOLUTION_Y 100 +SPACING "M" +AVERAGE_WIDTH 60 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "1" +COMMENT END LogicalFontDescription +CHARSET_COLLECTIONS "ASCII ISO8859-1 ADOBE-STANDARD" +FACE_NAME "Courier Bold" +COPYRIGHT "Copyright (c) 1987 Adobe Systems, Inc., Portions Copyright 1988 Digital Equipment Corp." +COMMENT ***** end of inserted font properties +FONT_ASCENT 8 +FONT_DESCENT 2 +CAP_HEIGHT 6 +X_HEIGHT 5 +ENDPROPERTIES +CHARS 194 +STARTCHAR space +ENCODING 32 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 1 1 0 0 +BITMAP +00 +ENDCHAR +STARTCHAR exclam +ENCODING 33 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 2 6 1 0 +BITMAP +C0 +C0 +C0 +C0 +00 +C0 +ENDCHAR +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 3 1 3 +BITMAP +A0 +A0 +A0 +ENDCHAR +STARTCHAR numbersign +ENCODING 35 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 -1 +BITMAP +50 +50 +F8 +50 +50 +F8 +50 +50 +ENDCHAR +STARTCHAR dollar +ENCODING 36 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 9 0 -1 +BITMAP +20 +78 +C8 +F0 +78 +18 +D8 +F0 +20 +ENDCHAR +STARTCHAR percent +ENCODING 37 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +E0 +A8 +F0 +20 +78 +A8 +38 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +38 +60 +30 +7C +D8 +7C +ENDCHAR +STARTCHAR quoteright +ENCODING 39 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 3 1 4 +BITMAP +60 +40 +80 +ENDCHAR +STARTCHAR parenleft +ENCODING 40 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 8 1 -1 +BITMAP +20 +40 +C0 +C0 +C0 +C0 +40 +20 +ENDCHAR +STARTCHAR parenright +ENCODING 41 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 8 1 -1 +BITMAP +80 +40 +60 +60 +60 +60 +40 +80 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 4 0 3 +BITMAP +20 +F0 +60 +90 +ENDCHAR +STARTCHAR plus +ENCODING 43 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 1 +BITMAP +20 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 3 1 -2 +BITMAP +60 +40 +80 +ENDCHAR +STARTCHAR minus +ENCODING 45 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 1 0 3 +BITMAP +F8 +ENDCHAR +STARTCHAR period +ENCODING 46 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 2 1 1 0 +BITMAP +C0 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 8 1 -1 +BITMAP +10 +10 +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR zero +ENCODING 48 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR one +ENCODING 49 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +30 +F0 +30 +30 +30 +30 +FC +ENDCHAR +STARTCHAR two +ENCODING 50 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +18 +30 +60 +D8 +F8 +ENDCHAR +STARTCHAR three +ENCODING 51 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +18 +70 +18 +D8 +70 +ENDCHAR +STARTCHAR four +ENCODING 52 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +18 +38 +58 +D8 +FC +18 +18 +ENDCHAR +STARTCHAR five +ENCODING 53 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +F0 +D8 +18 +98 +F0 +ENDCHAR +STARTCHAR six +ENCODING 54 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +C0 +F0 +D8 +D8 +70 +ENDCHAR +STARTCHAR seven +ENCODING 55 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +18 +30 +30 +60 +60 +ENDCHAR +STARTCHAR eight +ENCODING 56 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR nine +ENCODING 57 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +78 +18 +D8 +70 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 2 4 1 0 +BITMAP +C0 +00 +00 +C0 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 6 0 -2 +BITMAP +60 +00 +00 +60 +40 +80 +ENDCHAR +STARTCHAR less +ENCODING 60 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 5 0 1 +BITMAP +30 +60 +C0 +60 +30 +ENDCHAR +STARTCHAR equal +ENCODING 61 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 3 0 2 +BITMAP +F0 +00 +F0 +ENDCHAR +STARTCHAR greater +ENCODING 62 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 5 1 1 +BITMAP +C0 +60 +30 +60 +C0 +ENDCHAR +STARTCHAR question +ENCODING 63 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +98 +30 +60 +00 +60 +ENDCHAR +STARTCHAR at +ENCODING 64 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +70 +C8 +98 +A8 +A8 +9C +C0 +70 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +F8 +6C +78 +6C +6C +F8 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +78 +D8 +C0 +C0 +D8 +70 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +F8 +6C +6C +6C +6C +F8 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +FC +60 +78 +60 +6C +FC +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +FC +60 +78 +60 +60 +F0 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +D8 +C0 +F8 +D8 +78 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +EE +6C +7C +6C +6C +EE +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 6 0 0 +BITMAP +F0 +60 +60 +60 +60 +F0 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +3C +18 +18 +D8 +D8 +70 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +EC +68 +70 +78 +6C +F6 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +F0 +60 +60 +60 +6C +FC +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +C4 +6C +6C +7C +54 +D4 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +EE +74 +74 +6C +6C +E4 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +F8 +6C +6C +78 +60 +F0 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 -1 +BITMAP +70 +D8 +D8 +D8 +D8 +70 +18 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +F8 +6C +6C +78 +6C +F6 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +78 +C8 +F0 +38 +98 +F0 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +FC +B4 +30 +30 +30 +78 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +EE +6C +6C +6C +6C +38 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +EE +6C +28 +38 +38 +10 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +D6 +54 +54 +7C +38 +28 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +78 +30 +30 +78 +CC +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +E6 +66 +3C +18 +18 +3C +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +30 +60 +D8 +F8 +ENDCHAR +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 8 1 -1 +BITMAP +E0 +C0 +C0 +C0 +C0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 8 0 -1 +BITMAP +80 +80 +40 +40 +20 +20 +10 +10 +ENDCHAR +STARTCHAR bracketright +ENCODING 93 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 8 1 -1 +BITMAP +E0 +60 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 3 0 4 +BITMAP +20 +70 +D8 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 1 0 -2 +BITMAP +FC +ENDCHAR +STARTCHAR quoteleft +ENCODING 96 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 3 1 4 +BITMAP +C0 +40 +20 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +70 +D8 +78 +D8 +FC +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 -1 0 +BITMAP +E0 +60 +78 +6C +6C +6C +F8 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +C0 +D8 +70 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +38 +18 +78 +D8 +D8 +D8 +7C +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +38 +60 +F8 +60 +60 +60 +F8 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 -2 +BITMAP +6C +D8 +D8 +D8 +78 +18 +F0 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 -1 0 +BITMAP +E0 +60 +78 +6C +6C +6C +6C +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +30 +00 +F0 +30 +30 +30 +FC +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 9 0 -2 +BITMAP +30 +00 +F0 +30 +30 +30 +30 +30 +E0 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +E0 +60 +6C +78 +70 +78 +6E +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +F0 +30 +30 +30 +30 +30 +FC +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 -1 0 +BITMAP +F8 +7C +54 +54 +54 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 -1 0 +BITMAP +D8 +6C +6C +6C +6C +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 -1 -2 +BITMAP +F8 +6C +6C +6C +78 +60 +F0 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 -2 +BITMAP +6C +D8 +D8 +D8 +78 +18 +3C +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +DC +74 +60 +60 +F0 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +78 +E0 +78 +1C +F8 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +60 +60 +F8 +60 +60 +6C +38 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 5 -1 0 +BITMAP +EC +6C +6C +6C +3E +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 -1 0 +BITMAP +EC +6C +38 +38 +10 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 5 -1 0 +BITMAP +D6 +54 +7C +3C +28 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +EC +78 +30 +78 +DC +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 -2 +BITMAP +EE +6C +6C +28 +38 +30 +E0 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +F8 +B0 +60 +D8 +F8 +ENDCHAR +STARTCHAR braceleft +ENCODING 123 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 8 1 -1 +BITMAP +30 +60 +60 +C0 +60 +60 +60 +30 +ENDCHAR +STARTCHAR bar +ENCODING 124 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 1 7 2 -1 +BITMAP +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR braceright +ENCODING 125 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 8 0 -1 +BITMAP +C0 +60 +60 +30 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 2 0 3 +BITMAP +68 +B0 +ENDCHAR +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 2 7 1 -2 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR cent +ENCODING 162 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +78 +C8 +C0 +78 +20 +20 +ENDCHAR +STARTCHAR sterling +ENCODING 163 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +38 +68 +20 +F8 +20 +64 +F8 +ENDCHAR +STARTCHAR currency +ENCODING 164 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 1 +BITMAP +88 +70 +50 +70 +88 +ENDCHAR +STARTCHAR yen +ENCODING 165 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +48 +FC +30 +FC +30 +78 +ENDCHAR +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 1 9 2 -2 +BITMAP +80 +80 +80 +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR section +ENCODING 167 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 -1 +BITMAP +78 +48 +60 +90 +48 +30 +90 +F0 +ENDCHAR +STARTCHAR dieresis +ENCODING 168 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 1 1 5 +BITMAP +A0 +ENDCHAR +STARTCHAR copyright +ENCODING 169 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +30 +48 +B4 +A4 +B4 +48 +30 +ENDCHAR +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 5 1 2 +BITMAP +E0 +10 +D0 +00 +F0 +ENDCHAR +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 5 -1 0 +BITMAP +36 +6C +D8 +6C +36 +ENDCHAR +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 3 0 2 +BITMAP +F8 +08 +08 +ENDCHAR +STARTCHAR hyphen +ENCODING 173 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 1 0 3 +BITMAP +F8 +ENDCHAR +STARTCHAR registered +ENCODING 174 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 0 0 +BITMAP +38 +44 +BA +B2 +AA +44 +38 +ENDCHAR +STARTCHAR macron +ENCODING 175 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 1 0 5 +BITMAP +F0 +ENDCHAR +STARTCHAR degree +ENCODING 176 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 3 0 4 +BITMAP +60 +90 +60 +ENDCHAR +STARTCHAR plusminus +ENCODING 177 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +20 +20 +F8 +20 +00 +F8 +ENDCHAR +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 4 1 3 +BITMAP +60 +A0 +40 +E0 +ENDCHAR +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 4 1 3 +BITMAP +E0 +40 +20 +C0 +ENDCHAR +STARTCHAR acute +ENCODING 180 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 2 2 2 5 +BITMAP +40 +80 +ENDCHAR +STARTCHAR mu +ENCODING 181 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 -2 +BITMAP +EC +6C +6C +6C +7E +40 +40 +ENDCHAR +STARTCHAR paragraph +ENCODING 182 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +A8 +A8 +68 +28 +28 +28 +6C +ENDCHAR +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 2 1 1 3 +BITMAP +C0 +ENDCHAR +STARTCHAR cedilla +ENCODING 184 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 3 1 -2 +BITMAP +40 +20 +C0 +ENDCHAR +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 3 4 1 3 +BITMAP +C0 +40 +40 +E0 +ENDCHAR +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 5 1 2 +BITMAP +60 +90 +60 +00 +F0 +ENDCHAR +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 5 -1 0 +BITMAP +D8 +6C +36 +6C +D8 +ENDCHAR +STARTCHAR onequarter +ENCODING 188 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +C0 +44 +48 +F4 +2C +5E +04 +ENDCHAR +STARTCHAR onehalf +ENCODING 189 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +C0 +44 +48 +F6 +2A +44 +0E +ENDCHAR +STARTCHAR threequarters +ENCODING 190 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +E0 +44 +28 +D4 +2C +5E +04 +ENDCHAR +STARTCHAR questiondown +ENCODING 191 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 -2 +BITMAP +30 +00 +30 +30 +60 +C8 +70 +ENDCHAR +STARTCHAR Agrave +ENCODING 192 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +20 +10 +00 +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR Aacute +ENCODING 193 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +10 +20 +00 +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +10 +28 +00 +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR Atilde +ENCODING 195 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +34 +48 +00 +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 8 -1 0 +BITMAP +28 +00 +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR Aring +ENCODING 197 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +30 +48 +30 +78 +38 +28 +7C +6C +EE +ENDCHAR +STARTCHAR AE +ENCODING 198 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +7E +3A +6C +78 +DA +DE +ENDCHAR +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 -2 +BITMAP +78 +D8 +C0 +C0 +D8 +70 +10 +60 +ENDCHAR +STARTCHAR Egrave +ENCODING 200 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 9 -1 0 +BITMAP +20 +10 +00 +FC +64 +78 +60 +6C +FC +ENDCHAR +STARTCHAR Eacute +ENCODING 201 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 9 -1 0 +BITMAP +10 +20 +00 +FC +64 +78 +60 +6C +FC +ENDCHAR +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 9 -1 0 +BITMAP +20 +50 +00 +FC +64 +78 +60 +6C +FC +ENDCHAR +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 -1 0 +BITMAP +50 +00 +FC +64 +78 +60 +6C +FC +ENDCHAR +STARTCHAR Igrave +ENCODING 204 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 9 0 0 +BITMAP +40 +20 +00 +F0 +60 +60 +60 +60 +F0 +ENDCHAR +STARTCHAR Iacute +ENCODING 205 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 9 0 0 +BITMAP +20 +40 +00 +F0 +60 +60 +60 +60 +F0 +ENDCHAR +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 9 0 0 +BITMAP +40 +A0 +00 +F0 +60 +60 +60 +60 +F0 +ENDCHAR +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 4 8 0 0 +BITMAP +A0 +00 +F0 +60 +60 +60 +60 +F0 +ENDCHAR +STARTCHAR Eth +ENCODING 208 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +F8 +6C +F4 +64 +6C +F8 +ENDCHAR +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +34 +48 +00 +EE +64 +74 +7C +6C +EC +ENDCHAR +STARTCHAR Ograve +ENCODING 210 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +70 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR Oacute +ENCODING 211 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +40 +00 +70 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +70 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR Otilde +ENCODING 213 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +68 +90 +00 +70 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +70 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR multiply +ENCODING 215 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 1 +BITMAP +88 +50 +20 +50 +88 +ENDCHAR +STARTCHAR Oslash +ENCODING 216 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +3A +6C +7C +6C +6C +B8 +ENDCHAR +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +20 +10 +00 +EE +6C +6C +6C +6C +38 +ENDCHAR +STARTCHAR Uacute +ENCODING 218 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +08 +10 +00 +EE +6C +6C +6C +6C +38 +ENDCHAR +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +10 +28 +00 +EE +6C +6C +6C +6C +38 +ENDCHAR +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 8 -1 0 +BITMAP +28 +00 +EE +6C +6C +6C +6C +38 +ENDCHAR +STARTCHAR Yacute +ENCODING 221 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 0 +BITMAP +04 +08 +00 +E6 +66 +3C +18 +18 +3C +ENDCHAR +STARTCHAR Thorn +ENCODING 222 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 6 -1 0 +BITMAP +E0 +78 +6C +6C +78 +E0 +ENDCHAR +STARTCHAR germandbls +ENCODING 223 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 6 -1 0 +BITMAP +38 +68 +7C +66 +66 +EC +ENDCHAR +STARTCHAR agrave +ENCODING 224 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +20 +10 +00 +70 +98 +78 +D8 +FC +ENDCHAR +STARTCHAR aacute +ENCODING 225 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +10 +20 +00 +70 +98 +78 +D8 +FC +ENDCHAR +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +20 +50 +00 +70 +98 +78 +D8 +FC +ENDCHAR +STARTCHAR atilde +ENCODING 227 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +68 +90 +00 +70 +98 +78 +D8 +FC +ENDCHAR +STARTCHAR adieresis +ENCODING 228 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +50 +00 +70 +98 +78 +D8 +FC +ENDCHAR +STARTCHAR aring +ENCODING 229 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +48 +30 +00 +70 +98 +78 +D8 +FC +ENDCHAR +STARTCHAR ae +ENCODING 230 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 -1 0 +BITMAP +6C +B4 +7C +B0 +DC +ENDCHAR +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 -2 +BITMAP +70 +D8 +C0 +D8 +70 +10 +60 +ENDCHAR +STARTCHAR egrave +ENCODING 232 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +40 +20 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR eacute +ENCODING 233 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +20 +40 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +20 +50 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR edieresis +ENCODING 235 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +50 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR igrave +ENCODING 236 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +20 +10 +00 +70 +30 +30 +30 +FC +ENDCHAR +STARTCHAR iacute +ENCODING 237 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +10 +20 +00 +70 +30 +30 +30 +FC +ENDCHAR +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +20 +50 +00 +70 +30 +30 +30 +FC +ENDCHAR +STARTCHAR idieresis +ENCODING 239 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +50 +00 +70 +30 +30 +30 +FC +ENDCHAR +STARTCHAR eth +ENCODING 240 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +D0 +60 +B0 +78 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR ntilde +ENCODING 241 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 8 -1 0 +BITMAP +34 +48 +00 +D8 +6C +6C +6C +6E +ENDCHAR +STARTCHAR ograve +ENCODING 242 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +40 +20 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR oacute +ENCODING 243 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +20 +40 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +20 +50 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR otilde +ENCODING 245 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +68 +90 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR odieresis +ENCODING 246 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +50 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR divide +ENCODING 247 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 5 0 1 +BITMAP +20 +00 +F8 +00 +20 +ENDCHAR +STARTCHAR oslash +ENCODING 248 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 5 7 0 -1 +BITMAP +08 +70 +D8 +F8 +D8 +70 +80 +ENDCHAR +STARTCHAR ugrave +ENCODING 249 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 8 -1 0 +BITMAP +20 +10 +00 +EC +6C +6C +6C +3E +ENDCHAR +STARTCHAR uacute +ENCODING 250 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 8 -1 0 +BITMAP +10 +20 +00 +EC +6C +6C +6C +3E +ENDCHAR +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 8 -1 0 +BITMAP +10 +28 +00 +EC +6C +6C +6C +3E +ENDCHAR +STARTCHAR udieresis +ENCODING 252 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +28 +00 +EC +6C +6C +6C +3E +ENDCHAR +STARTCHAR yacute +ENCODING 253 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 10 -1 -2 +BITMAP +08 +10 +00 +EE +6C +6C +28 +38 +30 +F0 +ENDCHAR +STARTCHAR thorn +ENCODING 254 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 9 -1 -2 +BITMAP +E0 +60 +78 +6C +6C +6C +78 +60 +F0 +ENDCHAR +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 9 -1 -2 +BITMAP +28 +00 +EE +6C +6C +28 +38 +30 +F0 +ENDCHAR +STARTCHAR trademark +ENCODING 8482 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 4 -1 3 +BITMAP +F6 +5E +5A +5A +ENDCHAR +STARTCHAR perthousand +ENCODING 8240 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +60 +A8 +D0 +60 +6C +B4 +D8 +ENDCHAR +STARTCHAR oe +ENCODING 339 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +6C +B4 +BC +B0 +6C +ENDCHAR +STARTCHAR fl +ENCODING 64258 +SWIDTH 600 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +3C +6C +FC +6C +6C +6C +FE +ENDCHAR +ENDFONT diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pbm b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pbm new file mode 100755 index 0000000000000000000000000000000000000000..aedce1a3117bc80edcc8edb5ec92ece84639a346 GIT binary patch literal 1273 zcmYk5e@s(X6vxlwcCS?m)FA;WunHK-h+0JLlwU<)$^=ALGhr@!fS|@8I>IQMSQ>flgW=L;}wQD6p*-~ZbHkd!pQhF+*+XR-D8N^`QzrClkYj7b8_!J z8XvdGVWIm%0C0%j9Jw6;d2#+?f;+%}b?;sP9vdAQu27zbR4Buc6*+LP#mBZXpi4YD zbD`Ffc`}sN+eU44M!@LUg$ZmLs|lqiezIj2c^K<;MXlX+*`1@4o;M%rX^psKXiyb+ z91n&ZnR#qYd#vUokx0@L;nXiL@GJOy;*#jNBCbRr;m{cWhqD9wj*xV0=g@LZvcj0~ z?n3{DzFo%y?{t0taJZ;FVOZ9zny$3yoq1{Gp$9i`j@7(ucXjOjaf52{pJz_xHHY4H z>3VHxlrDj|7;&1k_cV(Fw(69n1BH*;uKrQJsI59yDUkjTXIJ%hG5=SPgbYcVgssp%O&Q#7fQmZ6%rFCxBXP0-_)gOY z?*ohjlq#Ydrq_+!$?svOzI@i;e4W8y68V5;fBM~4153kUVbr}93px$Ly1Hw2Y_p21 zp2zW$nL83N0N9zmlB814zTM}DoR5}};4YM8+Yh?zi+v&9{_QjFfz^PB1P~c6qY`WJ z2f?tJz7f+W5WAjg0D;`rQXrY|YuYhf`kA3c)0pOZG3h+v#?5MZAmCuLxMb>B9i^bC zr!zQide>hbB)N|C1*69XmbI`aaJzMnDNL%Zmr1=SirOPhKW||_&L7YG!LA#9?t`UG7G0hW`@PWwDq!A?Ng|?SXLlA+n7f<2Zu6g{)jX68Z{sz->>M< zY=qPaU7aJTeBT3uwxGrJXGf=fBf_n>siesL1@O7_U@RWwcW_2@RnVjM zy}sH@;cLet{ne)hDa$uq_n2;@V0B=f`HRmDdX}#{d=+?lF**H2XF0y(fmH#g*nk|w5 literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pil b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pil new file mode 100755 index 0000000000000000000000000000000000000000..28982c0fa7339e8c3bbb2bbdd5b08663bfcbcc49 GIT binary patch literal 5143 zcmeH~-;0(-6vxlZuDU&fmSz%)uox(YX@)Gih%1y(N-8XBD5l^KSTKziEfiVASWpoa z6hVbTL=?q~wHv)qFT_AgP(!=0AcU}s^}@(q*Y)XhW}f#j@B9N1?830`_w$}P=ggU( z@6wMKZ`|@lXVDt|-k;f8e7K-}K_NqbLlyWhD==Jxm!-HW3CAa8u6!X4`k&SSsjT?br774+*%#PIzJ6U^tC-rU78xfal$9khl#QcJfW#R6(pbJki%hCw zIASysV-l>nicw?Duy-u3_8mlvOr?kV6OF<6rt)z*(PE5}Z#`OMrj6qzc7te<*;a!x zjCD4w#aJ9~3#>JXtK(>;wZ*Z8x@fF6+QNjX-9p-;j4gsKO_=swN?V>V?Yo?|Dr2i) zYcsYMwjpC1U>zCjfNiOmqwYHATWDWe{gipMNM|)iTGK{q+6nu*s;QI%uvci2o%D!x zjoU7I=UuRG&0jyC99m>wtZ7&q>SG`6aI~}aau{~Z`bK}pU?(%Xldw}6I|VzN zv9qv?nZJv$ONpK4a*1{&v1<%kx&kryF6u0u+bSC z4SOrHkTdpZaT7DUiLl9u9pgZYn_97IpQFXSo9s8v1GKmq6|33JfXzzmhLtbT;##UT z$wxeUw77Z6p61L!i)*Xdv7R;OHrm3tcBw%)!_eXu+ddlLTh-#0*&5gNtXkZP%x(p2 zbz-M|SJT!dcADQh*e08|7I^o^>nkNwUUuFFb+u+8U30wHNlc z*@b%_Elzij`qOu!?#q5!S=o7*#wbNMNBT~5x>@|NDu%vA8_NN-_@?U2uKc0JkE;BI zy;{CPiyu?B&sB?m+j7x;`3fz*_Qn+6KI~Pr_{m9(5kZTemW)kvnFfC^vE%+gi=Sop zM|hW@#kVl>Skv%6MT?(Xy|2Q(Mclctc@@*TXbkQnKcCXjmvcOvr)cr%dy;n(TKr+)b1Iy`09=_ z#vSE5t$uocc(nL$tnYIjBU*fy-CL1$!MZcn4Lgvr1F$2;`hq|1BYz^+gl<_Co#>xrj6LmpGu8`x zma%8BK4WogeXv0rTiE+(Y4EmQLY>jlpu3zp*YZP4L-iZc7{3u4#>W`O#=|BV3-ill z6|A5!sXuffqhxHwLS4{>yvZ-m7&qjCF8GZZ7}-RB6JX8JpRs1xl#ES*P0!eL*aybK z{y-NpN8Zr5VSe@h9N2uzFTADDg?uFXf>yh*KhTAIVtqrM(S!=E%B!@w!wBpJLWC=+X35cePhnMVci+) zhV9STe%PUm9fBP-7RPoJcHD9a>knPXcUDtf2M%4x>1b#9orax{{*0Z6^<=CEcG+00 j!DZO>I)5Hr$d9Zp>We?k&!Y?Z+2&mPdUPSb$k=}Y_2lj% literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.gif b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.gif new file mode 100755 index 0000000000000000000000000000000000000000..64a9b93c89b6a22d4760777b34790a57344da9cd GIT binary patch literal 16336 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 JABO>={vU+{Ez$r0 literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.jpg b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ed01c4e6769b3f01b13d78c6ee4e99e123d36464 GIT binary patch literal 4788 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 su#|>TAcLF_$&DnbW):V1EW/>e7EÞ˜käqã¢râœdâœpãœoæŸmæ§|é¤uæ§wå£pâhå¢pä—]Ý‹Y¿r[¢XF¦[L­`L¯hO²gO·hP²mU°gR±iQ¹mP¶oW½sRÃ{WÈxTÇxTÇ~^Ð[Ê[ÐWÏ]ÏZÓ„]Ë…nÑ~\ÔZÒVÒƒ]ØVÓƒ^Ô~VÐ[Ï‚aÒ†eÒ‚[Ö^Ñ}VÍyUÍ~WÌcÏ~YÓXÊ|\ÍZÈ|[Ì~^Ï…gÕ€YЂ^σ_΂aÐ\Ð}XЀ[ЂbÊ}ZÍ€cÐbÐ~WÍ}YÌ`Ç{ZÆ{b¿yb³nZ³lS®h\´wlψnÙ“qàžuá¡wä¡zä¦zà ~âŸnâŸdäŸhߘgÞjäšcá›oÞšpÛ›mÞ˜fÛ–iÙ—oÖ“kÞm÷ËùÙ¢ûÝŸüÖ•×¥j©dM®kX¼vW¾y[Å|T¼x`ÁzZ»t]ÀkÃ}_Ò€`Ô‹g¥^RgIYW'7X/DZ-8a1:f6=æžhåfãŸzæŸkâjâŸvæ£måªrè¥mä¥wä¡iájå¡oç`Ù_¾pMžYM¦\J­`L³jQ¸lQ³iM´eI¯eM¯fP¸jPµgNÀrQÆwPÅxTÆ{\Ç]ÌYÌyRÍ‚]ÎZЃYÌaÈ€gÌ‚dσaÓYÑ‚ZцfÖ†cÑ}XÒ{UÓ‚aуcÐ…lÊ{VÎ}TÊxSË|\Ê{^Ï^Ë}_Î|\Í|WÌ|XÑ€^Ì^Ô]Í`Ï]чeÈz]É€Z΄bÏ\Ð}YÌ}]ÌWÐ}\Í^Ð…`É}]Ãw`Æ{bºnW·pZ³lZ·sbσh×”yÝœ|àžwã£{âŸyàžsÞŸráœrã¡nâ¡fá›gàšnâškßvÛœvÚ˜lÚ•c×”fÙ‘lÖ”kñºyùÕ˜ùÙŸýÞ¤ôËŒ³nN¯kT¾uT¾uU¾z\»xdÅxV¹x]Æ|`ȃ`ÑŠgŸYIT/DW-D^3D\*7e5Bj5A^2<äŸpã rå›iã£væ¤zç¥xëªqèªuä©tæ aâ páfæ aæœd݉U¿oS¡]N¨_V«aI°dNµhO°hR´dJ³fM°fN¶jS»pVÃrQÇvVÁx]¾wXÇ|bÎZÍ{ZÉ|[Ì}YÍ~_Ï€\Ì€a΀bÓ‚ZЄ[Ï_Ï]ЄaÎaÓT΃m΂iÏ~[Ó|VÑ{SÌ|VÇuYÉyVÊ}aÌ~_Ì}WÌ€]Æ}aÉ|[Æ`ÌcËcу^Í\Ê‚fË€dÏ„cÈ~bÍ~aÍ€aÉ~aÊ}_Î}TÇjÊ~\Èz[Èy\µqb¼r\¹kX¸teЃdÖuÜ–màœtávâ uÜŸtÞœpá¡páußràšiášnßœkÜ™mß›oßkášnØ™nØ•pÔhבhõË‹úØžû߯ýݠ㸪k[±kS¹rV¿xZÃ|\ÂxVÂ~aÆcÈ„\¥^QW&6R':Y3D^*=f6;f1=^09i7<âŸnãœgá«å¡uç¤nê©rì§oí¦né¢häžkâžmâ oç¡pæ›lÚ‡U¼kN›RD¡[Jª[H­gX¯eN±gL¬fK±cM²iVµiP¸lN¸pW¿qVÃsQÇyWÇ{[È~[Í‚bËzZÎYÏ€ZË]Ë|^Ï€`Ð~\Ï}UÈ|^΀cÒ‡mÕˆhÒWÕ~[×XÒ€]Ï~YÏ|YÎ{YÈvYËwWÉ|VÍ~ZÆ{[Àz`Å|ZÌ|UÍcÈ~^ʃiɃfË‚bÊ~bÊeÒZÐ`È~`Ï[Ë|`Ð}YЀ\È~dÏ{WË~aÃu\À{eºoS´m_Àwb΀dÕŒpØ”oÜ™sÝštàžwÝ›pÞžwÞ xÞœuß™qàhà›räkà›gášhÝ™ràšlØ—nÕ‘kØ‘e׌[ç®xùÔ˜úÜ¡ûà±ùÔ•ÄŠ^®gQ»pT¿uW¾}bÀzZÊaÐ…f›[KW'8U,>Y-?Z,>e6Ba.:`3Bd4=Z,6å¡häŸgå£xä¦zçªyé§xê£oç¢iç ræ¡nèŸdçŸlèŸjæša؈\¼fKœSD¢ZG«YJ±pe´dL±eP°eQ¯eQ¯bP²cHÀkMÀrRÁx\Ãx[Ä}_ÄvWÊxWÍ{WÈ€fÆ{[ÌyUË|cÎ}\Ë|\Ò{WÑ~YÍ€^ÑcÏ|XÓ}WуbÑ^Ï…mÔcÑzWÐ}[ÍzTÏ~YÍzPÂtRÍySÃvVÇxQÅsTÈyVÌ~[Èa̓fÍdÏcÐ~YÊ~`Í€dÏdÎ|VËdÍzZÑUË]Í{WÉxVÇx_ÀuY»u^¼t^»lV½r^Ì‚iÔ‹lÔ“zÙ•sÜž{àxÞŸwÝšsážrâtßšháœgß™lÞšká ß™fß™mݘlÚ•kÙjÚ`׌]Ö_öˈùÚ¤úÞ§üÞ¥òÆ…¨dO­kR´qY»oSÃ|`ʃa¢aQ[.>W-AW*:\3C`3B`4@`7Ib,:_-:Z);äžlãjâ yé§té©|çgãœqåžfä wê¥eäŸfåkè¡kç˜]ÛˆY´jQ–RE¢`O­`L®cOµjU°bJ®bI®fM³fOµhR¼kSÄw^ÅxSÅvSËYÇ{ZÇcÏ|[Ê‚gÉ{WÎYÍeщsÑZÍhÊ}\Ð…gÍ~YÒ€bÔƒdÒ]Ó|VÑ„cÒ~UÎ~]ÒYË~bÅzfɃuÈ«§È¨©Àšš½†·yhÁvXÎ|UÈvTÈz\Èz]Íy[Ç€aËcÒ]Í‚bÌ|[Ô^ÎdÑ}PÊ‚dσaÍ€_Çy`Âw]»nT½oR²k\¼s_ÆkÓŠkÕ’tؘyÛ˜tÜ–mÞxßœ|Ü›sâšjßœqà™mãžhäœcßqß™hà•dÙ•oÖŒaÚdÚŽ]ÙcÔmå©múЋúݦûß«ù×™Õšb¯jS¯kSµo]À}[¢^OY+:U+;U)?`1D\1Bk>Jb3Ci7H_/;_/;]1?ã£rå¢né pçªrê£uç™aã“[Þ“bäœmè¢eæ¡mä sè£sæ›hß‹\ºoR£[PŸWG­_L­dP°eO±hQ­eOµjN±eM½kMÂsUÁpRÈvSÊxUÆxVÍ}WÌ}VÏVÈ~]Ï^Ò~ZÒ]Ò…hÓYÊyZÒbÈ{]Ï„dÖ[ЄbÕ„XÒ}VÌ}eË‘‚¼Ž¾œ–¾‘‰ÌŸ‹Î¡Õ²–Ñ´˜Ø¶ÙÆ´Ô¼¬Ô¯ŸÕ»§¿»s[¼sYÊgÆyYÉ{XǃlÅ~g΂aÎ}]Í{XÐiÊ~aÉ~_Î~`ÍxRÁw\Às\ºrc¶kWµpaÌ|^ØŠgבnÖ‘s×nÜ—rÛ–qÝ™sàšpÜ•hà™mÞ–iá›lå›eà—gÛ–lß–gÛ^Öa×fÚ\ÖŒ]ÔgÕ‘dôăùÙ¨úÞ¤üá©÷ˉ®kQ¶pW¾|`Ÿ\LT%8X1HX0D`0>c7Ab6@a8Gf>La-:[):c/b2;i;H_-8d3?^4F\+8c1:\*6],9åžgë£rí­uë¥qä•YÙNÓ{LÙŠZçœhê£dë¥mé§oì¨lçŸgÜ„V·kO›M@ UG¨[F«aM¬_H¯_I³dM¯bL³gO¶fO¹kRÅpQÇtUÑzTÍyRÊyZÐzVÎ~[Ì~]ÍzYÓXÐ|[Ò\Ð\Ñ}ZË{^Ñ„kÉ„qÍ•…Áx_ĉqÆzÀŽ~È”‹Ë”|Í”tÉ“ÅÊ‘vÍž…Ó¢{Õ²™×¯‹Òº¦Ò·¢Õ¬Ù¼›Õ»«ãÈ¥ßİÀž”¼oU¿sZÉ|cÊeÍ{_Çx_ЀcÈwXÈw]Çy[ÂoS¾rXÀpQ´iS±m]½oSÍ`׌iÙ“lÜ•wÖ’oÛ“oÚ”sÖ•wÙ˜uÜmÜ”hÜ”iÚ’hÜ—kÙ‘bÜŽ`Ý‘hÚ‘mØgØŒaÙŽ`ÙŽdÙ^Õ‹_Ñ…^î·uùÚ©ûÞ§ÿä®ÿÚ—¾xXX,AQ';U&8W0Ae9Ce1>h8G`3<[2E`/Ag9Fa8L[,=_.:çŸjí©hí©kègá‹YÈnB½lKÛ‡[åœfè©sí¦më£nî¥kè¡náŽXÀoOšYK•LH›VK¢\S­ng¯dJ¬aL²aI³fK±hTÃnUÂqPÉvRÃv[É|\ÇzZÎyPÐzQÏzVЀ_ÑiÑ_Í€aÑyWÓ‡kÖ•qÊu¾„j„nÂ~m³vh¿j¸|s»rÀŒ„ÆÌ¤—ǜǬ£Ñ¦’ұɧԩŠ×°‰ÙÀ©Ñ¶£Ü·…ÚÁ¦ãÁ•ÚįâÁ£Ûů¬jZ½lRÁpV¿zcÆy]ÄzaÃs[ÅzaÄv^Àt]¿sU¹p_²lY²fNºpZÇ}j׈gÜ’nÞ”mÙjÛ“jÛ”kÛ“uÛ“nÜ—oà•kÙaÛ`×fÜ’fÛfÜ‘aÚ‘h×eØŒeÚ]ÛŽZÜ]Ú_Ö‰_ØŽdùÉŠüÜ þä²ÿå­¾pLT-AY-EX/?a2@j8Gc4Ei=K`.?X+@d3Ac5Fb1A^-:g29è©rï­oêœaå•_ÏxI¢RAÄqKÛŒ\åžeë¨ré¤jé£mï¦méš_ÜŒ^¿lIJD—TI£VG¥]K¢]N­aJ±jN°fO°fP²jU´oZ½sZÉsLÃrSÇrRÇuRË{]È}`ÆvYÍ|\Ï}aÐzWÍz\î°y¹mR½ze¿vU¹zg½|h¸zfº…|Ä…l¸t‹wÅ‚eÅ„kÀ”‡Â€Í¥ŒÀŽÇŸ™Ô¡yÓ°—×·¥Ûº™Ô½¤Ú¹¥Þ¿™Ö´§ßŸٿ´ßÇ«ÞÁ¥·™Ž®lY·kT¿ubÄvWÀs]ÇuW¿s[ÆsVÂpT¹pW·jP¨h^¹lUÍ`ØŒmß”mÜ”nÝ“jÜmÚ’k×’qÛ’oÝ“lÞ™oÛdÙ‡Zà`ÞŒ\Û—lÞ]ÙŽ`ÚiÕŠ`ÛŽbÕŒdØ’jÙ‘jØŒ`Ø_è¤mÿÛ¥ÿä³ï»wK&=U*=W*:Z.?j;Gc5Ag4@\,:T(=^->^/:V+7_.;f6AW'4ì¨uèœhÚ„R­^E’JD¿qMÛ‰Vä¡mí¥mé£ié¥ué¤eèœl߇Y¹jO’F>”M?›[N¥ZK§bR«aN§aO«eR®eM³dIµjOºqZÀrS¿tZÃuSÃxWÇw_Æv[Ï€^ËbÐ}[Ð{ZÊyWÄrPÀoZ½v\½u\¾€p¾xm»zd¹}lÈvº‰½†tÌ‘xĉtɉkÇŠqË—~Ó£}Ó²˜Ò³¥Ô¦|Ó¸¤Ö¶©Ü¾žÙ·¥à½—Ú¿¦âãØÅºÝìÙǺáȰӽ®¬fT°jY¶iRºoU¼pX¾r\ºr_»p[±iY¹jN©aP¶oYÐ_ߎcá˜nݘtá”iÛmÖŽjÓŽiÖlÜiÚ”qß“fÚfÞdÞcÝaÛ‘iÙeÞcØŒcÙeÜhÝ_ÜŽ`ÜŽaÞ”jÞ•fÿˆó¸uU';V*@T,CZ.d3>f4>g6A_1>Q(;e;Ga1?U,?c5En@LkŒNH“UL™WK¤YJªfXÊ~bÜlæšlä™oä˜há˜má’jÓ‡j«i\f19^0EšaXÃwZÛ‹fá•nÞ‘lߎbßcàŽ_Ý`ߎhà‘få–mçŸxAET%9\3AY*Y,@n:BY.;X5D].<]4EmHY‚R`¬ytÈ‘wјu¾…nÔžy£[JWN¢YH¤^QœVCZP¼jNÚŠ[äšfì©tí¨xë§vë¨}ä–cÙˆj¹jP‘NJ’KF¢WI©aN§`Q¬dR¨cN­`H¬dO±iY´gR¸q[ÄsSÈsP¿t[ÃwZË{_ÃuZË{XÂsXºnTºnU¼pWÅrWÁoR³n`µ}t¼p½u¸yg¸yeÈ^ÒŠfÇ|ÇŽqÑ‘nŇlÏjË‘x΋tΑzݲĕ†Å¦‘æÊªåʰãÊ´áͼèϰãŨÛÁ¹Ûþà̼ç̯æÇ¦ÛıßÏÄàÏÀãÒÀæÓÃîÝÌÏÍÇšj\ŽJA“M?œYM¨_LÏ}[Ühå›zä™nä•lå˜nà“j؈f°dKk08R)²dQÔˆkÝ‘jã•dáaÙŽhÞŒ`Þhä•iç”hë™fÇtRX+j5\0Di9OšjeÈ‘wÆsÉ’uО†Ö¥ƒÙ£~œUG¤[H¡^N¢]L›VHŸ]U¼udÚˆUæšiè¢oç¦}ê¦zë£pç˜aÝ„U·hT’LF—KA\Q¦aKªe]¯hZ¸hM«cO¬bN³aM¸pW¶mT¾nPÂwTÃvW¼oXÃrPÏ|W¬^J®aMºkQÁsWºlU·jVÃtX¹mY´ulºx_Æ~dÈnÇ{ΆkʉkÒ”xȆlÇ€pÃ…hχg͉b¾r½ƒÜ²’Þ¿³ãÆ´ÞÀ«ßƵݺ¡ØÃ¹àİÙ®äпâÍÂçѽãŰâ̼äͶæÏ¸âʱäкâпçÙËæÕÃçÚÍðáÀt;<‰F@¦^LËyXÛŠcá–kæšqçšpâšqäšwÖˆc±kSt;BZ(6U%5m15§[GÍzVÛŽkà’eÜfÛ‹aßeä”kèœp’SOV+9a2?].;p:Cd2=e4Ac1@Y,@i;J]+8_1=b09Y2@W.J•fkÇ’ÆtÀŠxÉ•wר…×¥~Ò ~ŸXL¦_Jž`S¡]LžYL›UL¿oQÛŒcãŸwè¥kè¢qè£uå£räœr؆gµiRNP–ULYKŸ[I¨`P²dP©aM¬eS²hO¯fQ¸gL¸nUÆvW¿sWÁw\½oW캀ÊoH½jM·m[ºnW¿vaÂoO¿pUºr[Ì{ZÄd»yjÇzj͆jÒ–x¹zqÐ…fÕ“uË}Ä{_¿{g¹s]°paÜ­}ä¿–Þ¼­â³ŒßµàÀ¤Ù¶ÝÁ¬ØÁµâĪàË´ãÏÁâοàÉÁâοãÓÆãϹæÐ¾ãÐÀàË·ÝÊ¿âÐÀæÖÀëÚÁíâϵ¥­{8>—SIÆvXÜgã™râ™lçšoäœuÝ—uÕ†c³iUw:?]-=_.;[(7s45¯aJÐ{SÕŽkÚŠ\Þ†UÜŒ`å•iÎyLW)9V+<_0Aa2=f0=c6i5@c7AP(?}KUÁ’ƒÌ–ÄŠpÇ“{Ó¡zÓŸvÔ¢}Ø£y¡YH XIžZO [NžXFšQEµjOØ‘käšdë¢jë¢rê¦sè¥væ™iÜ‹\ºnV’OF’OK¡VH¤]N©aK­`G²eOªaPªgT²m]¸mS±mYÂoRÁtY»mP¹k^úÈ€°`T°iY³fUÁsY»nSÁsTµlTÁu^ÇvZÑ}WÃiÌ…lÏ…eÐŽiÆ‚h΀]щnÄy¹yh±n^µzpßµ¥ßÀ¡áÁ©â½™ß¼Ÿà¸œÝ¯‰Õ·¦âǰÞÅ·ßɽ۽´ÞʶâÐÁáÈ·ßʾá̹ãκֿ·âÌÀåθãÓÅãнâÓÅåÖÊéßÔðàÈšXPJFÂpL܈aä˜fã•kß—qå—gãœuÖ‡d°gRx>K`.C](4^,6S".p=EÏ¿¹éØÆîÕ¹Ù¾±æÓ¿Ø“ob/AU*<[.@^1=f1=h9Ff;Gh9K`8H^-8^0Gh8Hb1;[/=d7K»…yÑ—yŇpÃwÔ£„Ó xÓŸ|ÒŸƒÕžy™XK¡\LšYK[O¢]RšUFºkOÕŒhåšlé¥wæ¤w䦈é¡mæ—c؉^¸fHŒEB–PGžVFXGª^Jª^N§bL¨]I­eW°mV±eOºjO¸mSÀpO·eOÏŠ`î¥e´fU±iP´mU¸q]Î|UºmWÃsW¼{j´iZÊiÎ_ÏŽnÁ~nЈaÀƒp̆jÄxW´yf´rfÊ™‹Ü²£Ý¯ƒäº“جš×¯™àƱԯ¢âÅ£ßÀ¨ÝŰßÄ«àIJß˸â¦ÜÅ·á̻ܿ¨Ùòäнç϶Ýȼà̹àÎÀàÐÁãÒÆãÒÆåÕËèÞÖÑú‡GA·nWÔ‡lãšqå˜lå›häœsá•kÖˆh´kSr;A[)7Z'8U'8Q.AâγíÕ´Õ¶¤äпíßËíâÔéÔ±L&AQ,CZ-Ah3@d3?gAKa2?`1?d5Cb4Dc4Gja3>d1=V.A_0[2Dd5Cc0:_/9\.=d6Jm8Cf3^.8[,=d2Cf4?W*6Z-B¶uÓ›…ÈzЙƒ×£zÒ Õ|֞јzÓ€Ö›yјzÒ™v¬dM±`F®cO«dP¯aH«`IÉqHߌ]ߘiê¥pì¨sï®sí¬sé¢mߎ]¼nK˜OC“MCYK¦bTªbK±aG®`I²hP±`I°eL·kO½lL¹lR§YKûڥ᥄ËzTµhQ¸mV²bM®aP¾qQ¹qZ§_YÉyYÇ|c²fUÌ{[½ubДƒÖšÚšnÒ“qЗx¸xlÛ €Ø¦ØŸ‹Ø±Û¤‘Ӣפ—×¼·Þ¸™Ó”{Û»žÛ©Ò¯žà¿ªÚ²Œ×± Ü¼¬×®›ß¿¨Û¬‡×°¤×µŸß½žØ»£Ô·¦Ù¾­ÙĶ׼¯ÛÀ²ÞįØÄ¸ÓµŸÑ¼µÙƽرŸß“`à—ißïîÔ«ÖµŸ×±ŸäÔ¿åÏ´àÈ´ÞʸáDZßÊ·âιãͼæÑ¿ëÔÂñàÏñÞºL'@W2G\2Da2A^0>]+:Z-:d3@c8Io>N™^cÏ“|Д~Î’xÖž}Ö €Ö }Öž~ÓŸ~Ö {Ñš}̖јzÑ–x­gN®dP­gQ·gK°aH°`HÆqMÛŠ_ålì¤gî©kì®uî«uê¦sà”h»oQ“J<“NB¤bU¥[I­dN±cJ³cJ­cK®_G¬aK´fN·jKµeG¥XOýÖ—èžnÙ‹ZÃwT¸kT¸nR·gSÄvTµnZºhPÆzWÀzoÍeÀsTÌxÔ•{Û™sÏ„fÕ¡†Ãx_Ú’qÙ ‚Ûž„Р’Õ™…Ú¨ŽÕ²£Ù­†Í—Ó¡“Þ·šÝ¥ƒÜ¯”Ù¯•ݶ–ݵŽÞª„×·¬Û½®×©‡Ü²ŒÞ¼¥Ó·®Ó°˜Ø¾¬ÖÁ¾ÜÄ´Þ¿¦Ø¸¢Ùº¨×»­Õ¾®Ñ»¬ÖÁ¶Ó¸¬ÛƸٱ êӷ׳‘߸•ßÈ´èϵå̳ÞÊ·ßʶàȳãÊ·áÏ»âË¹ßÆ«æÑÀçÒÁðàÑïÞ¸E$AZ/@`5D^3J^/c3A^->k>Pj7?a3].Aa5Aa2?[)7a0;Y-=Pa­y|Ó—{Ò’rÍ—€Ôž‡Ö „Ó¢ˆÙŸ€Õ¡‹Òœ€ÒžÒ~Ñ€Ôž}Ô›sÖšqªbI¥_L¦WH§aL¦bM°bLÁpKÛŠXçfì¨vê©uè¬uê«ví¤iá’`»jM“ME™NG¦\F§dS«dT°bI«^IªbO®aM®`F·hM·fF¬`G­eMôÃ{é­{â’cÝ’jÙŒeË}X´k\§]N¸hQ»kMËŒqÕkÏ`ЇgÏ‹cÁ~fÖqÖnÌ‘ÏvÔœuʘ”Û¢xÖ•~Ó’wÙ¦™ÚžxÜš„Û­˜ÚŸ~Ø¥„Û Õ•}ݱ‘Û£‡ÕfÌž„׫ŒÖ®’Ù¨‡Ü¯šØ«™Û¸¡Ø¯’Õ§“Ò¬›Ô­™Õ´¥Ê ŽÑ§˜èʥб™Üº™ÜIJèαáȶÙñÜÀ¯Ü¾©àİÞűáȲàȵâ̺ãͼäͺåϻș†×¯»}kÒ¡‘Ü·šË¹«N%9W)5c8D^0:U+:f6>\-:n?R˜`hÕ•xÔ—‚˓؞‚Õ£€ÓŸ~ÖšwÓ‚ÒÕžzÒ™xÕœrМ~ÒŸ{Óœ~Ñš{§^G§]I¥]J¨^H¥[H«aOÅnLß[è¡fì©uí©pì©pñ©qí©kà‘e·kR™SK˜RN¢XK«`K«\L­^J¯^H¯cM±aD´gN³dH¬cM¨]IÆ}QòÀ€æ±}Þ›zÚ‘qÌyVчfÇv[¶cI²dN׋iÕŽpÔ‡hʃgǃdÉ‚fוxÖ‡aÍŽzÕ‘jÊ‹sÐxÔ–xÒuÓ”|Ü¡yÙ™~ÖÙ•t՞ћ„Ñ¢’Û¥œÛ«‰ÑŽpÅ•ˆ×¬ˆÛ¡Û­˜ÓŸ†Ù±šØ®¡Ó¤ž×§šÖ¢‘Ö¨”Óœ…Ç—ÊŸàÁ¤Ý­…⼋àèæÍµäǬâÁžÝîÚ­ßŰáŪßȵáʺã̸á˵ßʹãÑÁçҺʛ‡Ð¨Ä‰tÙ©•Í—‡çиS.@Y1K[1=a8@];MY*;c2@\/EyG\¼ƒvÖš|Î{Ζ„Óž}Ó €ÐžƒÒ›ÑšxÓžƒÓ¡ƒÕž‚Л}ÏwΚyΙvÕšw¥]F­cO«_J¨bNªaJ²fIÇvVߌ\ä mì§tí­së­xí¯{ê¡hâ—k¾qR•K@—J@žXG£_N­fR¬aK®]D³`H®cMªbM®cL«`F¡WGáš^õÄ~í¯sêœ]â“RÚ‚Sá”_ÌuO»bGÑiÖŠj˃hÇdÃ|`Â~kÙ“oÏ…c×–uÐ’vº|pĉ~Ó–yÑŒjØ”uÚ¡Ú™~Ô•ÉÏ›µ”˜©Š’£uvX^Ë–Š×š{Ý£Ù¢‚ؤ|Ñœ‰Ý¥ƒØ›…Ò •Ó¢”ТžÐ«¥Ñ˜{Ä—Ú¹žåÀ–Ù²›ÛÁ±å̳áãڻ¤Õ¸ Û¿©ßÀ©ÞůÝÇ²ÝÆ¯àË·ã̺ä˺âÊ´áͽæÓÂÝÇ´Î¥‘ÅŒzÏšj«l`بŽîßÀI$=V+?a8J]3AX.?iBPc1=d6J•aeÖ˜yÑ”€Ì“yÒ‚× €Ø yÕž€ÓšzÑštÔ›~Õž}Óœ€Ðš|П{Óœ}ЀԜs§]J«bN­cJ©dP±cL·hQÈuRàŒZæŸoì®sì«pê­xí©lð«uàZ½kK–KA—PG¢ZF§bS©_K°^F®_F®`L¶fN¯_GµbH¯]F¡TFØ’NòÇò¯nížTì Yç [ìœ^ÛˆV¸oaÎaÈx_̃iË‘†¸|nÌŒuÚŽkÑŠqÒl¹{fÇ„nÍŒvЊ`Ô–yÒ”}Ó–ƒŽSZ«}€©mgUYžjjž_aʋ̙ˆ\c½ƒt٠ة•°Ž‹Â‰~ר˜×¨•«xh7LÊ›’½ŽŒÆŽ‚áÁ®ÚªÚ»­âdzèÈªãÆ­Ú½ªÜÁ©ÛİÜÁ®ÛƲàÈ³ßÆ°âÈ´â͸ßɲä̹æÐ¹æÒ¿æÒ»Ò§ŒÆ™z‰QJžcW¼‡…ëÕ¿À˜oL"6Y-?`18[(7_0Cl9?\1Ei7L¹‚tÙœwÌ’†Ï—~ÔŸ{Ù¢|Ö ƒÓšzЂњ|ÔœzÒŸ|Óœ~Ôš|ЛwÑ|Ïœ‚Μ|©dT«cT¨dS«bL­aP¶eLÐwRáŒWéiì©sîªqì®wì®|í§nå—c¾qR”LCKA›TE¥bQ«^H°cL±dO²eL·hO¶aG²bJ°`BŸVDÐPöË÷»‚øµeì¤\éšYéžcâX¹o^Ãt\Æ{eÁ‚rº{oȉuЇcЇiÍuµ}n΂eɇtʆmÏt×”zÓ‘s«q€ÍŠq»xm¦jk‘]hZeoE\Ö¦›Ø£Ÿ€¤©†¢ ƒqE_‹\k rq”ai_2KlEb†^nR,I̜彙С…Ôµ¡ßÀ¤àŪܾ áƬÙñÛõÝÀ­ÝÅ­ÞɺáɸáʲâɶåηáÌ»à˵æÎ¸çϳΞƒ—XD•TH\N´xkâÁ­ìÚ¹T,AT)<_/=a.9X)7f3=^/:X0F”dgÒ–Е͔֢…ÓŸ†ÖÓžÕŸzКwÑœ|Óš{Ïœ|ÒœzΛЛ~Ì™ЙyÔšy¬^K±gQ§bQ©_M°eMÇmEÑtLä’[êžbê¬rê¬líªsì¬pî¥gã—i¾sOPH–K@TJ§]JªdP«_G®cM°fR¯aL±`J³bH°dM§XD´cEýÃxù¾jþÅjñ£VÙ‹\è˜[¿va¶q_½tYÀl®jaÈ‚j͉nÈ„nÒŽqÊ€dÈ„mÒˆiÈ…lȉwÓ‘zÊŽžemĉ¬~‡¢q{£di¯ty“eƒ‰g†žp†¥Š¨†YpmHed;\—€Ÿc;ZtNoX.?P'AS4VL,N ‰”Ô˜tÓ¥˜ÞȸæÈ«áèÞìÞÁ§âÅ«ÚįØÁ°ÜÁ§ÝDZáÈ´âȯáɺæÐ¼ãÍ»çÏ¿äÈ«Á|P’RF—`RšZI `P±q_Ý´œìѲD5R-@[0Bb3Ba3>V+8i9CY.V‚e‡^3Iƒd‹]5M?1E&Bͳ¦¾ƒu̱®äÅ©àÄ¦âÆªá©Þĩݾ§áÃ¥ßñ׿©Û¿­Ýī۰ã͸åɬëÒ»åÍ®›\M–RG—TE˜VHž\N¨iaÊ—ˆæ¹˜ê˨a03U'=X,=c3A`.=^-?c2_1?`4A`5Cd3>_,;[-SfA[€U_c@RZ-EqFYX+@oFjM\a1Ec8U’s‹‹g‹Q'Ata”@4†_lÙl¸€nÝ´åǦٷ•Ô±¢Õ»­×µ™Ñµ¤Ð¯–Õ´žØ¸¡àÁ¨ÞÁªÛ°áĤг~PSpBJ›v~Ÿx„¶•’Þ¦†å¥yè©vå¦ré·’òÍŸa.1U';\-8_.;l8Ab7?a1;^-7d4>`>O\7K£pmÒ“sÏ’xÓžƒ×£~Ö¥€Ô¤…Ó¦ŠÖ£‚Ô£…ÒžÒŸ‚шΟ͈Μ„Í˛ʙ}ΖtÍ–y°kV³iW²fR²dK¸dG²fGÈrNá‰Vé¡jë«rî«oê©tî¬uì©yâ’aÊuP–NF’GCžWH¤\IªcO°bJ«_K¬bM°aJ±eM®`K·fL¶eF¯`FŸZLöܱúÚ¥î½ä­„á›q¥YIÓŒoÌ…oʉ{£b^ÀzhÆ{b»znÆy`σkÕŠoÏŠv|h:Gc4Ad5D]+6f28X0Ae:N¸„|ÇxÊ‘|Ö¤|Ú§~×§€Ö¤„ب†×¡Ñ£‡Ò¢€Ó¡~Ñ ÍœÒΜ€ÍŸ‰Í„Í›‡Ì™ΘµjS±mW·iP¯gU®bL³\CÂoNÛŠ^èaê«wì­|ï®sí«oì¦nä•`ÇuRJ?”NGšNH¥[J©_N­aJ²gQ¯aK°bM¯^G¯cP¹iLµhN·iQ®bLžWKøÝµñ»}è°€íº}¾wSË{_͆p·rfÁ{c΀dÇ~jÀvc²rq̇w­|„·vp¥fgŽ[ii>XƒZlY.EQ&AoB`ŽhuP$8a2P^1=[.@a/Db5Nf>TW-NŠ€¢”p…†QW›n~⼒Ῡݪ׺£Ñµ¡Ï±™Ô· Ô®’Ѩ׷ Õº§Õ¹¢Ö»§×µ¦ëĪ竉’SRšoo„RT‘ez¦‚‹kvÇ“„å©ñ ⷃV,<\.9U%4b3?h5@k9Ap?G^1;U)8\+>c6Bb8NŒXXÀ‡sµqКƒÖ¨‚Ù¨†×¢~Ô¥ˆÕ¢€Ö¢„Ô£„Ö¡‚ÑžÒ£Ò¢ˆÐ€Ñœ|Ïš€Í}ʘ{Ç•~Ë–|±jW·jVµiR­cM°gSª_N½iMÖŠ`è mîªyï©píªuð¯qñªkã˜gÊxY“KCF<—RA¡]K®gR¦aR¬_J²aL­bM¬bT¯eL´eNÀkQÁnP³gJ¢WHçµuöÆ{ð¼”Û™s݈[¿v_»rbÀxcÊ‚j½€|³umºup²€Š u‡•e{P_…OcŒ[lŽc|k?Ra9LO'A~Z{j?RrA][*=^/Ci[/CqH_§vk¹€m±€~Ó£†Ù¦Õ£×£‚×¥Õ¡Ô£…Ö£†Õ¡|Ó Ï›|ÑœyÑŸ~Í…ÐxÌ˘zÏ›|È•€»qX¶kV·kS®_J¬`K¥ZFµgJÚƒUã™gê«xì¬kë«xï°yïªvä”dÆwV“IDHD˜XJ¡UG°eOªbP¨_Lª_J¬^M¯bL±cLµjPÃqX½ye»oS¥_OЂPüÙ”öÄð«w¾wdÇ|d¥_TÁ{hÁzg¸}yȇpÏ„k³qr̃n°qusAVf;Qh9SŠaqCZ\2KZ3PpB^e†vK_X-?]/@`4FZ.>W1D\4M“h|}X†Œj’§‹“Òª”Õ­˜ÖµžÒ°šÌ©Ñ´ Ï®›Ó°”ײ›Ð°™Íª™êĥ뿩êÁ¯ëÄ­îÅ®ïÄ¡ãšw²aHHS–mv…P_¬ƒ†·ÃŠzœSBT$5S):^/@f;Ji8?m;Bi6Ba0W+AˆU]žpl±ј†o4AY,<[/i4;rDRe8Dj4@]-;_0>`/=e5D_.F¦tn¿ˆv±}q–„Ó¤դץ€Ô¤Õ¦}Π‚Õ €Ñ£ƒÖ¥€Ó£}Ò¡ˆÒŸzÓ£‡ÑŸƒÑ ƒÑzЃИqÍ—v±jV¬hR¬bO«fU­dQ¡]J·jOÙ‡_åšjê¨{í¬uì®zêªví§uå—hÆuQ–RJ”K=•OC¤]N«_J°bQ¶eN«fW«_K²iS´eN¸lR¾nTÆsR½mUºgI³cKÿÖšþͯgS¶gN¼oZ¹wm¼p]΄q¾mYÊ{gÆ{h—hnR%;[oZ.>W)@].B]5OwPlqHZb8SSo`9\¡°|Pi~W{O);F!7ª…ƒ¨e_Äž Ó¤‹¡†Ÿ×®’Ú¿¦ÞÁ§Òª“΢ɟ‹Ñµ Õ°™ß¢‰ç¬‰ì»žíǪëäíÈ©ïǨòË­ñ϶óͳì´ÊlJ‹JE\/APQwDQ»’ÍŠ]0HY3E]-:c1:f1>f6Ej8Bh3;g6F\'4f19X1?uHTµ†u¹†uÆxË›}Ä“v˘Ô¤ƒÖ©…Ó¥ƒÓ¤|Ò¢~Õ£Ò¤Õ¢…Ô Ñ›yРҠ~Ï{ÍŸ~ΙzÌ–wÊ”{­cN«lX±iV¬dN§bO¨[E®cN؆^á™hë¨rë«zì­|ë«sî­ræ“dÇzZ“PJQIœTD¢]M«eO®kU°l[¶cJ²hO±hY´fMµgTÄ{RÃrXÆvTºlN²`Pýàºè´ƒ¹jPÀwi½mQ­h^Í‚dÆw\PSxHQ„IQ“[_\.D‡[nU*Ea2>_0A`4Af69Z-E˜hiÄo²|iΘwÑž…Ê—yÄ—‚Ë“~˘}ÍœƒÏž†Ñ¢}ÓŸzÔ£СŠÒ£ƒÐ ƒÔ¤~М{Ñ›zÒœwÒ}Θ~Ì•}±lT­gQ®eOªgR©gT¥[E±fHÔ…aãjê«zë¬wì¯uí®sî§nä–e½pW•SM™SJ UE£^S°cO°fU±jW²gQ´bJ®aQ¶cNÔ†bÅrQÃqQÄtWÄsS·mZã™S伕ÇtPÄoP»r\Á}hÈ„y×…k³g[™Y[`4GT&:f9Wo@K[.Ik>QlAUa7KX)AqG_g7S‹f‡…X{[,?k@_C9ŠY]ЄlÌ’‚ܪ‡Û­‘׫—©Ñ¦‰Ø¾®Ó³šÑ¬šÌ¦‘Ø‘náœ訄䮑ëÀ¢ëÀ¥îĪíɹðʲñͱñÒ»õÑ·õÓºóɨã™z¦WBa.;Q":vJR¿¢Ï¤’]6IfI`i8Di:Fh=Fl>Gr^/X-;„RWÈ“€´‚rɘ~צ|ңѣ‡Ïœ}Éœ~Ìœ{É—}É›ƒÀs¿’~Å’uÇ‘uÇ“xÊš~ÍŸˆÏšyÊ™|Î~Λ֛{Ï”w°fP«cQ¯fQ¬cN©]H©[B´dKØŠaæ”gè¨}쫀ꮆï°tï«uâ›uÆvW•TL—OH YR¥_O°gS±gZ¯eS´mX±eS¸gR¸lS¾pZ½sWÁpTÀkIÁoL¼fGÓŒfÊQÂtQ×XÕŒx¯‘¡lmr8DXrO$Ck?TmIrf;VU(>l=VƒSgZ(;a7Mf?Td:L_1EoEl}RuH7†a}Ú p¹sbà¥zÛœzÛ¯•Ö¹¦Úº¦«Š×·ŸË§›ÎƒÜŠáŸ‚䥂鮑笄賙붛ïÁ îÅ®ìɵîÇ©ñ˪ðͯóÏ´÷Ò´öѮ︗ÉtT”PFU,BR(A†PZÙ­‘HO_,:d=Ok<@m?Ji?Ja5]3AnAS½‰sÁ†mÅ’}Ô£sئ‡Ô¢…ÐuΠ„Ô¤Ò¦„Ó¥‹Ï¡†Íž|ǘ€¿•¿‘€¿‘v¿w¾sÓÀz½Ž|Ä“‚ДqÉš|­dQ¯fP§_L°dP®eM°`Fª_KÕ‚Yâ›rç¨wï®{뱂ð±xí§pã˜lÆwU•PJ–RNžZO¥`S­hQ³fVª`O­cM©_Q²gY¿kQÄrPÉuWÄuYÊwYÙ–pÝ¥[S#4U&:ªmg´‰Æy]ÀqRb.FpFRN$@\4M”q•S&4h8H]0Ch?UV)=[,C`3Kf6IX/Bi8T[wQ(?¢yr¦_PáÅ·Û¥€Ü¹˜Ì™Ó¤ŠÛÁ´Ü¿«Í¯•‹G@­eQ·tcÉ|hØ“ä¥ëµ˜ëµ’걎벑췚îáëÁ¢ï¾¡ïšïȦñɨóͰó̪뮈ÃoRt7?Y&3P%9‘_tݹ©Ÿ^Zn>Gc8Ji=LrIRh[2JŽ]a¾‹|»€jÈ—zÑ¢‡ÒzÔžyÏ}Ïž|ÏzÓ …Ñž~С‚ÌšzÍž€Í›vÇ™ƒ½”¿•‰Ä•¿‘‚¼‹y¼‘…¹‹|À‹v‰q°iT³fP°fP­aF²`C¥^K¬\HÕ„[ãwé§vï®{ì­oî¯{ð©påœkÃv^“RNOHœRKª]L±eT°bK®bP¯eT¼jM¸fH»kRÁsXÇoUÃrSËz[é¡o¸oVo=G[(A´ŒŠÚƒP UISRb5L‘¤T.S}Yz’oˆS'=g;XmLZc:NW0AV'9P%8ŠlŠnMr‚[T)D`:EÄ€eÊ›ŒÝªƒÜ¹à½œÍš‚Ø»¬ÞíɑoÖˆkÞ–z×”xÄ}e’KB=;›XMÒté¯ç´˜ç®Œì¯Šíº—é¨íºí¼ŸòÄ™ðßé¹Ãfž^UŽH@‰C=X'6O*AsCUÙ¬›ÃŒwY-?}HLm;Cn>I\4C]0vKgS(?^7HyL_P!0\)6U*C‚lqX1=E 8Òž»€sà¨zß²’àÆ­Ò¨ŽÖ±ßÆ©¸lOÑ~_ÒŠnÓŠnÈ{^àœ„Ó‰l²dX£VG¤YNÌw]å£éªŠê®ì¹šíÁŸîº™ì¶™ê¶µmYŸ_[®h^¶lVÇrN¨ZCs:@Q(sHUÙ®p_yDLf;@me1;c0;S&>†RX¿•Џ„r̘|Ö¤}Õ ~Óœ‚ÏšvÕœrÍœzјvΞÎxÏ|ИrϘzʘwÊœxÉ™}Ê›ƒÊšƒÆ–~À’zÕ»}ºŽ³‡‚©`J§_P¤^Q¨\L¡ZL˜QCŸXIÑ‚\â›jê«zð²vì±nð²vì«{ä—eÌzT’ME’OG—TE¡TE¨^J¶cJ­_H¨_J¯aJ«\H­aZÓ¥ç¤fÞ[à˜uâ–i¾„zb2AIHH"CxY|Nm“€«…f‰‰eœ­A:|Wtg>R}^rV,EL#6U)B˜xšS&:]'7K);K#:É•gÛ¹¥Ü¤|ß·¢äÌ·Þ¿«Û½ŸŒJ<ˆB>h.5l29h5Ac-8rNažno[-9\(9¨V=ׇ`Õ‚cÜpâ”u꧄レô̰òÊ¥·uXf4A_2CƒGHv=@d/=kJQ(A£mdŠnÀ†vÕ ÒžvМ€Ï—xÏ—yΗtÓ™nÔ¢Óž„Ï›yÎ}ЙwÆ–xΜ|È–vË–{Èš„Ç™}À’|¿Žz¸Š{¿‰x³‹¶ˆ{¨dM¤\K¦]F§`L¡YG“PEŸS?ׂVâ˜gï­oî­lî±…ñ´ƒë¬~â“]ËyO‘HC•NF¨YI±eP°aI¯^H¯gP°dJ­\E¥WHÔ~IñćÅ~fÜ‘kã˜dŸ][Ìs€GOK*EoPtb=V}_…L&@nHl‰b†pŽQ)=Z->]7Mf>HW,AV(6d2C^.>Z,@b8WQ&E¸Œu®l`ܤtà·“Ú¸£àȶâÅ ŽPI–N?i6e19j7Ce1a-5h/7f6AW*‚RXÂ}¾†tÌ—€Ñ›}Óž€Òž}ΘoМ{Ï™xÍ–~Òœ}ÑšuÊ—xÏš|ΗyÌ—‚Ê”nÔyÃ’wÂyÀz¼|¶ˆr±†u¦~w²Š~É£‰°dLªdQ¨aK¥`O[M“M@–QFÓ|Oá—pï«tï³yì³zò²{ð®zã˜kÐyRVG YL¬aJ³hM³jS¾nTµhOC5n4B‰Ui¯„Ó¯¶ìºŽõã·^3JO&M`/:g6EM#4W8[Ì›„½‡{Ô–tÙ¹ ßƺÚÁ¤ªeOÏ{]Ñ}j׋oÊ…t¥ZO¼n`ÂŒ‰¼‘”áÁ¯íκ綋ܑmÇpXÓ}WÑx\ÕcÞs驈÷ÜÁéʰ¨YKÇ€t£y©Ž«×´¯ÒŒD<{>Eq5>Z/Bb3EˆW_Z`Ë¢•}JT‚SW`1>[-8[0>j9?\/B˜f_¿‡kÃŒwÔž€Î›|ÏœzÏ—wЛ{Ó˜sÏ—yÏ™wИvÑ›s̘v˘zΕwÌ’sÄ•Ô{»{¶‡q»´„q®xÁ’yÏ¢Ú­}à·Œ±hP®hU­fO¡XCŸVH™RG˜K<ÕUãžhêªvî²}î´ï¹‚ð´vå›oÓ€U¢VJ¢YI²dK·iL¾pT¿qSÓ›xV'9©niÖ™{ÆŠ†Æ““£tOa`/b4EtBG°|Á…hÄpÏ|Ñz͚ЗxÇ—{Ï–|Ï—uʃʗyÍ–tÌœƒÍ—wÊ“mÆŒv¿ŒvÀz¹‡u³…t³ˆx¹‚Ö§Ý´†ä¸„潄辉¯iV­bP¥aNžXK™UF“MA’H:Ñ|Sâ—jì©xî³vî¶|ð·…ð°wåžmÕOŸSC£S@¯`J¸dHÁnOÀiNÕŠT½”‰Æ‹ŒÈ¨xERmE[~RcT';[3OZ6\¤ÄœŠ¯‡p”Z5R`:NlEc[…†j‘’vŸš…¨a4?W-CX);`2@[-:^.?X+9G0J":Ó›sÅŒzÚ¦Ù±šáȱ\G½cHÓ„gÙŠtÝ’yá–{Ü‘qÝpÛ”yÝoÔ‰tØ”|Û•zÜŸÚ”ƒØœ‡Ó{b؉p×dÙ‚mç¥óÒ»îÒ¹Úª“Ú•{Ó‡pÏ‚oÊ}d¶gR«_J [D|?@W(9b2BOU€NXàÀ°˜bktAAl8?X&6pDEY)4KPËs²€uÏœzÑ¡€Ë”tΘyÍ–yÊ•|Ê–xË“rÍ—zÈ“wÍ–xÈ“rÊ“wÈ’wÇ‘t¹‰w½‡l´…u±vÏœyß³…ç¼…èÀ…亄齀鼀¬aM¨^HœWI”PG–RE‡C=ŒD;Í|Uã•cê§të°wð³†ð¶ƒô¶ƒæšaÖQŸVJ¡ZG§^EºiL½nQÀmPÃoW×™x³pgŸjgc8Q‹f…c>VP.Ni:Y‚\|’uœiF^uPoT+H`7TuRunNbwªŽpŸƒm†“‡·_0@X,Dܹ§—jv‹\__1;U%4e:?T(=›f\º‰{º‰uÍœ‚Ð}Ï›xÍ–pΘwË—|͘xÊ•wÌ•yÉ•wÇ”€Á•‚È•wÂvÄ}¹Ž²€oµ‚pج‚æÀˆìÅ’ëÁ‚鿄羇è»~꽂¦YE WJšTJ“OD“M?†A9ˆEBÎzNâ™nê©uð°wð²uñ¶{ó®rëžiÒ]VDœP?«YA¹cFºpY¿oXÀuf¥k„˪¸¤‘ºª‘¬iC]`9Qe9S{Mn‹h€X€œ…ªL"9Q+F^8Z–{•zW„gDg’{µ¿i@Xp@JY+>`3BX,9T,CU,CU(;Å|RÃŒ€ã´ŒÞÁªÑ»¥ŽD;¿jNÎxZÒ€hÜ‹rá–ã›}檋奇豖䫒嬒魑æ©â­”Þœ~Ü“~ÛŽoÚ‰jØb×z[ä—}îË·ñÜÍâ¸Ý¨—Ýš}ÝmÛ†jÓ~cÐz`°dMo/5f-6j06zBFm:C߯•¥ux{IIpAOW)8c1:_->°zi¾‡qÉtÓŸx·ϖvÌ•uËš„È•|È—|É’xÅ’xË”vÆ’uÃrÀŒu¼}»‹u´‡v¯‚uتêÀ†ëÄîŃìÀ}ê¿„é»}ëÁ…éÀ„›VH™WL”OI’RO‘K>~>;‡A?ÎzWá’cè«ì±}ðµwñ³ï³|çžmÓ€Y›PG›N?§YD°kf™щk´‡Å€otBK`Rh?Xc7OtQwvNmtQu—‚¤aT*D[6Ih?[‘rsLTK'F±…z§uh]4G\.>W/FT.DO*Cµ‰v°plÙ´’Þ¬ÞϱT%7–MAÇoKÐy`ׄgÙˆiá–råš{处讓벓笔簕簌鲗孌á¥Û“xÞ•yÜŒuÜ…a܃iß‘vîʶòÚÈ㸛ऎកÜyÚ†vÕ„kÍ}^¸gMt>Gm;Eh4Bm7Bc/Dâ´•³Ž‡f6Bg4:`5@`/9h4?ÂŽu½‡uјyÓ¡zÍžzÊ™zÉ—É“vÍ•sÈ”xÔwÄ’xÑz½wÄ‘tÑy»Štµ„p¸„qÕ¥zéÀ‰íʼnìćí€ïÁ|êÀ‹è¿…éÂ’éÆ˜™UJ‘OEŽID‘OI‰JCy;6>?Ê{Uä›pé©të°vï²yï³{ï°å—_Ñ|Q£XH–QG¦]H­na¼mVÀo`·ytxMaXvƒ^|rF\^6R‚`ƒ^6U–„±m„]8UY0HZ.E[/HV)@_4LyIWi:Me5>P'D§lc£ic\/BY4JS)AN&7[2GÃfÄtá½£ßÁ¢M'Cr=Cl9?k5?c-?Ú¬œË¨Œa/:[)7e5?_1=ŽVNÉ“n‡oÔ zРzΘtÉœŠÆ–wË—~É’vÄ–~Ç‘uÁ“‚É“‚Ãy¾‘„¼Žy¶…u³€sΞ纃ðÀ|îÁ„ìÁ}ìÄ„ë‚鿎ëÆëÉžéË©JGˆFBŽOKŽJDƒC`3B_3C[0DX5I\.C~C?p:E«qc¼X©zuN+DH 6M!9»…c¶sdâÄ©âÄ®¹—vP(;k17žUHÌtRÏx\Ú‚hÝ…aãqá–zã“mè¢€í©„ê²’é°„ç­‘ç­‹æ¤{㟃ݎhÞŒhÛ‰eÒ{YÝ€XÛ|麧òßÎ㻦ުŠßžÚrÙ‰oÛ„jÌvZTGg3>g1;m3R&6uADr9o3:o/3ÈvXà—jã£{í°„ë±xï±{ð¯wêžeÖ~O›QA“MC¡ZG©db§zµˆ–WisGhˆ\|„^‚d8Z€b…ˆuš€^‹{\„Ÿ•²Y5@J$8W-Ha2CV.Da2H‰^o[Z¬zn²uZt;^,|?=i.;i/6ÁwYá–lë§uí±„î°xð°…ò¬{ècÒ}W—PA‘KI²|‰´of¯lj»uluE`…[s€\vNizPoa:^’yX5Y€_Ž•†§^0Qi>SY0LkDRS*EBMDÎ}\á™rè¨té¯ë¯}ï°|ò°{ë oÕƒ`žTG”MC¡YG±cIºoa¤jq¡an†^u¬}xxMmI&N˜€”__yUzyW†}š}b‰ª¡µ“~ L#;f’`d§oj´—œ¯tY«smØÏÂJ$9S)¢dX«YCÆoRÓx[×~[Ú`Þ†kÞ‹qà‘pâ”rà”uä”wã˜|å ç{äŸtá˜tà•oÚŽzÜ€[߀ZÖfÕŽß¾®ç¼¡ä¦†Ý›Õ‘}Ó„mÇxXX,;X1GU-D]3A…IHs=Aj6Ò „¼ŒzŒTQ¿‚cÒ‘bÊ”rÔœù˜~͘}ÎÅwÔwÈ–È’oÊ“p¿’~ÀŽr¼x³‡zÌ—së¼ñÂzðÄ{ïÈòÑœòÑœðΘíÍšñÑðÓ§ìÒ§ìÒ­íÓ§îÔ±ˆLAI@ŒE?I@|>=†GC¤h`ÑŒsàœzè©ê©jî«xñ³~ð¯tè mÔƒ\¡VH”SF£TE®\KÓ——¨|‹mPk|Rl ˆl>M[0B[0Ra9Ng@awQs…eˆyVŠn™™yŠk>X‘`rˆRYL%5M'@¸”•Æ~Ï´¦Í¬ZN«uem?9W(<^+9h3>k:@mÆmLÏ|`Ø\Ü~]ß…gà‡fä‘mߊmã‡bâ‹láqÞ•wà’sá—vÜ“uÝ“oÚ–yࠃ宔íͳ婒ëξ绖ܜ†ÚŒpΉv®ofZ->V0FW.?a5Jj=KŽPIJB{DAe2>X'<¾Šr¬t`¬s_ÒfЕvÊ›Ο}̘yÌœuÈ•|ÈœˆÆ“~Ä”zÁ‘yÁ‘z¿‘vÆ‘v¾w¸‡p¹€f×¢wòÀ|óÅ€òΗñОòÒ¡òΘïÑ¡ïÏ›îÏšëÒ±ìÓ°ïÒªîÔ±îÓ®BD<9„KF‚AA}>>‹IH^VˈtÝœvç¨zë­뱄ð´~ñ²|ç¡o؃S›SFŽFE°sn¡^Z¶iR¡jyqDWˆkŽg:I_2JaAVw\…sQe„]yhGhuMr‘q–V2R•w‘ ”¦@)EqCRņyϼ¼È«§Ü¯“O=›\Pȵ¶T/FT)>¦k`e2?m9>f4>ŒUM]*3a*:—VKšSJ¼`CÖyQØ}WÚXÞƒ`á‡^àŠgàg܆eárÝo݈`Ü‹kÜoÙtÝ‘ràœtã™jä”læžyðÀ•砇夈Ջj΄rΉvY/FX.>a6DX/C_3@v>CŒPHF>}ABd/8X&<­z®ub¶|`Õ_Ì”lÏšuÏšuÌšxË›~Ç•}Æ“vɘxÓ|Á“wÆ‘tÆ“{Ât¿Œv¸‰o·ƒoÚ¦tðÂzóʈðÑ òÓ›óÑšòÓ¤ïЙíÏ îÒ¤íѪìÕ®ìÓ«îÔ¬íѪm5=q78x<<ƒCB~?@‰HAœZMшkÛ {é®ꬆí¯yï³…ð±të¤qÜ€N”NH•UZ±vx¦^V¼‚…—_kZ,G_5KtIa_9TsNiQ2TkHhˆd‹‡c€tOn`=aŽn˜ƒn‰w‘}Wi×®µu‘ؼ·åϼ¢eI¤fYµƒqU-=V+>V,?‰PH]*7b.:n=>{B=a+4_/>…FC‘NF¶`IÎwWØ]Ú„aÜ|R߃XÞ‡câŒháiâ”k²]=­YAÎqFÖ|MÐyOÕuNÏqGËjEËnOß|K؉g“C8»jN¼lTÛ’u½|fT/JW-AX,?W-;b8Fh3>x<:ROk2=zC@\&8›e`²̓ZÙ‘\ÍoÍšuΚuÍœ}É•yÇ•{Æ”vÂ’}À’yÅ”vÀŽuÀrÂ’t‘y¶‡sµiÞªsñÆ…óΔóÓ¤òÔ¢ðÑðÑ™ïÐðÑŸïÒ¥îÓ§íÕ±îÔ®íÔ¯ðÙªj:Eo:@z<;|A@z?D‘YT«fWÐŽoàž}ë«uì¬xî±{ñ¶{ò´†é¡jÒ…aŸTQË—‹™NG«e`ĉ‚†Sd}Tq]7LkCW\9RnF`{T`=[¡±ƒcŒ|XuŒjŠ‚^}•u’aB^|RnÝ‘eÛ„jîàÕÙ¼Ÿ©j^´thÀŸsW/=_-7V3Bi58_,9i39i68p>Cx=@d.Bw8:‘VQ¬[CÇpRÒwTÖzPÖ€W܃`݇`á…fânà’sÙbØ[ÖsWÓnLØvWß|XÝe×zZÚ}nå€å›‘Ý…vÔ‹uÜŠnÖŒj\0FV3I`7CV-Fa2=zFIk7?‚LLRIe0@Ža]X+;…PP¿ŠÔˆVÙŽ`Ì—|МvΘtÉ—uÇ•xÉ—|Á”}ÓÀ‘•¾‘~À’xÀ’|»v´„n³ƒvä±yôÌôÓ˜òÒ£ñјðÐñÑšñÓ¢ïÒ¤îÒ¦ðÔ¯ïÖ§îÕ¬ñÕ©ðÔªh8Dp7<{@@€A>x:?ŠSP¤bRΊnárꮌë±sì°rðµzï³pä¡}Ç}vÇ–ŽŽHD›QMÆ…±gX”cla1MnASO&8P'D|Piw]€`Ec…›V3T†l’Šk’€^z\7YƒbŒ¢ƒšç”cÌsYßÐÃ[NÉŒyÙ¼¤P-C[9Kc5CW,=\-8s<=a.;i58t?CHGd0;‚D?‡RI‹GA¶gKÍtUÌuQÔ|SØ~TÚ„fÛ‹jãkâ’sãmÜ‚ZØ€\Þ‚Xày]ç…kê†î¦‡ï±”قwÕxÜŒiš[JY.GX.?e4@Z):d5l9>h6A~LI_4F‘VS‰OH}EE±`D¾nNÇrPÐwPÐ`ÓdØeÞ‡bÞ‹kä“pÜ‹i܆aÔ]×|TÞƒaæ„bçŽ|ê“ëuä…pÔ•‚Ü—yʆmW*@U/FV-A_0C\,=b-4f17…E=w=C‘RL€DC’^Yh8CuFTΆ֡ؓfÊšvÌžyÊ›zÍ›xÈ–xË›|Èš}Ä•ƒÁ—yÀ‘yÀ“~»~Ás¾Œr°„r°{cí¿}öÖ£öÖ¢óÔ¡ñÑ›òÖ¨òÖ¨ðÕ¨ñÖ®ñÖ§ñОîÏ›îÍ”ðË‘ðΙc3?g5>p::o9=q69Ÿ]LšUKÏ„dܘsçª|í³‚î´ƒðµxò´|æžlÕT˜REEQѦ©¦`Y«nl_1N‘q|Y+?X2N‚g„[0NnOv±¶Ô}Vu›‘¸z™a>[cCh–ˆª©xp•w‰®¡¾’Þ§k穈m9FY5L\4Gf6Ag4:X-Bj58c4@r=Cf9CvBEq?B_/>„QRˆRMw@C T>¶eIºeEÃnLÊvZÔ{WØ‚`׃cÛ‡hÞrÞŽqÛ…hÛ‚]×VÒ~WËuVËv[ÍrXÐ{\à …Ú{Óor6:U+CQ%<\/Be6CyDEk7=o9>WIˆEB•]Qt>=‘UGl6Bj;IÒ«˜Ú¡„Õ”iÊ›tÅ™tÍœ€Ë™vÈ—uÇ–vÎvƘÁ”|Řy¼x»w¹{·‹y¬}l°wdìÃ…÷Ú©÷Ø£ôÕŸðÕ©ôÖ§ôÙ«òÙ´ðÒ£îΗîÍ”íÌ—ìМðРðÏš_2Bg1Ag1:e/9}?>°iP¨fZ΃iÛ“ié£nê²€í²zð³ð²xé¥yׂU—VO†?H¹–£abƒT^g:UrŒ]1DE"A|_~iA]O0\¶¸ß”vbHb™…§€`„€[wе¥qvŒoŠi‚––÷Äw¿{]S.DZ4HX->g7i7A\5Gg6?e0:`.=^,;k9i7@j;Bm6=†I>:2£WC²bG¾jPÐ{[Ô\Ö†eØ‹pÙ‰gÚŽlà‘qâœ{Ý–säž~䥌é­äžx䢄ޕ{Ó•sV&9„I@W0IY1E]6In[,BÕ®‘Ü¥zÌ›|Ë ~ÇœyÉœƒÈ–yÁ–|țŖ€Æ˜y¿”{Å”¼”ˆ½x²Š€´‰q¥{k¤ugîÇ‘õÛ¬÷Ú£óÖ¤óÕ¥òÔ¥ôÔŸòÓ¥ñÖ§óÔ¦ðÒ£ñÏ—ñΑòСó͘\2@d7C[-?U0D’XP¬gT©eUІcÞ“jê¦zë²zé°vì°…ð³|è£rÖ€STHIF¡dZ”[\`8IW0LzQ_e:LO1R€Wp\:TiCe ’´gAW_=Y”…³””|¢v[Œ±’ŸË••hD_ŸkktCRg7JW/E\3G\1El;Ek9AZ/Bk9BW(7m=@^.=`/>n8;v:9h7>l8D?u99u4.–K=±[=ÁnPÓ|WÖ~Y׉kÚwÛ“|â›zâ{穉壇穈奋樊अړyÇŠuS';r>FS3HT/J\4Ip>A\,;m7;`/:™aT‹NN„I@‡OHŽSCŽYUZ+F×®•ÙwÈ•|ˢ˛vÅšƒÅ–xÄ•|Ä“v“yĘ~Å•uÀ”z¹Žz´Ž|²‡x­…t¡{l¬rðÏœõܯ÷Ø óÔ¢òÓ óÖ§óÕ¢óÖ¢òÔ óÐðÍ—òΘï̘óÍ™ïÆŽ],?d5A^1B\->yCD¤aL¿rSÒ†`ß–mç§uê¯{í°wí²}ï­~é lÖ…X™NE|BF˜\Yb:Ic8JQ1Hesb8O[0Ki@[S.GD!J¢´‹i‹mGh…k–i‡š‡ª‰q™’s°Šš†Se–k`qERZ8L[0D[0CV/Dj;D{BDV-?€F@a2=`2@[,:]-7h6@c2:d2;md)1ƒ??§\HÅtTÉtUÐ}aÑ‚kÞŽlÜ’oÞ“táŸ~奊簗䥄妌àš}Õ“v¶mRW*>Y3M_Ÿh^‹MK…HC‹LA‘XJ’YV\,CÚ­˜Ú¢€Æ–ÕzƘ}Ä™€Á—ƒÄ™„Á—€¼”€Å˜x¿–w»w´{µŒ€´‰x©užvj¾}ôÕžõÝ®÷ÖžñÑ“òÔŸõצõئôÔŸòÑŸóÎóÊ‘îÇ꾌â¨{¶qFZ+?].@W+?v@>C=<3•QD¥`K«j`Æy`Ñ‹sÕuÜ”wâŸ|å¢~ݘ{Þ–uÖŽnÅ‚g£YDR-<\4EX3N];Q]4IsCGg8Dg5?i:E™`[’]X‡PM†NK–_SVG]1GÚ°™Ò•k³}f²}gµƒj¼Œx¾‘~¼‘}¾“€Å”z¿“}¼xµ}µ‹y¯‰x«ƒv§wŸqfد~õ×£÷Ú¨÷ÖœöÕ›õÓžöÔ—õЗóÏ“òÏ‘ïÄŒëµw͇Ku:8Y+9R+>f5@`3BV)W+@‘PMƒNLR)=}DAW-=]2Cb0>^0=[-=a.:m=Aj5:m9Dj5:s;;•NA›PB½mVÈzgÔ…h׆jÖuЉpÜ’uÙqßœ|Þ ßž€Û {ߥ‰âª‰ß°“Þ»Ÿ¼œ{QZU9NW1IY4H\5FoAM^4Bc7EJI—\QRIUO„LL™ZQ‡ICj:DÓ©“Á…c°z^©mWªsf±z]±i±t²ƒn²†vÅ’w½wµŽ{´Šu¬‡r©p¢zoŸtoçÂŒö×¢õÓ˜öÒ™îÏ—ôÒõÑ•ôÏ–ôʊ渇ΙtƒHCQ#7Q*=d2>u<He5@_-BY.?a.<„H@ŠIAÇaÚ‘jæ¤xì®éªtë®}ï¯wæ›iˉ}ྈzFO]0EwIRP-Hh?RsFRe:Ia8KrKX]7MX-Ke›©¢©^9TY8\œ‰° ¾„h”†kƒ’p‘’w”nIZµ—‰k‘O3Ha6DEIq>D^3D‰QK\-@Z+?c4B_/:a1Ae4Ad6Bu@Gu@Dg4Ai6C—TI¬`OÌxYσeÎ~_Í~_Ò„cÈ„mчiØoÛ“vÙ”pÖ–yבrוy× ‡ß¯‡çÀ›êâëɤáÅ«”uˆW?U_;LfI)?R+D}N^b9MV/HlHTQgnBXN(C—‡ª[}ˆoŸ¶¤¶b?[|]‹‰k“‹sŒvOx¬—¼­…Ž’ytZ=Q^0Ax@Fh;HV2GŒTNX.=Y+Dm8Bc3=h5>ŽUT·hMÊz_Ë|_Ì~aÏ{`΄lЊqÚ‰fÜŠaÙr׊j׉i×rÚ—yà£{ã³å¿çÄèÆŸêÈ¡ï̪êΪ•w†M-=M)>Q'9k:CIE~GIƒLITQ‹QI~ED†MPÖ•gµ~gÉq½…j½aµ€q³xc«tf£iZ fW™g[žj_¡sn™i_ob›iX—lcžj^ïÄŠöÑóȉõЖôÒ—ñИöÑ—ëÁ•Ù«|QFZ.Y0>_3H“v”G!;j9PiyK[L%>S)K£“³wšƒ\™Ž¬qTm‚f‹k—”«‹m“Žjˆ ~Ÿc4Ež’Œg7C‚CBa3CS&<‹OD\+9`/>U';f6?_3GX-Bg9Ci=GKJk6Aa0<…FC°gO½qSË{bÌz[Ð}^Ï}aÓƒcÙ‰pØŠmÚ‰mØŒnØŽlØ“yÞ™zܧŒå¹è¾›çÁœè˜êÇ¥ï̦ïÌ©òϰæÏ®iJQF 9a4:ŽVP€FGxGF„JG€EDLT‘_`Ö’h¼†w¼Žx¿s¿‹o¶„r¼„n±~o«ub«p] gZŸcV•aYYT—`UªqW”^QˆOO쿆öÏ’öËôÓœóÍ“òÌìËá©vSE`/<†OJ†JJHF•XNSJ“VI§‚¨Œ‹§ƒ‚žso‘_RƒEBc*5–UFÓˆeä£yç¦xê©tê­zî®~ê iÎ}a¹~t¨toR.IV/DL$:I#BŸ}œl‰L,KŽo“uFZ€Xo]5Oa;TyMghDd™†ž]8UsPvz_zu—uœ—¤¢†£’c\vJ^tMbŽdqw?C]3?Q+B…OJ^3Dh8DZ2DjEyDFc7@ŠPK¨fVÄtWÆvZÐ`ÏaÊ‚eÚŠhØlÜ“uÙnÙˆlÙ’tÛ•xÝŸ€á«„崌鿙徚èÁ—éžíÉ ðͪò̦òÒ®óÖµ‘ya6=e9G{GLyGHŒQG{CCk4:®zmЕuÍ’sÈ”y¿“wÀ‹mÂw¸Œ}¼‹{·„r¯{k¨xm¡na qd‘ZU®t`Æ‚Y™bRVPïĆ÷Ò˜öÐ’øÖœöÒ›òÍ–Ø›jszUgm?RlE[c<[‡i‘koM&F–Š­`9UkEbb@\yX}‡kˆš‚ ’|¡“¨K#C»§ŸP*Iµ˜‚d2GR.FN)BŠOJf3Bd9KR1Fb2@g=Ib1>]4Ii4At?F©cI`0>‹WR±o\ÅqWÑ„^Ì~]É{dÖ‹o܆aÙŽiØŒn؆dÙ‰gÚ‘lÜœ{à¢ä§ƒâ­‰åµæº˜å¼—澘ëÅŸðÉ¢ðÍ£óÏ«õÓ±ô×·ž‰_6MtAIsBC~JFw>@\(=ÈŽ{ΔuÏšyÄ—}Á‘z¿s¾Žwºx´‡xµ…p³…u¯|p§xp¤yqŸnf¸yVÈ„X¨j[ʈ\ôË“õÕž÷Ô ÷Ö óˉ뿃¥gOW*>ŽPG—YL–XK”RL¨gW_N˜\Sœ\I›ut¬Œ«——«•¬‡{”ZNa,9—PBÒ‰hç¦pì¬xì®wë«oåŸsã”tµuiÑÅËE E¸wgÈ{_Êz^Áx`׈kÜi׈lÛŽmÚŠfÝgÚlÝ•wàœxÝŸ}⩇ã¢~孂䱿¸Œë»‘ë¿‘ìÆï̦ñΤñÓ·óÖºôؽ‹fi}C>r;;~FA‚HHP(CÙª‡Ë‘pÅ“vÈ–t¼‘r¾tÀnÁz»Šw½‰u¾Šu±‚o´‚n¨o¨yiµzYȆY»uNÞ¨uôÓŸöÕš÷Ô—øÕœíňןiB?zDGŸ^Nž_S›ZL­jU´€z¡`M“QL¢`UsEQœ~„¬“—¸¡›º–…¡tna.9•SC׌`è¥zðµ‡ë±€í°~ï±wë jÝŒZ¤y~g6>P(@P&;b6AV,8W0Bk8FS.BQ*G‰c{sJbK(A\6@O&BY;X|VfQ.HnFalJpx—’u–˜}—¢”·¦š±¤‚†j<;a8[ͺÁM&8M$7w@Eh8Ab0@S)@^2E~MO_0Q1G^1C[/J“p…^:LX&3J!=‰aP-GoEe„a€nMd{XhDeˆoŽl‹‹p”­—¨™{‘D#@ ˆ©ÝÙÓH%q;@~DFa-h‡{W{sMpaŠlˆn‹uVx€a~¢”¹¬›¬c3K]3OŸszàÖÍN+EP&9}CA„OEc4AU.@Y3GvACb.:_2?l6>ª`N¾pI¡ZG`,;¦bSÉqOÙ\Ø€bÛ‡_Ü…_܇eÝ‘mÜ‹eÝkÝ’kà‘iÞ˜tà›uÝœyà¢}ä§㬄届沉溗ê½ìÄšïʨñдñÒ´óÖ¾õÜÄ÷ß»k:;e/9^,7a+7ÕšrËjÉ–xÊ‘lÇ”w¿lÀ{¼Šr¹‚³‰v¶‰t°„u®q«zh±yfËlä¬sî¾{õÏ—õÙ¥øÖšøÓ˜òÈ~ÍŠOšXQ¤`M›VO¬fT²oV²mZž^NšYN©gY£kdŸi_R):a3F¢Š‹Â«¤½¤—¦ƒ{O&;†G<ÙŒ`é¨xñ³ë±sî±}ñµví¦jß‹a©~{M)Ce7MX-Cc:Jb;HV.C]7LS-J€ZnˆbxH"=qJT]/DQ%;[7RaP%:iCO_6GY*ÔiÆ”yÈ“x¿r¼‹sÆ‘sÁp¾sºˆm»‰m²€n©|s©ye°zcÜ©vùÔ›øÕ õΑøÕœøÙ¡öÔ™òÈÙX¤]I¡\K _P°fO»sX¸u\œZNšZL«k[£dW›`X”_^G3U%:›z»§¢È­¡­Š}[)3z88Ù‡Wë§wí²|ì°|í±xîµ}í¦pÛ‰Y­rV.Ie>LN$9T*9[,?]3JR-H”yœl>Ie7IK'@S*@vJ\bf5@c05f2@o;Dj?Id09_-=v=BÁrQÏ^È|^®[DyCA«iX×zP׃g܈gÞˆiߊcÚ‰dÛ‡`ÝŒfß…^ÝŒhÝnÚ~à–rßœxàwß¡᧊㯎ä³å¸Žå½æÃ¥íɬðϱïÏ´ïÓ»ïÖÁöÚ¾öß¼­scF0¬kYÏ‹dÏŸzÈ•uÁrÃn½ŽqÁqÀp¶‰t²ƒn³„m­€r¬zhµw[꾆÷Ù¡ùÔ—÷Ñ•öÖ øØ¤ùÒè´}ÂuK¬_H XE¥_L²lW¹oP§cQŸ^PŸ`P¦g[škh•aZˆVVJ!4U(>™|…·¤¤Âª¡­…h4:|>BÚˆZê§rì®{é²yæ­pë±vâŸrØ‘lžs„g?PU-BQ-CU,9[)9V,JwReO1So†xSeZ/BW.?d:HP(ÕƒWí©xç¯~å¯~è±}çŸkÛŒb¶~xNXW)=\8IV*=_7FV1DQ/AZ4G„\muFYS,>mKY[6GV-A_8OU1?V-HŽq”d>WL*Ik™œ˜„Ÿ•n‘U(;V+0L':\39j;=¥€Œ®–® ’`.9f8DmÕƒZë¨mí±xî°uì²tì²zé¤pÖ…`¥mrk8EfpH^W,KnFVB!;g@]‚`…Œz Œv’‹p•ž…”U/GO&9m6m@LvLPq?E¦}bi7?c2€Y\¯˜™½©Ÿ±™wGI}>?Òƒ^è nì±~è®ê³ƒíµ‰ç¢fÚ’kÇ|vGRd=NW.BO)EY4Peq]5ET,CkCWc9M\0?X/AL(?{WxX->a=VzUq[6Sb†V;L|f“†r£“„¥kDhr’“m‰W-=L#8tBFc6>s>Ei4QkCVc:Qc?Te8LW3Hc8OY2Gy]xgCi^>Uz`x™‘±h<[hHoœ}˜¥–¶H$8j:@S(Y2DR+<\6IoJ_rGXZk;DR'5`09Z'5Z,:_05k7?–SGÂnKÌvSÌ}]ËxXi7IšWKÓ‚[ÚˆeÙ‡dÝuß‹gàgÝqßdáhàiÝŠ_Û‰`ÝŠ`Þbßeß•oß•qàœuÞ›qà¡~ᩃ᫆⮅縒佛èÀ ëÉ®éÉ­ñÔÀòÕ¼ðÕ¿ïÓ¼ôڹͅU–[G’VHWGcM¦p[­w`±†x¸ˆp·†n¸u¸‹pÇŽnÓœfÑ’^ˇV͈XîÑúÛ£ûÕ’ç¯aÅxN¶fJ•SG›UGªfOMB•TI¤lfŸ`W—bZYXœkh’^YˆVUu>?N(:N#5^1C±›™Æ±«¾¦˜—oju<=Ï}Oãmé­wê®yæ¯{ñ³wì§màa¢kk‚R]Q)@V*;[-=U+MV/Eg?SZ6Ke8F`6DX,AO$5Q(>X.?iR‚‰u ~[œˆ™\:T€bˆnF]c;Sƒj„€Xrl>G^0X)8V(8g26ŠKGµeFÈxVÆsRÉvN¨]Ae9MªeVÕWÚˆh؆_ÞqÝ‘nã’bÞŠjàdá‹ZáŒhÛˆ^Ú…[Þˆ^ÚŒgÞŠ]Ý“làšvÞšvÝšsßžpâ£xà©„á«~ß±Žå»˜åÀçÆ©ëÏ·îжðÓ¸ðÓ¸ñØÁ÷Û¾ÊwSIaXF@†GBŠQ@”]M“]Q–cTnb¢sf¸‡qÊ–}Ô¢rÉ’iŇ_Õ˜hõÑ’ýÞ¦öÉÛW¶jP›S@ŠMCŸZP˜SIŒMEaXž`Tš_[“_W•`\˜jfa]~JGm59N%9E0^4I®•ȯ¡¿¨˜£|mz=;ÊuRãnç¬~ê±yë®{ñ´í¨tÞ“`¢ps‹YcM%?f;LQ0JP(AU/Ci>KU4Kc9HW3Gj@Mg:Qg”NA’MF‹KCžbZ¥nc‘UP[T‘ZRžf``^‰WWk;@k7@_/:nS);V.@]2E]4G_8MW2Jd;T[4Hi=Qf=I^/CjBSR+?X1@`S'4X)7h.8ˆF?¶hKËxNÆvUÌ{U{6/g3>°mYÓƒZÝ‹_߆`ÚˆhÞaÞ‹_á‰aߎiânÞkàŽ_ß‹cÛ…Y݆[ÜŠ[Û…YÛeÜ’nÛ•oà™mÞ™nàŸwà¢zঃⴑ㳉世åĪéǬí̳ìϾîÔ¿ïÔÂõÙ¾ôدNC™`K¥hZ¡fU–^S‰QEƒIFp;Ae38Z+5U+6xBI߯€ïÆ‚à©]î½}úÓúωܖS—RAs9;‹JF’WLƒIG–YS¡lh™^N“[Y\S”YS li]ZxJIs>>g2<”\V‡PKŠ\`¦ˆ~Ƴ¨Í·§ª‹xBAÈsHãŸyë®}ê°}é²{ð¼„ë®qÀoX·‡‚zKYR%7W0GgAPX0FR(<\2@X7Oc`5GsL]S)>I(I„k‚ž“ºsšŠbƒ¡}ˆV0EW0?V+5R&6R%8U0?Z*?PE™YHÅrNÇtUÉwPC6W'9žXMÓ€YØ„WÙ†[ÝŠeÜ‹f݆]áŠ]áiãfß“oâ‹\áfÛŠ_ÝjÚh݈\ÞŠcÝŠ^ÚŽfß’eà”kܘqÝ›yáŸ|ߥyß©ƒå´ãº•çÀ¡çÆ­éɳêÍ»îÒ¾ñÔ»òÕ½öÙ¸ŸeX™^M¤k[¦o\ŸgZ”_U“]VGEtEM_/9O'=DDòÆ‹÷ÍÝ™[óÇyüÔé¶q”P?m57{@>‰LC†HH‹QP¥i_šcWˆPO‰TJŒTJ˜f`¢ttˆYWzIJr@Dk6>[VZR–ljª…­¡Æ·¥¯•‰€FAÂsSàœpê¬tî±tê°ñ¸wé­l¨cN¶{jƒQ_Z1EU,C[3BV-=X+=Y5IW1DV0DR*=pGYX0Be=RU-CW0He9JN$8j?MZ6MhCVn@U^:Sh}w˜T/E`1>T)r0P!3˜WEÎ~WÔ~Vׄ^Ù†c߉aÓ†eߎaÞ‹\á‹cÝdÝqÝ‹_Þ’oàŠ\ÞŠcß‹hÝ‹^ÝhØŒiÚ‰^àdà•aÛ”iátÞŸ|ߣ‡Þ§{ã±’ã¶—ã½ æÃ§éȳë͹ëѽòÔÀñѸöÙ¿Ôµ§’WM j`©m[ŸdUšaR˜\QŽUJyF@k:?`,9ˆILèµ|öÉ{ðÀuõÆ„é®g—YCg3;j5=LFz?CŠNJœbVš^R‹RO„OO‚LF’ZW qr•fa†UWSRo:BrBK…QMŸqnŸro©Š„Å® È¯ž±–††PFÀqRá›oç²xè¬që´‚î¸vî­v®cS®rm_3Eb9JT3GZ1C^6HV,@a8HQ)@X4LcF]iBQT,CrK[g=R\6GV/GŠf}^8TnB^a:UoOf’x’l?S[4@p?HV+=R);X-;O)7S%,a1:MA¶hK·iJ°eIO!,a-7¯cEÃtOÑxQØ„WØ„WÛ‰]܈WÛkÞ‹aÜŠeÞŒhÞcß‹aÞiáfÝ‘jߌeà‹cߌ\ÞbÞ‰^Ú‹gÝiÛ‘iÜ’eÜ™tÞŸwߤ}à¥|ᧀ௑⸖你æÅ­ìͰëϸîÒ½ïÔ»óÙÃïÕ®‹MB™f^¡hYŸeUg\—bU˜bWˆUU†NJ‰VOœ\Káµ}úÕ—ôÅ}×’Z›]Lw@?m5;ƒLGE@ˆI@™aV£lcŒZX}KP†NLŒ[W kg¡mj^^‹XXtDGwGIg6_3HoFXY/Dc;P`=QU0GyVrvP`O(~`hW3JjIhsNx£–º\6GfE\O*FX/6Q)9Z.:\*4}B;–Q=i29O&4j6>ŸT@²cGÇuSÍxWÔ~U؃ZÔZ؆_ÜŒ^Û…[ß’kÞŽoߊaáeãŽfß‘dà’já“jÝ’ißbÜŒgÞŠXÛeÝŒaÝ‹\ÝŒ]Ü“kà˜lÞ™rÞ¡|ृã©z⯋ඕ忢åìçÇ­êϸìѽðÒ¿ñÖÁðÕ°ŒRI’ZP›eYžl\—g\šg^–dYŽ^Y–a]™\S bZà«wñƈؖTRH‚LFz>C~F>…GB„LKžb^¤ph“_W€NMu>A‡LM˜`XŸoe›id’a`yDGp>Fb2:~W[†]dšz~¹¨¢Æ¯¢µ™„œi_ÀpJÞ›jæ¬vì²|îµ€ó·}îªlÎoNVN'@S+@T1?a9Mo?Q\6J`6F[1Ha3IW/HuZsR/G€]€‘u’sJ^I)@ƒaqM#2pLs•x_:X–€£‚buo~T2GQ*>V-?\1>Z)7X(6U'5l7>NC¤YDµeMÃqSÐwQÎyRÑ€UÒ~TÕ|QÔ‚\׆bÚŠgÛˆ[݈_Ý…YÝ‹dàŠbß`ÝŒgß’nâ•kÞgÝŽdÞaÞŒb܉[á`Þ‘iÜdÞ’ià™oàžàŸuà£â©„â±äº˜äº¥ä¿£çÅ«é̳ìлïÕÀñÖÀñؼ»†y‡RJ’b[–eUžgZ¢qc—cbœf\­t`¬lX³nVÂ{W¹xT”UKPG’UI–[PPF„FE—aZœga“^TJF{IMwBH™c^œpn¤rq“cc‰Z`vGLq=Aq>A_0;d:DiXb=W‘v”M(Fm‹ew@8tI]U.?gGb™y‹sRhiCSL$6Z7ER&5a,/t95–N<¦XA¹mOÂnLÈv[Ï|ZÑzTÑ|WÒUÕ‚VÖRÕ‚XÚƒV܈a݈]܈cÛˆ\àŒ_á`Þ‹aÜŽkÝ‘màgÝbÞ‘làeàcÛdàeá’iÜjÛ“dÞ•pà›vÜ›yà¡~ृ஑ఇⶕ⽡çĦåÈ­éεïÓ»îÕ¿ð׾߯¯‚HCŒ]T’bXšfZ¡r_lZ¤te­v^¯nS¹pX¬kX¨eQš^V¡eT¦dO–VJ‰JGSRœlo]XKL‡RN~JK‰RI§zv§{yŸnh’e`}EHq=Ag6>i8Aa3>`4:`1:g@H‡_hκ°âË°ÝÆ¯«r¶rYÞšsí°}î³xïµ}÷¹}ç¥wƒQZh?K]3IV*?O(6_4FjAOb8Pg?Ua@NO)@S+LnƒQ/DmF^sC_Œ­[>QhGd—‚¤V0FgCf39}A¹jDÂkHÉrHÊyWÉuMÏ{MÒZÓ}SÓ|Q؃SÙ€S؃XÚ‚X܆\Þˆ[Þ†[Û…^äWÝŠ^߉[Þoáná‘jà“jÝià’ià’hà•já–kâ“mß`ß—lä›uáštãvÞŸqà¦yߦ~ⱈà³ä»¥ã¾¡äÅ®èÉ´ëϸëмìÒ»ïÔ³†LG†UQŒYK—f^™g\¥sg±t\¿~_Â~b¸uYºqS½oQË~WÇwP¯iS`^œg]Š[[SV…MPƒNI…MF—bY±zk¬ysh`†W[r??c1= 2: + self.id = i16(s) + if len(s) >= 4: + self.count = i16(s[2:4]) + if len(s) >= 6: + self.repair = i16(s[4:6]) + else: + self.repair = None + + if Image.DEBUG: + print "AFRM", self.id, self.count + + return s + + def chunk_ADEF(self, offset, bytes): + "ADEF -- store image" + + # assertions + if self.count != 0: + raise SyntaxError, "misplaced ADEF chunk" + + self.show = 0 + self.id = 0 + self.count = 1 + self.repair = None + + s = self.fp.read(bytes) + if len(s) >= 2: + self.id = i16(s) + if len(s) >= 4: + self.count = i16(s[2:4]) + + if Image.DEBUG: + print "ADEF", self.id, self.count + + return s + + def chunk_NAME(self, offset, bytes): + "NAME -- name the current image" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced NAME chunk" + + name = self.fp.read(bytes) + self.names[self.id] = name + + return name + + def chunk_AEND(self, offset, bytes): + "AEND -- end of animation" + + if Image.DEBUG: + print "AEND" + + self.eof = 1 + + raise EOFError, "end of ARG file" + + def __getmodesize(self, s, full=1): + + size = i32(s), i32(s[4:]) + + try: + mode, rawmode = _MODES[(ord(s[8]), ord(s[9]))] + except: + raise SyntaxError, "unknown image mode" + + if full: + if ord(s[12]): + pass # interlace not yet supported + if ord(s[11]): + raise SyntaxError, "unknown filter category" + + return size, mode, rawmode + + def chunk_PAST(self, offset, bytes): + "PAST -- paste one image into another" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced PAST chunk" + + if self.repair is not None: + # we must repair the target image before we + # start pasting + + # brute force; a better solution would be to + # update only the dirty rectangles in images[id]. + # note that if images[id] doesn't exist, it must + # be created + + self.images[self.id] = self.images[self.repair].copy() + self.repair = None + + s = self.fp.read(bytes) + im = self.images[i16(s)] + x, y = i32(s[2:6]), i32(s[6:10]) + bbox = x, y, im.size[0]+x, im.size[1]+y + + if im.mode in ["RGBA"]: + # paste with transparency + # FIXME: should handle P+transparency as well + self.images[self.id].paste(im, bbox, im) + else: + # paste without transparency + self.images[self.id].paste(im, bbox) + + self.action = ("PAST",) + self.__store() + + return s + + def chunk_BLNK(self, offset, bytes): + "BLNK -- create blank image" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced BLNK chunk" + + s = self.fp.read(bytes) + size, mode, rawmode = self.__getmodesize(s, 0) + + # store image (FIXME: handle colour) + self.action = ("BLNK",) + self.im = Image.core.fill(mode, size, 0) + self.__store() + + return s + + def chunk_IHDR(self, offset, bytes): + "IHDR -- full image follows" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced IHDR chunk" + + # image header + s = self.fp.read(bytes) + size, mode, rawmode = self.__getmodesize(s) + + # decode and store image + self.action = ("IHDR",) + self.im = Image.core.new(mode, size) + self.decoder = Image.core.zip_decoder(rawmode) + self.decoder.setimage(self.im, (0,0) + size) + self.data = "" + + return s + + def chunk_DHDR(self, offset, bytes): + "DHDR -- delta image follows" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced DHDR chunk" + + s = self.fp.read(bytes) + + size, mode, rawmode = self.__getmodesize(s) + + # delta header + diff = ord(s[13]) + offs = i32(s[14:18]), i32(s[18:22]) + + bbox = offs + (offs[0]+size[0], offs[1]+size[1]) + + if Image.DEBUG: + print "DHDR", diff, bbox + + # FIXME: decode and apply image + self.action = ("DHDR", diff, bbox) + + # setup decoder + self.im = Image.core.new(mode, size) + + self.decoder = Image.core.zip_decoder(rawmode) + self.decoder.setimage(self.im, (0,0) + size) + + self.data = "" + + return s + + def chunk_JHDR(self, offset, bytes): + "JHDR -- JPEG image follows" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced JHDR chunk" + + # image header + s = self.fp.read(bytes) + size, mode, rawmode = self.__getmodesize(s, 0) + + # decode and store image + self.action = ("JHDR",) + self.im = Image.core.new(mode, size) + self.decoder = Image.core.jpeg_decoder(rawmode) + self.decoder.setimage(self.im, (0,0) + size) + self.data = "" + + return s + + def chunk_UHDR(self, offset, bytes): + "UHDR -- uncompressed image data follows (EXPERIMENTAL)" + + # assertions + if self.count == 0: + raise SyntaxError, "misplaced UHDR chunk" + + # image header + s = self.fp.read(bytes) + size, mode, rawmode = self.__getmodesize(s, 0) + + # decode and store image + self.action = ("UHDR",) + self.im = Image.core.new(mode, size) + self.decoder = Image.core.raw_decoder(rawmode) + self.decoder.setimage(self.im, (0,0) + size) + self.data = "" + + return s + + def chunk_IDAT(self, offset, bytes): + "IDAT -- image data block" + + # pass compressed chunks through the decoder + s = self.fp.read(bytes) + self.data = self.data + s + n, e = self.decoder.decode(self.data) + if n < 0: + # end of image + if e < 0: + raise IOError, "decoder error %d" % e + else: + self.data = self.data[n:] + + return s + + def chunk_DEND(self, offset, bytes): + return self.chunk_IEND(offset, bytes) + + def chunk_JEND(self, offset, bytes): + return self.chunk_IEND(offset, bytes) + + def chunk_UEND(self, offset, bytes): + return self.chunk_IEND(offset, bytes) + + def chunk_IEND(self, offset, bytes): + "IEND -- end of image" + + # we now have a new image. carry out the operation + # defined by the image header. + + # won't need these anymore + del self.decoder + del self.data + + self.__store() + + return self.fp.read(bytes) + + def __store(self): + + # apply operation + cid = self.action[0] + + if cid in ["BLNK", "IHDR", "JHDR", "UHDR"]: + # store + self.images[self.id] = self.im + + elif cid == "DHDR": + # paste + cid, mode, bbox = self.action + im0 = self.images[self.id] + im1 = self.im + if mode == 0: + im1 = im1.chop_add_modulo(im0.crop(bbox)) + im0.paste(im1, bbox) + + self.count = self.count - 1 + + if self.count == 0 and self.show: + self.im = self.images[self.id] + raise EOFError # end of this frame + + def chunk_PLTE(self, offset, bytes): + "PLTE -- palette data" + + s = self.fp.read(bytes) + if self.mode == "P": + self.palette = ImagePalette.raw("RGB", s) + return s + + def chunk_sYNC(self, offset, bytes): + "SYNC -- reset decoder" + + if self.count != 0: + raise SyntaxError, "misplaced sYNC chunk" + + s = self.fp.read(bytes) + self.__reset() + return s + + +# -------------------------------------------------------------------- +# ARG reader + +def _accept(prefix): + return prefix[:8] == MAGIC + +## +# Image plugin for the experimental Animated Raster Graphics format. + +class ArgImageFile(ImageFile.ImageFile): + + format = "ARG" + format_description = "Animated raster graphics" + + def _open(self): + + if Image.warnings: + Image.warnings.warn( + "The ArgImagePlugin driver is obsolete, and will be removed " + "from a future release of PIL. If you rely on this module, " + "please contact the PIL authors.", + RuntimeWarning + ) + + if self.fp.read(8) != MAGIC: + raise SyntaxError, "not an ARG file" + + self.arg = ArgStream(self.fp) + + # read and process the first chunk (AHDR) + + cid, offset, bytes = self.arg.read() + + if cid != "AHDR": + raise SyntaxError, "expected an AHDR chunk" + + s = self.arg.call(cid, offset, bytes) + + self.arg.crc(cid, s) + + # image characteristics + self.mode = self.arg.mode + self.size = self.arg.size + + def load(self): + + if self.arg.im is None: + self.seek(0) + + # image data + self.im = self.arg.im + self.palette = self.arg.palette + + # set things up for further processing + Image.Image.load(self) + + def seek(self, frame): + + if self.arg.eof: + raise EOFError, "end of animation" + + self.fp = self.arg.fp + + while 1: + + # + # process chunks + + cid, offset, bytes = self.arg.read() + + if self.arg.eof: + raise EOFError, "end of animation" + + try: + s = self.arg.call(cid, offset, bytes) + except EOFError: + break + + except "glurk": # AttributeError + if Image.DEBUG: + print cid, bytes, "(unknown)" + s = self.fp.read(bytes) + + self.arg.crc(cid, s) + + self.fp.read(4) # ship extra CRC + + def tell(self): + return 0 + + def verify(self): + "Verify ARG file" + + # back up to first chunk + self.fp.seek(8) + + self.arg.verify(self) + self.arg.close() + + self.fp = None + +# +# -------------------------------------------------------------------- + +Image.register_open("ARG", ArgImageFile, _accept) + +Image.register_extension("ARG", ".arg") + +Image.register_mime("ARG", "video/x-arg") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py new file mode 100755 index 00000000000..47b5f05c84a --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py @@ -0,0 +1,133 @@ +# +# The Python Imaging Library +# $Id$ +# +# bitmap distribution font (bdf) file parser +# +# history: +# 1996-05-16 fl created (as bdf2pil) +# 1997-08-25 fl converted to FontFile driver +# 2001-05-25 fl removed bogus __init__ call +# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) +# 2003-04-22 fl more robustification (from Graham Dumpleton) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import Image +import FontFile + +import string + +# -------------------------------------------------------------------- +# parse X Bitmap Distribution Format (BDF) +# -------------------------------------------------------------------- + +bdf_slant = { + "R": "Roman", + "I": "Italic", + "O": "Oblique", + "RI": "Reverse Italic", + "RO": "Reverse Oblique", + "OT": "Other" +} + +bdf_spacing = { + "P": "Proportional", + "M": "Monospaced", + "C": "Cell" +} + +def bdf_char(f): + + # skip to STARTCHAR + while 1: + s = f.readline() + if not s: + return None + if s[:9] == "STARTCHAR": + break + id = string.strip(s[9:]) + + # load symbol properties + props = {} + while 1: + s = f.readline() + if not s or s[:6] == "BITMAP": + break + i = string.find(s, " ") + props[s[:i]] = s[i+1:-1] + + # load bitmap + bitmap = [] + while 1: + s = f.readline() + if not s or s[:7] == "ENDCHAR": + break + bitmap.append(s[:-1]) + bitmap = string.join(bitmap, "") + + [x, y, l, d] = map(int, string.split(props["BBX"])) + [dx, dy] = map(int, string.split(props["DWIDTH"])) + + bbox = (dx, dy), (l, -d-y, x+l, -d), (0, 0, x, y) + + try: + im = Image.fromstring("1", (x, y), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (x, y)) + + return id, int(props["ENCODING"]), bbox, im + +## +# Font file plugin for the X11 BDF format. + +class BdfFontFile(FontFile.FontFile): + + def __init__(self, fp): + + FontFile.FontFile.__init__(self) + + s = fp.readline() + if s[:13] != "STARTFONT 2.1": + raise SyntaxError, "not a valid BDF file" + + props = {} + comments = [] + + while 1: + s = fp.readline() + if not s or s[:13] == "ENDPROPERTIES": + break + i = string.find(s, " ") + props[s[:i]] = s[i+1:-1] + if s[:i] in ["COMMENT", "COPYRIGHT"]: + if string.find(s, "LogicalFontDescription") < 0: + comments.append(s[i+1:-1]) + + font = string.split(props["FONT"], "-") + + font[4] = bdf_slant[string.upper(font[4])] + font[11] = bdf_spacing[string.upper(font[11])] + + ascent = int(props["FONT_ASCENT"]) + descent = int(props["FONT_DESCENT"]) + + fontname = string.join(font[1:], ";") + + # print "#", fontname + # for i in comments: + # print "#", i + + font = [] + while 1: + c = bdf_char(fp) + if not c: + break + id, ch, (xy, dst, src), im = c + if ch >= 0 and ch < len(self.glyph): + self.glyph[ch] = xy, dst, src, im diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py new file mode 100755 index 00000000000..09c0a2141d3 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py @@ -0,0 +1,251 @@ +# +# The Python Imaging Library. +# $Id$ +# +# BMP file handler +# +# Windows (and OS/2) native bitmap storage format. +# +# history: +# 1995-09-01 fl Created +# 1996-04-30 fl Added save +# 1997-08-27 fl Fixed save of 1-bit images +# 1998-03-06 fl Load P images as L where possible +# 1998-07-03 fl Load P images as 1 where possible +# 1998-12-29 fl Handle small palettes +# 2002-12-30 fl Fixed load of 1-bit palette images +# 2003-04-21 fl Fixed load of 1-bit monochrome images +# 2003-04-23 fl Added limited support for BI_BITFIELDS compression +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.7" + + +import string +import Image, ImageFile, ImagePalette + + +# +# -------------------------------------------------------------------- +# Read BMP file + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + + +BIT2MODE = { + # bits => mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX") +} + +def _accept(prefix): + return prefix[:2] == "BM" + +## +# Image plugin for the Windows BMP format. + +class BmpImageFile(ImageFile.ImageFile): + + format = "BMP" + format_description = "Windows Bitmap" + + def _bitmap(self, header = 0, offset = 0): + + if header: + self.fp.seek(header) + + read = self.fp.read + + # CORE/INFO + s = read(4) + s = s + ImageFile._safe_read(self.fp, i32(s)-4) + + if len(s) == 12: + + # OS/2 1.0 CORE + bits = i16(s[10:]) + self.size = i16(s[4:]), i16(s[6:]) + compression = 0 + lutsize = 3 + colors = 0 + direction = -1 + + elif len(s) in [40, 64]: + + # WIN 3.1 or OS/2 2.0 INFO + bits = i16(s[14:]) + self.size = i32(s[4:]), i32(s[8:]) + compression = i32(s[16:]) + lutsize = 4 + colors = i32(s[32:]) + direction = -1 + if s[11] == '\xff': + # upside-down storage + self.size = self.size[0], 2**32 - self.size[1] + direction = 0 + + else: + raise IOError("Unsupported BMP header type (%d)" % len(s)) + + if not colors: + colors = 1 << bits + + # MODE + try: + self.mode, rawmode = BIT2MODE[bits] + except KeyError: + raise IOError("Unsupported BMP pixel depth (%d)" % bits) + + if compression == 3: + # BI_BITFIELDS compression + mask = i32(read(4)), i32(read(4)), i32(read(4)) + if bits == 32 and mask == (0xff0000, 0x00ff00, 0x0000ff): + rawmode = "BGRX" + elif bits == 16 and mask == (0x00f800, 0x0007e0, 0x00001f): + rawmode = "BGR;16" + elif bits == 16 and mask == (0x007c00, 0x0003e0, 0x00001f): + rawmode = "BGR;15" + else: + # print bits, map(hex, mask) + raise IOError("Unsupported BMP bitfields layout") + elif compression != 0: + raise IOError("Unsupported BMP compression (%d)" % compression) + + # LUT + if self.mode == "P": + palette = [] + greyscale = 1 + if colors == 2: + indices = (0, 255) + else: + indices = range(colors) + for i in indices: + rgb = read(lutsize)[:3] + if rgb != chr(i)*3: + greyscale = 0 + palette.append(rgb) + if greyscale: + if colors == 2: + self.mode = rawmode = "1" + else: + self.mode = rawmode = "L" + else: + self.mode = "P" + self.palette = ImagePalette.raw( + "BGR", string.join(palette, "") + ) + + if not offset: + offset = self.fp.tell() + + self.tile = [("raw", + (0, 0) + self.size, + offset, + (rawmode, ((self.size[0]*bits+31)>>3)&(~3), direction))] + + self.info["compression"] = compression + + def _open(self): + + # HEAD + s = self.fp.read(14) + if s[:2] != "BM": + raise SyntaxError("Not a BMP file") + offset = i32(s[10:]) + + self._bitmap(offset=offset) + + +class DibImageFile(BmpImageFile): + + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self): + self._bitmap() + +# +# -------------------------------------------------------------------- +# Write BMP file + +def o16(i): + return chr(i&255) + chr(i>>8&255) + +def o32(i): + return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), +} + +def _save(im, fp, filename, check=0): + + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError: + raise IOError("cannot write mode %s as BMP" % im.mode) + + if check: + return check + + stride = ((im.size[0]*bits+7)/8+3)&(~3) + header = 40 # or 64 for OS/2 version 2 + offset = 14 + header + colors * 4 + image = stride * im.size[1] + + # bitmap header + fp.write("BM" + # file type (magic) + o32(offset+image) + # file size + o32(0) + # reserved + o32(offset)) # image data offset + + # bitmap info header + fp.write(o32(header) + # info header size + o32(im.size[0]) + # width + o32(im.size[1]) + # height + o16(1) + # planes + o16(bits) + # depth + o32(0) + # compression (0=uncompressed) + o32(image) + # size of bitmap + o32(1) + o32(1) + # resolution + o32(colors) + # colors used + o32(colors)) # colors important + + fp.write("\000" * (header - 40)) # padding (for OS/2 format) + + if im.mode == "1": + for i in (0, 255): + fp.write(chr(i) * 4) + elif im.mode == "L": + for i in range(256): + fp.write(chr(i) * 4) + elif im.mode == "P": + fp.write(im.im.getpalette("RGB", "BGRX")) + + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, stride, -1))]) + +# +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py new file mode 100755 index 00000000000..4b111b393ab --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py @@ -0,0 +1,68 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFile + +_handler = None + +## +# Install application-specific BUFR image handler. +# +# @param handler Handler object. + +def register_handler(handler): + global _handler + _handler = handler + +# -------------------------------------------------------------------- +# Image adapter + +def _accept(prefix): + return prefix[:4] == "BUFR" or prefix[:4] == "ZCZC" + +class BufrStubImageFile(ImageFile.StubImageFile): + + format = "BUFR" + format_description = "BUFR" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not a BUFR file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("BUFR save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py new file mode 100755 index 00000000000..dff50e6bfda --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py @@ -0,0 +1,116 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +## +# A file object that provides read access to a part of an existing +# file (for example a TAR file). + +class ContainerIO: + + ## + # Create file object. + # + # @param file Existing file. + # @param offset Start of region, in bytes. + # @param length Size of region, in bytes. + + def __init__(self, file, offset, length): + self.fh = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self): + return 0 + + ## + # Move file pointer. + # + # @param offset Offset in bytes. + # @param mode Starting position. Use 0 for beginning of region, 1 + # for current offset, and 2 for end of region. You cannot move + # the pointer outside the defined region. + + def seek(self, offset, mode = 0): + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + + ## + # Get current file pointer. + # + # @return Offset from start of region, in bytes. + + def tell(self): + return self.pos + + ## + # Read data. + # + # @def read(bytes=0) + # @param bytes Number of bytes to read. If omitted or zero, + # read until end of region. + # @return An 8-bit string. + + def read(self, n = 0): + if n: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if not n: # EOF + return "" + self.pos = self.pos + n + return self.fh.read(n) + + ## + # Read a line of text. + # + # @return An 8-bit string. + + def readline(self): + s = "" + while 1: + c = self.read(1) + if not c: + break + s = s + c + if c == "\n": + break + return s + + ## + # Read multiple lines of text. + # + # @return A list of 8-bit strings. + + def readlines(self): + l = [] + while 1: + s = self.readline() + if not s: + break + l.append(s) + return l diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py new file mode 100755 index 00000000000..6a126e701c5 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py @@ -0,0 +1,88 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Cursor support for PIL +# +# notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# history: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.1" + +import Image, BmpImagePlugin + + +# +# -------------------------------------------------------------------- + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + + +def _accept(prefix): + return prefix[:4] == "\0\0\2\0" + +## +# Image plugin for Windows Cursor files. + +class CurImageFile(BmpImagePlugin.BmpImageFile): + + format = "CUR" + format_description = "Windows Cursor" + + def _open(self): + + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + raise SyntaxError, "not an CUR file" + + # pick the largest cursor in the file + m = "" + for i in range(i16(s[4:])): + s = self.fp.read(16) + if not m: + m = s + elif ord(s[0]) > ord(m[0]) and ord(s[1]) > ord(m[1]): + m = s + #print "width", ord(s[0]) + #print "height", ord(s[1]) + #print "colors", ord(s[2]) + #print "reserved", ord(s[3]) + #print "hotspot x", i16(s[4:]) + #print "hotspot y", i16(s[6:]) + #print "bytes", i32(s[8:]) + #print "offset", i32(s[12:]) + + # load as bitmap + self._bitmap(i32(m[12:]) + offset) + + # patch up the bitmap height + self.size = self.size[0], self.size[1]/2 + d, e, o, a = self.tile[0] + self.tile[0] = d, (0,0)+self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open("CUR", CurImageFile, _accept) + +Image.register_extension("CUR", ".cur") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py new file mode 100755 index 00000000000..32da7d831a6 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py @@ -0,0 +1,78 @@ +# +# The Python Imaging Library. +# $Id$ +# +# DCX file handling +# +# DCX is a container file format defined by Intel, commonly used +# for fax applications. Each DCX file consists of a directory +# (a list of file offsets) followed by a set of (usually 1-bit) +# PCX files. +# +# History: +# 1995-09-09 fl Created +# 1996-03-20 fl Properly derived from PcxImageFile. +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2002-07-30 fl Fixed file handling +# +# Copyright (c) 1997-98 by Secret Labs AB. +# Copyright (c) 1995-96 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.2" + +import Image + +from PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + +def _accept(prefix): + return i32(prefix) == MAGIC + +## +# Image plugin for the Intel DCX format. + +class DcxImageFile(PcxImageFile): + + format = "DCX" + format_description = "Intel DCX" + + def _open(self): + + # Header + s = self.fp.read(4) + if i32(s) != MAGIC: + raise SyntaxError, "not a DCX file" + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self.__fp = self.fp + self.seek(0) + + def seek(self, frame): + if frame >= len(self._offset): + raise EOFError("attempt to seek outside DCX directory") + self.frame = frame + self.fp = self.__fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self): + return self.frame + + +Image.register_open("DCX", DcxImageFile, _accept) + +Image.register_extension("DCX", ".dcx") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py new file mode 100755 index 00000000000..1927b32276b --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py @@ -0,0 +1,349 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EPS file handling +# +# History: +# 1995-09-01 fl Created (0.1) +# 1996-05-18 fl Don't choke on "atend" fields, Ghostscript interface (0.2) +# 1996-08-22 fl Don't choke on floating point BoundingBox values +# 1996-08-23 fl Handle files from Macintosh (0.3) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2003-09-07 fl Check gs.close status (from Federico Di Gregorio) (0.5) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.5" + +import re, string +import Image, ImageFile + +# +# -------------------------------------------------------------------- + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + +def o32(i): + return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) + +split = re.compile(r"^%%([^:]*):[ \t]*(.*)[ \t]*$") +field = re.compile(r"^%[%!\w]([^:]*)[ \t]*$") + +def Ghostscript(tile, size, fp): + """Render an image using Ghostscript (Unix only)""" + + # Unpack decoder tile + decoder, tile, offset, data = tile[0] + length, bbox = data + + import tempfile, os + + file = tempfile.mktemp() + + # Build ghostscript command + command = ["gs", + "-q", # quite mode + "-g%dx%d" % size, # set output geometry (pixels) + "-dNOPAUSE -dSAFER", # don't pause between pages, safe mode + "-sDEVICE=ppmraw", # ppm driver + "-sOutputFile=%s" % file,# output file + "- >/dev/null 2>/dev/null"] + + command = string.join(command) + + # push data through ghostscript + try: + gs = os.popen(command, "w") + # adjust for image origin + if bbox[0] != 0 or bbox[1] != 0: + gs.write("%d %d translate\n" % (-bbox[0], -bbox[1])) + fp.seek(offset) + while length > 0: + s = fp.read(8192) + if not s: + break + length = length - len(s) + gs.write(s) + status = gs.close() + if status: + raise IOError("gs failed (status %d)" % status) + im = Image.core.open_ppm(file) + finally: + try: os.unlink(file) + except: pass + + return im + + +class PSFile: + """Wrapper that treats either CR or LF as end of line.""" + def __init__(self, fp): + self.fp = fp + self.char = None + def __getattr__(self, id): + v = getattr(self.fp, id) + setattr(self, id, v) + return v + def seek(self, offset, whence=0): + self.char = None + self.fp.seek(offset, whence) + def tell(self): + pos = self.fp.tell() + if self.char: + pos = pos - 1 + return pos + def readline(self): + s = "" + if self.char: + c = self.char + self.char = None + else: + c = self.fp.read(1) + while c not in "\r\n": + s = s + c + c = self.fp.read(1) + if c == "\r": + self.char = self.fp.read(1) + if self.char == "\n": + self.char = None + return s + "\n" + + +def _accept(prefix): + return prefix[:4] == "%!PS" or i32(prefix) == 0xC6D3D0C5L + +## +# Image plugin for Encapsulated Postscript. This plugin supports only +# a few variants of this format. + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + def _open(self): + + # FIXME: should check the first 512 bytes to see if this + # really is necessary (platform-dependent, though...) + + fp = PSFile(self.fp) + + # HEAD + s = fp.read(512) + if s[:4] == "%!PS": + offset = 0 + fp.seek(0, 2) + length = fp.tell() + elif i32(s) == 0xC6D3D0C5L: + offset = i32(s[4:]) + length = i32(s[8:]) + fp.seek(offset) + else: + raise SyntaxError, "not an EPS file" + + fp.seek(offset) + + box = None + + self.mode = "RGB" + self.size = 1, 1 # FIXME: huh? + + # + # Load EPS header + + s = fp.readline() + + while s: + + if len(s) > 255: + raise SyntaxError, "not an EPS file" + + if s[-2:] == '\r\n': + s = s[:-2] + elif s[-1:] == '\n': + s = s[:-1] + + try: + m = split.match(s) + except re.error, v: + raise SyntaxError, "not an EPS file" + + if m: + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + box = map(int, map(float, string.split(v))) + self.size = box[2] - box[0], box[3] - box[1] + self.tile = [("eps", (0,0) + self.size, offset, + (length, box))] + except: + pass + + else: + + m = field.match(s) + + if m: + k = m.group(1) + if k == "EndComments": + break + if k[:8] == "PS-Adobe": + self.info[k[:8]] = k[9:] + else: + self.info[k] = "" + else: + raise IOError, "bad EPS header" + + s = fp.readline() + + if s[:1] != "%": + break + + + # + # Scan for an "ImageData" descriptor + + while s[0] == "%": + + if len(s) > 255: + raise SyntaxError, "not an EPS file" + + if s[-2:] == '\r\n': + s = s[:-2] + elif s[-1:] == '\n': + s = s[:-1] + + if s[:11] == "%ImageData:": + + [x, y, bi, mo, z3, z4, en, id] =\ + string.split(s[11:], maxsplit=7) + + x = int(x); y = int(y) + + bi = int(bi) + mo = int(mo) + + en = int(en) + + if en == 1: + decoder = "eps_binary" + elif en == 2: + decoder = "eps_hex" + else: + break + if bi != 8: + break + if mo == 1: + self.mode = "L" + elif mo == 2: + self.mode = "LAB" + elif mo == 3: + self.mode = "RGB" + else: + break + + if id[:1] == id[-1:] == '"': + id = id[1:-1] + + # Scan forward to the actual image data + while 1: + s = fp.readline() + if not s: + break + if s[:len(id)] == id: + self.size = x, y + self.tile2 = [(decoder, + (0, 0, x, y), + fp.tell(), + 0)] + return + + s = fp.readline() + if not s: + break + + if not box: + raise IOError, "cannot determine EPS bounding box" + + def load(self): + # Load EPS via Ghostscript + if not self.tile: + return + self.im = Ghostscript(self.tile, self.size, self.fp) + self.mode = self.im.mode + self.size = self.im.size + self.tile = [] + +# +# -------------------------------------------------------------------- + +def _save(im, fp, filename, eps=1): + """EPS Writer for the Python Imaging Library.""" + + # + # make sure image data is available + im.load() + + # + # determine postscript image mode + if im.mode == "L": + operator = (8, 1, "image") + elif im.mode == "RGB": + operator = (8, 3, "false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, "false 4 colorimage") + else: + raise ValueError, "image mode is not supported" + + if eps: + # + # write EPS header + fp.write("%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write("%%Creator: PIL 0.1 EpsEncode\n") + #fp.write("%%CreationDate: %s"...) + fp.write("%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write("%%Pages: 1\n") + fp.write("%%EndComments\n") + fp.write("%%Page: 1 1\n") + fp.write("%%ImageData: %d %d " % im.size) + fp.write("%d %d 0 1 1 \"%s\"\n" % operator) + + # + # image header + fp.write("gsave\n") + fp.write("10 dict begin\n") + fp.write("/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write("%d %d scale\n" % im.size) + fp.write("%d %d 8\n" % im.size) # <= bits + fp.write("[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write("{ currentfile buf readhexstring pop } bind\n") + fp.write("%s\n" % operator[2]) + + ImageFile._save(im, fp, [("eps", (0,0)+im.size, 0, None)]) + + fp.write("\n%%%%EndBinary\n") + fp.write("grestore end\n") + fp.flush() + +# +# -------------------------------------------------------------------- + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extension(EpsImageFile.format, ".ps") +Image.register_extension(EpsImageFile.format, ".eps") + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py new file mode 100755 index 00000000000..b033aad35e8 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py @@ -0,0 +1,157 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EXIF tags +# +# Copyright (c) 2003 by Secret Labs AB +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known EXIF tags. +## + +## +# Maps EXIF tags to tag names. + +TAGS = { + + # possibly incomplete + 0x0100: "ImageWidth", + 0x0101: "ImageLength", + 0x0102: "BitsPerSample", + 0x0103: "Compression", + 0x0106: "PhotometricInterpretation", + 0x010e: "ImageDescription", + 0x010f: "Make", + 0x0110: "Model", + 0x0111: "StripOffsets", + 0x0112: "Orientation", + 0x0115: "SamplesPerPixel", + 0x0116: "RowsPerStrip", + 0x0117: "StripByteConunts", + 0x011a: "XResolution", + 0x011a: "XResolution", + 0x011b: "YResolution", + 0x011b: "YResolution", + 0x011c: "PlanarConfiguration", + 0x0128: "ResolutionUnit", + 0x0128: "ResolutionUnit", + 0x012d: "TransferFunction", + 0x0131: "Software", + 0x0132: "DateTime", + 0x013b: "Artist", + 0x013e: "WhitePoint", + 0x013f: "PrimaryChromaticities", + 0x0201: "JpegIFOffset", + 0x0202: "JpegIFByteCount", + 0x0211: "YCbCrCoefficients", + 0x0211: "YCbCrCoefficients", + 0x0212: "YCbCrSubSampling", + 0x0213: "YCbCrPositioning", + 0x0213: "YCbCrPositioning", + 0x0214: "ReferenceBlackWhite", + 0x0214: "ReferenceBlackWhite", + 0x1000: "RelatedImageFileFormat", + 0x1001: "RelatedImageLength", + 0x1001: "RelatedImageWidth", + 0x828d: "CFARepeatPatternDim", + 0x828e: "CFAPattern", + 0x828f: "BatteryLevel", + 0x8298: "Copyright", + 0x829a: "ExposureTime", + 0x829d: "FNumber", + 0x8769: "ExifOffset", + 0x8773: "InterColorProfile", + 0x8822: "ExposureProgram", + 0x8824: "SpectralSensitivity", + 0x8825: "GPSInfo", + 0x8827: "ISOSpeedRatings", + 0x8828: "OECF", + 0x8829: "Interlace", + 0x882a: "TimeZoneOffset", + 0x882b: "SelfTimerMode", + 0x9000: "ExifVersion", + 0x9003: "DateTimeOriginal", + 0x9004: "DateTimeDigitized", + 0x9101: "ComponentsConfiguration", + 0x9102: "CompressedBitsPerPixel", + 0x9201: "ShutterSpeedValue", + 0x9202: "ApertureValue", + 0x9203: "BrightnessValue", + 0x9204: "ExposureBiasValue", + 0x9205: "MaxApertureValue", + 0x9206: "SubjectDistance", + 0x9207: "MeteringMode", + 0x9208: "LightSource", + 0x9209: "Flash", + 0x920a: "FocalLength", + 0x920b: "FlashEnergy", + 0x920c: "SpatialFrequencyResponse", + 0x920d: "Noise", + 0x9211: "ImageNumber", + 0x9212: "SecurityClassification", + 0x9213: "ImageHistory", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x9216: "TIFF/EPStandardID", + 0x927c: "MakerNote", + 0x9286: "UserComment", + 0x9290: "SubsecTime", + 0x9291: "SubsecTimeOriginal", + 0x9292: "SubsecTimeDigitized", + 0xa000: "FlashPixVersion", + 0xa001: "ColorSpace", + 0xa002: "ExifImageWidth", + 0xa003: "ExifImageHeight", + 0xa004: "RelatedSoundFile", + 0xa005: "ExifInteroperabilityOffset", + 0xa20b: "FlashEnergy", + 0xa20c: "SpatialFrequencyResponse", + 0xa20e: "FocalPlaneXResolution", + 0xa20f: "FocalPlaneYResolution", + 0xa210: "FocalPlaneResolutionUnit", + 0xa214: "SubjectLocation", + 0xa215: "ExposureIndex", + 0xa217: "SensingMethod", + 0xa300: "FileSource", + 0xa301: "SceneType", + 0xa302: "CFAPattern", + +} + +## +# Maps EXIF GSP tags to tag names. + +GPSTAGS = { + 0: "GPSVersionID", + 1: "GPSLatitudeRef", + 2: "GPSLatitude", + 3: "GPSLongitudeRef", + 4: "GPSLongitude", + 5: "GPSAltitudeRef", + 6: "GPSAltitude", + 7: "GPSTimeStamp", + 8: "GPSSatellites", + 9: "GPSStatus", + 10: "GPSMeasureMode", + 11: "GPSDOP", + 12: "GPSSpeedRef", + 13: "GPSSpeed", + 14: "GPSTrackRef", + 15: "GPSTrack", + 16: "GPSImgDirectionRef", + 17: "GPSImgDirection", + 18: "GPSMapDatum", + 19: "GPSDestLatitudeRef", + 20: "GPSDestLatitude", + 21: "GPSDestLongitudeRef", + 22: "GPSDestLongitude", + 23: "GPSDestBearingRef", + 24: "GPSDestBearing", + 25: "GPSDestDistanceRef", + 26: "GPSDestDistance" +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py new file mode 100755 index 00000000000..ac8be80a908 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS stub adapter +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFile + +_handler = None + +## +# Install application-specific FITS image handler. +# +# @param handler Handler object. + +def register_handler(handler): + global _handler + _handler = handler + +# -------------------------------------------------------------------- +# Image adapter + +def _accept(prefix): + return prefix[:6] == "SIMPLE" + +class FITSStubImageFile(ImageFile.StubImageFile): + + format = "FITS" + format_description = "FITS" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(6)): + raise SyntaxError("Not a FITS file") + + # FIXME: add more sanity checks here; mandatory header items + # include SIMPLE, BITPIX, NAXIS, etc. + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("FITS save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept) +Image.register_save(FITSStubImageFile.format, _save) + +Image.register_extension(FITSStubImageFile.format, ".fit") +Image.register_extension(FITSStubImageFile.format, ".fits") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py new file mode 100755 index 00000000000..706c36a7f68 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py @@ -0,0 +1,142 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.2" + +import Image, ImageFile, ImagePalette +import string + + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + +# +# decoder + +def _accept(prefix): + return i16(prefix[4:6]) in [0xAF11, 0xAF12] + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + +class FliImageFile(ImageFile.ImageFile): + + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + + def _open(self): + + # HEAD + s = self.fp.read(128) + magic = i16(s[4:6]) + if magic not in [0xAF11, 0xAF12]: + raise SyntaxError, "not an FLI/FLC file" + + # image characteristics + self.mode = "P" + self.size = i16(s[8:10]), i16(s[10:12]) + + # animation speed + duration = i32(s[16:20]) + if magic == 0xAF11: + duration = (duration * 1000) / 70 + self.info["duration"] = duration + + # look for palette + palette = map(lambda a: (a,a,a), range(256)) + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s[4:6]) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + s = self.fp.read(16) + + if i16(s[4:6]) == 0xF1FA: + # look for palette chunk + s = self.fp.read(6) + if i16(s[4:6]) == 11: + self._palette(palette, 2) + elif i16(s[4:6]) == 4: + self._palette(palette, 0) + + palette = map(lambda (r,g,b): chr(r)+chr(g)+chr(b), palette) + self.palette = ImagePalette.raw("RGB", string.join(palette, "")) + + # set things up to decode first frame + self.frame = -1 + self.__fp = self.fp + + self.seek(0) + + def _palette(self, palette, shift): + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + ord(s[0]) + n = ord(s[1]) + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = ord(s[n]) << shift + g = ord(s[n+1]) << shift + b = ord(s[n+2]) << shift + palette[i] = (r, g, b) + i = i + 1 + + def seek(self, frame): + + if frame != self.frame + 1: + raise ValueError, "cannot seek to frame %d" % frame + self.frame = frame + + # move to next frame + self.fp = self.__fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + raise EOFError + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [("fli", (0,0)+self.size, self.__offset, None)] + + self.__offset = self.__offset + framesize + + def tell(self): + + return self.frame + +# +# registry + +Image.register_open("FLI", FliImageFile, _accept) + +Image.register_extension("FLI", ".fli") +Image.register_extension("FLI", ".flc") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py new file mode 100755 index 00000000000..d9d8eb38a69 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py @@ -0,0 +1,146 @@ +# +# The Python Imaging Library +# $Id$ +# +# base class for raster font file parsers +# +# history: +# 1997-06-05 fl created +# 1997-08-19 fl restrict image width +# +# Copyright (c) 1997-1998 by Secret Labs AB +# Copyright (c) 1997-1998 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import os +import Image + +import marshal + +try: + import zlib +except ImportError: + zlib = None + +WIDTH = 800 + +def puti16(fp, values): + # write network order (big-endian) 16-bit sequence + for v in values: + if v < 0: + v = v + 65536 + fp.write(chr(v>>8&255) + chr(v&255)) + +## +# Base class for raster font file handlers. + +class FontFile: + + bitmap = None + + def __init__(self): + + self.info = {} + self.glyph = [None] * 256 + + def __getitem__(self, ix): + return self.glyph[ix] + + def compile(self): + "Create metrics and bitmap" + + if self.bitmap: + return + + # create bitmap large enough to hold all data + h = w = maxwidth = 0 + lines = 1 + for glyph in self: + if glyph: + d, dst, src, im = glyph + h = max(h, src[3] - src[1]) + w = w + (src[2] - src[0]) + if w > WIDTH: + lines = lines + 1 + w = (src[2] - src[0]) + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return "" + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx, yy = src[2] - src[0], src[3] - src[1] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + # print chr(i), dst, s + self.metrics[i] = d, dst, s + + + def save1(self, filename): + "Save font in version 1 format" + + self.compile() + + # font data + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + fp = open(os.path.splitext(filename)[0] + ".pil", "wb") + fp.write("PILfont\n") + fp.write(";;;;;;%d;\n" % self.ysize) # HACK!!! + fp.write("DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, [0] * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) + fp.close() + + + def save2(self, filename): + "Save font in version 2 format" + + # THIS IS WORK IN PROGRESS + + self.compile() + + data = marshal.dumps((self.metrics, self.info)) + + if zlib: + data = "z" + zlib.compress(data, 9) + else: + data = "u" + data + + fp = open(os.path.splitext(filename)[0] + ".pil", "wb") + + fp.write("PILfont2\n" + self.name + "\n" + "DATA\n") + + fp.write(data) + + self.bitmap.save(fp, "PNG") + + fp.close() + + + save = save1 # for now diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py new file mode 100755 index 00000000000..b78fe8c70e9 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py @@ -0,0 +1,224 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.1" + + +import Image, ImageFile +from OleFileIO import * + + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007ffe): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017ffe): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027ffe): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB","RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037ffe): ("RGBA","RGBA"), +} + +# +# -------------------------------------------------------------------- + +def _accept(prefix): + return prefix[:8] == MAGIC + +## +# Image plugin for the FlashPix images. + +class FpxImageFile(ImageFile.ImageFile): + + format = "FPX" + format_description = "FlashPix" + + def _open(self): + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = OleFileIO(self.fp) + except IOError: + raise SyntaxError, "not an FPX file; invalid OLE file" + + if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + raise SyntaxError, "not an FPX file; bad root CLSID" + + self._open_index(1) + + def _open_index(self, index = 1): + # + # get the Image Contents Property Set + + prop = self.ole.getproperties([ + "Data Object Store %06d" % index, + "\005Image Contents" + ]) + + # size (highest resolution) + + self.size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size / 2 + i = i + 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002|id] + + colors = [] + for i in range(i32(s, 4)): + # note: for now, we ignore the "uncalibrated" flag + colors.append(i32(s, 8+i*4) & 0x7fffffff) + + self.mode, self.rawmode = MODES[tuple(colors)] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001|(i << 16) + if prop.has_key(id): + self.jpeg[i] = prop[id] + + # print len(self.jpeg), "tables loaded" + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index = 1, subimage = 0): + # + # setup tile descriptors for a given subimage + + stream = [ + "Data Object Store %06d" % index, + "Resolution %04d" % subimage, + "Subimage 0000 Header" + ] + + fp = self.ole.openstream(stream) + + # skip prefix + p = fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + # print size, self.mode, self.rawmode + + if size != self.size: + raise IOError, "subimage mismatch" + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + + compression = i32(s, i+8) + + if compression == 0: + self.tile.append(("raw", (x,y,x+xtile,y+ytile), + i32(s, i) + 28, (self.rawmode))) + + elif compression == 1: + + # FIXME: the fill decoder is not implemented + self.tile.append(("fill", (x,y,x+xtile,y+ytile), + i32(s, i) + 28, (self.rawmode, s[12:16]))) + + elif compression == 2: + + internal_color_conversion = ord(s[14]) + jpeg_tables = ord(s[15]) + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append(("jpeg", (x,y,x+xtile,y+ytile), + i32(s, i) + 28, (rawmode, jpegmode))) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + raise IOError, "unknown/invalid compression" + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self.fp = None + + def load(self): + + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + ImageFile.ImageFile.load(self) + +# +# -------------------------------------------------------------------- + +Image.register_open("FPX", FpxImageFile, _accept) + +Image.register_extension("FPX", ".fpx") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py new file mode 100755 index 00000000000..c71a0f77f9c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py @@ -0,0 +1,70 @@ +# +# The Python Imaging Library +# $Id$ +# +# load a GIMP brush file +# +# History: +# 96-03-14 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFile + +def i32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24L) + +def _accept(prefix): + return i32(prefix) >= 20 and i32(prefix[4:8]) == 1 + +## +# Image plugin for the GIMP brush format. + +class GbrImageFile(ImageFile.ImageFile): + + format = "GBR" + format_description = "GIMP brush file" + + def _open(self): + + header_size = i32(self.fp.read(4)) + version = i32(self.fp.read(4)) + if header_size < 20 or version != 1: + raise SyntaxError, "not a GIMP brush" + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + bytes = i32(self.fp.read(4)) + if width <= 0 or height <= 0 or bytes != 1: + raise SyntaxError, "not a GIMP brush" + + comment = self.fp.read(header_size - 20)[:-1] + + self.mode = "L" + self.size = width, height + + self.info["comment"] = comment + + # Since the brush is so small, we read the data immediately + self.data = self.fp.read(width * height) + + def load(self): + + if not self.data: + return + + # create an image out of the brush data block + self.im = Image.core.new(self.mode, self.size) + self.im.fromstring(self.data) + self.data = "" + +# +# registry + +Image.register_open("GBR", GbrImageFile, _accept) + +Image.register_extension("GBR", ".gbr") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py new file mode 100755 index 00000000000..b5f1dd25d79 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py @@ -0,0 +1,85 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GD file handling +# +# History: +# 1996-04-12 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +# NOTE: This format cannot be automatically recognized, so the +# class is not registered for use with Image.open(). To open a +# gd file, use the GdImageFile.open() function instead. + +# THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This +# implementation is provided for convenience and demonstrational +# purposes only. + + +__version__ = "0.1" + +import ImageFile, ImagePalette + +def i16(c): + return ord(c[1]) + (ord(c[0])<<8) + +## +# Image plugin for the GD uncompressed format. Note that this format +# is not supported by the standard Image.open function. To use +# this plugin, you have to import the GdImageFile module and +# use the GdImageFile.open function. + +class GdImageFile(ImageFile.ImageFile): + + format = "GD" + format_description = "GD uncompressed images" + + def _open(self): + + # Header + s = self.fp.read(775) + + self.mode = "L" # FIXME: "P" + self.size = i16(s[0:2]), i16(s[2:4]) + + # transparency index + tindex = i16(s[5:7]) + if tindex < 256: + self.info["transparent"] = tindex + + self.palette = ImagePalette.raw("RGB", s[7:]) + + self.tile = [("raw", (0,0)+self.size, 775, ("L", 0, -1))] + +## +# Load texture from a GD image file. +# +# @param filename GD file name, or an opened file handle. +# @param mode Optional mode. In this version, if the mode argument +# is given, it must be "r". +# @return An image instance. +# @exception IOError If the image could not be read. + +def open(fp, mode = "r"): + + if mode != "r": + raise ValueError("bad mode") + + if type(fp) == type(""): + import __builtin__ + filename = fp + fp = __builtin__.open(fp, "rb") + else: + filename = "" + + try: + return GdImageFile(fp, filename) + except SyntaxError: + raise IOError("cannot identify this image file") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py new file mode 100755 index 00000000000..4d03493b544 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py @@ -0,0 +1,407 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.9" + + +import Image, ImageFile, ImagePalette + + +# -------------------------------------------------------------------- +# Helpers + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def o16(i): + return chr(i&255) + chr(i>>8&255) + + +# -------------------------------------------------------------------- +# Identify/read GIF files + +def _accept(prefix): + return prefix[:6] in ["GIF87a", "GIF89a"] + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + +class GifImageFile(ImageFile.ImageFile): + + format = "GIF" + format_description = "Compuserve GIF" + + global_palette = None + + def data(self): + s = self.fp.read(1) + if s and ord(s): + return self.fp.read(ord(s)) + return None + + def _open(self): + + # Screen + s = self.fp.read(13) + if s[:6] not in ["GIF87a", "GIF89a"]: + raise SyntaxError, "not a GIF file" + + self.info["version"] = s[:6] + + self.size = i16(s[6:]), i16(s[8:]) + + self.tile = [] + + flags = ord(s[10]) + + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = ord(s[11]) + # check if palette contains colour indices + p = self.fp.read(3<= 3 and ord(block[0]) == 1: + self.info["loop"] = i16(block[1:3]) + while self.data(): + pass + + elif s == ",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s[0:]), i16(s[2:]) + x1, y1 = x0 + i16(s[4:]), y0 + i16(s[6:]) + flags = ord(s[8]) + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + self.palette =\ + ImagePalette.raw("RGB", self.fp.read(3<%s" % (file, filename)) + else: + os.system("ppmquant 256 %s | ppmtogif >%s" % (file, filename)) + try: os.unlink(file) + except: pass + + +# -------------------------------------------------------------------- +# GIF utilities + +def getheader(im, info=None): + """Return a list of strings representing a GIF header""" + + optimize = info and info.get("optimize", 0) + + s = [ + "GIF87a" + # magic + o16(im.size[0]) + # size + o16(im.size[1]) + + chr(7 + 128) + # flags: bits + palette + chr(0) + # background + chr(0) # reserved/aspect + ] + + if optimize: + # minimize color palette + i = 0 + maxcolor = 0 + for count in im.histogram(): + if count: + maxcolor = i + i = i + 1 + else: + maxcolor = 256 + + # global palette + if im.mode == "P": + # colour palette + s.append(im.im.getpalette("RGB")[:maxcolor*3]) + else: + # greyscale + for i in range(maxcolor): + s.append(chr(i) * 3) + + return s + +def getdata(im, offset = (0, 0), **params): + """Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data.""" + + class collector: + data = [] + def write(self, data): + self.data.append(data) + + im.load() # make sure raster data is available + + fp = collector() + + try: + im.encoderinfo = params + + # local image header + fp.write("," + + o16(offset[0]) + # offset + o16(offset[1]) + + o16(im.size[0]) + # size + o16(im.size[1]) + + chr(0) + # flags + chr(8)) # bits + + ImageFile._save(im, fp, [("gif", (0,0)+im.size, 0, RAWMODE[im.mode])]) + + fp.write("\0") # end of image data + + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py new file mode 100755 index 00000000000..1a850dc53f7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py @@ -0,0 +1,124 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from math import pi, log, sin, sqrt +import string + +# -------------------------------------------------------------------- +# Stuff to translate curve segments to palette values (derived from +# the corresponding code in GIMP, written by Federico Mena Quintero. +# See the GIMP distribution for more information.) +# + +EPSILON = 1e-10 + +def linear(middle, pos): + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + +def curved(middle, pos): + return pos ** (log(0.5) / log(max(middle, EPSILON))) + +def sine(middle, pos): + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + +def sphere_increasing(middle, pos): + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + +def sphere_decreasing(middle, pos): + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + +SEGMENTS = [ linear, curved, sine, sphere_increasing, sphere_decreasing ] + +class GradientFile: + + gradient = None + + def getpalette(self, entries = 256): + + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + + x = i / float(entries-1) + + while x1 < x: + ix = ix + 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = chr(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = chr(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = chr(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = chr(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return string.join(palette, ""), "RGBA" + +## +# File handler for GIMP's gradient format. + +class GimpGradientFile(GradientFile): + + def __init__(self, fp): + + if fp.readline()[:13] != "GIMP Gradient": + raise SyntaxError, "not a GIMP gradient file" + + count = int(fp.readline()) + + gradient = [] + + for i in range(count): + + s = string.split(fp.readline()) + w = map(float, s[:11]) + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + raise IOError, "cannot handle HSV colour space" + + gradient.append((x0, x1, xm, rgb0, rgb1, segment)) + + self.gradient = gradient diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py new file mode 100755 index 00000000000..aba85b71f33 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py @@ -0,0 +1,61 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read GIMP palette files +# +# History: +# 1997-08-23 fl Created +# 2004-09-07 fl Support GIMP 2.0 palette files. +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1997-2004. +# +# See the README file for information on usage and redistribution. +# + +import re, string + +## +# File handler for GIMP's palette format. + +class GimpPaletteFile: + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = map(lambda i: chr(i)*3, range(256)) + + if fp.readline()[:12] != "GIMP Palette": + raise SyntaxError, "not a GIMP palette file" + + i = 0 + + while i <= 255: + + s = fp.readline() + + if not s: + break + # skip fields and comment lines + if re.match("\w+:|#", s): + continue + if len(s) > 100: + raise SyntaxError, "bad palette file" + + v = tuple(map(int, string.split(s)[:3])) + if len(v) != 3: + raise ValueError, "bad palette entry" + + if 0 <= i <= 255: + self.palette[i] = chr(v[0]) + chr(v[1]) + chr(v[2]) + + i = i + 1 + + self.palette = string.join(self.palette, "") + + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py new file mode 100755 index 00000000000..e232f90db7e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py @@ -0,0 +1,68 @@ +# +# The Python Imaging Library +# $Id$ +# +# GRIB stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFile + +_handler = None + +## +# Install application-specific GRIB image handler. +# +# @param handler Handler object. + +def register_handler(handler): + global _handler + _handler = handler + +# -------------------------------------------------------------------- +# Image adapter + +def _accept(prefix): + return prefix[0:4] == "GRIB" and prefix[7] == chr(1) + +class GribStubImageFile(ImageFile.StubImageFile): + + format = "GRIB" + format_description = "GRIB" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not a GRIB file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("GRIB save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) +Image.register_save(GribStubImageFile.format, _save) + +Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py new file mode 100755 index 00000000000..bc5e3743339 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,70 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFile + +_handler = None + +## +# Install application-specific HDF5 image handler. +# +# @param handler Handler object. + +def register_handler(handler): + global _handler + _handler = handler + +# -------------------------------------------------------------------- +# Image adapter + +def _accept(prefix): + return prefix[:8] == "\x89HDF\r\n\x1a\n" + +class HDF5StubImageFile(ImageFile.StubImageFile): + + format = "HDF5" + format_description = "HDF5" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not an HDF file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("HDF5 save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extension(HDF5StubImageFile.format, ".h5") +Image.register_extension(HDF5StubImageFile.format, ".hdf") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py new file mode 100755 index 00000000000..4d68fa232f9 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py @@ -0,0 +1,211 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Mac OS X icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFile +import string, struct + +HEADERSIZE = 8 + +def nextheader(fobj): + return struct.unpack('>4sI', fobj.read(HEADERSIZE)) + +def read_32t(fobj, (start, length), (width, height)): + # The 128x128 icon seems to have an extra header for some reason. + fobj.seek(start) + sig = fobj.read(4) + if sig != '\x00\x00\x00\x00': + raise SyntaxError, 'Unknown signature, expecting 0x00000000' + return read_32(fobj, (start + 4, length - 4), (width, height)) + +def read_32(fobj, (start, length), size): + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + fobj.seek(start) + sizesq = size[0] * size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte = ord(byte) + if byte & 0x80: + blocksize = byte - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte + 1 + data.append(fobj.read(blocksize)) + bytesleft = bytesleft - blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + raise SyntaxError( + "Error reading channel [%r left]" % bytesleft + ) + band = Image.frombuffer( + "L", size, string.join(data, ""), "raw", "L", 0, 1 + ) + im.im.putband(band.im, band_ix) + return {"RGB": im} + +def read_mk(fobj, (start, length), size): + # Alpha masks seem to be uncompressed + fobj.seek(start) + band = Image.frombuffer( + "L", size, fobj.read(size[0]*size[1]), "raw", "L", 0, 1 + ) + return {"A": band} + +class IcnsFile: + + SIZES = { + (128, 128): [ + ('it32', read_32t), + ('t8mk', read_mk), + ], + (48, 48): [ + ('ih32', read_32), + ('h8mk', read_mk), + ], + (32, 32): [ + ('il32', read_32), + ('l8mk', read_mk), + ], + (16, 16): [ + ('is32', read_32), + ('s8mk', read_mk), + ], + } + + def __init__(self, fobj): + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if sig != 'icns': + raise SyntaxError, 'not an icns file' + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + i = i + HEADERSIZE + blocksize = blocksize - HEADERSIZE + dct[sig] = (i, blocksize) + fobj.seek(blocksize, 1) + i = i + blocksize + + def itersizes(self): + sizes = [] + for size, fmts in self.SIZES.items(): + for (fmt, reader) in fmts: + if self.dct.has_key(fmt): + sizes.append(size) + break + return sizes + + def bestsize(self): + sizes = self.itersizes() + if not sizes: + raise SyntaxError, "No 32bit icon resources found" + return max(sizes) + + def dataforsize(self, size): + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage(self, size=None): + if size is None: + size = self.bestsize() + channels = self.dataforsize(size) + im = channels.get("RGB").copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + +## +# Image plugin for Mac OS icons. + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self): + self.icns = IcnsFile(self.fp) + self.mode = 'RGBA' + self.size = self.icns.bestsize() + self.info['sizes'] = self.icns.itersizes() + # Just use this to see if it's loaded or not yet. + self.tile = ('',) + + def load(self): + Image.Image.load(self) + if not self.tile: + return + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.size) + self.im = im.im + self.mode = im.mode + self.size = im.size + self.fp = None + self.icns = None + self.tile = () + self.load_end() + + +Image.register_open("ICNS", IcnsImageFile, lambda x: x[:4] == 'icns') +Image.register_extension("ICNS", '.icns') + +if __name__ == '__main__': + import os, sys + im = Image.open(open(sys.argv[1], "rb")) + im.save("out.png") + os.startfile("out.png") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py new file mode 100755 index 00000000000..94846dc0ca0 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py @@ -0,0 +1,86 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Icon support for PIL +# +# Notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# History: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.1" + +import Image, BmpImagePlugin + + +# +# -------------------------------------------------------------------- + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + + +def _accept(prefix): + return prefix[:4] == "\0\0\1\0" + +## +# Image plugin for Windows Icon files. + +class IcoImageFile(BmpImagePlugin.BmpImageFile): + + format = "ICO" + format_description = "Windows Icon" + + def _open(self): + + # check magic + s = self.fp.read(6) + if not _accept(s): + raise SyntaxError, "not an ICO file" + + # pick the largest icon in the file + m = "" + for i in range(i16(s[4:])): + s = self.fp.read(16) + if not m: + m = s + elif ord(s[0]) > ord(m[0]) and ord(s[1]) > ord(m[1]): + m = s + #print "width", ord(s[0]) + #print "height", ord(s[1]) + #print "colors", ord(s[2]) + #print "reserved", ord(s[3]) + #print "planes", i16(s[4:]) + #print "bitcount", i16(s[6:]) + #print "bytes", i32(s[8:]) + #print "offset", i32(s[12:]) + + # load as bitmap + self._bitmap(i32(m[12:])) + + # patch up the bitmap height + self.size = self.size[0], self.size[1]/2 + d, e, o, a = self.tile[0] + self.tile[0] = d, (0,0)+self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open("ICO", IcoImageFile, _accept) + +Image.register_extension("ICO", ".ico") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py new file mode 100755 index 00000000000..a76dcf04ed3 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py @@ -0,0 +1,336 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.7" + +import re, string +import Image, ImageFile, ImagePalette + + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = { COMMENT:0, DATE:0, EQUIPMENT:0, FRAMES:0, LUT:0, NAME:0, + SCALE:0, SIZE:0, MODE:0 } + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGBX", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN["L %s image" % i] = ("F", "F;%s" % i) + OPEN["L*%s image" % i] = ("F", "F;%s" % i) +for i in ["16", "16L", "16B"]: + OPEN["L %s image" % i] = ("I;%s" % i, "I;%s" % i) + OPEN["L*%s image" % i] = ("I;%s" % i, "I;%s" % i) +for i in ["32S"]: + OPEN["L %s image" % i] = ("I", "I;%s" % i) + OPEN["L*%s image" % i] = ("I", "I;%s" % i) +for i in range(2, 33): + OPEN["L*%s image" % i] = ("F", "F;%s" % i) + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(r"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + +def number(s): + try: + return int(s) + except ValueError: + return float(s) + +## +# Image plugin for the IFUNC IM file format. + +class ImImageFile(ImageFile.ImageFile): + + format = "IM" + format_description = "IFUNC Image Memory" + + def _open(self): + + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if not "\n" in self.fp.read(100): + raise SyntaxError, "not an IM file" + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while 1: + + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == "\r": + continue + + if not s or s[0] == chr(0) or s[0] == chr(26): + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + raise SyntaxError, "not an IM file" + + if s[-2:] == '\r\n': + s = s[:-2] + elif s[-1:] == '\n': + s = s[:-1] + + try: + m = split.match(s) + except re.error, v: + raise SyntaxError, "not an IM file" + + if m: + + k, v = m.group(1,2) + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = string.replace(v, "*", ",") + v = tuple(map(number, string.split(v, ","))) + if len(v) == 1: + v = v[0] + elif k == MODE and OPEN.has_key(v): + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if self.info.has_key(k): + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if TAGS.has_key(k): + n = n + 1 + + else: + + raise SyntaxError, "Syntax error in IM header: " + s + + if not n: + raise SyntaxError, "Not an IM file" + + # Basic attributes + self.size = self.info[SIZE] + self.mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[0] != chr(26): + s = self.fp.read(1) + if not s: + raise SyntaxError, "File truncated" + + if self.info.has_key(LUT): + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i+256] == palette[i+512]: + if palette[i] != chr(i): + linear = 0 + else: + greyscale = 0 + if self.mode == "L" or self.mode == "LA": + if greyscale: + if not linear: + self.lut = map(ord, palette[:256]) + else: + if self.mode == "L": + self.mode = self.rawmode = "P" + elif self.mode == "LA": + self.mode = self.rawmode = "PA" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = map(ord, palette) + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self.__fp = self.fp # FIXME: hack + + if self.rawmode[:2] == "F;": + + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [("bit", (0,0)+self.size, offs, + (bits, 8, 3, 0, -1))] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [("raw", (0,0)+self.size, offs, ("G", 0, -1)), + ("raw", (0,0)+self.size, offs+size, ("R", 0, -1)), + ("raw", (0,0)+self.size, offs+2*size, ("B", 0, -1))] + else: + # LabEye/IFUNC files + self.tile = [("raw", (0,0)+self.size, offs, (self.rawmode, 0, -1))] + + def seek(self, frame): + + if frame < 0 or frame >= self.info[FRAMES]: + raise EOFError, "seek outside sequence" + + if self.frame == frame: + return + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) / 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self.__fp + + self.tile = [("raw", (0,0)+self.size, offs, (self.rawmode, 0, -1))] + + def tell(self): + + return self.frame + +# +# -------------------------------------------------------------------- +# Save IM files + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L") +} + +def _save(im, fp, filename, check=0): + + try: + type, rawmode = SAVE[im.mode] + except KeyError: + raise ValueError, "Cannot save %s images as IM" % im.mode + + try: + frames = im.encoderinfo["frames"] + except KeyError: + frames = 1 + + if check: + return check + + fp.write("Image type: %s image\r\n" % type) + if filename: + fp.write("Name: %s\r\n" % filename) + fp.write("Image size (x*y): %d*%d\r\n" % im.size) + fp.write("File size (no of images): %d\r\n" % frames) + if im.mode == "P": + fp.write("Lut: 1\r\n") + fp.write("\000" * (511-fp.tell()) + "\032") + if im.mode == "P": + fp.write(im.im.getpalette("RGB", "RGB;L")) # 768 bytes + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, -1))]) + +# +# -------------------------------------------------------------------- +# Registry + +Image.register_open("IM", ImImageFile) +Image.register_save("IM", _save) + +Image.register_extension("IM", ".im") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py new file mode 100755 index 00000000000..77a532afad0 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py @@ -0,0 +1,2127 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +VERSION = "1.1.7" + +try: + import warnings +except ImportError: + warnings = None + +class _imaging_not_installed: + # module placeholder + def __getattr__(self, id): + raise ImportError("The _imaging C module is not installed") + +try: + # give Tk a chance to set up the environment, in case we're + # using an _imaging module linked against libtcl/libtk (use + # __import__ to hide this from naive packagers; we don't really + # depend on Tk unless ImageTk is used, and that module already + # imports Tkinter) + __import__("FixTk") +except ImportError: + pass + +try: + # If the _imaging C module is not present, you can still use + # the "open" function to identify files, but you cannot load + # them. Note that other modules should not refer to _imaging + # directly; import Image and use the Image.core variable instead. + import _imaging + core = _imaging + del _imaging +except ImportError, v: + core = _imaging_not_installed() + if str(v)[:20] == "Module use of python" and warnings: + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version " + "of Python; most PIL functions will be disabled", + RuntimeWarning + ) + +import ImageMode +import ImagePalette + +import os, string, sys + +# type stuff +from types import IntType, StringType, TupleType + +try: + UnicodeStringType = type(unicode("")) + ## + # (Internal) Checks if an object is a string. If the current + # Python version supports Unicode, this checks for both 8-bit + # and Unicode strings. + def isStringType(t): + return isinstance(t, StringType) or isinstance(t, UnicodeStringType) +except NameError: + def isStringType(t): + return isinstance(t, StringType) + +## +# (Internal) Checks if an object is a tuple. + +def isTupleType(t): + return isinstance(t, TupleType) + +## +# (Internal) Checks if an object is an image object. + +def isImageType(t): + return hasattr(t, "im") + +## +# (Internal) Checks if an object is a string, and that it points to a +# directory. + +def isDirectory(f): + return isStringType(f) and os.path.isdir(f) + +from operator import isNumberType, isSequenceType + +# +# Debug level + +DEBUG = 0 + +# +# Constants (also defined in _imagingmodule.c!) + +NONE = 0 + +# transpose +FLIP_LEFT_RIGHT = 0 +FLIP_TOP_BOTTOM = 1 +ROTATE_90 = 2 +ROTATE_180 = 3 +ROTATE_270 = 4 + +# transforms +AFFINE = 0 +EXTENT = 1 +PERSPECTIVE = 2 +QUAD = 3 +MESH = 4 + +# resampling filters +NONE = 0 +NEAREST = 0 +ANTIALIAS = 1 # 3-lobed lanczos +LINEAR = BILINEAR = 2 +CUBIC = BICUBIC = 3 + +# dithers +NONE = 0 +NEAREST = 0 +ORDERED = 1 # Not yet implemented +RASTERIZE = 2 # Not yet implemented +FLOYDSTEINBERG = 3 # default + +# palettes/quantizers +WEB = 0 +ADAPTIVE = 1 + +# categories +NORMAL = 0 +SEQUENCE = 1 +CONTAINER = 2 + +# -------------------------------------------------------------------- +# Registries + +ID = [] +OPEN = {} +MIME = {} +SAVE = {} +EXTENSION = {} + +# -------------------------------------------------------------------- +# Modes supported by this version + +_MODEINFO = { + # NOTE: this table will be removed in future versions. use + # getmode* functions or ImageMode descriptors instead. + + # official modes + "1": ("L", "L", ("1",)), + "L": ("L", "L", ("L",)), + "I": ("L", "I", ("I",)), + "F": ("L", "F", ("F",)), + "P": ("RGB", "L", ("P",)), + "RGB": ("RGB", "L", ("R", "G", "B")), + "RGBX": ("RGB", "L", ("R", "G", "B", "X")), + "RGBA": ("RGB", "L", ("R", "G", "B", "A")), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K")), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")), + + # Experimental modes include I;16, I;16L, I;16B, RGBa, BGR;15, and + # BGR;24. Use these modes only if you know exactly what you're + # doing... + +} + +try: + byteorder = sys.byteorder +except AttributeError: + import struct + if struct.unpack("h", "\0\1")[0] == 1: + byteorder = "big" + else: + byteorder = "little" + +if byteorder == 'little': + _ENDIAN = '<' +else: + _ENDIAN = '>' + +_MODE_CONV = { + # official modes + "1": ('|b1', None), # broken + "L": ('|u1', None), + "I": (_ENDIAN + 'i4', None), + "F": (_ENDIAN + 'f4', None), + "P": ('|u1', None), + "RGB": ('|u1', 3), + "RGBX": ('|u1', 4), + "RGBA": ('|u1', 4), + "CMYK": ('|u1', 4), + "YCbCr": ('|u1', 4), +} + +def _conv_type_shape(im): + shape = im.size[1], im.size[0] + typ, extra = _MODE_CONV[im.mode] + if extra is None: + return shape, typ + else: + return shape+(extra,), typ + + +MODES = _MODEINFO.keys() +MODES.sort() + +# raw modes that may be memory mapped. NOTE: if you change this, you +# may have to modify the stride calculation in map.c too! +_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B") + +## +# Gets the "base" mode for given mode. This function returns "L" for +# images that contain grayscale data, and "RGB" for images that +# contain color data. +# +# @param mode Input mode. +# @return "L" or "RGB". +# @exception KeyError If the input mode was not a standard mode. + +def getmodebase(mode): + return ImageMode.getmode(mode).basemode + +## +# Gets the storage type mode. Given a mode, this function returns a +# single-layer mode suitable for storing individual bands. +# +# @param mode Input mode. +# @return "L", "I", or "F". +# @exception KeyError If the input mode was not a standard mode. + +def getmodetype(mode): + return ImageMode.getmode(mode).basetype + +## +# Gets a list of individual band names. Given a mode, this function +# returns a tuple containing the names of individual bands (use +# {@link #getmodetype} to get the mode used to store each individual +# band. +# +# @param mode Input mode. +# @return A tuple containing band names. The length of the tuple +# gives the number of bands in an image of the given mode. +# @exception KeyError If the input mode was not a standard mode. + +def getmodebandnames(mode): + return ImageMode.getmode(mode).bands + +## +# Gets the number of individual bands for this mode. +# +# @param mode Input mode. +# @return The number of bands in this mode. +# @exception KeyError If the input mode was not a standard mode. + +def getmodebands(mode): + return len(ImageMode.getmode(mode).bands) + +# -------------------------------------------------------------------- +# Helpers + +_initialized = 0 + +## +# Explicitly loads standard file format drivers. + +def preinit(): + "Load standard file format drivers." + + global _initialized + if _initialized >= 1: + return + + try: + import BmpImagePlugin + except ImportError: + pass + try: + import GifImagePlugin + except ImportError: + pass + try: + import JpegImagePlugin + except ImportError: + pass + try: + import PpmImagePlugin + except ImportError: + pass + try: + import PngImagePlugin + except ImportError: + pass +# try: +# import TiffImagePlugin +# except ImportError: +# pass + + _initialized = 1 + +## +# Explicitly initializes the Python Imaging Library. This function +# loads all available file format drivers. + +def init(): + "Load all file format drivers." + + global _initialized + if _initialized >= 2: + return 0 + + visited = {} + + directories = sys.path + + try: + directories = directories + [os.path.dirname(__file__)] + except NameError: + pass + + # only check directories (including current, if present in the path) + for directory in filter(isDirectory, directories): + fullpath = os.path.abspath(directory) + if visited.has_key(fullpath): + continue + for file in os.listdir(directory): + if file[-14:] == "ImagePlugin.py": + f, e = os.path.splitext(file) + try: + sys.path.insert(0, directory) + try: + __import__(f, globals(), locals(), []) + finally: + del sys.path[0] + except ImportError: + if DEBUG: + print "Image: failed to import", + print f, ":", sys.exc_value + visited[fullpath] = None + + if OPEN or SAVE: + _initialized = 2 + return 1 + +# -------------------------------------------------------------------- +# Codec factories (used by tostring/fromstring and ImageFile.load) + +def _getdecoder(mode, decoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isTupleType(args): + args = (args,) + + try: + # get decoder + decoder = getattr(core, decoder_name + "_decoder") + # print decoder, (mode,) + args + extra + return apply(decoder, (mode,) + args + extra) + except AttributeError: + raise IOError("decoder %s not available" % decoder_name) + +def _getencoder(mode, encoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isTupleType(args): + args = (args,) + + try: + # get encoder + encoder = getattr(core, encoder_name + "_encoder") + # print encoder, (mode,) + args + extra + return apply(encoder, (mode,) + args + extra) + except AttributeError: + raise IOError("encoder %s not available" % encoder_name) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + +class _E: + def __init__(self, data): self.data = data + def __coerce__(self, other): return self, _E(other) + def __add__(self, other): return _E((self.data, "__add__", other.data)) + def __mul__(self, other): return _E((self.data, "__mul__", other.data)) + +def _getscaleoffset(expr): + stub = ["stub"] + data = expr(_E(stub)).data + try: + (a, b, c) = data # simplified syntax + if (a is stub and b == "__mul__" and isNumberType(c)): + return c, 0.0 + if (a is stub and b == "__add__" and isNumberType(c)): + return 1.0, c + except TypeError: pass + try: + ((a, b, c), d, e) = data # full syntax + if (a is stub and b == "__mul__" and isNumberType(c) and + d == "__add__" and isNumberType(e)): + return c, e + except TypeError: pass + raise ValueError("illegal expression") + + +# -------------------------------------------------------------------- +# Implementation wrapper + +## +# This class represents an image object. To create Image objects, use +# the appropriate factory functions. There's hardly ever any reason +# to call the Image constructor directly. +# +# @see #open +# @see #new +# @see #fromstring + +class Image: + + format = None + format_description = None + + def __init__(self): + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self.im = None + self.mode = "" + self.size = (0, 0) + self.palette = None + self.info = {} + self.category = NORMAL + self.readonly = 0 + + def _new(self, im): + new = Image() + new.im = im + new.mode = im.mode + new.size = im.size + new.palette = self.palette + if im.mode == "P": + new.palette = ImagePalette.ImagePalette() + try: + new.info = self.info.copy() + except AttributeError: + # fallback (pre-1.5.2) + new.info = {} + for k, v in self.info: + new.info[k] = v + return new + + _makeself = _new # compatibility + + def _copy(self): + self.load() + self.im = self.im.copy() + self.readonly = 0 + + def _dump(self, file=None, format=None): + import tempfile + if not file: + file = tempfile.mktemp() + self.load() + if not format or format == "PPM": + self.im.save_ppm(file) + else: + file = file + "." + format + self.save(file, format) + return file + + def __repr__(self): + return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( + self.__class__.__module__, self.__class__.__name__, + self.mode, self.size[0], self.size[1], + id(self) + ) + + def __getattr__(self, name): + if name == "__array_interface__": + # numpy array interface support + new = {} + shape, typestr = _conv_type_shape(self) + new['shape'] = shape + new['typestr'] = typestr + new['data'] = self.tostring() + return new + raise AttributeError(name) + + ## + # Returns a string containing pixel data. + # + # @param encoder_name What encoder to use. The default is to + # use the standard "raw" encoder. + # @param *args Extra arguments to the encoder. + # @return An 8-bit string. + + def tostring(self, encoder_name="raw", *args): + "Return image as a binary string" + + # may pass tuple instead of argument list + if len(args) == 1 and isTupleType(args[0]): + args = args[0] + + if encoder_name == "raw" and args == (): + args = self.mode + + self.load() + + # unpack data + e = _getencoder(self.mode, encoder_name, args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + data = [] + while 1: + l, s, d = e.encode(bufsize) + data.append(d) + if s: + break + if s < 0: + raise RuntimeError("encoder error %d in tostring" % s) + + return string.join(data, "") + + ## + # Returns the image converted to an X11 bitmap. This method + # only works for mode "1" images. + # + # @param name The name prefix to use for the bitmap variables. + # @return A string containing an X11 bitmap. + # @exception ValueError If the mode is not "1" + + def tobitmap(self, name="image"): + "Return image as an XBM bitmap" + + self.load() + if self.mode != "1": + raise ValueError("not a bitmap") + data = self.tostring("xbm") + return string.join(["#define %s_width %d\n" % (name, self.size[0]), + "#define %s_height %d\n"% (name, self.size[1]), + "static char %s_bits[] = {\n" % name, data, "};"], "") + + ## + # Loads this image with pixel data from a string. + #

    + # This method is similar to the {@link #fromstring} function, but + # loads data into this image instead of creating a new image + # object. + + def fromstring(self, data, decoder_name="raw", *args): + "Load data to image from binary string" + + # may pass tuple instead of argument list + if len(args) == 1 and isTupleType(args[0]): + args = args[0] + + # default format + if decoder_name == "raw" and args == (): + args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") + + ## + # Allocates storage for the image and loads the pixel data. In + # normal cases, you don't need to call this method, since the + # Image class automatically loads an opened image when it is + # accessed for the first time. + # + # @return An image access object. + + def load(self): + "Explicitly load pixel data." + if self.im and self.palette and self.palette.dirty: + # realize palette + apply(self.im.putpalette, self.palette.getdata()) + self.palette.dirty = 0 + self.palette.mode = "RGB" + self.palette.rawmode = None + if self.info.has_key("transparency"): + self.im.putpalettealpha(self.info["transparency"], 0) + self.palette.mode = "RGBA" + if self.im: + return self.im.pixel_access(self.readonly) + + ## + # Verifies the contents of a file. For data read from a file, this + # method attempts to determine if the file is broken, without + # actually decoding the image data. If this method finds any + # problems, it raises suitable exceptions. If you need to load + # the image after using this method, you must reopen the image + # file. + + def verify(self): + "Verify file contents." + pass + + ## + # Returns a converted copy of this image. For the "P" mode, this + # method translates pixels through the palette. If mode is + # omitted, a mode is chosen so that all information in the image + # and the palette can be represented without a palette. + #

    + # The current version supports all possible conversions between + # "L", "RGB" and "CMYK." + #

    + # When translating a colour image to black and white (mode "L"), + # the library uses the ITU-R 601-2 luma transform: + #

    + # L = R * 299/1000 + G * 587/1000 + B * 114/1000 + #

    + # When translating a greyscale image into a bilevel image (mode + # "1"), all non-zero values are set to 255 (white). To use other + # thresholds, use the {@link #Image.point} method. + # + # @def convert(mode, matrix=None, **options) + # @param mode The requested mode. + # @param matrix An optional conversion matrix. If given, this + # should be 4- or 16-tuple containing floating point values. + # @param options Additional options, given as keyword arguments. + # @keyparam dither Dithering method, used when converting from + # mode "RGB" to "P". + # Available methods are NONE or FLOYDSTEINBERG (default). + # @keyparam palette Palette to use when converting from mode "RGB" + # to "P". Available palettes are WEB or ADAPTIVE. + # @keyparam colors Number of colors to use for the ADAPTIVE palette. + # Defaults to 256. + # @return An Image object. + + def convert(self, mode=None, data=None, dither=None, + palette=WEB, colors=256): + "Convert to other pixel format" + + if not mode: + # determine default mode + if self.mode == "P": + self.load() + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + else: + return self.copy() + + self.load() + + if data: + # matrix conversion + if mode not in ("L", "RGB"): + raise ValueError("illegal conversion") + im = self.im.convert_matrix(mode, data) + return self._new(im) + + if mode == "P" and palette == ADAPTIVE: + im = self.im.quantize(colors) + return self._new(im) + + # colourspace conversion + if dither is None: + dither = FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + im = self.im.convert(getmodebase(self.mode)) + im = im.convert(mode, dither) + except KeyError: + raise ValueError("illegal conversion") + + return self._new(im) + + def quantize(self, colors=256, method=0, kmeans=0, palette=None): + + # methods: + # 0 = median cut + # 1 = maximum coverage + + # NOTE: this functionality will be moved to the extended + # quantizer interface in a later version of PIL. + + self.load() + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + raise ValueError("bad mode for palette image") + if self.mode != "RGB" and self.mode != "L": + raise ValueError( + "only RGB or L mode images can be quantized to a palette" + ) + im = self.im.convert("P", 1, palette.im) + return self._makeself(im) + + im = self.im.quantize(colors, method, kmeans) + return self._new(im) + + ## + # Copies this image. Use this method if you wish to paste things + # into an image, but still retain the original. + # + # @return An Image object. + + def copy(self): + "Copy raster data" + + self.load() + im = self.im.copy() + return self._new(im) + + ## + # Returns a rectangular region from this image. The box is a + # 4-tuple defining the left, upper, right, and lower pixel + # coordinate. + #

    + # This is a lazy operation. Changes to the source image may or + # may not be reflected in the cropped image. To break the + # connection, call the {@link #Image.load} method on the cropped + # copy. + # + # @param The crop rectangle, as a (left, upper, right, lower)-tuple. + # @return An Image object. + + def crop(self, box=None): + "Crop region from image" + + self.load() + if box is None: + return self.copy() + + # lazy operation + return _ImageCrop(self, box) + + ## + # Configures the image file loader so it returns a version of the + # image that as closely as possible matches the given mode and + # size. For example, you can use this method to convert a colour + # JPEG to greyscale while loading it, or to extract a 128x192 + # version from a PCD file. + #

    + # Note that this method modifies the Image object in place. If + # the image has already been loaded, this method has no effect. + # + # @param mode The requested mode. + # @param size The requested size. + + def draft(self, mode, size): + "Configure image decoder" + + pass + + def _expand(self, xmargin, ymargin=None): + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin, 0)) + + ## + # Filters this image using the given filter. For a list of + # available filters, see the ImageFilter module. + # + # @param filter Filter kernel. + # @return An Image object. + # @see ImageFilter + + def filter(self, filter): + "Apply environment filter to image" + + self.load() + + if callable(filter): + filter = filter() + if not hasattr(filter, "filter"): + raise TypeError("filter argument should be ImageFilter.Filter instance or class") + + if self.im.bands == 1: + return self._new(filter.filter(self.im)) + # fix to handle multiband images since _imaging doesn't + ims = [] + for c in range(self.im.bands): + ims.append(self._new(filter.filter(self.im.getband(c)))) + return merge(self.mode, ims) + + ## + # Returns a tuple containing the name of each band in this image. + # For example, getbands on an RGB image returns ("R", "G", "B"). + # + # @return A tuple containing band names. + + def getbands(self): + "Get band names" + + return ImageMode.getmode(self.mode).bands + + ## + # Calculates the bounding box of the non-zero regions in the + # image. + # + # @return The bounding box is returned as a 4-tuple defining the + # left, upper, right, and lower pixel coordinate. If the image + # is completely empty, this method returns None. + + def getbbox(self): + "Get bounding box of actual data (non-zero pixels) in image" + + self.load() + return self.im.getbbox() + + ## + # Returns a list of colors used in this image. + # + # @param maxcolors Maximum number of colors. If this number is + # exceeded, this method returns None. The default limit is + # 256 colors. + # @return An unsorted list of (count, pixel) values. + + def getcolors(self, maxcolors=256): + "Get colors from image, up to given limit" + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out = [] + for i in range(256): + if h[i]: + out.append((h[i], i)) + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + ## + # Returns the contents of this image as a sequence object + # containing pixel values. The sequence object is flattened, so + # that values for line one follow directly after the values of + # line zero, and so on. + #

    + # Note that the sequence object returned by this method is an + # internal PIL data type, which only supports certain sequence + # operations. To convert it to an ordinary sequence (e.g. for + # printing), use list(im.getdata()). + # + # @param band What band to return. The default is to return + # all bands. To return a single band, pass in the index + # value (e.g. 0 to get the "R" band from an "RGB" image). + # @return A sequence-like object. + + def getdata(self, band = None): + "Get image data as sequence object." + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + ## + # Gets the the minimum and maximum pixel values for each band in + # the image. + # + # @return For a single-band image, a 2-tuple containing the + # minimum and maximum pixel value. For a multi-band image, + # a tuple containing one 2-tuple for each band. + + def getextrema(self): + "Get min/max value" + + self.load() + if self.im.bands > 1: + extrema = [] + for i in range(self.im.bands): + extrema.append(self.im.getband(i).getextrema()) + return tuple(extrema) + return self.im.getextrema() + + ## + # Returns a PyCObject that points to the internal image memory. + # + # @return A PyCObject object. + + def getim(self): + "Get PyCObject pointer to internal image memory" + + self.load() + return self.im.ptr + + + ## + # Returns the image palette as a list. + # + # @return A list of color values [r, g, b, ...], or None if the + # image has no palette. + + def getpalette(self): + "Get palette contents." + + self.load() + try: + return map(ord, self.im.getpalette()) + except ValueError: + return None # no palette + + + ## + # Returns the pixel value at a given position. + # + # @param xy The coordinate, given as (x, y). + # @return The pixel value. If the image is a multi-layer image, + # this method returns a tuple. + + def getpixel(self, xy): + "Get pixel value" + + self.load() + return self.im.getpixel(xy) + + ## + # Returns the horizontal and vertical projection. + # + # @return Two sequences, indicating where there are non-zero + # pixels along the X-axis and the Y-axis, respectively. + + def getprojection(self): + "Get projection to x and y axes" + + self.load() + x, y = self.im.getprojection() + return map(ord, x), map(ord, y) + + ## + # Returns a histogram for the image. The histogram is returned as + # a list of pixel counts, one for each pixel value in the source + # image. If the image has more than one band, the histograms for + # all bands are concatenated (for example, the histogram for an + # "RGB" image contains 768 values). + #

    + # A bilevel image (mode "1") is treated as a greyscale ("L") image + # by this method. + #

    + # If a mask is provided, the method returns a histogram for those + # parts of the image where the mask image is non-zero. The mask + # image must have the same size as the image, and be either a + # bi-level image (mode "1") or a greyscale image ("L"). + # + # @def histogram(mask=None) + # @param mask An optional mask. + # @return A list containing pixel counts. + + def histogram(self, mask=None, extrema=None): + "Take histogram of image" + + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.histogram(extrema) + return self.im.histogram() + + ## + # (Deprecated) Returns a copy of the image where the data has been + # offset by the given distances. Data wraps around the edges. If + # yoffset is omitted, it is assumed to be equal to xoffset. + #

    + # This method is deprecated. New code should use the offset + # function in the ImageChops module. + # + # @param xoffset The horizontal distance. + # @param yoffset The vertical distance. If omitted, both + # distances are set to the same value. + # @return An Image object. + + def offset(self, xoffset, yoffset=None): + "(deprecated) Offset image in horizontal and/or vertical direction" + if warnings: + warnings.warn( + "'offset' is deprecated; use 'ImageChops.offset' instead", + DeprecationWarning, stacklevel=2 + ) + import ImageChops + return ImageChops.offset(self, xoffset, yoffset) + + ## + # Pastes another image into this image. The box argument is either + # a 2-tuple giving the upper left corner, a 4-tuple defining the + # left, upper, right, and lower pixel coordinate, or None (same as + # (0, 0)). If a 4-tuple is given, the size of the pasted image + # must match the size of the region. + #

    + # If the modes don't match, the pasted image is converted to the + # mode of this image (see the {@link #Image.convert} method for + # details). + #

    + # Instead of an image, the source can be a integer or tuple + # containing pixel values. The method then fills the region + # with the given colour. When creating RGB images, you can + # also use colour strings as supported by the ImageColor module. + #

    + # If a mask is given, this method updates only the regions + # indicated by the mask. You can use either "1", "L" or "RGBA" + # images (in the latter case, the alpha band is used as mask). + # Where the mask is 255, the given image is copied as is. Where + # the mask is 0, the current value is preserved. Intermediate + # values can be used for transparency effects. + #

    + # Note that if you paste an "RGBA" image, the alpha band is + # ignored. You can work around this by using the same image as + # both source image and mask. + # + # @param im Source image or pixel value (integer or tuple). + # @param box An optional 4-tuple giving the region to paste into. + # If a 2-tuple is used instead, it's treated as the upper left + # corner. If omitted or None, the source is pasted into the + # upper left corner. + #

    + # If an image is given as the second argument and there is no + # third, the box defaults to (0, 0), and the second argument + # is interpreted as a mask image. + # @param mask An optional mask image. + # @return An Image object. + + def paste(self, im, box=None, mask=None): + "Paste other image into region" + + if isImageType(box) and mask is None: + # abbreviated paste(im, mask) syntax + mask = box; box = None + + if box is None: + # cover all of self + box = (0, 0) + self.size + + if len(box) == 2: + # lower left corner given; get size from image or mask + if isImageType(im): + size = im.size + elif isImageType(mask): + size = mask.size + else: + # FIXME: use self.size here? + raise ValueError( + "cannot determine region size; use 4-item box" + ) + box = box + (box[0]+size[0], box[1]+size[1]) + + if isStringType(im): + import ImageColor + im = ImageColor.getcolor(im, self.mode) + + elif isImageType(im): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + im = im.im + + self.load() + if self.readonly: + self._copy() + + if mask: + mask.load() + self.im.paste(im, box, mask.im) + else: + self.im.paste(im, box) + + ## + # Maps this image through a lookup table or function. + # + # @param lut A lookup table, containing 256 values per band in the + # image. A function can be used instead, it should take a single + # argument. The function is called once for each possible pixel + # value, and the resulting table is applied to all bands of the + # image. + # @param mode Output mode (default is same as input). In the + # current version, this can only be used if the source image + # has mode "L" or "P", and the output has mode "1". + # @return An Image object. + + def point(self, lut, mode=None): + "Map image through lookup table" + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if not isSequenceType(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + scale, offset = _getscaleoffset(lut) + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + lut = map(lut, range(256)) * self.im.bands + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + raise ValueError("point operation not supported for this mode") + + return self._new(self.im.point(lut, mode)) + + ## + # Adds or replaces the alpha layer in this image. If the image + # does not have an alpha layer, it's converted to "LA" or "RGBA". + # The new layer must be either "L" or "1". + # + # @param im The new alpha layer. This can either be an "L" or "1" + # image having the same size as this image, or an integer or + # other color value. + + def putalpha(self, alpha): + "Set alpha layer" + + self.load() + if self.readonly: + self._copy() + + if self.mode not in ("LA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError): + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "RGBA"): + raise ValueError # sanity check + self.im = im + self.mode = self.im.mode + except (KeyError, ValueError): + raise ValueError("illegal image mode") + + if self.mode == "LA": + band = 1 + else: + band = 3 + + if isImageType(alpha): + # alpha layer + if alpha.mode not in ("1", "L"): + raise ValueError("illegal image mode") + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + ## + # Copies pixel data to this image. This method copies data from a + # sequence object into the image, starting at the upper left + # corner (0, 0), and continuing until either the image or the + # sequence ends. The scale and offset values are used to adjust + # the sequence values: pixel = value*scale + offset. + # + # @param data A sequence object. + # @param scale An optional scale value. The default is 1.0. + # @param offset An optional offset value. The default is 0.0. + + def putdata(self, data, scale=1.0, offset=0.0): + "Put data from a sequence object into an image." + + self.load() + if self.readonly: + self._copy() + + self.im.putdata(data, scale, offset) + + ## + # Attaches a palette to this image. The image must be a "P" or + # "L" image, and the palette sequence must contain 768 integer + # values, where each group of three values represent the red, + # green, and blue values for the corresponding pixel + # index. Instead of an integer sequence, you can use an 8-bit + # string. + # + # @def putpalette(data) + # @param data A palette sequence (either a list or a string). + + def putpalette(self, data, rawmode="RGB"): + "Put palette data into an image." + + if self.mode not in ("L", "P"): + raise ValueError("illegal image mode") + self.load() + if isinstance(data, ImagePalette.ImagePalette): + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + if not isStringType(data): + data = string.join(map(chr, data), "") + palette = ImagePalette.raw(rawmode, data) + self.mode = "P" + self.palette = palette + self.palette.mode = "RGB" + self.load() # install new palette + + ## + # Modifies the pixel at the given position. The colour is given as + # a single numerical value for single-band images, and a tuple for + # multi-band images. + #

    + # Note that this method is relatively slow. For more extensive + # changes, use {@link #Image.paste} or the ImageDraw module + # instead. + # + # @param xy The pixel coordinate, given as (x, y). + # @param value The pixel value. + # @see #Image.paste + # @see #Image.putdata + # @see ImageDraw + + def putpixel(self, xy, value): + "Set pixel value" + + self.load() + if self.readonly: + self._copy() + + return self.im.putpixel(xy, value) + + ## + # Returns a resized copy of this image. + # + # @def resize(size, filter=NEAREST) + # @param size The requested size in pixels, as a 2-tuple: + # (width, height). + # @param filter An optional resampling filter. This can be + # one of NEAREST (use nearest neighbour), BILINEAR + # (linear interpolation in a 2x2 environment), BICUBIC + # (cubic spline interpolation in a 4x4 environment), or + # ANTIALIAS (a high-quality downsampling filter). + # If omitted, or if the image has mode "1" or "P", it is + # set NEAREST. + # @return An Image object. + + def resize(self, size, resample=NEAREST): + "Resize image" + + if resample not in (NEAREST, BILINEAR, BICUBIC, ANTIALIAS): + raise ValueError("unknown resampling filter") + + self.load() + + if self.mode in ("1", "P"): + resample = NEAREST + + if resample == ANTIALIAS: + # requires stretch support (imToolkit & PIL 1.1.3) + try: + im = self.im.stretch(size, resample) + except AttributeError: + raise ValueError("unsupported resampling filter") + else: + im = self.im.resize(size, resample) + + return self._new(im) + + ## + # Returns a rotated copy of this image. This method returns a + # copy of this image, rotated the given number of degrees counter + # clockwise around its centre. + # + # @def rotate(angle, filter=NEAREST) + # @param angle In degrees counter clockwise. + # @param filter An optional resampling filter. This can be + # one of NEAREST (use nearest neighbour), BILINEAR + # (linear interpolation in a 2x2 environment), or BICUBIC + # (cubic spline interpolation in a 4x4 environment). + # If omitted, or if the image has mode "1" or "P", it is + # set NEAREST. + # @param expand Optional expansion flag. If true, expands the output + # image to make it large enough to hold the entire rotated image. + # If false or omitted, make the output image the same size as the + # input image. + # @return An Image object. + + def rotate(self, angle, resample=NEAREST, expand=0): + "Rotate image. Angle given as degrees counter-clockwise." + + if expand: + import math + angle = -angle * math.pi / 180 + matrix = [ + math.cos(angle), math.sin(angle), 0.0, + -math.sin(angle), math.cos(angle), 0.0 + ] + def transform(x, y, (a, b, c, d, e, f)=matrix): + return a*x + b*y + c, d*x + e*y + f + + # calculate output size + w, h = self.size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + x, y = transform(x, y) + xx.append(x) + yy.append(y) + w = int(math.ceil(max(xx)) - math.floor(min(xx))) + h = int(math.ceil(max(yy)) - math.floor(min(yy))) + + # adjust center + x, y = transform(w / 2.0, h / 2.0) + matrix[2] = self.size[0] / 2.0 - x + matrix[5] = self.size[1] / 2.0 - y + + return self.transform((w, h), AFFINE, matrix, resample) + + if resample not in (NEAREST, BILINEAR, BICUBIC): + raise ValueError("unknown resampling filter") + + self.load() + + if self.mode in ("1", "P"): + resample = NEAREST + + return self._new(self.im.rotate(angle, resample)) + + ## + # Saves this image under the given filename. If no format is + # specified, the format to use is determined from the filename + # extension, if possible. + #

    + # Keyword options can be used to provide additional instructions + # to the writer. If a writer doesn't recognise an option, it is + # silently ignored. The available options are described later in + # this handbook. + #

    + # You can use a file object instead of a filename. In this case, + # you must always specify the format. The file object must + # implement the seek, tell, and write + # methods, and be opened in binary mode. + # + # @def save(file, format=None, **options) + # @param file File name or file object. + # @param format Optional format override. If omitted, the + # format to use is determined from the filename extension. + # If a file object was used instead of a filename, this + # parameter should always be used. + # @param **options Extra parameters to the image writer. + # @return None + # @exception KeyError If the output format could not be determined + # from the file name. Use the format option to solve this. + # @exception IOError If the file could not be written. The file + # may have been created, and may contain partial data. + + def save(self, fp, format=None, **params): + "Save image to file or stream" + + if isStringType(fp): + filename = fp + else: + if hasattr(fp, "name") and isStringType(fp.name): + filename = fp.name + else: + filename = "" + + # may mutate self! + self.load() + + self.encoderinfo = params + self.encoderconfig = () + + preinit() + + ext = string.lower(os.path.splitext(filename)[1]) + + if not format: + try: + format = EXTENSION[ext] + except KeyError: + init() + try: + format = EXTENSION[ext] + except KeyError: + raise KeyError(ext) # unknown extension + + try: + save_handler = SAVE[string.upper(format)] + except KeyError: + init() + save_handler = SAVE[string.upper(format)] # unknown format + + if isStringType(fp): + import __builtin__ + fp = __builtin__.open(fp, "wb") + close = 1 + else: + close = 0 + + try: + save_handler(self, fp, filename) + finally: + # do what we can to clean up + if close: + fp.close() + + ## + # Seeks to the given frame in this sequence file. If you seek + # beyond the end of the sequence, the method raises an + # EOFError exception. When a sequence file is opened, the + # library automatically seeks to frame 0. + #

    + # Note that in the current version of the library, most sequence + # formats only allows you to seek to the next frame. + # + # @param frame Frame number, starting at 0. + # @exception EOFError If the call attempts to seek beyond the end + # of the sequence. + # @see #Image.tell + + def seek(self, frame): + "Seek to given frame in sequence file" + + # overridden by file handlers + if frame != 0: + raise EOFError + + ## + # Displays this image. This method is mainly intended for + # debugging purposes. + #

    + # On Unix platforms, this method saves the image to a temporary + # PPM file, and calls the xv utility. + #

    + # On Windows, it saves the image to a temporary BMP file, and uses + # the standard BMP display utility to show it (usually Paint). + # + # @def show(title=None) + # @param title Optional title to use for the image window, + # where possible. + + def show(self, title=None, command=None): + "Display image (for debug purposes only)" + + _show(self, title=title, command=command) + + ## + # Split this image into individual bands. This method returns a + # tuple of individual image bands from an image. For example, + # splitting an "RGB" image creates three new images each + # containing a copy of one of the original bands (red, green, + # blue). + # + # @return A tuple containing bands. + + def split(self): + "Split image into bands" + + if self.im.bands == 1: + ims = [self.copy()] + else: + ims = [] + self.load() + for i in range(self.im.bands): + ims.append(self._new(self.im.getband(i))) + return tuple(ims) + + ## + # Returns the current frame number. + # + # @return Frame number, starting with 0. + # @see #Image.seek + + def tell(self): + "Return current frame number" + + return 0 + + ## + # Make this image into a thumbnail. This method modifies the + # image to contain a thumbnail version of itself, no larger than + # the given size. This method calculates an appropriate thumbnail + # size to preserve the aspect of the image, calls the {@link + # #Image.draft} method to configure the file reader (where + # applicable), and finally resizes the image. + #

    + # Note that the bilinear and bicubic filters in the current + # version of PIL are not well-suited for thumbnail generation. + # You should use ANTIALIAS unless speed is much more + # important than quality. + #

    + # Also note that this function modifies the Image object in place. + # If you need to use the full resolution image as well, apply this + # method to a {@link #Image.copy} of the original image. + # + # @param size Requested size. + # @param resample Optional resampling filter. This can be one + # of NEAREST, BILINEAR, BICUBIC, or + # ANTIALIAS (best quality). If omitted, it defaults + # to NEAREST (this will be changed to ANTIALIAS in a + # future version). + # @return None + + def thumbnail(self, size, resample=NEAREST): + "Create thumbnail representation (modifies image in place)" + + # FIXME: the default resampling filter will be changed + # to ANTIALIAS in future versions + + # preserve aspect ratio + x, y = self.size + if x > size[0]: y = max(y * size[0] / x, 1); x = size[0] + if y > size[1]: x = max(x * size[1] / y, 1); y = size[1] + size = x, y + + if size == self.size: + return + + self.draft(None, size) + + self.load() + + try: + im = self.resize(size, resample) + except ValueError: + if resample != ANTIALIAS: + raise + im = self.resize(size, NEAREST) # fallback + + self.im = im.im + self.mode = im.mode + self.size = size + + self.readonly = 0 + + # FIXME: the different tranform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + + ## + # Transforms this image. This method creates a new image with the + # given size, and the same mode as the original, and copies data + # to the new image using the given transform. + #

    + # @def transform(size, method, data, resample=NEAREST) + # @param size The output size. + # @param method The transformation method. This is one of + # EXTENT (cut out a rectangular subregion), AFFINE + # (affine transform), PERSPECTIVE (perspective + # transform), QUAD (map a quadrilateral to a + # rectangle), or MESH (map a number of source quadrilaterals + # in one operation). + # @param data Extra data to the transformation method. + # @param resample Optional resampling filter. It can be one of + # NEAREST (use nearest neighbour), BILINEAR + # (linear interpolation in a 2x2 environment), or + # BICUBIC (cubic spline interpolation in a 4x4 + # environment). If omitted, or if the image has mode + # "1" or "P", it is set to NEAREST. + # @return An Image object. + + def transform(self, size, method, data=None, resample=NEAREST, fill=1): + "Transform image" + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + if data is None: + raise ValueError("missing method data") + im = new(self.mode, size, None) + if method == MESH: + # list of quads + for box, quad in data: + im.__transformer(box, self, QUAD, quad, resample, fill) + else: + im.__transformer((0, 0)+size, self, method, data, resample, fill) + + return im + + def __transformer(self, box, image, method, data, + resample=NEAREST, fill=1): + + # FIXME: this should be turned into a lazy operation (?) + + w = box[2]-box[0] + h = box[3]-box[1] + + if method == AFFINE: + # change argument order to match implementation + data = (data[2], data[0], data[1], + data[5], data[3], data[4]) + elif method == EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = float(x1 - x0) / w + ys = float(y1 - y0) / h + method = AFFINE + data = (x0 + xs/2, xs, 0, y0 + ys/2, 0, ys) + elif method == PERSPECTIVE: + # change argument order to match implementation + data = (data[2], data[0], data[1], + data[5], data[3], data[4], + data[6], data[7]) + elif method == QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[0:2]; sw = data[2:4]; se = data[4:6]; ne = data[6:8] + x0, y0 = nw; As = 1.0 / w; At = 1.0 / h + data = (x0, (ne[0]-x0)*As, (sw[0]-x0)*At, + (se[0]-sw[0]-ne[0]+x0)*As*At, + y0, (ne[1]-y0)*As, (sw[1]-y0)*At, + (se[1]-sw[1]-ne[1]+y0)*As*At) + else: + raise ValueError("unknown transformation method") + + if resample not in (NEAREST, BILINEAR, BICUBIC): + raise ValueError("unknown resampling filter") + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = NEAREST + + self.im.transform2(box, image.im, method, data, resample, fill) + + ## + # Returns a flipped or rotated copy of this image. + # + # @param method One of FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM, + # ROTATE_90, ROTATE_180, or ROTATE_270. + + def transpose(self, method): + "Transpose image (flip or rotate in 90 degree steps)" + + self.load() + im = self.im.transpose(method) + return self._new(im) + +# -------------------------------------------------------------------- +# Lazy operations + +class _ImageCrop(Image): + + def __init__(self, im, box): + + Image.__init__(self) + + x0, y0, x1, y1 = box + if x1 < x0: + x1 = x0 + if y1 < y0: + y1 = y0 + + self.mode = im.mode + self.size = x1-x0, y1-y0 + + self.__crop = x0, y0, x1, y1 + + self.im = im.im + + def load(self): + + # lazy evaluation! + if self.__crop: + self.im = self.im.crop(self.__crop) + self.__crop = None + + if self.im: + return self.im.pixel_access(self.readonly) + + # FIXME: future versions should optimize crop/paste + # sequences! + +# -------------------------------------------------------------------- +# Abstract handlers. + +class ImagePointHandler: + # used as a mixin by point transforms (for use with im.point) + pass + +class ImageTransformHandler: + # used as a mixin by geometry transforms (for use with im.transform) + pass + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + +def _wedge(): + "Create greyscale wedge (for debugging only)" + + return Image()._new(core.wedge("L")) + +## +# Creates a new image with the given mode and size. +# +# @param mode The mode to use for the new image. +# @param size A 2-tuple, containing (width, height) in pixels. +# @param color What colour to use for the image. Default is black. +# If given, this should be a single integer or floating point value +# for single-band modes, and a tuple for multi-band modes (one value +# per band). When creating RGB images, you can also use colour +# strings as supported by the ImageColor module. If the colour is +# None, the image is not initialised. +# @return An Image object. + +def new(mode, size, color=0): + "Create a new image" + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isStringType(color): + # css3-style specifier + + import ImageColor + color = ImageColor.getcolor(color, mode) + + return Image()._new(core.fill(mode, size, color)) + +## +# Creates an image memory from pixel data in a string. +#

    +# In its simplest form, this function takes three arguments +# (mode, size, and unpacked pixel data). +#

    +# Note that this function decodes pixel data only, not entire images. +# If you have an entire image in a string, wrap it in a +# StringIO object, and use {@link #open} to load it. +# +# @param mode The image mode. +# @param size The image size. +# @param data An 8-bit string containing raw data for the given mode. +# @param decoder_name What decoder to use. +# @param *args Additional parameters for the given decoder. +# @return An Image object. + +def fromstring(mode, size, data, decoder_name="raw", *args): + "Load image from string" + + # may pass tuple instead of argument list + if len(args) == 1 and isTupleType(args[0]): + args = args[0] + + if decoder_name == "raw" and args == (): + args = mode + + im = new(mode, size) + im.fromstring(data, decoder_name, args) + return im + +## +# (New in 1.1.4) Creates an image memory from pixel data in a string +# or byte buffer. +#

    +# This function is similar to {@link #fromstring}, but uses data in +# the byte buffer, where possible. This means that changes to the +# original buffer object are reflected in this image). Not all modes +# can share memory; supported modes include "L", "RGBX", "RGBA", and +# "CMYK". +#

    +# Note that this function decodes pixel data only, not entire images. +# If you have an entire image file in a string, wrap it in a +# StringIO object, and use {@link #open} to load it. +#

    +# In the current version, the default parameters used for the "raw" +# decoder differs from that used for {@link fromstring}. This is a +# bug, and will probably be fixed in a future release. The current +# release issues a warning if you do this; to disable the warning, +# you should provide the full set of parameters. See below for +# details. +# +# @param mode The image mode. +# @param size The image size. +# @param data An 8-bit string or other buffer object containing raw +# data for the given mode. +# @param decoder_name What decoder to use. +# @param *args Additional parameters for the given decoder. For the +# default encoder ("raw"), it's recommended that you provide the +# full set of parameters: +# frombuffer(mode, size, data, "raw", mode, 0, 1). +# @return An Image object. +# @since 1.1.4 + +def frombuffer(mode, size, data, decoder_name="raw", *args): + "Load image from string or buffer" + + # may pass tuple instead of argument list + if len(args) == 1 and isTupleType(args[0]): + args = args[0] + + if decoder_name == "raw": + if args == (): + if warnings: + warnings.warn( + "the frombuffer defaults may change in a future release; " + "for portability, change the call to read:\n" + " frombuffer(mode, size, data, 'raw', mode, 0, 1)", + RuntimeWarning, stacklevel=2 + ) + args = mode, 0, -1 # may change to (mode, 0, 1) post-1.1.6 + if args[0] in _MAPMODES: + im = new(mode, (1,1)) + im = im._new( + core.map_buffer(data, size, decoder_name, None, 0, args) + ) + im.readonly = 1 + return im + + return fromstring(mode, size, data, decoder_name, args) + + +## +# (New in 1.1.6) Creates an image memory from an object exporting +# the array interface (using the buffer protocol). +# +# If obj is not contiguous, then the tostring method is called +# and {@link frombuffer} is used. +# +# @param obj Object with array interface +# @param mode Mode to use (will be determined from type if None) +# @return An image memory. + +def fromarray(obj, mode=None): + arr = obj.__array_interface__ + shape = arr['shape'] + ndim = len(shape) + try: + strides = arr['strides'] + except KeyError: + strides = None + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr['typestr'] + mode, rawmode = _fromarray_typemap[typekey] + except KeyError: + # print typekey + raise TypeError("Cannot handle this data type") + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + raise ValueError("Too many dimensions.") + + size = shape[1], shape[0] + if strides is not None: + obj = obj.tostring() + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + # ((1, 1), "|b1"): ("1", "1"), # broken + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "i2"): ("I", "I;16B"), + ((1, 1), "i4"): ("I", "I;32B"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), + } + +# shortcuts +_fromarray_typemap[((1, 1), _ENDIAN + "i4")] = ("I", "I") +_fromarray_typemap[((1, 1), _ENDIAN + "f4")] = ("F", "F") + +## +# Opens and identifies the given image file. +#

    +# This is a lazy operation; this function identifies the file, but the +# actual image data is not read from the file until you try to process +# the data (or call the {@link #Image.load} method). +# +# @def open(file, mode="r") +# @param file A filename (string) or a file object. The file object +# must implement read, seek, and tell methods, +# and be opened in binary mode. +# @param mode The mode. If given, this argument must be "r". +# @return An Image object. +# @exception IOError If the file cannot be found, or the image cannot be +# opened and identified. +# @see #new + +def open(fp, mode="r"): + "Open an image file, without loading the raster data" + + if mode != "r": + raise ValueError("bad mode") + + if isStringType(fp): + import __builtin__ + filename = fp + fp = __builtin__.open(fp, "rb") + else: + filename = "" + + prefix = fp.read(16) + + preinit() + + for i in ID: + try: + factory, accept = OPEN[i] + if not accept or accept(prefix): + fp.seek(0) + return factory(fp, filename) + except (SyntaxError, IndexError, TypeError): + pass + + if init(): + + for i in ID: + try: + factory, accept = OPEN[i] + if not accept or accept(prefix): + fp.seek(0) + return factory(fp, filename) + except (SyntaxError, IndexError, TypeError): + pass + + raise IOError("cannot identify image file") + +# +# Image processing. + +## +# Creates a new image by interpolating between two input images, using +# a constant alpha. +# +#

    +#    out = image1 * (1.0 - alpha) + image2 * alpha
    +# 
    +# +# @param im1 The first image. +# @param im2 The second image. Must have the same mode and size as +# the first image. +# @param alpha The interpolation alpha factor. If alpha is 0.0, a +# copy of the first image is returned. If alpha is 1.0, a copy of +# the second image is returned. There are no restrictions on the +# alpha value. If necessary, the result is clipped to fit into +# the allowed output range. +# @return An Image object. + +def blend(im1, im2, alpha): + "Interpolate between images." + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + +## +# Creates a new image by interpolating between two input images, +# using the mask as alpha. +# +# @param image1 The first image. +# @param image2 The second image. Must have the same mode and +# size as the first image. +# @param mask A mask image. This image can can have mode +# "1", "L", or "RGBA", and must have the same size as the +# other two images. + +def composite(image1, image2, mask): + "Create composite image by blending images using a transparency mask" + + image = image2.copy() + image.paste(image1, None, mask) + return image + +## +# Applies the function (which should take one argument) to each pixel +# in the given image. If the image has more than one band, the same +# function is applied to each band. Note that the function is +# evaluated once for each possible pixel value, so you cannot use +# random components or other generators. +# +# @def eval(image, function) +# @param image The input image. +# @param function A function object, taking one integer argument. +# @return An Image object. + +def eval(image, *args): + "Evaluate image expression" + + return image.point(args[0]) + +## +# Creates a new image from a number of single-band images. +# +# @param mode The mode to use for the output image. +# @param bands A sequence containing one single-band image for +# each band in the output image. All bands must have the +# same size. +# @return An Image object. + +def merge(mode, bands): + "Merge a set of single band images into a new multiband image." + + if getmodebands(mode) != len(bands) or "*" in mode: + raise ValueError("wrong number of bands") + for im in bands[1:]: + if im.mode != getmodetype(mode): + raise ValueError("mode mismatch") + if im.size != bands[0].size: + raise ValueError("size mismatch") + im = core.new(mode, bands[0].size) + for i in range(getmodebands(mode)): + bands[i].load() + im.putband(bands[i].im, i) + return bands[0]._new(im) + +# -------------------------------------------------------------------- +# Plugin registry + +## +# Register an image file plugin. This function should not be used +# in application code. +# +# @param id An image format identifier. +# @param factory An image file factory method. +# @param accept An optional function that can be used to quickly +# reject images having another format. + +def register_open(id, factory, accept=None): + id = string.upper(id) + ID.append(id) + OPEN[id] = factory, accept + +## +# Registers an image MIME type. This function should not be used +# in application code. +# +# @param id An image format identifier. +# @param mimetype The image MIME type for this format. + +def register_mime(id, mimetype): + MIME[string.upper(id)] = mimetype + +## +# Registers an image save function. This function should not be +# used in application code. +# +# @param id An image format identifier. +# @param driver A function to save images in this format. + +def register_save(id, driver): + SAVE[string.upper(id)] = driver + +## +# Registers an image extension. This function should not be +# used in application code. +# +# @param id An image format identifier. +# @param extension An extension used for this format. + +def register_extension(id, extension): + EXTENSION[string.lower(extension)] = string.upper(id) + + +# -------------------------------------------------------------------- +# Simple display support. User code may override this. + +def _show(image, **options): + # override me, as necessary + apply(_showxv, (image,), options) + +def _showxv(image, title=None, **options): + import ImageShow + apply(ImageShow.show, (image, title), options) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py new file mode 100755 index 00000000000..82861fc7a2c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py @@ -0,0 +1,302 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard channel operations +# +# History: +# 1996-03-24 fl Created +# 1996-08-13 fl Added logical operations (for "1" images) +# 2000-10-12 fl Added offset method (from Image.py) +# +# Copyright (c) 1997-2000 by Secret Labs AB +# Copyright (c) 1996-2000 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image + +## +# The ImageChops module contains a number of arithmetical image +# operations, called channel operations ("chops"). These can be +# used for various purposes, including special effects, image +# compositions, algorithmic painting, and more. +#

    +# At this time, channel operations are only implemented for 8-bit +# images (e.g. "L" and "RGB"). +#

    +# Most channel operations take one or two image arguments and returns +# a new image. Unless otherwise noted, the result of a channel +# operation is always clipped to the range 0 to MAX (which is 255 for +# all modes supported by the operations in this module). +## + +## +# Return an image with the same size as the given image, but filled +# with the given pixel value. +# +# @param image Reference image. +# @param value Pixel value. +# @return An image object. + +def constant(image, value): + "Fill a channel with a given grey level" + + return Image.new("L", image.size, value) + +## +# Copy image. +# +# @param image Source image. +# @return A copy of the source image. + +def duplicate(image): + "Create a copy of a channel" + + return image.copy() + +## +# Inverts an image +# (MAX - image). +# +# @param image Source image. +# @return An image object. + +def invert(image): + "Invert a channel" + + image.load() + return image._new(image.im.chop_invert()) + +## +# Compare images, and return lighter pixel value +# (max(image1, image2)). +#

    +# Compares the two images, pixel by pixel, and returns a new image +# containing the lighter values. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def lighter(image1, image2): + "Select the lighter pixels from each image" + + image1.load() + image2.load() + return image1._new(image1.im.chop_lighter(image2.im)) + +## +# Compare images, and return darker pixel value +# (min(image1, image2)). +#

    +# Compares the two images, pixel by pixel, and returns a new image +# containing the darker values. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def darker(image1, image2): + "Select the darker pixels from each image" + + image1.load() + image2.load() + return image1._new(image1.im.chop_darker(image2.im)) + +## +# Calculate absolute difference +# (abs(image1 - image2)). +#

    +# Returns the absolute value of the difference between the two images. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def difference(image1, image2): + "Subtract one image from another" + + image1.load() + image2.load() + return image1._new(image1.im.chop_difference(image2.im)) + +## +# Superimpose positive images +# (image1 * image2 / MAX). +#

    +# Superimposes two images on top of each other. If you multiply an +# image with a solid black image, the result is black. If you multiply +# with a solid white image, the image is unaffected. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def multiply(image1, image2): + "Superimpose two positive images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_multiply(image2.im)) + +## +# Superimpose negative images +# (MAX - ((MAX - image1) * (MAX - image2) / MAX)). +#

    +# Superimposes two inverted images on top of each other. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def screen(image1, image2): + "Superimpose two negative images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_screen(image2.im)) + +## +# Add images +# ((image1 + image2) / scale + offset). +#

    +# Adds two images, dividing the result by scale and adding the +# offset. If omitted, scale defaults to 1.0, and offset to 0.0. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def add(image1, image2, scale=1.0, offset=0): + "Add two images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_add(image2.im, scale, offset)) + +## +# Subtract images +# ((image1 - image2) / scale + offset). +#

    +# Subtracts two images, dividing the result by scale and adding the +# offset. If omitted, scale defaults to 1.0, and offset to 0.0. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def subtract(image1, image2, scale=1.0, offset=0): + "Subtract two images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) + +## +# Add images without clipping +# ((image1 + image2) % MAX). +#

    +# Adds two images, without clipping the result. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def add_modulo(image1, image2): + "Add two images without clipping" + + image1.load() + image2.load() + return image1._new(image1.im.chop_add_modulo(image2.im)) + +## +# Subtract images without clipping +# ((image1 - image2) % MAX). +#

    +# Subtracts two images, without clipping the result. +# +# @param image1 First image. +# @param image1 Second image. +# @return An image object. + +def subtract_modulo(image1, image2): + "Subtract two images without clipping" + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract_modulo(image2.im)) + +## +# Logical AND +# (image1 and image2). + +def logical_and(image1, image2): + "Logical and between two images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_and(image2.im)) + +## +# Logical OR +# (image1 or image2). + +def logical_or(image1, image2): + "Logical or between two images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_or(image2.im)) + +## +# Logical XOR +# (image1 xor image2). + +def logical_xor(image1, image2): + "Logical xor between two images" + + image1.load() + image2.load() + return image1._new(image1.im.chop_xor(image2.im)) + +## +# Blend images using constant transparency weight. +#

    +# Same as the blend function in the Image module. + +def blend(image1, image2, alpha): + "Blend two images using a constant transparency weight" + + return Image.blend(image1, image2, alpha) + +## +# Create composite using transparency mask. +#

    +# Same as the composite function in the Image module. + +def composite(image1, image2, mask): + "Create composite image by blending images using a transparency mask" + + return Image.composite(image1, image2, mask) + +## +# Offset image data. +#

    +# Returns a copy of the image where data has been offset by the given +# distances. Data wraps around the edges. If yoffset is omitted, it +# is assumed to be equal to xoffset. +# +# @param image Source image. +# @param xoffset The horizontal distance. +# @param yoffset The vertical distance. If omitted, both +# distances are set to the same value. +# @return An Image object. + +def offset(image, xoffset, yoffset=None): + "Offset image in horizontal and/or vertical direction" + if yoffset is None: + yoffset = xoffset + image.load() + return image._new(image.im.offset(xoffset, yoffset)) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py new file mode 100755 index 00000000000..b8a6dca71d9 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py @@ -0,0 +1,786 @@ +# +# The Python Imaging Library. +# $Id$ +# +# optional color managment support, based on Kevin Cazabon's PyCMS +# library. +# +# History: +# 2009-03-08 fl Added to PIL. +# +# Copyright (C) 2002-2003 Kevin Cazabon +# Copyright (c) 2009 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. See +# below for the original description. +# + +DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + http://www.cazabon.com + + pyCMS home page: http://www.cazabon.com/pyCMS + littleCMS home page: http://www.littlecms.com + (littleCMS is Copyright (C) 1998-2001 Marti Maria) + + Originally released under LGPL. Graciously donated to PIL in + March 2009, for distribution under the standard PIL license + + The pyCMS.py module provides a "clean" interface between Python/PIL and + pyCMSdll, taking care of some of the more complex handling of the direct + pyCMSdll functions, as well as error-checking and making sure that all + relevant data is kept together. + + While it is possible to call pyCMSdll functions directly, it's not highly + recommended. + + Version History: + + 0.1.0 pil mod March 10, 2009 + + Renamed display profile to proof profile. The proof + profile is the profile of the device that is being + simulated, not the profile of the device which is + actually used to display/print the final simulation + (that'd be the output profile) - also see LCMSAPI.txt + input colorspace -> using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements arount type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +VERSION = "0.1.0 pil" + +# --------------------------------------------------------------------. + +import Image +import _imagingcms + +core = _imagingcms + +# +# intent/direction values + +INTENT_PERCEPTUAL = 0 +INTENT_RELATIVE_COLORIMETRIC = 1 +INTENT_SATURATION = 2 +INTENT_ABSOLUTE_COLORIMETRIC = 3 + +DIRECTION_INPUT = 0 +DIRECTION_OUTPUT = 1 +DIRECTION_PROOF = 2 + +# +# flags + +FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1|2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + "NOPRELINEARIZATION": 16, # Don't create prelinearization tables on precalculated transforms (internal use) + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accurancy + "LOWRESPRECALC": 2048, # Use less memory to minimize resouces + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: ((n) & 0xFF) << 16 # Gridpoints +} + +_MAX_FLAG = 0 +for flag in FLAGS.values(): + if isinstance(flag, type(0)): + _MAX_FLAG = _MAX_FLAG | flag + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + +class ImageCmsProfile: + + def __init__(self, profile): + # accepts a string (filename), a file-like object, or a low-level + # profile object + if Image.isStringType(profile): + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_fromstring(profile.read())) + else: + self._set(profile) # assume it's already a profile + + def _set(self, profile, filename=None): + self.profile = profile + self.filename = filename + if profile: + self.product_name = profile.product_name + self.product_info = profile.product_info + else: + self.product_name = None + self.product_info = None + +## +# Transform. This can be used with the procedural API, or with the +# standard {@link Image.point} method. + +class ImageCmsTransform(Image.ImagePointHandler): + + def __init__(self, input, output, input_mode, output_mode, + intent=INTENT_PERCEPTUAL, + proof=None, proof_intent=INTENT_ABSOLUTE_COLORIMETRIC, flags=0): + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, + input_mode, output_mode, + intent, + flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, output.profile, proof.profile, + input_mode, output_mode, + intent, proof_intent, + flags + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + def point(self, im): + return self.apply(im) + + def apply(self, im, imOut=None): + im.load() + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + result = self.transform.apply(im.im.id, imOut.im.id) + return imOut + + def apply_in_place(self, im): + im.load() + if im.mode != self.output_mode: + raise ValueError("mode mismatch") # wrong output mode + result = self.transform.apply(im.im.id, im.im.id) + return im + +## +# (experimental) Fetches the profile for the current display device. +# Returns None if the profile is not known. + +def get_display_profile(handle=None): + import sys + if sys.platform == "win32": + import ImageWin + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(handle, 1) + else: + profile = core.get_display_profile_win32(handle or 0) + else: + try: + get = _imagingcms.get_display_profile + except AttributeError: + return None + else: + profile = get() + return ImageCmsProfile(profile) + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + +## +# (pyCMS) Exception class. This is used for all errors in the pyCMS API. + +class PyCMSError(Exception): + pass + +## +# (pyCMS) Applies an ICC transformation to a given image, mapping from +# inputProfile to outputProfile. + +def profileToProfile(im, inputProfile, outputProfile, renderingIntent=INTENT_PERCEPTUAL, outputMode=None, inPlace=0, flags=0): + """ + ImageCms.profileToProfile(im, inputProfile, outputProfile, + [renderingIntent], [outputMode], [inPlace]) + + Returns either None or a new PIL image object, depending on value of + inPlace (see below). + + im = an open PIL image object (i.e. Image.new(...) or + Image.open(...), etc.) + inputProfile = string, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + outputProfile = string, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + renderingIntent = integer (0-3) specifying the rendering intent you + wish to use for the transform + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and + what they do. + outputMode = a valid PIL mode for the output image (i.e. "RGB", "CMYK", + etc.). Note: if rendering the image "inPlace", outputMode MUST be + the same mode as the input, or omitted completely. If omitted, the + outputMode will be the same as the mode of the input image (im.mode) + inPlace = BOOL (1 = TRUE, None or 0 = FALSE). If TRUE, the original + image is modified in-place, and None is returned. If FALSE + (default), a new Image object is returned with the transform + applied. + flags = integer (0-...) specifying additional flags + + If the input or output profiles specified are not valid filenames, a + PyCMSError will be raised. If inPlace == TRUE and outputMode != im.mode, + a PyCMSError will be raised. If an error occurs during application of + the profiles, a PyCMSError will be raised. If outputMode is not a mode + supported by the outputProfile (or by pyCMS), a PyCMSError will be + raised. + + This function applies an ICC transformation to im from inputProfile's + color space to outputProfile's color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + OutputMode can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + """ + + if outputMode is None: + outputMode = im.mode + + if type(renderingIntent) != type(1) or not (0 <= renderingIntent <=3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if type(flags) != type(1) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, outputProfile, im.mode, outputMode, renderingIntent, flags=flags + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (IOError, TypeError, ValueError), v: + raise PyCMSError(v) + + return imOut + +## +# (pyCMS) Opens an ICC profile file. + +def getOpenProfile(profileFilename): + """ + ImageCms.getOpenProfile(profileFilename) + + Returns a CmsProfile class object. + + profileFilename = string, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If profileFilename is not a vaild filename for an ICC profile, a + PyCMSError will be raised. + + """ + + try: + return ImageCmsProfile(profileFilename) + except (IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Builds an ICC transform mapping from the inputProfile to the +# outputProfile. Use applyTransform to apply the transform to a given +# image. + +def buildTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent=INTENT_PERCEPTUAL, flags=0): + """ + ImageCms.buildTransform(inputProfile, outputProfile, inMode, outMode, + [renderingIntent]) + + Returns a CmsTransform class object. + + inputProfile = string, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + outputProfile = string, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + inMode = string, as a valid PIL mode that the appropriate profile also + supports (i.e. "RGB", "RGBA", "CMYK", etc.) + outMode = string, as a valid PIL mode that the appropriate profile also + supports (i.e. "RGB", "RGBA", "CMYK", etc.) + renderingIntent = integer (0-3) specifying the rendering intent you + wish to use for the transform + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + see the pyCMS documentation for details on rendering intents and + what they do. + flags = integer (0-...) specifying additional flags + + If the input or output profiles specified are not valid filenames, a + PyCMSError will be raised. If an error occurs during creation of the + transform, a PyCMSError will be raised. + + If inMode or outMode are not a mode supported by the outputProfile (or + by pyCMS), a PyCMSError will be raised. + + This function builds and returns an ICC transform from the inputProfile + to the outputProfile using the renderingIntent to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in inMode to images that are in outMode color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the "inMode" and "outMode" attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + """ + + if type(renderingIntent) != type(1) or not (0 <= renderingIntent <=3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if type(flags) != type(1) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags) + except (IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Builds an ICC transform mapping from the inputProfile to the +# outputProfile, but tries to simulate the result that would be +# obtained on the proofProfile device. + +def buildProofTransform(inputProfile, outputProfile, proofProfile, inMode, outMode, renderingIntent=INTENT_PERCEPTUAL, proofRenderingIntent=INTENT_ABSOLUTE_COLORIMETRIC, flags=FLAGS["SOFTPROOFING"]): + """ + ImageCms.buildProofTransform(inputProfile, outputProfile, proofProfile, + inMode, outMode, [renderingIntent], [proofRenderingIntent]) + + Returns a CmsTransform class object. + + inputProfile = string, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + outputProfile = string, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, + or a profile object + proofProfile = string, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + inMode = string, as a valid PIL mode that the appropriate profile also + supports (i.e. "RGB", "RGBA", "CMYK", etc.) + outMode = string, as a valid PIL mode that the appropriate profile also + supports (i.e. "RGB", "RGBA", "CMYK", etc.) + renderingIntent = integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + see the pyCMS documentation for details on rendering intents and + what they do. + proofRenderingIntent = integer (0-3) specifying the rendering intent + you wish to use for proof->output transform + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + see the pyCMS documentation for details on rendering intents and + what they do. + flags = integer (0-...) specifying additional flags + + If the input, output, or proof profiles specified are not valid + filenames, a PyCMSError will be raised. + + If an error occurs during creation of the transform, a PyCMSError will + be raised. + + If inMode or outMode are not a mode supported by the outputProfile + (or by pyCMS), a PyCMSError will be raised. + + This function builds and returns an ICC transform from the inputProfile + to the outputProfile, but tries to simulate the result that would be + obtained on the proofProfile device using renderingIntent and + proofRenderingIntent to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in inMode to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the proofProfile device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + """ + + if type(renderingIntent) != type(1) or not (0 <= renderingIntent <=3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if type(flags) != type(1) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent, proofProfile, proofRenderingIntent, flags) + except (IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + +## +# (pyCMS) Applies a transform to a given image. + +def applyTransform(im, transform, inPlace=0): + """ + ImageCms.applyTransform(im, transform, [inPlace]) + + Returns either None, or a new PIL Image object, depending on the value + of inPlace (see below) + + im = a PIL Image object, and im.mode must be the same as the inMode + supported by the transform. + transform = a valid CmsTransform class object + inPlace = BOOL (1 == TRUE, 0 or None == FALSE). If TRUE, im is + modified in place and None is returned, if FALSE, a new Image + object with the transform applied is returned (and im is not + changed). The default is FALSE. + + If im.mode != transform.inMode, a PyCMSError is raised. + + If inPlace == TRUE and transform.inMode != transform.outMode, a + PyCMSError is raised. + + If im.mode, transfer.inMode, or transfer.outMode is not supported by + pyCMSdll or the profiles you used for the transform, a PyCMSError is + raised. + + If an error occurs while the transform is being applied, a PyCMSError + is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) to an + image. The transform can be used for multiple images, saving + considerable calcuation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set inPlace to TRUE. This can only be done if + transform.inMode and transform.outMode are the same, because we can't + change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new Image object of + the same dimensions in mode transform.outMode. + + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError), v: + raise PyCMSError(v) + + return imOut + +## +# (pyCMS) Creates a profile. + +def createProfile(colorSpace, colorTemp=-1): + """ + ImageCms.createProfile(colorSpace, [colorTemp]) + + Returns a CmsProfile class object + + colorSpace = string, the color space of the profile you wish to create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + colorTemp = positive integer for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for + D50 illuminant if omitted (5000k). colorTemp is ONLY applied to + LAB profiles, and is ignored for XYZ and sRGB. + + If colorSpace not in ["LAB", "XYZ", "sRGB"], a PyCMSError is raised + + If using LAB and colorTemp != a positive integer, a PyCMSError is raised. + + If an error occurs while creating the profile, a PyCMSError is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + """ + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + raise PyCMSError("Color space not supported for on-the-fly profile creation (%s)" % colorSpace) + + if colorSpace == "LAB": + if type(colorTemp) == type(5000.0): + colorTemp = int(colorTemp + 0.5) + if type (colorTemp) != type (5000): + raise PyCMSError("Color temperature must be a positive integer, \"%s\" not valid" % colorTemp) + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Gets the internal product name for the given profile. + +def getProfileName(profile): + """ + ImageCms.getProfileName(profile) + + Returns a string containing the internal name of the profile as stored + in an ICC tag. + + profile = EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised If an error occurs while trying to obtain the + name tag, a PyCMSError is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.product_name + "\n" + except (AttributeError, IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Gets the internal product information for the given profile. + +def getProfileInfo(profile): + """ + ImageCms.getProfileInfo(profile) + + Returns a string containing the internal profile information stored in + an ICC tag. + + profile = EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the info tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + """ + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + return profile.product_info + "\n" + except (AttributeError, IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Gets the default intent name for the given profile. + +def getDefaultIntent(profile): + """ + ImageCms.getDefaultIntent(profile) + + Returns integer 0-3 specifying the default rendering intent for this + profile. + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + see the pyCMS documentation for details on rendering intents and + what they do. + + profile = EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the default intent, a + PyCMSError is raised. + + Use this function to determine the default (and usually best optomized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + """ + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Checks if a given intent is supported. + +def isIntentSupported(profile, intent, direction): + """ + ImageCms.isIntentSupported(profile, intent, direction) + + Returns 1 if the intent/direction are supported, -1 if they are not. + + profile = EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + intent = integer (0-3) specifying the rendering intent you wish to use + with this profile + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + see the pyCMS documentation for details on rendering intents and + what they do. + direction = integer specifing if the profile is to be used for input, + output, or proof + INPUT = 0 (or use ImageCms.DIRECTION_INPUT) + OUTPUT = 1 (or use ImageCms.DIRECTION_OUTPUT) + PROOF = 2 (or use ImageCms.DIRECTION_PROOF) + + Use this function to verify that you can use your desired + renderingIntent with profile, and that profile can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents... so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential PyCMSError that will occur if they don't support the modes + you select. + + """ + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, IOError, TypeError, ValueError), v: + raise PyCMSError(v) + +## +# (pyCMS) Fetches versions. + +def versions(): + import sys + return ( + VERSION, core.littlecms_version, sys.version.split()[0], Image.VERSION + ) + +# -------------------------------------------------------------------- + +if __name__ == "__main__": + # create a cheap manual from the __doc__ strings for the functions above + + import ImageCms + import string + print __doc__ + + for f in dir(pyCMS): + print "="*80 + print "%s" %f + + try: + exec ("doc = ImageCms.%s.__doc__" %(f)) + if string.find(doc, "pyCMS") >= 0: + # so we don't get the __doc__ string for imported modules + print doc + except AttributeError: + pass diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py new file mode 100755 index 00000000000..c3cca46db8f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py @@ -0,0 +1,263 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image +import re, string + +try: + x = int("a", 16) +except TypeError: + # python 1.5.2 doesn't support int(x,b) + str2int = string.atoi +else: + str2int = int + +## +# Convert color string to RGB tuple. +# +# @param color A CSS3-style colour string. +# @return An RGB-tuple. +# @exception ValueError If the color string could not be interpreted +# as an RGB value. + +def getrgb(color): + # FIXME: add RGBA support + try: + rgb = colormap[color] + except KeyError: + try: + # fall back on case-insensitive lookup + rgb = colormap[string.lower(color)] + except KeyError: + rgb = None + # found color in cache + if rgb: + if isinstance(rgb, type(())): + return rgb + colormap[color] = rgb = getrgb(rgb) + return rgb + # check for known string formats + m = re.match("#\w\w\w$", color) + if m: + return ( + str2int(color[1]*2, 16), + str2int(color[2]*2, 16), + str2int(color[3]*2, 16) + ) + m = re.match("#\w\w\w\w\w\w$", color) + if m: + return ( + str2int(color[1:3], 16), + str2int(color[3:5], 16), + str2int(color[5:7], 16) + ) + m = re.match("rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return ( + str2int(m.group(1)), + str2int(m.group(2)), + str2int(m.group(3)) + ) + m = re.match("rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((str2int(m.group(1)) * 255) / 100.0 + 0.5), + int((str2int(m.group(2)) * 255) / 100.0 + 0.5), + int((str2int(m.group(3)) * 255) / 100.0 + 0.5) + ) + m = re.match("hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + from colorsys import hls_to_rgb + rgb = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5) + ) + raise ValueError("unknown color specifier: %r" % color) + +def getcolor(color, mode): + # same as getrgb, but converts the result to the given mode + color = getrgb(color) + if mode == "RGB": + return color + if mode == "RGBA": + r, g, b = color + return r, g, b, 255 + if Image.getmodebase(mode) == "L": + r, g, b = color + return (r*299 + g*587 + b*114)/1000 + return color + +colormap = { + # X11 colour table (from "CSS3 module: Color working draft"), with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py new file mode 100755 index 00000000000..5217a7366fe --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py @@ -0,0 +1,378 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageColor + +try: + import warnings +except ImportError: + warnings = None + +## +# A simple 2D drawing interface for PIL images. +#

    +# Application code should use the Draw factory, instead of +# directly. + +class ImageDraw: + + ## + # Create a drawing instance. + # + # @param im The image to draw in. + # @param mode Optional mode to use for color values. For RGB + # images, this argument can be RGB or RGBA (to blend the + # drawing into the image). For all other modes, this argument + # must be the same as the image mode. If omitted, the mode + # defaults to the mode of the image. + + def __init__(self, im, mode=None): + im.load() + if im.readonly: + im._copy() # make it writable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + raise ValueError("mode mismatch") + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1, mode) + else: + self.ink = self.draw.draw_ink(-1, mode) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = 0 + self.font = None + + ## + # Set the default pen color. + + def setink(self, ink): + # compatibility + if warnings: + warnings.warn( + "'setink' is deprecated; use keyword arguments instead", + DeprecationWarning, stacklevel=2 + ) + if Image.isStringType(ink): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not Image.isNumberType(ink): + ink = self.palette.getcolor(ink) + self.ink = self.draw.draw_ink(ink, self.mode) + + ## + # Set the default background color. + + def setfill(self, onoff): + # compatibility + if warnings: + warnings.warn( + "'setfill' is deprecated; use keyword arguments instead", + DeprecationWarning, stacklevel=2 + ) + self.fill = onoff + + ## + # Set the default font. + + def setfont(self, font): + # compatibility + self.font = font + + ## + # Get the current default font. + + def getfont(self): + if not self.font: + # FIXME: should add a font repository + import ImageFont + self.font = ImageFont.load_default() + return self.font + + def _getink(self, ink, fill=None): + if ink is None and fill is None: + if self.fill: + fill = self.ink + else: + ink = self.ink + else: + if ink is not None: + if Image.isStringType(ink): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not Image.isNumberType(ink): + ink = self.palette.getcolor(ink) + ink = self.draw.draw_ink(ink, self.mode) + if fill is not None: + if Image.isStringType(fill): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and not Image.isNumberType(fill): + fill = self.palette.getcolor(fill) + fill = self.draw.draw_ink(fill, self.mode) + return ink, fill + + ## + # Draw an arc. + + def arc(self, xy, start, end, fill=None): + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink) + + ## + # Draw a bitmap. + + def bitmap(self, xy, bitmap, fill=None): + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + ## + # Draw a chord. + + def chord(self, xy, start, end, fill=None, outline=None): + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_chord(xy, start, end, fill, 1) + if ink is not None: + self.draw.draw_chord(xy, start, end, ink, 0) + + ## + # Draw an ellipse. + + def ellipse(self, xy, fill=None, outline=None): + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_ellipse(xy, fill, 1) + if ink is not None: + self.draw.draw_ellipse(xy, ink, 0) + + ## + # Draw a line, or a connected sequence of line segments. + + def line(self, xy, fill=None, width=0): + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_lines(xy, ink, width) + + ## + # (Experimental) Draw a shape. + + def shape(self, shape, fill=None, outline=None): + # experimental + shape.close() + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_outline(shape, fill, 1) + if ink is not None: + self.draw.draw_outline(shape, ink, 0) + + ## + # Draw a pieslice. + + def pieslice(self, xy, start, end, fill=None, outline=None): + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_pieslice(xy, start, end, fill, 1) + if ink is not None: + self.draw.draw_pieslice(xy, start, end, ink, 0) + + ## + # Draw one or more individual pixels. + + def point(self, xy, fill=None): + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + ## + # Draw a polygon. + + def polygon(self, xy, fill=None, outline=None): + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_polygon(xy, fill, 1) + if ink is not None: + self.draw.draw_polygon(xy, ink, 0) + + ## + # Draw a rectangle. + + def rectangle(self, xy, fill=None, outline=None): + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_rectangle(xy, fill, 1) + if ink is not None: + self.draw.draw_rectangle(xy, ink, 0) + + ## + # Draw text. + + def text(self, xy, text, fill=None, font=None, anchor=None): + ink, fill = self._getink(fill) + if font is None: + font = self.getfont() + if ink is None: + ink = fill + if ink is not None: + try: + mask, offset = font.getmask2(text, self.fontmode) + xy = xy[0] + offset[0], xy[1] + offset[1] + except AttributeError: + try: + mask = font.getmask(text, self.fontmode) + except TypeError: + mask = font.getmask(text) + self.draw.draw_bitmap(xy, mask, ink) + + ## + # Get the size of a given string, in pixels. + + def textsize(self, text, font=None): + if font is None: + font = self.getfont() + return font.getsize(text) + +## +# A simple 2D drawing interface for PIL images. +# +# @param im The image to draw in. +# @param mode Optional mode to use for color values. For RGB +# images, this argument can be RGB or RGBA (to blend the +# drawing into the image). For all other modes, this argument +# must be the same as the image mode. If omitted, the mode +# defaults to the mode of the image. + +def Draw(im, mode=None): + try: + return im.getdraw(mode) + except AttributeError: + return ImageDraw(im, mode) + +# experimental access to the outline API +try: + Outline = Image.core.outline +except: + Outline = None + +## +# (Experimental) A more advanced 2D drawing interface for PIL images, +# based on the WCK interface. +# +# @param im The image to draw in. +# @param hints An optional list of hints. +# @return A (drawing context, drawing resource factory) tuple. + +def getdraw(im=None, hints=None): + # FIXME: this needs more work! + # FIXME: come up with a better 'hints' scheme. + handler = None + if not hints or "nicest" in hints: + try: + import _imagingagg + handler = _imagingagg + except ImportError: + pass + if handler is None: + import ImageDraw2 + handler = ImageDraw2 + if im: + im = handler.Draw(im) + return im, handler + +## +# (experimental) Fills a bounded region with a given color. +# +# @param image Target image. +# @param xy Seed position (a 2-item coordinate tuple). +# @param value Fill color. +# @param border Optional border value. If given, the region consists of +# pixels with a color different from the border color. If not given, +# the region consists of pixels having the same color as the seed +# pixel. + +def floodfill(image, xy, value, border=None): + "Fill bounded region." + # based on an implementation by Eric S. Raymond + pixel = image.load() + x, y = xy + try: + background = pixel[x, y] + if background == value: + return # seed point already has fill color + pixel[x, y] = value + except IndexError: + return # seed point outside image + edge = [(x, y)] + if border is None: + while edge: + newedge = [] + for (x, y) in edge: + for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)): + try: + p = pixel[s, t] + except IndexError: + pass + else: + if p == background: + pixel[s, t] = value + newedge.append((s, t)) + edge = newedge + else: + while edge: + newedge = [] + for (x, y) in edge: + for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)): + try: + p = pixel[s, t] + except IndexError: + pass + else: + if p != value and p != border: + pixel[s, t] = value + newedge.append((s, t)) + edge = newedge diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py new file mode 100755 index 00000000000..dbf1a1f8893 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py @@ -0,0 +1,105 @@ +# +# The Python Imaging Library +# $Id$ +# +# WCK-style drawing interface operations +# +# History: +# 2003-12-07 fl created +# 2005-05-15 fl updated; added to PIL as ImageDraw2 +# 2005-05-15 fl added text support +# 2005-05-20 fl added arc/chord/pieslice support +# +# Copyright (c) 2003-2005 by Secret Labs AB +# Copyright (c) 2003-2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageColor, ImageDraw, ImageFont, ImagePath + +class Pen: + def __init__(self, color, width=1, opacity=255): + self.color = ImageColor.getrgb(color) + self.width = width + +class Brush: + def __init__(self, color, opacity=255): + self.color = ImageColor.getrgb(color) + +class Font: + def __init__(self, color, file, size=12): + # FIXME: add support for bitmap fonts + self.color = ImageColor.getrgb(color) + self.font = ImageFont.truetype(file, size) + +class Draw: + + def __init__(self, image, size=None, color=None): + if not hasattr(image, "im"): + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform = None + + def flush(self): + return self.image + + def render(self, op, xy, pen, brush=None): + # handle color arguments + outline = fill = None; width = 1 + if isinstance(pen, Pen): + outline = pen.color + width = pen.width + elif isinstance(brush, Pen): + outline = brush.color + width = brush.width + if isinstance(brush, Brush): + fill = brush.color + elif isinstance(pen, Brush): + fill = pen.color + # handle transformation + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + # render the item + if op == "line": + self.draw.line(xy, fill=outline, width=width) + else: + getattr(self.draw, op)(xy, fill=fill, outline=outline) + + def settransform(self, (xoffset, yoffset)): + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc(self, xy, start, end, *options): + self.render("arc", xy, start, end, *options) + + def chord(self, xy, start, end, *options): + self.render("chord", xy, start, end, *options) + + def ellipse(self, xy, *options): + self.render("ellipse", xy, *options) + + def line(self, xy, *options): + self.render("line", xy, *options) + + def pieslice(self, xy, start, end, *options): + self.render("pieslice", xy, start, end, *options) + + def polygon(self, xy, *options): + self.render("polygon", xy, *options) + + def rectangle(self, xy, *options): + self.render("rectangle", xy, *options) + + def symbol(self, xy, symbol, *options): + raise NotImplementedError("not in this version") + + def text(self, xy, text, font): + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textsize(self, text, font): + return self.draw.textsize(text, font=font.font) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py new file mode 100755 index 00000000000..86a19e650e2 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py @@ -0,0 +1,90 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.sgi.com/grafica/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +import Image, ImageFilter, ImageStat + +class _Enhance: + + ## + # Returns an enhanced image. The enhancement factor is a floating + # point value controlling the enhancement. Factor 1.0 always + # returns a copy of the original image, lower factors mean less + # colour (brightness, contrast, etc), and higher values more. + # There are no restrictions on this value. + # + # @param factor Enhancement factor. + # @return An enhanced image. + + def enhance(self, factor): + return Image.blend(self.degenerate, self.image, factor) + +## +# Color enhancement object. +#

    +# This class can be used to adjust the colour balance of an image, in +# a manner similar to the controls on a colour TV set. An enhancement +# factor of 0.0 gives a black and white image, a factor of 1.0 gives +# the original image. + +class Color(_Enhance): + "Adjust image colour balance" + def __init__(self, image): + self.image = image + self.degenerate = image.convert("L").convert(image.mode) + +## +# Contrast enhancement object. +#

    +# This class can be used to control the contrast of an image, similar +# to the contrast control on a TV set. An enhancement factor of 0.0 +# gives a solid grey image, factor 1.0 gives the original image. + +class Contrast(_Enhance): + "Adjust image contrast" + def __init__(self, image): + self.image = image + mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean).convert(image.mode) + +## +# Brightness enhancement object. +#

    +# This class can be used to control the brighntess of an image. An +# enhancement factor of 0.0 gives a black image, factor 1.0 gives the +# original image. + +class Brightness(_Enhance): + "Adjust image brightness" + def __init__(self, image): + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + +## +# Sharpness enhancement object. +#

    +# This class can be used to adjust the sharpness of an image. The +# enhancement factor 0.0 gives a blurred image, 1.0 gives the original +# image, and a factor of 2.0 gives a sharpened image. + +class Sharpness(_Enhance): + "Adjust image sharpness" + def __init__(self, image): + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py new file mode 100755 index 00000000000..8a97c1b5b34 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py @@ -0,0 +1,528 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image +import traceback, string, os + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024*1024 + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error" +} + +def raise_ioerror(error): + try: + message = Image.core.getcodecstatus(error) + except AttributeError: + message = ERRORS.get(error) + if not message: + message = "decoder error %d" % error + raise IOError(message + " when reading image file") + +# +# -------------------------------------------------------------------- +# Helpers + +def _tilesort(t1, t2): + # sort on offset + return cmp(t1[2], t2[2]) + +# +# -------------------------------------------------------------------- +# ImageFile base class + +## +# Base class for image file handlers. + +class ImageFile(Image.Image): + "Base class for image file format handlers." + + def __init__(self, fp=None, filename=None): + Image.Image.__init__(self) + + self.tile = None + self.readonly = 1 # until we know better + + self.decoderconfig = () + self.decodermaxblock = MAXBLOCK + + if Image.isStringType(fp): + # filename + self.fp = open(fp, "rb") + self.filename = fp + else: + # stream + self.fp = fp + self.filename = filename + + try: + self._open() + except IndexError, v: # end of data + if Image.DEBUG > 1: + traceback.print_exc() + raise SyntaxError, v + except TypeError, v: # end of data (ord) + if Image.DEBUG > 1: + traceback.print_exc() + raise SyntaxError, v + except KeyError, v: # unsupported mode + if Image.DEBUG > 1: + traceback.print_exc() + raise SyntaxError, v + except EOFError, v: # got header but not the first frame + if Image.DEBUG > 1: + traceback.print_exc() + raise SyntaxError, v + + if not self.mode or self.size[0] <= 0: + raise SyntaxError, "not identified by this driver" + + def draft(self, mode, size): + "Set draft mode" + + pass + + def verify(self): + "Check file integrity" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + self.fp = None + + def load(self): + "Load image data based on tile list" + + pixel = Image.Image.load(self) + + if self.tile is None: + raise IOError("cannot load this image") + if not self.tile: + return pixel + + self.map = None + + readonly = 0 + + if self.filename and len(self.tile) == 1: + # try memory mapping + d, e, o, a = self.tile[0] + if d == "raw" and a[0] == self.mode and a[0] in Image._MAPMODES: + try: + if hasattr(Image.core, "map"): + # use built-in mapper + self.map = Image.core.map(self.filename) + self.map.seek(o) + self.im = self.map.readimage( + self.mode, self.size, a[1], a[2] + ) + else: + # use mmap, if possible + import mmap + file = open(self.filename, "r+") + size = os.path.getsize(self.filename) + # FIXME: on Unix, use PROT_READ etc + self.map = mmap.mmap(file.fileno(), size) + self.im = Image.core.map_buffer( + self.map, self.size, d, e, o, a + ) + readonly = 1 + except (AttributeError, EnvironmentError, ImportError): + self.map = None + + self.load_prepare() + + # look for read/seek overrides + try: + read = self.load_read + except AttributeError: + read = self.fp.read + + try: + seek = self.load_seek + except AttributeError: + seek = self.fp.seek + + if not self.map: + + # sort tiles in file order + self.tile.sort(_tilesort) + + try: + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = self.tile_prefix + except AttributeError: + prefix = "" + + for d, e, o, a in self.tile: + d = Image._getdecoder(self.mode, d, a, self.decoderconfig) + seek(o) + try: + d.setimage(self.im, e) + except ValueError: + continue + b = prefix + t = len(b) + while 1: + s = read(self.decodermaxblock) + if not s: + self.tile = [] + raise IOError("image file is truncated (%d bytes not processed)" % len(b)) + b = b + s + n, e = d.decode(b) + if n < 0: + break + b = b[n:] + t = t + n + + self.tile = [] + self.readonly = readonly + + self.fp = None # might be shared + + if not self.map and e < 0: + raise_ioerror(e) + + # post processing + if hasattr(self, "tile_post_rotate"): + # FIXME: This is a hack to handle rotated PCD's + self.im = self.im.rotate(self.tile_post_rotate) + self.size = self.im.size + + self.load_end() + + return Image.Image.load(self) + + def load_prepare(self): + # create image memory if necessary + if not self.im or\ + self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self): + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos): + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, bytes): + # pass + +## +# Base class for stub image loaders. +#

    +# A stub loader is an image loader that can identify files of a +# certain format, but relies on external code to load the file. + +class StubImageFile(ImageFile): + "Base class for stub image loaders." + + def _open(self): + raise NotImplementedError( + "StubImageFile subclass must implement _open" + ) + + def load(self): + loader = self._load() + if loader is None: + raise IOError("cannot find loader for this %s file" % self.format) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ + self.__dict__ = image.__dict__ + + ## + # (Hook) Find actual image loader. + + def _load(self): + raise NotImplementedError( + "StubImageFile subclass must implement _load" + ) + +## +# (Internal) Support class for the Parser file. + +class _ParserFile: + # parser support class. + + def __init__(self, data): + self.data = data + self.offset = 0 + + def close(self): + self.data = self.offset = None + + def tell(self): + return self.offset + + def seek(self, offset, whence=0): + if whence == 0: + self.offset = offset + elif whence == 1: + self.offset = self.offset + offset + else: + # force error in Image.open + raise IOError("illegal argument to seek") + + def read(self, bytes=0): + pos = self.offset + if bytes: + data = self.data[pos:pos+bytes] + else: + data = self.data[pos:] + self.offset = pos + len(data) + return data + + def readline(self): + # FIXME: this is slow! + s = "" + while 1: + c = self.read(1) + if not c: + break + s = s + c + if c == "\n": + break + return s + +## +# Incremental image parser. This class implements the standard +# feed/close consumer interface. + +class Parser: + + incremental = None + image = None + data = None + decoder = None + finished = 0 + + ## + # (Consumer) Reset the parser. Note that you can only call this + # method immediately after you've created a parser; parser + # instances cannot be reused. + + def reset(self): + assert self.data is None, "cannot reuse parsers" + + ## + # (Consumer) Feed data to the parser. + # + # @param data A string buffer. + # @exception IOError If the parser failed to parse the image file. + + def feed(self, data): + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise_ioerror(e) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + + # attempt to open this file + try: + try: + fp = _ParserFile(self.data) + im = Image.open(fp) + finally: + fp.close() # explicitly close the virtual file + except IOError: + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder( + im.mode, d, a, im.decoderconfig + ) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset:] + self.offset = 0 + + self.image = im + + ## + # (Consumer) Close the stream. + # + # @return An image object. + # @exception IOError If the parser failed to parse the image file. + + def close(self): + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed("") + self.data = self.decoder = None + if not self.finished: + raise IOError("image was incomplete") + if not self.image: + raise IOError("cannot parse this image") + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + try: + fp = _ParserFile(self.data) + self.image = Image.open(fp) + finally: + self.image.load() + fp.close() # explicitly close the virtual file + return self.image + +# -------------------------------------------------------------------- + +## +# (Helper) Save image body to file. +# +# @param im Image object. +# @param fp File object. +# @param tile Tile list. + +def _save(im, fp, tile): + "Helper to save image based on tile list" + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + bufsize = max(MAXBLOCK, im.size[0] * 4) # see RawEncode.c + try: + fh = fp.fileno() + fp.flush() + except AttributeError: + # compress to Python file-compatible object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o, 0) + e.setimage(im.im, b) + while 1: + l, s, d = e.encode(bufsize) + fp.write(d) + if s: + break + if s < 0: + raise IOError("encoder error %d when writing image file" % s) + else: + # slight speedup: compress to real file object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o, 0) + e.setimage(im.im, b) + s = e.encode_to_file(fh, bufsize) + if s < 0: + raise IOError("encoder error %d when writing image file" % s) + try: + fp.flush() + except: pass + + +## +# Reads large blocks in a safe way. Unlike fp.read(n), this function +# doesn't trust the user. If the requested size is larger than +# SAFEBLOCK, the file is read block by block. +# +# @param fp File handle. Must implement a read method. +# @param size Number of bytes to read. +# @return A string containing up to size bytes of data. + +def _safe_read(fp, size): + if size <= 0: + return "" + if size <= SAFEBLOCK: + return fp.read(size) + data = [] + while size > 0: + block = fp.read(min(size, SAFEBLOCK)) + if not block: + break + data.append(block) + size = size - len(block) + return string.join(data, "") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py new file mode 100755 index 00000000000..c12a25738c1 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py @@ -0,0 +1,39 @@ +# +# The Python Imaging Library. +# $Id$ +# +# kludge to get basic ImageFileIO functionality +# +# History: +# 1998-08-06 fl Recreated +# +# Copyright (c) Secret Labs AB 1998-2002. +# +# See the README file for information on usage and redistribution. +# + +from StringIO import StringIO + +## +# The ImageFileIO module can be used to read an image from a +# socket, or any other stream device. +#

    +# This module is deprecated. New code should use the Parser +# class in the ImageFile module instead. +# +# @see ImageFile#Parser + +class ImageFileIO(StringIO): + + ## + # Adds buffering to a stream file object, in order to + # provide seek and tell methods required + # by the Image.open method. The stream object must + # implement read and close methods. + # + # @param fp Stream file handle. + # @see Image#open + + def __init__(self, fp): + data = fp.read() + StringIO.__init__(self, data) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py new file mode 100755 index 00000000000..918bab177c1 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py @@ -0,0 +1,289 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +class Filter: + pass + +## +# Convolution filter kernel. + +class Kernel(Filter): + + ## + # Create a convolution kernel. The current version only + # supports 3x3 and 5x5 integer and floating point kernels. + #

    + # In the current version, kernels can only be applied to + # "L" and "RGB" images. + # + # @def __init__(size, kernel, **options) + # @param size Kernel size, given as (width, height). In + # the current version, this must be (3,3) or (5,5). + # @param kernel A sequence containing kernel weights. + # @param **options Optional keyword arguments. + # @keyparam scale Scale factor. If given, the result for each + # pixel is divided by this value. The default is the sum + # of the kernel weights. + # @keyparam offset Offset. If given, this value is added to the + # result, after it has been divided by the scale factor. + + def __init__(self, size, kernel, scale=None, offset=0): + if scale is None: + # default scale is sum of kernel + scale = reduce(lambda a,b: a+b, kernel) + if size[0] * size[1] != len(kernel): + raise ValueError("not enough coefficients in kernel") + self.filterargs = size, scale, offset, kernel + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + return apply(image.filter, self.filterargs) + +class BuiltinFilter(Kernel): + def __init__(self): + pass + +## +# Rank filter. + +class RankFilter(Filter): + name = "Rank" + + ## + # Create a rank filter. The rank filter sorts all pixels in + # a window of the given size, and returns the rank'th value. + # + # @param size The kernel size, in pixels. + # @param rank What pixel value to pick. Use 0 for a min filter, + # size*size/2 for a median filter, size*size-1 for a max filter, + # etc. + + def __init__(self, size, rank): + self.size = size + self.rank = rank + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + image = image.expand(self.size/2, self.size/2) + return image.rankfilter(self.size, self.rank) + +## +# Median filter. Picks the median pixel value in a window with the +# given size. + +class MedianFilter(RankFilter): + name = "Median" + + ## + # Create a median filter. + # + # @param size The kernel size, in pixels. + + def __init__(self, size=3): + self.size = size + self.rank = size*size/2 + +## +# Min filter. Picks the lowest pixel value in a window with the given +# size. + +class MinFilter(RankFilter): + name = "Min" + + ## + # Create a min filter. + # + # @param size The kernel size, in pixels. + + def __init__(self, size=3): + self.size = size + self.rank = 0 + +## +# Max filter. Picks the largest pixel value in a window with the +# given size. + +class MaxFilter(RankFilter): + name = "Max" + + ## + # Create a max filter. + # + # @param size The kernel size, in pixels. + + def __init__(self, size=3): + self.size = size + self.rank = size*size-1 + +## +# Mode filter. Picks the most frequent pixel value in a box with the +# given size. Pixel values that occur only once or twice are ignored; +# if no pixel value occurs more than twice, the original pixel value +# is preserved. + +class ModeFilter(Filter): + name = "Mode" + + ## + # Create a mode filter. + # + # @param size The kernel size, in pixels. + + def __init__(self, size=3): + self.size = size + def filter(self, image): + return image.modefilter(self.size) + +## +# Gaussian blur filter. + +class GaussianBlur(Filter): + name = "GaussianBlur" + + def __init__(self, radius=2): + self.radius = 2 + def filter(self, image): + return image.gaussian_blur(self.radius) + +## +# Unsharp mask filter. + +class UnsharpMask(Filter): + name = "UnsharpMask" + + def __init__(self, radius=2, percent=150, threshold=3): + self.radius = 2 + self.percent = percent + self.threshold = threshold + def filter(self, image): + return image.unsharp_mask(self.radius, self.percent, self.threshold) + +## +# Simple blur filter. + +class BLUR(BuiltinFilter): + name = "Blur" + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1 + ) + +## +# Simple contour filter. + +class CONTOUR(BuiltinFilter): + name = "Contour" + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1 + ) + +## +# Simple detail filter. + +class DETAIL(BuiltinFilter): + name = "Detail" + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0 + ) + +## +# Simple edge enhancement filter. + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1 + ) + +## +# Simple stronger edge enhancement filter. + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1 + ) + +## +# Simple embossing filter. + +class EMBOSS(BuiltinFilter): + name = "Emboss" + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0 + ) + +## +# Simple edge-finding filter. + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1 + ) + +## +# Simple smoothing filter. + +class SMOOTH(BuiltinFilter): + name = "Smooth" + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1 + ) + +## +# Simple stronger smoothing filter. + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1 + ) + +## +# Simple sharpening filter. + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2 + ) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py new file mode 100755 index 00000000000..3ea2f2f8efd --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py @@ -0,0 +1,390 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIL raster font management +# +# History: +# 1996-08-07 fl created (experimental) +# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 +# 1999-02-06 fl rewrote most font management stuff in C +# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) +# 2001-02-17 fl added freetype support +# 2001-05-09 fl added TransposedFont wrapper class +# 2002-03-04 fl make sure we have a "L" or "1" font +# 2002-12-04 fl skip non-directory entries in the system path +# 2003-04-29 fl add embedded default font +# 2003-09-27 fl added support for truetype charmap encodings +# +# Todo: +# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image +import os, string, sys + +class _imagingft_not_installed: + # module placeholder + def __getattr__(self, id): + raise ImportError("The _imagingft C module is not installed") + +try: + import _imagingft + core = _imagingft + del _imagingft +except ImportError: + core = _imagingft_not_installed() + +# FIXME: add support for pilfont2 format (see FontFile.py) + +# -------------------------------------------------------------------- +# Font metrics format: +# "PILfont" LF +# fontdescriptor LF +# (optional) key=value... LF +# "DATA" LF +# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) +# +# To place a character, cut out srcbox and paste at dstbox, +# relative to the character position. Then move the character +# position according to dx, dy. +# -------------------------------------------------------------------- + +## +# The ImageFont module defines a class with the same name. +# Instances of this class store bitmap fonts, and are used with the +# text method of the ImageDraw class. +#

    +# PIL uses it's own font file format to store bitmap fonts. You can +# use the pilfont utility to convert BDF and PCF font +# descriptors (X window font formats) to this format. +#

    +# Starting with version 1.1.4, PIL can be configured to support +# TrueType and OpenType fonts. For earlier version, TrueType +# support is only available as part of the imToolkit package +# +# @see ImageDraw#ImageDraw.text +# @see pilfont + +class ImageFont: + "PIL font wrapper" + + def _load_pilfont(self, filename): + + file = open(filename, "rb") + + for ext in (".png", ".gif", ".pbm"): + try: + fullname = os.path.splitext(filename)[0] + ext + image = Image.open(fullname) + except: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + raise IOError("cannot find glyph data file") + + self.file = fullname + + return self._load_pilfont_data(file, image) + + def _load_pilfont_data(self, file, image): + + # read PILfont header + if file.readline() != "PILfont\n": + raise SyntaxError("Not a PILfont file") + d = string.split(file.readline(), ";") + self.info = [] # FIXME: should be a dictionary + while True: + s = file.readline() + if not s or s == "DATA\n": + break + self.info.append(s) + + # read PILfont metrics + data = file.read(256*20) + + # check image + if image.mode not in ("1", "L"): + raise TypeError("invalid font image mode") + + image.load() + + self.font = Image.core.font(image.im, data) + + # delegate critical operations to internal type + self.getsize = self.font.getsize + self.getmask = self.font.getmask + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + +class FreeTypeFont: + "FreeType font wrapper (requires _imagingft service)" + + def __init__(self, file, size, index=0, encoding=""): + # FIXME: use service provider instead + self.font = core.getfont(file, size, index, encoding) + + def getname(self): + return self.font.family, self.font.style + + def getmetrics(self): + return self.font.ascent, self.font.descent + + def getsize(self, text): + return self.font.getsize(text)[0] + + def getmask(self, text, mode=""): + return self.getmask2(text, mode)[0] + + def getmask2(self, text, mode="", fill=Image.core.fill): + size, offset = self.font.getsize(text) + im = fill("L", size, 0) + self.font.render(text, im.id, mode=="1") + return im, offset + +## +# Wrapper that creates a transposed font from any existing font +# object. +# +# @param font A font object. +# @param orientation An optional orientation. If given, this should +# be one of Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, +# Image.ROTATE_90, Image.ROTATE_180, or Image.ROTATE_270. + +class TransposedFont: + "Wrapper for writing rotated or mirrored text" + + def __init__(self, font, orientation=None): + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getsize(self, text): + w, h = self.font.getsize(text) + if self.orientation in (Image.ROTATE_90, Image.ROTATE_270): + return h, w + return w, h + + def getmask(self, text, mode=""): + im = self.font.getmask(text, mode) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + +## +# Load font file. This function loads a font object from the given +# bitmap font file, and returns the corresponding font object. +# +# @param filename Name of font file. +# @return A font object. +# @exception IOError If the file could not be read. + +def load(filename): + "Load a font file." + f = ImageFont() + f._load_pilfont(filename) + return f + +## +# Load a TrueType or OpenType font file, and create a font object. +# This function loads a font object from the given file, and creates +# a font object for a font of the given size. +#

    +# This function requires the _imagingft service. +# +# @param filename A truetype font file. Under Windows, if the file +# is not found in this filename, the loader also looks in Windows +# fonts directory +# @param size The requested size, in points. +# @param index Which font face to load (default is first available face). +# @param encoding Which font encoding to use (default is Unicode). Common +# encodings are "unic" (Unicode), "symb" (Microsoft Symbol), "ADOB" +# (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple Roman). +# See the FreeType documentation for more information. +# @return A font object. +# @exception IOError If the file could not be read. + +def truetype(filename, size, index=0, encoding=""): + "Load a truetype font file." + try: + return FreeTypeFont(filename, size, index, encoding) + except IOError: + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + filename = os.path.join(windir, "fonts", filename) + return FreeTypeFont(filename, size, index, encoding) + raise + +## +# Load font file. Same as load, but searches for a bitmap font along +# the Python path. +# +# @param filename Name of font file. +# @return A font object. +# @exception IOError If the file could not be read. +# @see #load + +def load_path(filename): + "Load a font file, searching along the Python path." + for dir in sys.path: + if Image.isDirectory(dir): + try: + return load(os.path.join(dir, filename)) + except IOError: + pass + raise IOError("cannot find font file") + +## +# Load a (probably rather ugly) default font. +# +# @return A font object. + +def load_default(): + "Load a default font." + from StringIO import StringIO + import base64 + f = ImageFont() + f._load_pilfont_data( + # courB08 + StringIO(base64.decodestring(''' +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +''')), Image.open(StringIO(base64.decodestring(''' +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +''')))) + return f + +if __name__ == "__main__": + # create font data chunk for embedding + import base64, os, sys + font = "../Images/courB08" + print " f._load_pilfont_data(" + print " # %s" % os.path.basename(font) + print " StringIO(base64.decodestring('''" + base64.encode(open(font + ".pil", "rb"), sys.stdout) + print "''')), Image.open(StringIO(base64.decodestring('''" + base64.encode(open(font + ".pbm", "rb"), sys.stdout) + print "'''))))" diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py new file mode 100755 index 00000000000..5c58b6ca918 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py @@ -0,0 +1,28 @@ +# +# The Python Imaging Library. +# $Id$ +# +# OpenGL pixmap/texture interface (requires imToolkit OpenGL extensions) +# +# History: +# 2003-09-13 fl Added +# +# Copyright (c) Secret Labs AB 2003. +# +# See the README file for information on usage and redistribution. +# + +## +# OpenGL pixmap/texture interface (requires imToolkit OpenGL +# extensions.) +## + +import _imaginggl + +## +# Texture factory. + +class TextureFactory: + pass # overwritten by the _imaginggl module + +from _imaginggl import * diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py new file mode 100755 index 00000000000..9bcd804d3a3 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py @@ -0,0 +1,71 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber (windows only) +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image + +## +# (New in 1.1.3) The ImageGrab module can be used to copy +# the contents of the screen to a PIL image memory. +#

    +# The current version works on Windows only.

    +# +# @since 1.1.3 +## + +try: + # built-in driver (1.1.3 and later) + grabber = Image.core.grabscreen +except AttributeError: + # stand-alone driver (pil plus) + import _grabscreen + grabber = _grabscreen.grab + +## +# (New in 1.1.3) Take a snapshot of the screen. The pixels inside the +# bounding box are returned as an "RGB" image. If the bounding box is +# omitted, the entire screen is copied. +# +# @param bbox What region to copy. Default is the entire screen. +# @return An image +# @since 1.1.3 + +def grab(bbox=None): + size, data = grabber() + im = Image.fromstring( + "RGB", size, data, + # RGB, 32-bit line padding, origo in lower left corner + "raw", "BGR", (size[0]*3 + 3) & -4, -1 + ) + if bbox: + im = im.crop(bbox) + return im + +## +# (New in 1.1.4) Take a snapshot of the clipboard image, if any. +# +# @return An image, a list of filenames, or None if the clipboard does +# not contain image data or filenames. Note that if a list is +# returned, the filenames may not represent image files. +# @since 1.1.4 + +def grabclipboard(): + debug = 0 # temporary interface + data = Image.core.grabclipboard(debug) + if Image.isStringType(data): + import BmpImagePlugin, StringIO + return BmpImagePlugin.DibImageFile(StringIO.StringIO(data)) + return data diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py new file mode 100755 index 00000000000..56c42a45a9d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py @@ -0,0 +1,207 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image +import _imagingmath + +VERBOSE = 0 + +def _isconstant(v): + return isinstance(v, type(0)) or isinstance(v, type(0.0)) + +class _Operand: + # wraps an image operand, providing standard operators + + def __init__(self, im): + self.im = im + + def __fixup(self, im1): + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + raise ValueError, "unsupported mode: %s" % im1.im.mode + else: + # argument was a constant + if _isconstant(im1) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply(self, op, im1, im2=None, mode=None): + im1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + try: + op = getattr(_imagingmath, op+"_"+im1.mode) + except AttributeError: + raise TypeError, "bad operand type for '%s'" % op + _imagingmath.unop(op, out.im.id, im1.im.id) + else: + # binary operation + im2 = self.__fixup(im2) + if im1.mode != im2.mode: + # convert both arguments to floating point + if im1.mode != "F": im1 = im1.convert("F") + if im2.mode != "F": im2 = im2.convert("F") + if im1.mode != im2.mode: + raise ValueError, "mode mismatch" + if im1.size != im2.size: + # crop both arguments to a common size + size = (min(im1.size[0], im2.size[0]), + min(im1.size[1], im2.size[1])) + if im1.size != size: im1 = im1.crop((0, 0) + size) + if im2.size != size: im2 = im2.crop((0, 0) + size) + out = Image.new(mode or im1.mode, size, None) + else: + out = Image.new(mode or im1.mode, im1.size, None) + im1.load(); im2.load() + try: + op = getattr(_imagingmath, op+"_"+im1.mode) + except AttributeError: + raise TypeError, "bad operand type for '%s'" % op + _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) + return _Operand(out) + + # unary operators + def __nonzero__(self): + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + def __abs__(self): + return self.apply("abs", self) + def __pos__(self): + return self + def __neg__(self): + return self.apply("neg", self) + + # binary operators + def __add__(self, other): + return self.apply("add", self, other) + def __radd__(self, other): + return self.apply("add", other, self) + def __sub__(self, other): + return self.apply("sub", self, other) + def __rsub__(self, other): + return self.apply("sub", other, self) + def __mul__(self, other): + return self.apply("mul", self, other) + def __rmul__(self, other): + return self.apply("mul", other, self) + def __div__(self, other): + return self.apply("div", self, other) + def __rdiv__(self, other): + return self.apply("div", other, self) + def __mod__(self, other): + return self.apply("mod", self, other) + def __rmod__(self, other): + return self.apply("mod", other, self) + def __pow__(self, other): + return self.apply("pow", self, other) + def __rpow__(self, other): + return self.apply("pow", other, self) + + # bitwise + def __invert__(self): + return self.apply("invert", self) + def __and__(self, other): + return self.apply("and", self, other) + def __rand__(self, other): + return self.apply("and", other, self) + def __or__(self, other): + return self.apply("or", self, other) + def __ror__(self, other): + return self.apply("or", other, self) + def __xor__(self, other): + return self.apply("xor", self, other) + def __rxor__(self, other): + return self.apply("xor", other, self) + def __lshift__(self, other): + return self.apply("lshift", self, other) + def __rshift__(self, other): + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other): + return self.apply("eq", self, other) + def __ne__(self, other): + return self.apply("ne", self, other) + def __lt__(self, other): + return self.apply("lt", self, other) + def __le__(self, other): + return self.apply("le", self, other) + def __gt__(self, other): + return self.apply("gt", self, other) + def __ge__(self, other): + return self.apply("ge", self, other) + +# conversions +def imagemath_int(self): + return _Operand(self.im.convert("I")) +def imagemath_float(self): + return _Operand(self.im.convert("F")) + +# logical +def imagemath_equal(self, other): + return self.apply("eq", self, other, mode="I") +def imagemath_notequal(self, other): + return self.apply("ne", self, other, mode="I") + +def imagemath_min(self, other): + return self.apply("min", self, other) +def imagemath_max(self, other): + return self.apply("max", self, other) + +def imagemath_convert(self, mode): + return _Operand(self.im.convert(mode)) + +ops = {} +for k, v in globals().items(): + if k[:10] == "imagemath_": + ops[k[10:]] = v + +## +# Evaluates an image expression. +# +# @param expression A string containing a Python-style expression. +# @keyparam options Values to add to the evaluation context. You +# can either use a dictionary, or one or more keyword arguments. +# @return The evaluated expression. This is usually an image object, +# but can also be an integer, a floating point value, or a pixel +# tuple, depending on the expression. + +def eval(expression, _dict={}, **kw): + + # build execution namespace + args = ops.copy() + args.update(_dict) + args.update(kw) + for k, v in args.items(): + if hasattr(v, "im"): + args[k] = _Operand(v) + + import __builtin__ + out =__builtin__.eval(expression, args) + try: + return out.im + except AttributeError: + return out diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py new file mode 100755 index 00000000000..1d5df1c6dca --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py @@ -0,0 +1,50 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# mode descriptor cache +_modes = {} + +## +# Wrapper for mode strings. + +class ModeDescriptor: + + def __init__(self, mode, bands, basemode, basetype): + self.mode = mode + self.bands = bands + self.basemode = basemode + self.basetype = basetype + + def __str__(self): + return self.mode + +## +# Gets a mode descriptor for the given mode. + +def getmode(mode): + if not _modes: + # initialize mode cache + import Image + # core modes + for m, (basemode, basetype, bands) in Image._MODEINFO.items(): + _modes[m] = ModeDescriptor(m, bands, basemode, basetype) + # extra experimental modes + _modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") + _modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") + # mapping modes + _modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L") + _modes["I;16L"] = ModeDescriptor("I;16L", "I", "L", "L") + _modes["I;16B"] = ModeDescriptor("I;16B", "I", "L", "L") + return _modes[mode] diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py new file mode 100755 index 00000000000..b51d78e258b --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py @@ -0,0 +1,439 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image +import operator + +## +# (New in 1.1.3) The ImageOps module contains a number of +# 'ready-made' image processing operations. This module is somewhat +# experimental, and most operators only work on L and RGB images. +# +# @since 1.1.3 +## + +# +# helpers + +def _border(border): + if type(border) is type(()): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + +def _color(color, mode): + if Image.isStringType(color): + import ImageColor + color = ImageColor.getcolor(color, mode) + return color + +def _lut(image, lut): + if image.mode == "P": + # FIXME: apply to lookup table, not image data + raise NotImplementedError("mode P support coming soon") + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + raise IOError, "not supported for this image mode" + +# +# actions + +## +# Maximize (normalize) image contrast. This function calculates a +# histogram of the input image, removes cutoff percent of the +# lightest and darkest pixels from the histogram, and remaps the image +# so that the darkest pixel becomes black (0), and the lightest +# becomes white (255). +# +# @param image The image to process. +# @param cutoff How many percent to cut off from the histogram. +# @param ignore The background pixel value (use None for no background). +# @return An image. + +def autocontrast(image, cutoff=0, ignore=None): + "Maximize image contrast, based on histogram" + histogram = image.histogram() + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer:layer+256] + if ignore is not None: + # get rid of outliers + try: + h[ignore] = 0 + except TypeError: + # assume sequence + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = n * cutoff / 100 + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] = h[lo] - cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the hi end + cut = n * cutoff / 100 + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] = h[hi] - cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(range(256)) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + +## +# Colorize grayscale image. The black and white +# arguments should be RGB tuples; this function calculates a colour +# wedge mapping all black pixels in the source image to the first +# colour, and all white pixels to the second colour. +# +# @param image The image to colourize. +# @param black The colour to use for black input pixels. +# @param white The colour to use for white input pixels. +# @return An image. + +def colorize(image, black, white): + "Colorize a grayscale image" + assert image.mode == "L" + black = _color(black, "RGB") + white = _color(white, "RGB") + red = []; green = []; blue = [] + for i in range(256): + red.append(black[0]+i*(white[0]-black[0])/255) + green.append(black[1]+i*(white[1]-black[1])/255) + blue.append(black[2]+i*(white[2]-black[2])/255) + image = image.convert("RGB") + return _lut(image, red + green + blue) + +## +# Remove border from image. The same amount of pixels are removed +# from all four sides. This function works on all image modes. +# +# @param image The image to crop. +# @param border The number of pixels to remove. +# @return An image. +# @see Image#Image.crop + +def crop(image, border=0): + "Crop border off image" + left, top, right, bottom = _border(border) + return image.crop( + (left, top, image.size[0]-right, image.size[1]-bottom) + ) + +## +# Deform the image. +# +# @param image The image to deform. +# @param deformer A deformer object. Any object that implements a +# getmesh method can be used. +# @param resample What resampling filter to use. +# @return An image. + +def deform(image, deformer, resample=Image.BILINEAR): + "Deform image using the given deformer" + return image.transform( + image.size, Image.MESH, deformer.getmesh(image), resample + ) + +## +# Equalize the image histogram. This function applies a non-linear +# mapping to the input image, in order to create a uniform +# distribution of grayscale values in the output image. +# +# @param image The image to equalize. +# @param mask An optional mask. If given, only the pixels selected by +# the mask are included in the analysis. +# @return An image. + +def equalize(image, mask=None): + "Equalize image histogram" + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = filter(None, h[b:b+256]) + if len(histo) <= 1: + lut.extend(range(256)) + else: + step = (reduce(operator.add, histo) - histo[-1]) / 255 + if not step: + lut.extend(range(256)) + else: + n = step / 2 + for i in range(256): + lut.append(n / step) + n = n + h[i+b] + return _lut(image, lut) + +## +# Add border to the image +# +# @param image The image to expand. +# @param border Border width, in pixels. +# @param fill Pixel fill value (a colour value). Default is 0 (black). +# @return An image. + +def expand(image, border=0, fill=0): + "Add border to image" + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + out = Image.new(image.mode, (width, height), _color(fill, image.mode)) + out.paste(image, (left, top)) + return out + +## +# Returns a sized and cropped version of the image, cropped to the +# requested aspect ratio and size. +#

    +# The fit function was contributed by Kevin Cazabon. +# +# @param size The requested output size in pixels, given as a +# (width, height) tuple. +# @param method What resampling method to use. Default is Image.NEAREST. +# @param bleed Remove a border around the outside of the image (from all +# four edges. The value is a decimal percentage (use 0.01 for one +# percent). The default value is 0 (no border). +# @param centering Control the cropping position. Use (0.5, 0.5) for +# center cropping (e.g. if cropping the width, take 50% off of the +# left side, and therefore 50% off the right side). (0.0, 0.0) +# will crop from the top left corner (i.e. if cropping the width, +# take all of the crop off of the right side, and if cropping the +# height, take all of it off the bottom). (1.0, 0.0) will crop +# from the bottom left corner, etc. (i.e. if cropping the width, +# take all of the crop off the left side, and if cropping the height +# take none from the top, and therefore all off the bottom). +# @return An image. + +def fit(image, size, method=Image.NEAREST, bleed=0.0, centering=(0.5, 0.5)): + """ + This method returns a sized and cropped version of the image, + cropped to the aspect ratio and size that you request. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # http://www.cazabon.com + + # ensure inputs are valid + if type(centering) != type([]): + centering = [centering[0], centering[1]] + + if centering[0] > 1.0 or centering[0] < 0.0: + centering [0] = 0.50 + if centering[1] > 1.0 or centering[1] < 0.0: + centering[1] = 0.50 + + if bleed > 0.49999 or bleed < 0.0: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleedPixels = ( + int((float(bleed) * float(image.size[0])) + 0.5), + int((float(bleed) * float(image.size[1])) + 0.5) + ) + + liveArea = ( + bleedPixels[0], bleedPixels[1], image.size[0] - bleedPixels[0] - 1, + image.size[1] - bleedPixels[1] - 1 + ) + + liveSize = (liveArea[2] - liveArea[0], liveArea[3] - liveArea[1]) + + # calculate the aspect ratio of the liveArea + liveAreaAspectRatio = float(liveSize[0])/float(liveSize[1]) + + # calculate the aspect ratio of the output image + aspectRatio = float(size[0]) / float(size[1]) + + # figure out if the sides or top/bottom will be cropped off + if liveAreaAspectRatio >= aspectRatio: + # liveArea is wider than what's needed, crop the sides + cropWidth = int((aspectRatio * float(liveSize[1])) + 0.5) + cropHeight = liveSize[1] + else: + # liveArea is taller than what's needed, crop the top and bottom + cropWidth = liveSize[0] + cropHeight = int((float(liveSize[0])/aspectRatio) + 0.5) + + # make the crop + leftSide = int(liveArea[0] + (float(liveSize[0]-cropWidth) * centering[0])) + if leftSide < 0: + leftSide = 0 + topSide = int(liveArea[1] + (float(liveSize[1]-cropHeight) * centering[1])) + if topSide < 0: + topSide = 0 + + out = image.crop( + (leftSide, topSide, leftSide + cropWidth, topSide + cropHeight) + ) + + # resize the image and return it + return out.resize(size, method) + +## +# Flip the image vertically (top to bottom). +# +# @param image The image to flip. +# @return An image. + +def flip(image): + "Flip image vertically" + return image.transpose(Image.FLIP_TOP_BOTTOM) + +## +# Convert the image to grayscale. +# +# @param image The image to convert. +# @return An image. + +def grayscale(image): + "Convert to grayscale" + return image.convert("L") + +## +# Invert (negate) the image. +# +# @param image The image to invert. +# @return An image. + +def invert(image): + "Invert image (negate)" + lut = [] + for i in range(256): + lut.append(255-i) + return _lut(image, lut) + +## +# Flip image horizontally (left to right). +# +# @param image The image to mirror. +# @return An image. + +def mirror(image): + "Flip image horizontally" + return image.transpose(Image.FLIP_LEFT_RIGHT) + +## +# Reduce the number of bits for each colour channel. +# +# @param image The image to posterize. +# @param bits The number of bits to keep for each channel (1-8). +# @return An image. + +def posterize(image, bits): + "Reduce the number of bits per color channel" + lut = [] + mask = ~(2**(8-bits)-1) + for i in range(256): + lut.append(i & mask) + return _lut(image, lut) + +## +# Invert all pixel values above a threshold. +# +# @param image The image to posterize. +# @param threshold All pixels above this greyscale level are inverted. +# @return An image. + +def solarize(image, threshold=128): + "Invert all values above threshold" + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255-i) + return _lut(image, lut) + +# -------------------------------------------------------------------- +# PIL USM components, from Kevin Cazabon. + +def gaussian_blur(im, radius=None): + """ PIL_usm.gblur(im, [radius])""" + + if radius is None: + radius = 5.0 + + im.load() + + return im.im.gaussian_blur(radius) + +gblur = gaussian_blur + +def unsharp_mask(im, radius=None, percent=None, threshold=None): + """ PIL_usm.usm(im, [radius, percent, threshold])""" + + if radius is None: + radius = 5.0 + if percent is None: + percent = 150 + if threshold is None: + threshold = 3 + + im.load() + + return im.im.unsharp_mask(radius, percent, threshold) + +usm = unsharp_mask diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py new file mode 100755 index 00000000000..6efee299891 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py @@ -0,0 +1,184 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import array +import Image, ImageColor + +## +# Colour palette wrapper for palette mapped images. + +class ImagePalette: + "Colour palette for palette mapped images" + + def __init__(self, mode = "RGB", palette = None): + self.mode = mode + self.rawmode = None # if set, palette contains raw data + self.palette = palette or range(256)*len(self.mode) + self.colors = {} + self.dirty = None + if len(self.mode)*256 != len(self.palette): + raise ValueError, "wrong palette size" + + def getdata(self): + # experimental: get palette contents in format suitable + # for the low-level im.putpalette primitive + if self.rawmode: + return self.rawmode, self.palette + return self.mode + ";L", self.tostring() + + def tostring(self): + # experimental: convert palette to string + if self.rawmode: + raise ValueError("palette contains raw palette data") + if Image.isStringType(self.palette): + return self.palette + return array.array("B", self.palette).tostring() + + def getcolor(self, color): + # experimental: given an rgb tuple, allocate palette entry + if self.rawmode: + raise ValueError("palette contains raw palette data") + if Image.isTupleType(color): + try: + return self.colors[color] + except KeyError: + # allocate new color slot + if Image.isStringType(self.palette): + self.palette = map(int, self.palette) + index = len(self.colors) + if index >= 256: + raise ValueError("cannot allocate more than 256 colors") + self.colors[color] = index + self.palette[index] = color[0] + self.palette[index+256] = color[1] + self.palette[index+512] = color[2] + self.dirty = 1 + return index + else: + raise ValueError("unknown color specifier: %r" % color) + + def save(self, fp): + # (experimental) save palette to text file + if self.rawmode: + raise ValueError("palette contains raw palette data") + if type(fp) == type(""): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write("# Mode: %s\n" % self.mode) + for i in range(256): + fp.write("%d" % i) + for j in range(i, len(self.palette), 256): + fp.write(" %d" % self.palette[j]) + fp.write("\n") + fp.close() + +# -------------------------------------------------------------------- +# Internal + +def raw(rawmode, data): + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + +# -------------------------------------------------------------------- +# Factories + +def _make_linear_lut(black, white): + lut = [] + if black == 0: + for i in range(256): + lut.append(white*i/255) + else: + raise NotImplementedError # FIXME + return lut + +def _make_gamma_lut(exp, mode="RGB"): + lut = [] + for i in range(256): + lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) + return lut + +def new(mode, data): + return Image.core.new_palette(mode, data) + +def negative(mode="RGB"): + palette = range(256) + palette.reverse() + return ImagePalette(mode, palette * len(mode)) + +def random(mode="RGB"): + from random import randint + palette = [] + for i in range(256*len(mode)): + palette.append(randint(0, 255)) + return ImagePalette(mode, palette) + +def sepia(white="#fff0c0"): + r, g, b = ImageColor.getrgb(white) + r = _make_linear_lut(0, r) + g = _make_linear_lut(0, g) + b = _make_linear_lut(0, b) + return ImagePalette("RGB", r + g + b) + +def wedge(mode="RGB"): + return ImagePalette(mode, range(256) * len(mode)) + +def load(filename): + + # FIXME: supports GIMP gradients only + + fp = open(filename, "rb") + + lut = None + + if not lut: + try: + import GimpPaletteFile + fp.seek(0) + p = GimpPaletteFile.GimpPaletteFile(fp) + lut = p.getpalette() + except (SyntaxError, ValueError): + pass + + if not lut: + try: + import GimpGradientFile + fp.seek(0) + p = GimpGradientFile.GimpGradientFile(fp) + lut = p.getpalette() + except (SyntaxError, ValueError): + pass + + if not lut: + try: + import PaletteFile + fp.seek(0) + p = PaletteFile.PaletteFile(fp) + lut = p.getpalette() + except (SyntaxError, ValueError): + pass + + if not lut: + raise IOError, "cannot load palette" + + return lut # data, rawmode + + +# add some psuedocolour palettes as well diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py new file mode 100755 index 00000000000..721fd944998 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py @@ -0,0 +1,71 @@ +# +# The Python Imaging Library +# $Id$ +# +# path interface +# +# History: +# 1996-11-04 fl Created +# 2002-04-14 fl Added documentation stub class +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +import Image + +## +# Path wrapper. + +class Path: + + ## + # Creates a path object. + # + # @param xy Sequence. The sequence can contain 2-tuples [(x, y), ...] + # or a flat list of numbers [x, y, ...]. + + def __init__(self, xy): + pass + + ## + # Compacts the path, by removing points that are close to each + # other. This method modifies the path in place. + + def compact(self, distance=2): + pass + + ## + # Gets the bounding box. + + def getbbox(self): + pass + + ## + # Maps the path through a function. + + def map(self, function): + pass + + ## + # Converts the path to Python list. + # + # @param flat By default, this function returns a list of 2-tuples + # [(x, y), ...]. If this argument is true, it returns a flat + # list [x, y, ...] instead. + # @return A list of coordinates. + + def tolist(self, flat=0): + pass + + ## + # Transforms the path. + + def transform(self, matrix): + pass + + +# override with C implementation +Path = Image.core.path diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py new file mode 100755 index 00000000000..50ee07d6c12 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py @@ -0,0 +1,84 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a simple Qt image interface. +# +# history: +# 2006-06-03 fl: created +# 2006-06-04 fl: inherit from QImage instead of wrapping it +# 2006-06-05 fl: removed toimage helper; move string support to ImageQt +# +# Copyright (c) 2006 by Secret Labs AB +# Copyright (c) 2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image + +from PyQt4.QtGui import QImage, qRgb + +## +# (Internal) Turns an RGB color into a Qt compatible color integer. + +def rgb(r, g, b): + # use qRgb to pack the colors, and then turn the resulting long + # into a negative integer with the same bitpattern. + return (qRgb(r, g, b) & 0xffffff) - 0x1000000 + +## +# An PIL image wrapper for Qt. This is a subclass of PyQt4's QImage +# class. +# +# @param im A PIL Image object, or a file name (given either as Python +# string or a PyQt string object). + +class ImageQt(QImage): + + def __init__(self, im): + + data = None + colortable = None + + # handle filename, if given instead of image name + if hasattr(im, "toUtf8"): + # FIXME - is this really the best way to do this? + im = unicode(im.toUtf8(), "utf-8") + if Image.isStringType(im): + im = Image.open(im) + + if im.mode == "1": + format = QImage.Format_Mono + elif im.mode == "L": + format = QImage.Format_Indexed8 + colortable = [] + for i in range(256): + colortable.append(rgb(i, i, i)) + elif im.mode == "P": + format = QImage.Format_Indexed8 + colortable = [] + palette = im.getpalette() + for i in range(0, len(palette), 3): + colortable.append(rgb(*palette[i:i+3])) + elif im.mode == "RGB": + data = im.tostring("raw", "BGRX") + format = QImage.Format_RGB32 + elif im.mode == "RGBA": + try: + data = im.tostring("raw", "BGRA") + except SystemError: + # workaround for earlier versions + r, g, b, a = im.split() + im = Image.merge("RGBA", (b, g, r, a)) + format = QImage.Format_ARGB32 + else: + raise ValueError("unsupported image mode %r" % im.mode) + + # must keep a reference, or Qt will crash! + self.__data = data or im.tostring() + + QImage.__init__(self, self.__data, im.size[0], im.size[1], format) + + if colortable: + self.setColorTable(colortable) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py new file mode 100755 index 00000000000..e94ca0b1ebc --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py @@ -0,0 +1,38 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# This class implements an iterator object that can be used to loop +# over an image sequence. + +class Iterator: + + ## + # Create an iterator. + # + # @param im An image object. + + def __init__(self, im): + if not hasattr(im, "seek"): + raise AttributeError("im must have seek method") + self.im = im + + def __getitem__(self, ix): + try: + if ix: + self.im.seek(ix) + return self.im + except EOFError: + raise IndexError # end of sequence diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py new file mode 100755 index 00000000000..05270f440f2 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py @@ -0,0 +1,163 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# + +import Image +import os, sys + +_viewers = [] + +def register(viewer, order=1): + try: + if issubclass(viewer, Viewer): + viewer = viewer() + except TypeError: + pass # raised if viewer wasn't a class + if order > 0: + _viewers.append(viewer) + elif order < 0: + _viewers.insert(0, viewer) + +## +# Displays a given image. +# +# @param image An image object. +# @param title Optional title. Not all viewers can display the title. +# @param **options Additional viewer options. +# @return True if a suitable viewer was found, false otherwise. + +def show(image, title=None, **options): + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return 1 + return 0 + +## +# Base class for viewers. + +class Viewer: + + # main api + + def show(self, image, **options): + + # save temporary image to disk + if image.mode[:4] == "I;16": + # @PIL88 @PIL101 + # "I;16" isn't an 'official' mode, but we still want to + # provide a simple way to show 16-bit images. + base = "L" + # FIXME: auto-contrast if max() > 255? + else: + base = Image.getmodebase(image.mode) + if base != image.mode and image.mode != "1": + image = image.convert(base) + + self.show_image(image, **options) + + # hook methods + + format = None + + def get_format(self, image): + # return format name, or None to save as PGM/PPM + return self.format + + def get_command(self, file, **options): + raise NotImplementedError + + def save_image(self, image): + # save to temporary file, and return filename + return image._dump(format=self.get_format(image)) + + def show_image(self, image, **options): + # display given image + return self.show_file(self.save_image(image), **options) + + def show_file(self, file, **options): + # display given file + os.system(self.get_command(file, **options)) + return 1 + +# -------------------------------------------------------------------- + +if sys.platform == "win32": + + class WindowsViewer(Viewer): + format = "BMP" + def get_command(self, file, **options): + return "start /wait %s && del /f %s" % (file, file) + + register(WindowsViewer) + +elif sys.platform == "darwin": + + class MacViewer(Viewer): + format = "BMP" + def get_command(self, file, **options): + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a /Applications/Preview.app" + command = "(%s %s; sleep 20; rm -f %s)&" % (command, file, file) + return command + + register(MacViewer) + +else: + + # unixoids + + def which(executable): + path = os.environ.get("PATH") + if not path: + return None + for dirname in path.split(os.pathsep): + filename = os.path.join(dirname, executable) + if os.path.isfile(filename): + # FIXME: make sure it's executable + return filename + return None + + class UnixViewer(Viewer): + def show_file(self, file, **options): + command, executable = self.get_command_ex(file, **options) + command = "(%s %s; rm -f %s)&" % (command, file, file) + os.system(command) + return 1 + + # implementations + + class DisplayViewer(UnixViewer): + def get_command_ex(self, file, **options): + command = executable = "display" + return command, executable + + if which("display"): + register(DisplayViewer) + + class XVViewer(UnixViewer): + def get_command_ex(self, file, title=None, **options): + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + # FIXME: do full escaping + command = command + " -name \"%s\"" % title + return command, executable + + if which("xv"): + register(XVViewer) + +if __name__ == "__main__": + # usage: python ImageShow.py imagefile [title] + print show(Image.open(sys.argv[1]), *sys.argv[2:]) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py new file mode 100755 index 00000000000..9ebdab03018 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py @@ -0,0 +1,164 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# + +import Image +import operator, math + +## +# The ImageStat module calculates global statistics for an +# image, or a region of an image. +## + +## +# Calculate statistics for the given image. If a mask is included, +# only the regions covered by that mask are included in the +# statistics. + +class Stat: + "Get image or feature statistics" + + ## + # Create a statistics object. + # + # @def __init__(image, mask=None) + # @param image A PIL image, or a precalculate histogram. + # @param mask An optional mask. + + def __init__(self, image_or_list, mask = None): + try: + if mask: + self.h = image_or_list.histogram(mask) + else: + self.h = image_or_list.histogram() + except AttributeError: + self.h = image_or_list # assume it to be a histogram list + if type(self.h) != type([]): + raise TypeError, "first argument must be image or list" + self.bands = range(len(self.h) / 256) + + def __getattr__(self, id): + "Calculate missing attribute" + if id[:4] == "_get": + raise AttributeError, id + # calculate missing attribute + v = getattr(self, "_get" + id)() + setattr(self, id, v) + return v + + def _getextrema(self): + "Get min/max values for each band in the image" + + def minmax(histogram): + n = 255 + x = 0 + for i in range(256): + if histogram[i]: + n = min(n, i) + x = max(x, i) + return n, x # returns (255, 0) if there's no data in the histogram + + v = [] + for i in range(0, len(self.h), 256): + v.append(minmax(self.h[i:])) + return v + + def _getcount(self): + "Get total number of pixels in each layer" + + v = [] + for i in range(0, len(self.h), 256): + v.append(reduce(operator.add, self.h[i:i+256])) + return v + + def _getsum(self): + "Get sum of all pixels in each layer" + + v = [] + for i in range(0, len(self.h), 256): + sum = 0.0 + for j in range(256): + sum = sum + j * self.h[i+j] + v.append(sum) + return v + + def _getsum2(self): + "Get squared sum of all pixels in each layer" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 = sum2 + (j ** 2) * float(self.h[i+j]) + v.append(sum2) + return v + + def _getmean(self): + "Get average pixel level for each layer" + + v = [] + for i in self.bands: + v.append(self.sum[i] / self.count[i]) + return v + + def _getmedian(self): + "Get median pixel level for each layer" + + v = [] + for i in self.bands: + s = 0 + l = self.count[i]/2 + b = i * 256 + for j in range(256): + s = s + self.h[b+j] + if s > l: + break + v.append(j) + return v + + def _getrms(self): + "Get RMS for each layer" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.sum2[i] / self.count[i])) + return v + + + def _getvar(self): + "Get variance for each layer" + + v = [] + for i in self.bands: + n = self.count[i] + v.append((self.sum2[i]-(self.sum[i]**2.0)/n)/n) + return v + + def _getstddev(self): + "Get standard deviation for each layer" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.var[i])) + return v + +Global = Stat # compatibility diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py new file mode 100755 index 00000000000..8618139a538 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py @@ -0,0 +1,296 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Tkinter, Image + +## +# The ImageTk module contains support to create and modify +# Tkinter BitmapImage and PhotoImage objects. +#

    +# For examples, see the demo programs in the Scripts +# directory. +## + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + +_pilbitmap_ok = None + +def _pilbitmap_check(): + global _pilbitmap_ok + if _pilbitmap_ok is None: + try: + im = Image.new("1", (1,1)) + Tkinter.BitmapImage(data="PIL:%d" % im.im.id) + _pilbitmap_ok = 1 + except Tkinter.TclError: + _pilbitmap_ok = 0 + return _pilbitmap_ok + +# -------------------------------------------------------------------- +# PhotoImage + +## +# Creates a Tkinter-compatible photo image. This can be used +# everywhere Tkinter expects an image object. If the image is an RGBA +# image, pixels having alpha 0 are treated as transparent. + +class PhotoImage: + + ## + # Create a photo image object. The constructor takes either + # a PIL image, or a mode and a size. Alternatively, you can + # use the file or data options to initialize + # the photo image object. + #

    + # @def __init__(image=None, size=None, **options) + # @param image Either a PIL image, or a mode string. If a + # mode string is used, a size must also be given. + # @param size If the first argument is a mode string, this + # defines the size of the image. + # @keyparam file A filename to load the image from (using + # Image.open(file)). + # @keyparam data An 8-bit string containing image data (as + # loaded from an image file). + + def __init__(self, image=None, size=None, **kw): + + # Tk compatibility: file or data + if image is None: + if kw.has_key("file"): + image = Image.open(kw["file"]) + del kw["file"] + elif kw.has_key("data"): + from StringIO import StringIO + image = Image.open(StringIO(kw["data"])) + del kw["data"] + + if hasattr(image, "mode") and hasattr(image, "size"): + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.load() + try: + mode = image.palette.mode + except AttributeError: + mode = "RGB" # default + size = image.size + kw["width"], kw["height"] = size + else: + mode = image + image = None + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = apply(Tkinter.PhotoImage, (), kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except: + pass # ignore internal errors + + ## + # Get the Tkinter photo image identifier. This method is + # automatically called by Tkinter whenever a PhotoImage object is + # passed to a Tkinter method. + # + # @return A Tkinter photo image identifier (a string). + + def __str__(self): + return str(self.__photo) + + ## + # Get the width of the image. + # + # @return The width, in pixels. + + def width(self): + return self.__size[0] + + ## + # Get the height of the image. + # + # @return The height, in pixels. + + def height(self): + return self.__size[1] + + ## + # Paste a PIL image into the photo image. Note that this can + # be very slow if the photo image is displayed. + # + # @param im A PIL image. The size must match the target region. + # If the mode does not match, the image is converted to the + # mode of the bitmap image. + # @param box A 4-tuple defining the left, upper, right, and + # lower pixel coordinate. If None is given instead of a + # tuple, all of the image is assumed. + + def paste(self, im, box=None): + + # convert to blittable + im.load() + image = im.im + if image.isblock() and im.mode == self.__mode: + block = image + else: + block = image.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + + tk = self.__photo.tk + + try: + tk.call("PyImagingPhoto", self.__photo, block.id) + except Tkinter.TclError, v: + # activate Tkinter hook + try: + import _imagingtk + try: + _imagingtk.tkinit(tk.interpaddr(), 1) + except AttributeError: + _imagingtk.tkinit(id(tk), 0) + tk.call("PyImagingPhoto", self.__photo, block.id) + except (ImportError, AttributeError, Tkinter.TclError): + raise # configuration problem; cannot attach to Tkinter + +# -------------------------------------------------------------------- +# BitmapImage + +## +# Create a Tkinter-compatible bitmap image. This can be used +# everywhere Tkinter expects an image object. + +class BitmapImage: + + ## + # Create a Tkinter-compatible bitmap image. + #

    + # The given image must have mode "1". Pixels having value 0 are + # treated as transparent. Options, if any, are passed on to + # Tkinter. The most commonly used option is foreground, + # which is used to specify the colour for the non-transparent + # parts. See the Tkinter documentation for information on how to + # specify colours. + # + # @def __init__(image=None, **options) + # @param image A PIL image. + + def __init__(self, image=None, **kw): + + # Tk compatibility: file or data + if image is None: + if kw.has_key("file"): + image = Image.open(kw["file"]) + del kw["file"] + elif kw.has_key("data"): + from StringIO import StringIO + image = Image.open(StringIO(kw["data"])) + del kw["data"] + + self.__mode = image.mode + self.__size = image.size + + if _pilbitmap_check(): + # fast way (requires the pilbitmap booster patch) + image.load() + kw["data"] = "PIL:%d" % image.im.id + self.__im = image # must keep a reference + else: + # slow but safe way + kw["data"] = image.tobitmap() + self.__photo = apply(Tkinter.BitmapImage, (), kw) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except: + pass # ignore internal errors + + ## + # Get the width of the image. + # + # @return The width, in pixels. + + def width(self): + return self.__size[0] + + ## + # Get the height of the image. + # + # @return The height, in pixels. + + def height(self): + return self.__size[1] + + ## + # Get the Tkinter bitmap image identifier. This method is + # automatically called by Tkinter whenever a BitmapImage object + # is passed to a Tkinter method. + # + # @return A Tkinter bitmap image identifier (a string). + + def __str__(self): + return str(self.__photo) + +## +# Copies the contents of a PhotoImage to a PIL image memory. + +def getimage(photo): + photo.tk.call("PyImagingPhotoGet", photo) + +# -------------------------------------------------------------------- +# Helper for the Image.show method. + +def _show(image, title): + + class UI(Tkinter.Label): + def __init__(self, master, im): + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + Tkinter.Label.__init__(self, master, image=self.image, + bg="black", bd=0) + + if not Tkinter._default_root: + raise IOError, "tkinter not initialized" + top = Tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py new file mode 100755 index 00000000000..cc323d3b990 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py @@ -0,0 +1,95 @@ +# +# The Python Imaging Library. +# $Id$ +# +# transform wrappers +# +# History: +# 2002-04-08 fl Created +# +# Copyright (c) 2002 by Secret Labs AB +# Copyright (c) 2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import Image + +class Transform(Image.ImageTransformHandler): + def __init__(self, data): + self.data = data + def getdata(self): + return self.method, self.data + def transform(self, size, image, **options): + # can be overridden + method, data = self.getdata() + return image.transform(size, method, data, **options) + +## +# Define an affine image transform. +#

    +# This function takes a 6-tuple (a, b, c, d, e, f) which +# contain the first two rows from an affine transform matrix. For +# each pixel (x, y) in the output image, the new value is +# taken from a position (a x + b y + c, +# d x + e y + f) in the input image, rounded to +# nearest pixel. +#

    +# This function can be used to scale, translate, rotate, and shear the +# original image. +# +# @def AffineTransform(matrix) +# @param matrix A 6-tuple (a, b, c, d, e, f) containing +# the first two rows from an affine transform matrix. +# @see Image#Image.transform + +class AffineTransform(Transform): + method = Image.AFFINE + +## +# Define a transform to extract a subregion from an image. +#

    +# Maps a rectangle (defined by two corners) from the image to a +# rectangle of the given size. The resulting image will contain +# data sampled from between the corners, such that (x0, y0) +# in the input image will end up at (0,0) in the output image, +# and (x1, y1) at size. +#

    +# This method can be used to crop, stretch, shrink, or mirror an +# arbitrary rectangle in the current image. It is slightly slower than +# crop, but about as fast as a corresponding resize +# operation. +# +# @def ExtentTransform(bbox) +# @param bbox A 4-tuple (x0, y0, x1, y1) which specifies +# two points in the input image's coordinate system. +# @see Image#Image.transform + +class ExtentTransform(Transform): + method = Image.EXTENT + +## +# Define an quad image transform. +#

    +# Maps a quadrilateral (a region defined by four corners) from the +# image to a rectangle of the given size. +# +# @def QuadTransform(xy) +# @param xy An 8-tuple (x0, y0, x1, y1, x2, y2, y3, y3) which +# contain the upper left, lower left, lower right, and upper right +# corner of the source quadrilateral. +# @see Image#Image.transform + +class QuadTransform(Transform): + method = Image.QUAD + +## +# Define an mesh image transform. A mesh transform consists of one +# or more individual quad transforms. +# +# @def MeshTransform(data) +# @param data A list of (bbox, quad) tuples. +# @see Image#Image.transform + +class MeshTransform(Transform): + method = Image.MESH diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py new file mode 100755 index 00000000000..f98725f74ac --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py @@ -0,0 +1,215 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Windows DIB display interface +# +# History: +# 1996-05-20 fl Created +# 1996-09-20 fl Fixed subregion exposure +# 1997-09-21 fl Added draw primitive (for tzPrint) +# 2003-05-21 fl Added experimental Window/ImageWindow classes +# 2003-09-05 fl Added fromstring/tostring methods +# +# Copyright (c) Secret Labs AB 1997-2003. +# Copyright (c) Fredrik Lundh 1996-2003. +# +# See the README file for information on usage and redistribution. +# + +import Image + +## +# The ImageWin module contains support to create and display +# images under Windows 95/98, NT, 2000 and later. + +class HDC: + def __init__(self, dc): + self.dc = dc + def __int__(self): + return self.dc + +class HWND: + def __init__(self, wnd): + self.wnd = wnd + def __int__(self): + return self.wnd + +## +# Create a Windows bitmap with the given mode and size. The mode can +# be one of "1", "L", "P", or "RGB". +# +# If the display requires a palette, this constructor creates a +# suitable palette and associates it with the image. For an "L" image, +# 128 greylevels are allocated. For an "RGB" image, a 6x6x6 colour +# cube is used, together with 20 greylevels. +# +# To make sure that palettes work properly under Windows, you must +# call the palette method upon certain events from Windows. + +class Dib: + + ## + # Create Windows bitmap. + # + # @param image Either a PIL image, or a mode string. If a + # mode string is used, a size must also be given. The + # mode can be one of "1", "L", "P", or "RGB". + # @param size If the first argument is a mode string, this + # defines the size of the image. + + def __init__(self, image, size=None): + if hasattr(image, "mode") and hasattr(image, "size"): + mode = image.mode + size = image.size + else: + mode = image + image = None + if mode not in ["1", "L", "P", "RGB"]: + mode = Image.getmodebase(mode) + self.image = Image.core.display(mode, size) + self.mode = mode + self.size = size + if image: + self.paste(image) + + ## + # Copy the bitmap contents to a device context. + # + # @param handle Device context (HDC), cast to a Python integer, + # or a HDC or HWND instance. In PythonWin, you can use the + # GetHandleAttrib method of the CDC class to get + # a suitable handle. + + def expose(self, handle): + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.expose(dc) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.expose(handle) + return result + + def draw(self, handle, dst, src=None): + if not src: + src = (0,0) + self.size + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.draw(handle, dst, src) + return result + + ## + # Installs the palette associated with the image in the + # given device context. + #

    + # This method should be called upon QUERYNEWPALETTE + # and PALETTECHANGED events from Windows. If this + # method returns a non-zero value, one or more display + # palette entries were changed, and the image should be + # redrawn. + # + # @param handle Device context (HDC), cast to a Python integer, + # or an HDC or HWND instance. + # @return A true value if one or more entries were changed + # (this indicates that the image should be redrawn). + + def query_palette(self, handle): + if isinstance(handle, HWND): + handle = self.image.getdc(handle) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle) + return result + + ## + # Paste a PIL image into the bitmap image. + # + # @param im A PIL image. The size must match the target region. + # If the mode does not match, the image is converted to the + # mode of the bitmap image. + # @param box A 4-tuple defining the left, upper, right, and + # lower pixel coordinate. If None is given instead of a + # tuple, all of the image is assumed. + + def paste(self, im, box=None): + im.load() + if self.mode != im.mode: + im = im.convert(self.mode) + if box: + self.image.paste(im.im, box) + else: + self.image.paste(im.im) + + ## + # Load display memory contents from string buffer. + # + # @param buffer A string buffer containing display data (usually + # data returned from tostring) + + def fromstring(self, buffer): + return self.image.fromstring(buffer) + + ## + # Copy display memory contents to string buffer. + # + # @return A string buffer containing display data. + + def tostring(self): + return self.image.tostring() + + +## +# Create a Window with the given title size. + +class Window: + + def __init__(self, title="PIL", width=None, height=None): + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action, *args): + return apply(getattr(self, "ui_handle_" + action), args) + + def ui_handle_clear(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_damage(self, x0, y0, x1, y1): + pass + + def ui_handle_destroy(self): + pass + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_resize(self, width, height): + pass + + def mainloop(self): + Image.core.eventloop() + +## +# Create an image window which displays the given image. + +class ImageWindow(Window): + + def __init__(self, image, title="PIL"): + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + Window.__init__(self, title, width=width, height=height) + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py new file mode 100755 index 00000000000..bf5611b8a63 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py @@ -0,0 +1,93 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IM Tools support for PIL +# +# history: +# 1996-05-27 fl Created (read 8-bit images only) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.2" + +import re + +import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(r"([a-z]*) ([^ \r\n]*)") + +## +# Image plugin for IM Tools images. + +class ImtImageFile(ImageFile.ImageFile): + + format = "IMT" + format_description = "IM Tools" + + def _open(self): + + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + if not "\n" in self.fp.read(100): + raise SyntaxError, "not an IM file" + self.fp.seek(0) + + xsize = ysize = 0 + + while 1: + + s = self.fp.read(1) + if not s: + break + + if s == chr(12): + + # image data begins + self.tile = [("raw", (0,0)+self.size, + self.fp.tell(), + (self.mode, 0, 1))] + + break + + else: + + # read key/value pair + # FIXME: dangerous, may read whole file + s = s + self.fp.readline() + if len(s) == 1 or len(s) > 100: + break + if s[0] == "*": + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1,2) + if k == "width": + xsize = int(v) + self.size = xsize, ysize + elif k == "height": + ysize = int(v) + self.size = xsize, ysize + elif k == "pixel" and v == "n8": + self.mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open("IMT", ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py new file mode 100755 index 00000000000..acea5d18b40 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py @@ -0,0 +1,288 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.3" + + +import Image, ImageFile +import os, tempfile + + +COMPRESSION = { + 1: "raw", + 5: "jpeg" +} + +PAD = chr(0) * 4 + +# +# Helpers + +def i16(c): + return ord(c[1]) + (ord(c[0])<<8) + +def i32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) + +def i(c): + return i32((PAD + c)[-4:]) + +def dump(c): + for i in c: + print "%02x" % ord(i), + print + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + +class IptcImageFile(ImageFile.ImageFile): + + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key): + return i(self.info[key]) + + def field(self): + # + # get a IPTC field header + s = self.fp.read(5) + if not len(s): + return None, 0 + + tag = ord(s[1]), ord(s[2]) + + # syntax + if ord(s[0]) != 0x1C or tag[0] < 1 or tag[0] > 9: + raise SyntaxError, "invalid IPTC/NAA file" + + # field size + size = ord(s[3]) + if size > 132: + raise IOError, "illegal field length in IPTC/NAA file" + elif size == 128: + size = 0 + elif size > 128: + size = i(self.fp.read(size-128)) + else: + size = i16(s[3:]) + + return tag, size + + def _is_raw(self, offset, size): + # + # check if the file can be mapped + + # DISABLED: the following only slows things down... + return 0 + + self.fp.seek(offset) + t, sz = self.field() + if sz != size[0]: + return 0 + y = 1 + while 1: + self.fp.seek(sz, 1) + t, s = self.field() + if t != (8, 10): + break + if s != sz: + return 0 + y = y + 1 + return y == size[1] + + def _open(self): + + # load descriptive fields + while 1: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8,10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info.keys(): + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # print tag, self.info[tag] + + # mode + layers = ord(self.info[(3,60)][0]) + component = ord(self.info[(3,60)][1]) + if self.info.has_key((3,65)): + id = ord(self.info[(3,65)][0])-1 + else: + id = 0 + if layers == 1 and not component: + self.mode = "L" + elif layers == 3 and component: + self.mode = "RGB"[id] + elif layers == 4 and component: + self.mode = "CMYK"[id] + + # size + self.size = self.getint((3,20)), self.getint((3,30)) + + # compression + try: + compression = COMPRESSION[self.getint((3,120))] + except KeyError: + raise IOError, "Unknown IPTC image compression" + + # tile + if tag == (8,10): + if compression == "raw" and self._is_raw(offset, self.size): + self.tile = [(compression, (offset, size + 5, -1), + (0, 0, self.size[0], self.size[1]))] + else: + self.tile = [("iptc", (compression, offset), + (0, 0, self.size[0], self.size[1]))] + + def load(self): + + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + type, tile, box = self.tile[0] + + encoding, offset = tile + + self.fp.seek(offset) + + # Copy image data to temporary file + outfile = tempfile.mktemp() + o = open(outfile, "wb") + if encoding == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write("P5\n%d %d\n255\n" % self.size) + while 1: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size = size - len(s) + o.close() + + try: + try: + # fast + self.im = Image.core.open_ppm(outfile) + except: + # slightly slower + im = Image.open(outfile) + im.load() + self.im = im.im + finally: + try: os.unlink(outfile) + except: pass + + +Image.register_open("IPTC", IptcImageFile) + +Image.register_extension("IPTC", ".iim") + +## +# Get IPTC information from TIFF, JPEG, or IPTC file. +# +# @param im An image containing IPTC data. +# @return A dictionary containing IPTC information, or None if +# no IPTC information block was found. + +def getiptcinfo(im): + + import TiffImagePlugin, JpegImagePlugin + import StringIO + + data = None + + if isinstance(im, IptcImageFile): + # return info dictionary right away + return im.info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + try: + app = im.app["APP13"] + if app[:14] == "Photoshop 3.0\x00": + app = app[14:] + # parse the image resource block + offset = 0 + while app[offset:offset+4] == "8BIM": + offset = offset + 4 + # resource code + code = JpegImagePlugin.i16(app, offset) + offset = offset + 2 + # resource name (usually empty) + name_len = ord(app[offset]) + name = app[offset+1:offset+1+name_len] + offset = 1 + offset + name_len + if offset & 1: + offset = offset + 1 + # resource data block + size = JpegImagePlugin.i32(app, offset) + offset = offset + 4 + if code == 0x0404: + # 0x0404 contains IPTC/NAA data + data = app[offset:offset+size] + break + offset = offset + size + if offset & 1: + offset = offset + 1 + except (AttributeError, KeyError): + pass + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + type, data = im.tag.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except (AttributeError, KeyError): + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + im = FakeImage() + im.__class__ = IptcImageFile + + # parse the IPTC information chunk + im.info = {} + im.fp = StringIO.StringIO(data) + + try: + im._open() + except (IndexError, KeyError): + pass # expected failure + + return im.info diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py new file mode 100755 index 00000000000..933abf3c244 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py @@ -0,0 +1,492 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.6" + +import array, struct +import string +import Image, ImageFile + +def i16(c,o=0): + return ord(c[o+1]) + (ord(c[o])<<8) + +def i32(c,o=0): + return ord(c[o+3]) + (ord(c[o+2])<<8) + (ord(c[o+1])<<16) + (ord(c[o])<<24) + +# +# Parser + +def Skip(self, marker): + n = i16(self.fp.read(2))-2 + ImageFile._safe_read(self.fp, n) + +def APP(self, marker): + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + + app = "APP%d" % (marker&15) + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == "JFIF": + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = ord(s[7]) + jfif_density = i16(s, 8), i16(s, 10) + except: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:5] == "Exif\0": + # extract Exif information (incomplete) + self.info["exif"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:5] == "FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == "ICC_PROFILE\0": + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFEE and s[:5] == "Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = ord(s[1]) + except: + pass + else: + self.info["adobe_transform"] = adobe_transform + +def COM(self, marker): + # + # Comment marker. Store these in the APP dictionary. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + +def SOF(self, marker): + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + self.size = i16(s[3:]), i16(s[1:]) + + self.bits = ord(s[0]) + if self.bits != 8: + raise SyntaxError("cannot handle %d-bit layers" % self.bits) + + self.layers = ord(s[5]) + if self.layers == 1: + self.mode = "L" + elif self.layers == 3: + self.mode = "RGB" + elif self.layers == 4: + self.mode = "CMYK" + else: + raise SyntaxError("cannot handle %d-layer images" % self.layers) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if ord(self.icclist[0][13]) == len(self.icclist): + profile = [] + for p in self.icclist: + profile.append(p[14:]) + icc_profile = string.join(profile, "") + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = None + + for i in range(6, len(s), 3): + t = s[i:i+3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], ord(t[1])/16, ord(t[1])&15, ord(t[2]))) + +def DQT(self, marker): + # + # Define quantization table. Support baseline 8-bit tables + # only. Note that there might be more than one table in + # each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + if len(s) < 65: + raise SyntaxError("bad quantization table marker") + v = ord(s[0]) + if v/16 == 0: + self.quantization[v&15] = array.array("b", s[1:65]) + s = s[65:] + else: + return # FIXME: add code to read 16-bit tables! + # raise SyntaxError, "bad quantization table element size" + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM) +} + + +def _accept(prefix): + return prefix[0] == "\377" + +## +# Image plugin for JPEG and JFIF images. + +class JpegImageFile(ImageFile.ImageFile): + + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self): + + s = self.fp.read(1) + + if ord(s[0]) != 255: + raise SyntaxError("not a JPEG file") + + # Create attributes + self.bits = self.layers = 0 + + # JPEG specifics (internal) + self.layer = [] + self.huffman_dc = {} + self.huffman_ac = {} + self.quantization = {} + self.app = {} # compatibility + self.applist = [] + self.icclist = [] + + while 1: + + s = s + self.fp.read(1) + + i = i16(s) + + if MARKER.has_key(i): + name, description, handler = MARKER[i] + # print hex(i), name, description + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [("jpeg", (0,0) + self.size, 0, (rawmode, ""))] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i == 0 or i == 65535: + # padded marker or junk; move on + s = "\xff" + else: + raise SyntaxError("no marker found") + + def draft(self, mode, size): + + if len(self.tile) != 1: + return + + d, e, o, a = self.tile[0] + scale = 0 + + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self.mode = mode + a = mode, "" + + if size: + scale = max(self.size[0] / size[0], self.size[1] / size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + e = e[0], e[1], (e[2]-e[0]+s-1)/s+e[0], (e[3]-e[1]+s-1)/s+e[1] + self.size = ((self.size[0]+s-1)/s, (self.size[1]+s-1)/s) + scale = s + + self.tile = [(d, e, o, a)] + self.decoderconfig = (scale, 1) + + return self + + def load_djpeg(self): + + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + import tempfile, os + file = tempfile.mktemp() + os.system("djpeg %s >%s" % (self.filename, file)) + + try: + self.im = Image.core.open_ppm(file) + finally: + try: os.unlink(file) + except: pass + + self.mode = self.im.mode + self.size = self.im.size + + self.tile = [] + + def _getexif(self): + # Extract EXIF information. This method is highly experimental, + # and is likely to be replaced with something better in a future + # version. + import TiffImagePlugin, StringIO + def fixup(value): + if len(value) == 1: + return value[0] + return value + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + try: + data = self.info["exif"] + except KeyError: + return None + file = StringIO.StringIO(data[6:]) + head = file.read(8) + exif = {} + # process dictionary + info = TiffImagePlugin.ImageFileDirectory(head) + info.load(file) + for key, value in info.items(): + exif[key] = fixup(value) + # get exif extension + try: + file.seek(exif[0x8769]) + except KeyError: + pass + else: + info = TiffImagePlugin.ImageFileDirectory(head) + info.load(file) + for key, value in info.items(): + exif[key] = fixup(value) + # get gpsinfo extension + try: + file.seek(exif[0x8825]) + except KeyError: + pass + else: + info = TiffImagePlugin.ImageFileDirectory(head) + info.load(file) + exif[0x8825] = gps = {} + for key, value in info.items(): + gps[key] = fixup(value) + return exif + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBA": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +def _save(im, fp, filename): + + try: + rawmode = RAWMODE[im.mode] + except KeyError: + raise IOError("cannot write mode %s as JPEG" % im.mode) + + info = im.encoderinfo + + dpi = info.get("dpi", (0, 0)) + + subsampling = info.get("subsampling", -1) + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:1:1": + subsampling = 2 + + extra = "" + + icc_profile = info.get("icc_profile") + if icc_profile: + ICC_OVERHEAD_LEN = 14 + MAX_BYTES_IN_MARKER = 65533 + MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN + markers = [] + while icc_profile: + markers.append(icc_profile[:MAX_DATA_BYTES_IN_MARKER]) + icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:] + i = 1 + for marker in markers: + size = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker)) + extra = extra + ("\xFF\xE2" + size + "ICC_PROFILE\0" + chr(i) + chr(len(markers)) + marker) + i = i + 1 + + # get keyword arguments + im.encoderconfig = ( + info.get("quality", 0), + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + info.has_key("progressive") or info.has_key("progression"), + info.get("smooth", 0), + info.has_key("optimize"), + info.get("streamtype", 0), + dpi[0], dpi[1], + subsampling, + extra, + ) + + ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)]) + +def _save_cjpeg(im, fp, filename): + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + import os + file = im._dump() + os.system("cjpeg %s >%s" % (file, filename)) + try: os.unlink(file) + except: pass + +# -------------------------------------------------------------------q- +# Registry stuff + +Image.register_open("JPEG", JpegImageFile, _accept) +Image.register_save("JPEG", _save) + +Image.register_extension("JPEG", ".jfif") +Image.register_extension("JPEG", ".jpe") +Image.register_extension("JPEG", ".jpg") +Image.register_extension("JPEG", ".jpeg") + +Image.register_mime("JPEG", "image/jpeg") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py new file mode 100755 index 00000000000..62ee52cf8ff --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py @@ -0,0 +1,70 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Basic McIdas support for PIL +# +# History: +# 1997-05-05 fl Created (8-bit images only) +# 2009-03-08 fl Added 16/32-bit support. +# +# Thanks to Richard Jones and Craig Swank for specs and samples. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.2" + +import struct +import Image, ImageFile + +def _accept(s): + return s[:8] == "\x00\x00\x00\x00\x00\x00\x00\x04" + +## +# Image plugin for McIdas area images. + +class McIdasImageFile(ImageFile.ImageFile): + + format = "MCIDAS" + format_description = "McIdas area file" + + def _open(self): + + # parse area file directory + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + raise SyntaxError("not an McIdas area file") + + self.area_descriptor_raw = s + self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + # FIXME: add memory map support + mode = "I"; rawmode = "I;16B" + elif w[11] == 4: + # FIXME: add memory map support + mode = "I"; rawmode = "I;32B" + else: + raise SyntaxError("unsupported McIdas format") + + self.mode = mode + self.size = w[10], w[9] + + offset = w[34] + w[15] + stride = w[15] + w[10]*w[11]*w[14] + + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] + +# -------------------------------------------------------------------- +# registry + +Image.register_open("MCIDAS", McIdasImageFile, _accept) + +# no default extension diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py new file mode 100755 index 00000000000..b1a3bba79f7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py @@ -0,0 +1,95 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Microsoft Image Composer support for PIL +# +# Notes: +# uses TiffImagePlugin.py to read the actual image streams +# +# History: +# 97-01-20 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.1" + + +import Image, TiffImagePlugin +from OleFileIO import * + + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == MAGIC + +## +# Image plugin for Microsoft's Image Composer file format. + +class MicImageFile(TiffImagePlugin.TiffImageFile): + + format = "MIC" + format_description = "Microsoft Image Composer" + + def _open(self): + + # read the OLE directory and see if this is a likely + # to be a Microsoft Image Composer file + + try: + self.ole = OleFileIO(self.fp) + except IOError: + raise SyntaxError, "not an MIC file; invalid OLE file" + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [] + for file in self.ole.listdir(): + if file[1:] and file[0][-4:] == ".ACI" and file[1] == "Image": + self.images.append(file) + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + raise SyntaxError, "not an MIC file; no image entries" + + self.__fp = self.fp + self.frame = 0 + + if len(self.images) > 1: + self.category = Image.CONTAINER + + self.seek(0) + + def seek(self, frame): + + try: + filename = self.images[frame] + except IndexError: + raise EOFError, "no such frame" + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self): + + return self.frame + +# +# -------------------------------------------------------------------- + +Image.register_open("MIC", MicImageFile, _accept) + +Image.register_extension("MIC", ".mic") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py new file mode 100755 index 00000000000..c02edee8267 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py @@ -0,0 +1,82 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPEG file handling +# +# History: +# 95-09-09 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.1" + +import Image, ImageFile + +# +# Bitstream parser + +class BitStream: + + def __init__(self, fp): + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self): + return ord(self.fp.read(1)) + + def peek(self, bits): + while self.bits < bits: + c = self.next() + if c < 0: + self.bits = 0 + continue + self.bitbuffer = (self.bitbuffer << 8) + c + self.bits = self.bits + 8 + return self.bitbuffer >> (self.bits - bits) & (1L << bits) - 1 + + def skip(self, bits): + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + ord(self.fp.read(1)) + self.bits = self.bits + 8 + self.bits = self.bits - bits + + def read(self, bits): + v = self.peek(bits) + self.bits = self.bits - bits + return v + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + +class MpegImageFile(ImageFile.ImageFile): + + format = "MPEG" + format_description = "MPEG" + + def _open(self): + + s = BitStream(self.fp) + + if s.read(32) != 0x1B3: + raise SyntaxError, "not an MPEG file" + + self.mode = "RGB" + self.size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open("MPEG", MpegImageFile) + +Image.register_extension("MPEG", ".mpg") +Image.register_extension("MPEG", ".mpeg") + +Image.register_mime("MPEG", "video/mpeg") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py new file mode 100755 index 00000000000..9dac36b47b7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MSP file handling +# +# This is the format used by the Paint program in Windows 1 and 2. +# +# History: +# 95-09-05 fl Created +# 97-01-03 fl Read/write MSP images +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.1" + +import Image, ImageFile + + +# +# read MSP files + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def _accept(prefix): + return prefix[:4] in ["DanM", "LinS"] + +## +# Image plugin for Windows MSP images. This plugin supports both +# uncompressed (Windows 1.0). + +class MspImageFile(ImageFile.ImageFile): + + format = "MSP" + format_description = "Windows Paint" + + def _open(self): + + # Header + s = self.fp.read(32) + if s[:4] not in ["DanM", "LinS"]: + raise SyntaxError, "not an MSP file" + + # Header checksum + sum = 0 + for i in range(0, 32, 2): + sum = sum ^ i16(s[i:i+2]) + if sum != 0: + raise SyntaxError, "bad MSP checksum" + + self.mode = "1" + self.size = i16(s[4:]), i16(s[6:]) + + if s[:4] == "DanM": + self.tile = [("raw", (0,0)+self.size, 32, ("1", 0, 1))] + else: + self.tile = [("msp", (0,0)+self.size, 32+2*self.size[1], None)] + +# +# write MSP files (uncompressed only) + +def o16(i): + return chr(i&255) + chr(i>>8&255) + +def _save(im, fp, filename): + + if im.mode != "1": + raise IOError, "cannot write mode %s as MSP" % im.mode + + # create MSP header + header = [0] * 16 + + header[0], header[1] = i16("Da"), i16("nM") # version 1 + header[2], header[3] = im.size + header[4], header[5] = 1, 1 + header[6], header[7] = 1, 1 + header[8], header[9] = im.size + + sum = 0 + for h in header: + sum = sum ^ h + header[12] = sum # FIXME: is this the right field? + + # header + for h in header: + fp.write(o16(h)) + + # image body + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 32, ("1", 0, 1))]) + +# +# registry + +Image.register_open("MSP", MspImageFile, _accept) +Image.register_save("MSP", _save) + +Image.register_extension("MSP", ".msp") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py new file mode 100755 index 00000000000..36e598a9be3 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py @@ -0,0 +1,528 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# stuff to deal with OLE2 Structured Storage files. this module is +# used by PIL to read Image Composer and FlashPix files, but can also +# be used to read other files of this type. +# +# History: +# 1997-01-20 fl Created +# 1997-01-22 fl Fixed 64-bit portability quirk +# 2003-09-09 fl Fixed typo in OleFileIO.loadfat (noted by Daniel Haertle) +# 2004-02-29 fl Changed long hex constants to signed integers +# +# Notes: +# FIXME: sort out sign problem (eliminate long hex constants) +# FIXME: change filename to use "a/b/c" instead of ["a", "b", "c"] +# FIXME: provide a glob mechanism function (using fnmatchcase) +# +# Literature: +# +# "FlashPix Format Specification, Appendix A", Kodak and Microsoft, +# September 1996. +# +# Quotes: +# +# "If this document and functionality of the Software conflict, +# the actual functionality of the Software represents the correct +# functionality" -- Microsoft, in the OLE format specification +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +import string, StringIO + + +def i16(c, o = 0): + return ord(c[o])+(ord(c[o+1])<<8) + +def i32(c, o = 0): + return ord(c[o])+(ord(c[o+1])<<8)+(ord(c[o+2])<<16)+(ord(c[o+3])<<24) + + +MAGIC = '\320\317\021\340\241\261\032\341' + +# +# -------------------------------------------------------------------- +# property types + +VT_EMPTY=0; VT_NULL=1; VT_I2=2; VT_I4=3; VT_R4=4; VT_R8=5; VT_CY=6; +VT_DATE=7; VT_BSTR=8; VT_DISPATCH=9; VT_ERROR=10; VT_BOOL=11; +VT_VARIANT=12; VT_UNKNOWN=13; VT_DECIMAL=14; VT_I1=16; VT_UI1=17; +VT_UI2=18; VT_UI4=19; VT_I8=20; VT_UI8=21; VT_INT=22; VT_UINT=23; +VT_VOID=24; VT_HRESULT=25; VT_PTR=26; VT_SAFEARRAY=27; VT_CARRAY=28; +VT_USERDEFINED=29; VT_LPSTR=30; VT_LPWSTR=31; VT_FILETIME=64; +VT_BLOB=65; VT_STREAM=66; VT_STORAGE=67; VT_STREAMED_OBJECT=68; +VT_STORED_OBJECT=69; VT_BLOB_OBJECT=70; VT_CF=71; VT_CLSID=72; +VT_VECTOR=0x1000; + +# map property id to name (for debugging purposes) + +VT = {} +for k, v in vars().items(): + if k[:3] == "VT_": + VT[v] = k + +# +# -------------------------------------------------------------------- +# Some common document types (root.clsid fields) + +WORD_CLSID = "00020900-0000-0000-C000-000000000046" + + +# +# -------------------------------------------------------------------- + +class _OleStream(StringIO.StringIO): + + """OLE2 Stream + + Returns a read-only file object which can be used to read + the contents of a OLE stream. To open a stream, use the + openstream method in the OleFile class. + + This function can be used with either ordinary streams, + or ministreams, depending on the offset, sectorsize, and + fat table arguments. + """ + + # FIXME: should store the list of sects obtained by following + # the fat chain, and load new sectors on demand instead of + # loading it all in one go. + + def __init__(self, fp, sect, size, offset, sectorsize, fat): + + data = [] + + while sect != -2: # 0xFFFFFFFEL: + fp.seek(offset + sectorsize * sect) + data.append(fp.read(sectorsize)) + sect = fat[sect] + + data = string.join(data, "") + + # print len(data), size + + StringIO.StringIO.__init__(self, data[:size]) + +# +# -------------------------------------------------------------------- + +# FIXME: should add a counter in here to avoid looping forever +# if the tree is broken. + +class _OleDirectoryEntry: + + """OLE2 Directory Entry + + Encapsulates a stream directory entry. Note that the + constructor builds a tree of all subentries, so we only + have to call it with the root object. + """ + + def __init__(self, sidlist, sid): + + # store directory parameters. the caller provides + # a complete list of directory entries, as read from + # the directory stream. + + name, type, sect, size, sids, clsid = sidlist[sid] + + self.sid = sid + self.name = name + self.type = type # 1=storage 2=stream + self.sect = sect + self.size = size + self.clsid = clsid + + # process child nodes, if any + + self.kids = [] + + sid = sidlist[sid][4][2] + + if sid != -1: + + # the directory entries are organized as a red-black tree. + # the following piece of code does an ordered traversal of + # such a tree (at least that's what I hope ;-) + + stack = [self.sid] + + # start at leftmost position + + left, right, child = sidlist[sid][4] + + while left != -1: # 0xFFFFFFFFL: + stack.append(sid) + sid = left + left, right, child = sidlist[sid][4] + + while sid != self.sid: + + self.kids.append(_OleDirectoryEntry(sidlist, sid)) + + # try to move right + left, right, child = sidlist[sid][4] + if right != -1: # 0xFFFFFFFFL: + # and then back to the left + sid = right + while 1: + left, right, child = sidlist[sid][4] + if left == -1: # 0xFFFFFFFFL: + break + stack.append(sid) + sid = left + else: + # couldn't move right; move up instead + while 1: + ptr = stack[-1] + del stack[-1] + left, right, child = sidlist[ptr][4] + if right != sid: + break + sid = right + left, right, child = sidlist[sid][4] + if right != ptr: + sid = ptr + + # in the OLE file, entries are sorted on (length, name). + # for convenience, we sort them on name instead. + + self.kids.sort() + + def __cmp__(self, other): + "Compare entries by name" + + return cmp(self.name, other.name) + + def dump(self, tab = 0): + "Dump this entry, and all its subentries (for debug purposes only)" + + TYPES = ["(invalid)", "(storage)", "(stream)", "(lockbytes)", + "(property)", "(root)"] + + print " "*tab + repr(self.name), TYPES[self.type], + if self.type in (2, 5): + print self.size, "bytes", + print + if self.type in (1, 5) and self.clsid: + print " "*tab + "{%s}" % self.clsid + + for kid in self.kids: + kid.dump(tab + 2) + +# +# -------------------------------------------------------------------- + +## +# This class encapsulates the interface to an OLE 2 structured +# storage file. Use the {@link listdir} and {@link openstream} +# methods to access the contents of this file. + +class OleFileIO: + """OLE container object + + This class encapsulates the interface to an OLE 2 structured + storage file. Use the listdir and openstream methods to access + the contents of this file. + + Object names are given as a list of strings, one for each subentry + level. The root entry should be omitted. For example, the following + code extracts all image streams from a Microsoft Image Composer file: + + ole = OleFileIO("fan.mic") + + for entry in ole.listdir(): + if entry[1:2] == "Image": + fin = ole.openstream(entry) + fout = open(entry[0:1], "wb") + while 1: + s = fin.read(8192) + if not s: + break + fout.write(s) + + You can use the viewer application provided with the Python Imaging + Library to view the resulting files (which happens to be standard + TIFF files). + """ + + def __init__(self, filename = None): + + if filename: + self.open(filename) + + ## + # Open an OLE2 file. + + def open(self, filename): + """Open an OLE2 file""" + + if type(filename) == type(""): + self.fp = open(filename, "rb") + else: + self.fp = filename + + header = self.fp.read(512) + + if len(header) != 512 or header[:8] != MAGIC: + raise IOError, "not an OLE2 structured storage file" + + # file clsid (probably never used, so we don't store it) + clsid = self._clsid(header[8:24]) + + # FIXME: could check version and byte order fields + + self.sectorsize = 1 << i16(header, 30) + self.minisectorsize = 1 << i16(header, 32) + + self.minisectorcutoff = i32(header, 56) + + # Load file allocation tables + self.loadfat(header) + + # Load direcory. This sets both the sidlist (ordered by id) + # and the root (ordered by hierarchy) members. + self.loaddirectory(i32(header, 48)) + + self.ministream = None + self.minifatsect = i32(header, 60) + + def loadfat(self, header): + # Load the FAT table. The header contains a sector numbers + # for the first 109 FAT sectors. Additional sectors are + # described by DIF blocks (FIXME: not yet implemented) + + sect = header[76:512] + fat = [] + for i in range(0, len(sect), 4): + ix = i32(sect, i) + if ix == -2 or ix == -1: # ix == 0xFFFFFFFEL or ix == 0xFFFFFFFFL: + break + s = self.getsect(ix) + fat = fat + map(lambda i, s=s: i32(s, i), range(0, len(s), 4)) + self.fat = fat + + def loadminifat(self): + # Load the MINIFAT table. This is stored in a standard sub- + # stream, pointed to by a header field. + + s = self._open(self.minifatsect).read() + + self.minifat = map(lambda i, s=s: i32(s, i), range(0, len(s), 4)) + + def getsect(self, sect): + # Read given sector + + self.fp.seek(512 + self.sectorsize * sect) + return self.fp.read(self.sectorsize) + + def _unicode(self, s): + # Map unicode string to Latin 1 + + # FIXME: some day, Python will provide an official way to handle + # Unicode strings, but until then, this will have to do... + return filter(ord, s) + + def loaddirectory(self, sect): + # Load the directory. The directory is stored in a standard + # substream, independent of its size. + + # read directory stream + fp = self._open(sect) + + # create list of sid entries + self.sidlist = [] + while 1: + entry = fp.read(128) + if not entry: + break + type = ord(entry[66]) + name = self._unicode(entry[0:0+i16(entry, 64)]) + ptrs = i32(entry, 68), i32(entry, 72), i32(entry, 76) + sect, size = i32(entry, 116), i32(entry, 120) + clsid = self._clsid(entry[80:96]) + self.sidlist.append((name, type, sect, size, ptrs, clsid)) + + # create hierarchical list of directory entries + self.root = _OleDirectoryEntry(self.sidlist, 0) + + def dumpdirectory(self): + # Dump directory (for debugging only) + + self.root.dump() + + def _clsid(self, clsid): + if clsid == "\0" * len(clsid): + return "" + return (("%08X-%04X-%04X-%02X%02X-" + "%02X" * 6) % + ((i32(clsid, 0), i16(clsid, 4), i16(clsid, 6)) + + tuple(map(ord, clsid[8:16])))) + + def _list(self, files, prefix, node): + # listdir helper + + prefix = prefix + [node.name] + for entry in node.kids: + if entry.kids: + self._list(files, prefix, entry) + else: + files.append(prefix[1:] + [entry.name]) + + def _find(self, filename): + # openstream helper + + node = self.root + for name in filename: + for kid in node.kids: + if kid.name == name: + break + else: + raise IOError, "file not found" + node = kid + return node.sid + + def _open(self, start, size = 0x7FFFFFFF): + # openstream helper. + + if size < self.minisectorcutoff: + # ministream object + if not self.ministream: + self.loadminifat() + self.ministream = self._open(self.sidlist[0][2]) + return _OleStream(self.ministream, start, size, 0, + self.minisectorsize, self.minifat) + + # standard stream + return _OleStream(self.fp, start, size, 512, + self.sectorsize, self.fat) + + ## + # Returns a list of streams stored in this file. + + def listdir(self): + """Return a list of streams stored in this file""" + + files = [] + self._list(files, [], self.root) + return files + + ## + # Opens a stream as a read-only file object. + + def openstream(self, filename): + """Open a stream as a read-only file object""" + + slot = self._find(filename) + name, type, sect, size, sids, clsid = self.sidlist[slot] + if type != 2: + raise IOError, "this file is not a stream" + return self._open(sect, size) + + ## + # Gets a list of properties described in substream. + + def getproperties(self, filename): + """Return properties described in substream""" + + fp = self.openstream(filename) + + data = {} + + # header + s = fp.read(28) + clsid = self._clsid(s[8:24]) + + # format id + s = fp.read(20) + fmtid = self._clsid(s[:16]) + fp.seek(i32(s, 16)) + + # get section + s = "****" + fp.read(i32(fp.read(4))-4) + + for i in range(i32(s, 4)): + + id = i32(s, 8+i*8) + offset = i32(s, 12+i*8) + type = i32(s, offset) + + # test for common types first (should perhaps use + # a dictionary instead?) + + if type == VT_I2: + value = i16(s, offset+4) + if value >= 32768: + value = value - 65536 + elif type == VT_UI2: + value = i16(s, offset+4) + elif type in (VT_I4, VT_ERROR): + value = i32(s, offset+4) + elif type == VT_UI4: + value = i32(s, offset+4) # FIXME + elif type in (VT_BSTR, VT_LPSTR): + count = i32(s, offset+4) + value = s[offset+8:offset+8+count-1] + elif type == VT_BLOB: + count = i32(s, offset+4) + value = s[offset+8:offset+8+count] + elif type == VT_LPWSTR: + count = i32(s, offset+4) + value = self._unicode(s[offset+8:offset+8+count*2]) + elif type == VT_FILETIME: + value = long(i32(s, offset+4)) + (long(i32(s, offset+8))<<32) + # FIXME: this is a 64-bit int: "number of 100ns periods + # since Jan 1,1601". Should map this to Python time + value = value / 10000000L # seconds + elif type == VT_UI1: + value = ord(s[offset+4]) + elif type == VT_CLSID: + value = self._clsid(s[offset+4:offset+20]) + elif type == VT_CF: + count = i32(s, offset+4) + value = s[offset+8:offset+8+count] + else: + value = None # everything else yields "None" + + # FIXME: add support for VT_VECTOR + + #print "%08x" % id, repr(value), + #print "(%s)" % VT[i32(s, offset) & 0xFFF] + + data[id] = value + + return data + +# +# -------------------------------------------------------------------- +# This script can be used to dump the directory of any OLE2 structured +# storage file. + +if __name__ == "__main__": + + import sys + + for file in sys.argv[1:]: + try: + ole = OleFileIO(file) + print "-" * 68 + print file + print "-" * 68 + ole.dumpdirectory() + for file in ole.listdir(): + if file[-1][0] == "\005": + print file + props = ole.getproperties(file) + props = props.items() + props.sort() + for k, v in props: + print " ", k, v + except IOError, v: + print "***", "cannot read", file, "-", v diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py new file mode 100755 index 00000000000..7309e17b3e2 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py @@ -0,0 +1,199 @@ +# +# The Python Imaging Library +# $Id$ +# +# simple postscript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import EpsImagePlugin +import string + +## +# Simple Postscript graphics interface. + +class PSDraw: + + def __init__(self, fp=None): + if not fp: + import sys + fp = sys.stdout + self.fp = fp + + def begin_document(self, id = None): + "Write Postscript DSC header" + # FIXME: incomplete + self.fp.write("%!PS-Adobe-3.0\n" + "save\n" + "/showpage { } def\n" + "%%EndComments\n" + "%%BeginDocument\n") + #self.fp.write(ERROR_PS) # debugging! + self.fp.write(EDROFF_PS) + self.fp.write(VDI_PS) + self.fp.write("%%EndProlog\n") + self.isofont = {} + + def end_document(self): + "Write Postscript DSC footer" + self.fp.write("%%EndDocument\n" + "restore showpage\n" + "%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font, size): + if not self.isofont.has_key(font): + # reencode font + self.fp.write("/PSDraw-%s ISOLatin1Encoding /%s E\n" %\ + (font, font)) + self.isofont[font] = 1 + # rough + self.fp.write("/F0 %d /PSDraw-%s F\n" % (size, font)) + + def setink(self, ink): + print "*** NOT YET IMPLEMENTED ***" + + def line(self, xy0, xy1): + xy = xy0 + xy1 + self.fp.write("%d %d %d %d Vl\n" % xy) + + def rectangle(self, box): + self.fp.write("%d %d M %d %d 0 Vr\n" % box) + + def text(self, xy, text): + text = string.joinfields(string.splitfields(text, "("), "\\(") + text = string.joinfields(string.splitfields(text, ")"), "\\)") + xy = xy + (text,) + self.fp.write("%d %d M (%s) S\n" % xy) + + def image(self, box, im, dpi = None): + "Write an PIL image" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # greyscale + # image size (on paper) + x = float(im.size[0] * 72) / dpi + y = float(im.size[1] * 72) / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x; x = xmax + if y > ymax: + x = x * ymax / y; y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self.fp.write("gsave\n%f %f translate\n" % (dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self.fp.write("%f %f scale\n" % (sx, sy)) + EpsImagePlugin._save(im, self.fp, None, 0) + self.fp.write("\ngrestore\n") + +# -------------------------------------------------------------------- +# Postscript driver + +# +# EDROFF.PS -- Postscript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +EDROFF_PS = """\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- Postscript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = """\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup neg 0 exch rlineto + exch neg 0 rlineto + 0 exch rlineto + 100 div setgray fill 0 setgray } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = """\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py new file mode 100755 index 00000000000..3bbd9132778 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py @@ -0,0 +1,55 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read simple, teragon-style palette files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +import string + +## +# File handler for Teragon-style palette files. + +class PaletteFile: + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = map(lambda i: (i, i, i), range(256)) + + while 1: + + s = fp.readline() + + if not s: + break + if s[0] == "#": + continue + if len(s) > 100: + raise SyntaxError, "bad palette file" + + v = map(int, string.split(s)) + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + self.palette[i] = chr(r) + chr(g) + chr(b) + + self.palette = string.join(self.palette, "") + + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py new file mode 100755 index 00000000000..78502313007 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py @@ -0,0 +1,225 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## + +__version__ = "1.0" + +import Image, ImageFile + +_Palm8BitColormapValues = ( + ( 255, 255, 255 ), ( 255, 204, 255 ), ( 255, 153, 255 ), ( 255, 102, 255 ), + ( 255, 51, 255 ), ( 255, 0, 255 ), ( 255, 255, 204 ), ( 255, 204, 204 ), + ( 255, 153, 204 ), ( 255, 102, 204 ), ( 255, 51, 204 ), ( 255, 0, 204 ), + ( 255, 255, 153 ), ( 255, 204, 153 ), ( 255, 153, 153 ), ( 255, 102, 153 ), + ( 255, 51, 153 ), ( 255, 0, 153 ), ( 204, 255, 255 ), ( 204, 204, 255 ), + ( 204, 153, 255 ), ( 204, 102, 255 ), ( 204, 51, 255 ), ( 204, 0, 255 ), + ( 204, 255, 204 ), ( 204, 204, 204 ), ( 204, 153, 204 ), ( 204, 102, 204 ), + ( 204, 51, 204 ), ( 204, 0, 204 ), ( 204, 255, 153 ), ( 204, 204, 153 ), + ( 204, 153, 153 ), ( 204, 102, 153 ), ( 204, 51, 153 ), ( 204, 0, 153 ), + ( 153, 255, 255 ), ( 153, 204, 255 ), ( 153, 153, 255 ), ( 153, 102, 255 ), + ( 153, 51, 255 ), ( 153, 0, 255 ), ( 153, 255, 204 ), ( 153, 204, 204 ), + ( 153, 153, 204 ), ( 153, 102, 204 ), ( 153, 51, 204 ), ( 153, 0, 204 ), + ( 153, 255, 153 ), ( 153, 204, 153 ), ( 153, 153, 153 ), ( 153, 102, 153 ), + ( 153, 51, 153 ), ( 153, 0, 153 ), ( 102, 255, 255 ), ( 102, 204, 255 ), + ( 102, 153, 255 ), ( 102, 102, 255 ), ( 102, 51, 255 ), ( 102, 0, 255 ), + ( 102, 255, 204 ), ( 102, 204, 204 ), ( 102, 153, 204 ), ( 102, 102, 204 ), + ( 102, 51, 204 ), ( 102, 0, 204 ), ( 102, 255, 153 ), ( 102, 204, 153 ), + ( 102, 153, 153 ), ( 102, 102, 153 ), ( 102, 51, 153 ), ( 102, 0, 153 ), + ( 51, 255, 255 ), ( 51, 204, 255 ), ( 51, 153, 255 ), ( 51, 102, 255 ), + ( 51, 51, 255 ), ( 51, 0, 255 ), ( 51, 255, 204 ), ( 51, 204, 204 ), + ( 51, 153, 204 ), ( 51, 102, 204 ), ( 51, 51, 204 ), ( 51, 0, 204 ), + ( 51, 255, 153 ), ( 51, 204, 153 ), ( 51, 153, 153 ), ( 51, 102, 153 ), + ( 51, 51, 153 ), ( 51, 0, 153 ), ( 0, 255, 255 ), ( 0, 204, 255 ), + ( 0, 153, 255 ), ( 0, 102, 255 ), ( 0, 51, 255 ), ( 0, 0, 255 ), + ( 0, 255, 204 ), ( 0, 204, 204 ), ( 0, 153, 204 ), ( 0, 102, 204 ), + ( 0, 51, 204 ), ( 0, 0, 204 ), ( 0, 255, 153 ), ( 0, 204, 153 ), + ( 0, 153, 153 ), ( 0, 102, 153 ), ( 0, 51, 153 ), ( 0, 0, 153 ), + ( 255, 255, 102 ), ( 255, 204, 102 ), ( 255, 153, 102 ), ( 255, 102, 102 ), + ( 255, 51, 102 ), ( 255, 0, 102 ), ( 255, 255, 51 ), ( 255, 204, 51 ), + ( 255, 153, 51 ), ( 255, 102, 51 ), ( 255, 51, 51 ), ( 255, 0, 51 ), + ( 255, 255, 0 ), ( 255, 204, 0 ), ( 255, 153, 0 ), ( 255, 102, 0 ), + ( 255, 51, 0 ), ( 255, 0, 0 ), ( 204, 255, 102 ), ( 204, 204, 102 ), + ( 204, 153, 102 ), ( 204, 102, 102 ), ( 204, 51, 102 ), ( 204, 0, 102 ), + ( 204, 255, 51 ), ( 204, 204, 51 ), ( 204, 153, 51 ), ( 204, 102, 51 ), + ( 204, 51, 51 ), ( 204, 0, 51 ), ( 204, 255, 0 ), ( 204, 204, 0 ), + ( 204, 153, 0 ), ( 204, 102, 0 ), ( 204, 51, 0 ), ( 204, 0, 0 ), + ( 153, 255, 102 ), ( 153, 204, 102 ), ( 153, 153, 102 ), ( 153, 102, 102 ), + ( 153, 51, 102 ), ( 153, 0, 102 ), ( 153, 255, 51 ), ( 153, 204, 51 ), + ( 153, 153, 51 ), ( 153, 102, 51 ), ( 153, 51, 51 ), ( 153, 0, 51 ), + ( 153, 255, 0 ), ( 153, 204, 0 ), ( 153, 153, 0 ), ( 153, 102, 0 ), + ( 153, 51, 0 ), ( 153, 0, 0 ), ( 102, 255, 102 ), ( 102, 204, 102 ), + ( 102, 153, 102 ), ( 102, 102, 102 ), ( 102, 51, 102 ), ( 102, 0, 102 ), + ( 102, 255, 51 ), ( 102, 204, 51 ), ( 102, 153, 51 ), ( 102, 102, 51 ), + ( 102, 51, 51 ), ( 102, 0, 51 ), ( 102, 255, 0 ), ( 102, 204, 0 ), + ( 102, 153, 0 ), ( 102, 102, 0 ), ( 102, 51, 0 ), ( 102, 0, 0 ), + ( 51, 255, 102 ), ( 51, 204, 102 ), ( 51, 153, 102 ), ( 51, 102, 102 ), + ( 51, 51, 102 ), ( 51, 0, 102 ), ( 51, 255, 51 ), ( 51, 204, 51 ), + ( 51, 153, 51 ), ( 51, 102, 51 ), ( 51, 51, 51 ), ( 51, 0, 51 ), + ( 51, 255, 0 ), ( 51, 204, 0 ), ( 51, 153, 0 ), ( 51, 102, 0 ), + ( 51, 51, 0 ), ( 51, 0, 0 ), ( 0, 255, 102 ), ( 0, 204, 102 ), + ( 0, 153, 102 ), ( 0, 102, 102 ), ( 0, 51, 102 ), ( 0, 0, 102 ), + ( 0, 255, 51 ), ( 0, 204, 51 ), ( 0, 153, 51 ), ( 0, 102, 51 ), + ( 0, 51, 51 ), ( 0, 0, 51 ), ( 0, 255, 0 ), ( 0, 204, 0 ), + ( 0, 153, 0 ), ( 0, 102, 0 ), ( 0, 51, 0 ), ( 17, 17, 17 ), + ( 34, 34, 34 ), ( 68, 68, 68 ), ( 85, 85, 85 ), ( 119, 119, 119 ), + ( 136, 136, 136 ), ( 170, 170, 170 ), ( 187, 187, 187 ), ( 221, 221, 221 ), + ( 238, 238, 238 ), ( 192, 192, 192 ), ( 128, 0, 0 ), ( 128, 0, 128 ), + ( 0, 128, 0 ), ( 0, 128, 128 ), ( 0, 0, 0 ), ( 0, 0, 0 ), + ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), + ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), + ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), + ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), + ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), + ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 )) + +# so build a prototype image to be used for palette resampling +def build_prototype_image(): + image = Image.new("L", (1,len(_Palm8BitColormapValues),)) + image.putdata(range(len(_Palm8BitColormapValues))) + palettedata = () + for i in range(len(_Palm8BitColormapValues)): + palettedata = palettedata + _Palm8BitColormapValues[i] + for i in range(256 - len(_Palm8BitColormapValues)): + palettedata = palettedata + (0, 0, 0) + image.putpalette(palettedata) + return image + +Palm8BitColormapImage = build_prototype_image() + +# OK, we now have in Palm8BitColormapImage, a "P"-mode image with the right palette +# +# -------------------------------------------------------------------- + +_FLAGS = { + "custom-colormap": 0x4000, + "is-compressed": 0x8000, + "has-transparent": 0x2000, + } + +_COMPRESSION_TYPES = { + "none": 0xFF, + "rle": 0x01, + "scanline": 0x00, + } + +def o16b(i): + return chr(i>>8&255) + chr(i&255) + +# +# -------------------------------------------------------------------- + +## +# (Internal) Image save plugin for the Palm format. + +def _save(im, fp, filename, check=0): + + if im.mode == "P": + + # we assume this is a color Palm image with the standard colormap, + # unless the "info" dict has a "custom-colormap" field + + rawmode = "P" + bpp = 8 + version = 1 + + elif im.mode == "L" and im.encoderinfo.has_key("bpp") and im.encoderinfo["bpp"] in (1, 2, 4): + + # this is 8-bit grayscale, so we shift it to get the high-order bits, and invert it because + # Palm does greyscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + im = im.point(lambda x, shift=8-bpp, maxval=(1 << bpp)-1: maxval - (x >> shift)) + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "L" and im.info.has_key("bpp") and im.info["bpp"] in (1, 2, 4): + + # here we assume that even though the inherent mode is 8-bit grayscale, only + # the lower bpp bits are significant. We invert them to match the Palm. + bpp = im.info["bpp"] + im = im.point(lambda x, maxval=(1 << bpp)-1: maxval - (x & maxval)) + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "1": + + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + + raise IOError, "cannot write mode %s as Palm" % im.mode + + if check: + return check + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = ((cols + (16/bpp - 1)) / (16 / bpp)) * 2; + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0; + if im.mode == "P" and im.info.has_key("custom-colormap"): + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2; + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + else: + colormapsize = 0 + + if im.info.has_key("offset"): + offset = (rowbytes * rows + 16 + 3 + colormapsize) / 4; + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(chr(bpp)) + fp.write(chr(version)) + fp.write(o16b(offset)) + fp.write(chr(transparent_index)) + fp.write(chr(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(chr(i)) + if colormapmode == 'RGB': + fp.write(chr(colormap[3 * i]) + chr(colormap[3 * i + 1]) + chr(colormap[3 * i + 2])) + elif colormapmode == 'RGBA': + fp.write(chr(colormap[4 * i]) + chr(colormap[4 * i + 1]) + chr(colormap[4 * i + 2])) + + # now convert data to raw form + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, rowbytes, 1))]) + + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py new file mode 100755 index 00000000000..07bd27e9af3 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCD file handling +# +# History: +# 96-05-10 fl Created +# 96-05-27 fl Added draft mode (128x192, 256x384) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.1" + + +import Image, ImageFile + +## +# Image plugin for PhotoCD images. This plugin only reads the 768x512 +# image from the file; higher resolutions are encoded in a proprietary +# encoding. + +class PcdImageFile(ImageFile.ImageFile): + + format = "PCD" + format_description = "Kodak PhotoCD" + + def _open(self): + + # rough + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != "PCD_": + raise SyntaxError, "not a PCD file" + + orientation = ord(s[1538]) & 3 + if orientation == 1: + self.tile_post_rotate = 90 # hack + elif orientation == 3: + self.tile_post_rotate = -90 + + self.mode = "RGB" + self.size = 768, 512 # FIXME: not correct for rotated images! + self.tile = [("pcd", (0,0)+self.size, 96*2048, None)] + + def draft(self, mode, size): + + if len(self.tile) != 1: + return + + d, e, o, a = self.tile[0] + + if size: + scale = max(self.size[0] / size[0], self.size[1] / size[1]) + for s, o in [(4,0*2048), (2,0*2048), (1,96*2048)]: + if scale >= s: + break + # e = e[0], e[1], (e[2]-e[0]+s-1)/s+e[0], (e[3]-e[1]+s-1)/s+e[1] + # self.size = ((self.size[0]+s-1)/s, (self.size[1]+s-1)/s) + + self.tile = [(d, e, o, a)] + + return self + +# +# registry + +Image.register_open("PCD", PcdImageFile) + +Image.register_extension("PCD", ".pcd") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py new file mode 100755 index 00000000000..bec39e3a034 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py @@ -0,0 +1,256 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import Image +import FontFile + +import string + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = (1<<0) +PCF_ACCELERATORS = (1<<1) +PCF_METRICS = (1<<2) +PCF_BITMAPS = (1<<3) +PCF_INK_METRICS = (1<<4) +PCF_BDF_ENCODINGS = (1<<5) +PCF_SWIDTHS = (1<<6) +PCF_GLYPH_NAMES = (1<<7) +PCF_BDF_ACCELERATORS = (1<<8) + +BYTES_PER_ROW = [ + lambda bits: ((bits+7) >> 3), + lambda bits: ((bits+15) >> 3) & ~1, + lambda bits: ((bits+31) >> 3) & ~3, + lambda bits: ((bits+63) >> 3) & ~7, +] + + +def l16(c): + return ord(c[0]) + (ord(c[1])<<8) +def l32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + +def b16(c): + return ord(c[1]) + (ord(c[0])<<8) +def b32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) + +def sz(s, o): + return s[o:string.index(s, "\0", o)] + +## +# Font file plugin for the X11 PCF format. + +class PcfFontFile(FontFile.FontFile): + + name = "name" + + def __init__(self, fp): + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + raise SyntaxError, "not a PCF file" + + FontFile.FontFile.__init__(self) + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch in range(256): + ix = encoding[ch] + if ix is not None: + x, y, l, r, w, a, d, f = metrics[ix] + glyph = (w, 0), (l, d-y, x+l, d), (0, 0, x, y), bitmaps[ix] + self.glyph[ch] = glyph + + def _getformat(self, tag): + + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self): + + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [] + for i in range(nprops): + p.append((i32(fp.read(4)), ord(fp.read(1)), i32(fp.read(4)))) + if nprops & 3: + fp.seek(4 - (nprops & 3), 1) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + k = sz(data, k) + if s: + v = sz(data, v) + properties[k] = v + + return properties + + def _load_metrics(self): + + # + # font metrics + + metrics = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xff00) == 0x100: + + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = ord(fp.read(1)) - 128 + right = ord(fp.read(1)) - 128 + width = ord(fp.read(1)) - 128 + ascent = ord(fp.read(1)) - 128 + descent = ord(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append( + (xsize, ysize, left, right, width, + ascent, descent, 0) + ) + + else: + + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append( + (xsize, ysize, left, right, width, + ascent, descent, attributes) + ) + + return metrics + + def _load_bitmaps(self, metrics): + + # + # bitmap data + + bitmaps = [] + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + raise IOError, "Wrong number of bitmaps" + + offsets = [] + for i in range(nbitmaps): + offsets.append(i32(fp.read(4))) + + bitmapSizes = [] + for i in range(4): + bitmapSizes.append(i32(fp.read(4))) + + byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmapSizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + for i in range(nbitmaps): + x, y, l, r, w, a, d, f = metrics[i] + b, e = offsets[i], offsets[i+1] + bitmaps.append( + Image.fromstring("1", (x, y), data[b:e], "raw", mode, pad(x)) + ) + + return bitmaps + + def _load_encoding(self): + + # map character code to bitmap index + encoding = [None] * 256 + + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + firstCol, lastCol = i16(fp.read(2)), i16(fp.read(2)) + firstRow, lastRow = i16(fp.read(2)), i16(fp.read(2)) + + default = i16(fp.read(2)) + + nencoding = (lastCol - firstCol + 1) * (lastRow - firstRow + 1) + + for i in range(nencoding): + encodingOffset = i16(fp.read(2)) + if encodingOffset != 0xFFFF: + try: + encoding[i+firstCol] = encodingOffset + except IndexError: + break # only load ISO-8859-1 glyphs + + return encoding diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py new file mode 100755 index 00000000000..15012d51ccd --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py @@ -0,0 +1,167 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.6" + +import Image, ImageFile, ImagePalette + +def i16(c,o): + return ord(c[o]) + (ord(c[o+1])<<8) + +def _accept(prefix): + return ord(prefix[0]) == 10 and ord(prefix[1]) in [0, 2, 3, 5] + +## +# Image plugin for Paintbrush images. + +class PcxImageFile(ImageFile.ImageFile): + + format = "PCX" + format_description = "Paintbrush" + + def _open(self): + + # header + s = self.fp.read(128) + if not _accept(s): + raise SyntaxError, "not a PCX file" + + # image + bbox = i16(s,4), i16(s,6), i16(s,8)+1, i16(s,10)+1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + raise SyntaxError, "bad PCX image size" + + # format + version = ord(s[1]) + bits = ord(s[3]) + planes = ord(s[65]) + stride = i16(s,66) + + self.info["dpi"] = i16(s,12), i16(s,14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = "P;%dL" % planes + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, 2) + s = self.fp.read(769) + if len(s) == 769 and ord(s[0]) == 12: + # check if the palette is linear greyscale + for i in range(256): + if s[i*3+1:i*3+4] != chr(i)*3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + raise IOError, "unknown PCX mode" + + self.mode = mode + self.size = bbox[2]-bbox[0], bbox[3]-bbox[1] + + bbox = (0, 0) + self.size + + self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] + +# -------------------------------------------------------------------- +# save PCX files + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + +def o16(i): + return chr(i&255) + chr(i>>8&255) + +def _save(im, fp, filename, check=0): + + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError: + raise ValueError, "Cannot save %s images as PCX" % im.mode + + if check: + return check + + # bytes per plane + stride = (im.size[0] * bits + 7) / 8 + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + chr(10) + chr(version) + chr(1) + chr(bits) + o16(0) + + o16(0) + o16(im.size[0]-1) + o16(im.size[1]-1) + o16(dpi[0]) + + o16(dpi[1]) + chr(0)*24 + chr(255)*24 + chr(0) + chr(planes) + + o16(stride) + o16(1) + o16(screen[0]) + o16(screen[1]) + + chr(0)*54 + ) + + assert fp.tell() == 128 + + ImageFile._save(im, fp, [("pcx", (0,0)+im.size, 0, + (rawmode, bits*planes))]) + + if im.mode == "P": + # colour palette + fp.write(chr(12)) + fp.write(im.im.getpalette("RGB", "RGB")) # 768 bytes + elif im.mode == "L": + # greyscale palette + fp.write(chr(12)) + for i in range(256): + fp.write(chr(i)*3) + +# -------------------------------------------------------------------- +# registry + +Image.register_open("PCX", PcxImageFile, _accept) +Image.register_save("PCX", _save) + +Image.register_extension("PCX", ".pcx") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py new file mode 100755 index 00000000000..4f957765ca6 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py @@ -0,0 +1,211 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## + +__version__ = "0.4" + +import Image, ImageFile +import StringIO + + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + +def _obj(fp, obj, **dict): + fp.write("%d 0 obj\n" % obj) + if dict: + fp.write("<<\n") + for k, v in dict.items(): + if v is not None: + fp.write("/%s %s\n" % (k, v)) + fp.write(">>\n") + +def _endobj(fp): + fp.write("endobj\n") + +## +# (Internal) Image save plugin for the PDF format. + +def _save(im, fp, filename): + resolution = im.encoderinfo.get("resolution", 72.0) + + # + # make sure image data is available + im.load() + + xref = [0]*(5+1) # placeholders + + fp.write("%PDF-1.2\n") + fp.write("% created by PIL PDF driver " + __version__ + "\n") + + # + # Get image characteristics + + width, height = im.size + + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode (packbits) + # or LZWDecode (tiff/lzw compression). Note that PDF 1.2 also supports + # Flatedecode (zip compression). + + bits = 8 + params = None + + if im.mode == "1": + filter = "/ASCIIHexDecode" + colorspace = "/DeviceGray" + procset = "/ImageB" # grayscale + bits = 1 + elif im.mode == "L": + filter = "/DCTDecode" + # params = "<< /Predictor 15 /Columns %d >>" % (width-2) + colorspace = "/DeviceGray" + procset = "/ImageB" # grayscale + elif im.mode == "P": + filter = "/ASCIIHexDecode" + colorspace = "[ /Indexed /DeviceRGB 255 <" + palette = im.im.getpalette("RGB") + for i in range(256): + r = ord(palette[i*3]) + g = ord(palette[i*3+1]) + b = ord(palette[i*3+2]) + colorspace = colorspace + "%02x%02x%02x " % (r, g, b) + colorspace = colorspace + "> ]" + procset = "/ImageI" # indexed color + elif im.mode == "RGB": + filter = "/DCTDecode" + colorspace = "/DeviceRGB" + procset = "/ImageC" # color images + elif im.mode == "CMYK": + filter = "/DCTDecode" + colorspace = "/DeviceCMYK" + procset = "/ImageC" # color images + else: + raise ValueError("cannot save mode %s" % im.mode) + + # + # catalogue + + xref[1] = fp.tell() + _obj(fp, 1, Type = "/Catalog", + Pages = "2 0 R") + _endobj(fp) + + # + # pages + + xref[2] = fp.tell() + _obj(fp, 2, Type = "/Pages", + Count = 1, + Kids = "[4 0 R]") + _endobj(fp) + + # + # image + + op = StringIO.StringIO() + + if filter == "/ASCIIHexDecode": + if bits == 1: + # FIXME: the hex encoder doesn't support packed 1-bit + # images; do things the hard way... + data = im.tostring("raw", "1") + im = Image.new("L", (len(data), 1), None) + im.putdata(data) + ImageFile._save(im, op, [("hex", (0,0)+im.size, 0, im.mode)]) + elif filter == "/DCTDecode": + ImageFile._save(im, op, [("jpeg", (0,0)+im.size, 0, im.mode)]) + elif filter == "/FlateDecode": + ImageFile._save(im, op, [("zip", (0,0)+im.size, 0, im.mode)]) + elif filter == "/RunLengthDecode": + ImageFile._save(im, op, [("packbits", (0,0)+im.size, 0, im.mode)]) + else: + raise ValueError("unsupported PDF filter (%s)" % filter) + + xref[3] = fp.tell() + _obj(fp, 3, Type = "/XObject", + Subtype = "/Image", + Width = width, # * 72.0 / resolution, + Height = height, # * 72.0 / resolution, + Length = len(op.getvalue()), + Filter = filter, + BitsPerComponent = bits, + DecodeParams = params, + ColorSpace = colorspace) + + fp.write("stream\n") + fp.write(op.getvalue()) + fp.write("\nendstream\n") + + _endobj(fp) + + # + # page + + xref[4] = fp.tell() + _obj(fp, 4) + fp.write("<<\n/Type /Page\n/Parent 2 0 R\n"\ + "/Resources <<\n/ProcSet [ /PDF %s ]\n"\ + "/XObject << /image 3 0 R >>\n>>\n"\ + "/MediaBox [ 0 0 %d %d ]\n/Contents 5 0 R\n>>\n" %\ + (procset, int(width * 72.0 /resolution) , int(height * 72.0 / resolution))) + _endobj(fp) + + # + # page contents + + op = StringIO.StringIO() + + op.write("q %d 0 0 %d 0 0 cm /image Do Q\n" % (int(width * 72.0 / resolution), int(height * 72.0 / resolution))) + + xref[5] = fp.tell() + _obj(fp, 5, Length = len(op.getvalue())) + + fp.write("stream\n") + fp.write(op.getvalue()) + fp.write("\nendstream\n") + + _endobj(fp) + + # + # trailer + startxref = fp.tell() + fp.write("xref\n0 %d\n0000000000 65535 f \n" % len(xref)) + for x in xref[1:]: + fp.write("%010d 00000 n \n" % x) + fp.write("trailer\n<<\n/Size %d\n/Root 1 0 R\n>>\n" % len(xref)) + fp.write("startxref\n%d\n%%%%EOF\n" % startxref) + fp.flush() + +# +# -------------------------------------------------------------------- + +Image.register_save("PDF", _save) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py new file mode 100755 index 00000000000..d4c597b6186 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py @@ -0,0 +1,71 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.1" + +import Image, ImageFile + +# +# helpers + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + +## +# Image plugin for PIXAR raster images. + +class PixarImageFile(ImageFile.ImageFile): + + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self): + + # assuming a 4-byte magic label (FIXME: add "_accept" hook) + s = self.fp.read(4) + if s != "\200\350\000\000": + raise SyntaxError, "not a PIXAR file" + + # read rest of header + s = s + self.fp.read(508) + + self.size = i16(s[418:420]), i16(s[416:418]) + + # get channel/depth descriptions + mode = i16(s[424:426]), i16(s[426:428]) + + if mode == (14, 2): + self.mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [("raw", (0,0)+self.size, 1024, (self.mode, 0, 1))] + +# +# -------------------------------------------------------------------- + +Image.register_open("PIXAR", PixarImageFile) + +# +# FIXME: what's the standard extension? diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py new file mode 100755 index 00000000000..0ee8589a536 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py @@ -0,0 +1,620 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PNG support code +# +# See "PNG (Portable Network Graphics) Specification, version 1.0; +# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). +# +# history: +# 1996-05-06 fl Created (couldn't resist it) +# 1996-12-14 fl Upgraded, added read and verify support (0.2) +# 1996-12-15 fl Separate PNG stream parser +# 1996-12-29 fl Added write support, added getchunks +# 1996-12-30 fl Eliminated circular references in decoder (0.3) +# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) +# 2001-02-08 fl Added transparency support (from Zircon) (0.5) +# 2001-04-16 fl Don't close data source in "open" method (0.6) +# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) +# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) +# 2004-09-20 fl Added PngInfo chunk container +# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) +# 2008-08-13 fl Added tRNS support for RGB images +# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) +# 2009-03-08 fl Added zTXT support (from Lowell Alleman) +# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) +# +# Copyright (c) 1997-2009 by Secret Labs AB +# Copyright (c) 1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.9" + +import re, string + +import Image, ImageFile, ImagePalette, zlib + + +def i16(c): + return ord(c[1]) + (ord(c[0])<<8) +def i32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) + +is_cid = re.compile("\w\w\w\w").match + + +_MAGIC = "\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16,0): ("I", "I;16B"), + (8, 2): ("RGB", "RGB"), + (16,2): ("RGB", "RGB;16B"), + (1, 3): ("P", "P;1"), + (2, 3): ("P", "P;2"), + (4, 3): ("P", "P;4"), + (8, 3): ("P", "P"), + (8, 4): ("LA", "LA"), + (16,4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available + (8, 6): ("RGBA", "RGBA"), + (16,6): ("RGBA", "RGBA;16B"), +} + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + +class ChunkStream: + + def __init__(self, fp): + + self.fp = fp + self.queue = [] + + if not hasattr(Image.core, "crc32"): + self.crc = self.crc_skip + + def read(self): + "Fetch a new chunk. Returns header information." + + if self.queue: + cid, pos, len = self.queue[-1] + del self.queue[-1] + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + len = i32(s) + + if not is_cid(cid): + raise SyntaxError, "broken PNG file (chunk %s)" % repr(cid) + + return cid, pos, len + + def close(self): + self.queue = self.crc = self.fp = None + + def push(self, cid, pos, len): + + self.queue.append((cid, pos, len)) + + def call(self, cid, pos, len): + "Call the appropriate chunk handler" + + if Image.DEBUG: + print "STREAM", cid, pos, len + return getattr(self, "chunk_" + cid)(pos, len) + + def crc(self, cid, data): + "Read and verify checksum" + + crc1 = Image.core.crc32(data, Image.core.crc32(cid)) + crc2 = i16(self.fp.read(2)), i16(self.fp.read(2)) + if crc1 != crc2: + raise SyntaxError, "broken PNG file"\ + "(bad header checksum in %s)" % cid + + def crc_skip(self, cid, data): + "Read checksum. Used if the C module is not present" + + self.fp.read(4) + + def verify(self, endchunk = "IEND"): + + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + while 1: + cid, pos, len = self.read() + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, len)) + cids.append(cid) + + return cids + + +# -------------------------------------------------------------------- +# PNG chunk container (for use with save(pnginfo=)) + +class PngInfo: + + def __init__(self): + self.chunks = [] + + def add(self, cid, data): + self.chunks.append((cid, data)) + + def add_text(self, key, value, zip=0): + if zip: + import zlib + self.add("zTXt", key + "\0\0" + zlib.compress(value)) + else: + self.add("tEXt", key + "\0" + value) + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + +class PngStream(ChunkStream): + + def __init__(self, fp): + + ChunkStream.__init__(self, fp) + + # local copies of Image attributes + self.im_info = {} + self.im_text = {} + self.im_size = (0,0) + self.im_mode = None + self.im_tile = None + self.im_palette = None + + def chunk_iCCP(self, pos, len): + + # ICC profile + s = ImageFile._safe_read(self.fp, len) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = string.find(s, chr(0)) + if Image.DEBUG: + print "iCCP profile name", s[:i] + print "Compression method", ord(s[i]) + comp_method = ord(s[i]) + if comp_method != 0: + raise SyntaxError("Unknown compression method %s in iCCP chunk" % comp_method) + try: + icc_profile = zlib.decompress(s[i+2:]) + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos, len): + + # image header + s = ImageFile._safe_read(self.fp, len) + self.im_size = i32(s), i32(s[4:]) + try: + self.im_mode, self.im_rawmode = _MODES[(ord(s[8]), ord(s[9]))] + except: + pass + if ord(s[12]): + self.im_info["interlace"] = 1 + if ord(s[11]): + raise SyntaxError, "unknown filter category" + return s + + def chunk_IDAT(self, pos, len): + + # image data + self.im_tile = [("zip", (0,0)+self.im_size, pos, self.im_rawmode)] + self.im_idat = len + raise EOFError + + def chunk_IEND(self, pos, len): + + # end of PNG image + raise EOFError + + def chunk_PLTE(self, pos, len): + + # palette + s = ImageFile._safe_read(self.fp, len) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos, len): + + # transparency + s = ImageFile._safe_read(self.fp, len) + if self.im_mode == "P": + i = string.find(s, chr(0)) + if i >= 0: + self.im_info["transparency"] = i + elif self.im_mode == "L": + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s[2:]), i16(s[4:]) + return s + + def chunk_gAMA(self, pos, len): + + # gamma setting + s = ImageFile._safe_read(self.fp, len) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_pHYs(self, pos, len): + + # pixels per unit + s = ImageFile._safe_read(self.fp, len) + px, py = i32(s), i32(s[4:]) + unit = ord(s[8]) + if unit == 1: # meter + dpi = int(px * 0.0254 + 0.5), int(py * 0.0254 + 0.5) + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos, len): + + # text + s = ImageFile._safe_read(self.fp, len) + try: + k, v = string.split(s, "\0", 1) + except ValueError: + k = s; v = "" # fallback for broken tEXt tags + if k: + self.im_info[k] = self.im_text[k] = v + return s + + def chunk_zTXt(self, pos, len): + + # compressed text + s = ImageFile._safe_read(self.fp, len) + k, v = string.split(s, "\0", 1) + comp_method = ord(v[0]) + if comp_method != 0: + raise SyntaxError("Unknown compression method %s in zTXt chunk" % comp_method) + import zlib + self.im_info[k] = self.im_text[k] = zlib.decompress(v[1:]) + return s + +# -------------------------------------------------------------------- +# PNG reader + +def _accept(prefix): + return prefix[:8] == _MAGIC + +## +# Image plugin for PNG images. + +class PngImageFile(ImageFile.ImageFile): + + format = "PNG" + format_description = "Portable network graphics" + + def _open(self): + + if self.fp.read(8) != _MAGIC: + raise SyntaxError, "not a PNG file" + + # + # Parse headers up to the first IDAT chunk + + self.png = PngStream(self.fp) + + while 1: + + # + # get next chunk + + cid, pos, len = self.png.read() + + try: + s = self.png.call(cid, pos, len) + except EOFError: + break + except AttributeError: + if Image.DEBUG: + print cid, pos, len, "(unknown)" + s = ImageFile._safe_read(self.fp, len) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self.mode = self.png.im_mode + self.size = self.png.im_size + self.info = self.png.im_info + self.text = self.png.im_text # experimental + self.tile = self.png.im_tile + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + self.__idat = len # used by load_read() + + + def verify(self): + "Verify PNG file" + + if self.fp is None: + raise RuntimeError("verify must be called directly after open") + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + self.png.verify() + self.png.close() + + self.fp = None + + def load_prepare(self): + "internal: prepare to read PNG file" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, bytes): + "internal: read more image data" + + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, len = self.png.read() + + if cid not in ["IDAT", "DDAT"]: + self.png.push(cid, pos, len) + return "" + + self.__idat = len # empty chunks are allowed + + # read more data from this chunk + if bytes <= 0: + bytes = self.__idat + else: + bytes = min(bytes, self.__idat) + + self.__idat = self.__idat - bytes + + return self.fp.read(bytes) + + + def load_end(self): + "internal: finished reading image data" + + self.png.close() + self.png = None + + +# -------------------------------------------------------------------- +# PNG writer + +def o16(i): + return chr(i>>8&255) + chr(i&255) + +def o32(i): + return chr(i>>24&255) + chr(i>>16&255) + chr(i>>8&255) + chr(i&255) + +_OUTMODES = { + # supported PIL modes, and corresponding rawmodes/bits/color combinations + "1": ("1", chr(1)+chr(0)), + "L;1": ("L;1", chr(1)+chr(0)), + "L;2": ("L;2", chr(2)+chr(0)), + "L;4": ("L;4", chr(4)+chr(0)), + "L": ("L", chr(8)+chr(0)), + "LA": ("LA", chr(8)+chr(4)), + "I": ("I;16B", chr(16)+chr(0)), + "P;1": ("P;1", chr(1)+chr(3)), + "P;2": ("P;2", chr(2)+chr(3)), + "P;4": ("P;4", chr(4)+chr(3)), + "P": ("P", chr(8)+chr(3)), + "RGB": ("RGB", chr(8)+chr(2)), + "RGBA":("RGBA", chr(8)+chr(6)), +} + +def putchunk(fp, cid, *data): + "Write a PNG chunk (including CRC field)" + + data = string.join(data, "") + + fp.write(o32(len(data)) + cid) + fp.write(data) + hi, lo = Image.core.crc32(data, Image.core.crc32(cid)) + fp.write(o16(hi) + o16(lo)) + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp, chunk): + self.fp = fp + self.chunk = chunk + def write(self, data): + self.chunk(self.fp, "IDAT", data) + +def _save(im, fp, filename, chunk=putchunk, check=0): + # save an image to disk (called by the save method) + + mode = im.mode + + if mode == "P": + + # + # attempt to minimize storage requirements for palette images + + if im.encoderinfo.has_key("bits"): + + # number of bits specified by user + n = 1 << im.encoderinfo["bits"] + + else: + + # check palette contents + n = 256 # FIXME + + if n <= 2: + bits = 1 + elif n <= 4: + bits = 2 + elif n <= 16: + bits = 4 + else: + bits = 8 + + if bits != 8: + mode = "%s;%d" % (mode, bits) + + # encoder options + if im.encoderinfo.has_key("dictionary"): + dictionary = im.encoderinfo["dictionary"] + else: + dictionary = "" + + im.encoderconfig = (im.encoderinfo.has_key("optimize"), dictionary) + + # get the corresponding PNG mode + try: + rawmode, mode = _OUTMODES[mode] + except KeyError: + raise IOError, "cannot write mode %s as PNG" % mode + + if check: + return check + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk(fp, "IHDR", + o32(im.size[0]), o32(im.size[1]), # 0: size + mode, # 8: depth/type + chr(0), # 10: compression + chr(0), # 11: filter category + chr(0)) # 12: interlace flag + + if im.mode == "P": + chunk(fp, "PLTE", im.im.getpalette("RGB")) + + if im.encoderinfo.has_key("transparency"): + if im.mode == "P": + transparency = max(0, min(255, im.encoderinfo["transparency"])) + chunk(fp, "tRNS", chr(255) * transparency + chr(0)) + elif im.mode == "L": + transparency = max(0, min(65535, im.encoderinfo["transparency"])) + chunk(fp, "tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = im.encoderinfo["transparency"] + chunk(fp, "tRNS", o16(red) + o16(green) + o16(blue)) + else: + raise IOError("cannot use transparency for this mode") + + if 0: + # FIXME: to be supported some day + chunk(fp, "gAMA", o32(int(gamma * 100000.0))) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk(fp, "pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + chr(1)) + + info = im.encoderinfo.get("pnginfo") + if info: + for cid, data in info.chunks: + chunk(fp, cid, data) + + # ICC profile writing support -- 2008-06-06 Florian Hoech + if im.info.has_key("icc_profile"): + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + try: + import ICCProfile + p = ICCProfile.ICCProfile(im.info["icc_profile"]) + name = p.tags.desc.get("ASCII", p.tags.desc.get("Unicode", p.tags.desc.get("Macintosh", p.tags.desc.get("en", {}).get("US", "ICC Profile")))).encode("latin1", "replace")[:79] + except ImportError: + name = "ICC Profile" + data = name + "\0\0" + zlib.compress(im.info["icc_profile"]) + chunk(fp, "iCCP", data) + + ImageFile._save(im, _idat(fp, chunk), [("zip", (0,0)+im.size, 0, rawmode)]) + + chunk(fp, "IEND", "") + + try: + fp.flush() + except: + pass + + +# -------------------------------------------------------------------- +# PNG chunk converter + +def getchunks(im, **params): + """Return a list of PNG chunks representing this image.""" + + class collector: + data = [] + def write(self, data): + pass + def append(self, chunk): + self.data.append(chunk) + + def append(fp, cid, *data): + data = string.join(data, "") + hi, lo = Image.core.crc32(data, Image.core.crc32(cid)) + crc = o16(hi) + o16(lo) + fp.append((cid, data, crc)) + + fp = collector() + + try: + im.encoderinfo = params + _save(im, fp, None, append) + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open("PNG", PngImageFile, _accept) +Image.register_save("PNG", _save) + +Image.register_extension("PNG", ".png") + +Image.register_mime("PNG", "image/png") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py new file mode 100755 index 00000000000..e86146c1050 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py @@ -0,0 +1,131 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.2" + +import string + +import Image, ImageFile + +# +# -------------------------------------------------------------------- + +MODES = { + # standard + "P4": "1", + "P5": "L", + "P6": "RGB", + # extensions + "P0CMYK": "CMYK", + # PIL extensions (for test purposes only) + "PyP": "P", + "PyRGBA": "RGBA", + "PyCMYK": "CMYK" +} + +def _accept(prefix): + return prefix[0] == "P" and prefix[1] in "0456y" + +## +# Image plugin for PBM, PGM, and PPM images. + +class PpmImageFile(ImageFile.ImageFile): + + format = "PPM" + format_description = "Pbmplus image" + + def _token(self, s = ""): + while 1: # read until next whitespace + c = self.fp.read(1) + if not c or c in string.whitespace: + break + s = s + c + return s + + def _open(self): + + # check magic + s = self.fp.read(1) + if s != "P": + raise SyntaxError, "not a PPM file" + mode = MODES[self._token(s)] + + if mode == "1": + self.mode = "1" + rawmode = "1;I" + else: + self.mode = rawmode = mode + + for ix in range(3): + while 1: + while 1: + s = self.fp.read(1) + if s not in string.whitespace: + break + if s != "#": + break + s = self.fp.readline() + s = int(self._token(s)) + if ix == 0: + xsize = s + elif ix == 1: + ysize = s + if mode == "1": + break + + self.size = xsize, ysize + self.tile = [("raw", + (0, 0, xsize, ysize), + self.fp.tell(), + (rawmode, 0, 1))] + + # ALTERNATIVE: load via builtin debug function + # self.im = Image.core.open_ppm(self.filename) + # self.mode = self.im.mode + # self.size = self.im.size + +# +# -------------------------------------------------------------------- + +def _save(im, fp, filename): + if im.mode == "1": + rawmode, head = "1;I", "P4" + elif im.mode == "L": + rawmode, head = "L", "P5" + elif im.mode == "RGB": + rawmode, head = "RGB", "P6" + elif im.mode == "RGBA": + rawmode, head = "RGB", "P6" + else: + raise IOError, "cannot write mode %s as PPM" % im.mode + fp.write(head + "\n%d %d\n" % im.size) + if head != "P4": + fp.write("255\n") + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, 1))]) + + # ALTERNATIVE: save via builtin debug function + # im._dump(filename) + +# +# -------------------------------------------------------------------- + +Image.register_open("PPM", PpmImageFile, _accept) +Image.register_save("PPM", _save) + +Image.register_extension("PPM", ".pbm") +Image.register_extension("PPM", ".pgm") +Image.register_extension("PPM", ".ppm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py new file mode 100755 index 00000000000..9d1b17a3632 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py @@ -0,0 +1,291 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.4" + +import Image, ImageFile, ImagePalette + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3) +} + +# +# helpers + +def i16(c): + return ord(c[1]) + (ord(c[0])<<8) + +def i32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) + +# --------------------------------------------------------------------. +# read PSD images + +def _accept(prefix): + return prefix[:4] == "8BPS" + +## +# Image plugin for Photoshop images. + +class PsdImageFile(ImageFile.ImageFile): + + format = "PSD" + format_description = "Adobe Photoshop" + + def _open(self): + + read = self.fp.read + + # + # header + + s = read(26) + if s[:4] != "8BPS" or i16(s[4:]) != 1: + raise SyntaxError, "not a PSD file" + + psd_bits = i16(s[22:]) + psd_channels = i16(s[12:]) + psd_mode = i16(s[24:]) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + raise IOError, "not enough channels" + + self.mode = mode + self.size = i32(s[18:]), i32(s[14:]) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + signature = read(4) + id = i16(read(2)) + name = read(ord(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if (len(data) & 1): + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self.layers = [] + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self.layers = _layerinfo(self.fp) + self.fp.seek(end) + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self._fp = self.fp + self.frame = 0 + + def seek(self, layer): + # seek to given layer (1..max) + if layer == self.frame: + return + try: + if layer <= 0: + raise IndexError + name, mode, bbox, tile = self.layers[layer-1] + self.mode = mode + self.tile = tile + self.frame = layer + self.fp = self._fp + return name, bbox + except IndexError: + raise EOFError, "no such layer" + + def tell(self): + # return layer number (0=image, 1..max=layers) + return self.frame + + def load_prepare(self): + # create image memory if necessary + if not self.im or\ + self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.fill(self.mode, self.size, 0) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + +def _layerinfo(file): + # read layerinfo block + layers = [] + read = file.read + + for i in range(abs(i16(read(2)))): + + # bounding box + y0 = i32(read(4)); x0 = i32(read(4)) + y1 = i32(read(4)); x1 = i32(read(4)) + + # image info + info = [] + mode = [] + for i in range(i16(read(2))): + type = i16(read(2)) + if type == 65535: + m = "A" + else: + m = "RGB"[type] + mode.append(m) + size = i32(read(4)) + info.append((m, size)) + + # figure out the image mode + mode.sort() + if mode == ["R"]: + mode = "L" + elif mode == ["B", "G", "R"]: + mode = "RGB" + elif mode == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = None # unknown + + # skip over blend flags and extra information + filler = read(12) + name = "" + size = i32(read(4)) + combined = 0 + if size: + length = i32(read(4)) + if length: + mask_y = i32(read(4)); mask_x = i32(read(4)) + mask_h = i32(read(4)) - mask_y; mask_w = i32(read(4)) - mask_x + file.seek(length - 16, 1) + combined += length + 4 + + length = i32(read(4)) + if length: + file.seek(length, 1) + combined += length + 4 + + length = ord(read(1)) + if length: + name = read(length) + combined += length + 1 + + file.seek(size - combined, 1) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + i = 0 + for name, mode, bbox in layers: + tile = [] + for m in mode: + t = _maketile(file, m, bbox, 1) + if t: + tile.extend(t) + layers[i] = name, mode, bbox, tile + i = i + 1 + + return layers + +def _maketile(file, mode, bbox, channels): + + tile = None + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + tile = [] + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer = layer + ";I" + tile.append(("raw", bbox, offset, layer)) + offset = offset + xsize*ysize + + elif compression == 1: + # + # packbits compression + i = 0 + tile = [] + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer = layer + ";I" + tile.append( + ("packbits", bbox, offset, layer) + ) + for y in range(ysize): + offset = offset + i16(bytecount[i:i+2]) + i = i + 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tile + +# -------------------------------------------------------------------- +# registry + +Image.register_open("PSD", PsdImageFile, _accept) + +Image.register_extension("PSD", ".psd") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py new file mode 100755 index 00000000000..c65b91acaf2 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py @@ -0,0 +1,92 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# History: +# 1995-09-10 fl Created +# +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.2" + + +import Image, ImageFile + + +def i16(c): + return ord(c[1]) + (ord(c[0])<<8) + +def i32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) + + +def _accept(prefix): + return i16(prefix) == 474 + +## +# Image plugin for SGI images. + +class SgiImageFile(ImageFile.ImageFile): + + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self): + + # HEAD + s = self.fp.read(512) + if i16(s) != 474: + raise SyntaxError("not an SGI image file") + + # relevant header entries + compression = ord(s[2]) + + # bytes, dimension, zsize + layout = ord(s[3]), i16(s[4:]), i16(s[10:]) + + # determine mode from bytes/zsize + if layout == (1, 2, 1) or layout == (1, 1, 1): + self.mode = "L" + elif layout == (1, 3, 3): + self.mode = "RGB" + elif layout == (1, 3, 4): + self.mode = "RGBA" + else: + raise SyntaxError("unsupported SGI image mode") + + # size + self.size = i16(s[6:]), i16(s[8:]) + + + # decoder info + if compression == 0: + offset = 512 + pagesize = self.size[0]*self.size[1]*layout[0] + self.tile = [] + for layer in self.mode: + self.tile.append(("raw", (0,0)+self.size, offset, (layer,0,-1))) + offset = offset + pagesize + elif compression == 1: + self.tile = [("sgi_rle", (0,0)+self.size, 512, (self.mode, 0, -1))] + +# +# registry + +Image.register_open("SGI", SgiImageFile, _accept) + +Image.register_extension("SGI", ".bw") +Image.register_extension("SGI", ".rgb") +Image.register_extension("SGI", ".rgba") + +Image.register_extension("SGI", ".sgi") # really? diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py new file mode 100755 index 00000000000..e73d55918c8 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py @@ -0,0 +1,294 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# http://www.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# http://www.wadsworth.org/spider_doc/spider/docs/image_doc.html +# + +import Image, ImageFile +import os, struct, sys + +def isInt(f): + try: + i = int(f) + if f-i == 0: return 1 + else: return 0 + except: + return 0 + +iforms = [1,3,-11,-12,-21,-22] + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no.of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + +def isSpiderHeader(t): + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1,2,5,12,13,22,23]: + if not isInt(h[i]): return 0 + # check iform + iform = int(h[5]) + if not iform in iforms: return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + #print "labrec = %d, labbyt = %d, lenbyt = %d" % (labrec,labbyt,lenbyt) + if labbyt != (labrec * lenbyt): return 0 + # looks like a valid header + return labbyt + +def isSpiderImage(filename): + fp = open(filename,'rb') + f = fp.read(92) # read 23 * 4 bytes + fp.close() + bigendian = 1 + t = struct.unpack('>23f',f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + bigendian = 0 + t = struct.unpack('<23f',f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + + format = "SPIDER" + format_description = "Spider 2D image" + + def _open(self): + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack('>27f',f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack('<27f',f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + raise SyntaxError, "not a valid Spider file" + except struct.error: + raise SyntaxError, "not a valid Spider file" + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + raise SyntaxError, "not a Spider 2D image" + + self.size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self.nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self.nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + raise SyntaxError, "inconsistent stack header values" + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self.mode = "F" + + self.tile = [("raw", (0, 0) + self.size, offset, + (self.rawmode, 0, 1))] + self.__fp = self.fp # FIXME: hack + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self): + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame): + if self.istack == 0: + return + if frame >= self.nimages: + raise EOFError, "attempt to seek past end of file" + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self.__fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth=255): + (min, max) = self.getextrema() + m = 1 + if max != min: + m = depth / (max-min) + b = -m * min + return self.point(lambda i, m=m, b=b: i * m + b).convert("L") + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self): + import ImageTk + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + +# -------------------------------------------------------------------- +# Image series + +# given a list of filenames, return a list of images +def loadImageSeries(filelist=None): + " create a list of Image.images for use in montage " + if filelist == None or len(filelist) < 1: + return + + imglist = [] + for img in filelist: + if not os.path.exists(img): + print "unable to find %s" % img + continue + try: + im = Image.open(img).convert2byte() + except: + if not isSpiderImage(img): + print img + " is not a Spider image file" + continue + im.info['filename'] = img + imglist.append(im) + return imglist + +# -------------------------------------------------------------------- +# For saving images in Spider format + +def makeSpiderHeader(im): + nsam,nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = 1024 / lenbyt + if 1024%lenbyt != 0: labrec += 1 + labbyt = labrec * lenbyt + hdr = [] + nvalues = labbyt / 4 + for i in range(nvalues): + hdr.append(0.0) + + if len(hdr) < 23: + return [] + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + hdrstr = [] + for v in hdr: + hdrstr.append(struct.pack('f',v)) + return hdrstr + +def _save(im, fp, filename): + if im.mode[0] != "F": + im = im.convert('F') + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + raise IOError, "Error creating Spider header" + + # write the SPIDER header + try: + fp = open(filename, 'wb') + except: + raise IOError, "Unable to open %s for writing" % filename + fp.writelines(hdr) + + rawmode = "F;32NF" #32-bit native floating point + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode,0,1))]) + + fp.close() + +def _save_spider(im, fp, filename): + # get the filename extension and register it with Image + fn, ext = os.path.splitext(filename) + Image.register_extension("SPIDER", ext) + _save(im, fp, filename) + +# -------------------------------------------------------------------- + +Image.register_open("SPIDER", SpiderImageFile) +Image.register_save("SPIDER", _save_spider) + +if __name__ == "__main__": + + if not sys.argv[1:]: + print "Syntax: python SpiderImagePlugin.py Spiderimage [outfile]" + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print "input image must be in Spider format" + sys.exit() + + outfile = "" + if len(sys.argv[1:]) > 1: + outfile = sys.argv[2] + + im = Image.open(filename) + print "image: " + str(im) + print "format: " + str(im.format) + print "size: " + str(im.size) + print "mode: " + str(im.mode) + print "max, min: ", + print im.getextrema() + + if outfile != "": + # perform some image operation + im = im.transpose(Image.FLIP_LEFT_RIGHT) + print "saving a flipped version of %s as %s " % (os.path.basename(filename), outfile) + im.save(outfile, "SPIDER") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py new file mode 100755 index 00000000000..d189562a483 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py @@ -0,0 +1,86 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Sun image file handling +# +# History: +# 1995-09-10 fl Created +# 1996-05-28 fl Fixed 32-bit alignment +# 1998-12-29 fl Import ImagePalette module +# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995-1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.3" + + +import Image, ImageFile, ImagePalette + + +def i16(c): + return ord(c[1]) + (ord(c[0])<<8) + +def i32(c): + return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) + + +def _accept(prefix): + return i32(prefix) == 0x59a66a95 + +## +# Image plugin for Sun raster files. + +class SunImageFile(ImageFile.ImageFile): + + format = "SUN" + format_description = "Sun Raster File" + + def _open(self): + + # HEAD + s = self.fp.read(32) + if i32(s) != 0x59a66a95: + raise SyntaxError, "not an SUN raster file" + + offset = 32 + + self.size = i32(s[4:8]), i32(s[8:12]) + + depth = i32(s[12:16]) + if depth == 1: + self.mode, rawmode = "1", "1;I" + elif depth == 8: + self.mode = rawmode = "L" + elif depth == 24: + self.mode, rawmode = "RGB", "BGR" + else: + raise SyntaxError, "unsupported mode" + + compression = i32(s[20:24]) + + if i32(s[24:28]) != 0: + length = i32(s[28:32]) + offset = offset + length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(length)) + if self.mode == "L": + self.mode = rawmode = "P" + + stride = (((self.size[0] * depth + 7) / 8) + 3) & (~3) + + if compression == 1: + self.tile = [("raw", (0,0)+self.size, offset, (rawmode, stride))] + elif compression == 2: + self.tile = [("sun_rle", (0,0)+self.size, offset, rawmode)] + +# +# registry + +Image.register_open("SUN", SunImageFile, _accept) + +Image.register_extension("SUN", ".ras") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py new file mode 100755 index 00000000000..d5de729cd36 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py @@ -0,0 +1,57 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# + +import ContainerIO +import string + +## +# A file object that provides read access to a given member of a TAR +# file. + +class TarIO(ContainerIO.ContainerIO): + + ## + # Create file object. + # + # @param tarfile Name of TAR file. + # @param file Name of member file. + + def __init__(self, tarfile, file): + + fh = open(tarfile, "rb") + + while 1: + + s = fh.read(512) + if len(s) != 512: + raise IOError, "unexpected end of tar file" + + name = s[:100] + i = string.find(name, chr(0)) + if i == 0: + raise IOError, "cannot find subfile" + if i > 0: + name = name[:i] + + size = string.atoi(s[124:136], 8) + + if file == name: + break + + fh.seek((size + 511) & (~511), 1) + + # Open region + ContainerIO.ContainerIO.__init__(self, fh, fh.tell(), size) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py new file mode 100755 index 00000000000..3375991ca9e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py @@ -0,0 +1,201 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.3" + +import Image, ImageFile, ImagePalette + + +# +# -------------------------------------------------------------------- +# Read RGA file + +def i16(c): + return ord(c[0]) + (ord(c[1])<<8) + +def i32(c): + return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (2, 16): "BGR;5", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +def _accept(prefix): + return prefix[0] == "\0" + +## +# Image plugin for Targa files. + +class TgaImageFile(ImageFile.ImageFile): + + format = "TGA" + format_description = "Targa" + + def _open(self): + + # process header + s = self.fp.read(18) + + id = ord(s[0]) + + colormaptype = ord(s[1]) + imagetype = ord(s[2]) + + depth = ord(s[16]) + + flags = ord(s[17]) + + self.size = i16(s[12:]), i16(s[14:]) + + # validate header fields + if id != 0 or colormaptype not in (0, 1) or\ + self.size[0] <= 0 or self.size[1] <= 0 or\ + depth not in (1, 8, 16, 24, 32): + raise SyntaxError, "not a TGA file" + + # image mode + if imagetype in (3, 11): + self.mode = "L" + if depth == 1: + self.mode = "1" # ??? + elif imagetype in (1, 9): + self.mode = "P" + elif imagetype in (2, 10): + self.mode = "RGB" + if depth == 32: + self.mode = "RGBA" + else: + raise SyntaxError, "unknown TGA mode" + + # orientation + orientation = flags & 0x30 + if orientation == 0x20: + orientation = 1 + elif not orientation: + orientation = -1 + else: + raise SyntaxError, "unknown TGA orientation" + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if colormaptype: + # read palette + start, size, mapdepth = i16(s[3:]), i16(s[5:]), i16(s[7:]) + if mapdepth == 16: + self.palette = ImagePalette.raw("BGR;16", + "\0"*2*start + self.fp.read(2*size)) + elif mapdepth == 24: + self.palette = ImagePalette.raw("BGR", + "\0"*3*start + self.fp.read(3*size)) + elif mapdepth == 32: + self.palette = ImagePalette.raw("BGRA", + "\0"*4*start + self.fp.read(4*size)) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype&7, depth)] + if imagetype & 8: + # compressed + self.tile = [("tga_rle", (0, 0)+self.size, + self.fp.tell(), (rawmode, orientation, depth))] + else: + self.tile = [("raw", (0, 0)+self.size, + self.fp.tell(), (rawmode, 0, orientation))] + except KeyError: + pass # cannot decode + +# +# -------------------------------------------------------------------- +# Write TGA file + +def o16(i): + return chr(i&255) + chr(i>>8&255) + +def o32(i): + return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + +def _save(im, fp, filename, check=0): + + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError: + raise IOError("cannot write mode %s as TGA" % im.mode) + + if check: + return check + + if colormaptype: + colormapfirst, colormaplength, colormapentry = 0, 256, 24 + else: + colormapfirst, colormaplength, colormapentry = 0, 0, 0 + + if im.mode == "RGBA": + flags = 8 + else: + flags = 0 + + orientation = im.info.get("orientation", -1) + if orientation > 0: + flags = flags | 0x20 + + fp.write("\000" + + chr(colormaptype) + + chr(imagetype) + + o16(colormapfirst) + + o16(colormaplength) + + chr(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + chr(bits) + + chr(flags)) + + if colormaptype: + fp.write(im.im.getpalette("RGB", "BGR")) + + ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, orientation))]) + +# +# -------------------------------------------------------------------- +# Registry + +Image.register_open("TGA", TgaImageFile, _accept) +Image.register_save("TGA", _save) + +Image.register_extension("TGA", ".tga") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py new file mode 100755 index 00000000000..8a0fde9cd86 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py @@ -0,0 +1,860 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF file handling +# +# TIFF is a flexible, if somewhat aged, image file format originally +# defined by Aldus. Although TIFF supports a wide variety of pixel +# layouts and compression methods, the name doesn't really stand for +# "thousands of incompatible file formats," it just feels that way. +# +# To read TIFF data from a stream, the stream must be seekable. For +# progressive decoding, make sure to use TIFF files where the tag +# directory is placed first in the file. +# +# History: +# 1995-09-01 fl Created +# 1996-05-04 fl Handle JPEGTABLES tag +# 1996-05-18 fl Fixed COLORMAP support +# 1997-01-05 fl Fixed PREDICTOR support +# 1997-08-27 fl Added support for rational tags (from Perry Stoll) +# 1998-01-10 fl Fixed seek/tell (from Jan Blom) +# 1998-07-15 fl Use private names for internal variables +# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) +# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) +# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) +# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) +# 2001-12-18 fl Added workaround for broken Matrox library +# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) +# 2003-05-19 fl Check FILLORDER tag +# 2003-09-26 fl Added RGBa support +# 2004-02-24 fl Added DPI support; fixed rational write support +# 2005-02-07 fl Added workaround for broken Corel Draw 10 files +# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) +# +# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +__version__ = "1.3.5" + +import Image, ImageFile +import ImagePalette + +import array, string, sys + +II = "II" # little-endian (intel-style) +MM = "MM" # big-endian (motorola-style) + +try: + if sys.byteorder == "little": + native_prefix = II + else: + native_prefix = MM +except AttributeError: + if ord(array.array("i",[1]).tostring()[0]): + native_prefix = II + else: + native_prefix = MM + +# +# -------------------------------------------------------------------- +# Read TIFF files + +def il16(c,o=0): + return ord(c[o]) + (ord(c[o+1])<<8) +def il32(c,o=0): + return ord(c[o]) + (ord(c[o+1])<<8) + (ord(c[o+2])<<16) + (ord(c[o+3])<<24) +def ol16(i): + return chr(i&255) + chr(i>>8&255) +def ol32(i): + return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) + +def ib16(c,o=0): + return ord(c[o+1]) + (ord(c[o])<<8) +def ib32(c,o=0): + return ord(c[o+3]) + (ord(c[o+2])<<8) + (ord(c[o+1])<<16) + (ord(c[o])<<24) +def ob16(i): + return chr(i>>8&255) + chr(i&255) +def ob32(i): + return chr(i>>24&255) + chr(i>>16&255) + chr(i>>8&255) + chr(i&255) + +# a few tag names, just to make the code below a bit more readable +IMAGEWIDTH = 256 +IMAGELENGTH = 257 +BITSPERSAMPLE = 258 +COMPRESSION = 259 +PHOTOMETRIC_INTERPRETATION = 262 +FILLORDER = 266 +IMAGEDESCRIPTION = 270 +STRIPOFFSETS = 273 +SAMPLESPERPIXEL = 277 +ROWSPERSTRIP = 278 +STRIPBYTECOUNTS = 279 +X_RESOLUTION = 282 +Y_RESOLUTION = 283 +PLANAR_CONFIGURATION = 284 +RESOLUTION_UNIT = 296 +SOFTWARE = 305 +DATE_TIME = 306 +ARTIST = 315 +PREDICTOR = 317 +COLORMAP = 320 +TILEOFFSETS = 324 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +COPYRIGHT = 33432 +IPTC_NAA_CHUNK = 33723 # newsphoto properties +PHOTOSHOP_CHUNK = 34377 # photoshop properties +ICCPROFILE = 34675 +EXIFIFD = 34665 +XMP = 700 + +COMPRESSION_INFO = { + # Compression => pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits" +} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, 1, 1, (1,), ()): ("1", "1;I"), + (II, 0, 1, 2, (1,), ()): ("1", "1;IR"), + (II, 0, 1, 1, (8,), ()): ("L", "L;I"), + (II, 0, 1, 2, (8,), ()): ("L", "L;IR"), + (II, 1, 1, 1, (1,), ()): ("1", "1"), + (II, 1, 1, 2, (1,), ()): ("1", "1;R"), + (II, 1, 1, 1, (8,), ()): ("L", "L"), + (II, 1, 1, 1, (8,8), (2,)): ("LA", "LA"), + (II, 1, 1, 2, (8,), ()): ("L", "L;R"), + (II, 1, 1, 1, (16,), ()): ("I;16", "I;16"), + (II, 1, 2, 1, (16,), ()): ("I;16S", "I;16S"), + (II, 1, 2, 1, (32,), ()): ("I", "I;32S"), + (II, 1, 3, 1, (32,), ()): ("F", "F;32F"), + (II, 2, 1, 1, (8,8,8), ()): ("RGB", "RGB"), + (II, 2, 1, 2, (8,8,8), ()): ("RGB", "RGB;R"), + (II, 2, 1, 1, (8,8,8,8), (0,)): ("RGBX", "RGBX"), + (II, 2, 1, 1, (8,8,8,8), (1,)): ("RGBA", "RGBa"), + (II, 2, 1, 1, (8,8,8,8), (2,)): ("RGBA", "RGBA"), + (II, 2, 1, 1, (8,8,8,8), (999,)): ("RGBA", "RGBA"), # corel draw 10 + (II, 3, 1, 1, (1,), ()): ("P", "P;1"), + (II, 3, 1, 2, (1,), ()): ("P", "P;1R"), + (II, 3, 1, 1, (2,), ()): ("P", "P;2"), + (II, 3, 1, 2, (2,), ()): ("P", "P;2R"), + (II, 3, 1, 1, (4,), ()): ("P", "P;4"), + (II, 3, 1, 2, (4,), ()): ("P", "P;4R"), + (II, 3, 1, 1, (8,), ()): ("P", "P"), + (II, 3, 1, 1, (8,8), (2,)): ("PA", "PA"), + (II, 3, 1, 2, (8,), ()): ("P", "P;R"), + (II, 5, 1, 1, (8,8,8,8), ()): ("CMYK", "CMYK"), + (II, 6, 1, 1, (8,8,8), ()): ("YCbCr", "YCbCr"), + (II, 8, 1, 1, (8,8,8), ()): ("LAB", "LAB"), + + (MM, 0, 1, 1, (1,), ()): ("1", "1;I"), + (MM, 0, 1, 2, (1,), ()): ("1", "1;IR"), + (MM, 0, 1, 1, (8,), ()): ("L", "L;I"), + (MM, 0, 1, 2, (8,), ()): ("L", "L;IR"), + (MM, 1, 1, 1, (1,), ()): ("1", "1"), + (MM, 1, 1, 2, (1,), ()): ("1", "1;R"), + (MM, 1, 1, 1, (8,), ()): ("L", "L"), + (MM, 1, 1, 1, (8,8), (2,)): ("LA", "LA"), + (MM, 1, 1, 2, (8,), ()): ("L", "L;R"), + (MM, 1, 1, 1, (16,), ()): ("I;16B", "I;16B"), + (MM, 1, 2, 1, (16,), ()): ("I;16BS", "I;16BS"), + (MM, 1, 2, 1, (32,), ()): ("I;32BS", "I;32BS"), + (MM, 1, 3, 1, (32,), ()): ("F;32BF", "F;32BF"), + (MM, 2, 1, 1, (8,8,8), ()): ("RGB", "RGB"), + (MM, 2, 1, 2, (8,8,8), ()): ("RGB", "RGB;R"), + (MM, 2, 1, 1, (8,8,8,8), (0,)): ("RGBX", "RGBX"), + (MM, 2, 1, 1, (8,8,8,8), (1,)): ("RGBA", "RGBa"), + (MM, 2, 1, 1, (8,8,8,8), (2,)): ("RGBA", "RGBA"), + (MM, 2, 1, 1, (8,8,8,8), (999,)): ("RGBA", "RGBA"), # corel draw 10 + (MM, 3, 1, 1, (1,), ()): ("P", "P;1"), + (MM, 3, 1, 2, (1,), ()): ("P", "P;1R"), + (MM, 3, 1, 1, (2,), ()): ("P", "P;2"), + (MM, 3, 1, 2, (2,), ()): ("P", "P;2R"), + (MM, 3, 1, 1, (4,), ()): ("P", "P;4"), + (MM, 3, 1, 2, (4,), ()): ("P", "P;4R"), + (MM, 3, 1, 1, (8,), ()): ("P", "P"), + (MM, 3, 1, 1, (8,8), (2,)): ("PA", "PA"), + (MM, 3, 1, 2, (8,), ()): ("P", "P;R"), + (MM, 5, 1, 1, (8,8,8,8), ()): ("CMYK", "CMYK"), + (MM, 6, 1, 1, (8,8,8), ()): ("YCbCr", "YCbCr"), + (MM, 8, 1, 1, (8,8,8), ()): ("LAB", "LAB"), + +} + +PREFIXES = ["MM\000\052", "II\052\000", "II\xBC\000"] + +def _accept(prefix): + return prefix[:4] in PREFIXES + +## +# Wrapper for TIFF IFDs. + +class ImageFileDirectory: + + # represents a TIFF tag directory. to speed things up, + # we don't decode tags unless they're asked for. + + def __init__(self, prefix): + self.prefix = prefix[:2] + if self.prefix == MM: + self.i16, self.i32 = ib16, ib32 + self.o16, self.o32 = ob16, ob32 + elif self.prefix == II: + self.i16, self.i32 = il16, il32 + self.o16, self.o32 = ol16, ol32 + else: + raise SyntaxError("not a TIFF IFD") + self.reset() + + def reset(self): + self.tags = {} + self.tagdata = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self.next = None + + # dictionary API (sort of) + + def keys(self): + return self.tagdata.keys() + self.tags.keys() + + def items(self): + items = self.tags.items() + for tag in self.tagdata.keys(): + items.append((tag, self[tag])) + return items + + def __len__(self): + return len(self.tagdata) + len(self.tags) + + def __getitem__(self, tag): + try: + return self.tags[tag] + except KeyError: + type, data = self.tagdata[tag] # unpack on the fly + size, handler = self.load_dispatch[type] + self.tags[tag] = data = handler(self, data) + del self.tagdata[tag] + return data + + def get(self, tag, default=None): + try: + return self[tag] + except KeyError: + return default + + def getscalar(self, tag, default=None): + try: + value = self[tag] + if len(value) != 1: + if tag == SAMPLEFORMAT: + # work around broken (?) matrox library + # (from Ted Wright, via Bob Klimek) + raise KeyError # use default + raise ValueError, "not a scalar" + return value[0] + except KeyError: + if default is None: + raise + return default + + def has_key(self, tag): + return self.tags.has_key(tag) or self.tagdata.has_key(tag) + + def __setitem__(self, tag, value): + if type(value) is not type(()): + value = (value,) + self.tags[tag] = value + + # load primitives + + load_dispatch = {} + + def load_byte(self, data): + l = [] + for i in range(len(data)): + l.append(ord(data[i])) + return tuple(l) + load_dispatch[1] = (1, load_byte) + + def load_string(self, data): + if data[-1:] == '\0': + data = data[:-1] + return data + load_dispatch[2] = (1, load_string) + + def load_short(self, data): + l = [] + for i in range(0, len(data), 2): + l.append(self.i16(data, i)) + return tuple(l) + load_dispatch[3] = (2, load_short) + + def load_long(self, data): + l = [] + for i in range(0, len(data), 4): + l.append(self.i32(data, i)) + return tuple(l) + load_dispatch[4] = (4, load_long) + + def load_rational(self, data): + l = [] + for i in range(0, len(data), 8): + l.append((self.i32(data, i), self.i32(data, i+4))) + return tuple(l) + load_dispatch[5] = (8, load_rational) + + def load_float(self, data): + a = array.array("f", data) + if self.prefix != native_prefix: + a.byteswap() + return tuple(a) + load_dispatch[11] = (4, load_float) + + def load_double(self, data): + a = array.array("d", data) + if self.prefix != native_prefix: + a.byteswap() + return tuple(a) + load_dispatch[12] = (8, load_double) + + def load_undefined(self, data): + # Untyped data + return data + load_dispatch[7] = (1, load_undefined) + + def load(self, fp): + # load tag dictionary + + self.reset() + + i16 = self.i16 + i32 = self.i32 + + for i in range(i16(fp.read(2))): + + ifd = fp.read(12) + + tag, typ = i16(ifd), i16(ifd, 2) + + if Image.DEBUG: + import TiffTags + tagname = TiffTags.TAGS.get(tag, "unknown") + typname = TiffTags.TYPES.get(typ, "unknown") + print "tag: %s (%d)" % (tagname, tag), + print "- type: %s (%d)" % (typname, typ), + + try: + dispatch = self.load_dispatch[typ] + except KeyError: + if Image.DEBUG: + print "- unsupported type", typ + continue # ignore unsupported type + + size, handler = dispatch + + size = size * i32(ifd, 4) + + # Get and expand tag value + if size > 4: + here = fp.tell() + fp.seek(i32(ifd, 8)) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = ifd[8:8+size] + + if len(data) != size: + raise IOError, "not enough data" + + self.tagdata[tag] = typ, data + self.tagtype[tag] = typ + + if Image.DEBUG: + if tag in (COLORMAP, IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, ICCPROFILE, XMP): + print "- value: " % size + else: + print "- value:", self[tag] + + self.next = i32(fp.read(4)) + + # save primitives + + def save(self, fp): + + o16 = self.o16 + o32 = self.o32 + + fp.write(o16(len(self.tags))) + + # always write in ascending tag order + tags = self.tags.items() + tags.sort() + + directory = [] + append = directory.append + + offset = fp.tell() + len(self.tags) * 12 + 4 + + stripoffsets = None + + # pass 1: convert tags to binary format + for tag, value in tags: + + typ = None + + if self.tagtype.has_key(tag): + typ = self.tagtype[tag] + + if typ == 1: + # byte data + data = value = string.join(map(chr, value), "") + elif typ == 7: + # untyped data + data = value = string.join(value, "") + elif type(value[0]) is type(""): + # string data + typ = 2 + data = value = string.join(value, "\0") + "\0" + else: + # integer data + if tag == STRIPOFFSETS: + stripoffsets = len(directory) + typ = 4 # to avoid catch-22 + elif tag in (X_RESOLUTION, Y_RESOLUTION): + # identify rational data fields + typ = 5 + elif not typ: + typ = 3 + for v in value: + if v >= 65536: + typ = 4 + if typ == 3: + data = string.join(map(o16, value), "") + else: + data = string.join(map(o32, value), "") + + if Image.DEBUG: + import TiffTags + tagname = TiffTags.TAGS.get(tag, "unknown") + typname = TiffTags.TYPES.get(typ, "unknown") + print "save: %s (%d)" % (tagname, tag), + print "- type: %s (%d)" % (typname, typ), + if tag in (COLORMAP, IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, ICCPROFILE, XMP): + size = len(data) + print "- value: " % size + else: + print "- value:", value + + # figure out if data fits into the directory + if len(data) == 4: + append((tag, typ, len(value), data, "")) + elif len(data) < 4: + append((tag, typ, len(value), data + (4-len(data))*"\0", "")) + else: + count = len(value) + if typ == 5: + count = count / 2 # adjust for rational data field + append((tag, typ, count, o32(offset), data)) + offset = offset + len(data) + if offset & 1: + offset = offset + 1 # word padding + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = directory[stripoffsets] + assert not data, "multistrip support not yet implemented" + value = o32(self.i32(value) + offset) + directory[stripoffsets] = tag, typ, count, value, data + + # pass 2: write directory to file + for tag, typ, count, value, data in directory: + if Image.DEBUG > 1: + print tag, typ, count, repr(value), repr(data) + fp.write(o16(tag) + o16(typ) + o32(count) + value) + + # -- overwrite here for multi-page -- + fp.write("\0\0\0\0") # end of directory + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in directory: + fp.write(data) + if len(data) & 1: + fp.write("\0") + + return offset + +## +# Image plugin for TIFF files. + +class TiffImageFile(ImageFile.ImageFile): + + format = "TIFF" + format_description = "Adobe TIFF" + + def _open(self): + "Open the first image in a TIFF file" + + # Header + ifh = self.fp.read(8) + + if ifh[:4] not in PREFIXES: + raise SyntaxError, "not a TIFF file" + + # image file directory (tag dictionary) + self.tag = self.ifd = ImageFileDirectory(ifh[:2]) + + # setup frame pointers + self.__first = self.__next = self.ifd.i32(ifh, 4) + self.__frame = -1 + self.__fp = self.fp + + # and load the first frame + self._seek(0) + + def seek(self, frame): + "Select a given frame as current image" + + if frame < 0: + frame = 0 + self._seek(frame) + + def tell(self): + "Return the current frame number" + + return self._tell() + + def _seek(self, frame): + + self.fp = self.__fp + if frame < self.__frame: + # rewind file + self.__frame = -1 + self.__next = self.__first + while self.__frame < frame: + if not self.__next: + raise EOFError, "no more images in TIFF file" + self.fp.seek(self.__next) + self.tag.load(self.fp) + self.__next = self.tag.next + self.__frame = self.__frame + 1 + self._setup() + + def _tell(self): + + return self.__frame + + def _decoder(self, rawmode, layer): + "Setup decoder contexts" + + args = None + if rawmode == "RGB" and self._planar_configuration == 2: + rawmode = rawmode[layer] + compression = self._compression + if compression == "raw": + args = (rawmode, 0, 1) + elif compression == "jpeg": + args = rawmode, "" + if self.tag.has_key(JPEGTABLES): + # Hack to handle abbreviated JPEG headers + self.tile_prefix = self.tag[JPEGTABLES] + elif compression == "packbits": + args = rawmode + elif compression == "tiff_lzw": + args = rawmode + if self.tag.has_key(317): + # Section 14: Differencing Predictor + self.decoderconfig = (self.tag[PREDICTOR][0],) + + if self.tag.has_key(ICCPROFILE): + self.info['icc_profile'] = self.tag[ICCPROFILE] + + return args + + def _setup(self): + "Setup this image object based on current tags" + + if self.tag.has_key(0xBC01): + raise IOError, "Windows Media Photo files not yet supported" + + getscalar = self.tag.getscalar + + # extract relevant tags + self._compression = COMPRESSION_INFO[getscalar(COMPRESSION, 1)] + self._planar_configuration = getscalar(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = getscalar(PHOTOMETRIC_INTERPRETATION, 0) + + fillorder = getscalar(FILLORDER, 1) + + if Image.DEBUG: + print "*** Summary ***" + print "- compression:", self._compression + print "- photometric_interpretation:", photo + print "- planar_configuration:", self._planar_configuration + print "- fill_order:", fillorder + + # size + xsize = getscalar(IMAGEWIDTH) + ysize = getscalar(IMAGELENGTH) + self.size = xsize, ysize + + if Image.DEBUG: + print "- size:", self.size + + format = getscalar(SAMPLEFORMAT, 1) + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag.prefix, photo, format, fillorder, + self.tag.get(BITSPERSAMPLE, (1,)), + self.tag.get(EXTRASAMPLES, ()) + ) + if Image.DEBUG: + print "format key:", key + try: + self.mode, rawmode = OPEN_INFO[key] + except KeyError: + if Image.DEBUG: + print "- unsupported format" + raise SyntaxError, "unknown pixel mode" + + if Image.DEBUG: + print "- raw mode:", rawmode + print "- pil mode:", self.mode + + self.info["compression"] = self._compression + + xres = getscalar(X_RESOLUTION, (1, 1)) + yres = getscalar(Y_RESOLUTION, (1, 1)) + + if xres and yres: + xres = xres[0] / (xres[1] or 1) + yres = yres[0] / (yres[1] or 1) + resunit = getscalar(RESOLUTION_UNIT, 1) + if resunit == 2: # dots per inch + self.info["dpi"] = xres, yres + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = xres * 2.54, yres * 2.54 + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = l = 0 + self.tile = [] + if self.tag.has_key(STRIPOFFSETS): + # striped image + h = getscalar(ROWSPERSTRIP, ysize) + w = self.size[0] + a = None + for o in self.tag[STRIPOFFSETS]: + if not a: + a = self._decoder(rawmode, l) + self.tile.append( + (self._compression, + (0, min(y, ysize), w, min(y+h, ysize)), + o, a)) + y = y + h + if y >= self.size[1]: + x = y = 0 + l = l + 1 + a = None + elif self.tag.has_key(TILEOFFSETS): + # tiled image + w = getscalar(322) + h = getscalar(323) + a = None + for o in self.tag[TILEOFFSETS]: + if not a: + a = self._decoder(rawmode, l) + # FIXME: this doesn't work if the image size + # is not a multiple of the tile size... + self.tile.append( + (self._compression, + (x, y, x+w, y+h), + o, a)) + x = x + w + if x >= self.size[0]: + x, y = 0, y + h + if y >= self.size[1]: + x = y = 0 + l = l + 1 + a = None + else: + if Image.DEBUG: + print "- unsupported data organization" + raise SyntaxError("unknown data organization") + + # fixup palette descriptor + + if self.mode == "P": + palette = map(lambda a: chr(a / 256), self.tag[COLORMAP]) + self.palette = ImagePalette.raw("RGB;L", string.join(palette, "")) +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with explict big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8,8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8,8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16S": ("I;16S", II, 1, 2, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8,8,8), None), + "RGBX": ("RGBX", II, 2, 1, (8,8,8,8), 0), + "RGBA": ("RGBA", II, 2, 1, (8,8,8,8), 2), + "CMYK": ("CMYK", II, 5, 1, (8,8,8,8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8,8,8), None), + "LAB": ("LAB", II, 8, 1, (8,8,8), None), + + "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + +def _cvt_res(value): + # convert value to TIFF rational number -- (numerator, denominator) + if type(value) in (type([]), type(())): + assert(len(value) % 2 == 0) + return value + if type(value) == type(1): + return (value, 1) + value = float(value) + return (int(value * 65536), 65536) + +def _save(im, fp, filename): + + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError: + raise IOError, "cannot write mode %s as TIFF" % im.mode + + ifd = ImageFileDirectory(prefix) + + # -- multi-page -- skip TIFF header on subsequent pages + if fp.tell() == 0: + # tiff header (write via IFD to get everything right) + # PIL always starts the first IFD at offset 8 + fp.write(ifd.prefix + ifd.o16(42) + ifd.o32(8)) + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, 'tag'): + # preserve tags from original TIFF image file + for key in (RESOLUTION_UNIT, X_RESOLUTION, Y_RESOLUTION): + if im.tag.tagdata.has_key(key): + ifd[key] = im.tag.tagdata.get(key) + # preserve some more tags from original TIFF image file + # -- 2008-06-06 Florian Hoech + ifd.tagtype = im.tag.tagtype + for key in (IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, XMP): + if im.tag.has_key(key): + ifd[key] = im.tag[key] + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + if im.info.has_key("icc_profile"): + ifd[ICCPROFILE] = im.info["icc_profile"] + if im.encoderinfo.has_key("description"): + ifd[IMAGEDESCRIPTION] = im.encoderinfo["description"] + if im.encoderinfo.has_key("resolution"): + ifd[X_RESOLUTION] = ifd[Y_RESOLUTION] \ + = _cvt_res(im.encoderinfo["resolution"]) + if im.encoderinfo.has_key("x resolution"): + ifd[X_RESOLUTION] = _cvt_res(im.encoderinfo["x resolution"]) + if im.encoderinfo.has_key("y resolution"): + ifd[Y_RESOLUTION] = _cvt_res(im.encoderinfo["y resolution"]) + if im.encoderinfo.has_key("resolution unit"): + unit = im.encoderinfo["resolution unit"] + if unit == "inch": + ifd[RESOLUTION_UNIT] = 2 + elif unit == "cm" or unit == "centimeter": + ifd[RESOLUTION_UNIT] = 3 + else: + ifd[RESOLUTION_UNIT] = 1 + if im.encoderinfo.has_key("software"): + ifd[SOFTWARE] = im.encoderinfo["software"] + if im.encoderinfo.has_key("date time"): + ifd[DATE_TIME] = im.encoderinfo["date time"] + if im.encoderinfo.has_key("artist"): + ifd[ARTIST] = im.encoderinfo["artist"] + if im.encoderinfo.has_key("copyright"): + ifd[COPYRIGHT] = im.encoderinfo["copyright"] + + dpi = im.encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = _cvt_res(dpi[0]) + ifd[Y_RESOLUTION] = _cvt_res(dpi[1]) + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + ifd[PHOTOMETRIC_INTERPRETATION] = photo + + if im.mode == "P": + lut = im.im.getpalette("RGB", "RGB;L") + ifd[COLORMAP] = tuple(map(lambda v: ord(v) * 256, lut)) + + # data orientation + stride = len(bits) * ((im.size[0]*bits[0]+7)/8) + ifd[ROWSPERSTRIP] = im.size[1] + ifd[STRIPBYTECOUNTS] = stride * im.size[1] + ifd[STRIPOFFSETS] = 0 # this is adjusted by IFD writer + ifd[COMPRESSION] = 1 # no compression + + offset = ifd.save(fp) + + ImageFile._save(im, fp, [ + ("raw", (0,0)+im.size, offset, (rawmode, stride, 1)) + ]) + + + # -- helper for multi-page save -- + if im.encoderinfo.has_key("_debug_multipage"): + #just to access o32 and o16 (using correct byte order) + im._debug_multipage = ifd + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open("TIFF", TiffImageFile, _accept) +Image.register_save("TIFF", _save) + +Image.register_extension("TIFF", ".tif") +Image.register_extension("TIFF", ".tiff") + +Image.register_mime("TIFF", "image/tiff") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py new file mode 100755 index 00000000000..33fd209411c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py @@ -0,0 +1,209 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## + +## +# Map tag numbers (or tag number, tag value tuples) to tag names. + +TAGS = { + + 254: "NewSubfileType", + 255: "SubfileType", + 256: "ImageWidth", + 257: "ImageLength", + 258: "BitsPerSample", + + 259: "Compression", + (259, 1): "Uncompressed", + (259, 2): "CCITT 1d", + (259, 3): "Group 3 Fax", + (259, 4): "Group 4 Fax", + (259, 5): "LZW", + (259, 6): "JPEG", + (259, 32773): "PackBits", + + 262: "PhotometricInterpretation", + (262, 0): "WhiteIsZero", + (262, 1): "BlackIsZero", + (262, 2): "RGB", + (262, 3): "RGB Palette", + (262, 4): "Transparency Mask", + (262, 5): "CMYK", + (262, 6): "YCbCr", + (262, 8): "CieLAB", + (262, 32803): "CFA", # TIFF/EP, Adobe DNG + (262, 32892): "LinearRaw", # Adobe DNG + + 263: "Thresholding", + 264: "CellWidth", + 265: "CellHeight", + 266: "FillOrder", + 269: "DocumentName", + + 270: "ImageDescription", + 271: "Make", + 272: "Model", + 273: "StripOffsets", + 274: "Orientation", + 277: "SamplesPerPixel", + 278: "RowsPerStrip", + 279: "StripByteCounts", + + 280: "MinSampleValue", + 281: "MaxSampleValue", + 282: "XResolution", + 283: "YResolution", + 284: "PlanarConfiguration", + (284, 1): "Contigous", + (284, 2): "Separate", + + 285: "PageName", + 286: "XPosition", + 287: "YPosition", + 288: "FreeOffsets", + 289: "FreeByteCounts", + + 290: "GrayResponseUnit", + 291: "GrayResponseCurve", + 292: "T4Options", + 293: "T6Options", + 296: "ResolutionUnit", + 297: "PageNumber", + + 301: "TransferFunction", + 305: "Software", + 306: "DateTime", + + 315: "Artist", + 316: "HostComputer", + 317: "Predictor", + 318: "WhitePoint", + 319: "PrimaryChromaticies", + + 320: "ColorMap", + 321: "HalftoneHints", + 322: "TileWidth", + 323: "TileLength", + 324: "TileOffsets", + 325: "TileByteCounts", + + 332: "InkSet", + 333: "InkNames", + 334: "NumberOfInks", + 336: "DotRange", + 337: "TargetPrinter", + 338: "ExtraSamples", + 339: "SampleFormat", + + 340: "SMinSampleValue", + 341: "SMaxSampleValue", + 342: "TransferRange", + + 347: "JPEGTables", + + # obsolete JPEG tags + 512: "JPEGProc", + 513: "JPEGInterchangeFormat", + 514: "JPEGInterchangeFormatLength", + 515: "JPEGRestartInterval", + 517: "JPEGLosslessPredictors", + 518: "JPEGPointTransforms", + 519: "JPEGQTables", + 520: "JPEGDCTables", + 521: "JPEGACTables", + + 529: "YCbCrCoefficients", + 530: "YCbCrSubSampling", + 531: "YCbCrPositioning", + 532: "ReferenceBlackWhite", + + # XMP + 700: "XMP", + + 33432: "Copyright", + + # various extensions (should check specs for "official" names) + 33723: "IptcNaaInfo", + 34377: "PhotoshopInfo", + + # Exif IFD + 34665: "ExifIFD", + + # ICC Profile + 34675: "ICCProfile", + + # Adobe DNG + 50706: "DNGVersion", + 50707: "DNGBackwardVersion", + 50708: "UniqueCameraModel", + 50709: "LocalizedCameraModel", + 50710: "CFAPlaneColor", + 50711: "CFALayout", + 50712: "LinearizationTable", + 50713: "BlackLevelRepeatDim", + 50714: "BlackLevel", + 50715: "BlackLevelDeltaH", + 50716: "BlackLevelDeltaV", + 50717: "WhiteLevel", + 50718: "DefaultScale", + 50741: "BestQualityScale", + 50719: "DefaultCropOrigin", + 50720: "DefaultCropSize", + 50778: "CalibrationIlluminant1", + 50779: "CalibrationIlluminant2", + 50721: "ColorMatrix1", + 50722: "ColorMatrix2", + 50723: "CameraCalibration1", + 50724: "CameraCalibration2", + 50725: "ReductionMatrix1", + 50726: "ReductionMatrix2", + 50727: "AnalogBalance", + 50728: "AsShotNeutral", + 50729: "AsShotWhiteXY", + 50730: "BaselineExposure", + 50731: "BaselineNoise", + 50732: "BaselineSharpness", + 50733: "BayerGreenSplit", + 50734: "LinearResponseLimit", + 50735: "CameraSerialNumber", + 50736: "LensInfo", + 50737: "ChromaBlurRadius", + 50738: "AntiAliasStrength", + 50740: "DNGPrivateData", + 50741: "MakerNoteSafety", +} + +## +# Map type numbers to type names. + +TYPES = { + + 1: "byte", + 2: "ascii", + 3: "short", + 4: "long", + 5: "rational", + 6: "signed byte", + 7: "undefined", + 8: "signed short", + 9: "signed long", + 10: "signed rational", + 11: "float", + 12: "double", + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py new file mode 100755 index 00000000000..fb8c38ab4af --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py @@ -0,0 +1,126 @@ +# -*- coding: iso-8859-1 -*- +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# NOTE: This format cannot be automatically recognized, so the reader +# is not registered for use with Image.open(). To open a WEL file, use +# the WalImageFile.open() function instead. + +# This reader is based on the specification available from: +# http://www.flipcode.com/tutorials/tut_q2levels.shtml +# and has been tested with a few sample files found using google. + +import Image + +def i32(c, o=0): + return ord(c[o])+(ord(c[o+1])<<8)+(ord(c[o+2])<<16)+(ord(c[o+3])<<24) + +## +# Load texture from a Quake2 WAL texture file. +#

    +# By default, a Quake2 standard palette is attached to the texture. +# To override the palette, use the putpalette method. +# +# @param filename WAL file name, or an opened file handle. +# @return An image instance. + +def open(filename): + # FIXME: modify to return a WalImageFile instance instead of + # plain Image object ? + + if hasattr(filename, "read"): + fp = filename + else: + import __builtin__ + fp = __builtin__.open(filename, "rb") + + # read header fields + header = fp.read(32+24+32+12) + size = i32(header, 32), i32(header, 36) + offset = i32(header, 40) + + # load pixel data + fp.seek(offset) + + im = Image.fromstring("P", size, fp.read(size[0] * size[1])) + im.putpalette(quake2palette) + + im.format = "WAL" + im.format_description = "Quake2 Texture" + + # strings are null-terminated + im.info["name"] = header[:32].split("\0", 1)[0] + next_name = header[56:56+32].split("\0", 1)[0] + if next_name: + im.info["next_name"] = next_name + + return im + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + "\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + "\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + "\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + "\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + "\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + "\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + "\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + "\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + "\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + "\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + "\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + "\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + "\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + "\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + "\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + "\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + "\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + "\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + "\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + "\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + "\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + "\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + "\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + "\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + "\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + "\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + "\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + "\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + "\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + "\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + "\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + "\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + "\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + "\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + "\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + "\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + "\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + "\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + "\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + "\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + "\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + "\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + "\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + "\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + "\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + "\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + "\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + "\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) + +if __name__ == "__main__": + im = open("../hacks/sample.wal") + print im.info, im.mode, im.size + im.save("../out.png") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py new file mode 100755 index 00000000000..5191f1e51d5 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py @@ -0,0 +1,167 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.2" + +import Image, ImageFile + +_handler = None + +## +# Install application-specific WMF image handler. +# +# @param handler Handler object. + +def register_handler(handler): + global _handler + _handler = handler + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler: + + def open(self, im): + im.mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im): + im.fp.seek(0) # rewind + return Image.fromstring( + "RGB", im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", "BGR", (im.size[0]*3 + 3) & -4, -1 + ) + + register_handler(WmfHandler()) + +# -------------------------------------------------------------------- + +def word(c, o=0): + return ord(c[o]) + (ord(c[o+1])<<8) + +def short(c, o=0): + v = ord(c[o]) + (ord(c[o+1])<<8) + if v >= 32768: + v = v - 65536 + return v + +def dword(c, o=0): + return ord(c[o]) + (ord(c[o+1])<<8) + (ord(c[o+2])<<16) + (ord(c[o+3])<<24) + +def long(c, o=0): + return dword(c, o) + +# +# -------------------------------------------------------------------- +# Read WMF file + +def _accept(prefix): + return ( + prefix[:6] == "\xd7\xcd\xc6\x9a\x00\x00" or + prefix[:4] == "\x01\x00\x00\x00" + ) + +## +# Image plugin for Windows metafiles. + +class WmfStubImageFile(ImageFile.StubImageFile): + + format = "WMF" + format_description = "Windows Metafile" + + def _open(self): + + # check placable header + s = self.fp.read(80) + + if s[:6] == "\xd7\xcd\xc6\x9a\x00\x00": + + # placeable windows metafile + + # get units per inch + inch = word(s, 14) + + # get bounding box + x0 = short(s, 6); y0 = short(s, 8) + x1 = short(s, 10); y1 = short(s, 12) + + # normalize size to 72 dots per inch + size = (x1 - x0) * 72 / inch, (y1 - y0) * 72 / inch + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + self.info["dpi"] = 72 + + # print self.mode, self.size, self.info + + # sanity check (standard metafile header) + if s[22:26] != "\x01\x00\t\x00": + raise SyntaxError("Unsupported WMF file format") + + elif long(s) == 1 and s[40:44] == " EMF": + # enhanced metafile + + # get bounding box + x0 = long(s, 8); y0 = long(s, 12) + x1 = long(s, 16); y1 = long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = long(s, 24), long(s, 28), long(s, 32), long(s, 36) + + # normalize size to 72 dots per inch + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + xdpi = 2540 * (x1 - y0) / (frame[2] - frame[0]) + ydpi = 2540 * (y1 - y0) / (frame[3] - frame[1]) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + raise SyntaxError("Unsupported file format") + + self.mode = "RGB" + self.size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("WMF save handler not installed") + _handler.save(im, fp, filename) + +# +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extension(WmfStubImageFile.format, ".wmf") +Image.register_extension(WmfStubImageFile.format, ".emf") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py new file mode 100755 index 00000000000..ab1fb5d7ac8 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# + +__version__ = "0.1" + +import string +import Image, ImageFile, ImagePalette + +# standard color palette for thumbnails (RGB332) +PALETTE = "" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + (chr((r*255)/7)+chr((g*255)/7)+chr((b*255)/3)) + +## +# Image plugin for XV thumbnail images. + +class XVThumbImageFile(ImageFile.ImageFile): + + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self): + + # check magic + s = self.fp.read(6) + if s != "P7 332": + raise SyntaxError, "not an XV thumbnail file" + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while 1: + s = self.fp.readline() + if not s: + raise SyntaxError, "Unexpected EOF reading XV thumbnail file" + if s[0] != '#': + break + + # parse header line (already read) + s = string.split(s.strip()) + + self.mode = "P" + self.size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [ + ("raw", (0, 0)+self.size, + self.fp.tell(), (self.mode, 0, 1) + )] + +# -------------------------------------------------------------------- + +Image.register_open("XVThumb", XVThumbImageFile) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py new file mode 100755 index 00000000000..a8cf1026dce --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py @@ -0,0 +1,94 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.6" + +import re, string +import Image, ImageFile + +# XBM header +xbm_head = re.compile( + "\s*#define[ \t]+[^_]*_width[ \t]+(?P[0-9]+)[\r\n]+" + "#define[ \t]+[^_]*_height[ \t]+(?P[0-9]+)[\r\n]+" + "(?P" + "#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + "#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + ")?" + "[\\000-\\377]*_bits\\[\\]" +) + +def _accept(prefix): + return string.lstrip(prefix)[:7] == "#define" + +## +# Image plugin for X11 bitmaps. + +class XbmImageFile(ImageFile.ImageFile): + + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self): + + m = xbm_head.match(self.fp.read(512)) + + if m: + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = ( + int(m.group("xhot")), int(m.group("yhot")) + ) + + self.mode = "1" + self.size = xsize, ysize + + self.tile = [("xbm", (0, 0)+self.size, m.end(), None)] + + +def _save(im, fp, filename): + + if im.mode != "1": + raise IOError, "cannot write mode %s as XBM" % im.mode + + fp.write("#define im_width %d\n" % im.size[0]) + fp.write("#define im_height %d\n" % im.size[1]) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write("#define im_x_hot %d\n" % hotspot[0]) + fp.write("#define im_y_hot %d\n" % hotspot[1]) + + fp.write("static char im_bits[] = {\n") + + ImageFile._save(im, fp, [("xbm", (0,0)+im.size, 0, None)]) + + fp.write("};\n") + + +Image.register_open("XBM", XbmImageFile, _accept) +Image.register_save("XBM", _save) + +Image.register_extension("XBM", ".xbm") + +Image.register_mime("XBM", "image/xbm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py new file mode 100755 index 00000000000..a3f40f02c4e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py @@ -0,0 +1,129 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +__version__ = "0.2" + + +import re, string +import Image, ImageFile, ImagePalette + +# XPM header +xpm_head = re.compile("\"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)") + + +def _accept(prefix): + return prefix[:9] == "/* XPM */" + +## +# Image plugin for X11 pixel maps. + +class XpmImageFile(ImageFile.ImageFile): + + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self): + + if not _accept(self.fp.read(9)): + raise SyntaxError, "not an XPM file" + + # skip forward to next string + while 1: + s = self.fp.readline() + if not s: + raise SyntaxError, "broken XPM file" + m = xpm_head.match(s) + if m: + break + + self.size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + raise ValueError, "cannot read this XPM file" + + # + # load palette description + + palette = ["\0\0\0"] * 256 + + for i in range(pal): + + s = self.fp.readline() + if s[-2:] == '\r\n': + s = s[:-2] + elif s[-1:] in '\r\n': + s = s[:-1] + + c = ord(s[1]) + s = string.split(s[2:-2]) + + for i in range(0, len(s), 2): + + if s[i] == "c": + + # process colour key + rgb = s[i+1] + if rgb == "None": + self.info["transparency"] = c + elif rgb[0] == "#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = string.atoi(rgb[1:], 16) + palette[c] = chr((rgb >> 16) & 255) +\ + chr((rgb >> 8) & 255) +\ + chr(rgb & 255) + else: + # unknown colour + raise ValueError, "cannot read this XPM file" + break + + else: + + # missing colour key + raise ValueError, "cannot read this XPM file" + + self.mode = "P" + self.palette = ImagePalette.raw("RGB", string.join(palette, "")) + + self.tile = [("raw", (0, 0)+self.size, self.fp.tell(), ("P", 0, 1))] + + def load_read(self, bytes): + + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [None] * ysize + + for i in range(ysize): + s[i] = string.ljust(self.fp.readline()[1:xsize+1], xsize) + + self.fp = None + + return string.join(s, "") + +# +# Registry + +Image.register_open("XPM", XpmImageFile, _accept) + +Image.register_extension("XPM", ".xpm") + +Image.register_mime("XPM", "image/xpm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py new file mode 100755 index 00000000000..ed54d26f66e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py @@ -0,0 +1,12 @@ +# +# The Python Imaging Library. +# $Id$ +# +# package placeholder +# +# Copyright (c) 1999 by Secret Labs AB. +# +# See the README file for information on usage and redistribution. +# + +# ;-) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imaging.pyd b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imaging.pyd new file mode 100755 index 0000000000000000000000000000000000000000..22ee66c119717b931306da63a289e09754eeefd3 GIT binary patch literal 193536 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 z%0A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 literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/README b/tools/HitboxExpander/third_party/Imaging-1.1.7/README new file mode 100755 index 00000000000..458975b3bac --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/README @@ -0,0 +1,300 @@ +The Python Imaging Library +$Id$ + +Release 1.1.7 (November 15, 2009) + +==================================================================== +The Python Imaging Library 1.1.7 +==================================================================== + +Contents +-------- + ++ Introduction ++ Support Options + - Commercial support + - Free support ++ Software License ++ Build instructions (all platforms) + - Additional notes for Mac OS X + - Additional notes for Windows + +-------------------------------------------------------------------- +Introduction +-------------------------------------------------------------------- + +The Python Imaging Library (PIL) adds image processing capabilities +to your Python environment. This library provides extensive file +format support, an efficient internal representation, and powerful +image processing capabilities. + +This source kit has been built and tested with Python 2.0 and newer, +on Windows, Mac OS X, and major Unix platforms. Large parts of the +library also work on 1.5.2 and 1.6. + +The main distribution site for this software is: + + http://www.pythonware.com/products/pil/ + +That site also contains information about free and commercial support +options, PIL add-ons, answers to frequently asked questions, and more. + + +Development versions (alphas, betas) are available here: + + http://effbot.org/downloads/ + + +The PIL handbook is not included in this distribution; to get the +latest version, check: + + http://www.pythonware.com/library/ + http://effbot.org/books/imagingbook/ (drafts) + + +For installation and licensing details, see below. + + +-------------------------------------------------------------------- +Support Options +-------------------------------------------------------------------- + ++ Commercial Support + +Secret Labs (PythonWare) offers support contracts for companies using +the Python Imaging Library in commercial applications, and in mission- +critical environments. The support contract includes technical support, +bug fixes, extensions to the PIL library, sample applications, and more. + +For the full story, check: + + http://www.pythonware.com/products/pil/support.htm + + ++ Free Support + +For support and general questions on the Python Imaging Library, send +e-mail to the Image SIG mailing list: + + image-sig@python.org + +You can join the Image SIG by sending a mail to: + + image-sig-request@python.org + +Put "subscribe" in the message body to automatically subscribe to the +list, or "help" to get additional information. Alternatively, you can +send your questions to the Python mailing list, python-list@python.org, +or post them to the newsgroup comp.lang.python. DO NOT SEND SUPPORT +QUESTIONS TO PYTHONWARE ADDRESSES. + + +-------------------------------------------------------------------- +Software License +-------------------------------------------------------------------- + +The Python Imaging Library is + +Copyright (c) 1997-2009 by Secret Labs AB +Copyright (c) 1995-2009 by Fredrik Lundh + +By obtaining, using, and/or copying this software and/or its +associated documentation, you agree that you have read, understood, +and will comply with the following terms and conditions: + +Permission to use, copy, modify, and distribute this software and its +associated documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appears in all +copies, and that both that copyright notice and this permission notice +appear in supporting documentation, and that the name of Secret Labs +AB or the author not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +-------------------------------------------------------------------- +Build instructions (all platforms) +-------------------------------------------------------------------- + +For a list of changes in this release, see the CHANGES document. + +0. If you're in a hurry, try this: + + $ tar xvfz Imaging-1.1.7.tar.gz + $ cd Imaging-1.1.7 + $ python setup.py install + + If you prefer to know what you're doing, read on. + + +1. Prerequisites. + + If you need any of the features described below, make sure you + have the necessary libraries before building PIL. + + feature library + ----------------------------------------------------------------- + JPEG support libjpeg (6a or 6b) + + http://www.ijg.org + http://www.ijg.org/files/jpegsrc.v6b.tar.gz + ftp://ftp.uu.net/graphics/jpeg/ + + PNG support zlib (1.2.3 or later is recommended) + + http://www.gzip.org/zlib/ + + OpenType/TrueType freetype2 (2.3.9 or later is recommended) + support + http://www.freetype.org + http://freetype.sourceforge.net + + CMS support littleCMS (1.1.5 or later is recommended) + support + http://www.littlecms.com/ + + If you have a recent Linux version, the libraries provided with the + operating system usually work just fine. If some library is + missing, installing a prebuilt version (jpeg-devel, zlib-devel, + etc) is usually easier than building from source. For example, for + Ubuntu 9.10 (karmic), you can install the following libraries: + + sudo apt-get install libjpeg62-dev + sudo apt-get install zlib1g-dev + sudo apt-get install libfreetype6-dev + sudo apt-get install liblcms1-dev + + If you're using Mac OS X, you can use the 'fink' tool to install + missing libraries (also see the Mac OS X section below). + + Similar tools are available for many other platforms. + + +2. To build under Python 1.5.2, you need to install the stand-alone + version of the distutils library: + + http://www.python.org/sigs/distutils-sig/download.html + + You can fetch distutils 1.0.2 from the Python source repository: + + svn export http://svn.python.org/projects/python/tags/Distutils-1_0_2/Lib/distutils/ + + For newer releases, the distutils library is included in the + Python standard library. + + NOTE: Version 1.1.7 is not fully compatible with 1.5.2. Some + more recent additions to the library may not work, but the core + functionality is available. + + +3. If you didn't build Python from sources, make sure you have + Python's build support files on your machine. If you've down- + loaded a prebuilt package (e.g. a Linux RPM), you probably + need additional developer packages. Look for packages named + "python-dev", "python-devel", or similar. For example, for + Ubuntu 9.10 (karmic), use the following command: + + sudo apt-get install python-dev + + +4. When you have everything you need, unpack the PIL distribution + (the file Imaging-1.1.7.tar.gz) in a suitable work directory: + + $ cd MyExtensions # example + $ gunzip Imaging-1.1.7.tar.gz + $ tar xvf Imaging-1.1.7.tar + + +5. Build the library. We recommend that you do an in-place build, + and run the self test before installing. + + $ cd Imaging-1.1.7 + $ python setup.py build_ext -i + $ python selftest.py + + During the build process, the setup.py will display a summary + report that lists what external components it found. The self- + test will display a similar report, with what external components + the tests found in the actual build files: + + ---------------------------------------------------------------- + PIL 1.1.7 SETUP SUMMARY + ---------------------------------------------------------------- + *** TKINTER support not available (Tcl/Tk 8.5 libraries needed) + --- JPEG support available + --- ZLIB (PNG/ZIP) support available + --- FREETYPE support available + ---------------------------------------------------------------- + + Make sure that the optional components you need are included. + + If the build script won't find a given component, you can edit the + setup.py file and set the appropriate ROOT variable. For details, + see instructions in the file. + + If the build script finds the component, but the tests cannot + identify it, try rebuilding *all* modules: + + $ python setup.py clean + $ python setup.py build_ext -i + + +6. If the setup.py and selftest.py commands finish without any + errors, you're ready to install the library: + + $ python setup.py install + + (depending on how Python has been installed on your machine, + you might have to log in as a superuser to run the 'install' + command, or use the 'sudo' command to run 'install'.) + + +-------------------------------------------------------------------- +Additional notes for Mac OS X +-------------------------------------------------------------------- + +On Mac OS X you will usually install additional software such as +libjpeg or freetype with the "fink" tool, and then it ends up in +"/sw". If you have installed the libraries elsewhere, you may have +to tweak the "setup.py" file before building. + + +-------------------------------------------------------------------- +Additional notes for Windows +-------------------------------------------------------------------- + +On Windows, you need to tweak the ROOT settings in the "setup.py" +file, to make it find the external libraries. See comments in the +file for details. + +Make sure to build PIL and the external libraries with the same +runtime linking options as was used for the Python interpreter +(usually /MD, under Visual Studio). + + +Note that most Python distributions for Windows include libraries +compiled for Microsoft Visual Studio. You can get the free Express +edition of Visual Studio from: + + http://www.microsoft.com/Express/ + +To build extensions using other tool chains, see the "Using +non-Microsoft compilers on Windows" section in the distutils handbook: + + http://www.python.org/doc/current/inst/non-ms-compilers.html + +For additional information on how to build extensions using the +popular MinGW compiler, see: + + http://mingw.org (compiler) + http://sebsauvage.net/python/mingw.html (build instructions) + http://sourceforge.net/projects/gnuwin32 (prebuilt libraries) + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES new file mode 100755 index 00000000000..95c14697e83 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES @@ -0,0 +1,34 @@ + +from V1.0 to V2.0 + +_sane.c: + - Values for option constraints are correctly translated to floats + if value type is TYPE_FIXED for SANE_CONSTRAINT_RANGE and + SANE_CONSTRAINT_WORD_LIST + - added constants INFO_INEXACT, INFO_RELOAD_OPTIONS, + INFO_RELOAD_PARAMS (possible return values of set_option()) + to module dictionnary. + - removed additional return variable 'i' from SaneDev_get_option(), + because it is only set when SANE_ACTION_SET_VALUE is used. + - scanDev.get_parameters() now returns the scanner mode as 'format', + no more the typical PIL codes. So 'L' became 'gray', 'RGB' is now + 'color', 'R' is 'red', 'G' is 'green', 'B' is 'red'. This matches + the way scanDev.mode is set. + This should be the only incompatibility vs. version 1.0. + +sane.py + - ScanDev got new method __load_option_dict() called from __init__() + and from __setattr__() if backend reported that the frontend should + reload the options. + - Nice human-readable __repr__() method added for class Option + - if __setattr__ (i.e. set_option) reports that all other options + have to be reloaded due to a change in the backend then they are reloaded. + - due to the change in SaneDev_get_option() only the 'value' is + returned from get_option(). + - in __setattr__ integer values are automatically converted to floats + if SANE backend expects SANE_FIXED (i.e. fix-point float) + - The scanner options can now directly be accessed via scanDev[optionName] + instead scanDev.opt[optionName]. (The old way still works). + +V1.0: + A.M. Kuchling's original pysane package. \ No newline at end of file diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README new file mode 100755 index 00000000000..ddff0cf2479 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README @@ -0,0 +1,22 @@ + +Python SANE module V1.1 (30 Sep. 2004) + +The SANE module provides an interface to the SANE scanner and frame +grabber interface for Linux. This module was contributed by Andrew +Kuchling and is extended and currently maintained by Ralph Heinkel +(rheinkel-at-email.de). If you write to me please make sure to have the +word 'SANE' or 'sane' in the subject of your mail, otherwise it might +be classified as spam in the future. + + +To build this module, type (in the Sane directory): + + python setup.py build + +In order to install the module type: + + python setup.py install + + +For some basic documentation please look at the file sanedoc.txt +The two demo_*.py scripts give basic examples on how to use the software. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c new file mode 100755 index 00000000000..21e542fa512 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c @@ -0,0 +1,1325 @@ +/*********************************************************** +(C) Copyright 2003 A.M. Kuchling. All Rights Reserved +(C) Copyright 2004 A.M. Kuchling, Ralph Heinkel All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of A.M. Kuchling and +Ralph Heinkel not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +A.M. KUCHLING, R.H. HEINKEL DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* SaneDev objects */ + +#include "Python.h" +#include "Imaging.h" +#include + +#include + +static PyObject *ErrorObject; + +typedef struct { + PyObject_HEAD + SANE_Handle h; +} SaneDevObject; + +#ifdef WITH_THREAD +PyThreadState *_save; +#endif + +/* Raise a SANE exception */ +PyObject * +PySane_Error(SANE_Status st) +{ + const char *string; + + if (st==SANE_STATUS_GOOD) {Py_INCREF(Py_None); return (Py_None);} + string=sane_strstatus(st); + PyErr_SetString(ErrorObject, string); + return NULL; +} + +staticforward PyTypeObject SaneDev_Type; + +#define SaneDevObject_Check(v) ((v)->ob_type == &SaneDev_Type) + +static SaneDevObject * +newSaneDevObject(void) +{ + SaneDevObject *self; + self = PyObject_NEW(SaneDevObject, &SaneDev_Type); + if (self == NULL) + return NULL; + self->h=NULL; + return self; +} + +/* SaneDev methods */ + +static void +SaneDev_dealloc(SaneDevObject *self) +{ + if (self->h) sane_close(self->h); + self->h=NULL; + PyObject_DEL(self); +} + +static PyObject * +SaneDev_close(SaneDevObject *self, PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return NULL; + if (self->h) sane_close(self->h); + self->h=NULL; + Py_INCREF(Py_None); + return (Py_None); +} + +static PyObject * +SaneDev_get_parameters(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + SANE_Parameters p; + char *format="unknown format"; + + if (!PyArg_ParseTuple(args, "")) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + Py_BEGIN_ALLOW_THREADS + st=sane_get_parameters(self->h, &p); + Py_END_ALLOW_THREADS + + if (st) return PySane_Error(st); + switch (p.format) + { + case(SANE_FRAME_GRAY): format="gray"; break; + case(SANE_FRAME_RGB): format="color"; break; + case(SANE_FRAME_RED): format="red"; break; + case(SANE_FRAME_GREEN): format="green"; break; + case(SANE_FRAME_BLUE): format="blue"; break; + } + + return Py_BuildValue("si(ii)ii", format, p.last_frame, p.pixels_per_line, + p.lines, p.depth, p.bytes_per_line); +} + + +static PyObject * +SaneDev_fileno(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + SANE_Int fd; + + if (!PyArg_ParseTuple(args, "")) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + st=sane_get_select_fd(self->h, &fd); + if (st) return PySane_Error(st); + return PyInt_FromLong(fd); +} + +static PyObject * +SaneDev_start(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + + if (!PyArg_ParseTuple(args, "")) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + /* sane_start can take several seconds, if the user initiates + a new scan, while the scan head of a flatbed scanner moves + back to the start position after finishing a previous scan. + Hence it is worth to allow threads here. + */ + Py_BEGIN_ALLOW_THREADS + st=sane_start(self->h); + Py_END_ALLOW_THREADS + if (st) return PySane_Error(st); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +SaneDev_cancel(SaneDevObject *self, PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + sane_cancel(self->h); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +SaneDev_get_options(SaneDevObject *self, PyObject *args) +{ + const SANE_Option_Descriptor *d; + PyObject *list, *value; + int i=1; + + if (!PyArg_ParseTuple(args, "")) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + if (!(list = PyList_New(0))) + return NULL; + + do + { + d=sane_get_option_descriptor(self->h, i); + if (d!=NULL) + { + PyObject *constraint=NULL; + int j; + + switch (d->constraint_type) + { + case(SANE_CONSTRAINT_NONE): + Py_INCREF(Py_None); constraint=Py_None; break; + case(SANE_CONSTRAINT_RANGE): + if (d->type == SANE_TYPE_INT) + constraint=Py_BuildValue("iii", d->constraint.range->min, + d->constraint.range->max, + d->constraint.range->quant); + else + constraint=Py_BuildValue("ddd", + SANE_UNFIX(d->constraint.range->min), + SANE_UNFIX(d->constraint.range->max), + SANE_UNFIX(d->constraint.range->quant)); + break; + case(SANE_CONSTRAINT_WORD_LIST): + constraint=PyList_New(d->constraint.word_list[0]); + if (d->type == SANE_TYPE_INT) + for (j=1; j<=d->constraint.word_list[0]; j++) + PyList_SetItem(constraint, j-1, + PyInt_FromLong(d->constraint.word_list[j])); + else + for (j=1; j<=d->constraint.word_list[0]; j++) + PyList_SetItem(constraint, j-1, + PyFloat_FromDouble(SANE_UNFIX(d->constraint.word_list[j]))); + break; + case(SANE_CONSTRAINT_STRING_LIST): + constraint=PyList_New(0); + for(j=0; d->constraint.string_list[j]!=NULL; j++) + PyList_Append(constraint, + PyString_FromString(d->constraint.string_list[j])); + break; + } + value=Py_BuildValue("isssiiiiO", i, d->name, d->title, d->desc, + d->type, d->unit, d->size, d->cap, constraint); + PyList_Append(list, value); + } + i++; + } while (d!=NULL); + return list; +} + +static PyObject * +SaneDev_get_option(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + const SANE_Option_Descriptor *d; + PyObject *value=NULL; + int n; + void *v; + + if (!PyArg_ParseTuple(args, "i", &n)) + { + return NULL; + } + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + d=sane_get_option_descriptor(self->h, n); + v=malloc(d->size+1); + st=sane_control_option(self->h, n, SANE_ACTION_GET_VALUE, + v, NULL); + + if (st) + { + free(v); + return PySane_Error(st); + } + + switch(d->type) + { + case(SANE_TYPE_BOOL): + case(SANE_TYPE_INT): + value=Py_BuildValue("i", *( (SANE_Int*)v) ); + break; + case(SANE_TYPE_FIXED): + value=Py_BuildValue("d", SANE_UNFIX((*((SANE_Fixed*)v))) ); + break; + case(SANE_TYPE_STRING): + value=Py_BuildValue("s", v); + break; + case(SANE_TYPE_BUTTON): + case(SANE_TYPE_GROUP): + value=Py_BuildValue("O", Py_None); + break; + } + + free(v); + return value; +} + +static PyObject * +SaneDev_set_option(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + const SANE_Option_Descriptor *d; + SANE_Int i; + PyObject *value; + int n; + void *v; + + if (!PyArg_ParseTuple(args, "iO", &n, &value)) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + d=sane_get_option_descriptor(self->h, n); + v=malloc(d->size+1); + + switch(d->type) + { + case(SANE_TYPE_BOOL): + if (!PyInt_Check(value)) + { + PyErr_SetString(PyExc_TypeError, "SANE_BOOL requires an integer"); + free(v); + return NULL; + } + /* fall through */ + case(SANE_TYPE_INT): + if (!PyInt_Check(value)) + { + PyErr_SetString(PyExc_TypeError, "SANE_INT requires an integer"); + free(v); + return NULL; + } + *( (SANE_Int*)v) = PyInt_AsLong(value); + break; + case(SANE_TYPE_FIXED): + if (!PyFloat_Check(value)) + { + PyErr_SetString(PyExc_TypeError, "SANE_FIXED requires a floating point number"); + free(v); + return NULL; + } + *( (SANE_Fixed*)v) = SANE_FIX(PyFloat_AsDouble(value)); + break; + case(SANE_TYPE_STRING): + if (!PyString_Check(value)) + { + PyErr_SetString(PyExc_TypeError, "SANE_STRING requires a string"); + free(v); + return NULL; + } + strncpy(v, PyString_AsString(value), d->size-1); + ((char*)v)[d->size-1] = 0; + break; + case(SANE_TYPE_BUTTON): + case(SANE_TYPE_GROUP): + break; + } + + st=sane_control_option(self->h, n, SANE_ACTION_SET_VALUE, + v, &i); + if (st) {free(v); return PySane_Error(st);} + + free(v); + return Py_BuildValue("i", i); +} + +static PyObject * +SaneDev_set_auto_option(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + const SANE_Option_Descriptor *d; + SANE_Int i; + int n; + + if (!PyArg_ParseTuple(args, "i", &n)) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + d=sane_get_option_descriptor(self->h, n); + st=sane_control_option(self->h, n, SANE_ACTION_SET_AUTO, + NULL, &i); + if (st) {return PySane_Error(st);} + + return Py_BuildValue("i", i); + } + +#define READSIZE 32768 + +static PyObject * +SaneDev_snap(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + /* The buffer should be a multiple of 3 in size, so each sane_read + operation will return an integral number of RGB triples. */ + SANE_Byte buffer[READSIZE]; /* XXX how big should the buffer be? */ + SANE_Int len, lastlen; + Imaging im; + SANE_Parameters p; + int px, py, remain, cplen, bufpos, padbytes; + long L; + char errmsg[80]; + union + { char c[2]; + INT16 i16; + } + endian; + PyObject *pyNoCancel = NULL; + int noCancel = 0; + + endian.i16 = 1; + + if (!PyArg_ParseTuple(args, "l|O", &L, &pyNoCancel)) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + im=(Imaging)L; + + if (pyNoCancel) + noCancel = PyObject_IsTrue(pyNoCancel); + + st=SANE_STATUS_GOOD; px=py=0; + /* xxx not yet implemented + - handscanner support (i.e., unknown image length during start) + - generally: move the functionality from method snap in sane.py + down here -- I don't like this cross-dependency. + we need to call sane_get_parameters here, and we can create + the result Image object here. + */ + + Py_UNBLOCK_THREADS + sane_get_parameters(self->h, &p); + if (p.format == SANE_FRAME_GRAY) + { + switch (p.depth) + { + case 1: + remain = p.bytes_per_line * im->ysize; + padbytes = p.bytes_per_line - (im->xsize+7)/8; + bufpos = 0; + lastlen = len = 0; + while (st!=SANE_STATUS_EOF && py < im->ysize) + { + while (len > 0 && py < im->ysize) + { + int i, j, k; + j = buffer[bufpos++]; + k = 0x80; + for (i = 0; i < 8 && px < im->xsize; i++) + { + im->image8[py][px++] = (k&j) ? 0 : 0xFF; + k = k >> 1; + } + len--; + if (px >= im->xsize) + { + bufpos += padbytes; + len -= padbytes; + py++; + px = 0; + } + } + st=sane_read(self->h, buffer, + remainh); + Py_BLOCK_THREADS + return PySane_Error(st); + } + bufpos -= lastlen; + lastlen = len; + remain -= len; + /* skip possible pad bytes at the start of the buffer */ + len -= bufpos; + } + break; + case 8: + remain = p.bytes_per_line * im->ysize; + padbytes = p.bytes_per_line - im->xsize; + bufpos = 0; + len = 0; + while (st!=SANE_STATUS_EOF && py < im->ysize) + { + while (len > 0 && py < im->ysize) + { + cplen = len; + if (px + cplen >= im->xsize) + cplen = im->xsize - px; + memcpy(&im->image8[py][px], &buffer[bufpos], cplen); + len -= cplen; + bufpos += cplen; + px += cplen; + if (px >= im->xsize) + { + px = 0; + py++; + bufpos += padbytes; + len -= padbytes; + } + } + bufpos = -len; + + st=sane_read(self->h, buffer, + remainh); + Py_BLOCK_THREADS + return PySane_Error(st); + } + remain -= len; + len -= bufpos; + } + break; + case 16: + remain = p.bytes_per_line * im->ysize; + padbytes = p.bytes_per_line - 2 * im->xsize; + bufpos = endian.c[0]; + lastlen = len = 0; + while (st!=SANE_STATUS_EOF && py < im->ysize) + { + while (len > 0 && py < im->ysize) + { + im->image8[py][px++] = buffer[bufpos]; + bufpos += 2; + len -= 2; + if (px >= im->xsize) + { + bufpos += padbytes; + len -= padbytes; + py++; + px = 0; + } + } + st=sane_read(self->h, buffer, + remainh); + Py_BLOCK_THREADS + return PySane_Error(st); + } + remain -= len; + bufpos -= lastlen; + lastlen = len; + len -= bufpos; + } + break; + default: + /* other depths are not formally "illegal" according to the + Sane API, but it's agreed by Sane developers that other + depths than 1, 8, 16 should not be used + */ + sane_cancel(self->h); + Py_BLOCK_THREADS + snprintf(errmsg, 80, "unsupported pixel depth: %i", p.depth); + PyErr_SetString(ErrorObject, errmsg); + return NULL; + } + } + else if (p.format == SANE_FRAME_RGB) + { + int incr, color, pxs, pxmax, bit, val, mask; + switch (p.depth) + { + case 1: + remain = p.bytes_per_line * im->ysize; + padbytes = p.bytes_per_line - ((im->xsize+7)/8) * 3; + bufpos = 0; + len = 0; + lastlen = 0; + pxmax = 4 * im->xsize; + while (st!=SANE_STATUS_EOF && py < im->ysize) + { + pxs = px; + for (color = 0; color < 3; color++) + { + while (len <= 0 && st == SANE_STATUS_GOOD) + { + st=sane_read(self->h, buffer, + remainh); + Py_BLOCK_THREADS + return PySane_Error(st); + } + bufpos -= lastlen; + remain -= len; + lastlen = len; + /* skip possible pad bytes at the start of the buffer */ + len -= bufpos; + } + if (st == SANE_STATUS_EOF) break; + pxs = px; + val = buffer[bufpos++]; + len--; + mask = 0x80; + for (bit = 0; (bit < 8) && (px < pxmax); bit++) + { + ((UINT8**)(im->image32))[py][px] = (val&mask) ? 0xFF : 0; + mask = mask >> 1; + px += 4; + } + pxs++; + px = pxs; + } + if (st == SANE_STATUS_EOF) + break; + for (bit = 0; bit < 8 && px < pxmax; bit++) + { + ((UINT8**)(im->image32))[py][px] = 0; + px += 4; + } + px -= 3; + if (px >= pxmax) + { + bufpos += padbytes; + len -= padbytes; + py++; + px = 0; + } + } + break; + case 8: + case 16: + if (p.depth == 8) + { + padbytes = p.bytes_per_line - 3 * im->xsize; + bufpos = 0; + incr = 1; + } + else + { + padbytes = p.bytes_per_line - 6 * im->xsize; + bufpos = endian.c[0]; + incr = 2; + } + remain = p.bytes_per_line * im->ysize; + len = 0; + lastlen = 0; + pxmax = 4 * im->xsize; + /* probably not very efficient. But we have to deal with these + possible conditions: + - we may have padding bytes at the end of a scan line + - the number of bytes read with sane_read may be smaller + than the number of pad bytes + - the buffer may become empty after setting any of the + red/green/blue pixel values + + */ + while (st != SANE_STATUS_EOF && py < im->ysize) + { + for (color = 0; color < 3; color++) + { + while (len <= 0 && st == SANE_STATUS_GOOD) + { + bufpos -= lastlen; + if (remain == 0) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + PyErr_SetString(ErrorObject, "internal _sane error: premature end of scan"); + return NULL; + } + st = sane_read(self->h, buffer, + remain<(READSIZE) ? remain : (READSIZE), &len); + if (st && (st!=SANE_STATUS_EOF)) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + return PySane_Error(st); + } + lastlen = len; + remain -= len; + len -= bufpos; + } + if (st == SANE_STATUS_EOF) break; + ((UINT8**)(im->image32))[py][px++] = buffer[bufpos]; + bufpos += incr; + len -= incr; + } + if (st == SANE_STATUS_EOF) break; + + ((UINT8**)(im->image32))[py][px++] = 0; + + if (px >= pxmax) + { + px = 0; + py++; + bufpos += padbytes; + len -= padbytes; + } + } + break; + default: + Py_BLOCK_THREADS + sane_cancel(self->h); + snprintf(errmsg, 80, "unsupported pixel depth: %i", p.depth); + PyErr_SetString(ErrorObject, errmsg); + return NULL; + } + + } + else /* should be SANE_FRAME_RED, GREEN or BLUE */ + { + int lastlen, pxa, pxmax, offset, incr, frame_count = 0; + /* at least the Sane test backend behaves a bit weird, if + it returns "premature EOF" for sane_read, i.e., if the + option "return value of sane_read" is set to SANE_STATUS_EOF. + In this case, the test backend does not advance to the next frame, + so p.last_frame will never be set... + So let's count the number of frames we try to acquire + */ + while (!p.last_frame && frame_count < 4) + { + frame_count++; + st = sane_get_parameters(self->h, &p); + if (st) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + return PySane_Error(st); + } + remain = p.bytes_per_line * im->ysize; + bufpos = 0; + len = 0; + lastlen = 0; + py = 0; + switch (p.format) + { + case SANE_FRAME_RED: + offset = 0; + break; + case SANE_FRAME_GREEN: + offset = 1; + break; + case SANE_FRAME_BLUE: + offset = 2; + break; + default: + sane_cancel(self->h); + Py_BLOCK_THREADS + snprintf(errmsg, 80, "unknown/invalid frame format: %i", p.format); + PyErr_SetString(ErrorObject, errmsg); + return NULL; + } + px = offset; + pxa = 3; + pxmax = im->xsize * 4; + switch (p.depth) + { + case 1: + padbytes = p.bytes_per_line - (im->xsize+7)/8; + st = SANE_STATUS_GOOD; + while (st != SANE_STATUS_EOF && py < im->ysize) + { + while (len > 0) + { + int bit, mask, val; + val = buffer[bufpos++]; len--; + mask = 0x80; + for (bit = 0; bit < 8 && px < pxmax; bit++) + { + ((UINT8**)(im->image32))[py][px] + = val&mask ? 0xFF : 0; + ((UINT8**)(im->image32))[py][pxa] = 0; + px += 4; + pxa += 4; + mask = mask >> 1; + } + + if (px >= pxmax) + { + px = offset; + pxa = 3; + py++; + bufpos += padbytes; + len -= padbytes; + } + } + while (len <= 0 && st == SANE_STATUS_GOOD && remain > 0) + { + bufpos -= lastlen; + st = sane_read(self->h, buffer, + remain<(READSIZE) ? remain : (READSIZE), &len); + if (st && (st!=SANE_STATUS_EOF)) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + return PySane_Error(st); + } + remain -= len; + lastlen = len; + len -= bufpos; + } + } + break; + case 8: + case 16: + if (p.depth == 8) + { + padbytes = p.bytes_per_line - im->xsize; + incr = 1; + } + else + { + padbytes = p.bytes_per_line - 2 * im->xsize; + incr = 2; + bufpos = endian.c[0]; + } + st = SANE_STATUS_GOOD; + while (st != SANE_STATUS_EOF && py < im->ysize) + { + while (len <= 0) + { + bufpos -= lastlen; + if (remain == 0) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + PyErr_SetString(ErrorObject, "internal _sane error: premature end of scan"); + return NULL; + } + st = sane_read(self->h, buffer, + remain<(READSIZE) ? remain : (READSIZE), &len); + if (st && (st!=SANE_STATUS_EOF)) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + return PySane_Error(st); + } + if (st == SANE_STATUS_EOF) + break; + lastlen = len; + remain -= len; + if (bufpos >= len) + len = 0; + else + len -= bufpos; + } + if (st == SANE_STATUS_EOF) + break; + ((UINT8**)(im->image32))[py][px] = buffer[bufpos]; + ((UINT8**)(im->image32))[py][pxa] = 0; + bufpos += incr; + len -= incr; + px += 4; + pxa += 4; + + if (px >= pxmax) + { + px = offset; + pxa = 3; + py++; + bufpos += padbytes; + len -= padbytes; + } + } + break; + default: + sane_cancel(self->h); + Py_BLOCK_THREADS + snprintf(errmsg, 80, "unsupported pixel depth: %i", p.depth); + PyErr_SetString(ErrorObject, errmsg); + return NULL; + } + if (!p.last_frame) + { + /* all sane_read calls in the above loop may return + SANE_STATUS_GOOD, but the backend may need another sane_read + call which returns SANE_STATUS_EOF in order to start + a new frame. + */ + do { + st = sane_read(self->h, buffer, READSIZE, &len); + } + while (st == SANE_STATUS_GOOD); + if (st != SANE_STATUS_EOF) + { + Py_BLOCK_THREADS + sane_cancel(self->h); + return PySane_Error(st); + } + + st = sane_start(self->h); + if (st) + { + Py_BLOCK_THREADS + return PySane_Error(st); + } + } + } + } + /* enforce SANE_STATUS_EOF. Can be necessary for ADF scans for some backends */ + do { + st = sane_read(self->h, buffer, READSIZE, &len); + } + while (st == SANE_STATUS_GOOD); + if (st != SANE_STATUS_EOF) + { + sane_cancel(self->h); + Py_BLOCK_THREADS + return PySane_Error(st); + } + + if (!noCancel) + sane_cancel(self->h); + Py_BLOCK_THREADS + Py_INCREF(Py_None); + return Py_None; +} + + +#ifdef WITH_NUMARRAY + +#include "numarray/libnumarray.h" + +/* this global variable is set to 1 in 'init_sane()' after successfully + importing the numarray module. */ +int NUMARRAY_IMPORTED = 0; + +static PyObject * +SaneDev_arr_snap(SaneDevObject *self, PyObject *args) +{ + SANE_Status st; + SANE_Byte buffer[READSIZE]; + SANE_Int len; + SANE_Parameters p; + + PyArrayObject *pyArr = NULL; + NumarrayType arrType; + int line, line_index, buffer_index, remain_bytes_line, num_pad_bytes; + int cp_num_bytes, total_remain, bpp, arr_bytes_per_line; + int pixels_per_line = -1; + char errmsg[80]; + + if (!NUMARRAY_IMPORTED) + { + PyErr_SetString(ErrorObject, "numarray package not available"); + return NULL; + } + + if (!PyArg_ParseTuple(args, "|i", &pixels_per_line)) + return NULL; + if (self->h==NULL) + { + PyErr_SetString(ErrorObject, "SaneDev object is closed"); + return NULL; + } + + sane_get_parameters(self->h, &p); + if (p.format != SANE_FRAME_GRAY) + { + sane_cancel(self->h); + snprintf(errmsg, 80, "numarray only supports gray-scale images"); + PyErr_SetString(ErrorObject, errmsg); + return NULL; + } + + if (p.depth == 8) + { + bpp=1; /* bytes-per-pixel */ + arrType = tUInt8; + } + else if (p.depth == 16) + { + bpp=2; /* bytes-per-pixel */ + arrType = tUInt16; + } + else + { + sane_cancel(self->h); + snprintf(errmsg, 80, "arrsnap: unsupported pixel depth: %i", p.depth); + PyErr_SetString(ErrorObject, errmsg); + return NULL; + } + + if (pixels_per_line < 1) + /* The user can choose a smaller result array than the actual scan */ + pixels_per_line = p.pixels_per_line; + else + if (pixels_per_line > p.pixels_per_line) + { + PyErr_SetString(ErrorObject,"given pixels_per_line too big"); + return NULL; + } + /* important: NumArray have indices like (y, x) !! */ + if (!(pyArr = NA_NewArray(NULL, arrType, 2, p.lines, pixels_per_line))) + { + PyErr_SetString(ErrorObject, "failed to create NumArray object"); + return NULL; + } + + arr_bytes_per_line = pixels_per_line * bpp; + st=SANE_STATUS_GOOD; +#ifdef WRITE_PGM + FILE *fp; + fp = fopen("sane_p5.pgm", "w"); + fprintf(fp, "P5\n%d %d\n%d\n", p.pixels_per_line, + p.lines, (int) pow(2.0, (double) p.depth)-1); +#endif + line_index = line = 0; + remain_bytes_line = arr_bytes_per_line; + total_remain = p.bytes_per_line * p.lines; + num_pad_bytes = p.bytes_per_line - arr_bytes_per_line; + + while (st!=SANE_STATUS_EOF) + { + Py_BEGIN_ALLOW_THREADS + st = sane_read(self->h, buffer, + READSIZE < total_remain ? READSIZE : total_remain, &len); + Py_END_ALLOW_THREADS +#ifdef WRITE_PGM + printf("p5_write: read %d of %d\n", len, READSIZE); + fwrite(buffer, 1, len, fp); +#endif + + buffer_index = 0; + total_remain -= len; + + while (len > 0) + { + /* copy at most the number of bytes that fit into (the rest of) + one line: */ + cp_num_bytes = (len > remain_bytes_line ? remain_bytes_line : len); + remain_bytes_line -= cp_num_bytes; + len -= cp_num_bytes; +#ifdef DEBUG + printf("copying %d bytes from b_idx %d to d_idx %d\n", + cp_num_bytes, buffer_index, + line * arr_bytes_per_line + line_index); + printf("len is now %d\n", len); +#endif + memcpy(pyArr->data + line * arr_bytes_per_line + line_index, + buffer + buffer_index, cp_num_bytes); + + buffer_index += cp_num_bytes; + if (remain_bytes_line ==0) + { + /* The line has been completed, so reinitialize remain_bytes_line + increase the line counter, and reset line_index */ +#ifdef DEBUG + printf("line %d full, skipping %d bytes\n",line,num_pad_bytes); +#endif + remain_bytes_line = arr_bytes_per_line; + line++; + line_index = 0; + /* Skip the number of bytes in the input stream which + are not used: */ + len -= num_pad_bytes; + buffer_index += num_pad_bytes; + } + else + line_index += cp_num_bytes; + } + } +#ifdef WRITE_PGM + fclose(fp); + printf("p5_write finished\n"); +#endif + sane_cancel(self->h); + return (PyObject*) pyArr; +} + + + +#endif /* WITH_NUMARRAY */ + +static PyMethodDef SaneDev_methods[] = { + {"get_parameters", (PyCFunction)SaneDev_get_parameters, 1}, + + {"get_options", (PyCFunction)SaneDev_get_options, 1}, + {"get_option", (PyCFunction)SaneDev_get_option, 1}, + {"set_option", (PyCFunction)SaneDev_set_option, 1}, + {"set_auto_option", (PyCFunction)SaneDev_set_auto_option, 1}, + + {"start", (PyCFunction)SaneDev_start, 1}, + {"cancel", (PyCFunction)SaneDev_cancel, 1}, + {"snap", (PyCFunction)SaneDev_snap, 1}, +#ifdef WITH_NUMARRAY + {"arr_snap", (PyCFunction)SaneDev_arr_snap, 1}, +#endif /* WITH_NUMARRAY */ + {"fileno", (PyCFunction)SaneDev_fileno, 1}, + {"close", (PyCFunction)SaneDev_close, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject * +SaneDev_getattr(SaneDevObject *self, char *name) +{ + return Py_FindMethod(SaneDev_methods, (PyObject *)self, name); +} + +staticforward PyTypeObject SaneDev_Type = { + PyObject_HEAD_INIT(&PyType_Type) + 0, /*ob_size*/ + "SaneDev", /*tp_name*/ + sizeof(SaneDevObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)SaneDev_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)SaneDev_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ +}; + +/* --------------------------------------------------------------------- */ + +static PyObject * +PySane_init(PyObject *self, PyObject *args) +{ + SANE_Status st; + SANE_Int version; + + if (!PyArg_ParseTuple(args, "")) + return NULL; + + /* XXX Authorization is not yet supported */ + st=sane_init(&version, NULL); + if (st) return PySane_Error(st); + return Py_BuildValue("iiii", version, SANE_VERSION_MAJOR(version), + SANE_VERSION_MINOR(version), SANE_VERSION_BUILD(version)); +} + +static PyObject * +PySane_exit(PyObject *self, PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return NULL; + + sane_exit(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +PySane_get_devices(PyObject *self, PyObject *args) +{ + SANE_Device **devlist; + SANE_Device *dev; + SANE_Status st; + PyObject *list; + int local_only, i; + + if (!PyArg_ParseTuple(args, "|i", &local_only)) + { + return NULL; + } + + st=sane_get_devices(&devlist, local_only); + if (st) return PySane_Error(st); + if (!(list = PyList_New(0))) + return NULL; + for(i=0; devlist[i]!=NULL; i++) + { + dev=devlist[i]; + PyList_Append(list, Py_BuildValue("ssss", dev->name, dev->vendor, + dev->model, dev->type)); + } + + return list; +} + +/* Function returning new SaneDev object */ + +static PyObject * +PySane_open(PyObject *self, PyObject *args) +{ + SaneDevObject *rv; + SANE_Status st; + char *name; + + if (!PyArg_ParseTuple(args, "s", &name)) + return NULL; + rv = newSaneDevObject(); + if ( rv == NULL ) + return NULL; + st = sane_open(name, &(rv->h)); + if (st) + { + Py_DECREF(rv); + return PySane_Error(st); + } + return (PyObject *)rv; +} + +static PyObject * +PySane_OPTION_IS_ACTIVE(PyObject *self, PyObject *args) +{ + SANE_Int cap; + long lg; + + if (!PyArg_ParseTuple(args, "l", &lg)) + return NULL; + cap=lg; + return PyInt_FromLong( SANE_OPTION_IS_ACTIVE(cap)); +} + +static PyObject * +PySane_OPTION_IS_SETTABLE(PyObject *self, PyObject *args) +{ + SANE_Int cap; + long lg; + + if (!PyArg_ParseTuple(args, "l", &lg)) + return NULL; + cap=lg; + return PyInt_FromLong( SANE_OPTION_IS_SETTABLE(cap)); +} + + +/* List of functions defined in the module */ + +static PyMethodDef PySane_methods[] = { + {"init", PySane_init, 1}, + {"exit", PySane_exit, 1}, + {"get_devices", PySane_get_devices, 1}, + {"_open", PySane_open, 1}, + {"OPTION_IS_ACTIVE", PySane_OPTION_IS_ACTIVE, 1}, + {"OPTION_IS_SETTABLE", PySane_OPTION_IS_SETTABLE, 1}, + {NULL, NULL} /* sentinel */ +}; + + +static void +insint(PyObject *d, char *name, int value) +{ + PyObject *v = PyInt_FromLong((long) value); + if (!v || PyDict_SetItemString(d, name, v)) + Py_FatalError("can't initialize sane module"); + + Py_DECREF(v); +} + +void +init_sane(void) +{ + PyObject *m, *d; + + /* Create the module and add the functions */ + m = Py_InitModule("_sane", PySane_methods); + + /* Add some symbolic constants to the module */ + d = PyModule_GetDict(m); + ErrorObject = PyString_FromString("_sane.error"); + PyDict_SetItemString(d, "error", ErrorObject); + + insint(d, "INFO_INEXACT", SANE_INFO_INEXACT); + insint(d, "INFO_RELOAD_OPTIONS", SANE_INFO_RELOAD_OPTIONS); + insint(d, "RELOAD_PARAMS", SANE_INFO_RELOAD_PARAMS); + + insint(d, "FRAME_GRAY", SANE_FRAME_GRAY); + insint(d, "FRAME_RGB", SANE_FRAME_RGB); + insint(d, "FRAME_RED", SANE_FRAME_RED); + insint(d, "FRAME_GREEN", SANE_FRAME_GREEN); + insint(d, "FRAME_BLUE", SANE_FRAME_BLUE); + + insint(d, "CONSTRAINT_NONE", SANE_CONSTRAINT_NONE); + insint(d, "CONSTRAINT_RANGE", SANE_CONSTRAINT_RANGE); + insint(d, "CONSTRAINT_WORD_LIST", SANE_CONSTRAINT_WORD_LIST); + insint(d, "CONSTRAINT_STRING_LIST", SANE_CONSTRAINT_STRING_LIST); + + insint(d, "TYPE_BOOL", SANE_TYPE_BOOL); + insint(d, "TYPE_INT", SANE_TYPE_INT); + insint(d, "TYPE_FIXED", SANE_TYPE_FIXED); + insint(d, "TYPE_STRING", SANE_TYPE_STRING); + insint(d, "TYPE_BUTTON", SANE_TYPE_BUTTON); + insint(d, "TYPE_GROUP", SANE_TYPE_GROUP); + + insint(d, "UNIT_NONE", SANE_UNIT_NONE); + insint(d, "UNIT_PIXEL", SANE_UNIT_PIXEL); + insint(d, "UNIT_BIT", SANE_UNIT_BIT); + insint(d, "UNIT_MM", SANE_UNIT_MM); + insint(d, "UNIT_DPI", SANE_UNIT_DPI); + insint(d, "UNIT_PERCENT", SANE_UNIT_PERCENT); + insint(d, "UNIT_MICROSECOND", SANE_UNIT_MICROSECOND); + + insint(d, "CAP_SOFT_SELECT", SANE_CAP_SOFT_SELECT); + insint(d, "CAP_HARD_SELECT", SANE_CAP_HARD_SELECT); + insint(d, "CAP_SOFT_DETECT", SANE_CAP_SOFT_DETECT); + insint(d, "CAP_EMULATED", SANE_CAP_EMULATED); + insint(d, "CAP_AUTOMATIC", SANE_CAP_AUTOMATIC); + insint(d, "CAP_INACTIVE", SANE_CAP_INACTIVE); + insint(d, "CAP_ADVANCED", SANE_CAP_ADVANCED); + + /* handy for checking array lengths: */ + insint(d, "SANE_WORD_SIZE", sizeof(SANE_Word)); + + /* possible return values of set_option() */ + insint(d, "INFO_INEXACT", SANE_INFO_INEXACT); + insint(d, "INFO_RELOAD_OPTIONS", SANE_INFO_RELOAD_OPTIONS); + insint(d, "INFO_RELOAD_PARAMS", SANE_INFO_RELOAD_PARAMS); + + /* Check for errors */ + if (PyErr_Occurred()) + Py_FatalError("can't initialize module _sane"); + +#ifdef WITH_NUMARRAY + import_libnumarray(); + if (PyErr_Occurred()) + PyErr_Clear(); + else + /* this global variable is declared just in front of the + arr_snap() function and should be set to 1 after + successfully importing the numarray module. */ + NUMARRAY_IMPORTED = 1; + +#endif /* WITH_NUMARRAY */ +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py new file mode 100755 index 00000000000..0104af2d550 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + +# +# Shows how to scan a 16 bit grayscale image into a numarray object +# + +# Get the path set up to find PIL modules if not installed yet: +import sys ; sys.path.append('../PIL') + +from numarray import * +import sane +import Image + +def toImage(arr): + if arr.type().bytes == 1: + # need to swap coordinates btw array and image (with [::-1]) + im = Image.fromstring('L', arr.shape[::-1], arr.tostring()) + else: + arr_c = arr - arr.min() + arr_c *= (255./arr_c.max()) + arr = arr_c.astype(UInt8) + # need to swap coordinates btw array and image (with [::-1]) + im = Image.fromstring('L', arr.shape[::-1], arr.tostring()) + return im + +print 'SANE version:', sane.init() +print 'Available devices=', sane.get_devices() + +s = sane.open(sane.get_devices()[0][0]) + +# Set scan parameters +s.mode = 'gray' +s.br_x=320. ; s.br_y=240. + +print 'Device parameters:', s.get_parameters() + +s.depth=16 +arr16 = s.arr_scan() +toImage(arr16).show() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py new file mode 100755 index 00000000000..016361f8a82 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +# +# Shows how to scan a color image into a PIL rgb-image +# + +# Get the path set up to find PIL modules if not installed yet: +import sys ; sys.path.append('../PIL') + +import sane +print 'SANE version:', sane.init() +print 'Available devices=', sane.get_devices() + +s = sane.open(sane.get_devices()[0][0]) + +s.mode = 'color' +s.br_x=320. ; s.br_y=240. + +print 'Device parameters:', s.get_parameters() + +# Initiate the scan +s.start() + +# Get an Image object +# (For my B&W QuickCam, this is a grey-scale image. Other scanning devices +# may return a +im=s.snap() + +# Write the image out as a GIF file +#im.save('foo.gif') + +# The show method() simply saves the image to a temporary file and calls "xv". +im.show() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py new file mode 100755 index 00000000000..27be5a259c4 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py @@ -0,0 +1,289 @@ +# sane.py +# +# Python wrapper on top of the _sane module, which is in turn a very +# thin wrapper on top of the SANE library. For a complete understanding +# of SANE, consult the documentation at the SANE home page: +# http://www.mostang.com/sane/ . + +__version__ = '2.0' +__author__ = ['Andrew Kuchling', 'Ralph Heinkel'] + +from PIL import Image + +import _sane +from _sane import * + +TYPE_STR = { TYPE_BOOL: "TYPE_BOOL", TYPE_INT: "TYPE_INT", + TYPE_FIXED: "TYPE_FIXED", TYPE_STRING: "TYPE_STRING", + TYPE_BUTTON: "TYPE_BUTTON", TYPE_GROUP: "TYPE_GROUP" } + +UNIT_STR = { UNIT_NONE: "UNIT_NONE", + UNIT_PIXEL: "UNIT_PIXEL", + UNIT_BIT: "UNIT_BIT", + UNIT_MM: "UNIT_MM", + UNIT_DPI: "UNIT_DPI", + UNIT_PERCENT: "UNIT_PERCENT", + UNIT_MICROSECOND: "UNIT_MICROSECOND" } + + +class Option: + """Class representing a SANE option. + Attributes: + index -- number from 0 to n, giving the option number + name -- a string uniquely identifying the option + title -- single-line string containing a title for the option + desc -- a long string describing the option; useful as a help message + type -- type of this option. Possible values: TYPE_BOOL, + TYPE_INT, TYPE_STRING, and so forth. + unit -- units of this option. Possible values: UNIT_NONE, + UNIT_PIXEL, etc. + size -- size of the value in bytes + cap -- capabilities available; CAP_EMULATED, CAP_SOFT_SELECT, etc. + constraint -- constraint on values. Possible values: + None : No constraint + (min,max,step) Integer values, from min to max, stepping by + list of integers or strings: only the listed values are allowed + """ + + def __init__(self, args, scanDev): + import string + self.scanDev = scanDev # needed to get current value of this option + self.index, self.name = args[0], args[1] + self.title, self.desc = args[2], args[3] + self.type, self.unit = args[4], args[5] + self.size, self.cap = args[6], args[7] + self.constraint = args[8] + def f(x): + if x=='-': return '_' + else: return x + if type(self.name)!=type(''): self.py_name=str(self.name) + else: self.py_name=string.join(map(f, self.name), '') + + def is_active(self): + return _sane.OPTION_IS_ACTIVE(self.cap) + def is_settable(self): + return _sane.OPTION_IS_SETTABLE(self.cap) + def __repr__(self): + if self.is_settable(): + settable = 'yes' + else: + settable = 'no' + if self.is_active(): + active = 'yes' + curValue = repr(getattr(self.scanDev, self.py_name)) + else: + active = 'no' + curValue = '' + s = """\nName: %s +Cur value: %s +Index: %d +Title: %s +Desc: %s +Type: %s +Unit: %s +Constr: %s +active: %s +settable: %s\n""" % (self.py_name, curValue, + self.index, self.title, self.desc, + TYPE_STR[self.type], UNIT_STR[self.unit], + `self.constraint`, active, settable) + return s + + +class _SaneIterator: + """ intended for ADF scans. + """ + + def __init__(self, device): + self.device = device + + def __iter__(self): + return self + + def __del__(self): + self.device.cancel() + + def next(self): + try: + self.device.start() + except error, v: + if v == 'Document feeder out of documents': + raise StopIteration + else: + raise + return self.device.snap(1) + + + +class SaneDev: + """Class representing a SANE device. + Methods: + start() -- initiate a scan, using the current settings + snap() -- snap a picture, returning an Image object + arr_snap() -- snap a picture, returning a numarray object + cancel() -- cancel an in-progress scanning operation + fileno() -- return the file descriptor for the scanner (handy for select) + + Also available, but rather low-level: + get_parameters() -- get the current parameter settings of the device + get_options() -- return a list of tuples describing all the options. + + Attributes: + optlist -- list of option names + + You can also access an option name to retrieve its value, and to + set it. For example, if one option has a .name attribute of + imagemode, and scanner is a SaneDev object, you can do: + print scanner.imagemode + scanner.imagemode = 'Full frame' + scanner.['imagemode'] returns the corresponding Option object. + """ + def __init__(self, devname): + d=self.__dict__ + d['sane_signature'] = self._getSaneSignature(devname) + d['scanner_model'] = d['sane_signature'][1:3] + d['dev'] = _sane._open(devname) + self.__load_option_dict() + + def _getSaneSignature(self, devname): + devices = get_devices() + if not devices: + raise RuntimeError('no scanner available') + for dev in devices: + if devname == dev[0]: + return dev + raise RuntimeError('no such scan device "%s"' % devname) + + def __load_option_dict(self): + d=self.__dict__ + d['opt']={} + optlist=d['dev'].get_options() + for t in optlist: + o=Option(t, self) + if o.type!=TYPE_GROUP: + d['opt'][o.py_name]=o + + def __setattr__(self, key, value): + dev=self.__dict__['dev'] + optdict=self.__dict__['opt'] + if not optdict.has_key(key): + self.__dict__[key]=value ; return + opt=optdict[key] + if opt.type==TYPE_GROUP: + raise AttributeError, "Groups can't be set: "+key + if not _sane.OPTION_IS_ACTIVE(opt.cap): + raise AttributeError, 'Inactive option: '+key + if not _sane.OPTION_IS_SETTABLE(opt.cap): + raise AttributeError, "Option can't be set by software: "+key + if type(value) == int and opt.type == TYPE_FIXED: + # avoid annoying errors of backend if int is given instead float: + value = float(value) + self.last_opt = dev.set_option(opt.index, value) + # do binary AND to find if we have to reload options: + if self.last_opt & INFO_RELOAD_OPTIONS: + self.__load_option_dict() + + def __getattr__(self, key): + dev=self.__dict__['dev'] + optdict=self.__dict__['opt'] + if key=='optlist': + return self.opt.keys() + if key=='area': + return (self.tl_x, self.tl_y),(self.br_x, self.br_y) + if not optdict.has_key(key): + raise AttributeError, 'No such attribute: '+key + opt=optdict[key] + if opt.type==TYPE_BUTTON: + raise AttributeError, "Buttons don't have values: "+key + if opt.type==TYPE_GROUP: + raise AttributeError, "Groups don't have values: "+key + if not _sane.OPTION_IS_ACTIVE(opt.cap): + raise AttributeError, 'Inactive option: '+key + value = dev.get_option(opt.index) + return value + + def __getitem__(self, key): + return self.opt[key] + + def get_parameters(self): + """Return a 5-tuple holding all the current device settings: + (format, last_frame, (pixels_per_line, lines), depth, bytes_per_line) + +- format is one of 'L' (grey), 'RGB', 'R' (red), 'G' (green), 'B' (blue). +- last_frame [bool] indicates if this is the last frame of a multi frame image +- (pixels_per_line, lines) specifies the size of the scanned image (x,y) +- lines denotes the number of scanlines per frame +- depth gives number of pixels per sample +""" + return self.dev.get_parameters() + + def get_options(self): + "Return a list of tuples describing all the available options" + return self.dev.get_options() + + def start(self): + "Initiate a scanning operation" + return self.dev.start() + + def cancel(self): + "Cancel an in-progress scanning operation" + return self.dev.cancel() + + def snap(self, no_cancel=0): + "Snap a picture, returning a PIL image object with the results" + (mode, last_frame, + (xsize, ysize), depth, bytes_per_line) = self.get_parameters() + if mode in ['gray', 'red', 'green', 'blue']: + format = 'L' + elif mode == 'color': + format = 'RGB' + else: + raise ValueError('got unknown "mode" from self.get_parameters()') + im=Image.new(format, (xsize,ysize)) + self.dev.snap( im.im.id, no_cancel ) + return im + + def scan(self): + self.start() + return self.snap() + + def multi_scan(self): + return _SaneIterator(self) + + def arr_snap(self, multipleOf=1): + """Snap a picture, returning a numarray object with the results. + By default the resulting array has the same number of pixels per + line as specified in self.get_parameters()[2][0] + However sometimes it is necessary to obtain arrays where + the number of pixels per line is e.g. a multiple of 4. This can then + be achieved with the option 'multipleOf=4'. So if the scanner + scanned 34 pixels per line, you will obtain an array with 32 pixels + per line. + """ + (mode, last_frame, (xsize, ysize), depth, bpl) = self.get_parameters() + if not mode in ['gray', 'red', 'green', 'blue']: + raise RuntimeError('arr_snap() only works with monochrome images') + if multipleOf < 1: + raise ValueError('option "multipleOf" must be a positive number') + elif multipleOf > 1: + pixels_per_line = xsize - divmod(xsize, 4)[1] + else: + pixels_per_line = xsize + return self.dev.arr_snap(pixels_per_line) + + def arr_scan(self, multipleOf=1): + self.start() + return self.arr_snap(multipleOf=multipleOf) + + def fileno(self): + "Return the file descriptor for the scanning device" + return self.dev.fileno() + + def close(self): + self.dev.close() + + +def open(devname): + "Open a device for scanning" + new=SaneDev(devname) + return new diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt new file mode 100755 index 00000000000..db86938e313 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt @@ -0,0 +1,294 @@ +The _sane_ module is an Python interface to the SANE (Scanning is Now +Easy) library, which provides access to various raster scanning +devices such as flatbed scanners and digital cameras. For more +information about SANE, consult the SANE Web site at +http://www.mostang.com/sane/ . Note that this +documentation doesn't duplicate all the information in the SANE +documentation, which you must also consult to get a complete +understanding. + +This module has been originally developed by A.M. Kuchling (amk1@erols.com), +now development has been taken over by Ralph Heinkel (rheinkel-at-email.de). +If you write to me please make sure to have the word 'SANE' or 'sane' in +the subject of your mail, otherwise it might be classified as spam in the +future. + + +The module exports two object types, a bunch of constants, and two +functions. + +get_devices() + Return a list of 4-tuples containing the available scanning + devices. Each tuple contains 4 strings: the device name, suitable for + passing to _open()_; the device's vendor; the model; and the type of + device, such as 'virtual device' or 'video camera'. + + >>> import sane ; sane.get_devices() + [('epson:libusb:001:004', 'Epson', 'GT-8300', 'flatbed scanner')] + +open(devicename) + Open a device, given a string containing its name. SANE + devices have names like 'epson:libusb:001:004'. If the attempt + to open the device fails, a _sane.error_ exception will be raised. If + there are no problems, a SaneDev object will be returned. + As an easy way to open the scanner (if only one is available) just type + >>> sane.open(sane.get_devices()[0][0]) + + +SaneDev objects +=============== + +The basic process of scanning an image consists of getting a SaneDev +object for the device, setting various parameters, starting the scan, +and then reading the image data. Images are composed of one or more +frames; greyscale and one-pass colour scanners return a single frame +containing all the image data, but 3-pass scanners will usually return +3 frames, one for each of the red, green, blue channels. + +Methods: +-------- +fileno() + Returns a file descriptor for the scanning device. This + method's existence means that SaneDev objects can be used by the + select module. + +get_parameters() + Return a tuple containing information about the current settings of + the device and the current frame: (format, last_frame, + pixels_per_line, lines, depth, bytes_per_line). + + mode -- 'gray' for greyscale image, 'color' for RGB image, or + one of 'red', 'green', 'blue' if the image is a single + channel of an RGB image (from PIL's point of view, + this is equivalent to 'L'). + last_frame -- A Boolean value, which is true if this is the + last frame of the image, and false otherwise. + pixels_per_line -- Width of the frame. + lines -- Height of the frame. + depth -- Depth of the image, measured in bits. SANE will only + allow using 8, 16, or 24-bit depths. + bytes_per_line -- Bytes required to store a single line of + data, as computed from pixels_per_line and depth. + +start() + Start a scan. This function must be called before the + _snap()_ method can be used. + +cancel() + Cancel a scan already in progress. + +snap(no_cancel=0) + Snap a single frame of data, returning a PIL Image object + containing the data. If no_cancel is false, the Sane library function + sane_cancel is called after the scan. This is reasonable in most cases, + but may cause backends for duplex ADF scanners to drop the backside image, + when snap() is called for the front side image. If no_cancel is true, + cancel() should be called manually, after all scans are finished. + +scan() + This is just a shortcut for s.start(); s.snap() + Returns a PIL image + +multi_scan() + This method returns an iterator. It is intended to be used for + scanning with an automatic document feeder. The next() method of the + iterator tries to start a scan. If this is successful, it returns a + PIL Image object, like scan(); if the document feeder runs out of + paper, it raises StopIteration, thereby signaling that the sequence + is ran out of items. + +arr_snap(multipleOf=1) + same as snap, but the result is a NumArray object. (Not that + num_array must be installed already at compilation time, otherwise + this feature will not be activated). + By default the resulting array has the same number of pixels per + line as specified in self.get_parameters()[2][0] + However sometimes it is necessary to obtain arrays where + the number of pixels per line is e.g. a multiple of 4. This can then + be achieved with the option 'multipleOf=4'. So if the scanner + scanned 34 pixels per line, you will obtain an array with 32 pixels + per line. + Note that this only works with monochrome images (e.g. gray-scales) + +arr_scan(multipleOf=1) + This is just a shortcut for s.start(); s.arr_snap(multipleOf=1) + Returns a NumArray object + +close() + Closes the object. + + +Attributes: +----------- +SaneDev objects have a few fixed attributes which are always +available, and a larger collection of attributes which vary depending +on the device. An Epson 1660 photo scanner has attributes like +'mode', 'depth', etc. +Another (pseudo scanner), the _pnm:0_ device, takes a PNM file and +simulates a scanner using the image data; a SaneDev object +representing the _pnm:0_ device therefore has a _filename_ attribute +which can be changed to specify the filename, _contrast_ and +_brightness_ attributes to modify the returned image, and so forth. + +The values of the scanner options may be an integer, floating-point +value, or string, depending on the nature of the option. + +sane_signature + The tuple for this scandev that is returned by sane.get_devices() + e.g. ('epson:libusb:001:006', 'Epson', 'GT-8300', 'flatbed scanner') + +scanner_model + same as sane_signature[1:3], i.e. ('Epson', 'GT-8300') for the case above. + +optlist + A list containing the all the options supported by this device. + + >>> import sane ; s=sane.open('epson:libusb:001:004') ; s.optlist + ['focus_position', 'color_correction', 'sharpness', ...., 'br_x'] + +A closer look at all options listed in s.optlist can be obtained +through the SaneOption objects. + +SaneOption objects +================== + +SANE's option handling is its most elaborate subsystem, intended to +allow automatically generating dialog boxes and prompts for user +configuration of the scanning device. The SaneOption object can be +used to get a human-readable name and description for an option, the +units to use, and what the legal values are. No information about the +current value of the option is available; for that, read the +corresponding attribute of a SaneDev object. + +This documentation does not explain all the details of SANE's option +handling; consult the SANE documentation for all the details. + +A scandevice option is accessed via __getitem__. For example +s['mode'] returns the option descriptor for the mode-option which +controls whether the scanner works in color, grayscale, or b/w mode. + +>>> s['mode'] +Name: mode +Cur value: Color +Index: 2 +Title: Scan mode +Desc: Selects the scan mode (e.g., lineart, monochrome, or color). +Type: TYPE_STRING +Unit: UNIT_NONE +Constr: ['Binary', 'Gray', 'Color'] +active: yes +settable: yes + +In order to change 'mode' to 'gray', just type: +>>> s.mode = 'gray' + + +With the attributes and methods of sane-option objects it is possible +to access individual option values: + +is_active() + Returns true if the option is active. + +is_settable() + Returns true if the option can be set under software control. + + +Attributes: + +cap + An integer containing various flags about the object's + capabilities; whether it's active, whether it's settable, etc. Also + available as the _capability_ attribute. + +constraint + The constraint placed on the value of this option. If it's + _None_, there are essentially no constraint of the value. It may also + be a list of integers or strings, in which case the value *must* be + one of the possibilities in the list. Numeric values may have a + 3-tuple as the constraint; this 3-tuple contains _(minimum, maximum, + increment)_, and the value must be in the defined range. + +desc + A lengthy description of what the option does; it may be shown + to the user for clarification. + +index + An integer giving the option's index in the option list. + +name + A short name for the option, as it comes from the sane-backend. + +py_name + The option's name, as a legal Python identifier. The name + attribute may contain the '-' character, so it will be converted to + '_' for the py_name attribute. + +size + For a string-valued option, this is the maximum length allowed. + +title + A single-line string that can be used as a title string. + +type + A constant giving the type of this option: will be one of the following + constants found in the SANE module: + TYPE_BOOL + TYPE_INT + TYPE_FIXED + TYPE_STRING + TYPE_BUTTON + TYPE_GROUP + +unit + For numeric-valued options, this is a constant representing + the unit used for this option. It will be one of the following + constants found in the SANE module: + UNIT_NONE + UNIT_PIXEL + UNIT_BIT + UNIT_MM + UNIT_DPI + UNIT_PERCENT + + + +Example us usage: +================= +>>> import sane +>>> print 'SANE version:', sane.init() +>>> print 'Available devices=', sane.get_devices() +SANE version: (16777230, 1, 0, 14) +>>> s = sane.open(sane.get_devices()[0][0]) +>>> print 'Device parameters:', s.get_parameters() +Device parameters: ('L', 1, (424, 585), 1, 53) +>>> print s.resolution +50 + +## In order to scan a color image into a PIL object: +>>> s.mode = 'color' +>>> s.start() +>>> img = s.snap() +>>> img.show() + + +## In order to obtain a 16-bit grayscale image at 100DPI in a numarray object +## with bottom-right coordinates set to (160, 120) [in millimeter] : +>>> s.mode = 'gray' +>>> s.br_x=160. ; s.br_y=120. +>>> s.resolution = 100 +>>> s.depth=16 +>>> s.start() +>>> s.get_parameters()[2] # just check the size +(624, 472) +>>> arr16 = s.arr_snap() +>>> arr16 +array([[63957, 64721, 65067, ..., 65535, 65535, 65535], + [63892, 64342, 64236, ..., 65535, 65535, 65535], + [64286, 64248, 64705, ..., 65535, 65535, 65535], + ..., + [65518, 65249, 65058, ..., 65535, 65535, 65535], + [64435, 65047, 65081, ..., 65535, 65535, 65535], + [65309, 65438, 65535, ..., 65535, 65535, 65535]], type=UInt16) +>>> arr16.shape # inverse order of coordinates, first y, then x! +(472, 624) + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py new file mode 100755 index 00000000000..3837198ec94 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py @@ -0,0 +1,24 @@ +from distutils.core import setup, Extension + +PIL_BUILD_DIR = '..' +PIL_IMAGING_DIR = PIL_BUILD_DIR+'/libImaging' + +defs = [] +try: + import numarray + defs.append(('WITH_NUMARRAY',None)) +except ImportError: + pass + +sane = Extension('_sane', + include_dirs = [PIL_IMAGING_DIR], + libraries = ['sane'], + library_dirs = [PIL_IMAGING_DIR], + define_macros = defs, + sources = ['_sane.c']) + +setup (name = 'pysane', + version = '2.0', + description = 'This is the pysane package', + py_modules = ['sane'], + ext_modules = [sane]) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README new file mode 100755 index 00000000000..a09b0621a1c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README @@ -0,0 +1,83 @@ +------- +Scripts +------- + +This directory contains a number of more or less trivial utilities +and demo programs. + +Comments and contributions are welcome. + + + +-------------------------------------------------------------------- +pildriver.py (by Eric S. Raymond) + +A class implementing an image-processing calculator for scripts. +Parses lists of commnds (or, called interactively, command-line +arguments) into image loads, transformations, and saves. + +-------------------------------------------------------------------- +viewer.py + +A simple image viewer. Can display all file formats handled by +PIL. Transparent images are properly handled. + +-------------------------------------------------------------------- +thresholder.py + +A simple utility that demonstrates how a transparent 1-bit overlay +can be used to show the current thresholding of an 8-bit image. + +-------------------------------------------------------------------- +enhancer.py + +Illustrates the ImageEnhance module. Drag the sliders to modify the +images. This might be very slow on some platforms, depending on the +Tk version. + +-------------------------------------------------------------------- +painter.py + +Illustrates how a painting program could be based on PIL and Tk. +Press the left mouse button and drag over the image to remove the +colour. Some clever tricks have been used to get decent performance +when updating the screen; see the sources for details. + +-------------------------------------------------------------------- +player.py + +A simple image sequence player. You can use either a sequence format +like FLI/FLC, GIF, or ARG, or give a number of images which are +interpreted as frames in a sequence. All frames must have the same +size. + +-------------------------------------------------------------------- +gifmaker.py + +Convert a sequence file to a GIF animation. + +Note that the GIF encoder provided with this release of PIL writes +uncompressed GIF files only, so the resulting animations are rather +large compared with these created by other tools. + +-------------------------------------------------------------------- +explode.py + +Split a sequence file into individual frames. + +-------------------------------------------------------------------- +image2py.py + +Convert an image to a Python module containing an IMAGE variable. +Note that the module using the module must include JPEG and ZIP +decoders, unless the -u option is used. + +-------------------------------------------------------------------- +olesummary.py + +Uses the OleFileIO module to dump the summary information from an OLE +structured storage file. This works with most OLE files, including +Word documents, FlashPix images, etc. + +Note that datetime fields currently show the number of seconds since +January 1st, 1601. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py new file mode 100755 index 00000000000..957b51c8d91 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py @@ -0,0 +1,53 @@ +# +# The Python Imaging Library +# $Id$ +# +# this demo script creates four windows containing an image and a slider. +# drag the slider to modify the image. +# + +from Tkinter import * +from PIL import Image, ImageTk, ImageEnhance +import sys + +# +# enhancer widget + +class Enhance(Frame): + def __init__(self, master, image, name, enhancer, lo, hi): + Frame.__init__(self, master) + + # set up the image + self.tkim = ImageTk.PhotoImage(image.mode, image.size) + self.enhancer = enhancer(image) + self.update("1.0") # normalize + + # image window + Label(self, image=self.tkim).pack() + + # scale + s = Scale(self, label=name, orient=HORIZONTAL, + from_=lo, to=hi, resolution=0.01, + command=self.update) + s.set(self.value) + s.pack() + + def update(self, value): + self.value = eval(value) + self.tkim.paste(self.enhancer.enhance(self.value)) + +# +# main + +root = Tk() + +im = Image.open(sys.argv[1]) + +im.thumbnail((200, 200)) + +Enhance(root, im, "Color", ImageEnhance.Color, 0.0, 4.0).pack() +Enhance(Toplevel(), im, "Sharpness", ImageEnhance.Sharpness, -2.0, 2.0).pack() +Enhance(Toplevel(), im, "Brightness", ImageEnhance.Brightness, -1.0, 3.0).pack() +Enhance(Toplevel(), im, "Contrast", ImageEnhance.Contrast, -1.0, 3.0).pack() + +root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py new file mode 100755 index 00000000000..a336f06990c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py @@ -0,0 +1,107 @@ +# +# The Python Imaging Library +# $Id$ +# +# split an animation into a number of frame files +# + +from PIL import Image +import os, string, sys + +class Interval: + + def __init__(self, interval = "0"): + + self.setinterval(interval) + + def setinterval(self, interval): + + self.hilo = [] + + for s in string.split(interval, ","): + if not string.strip(s): + continue + try: + v = string.atoi(s) + if v < 0: + lo, hi = 0, -v + else: + lo = hi = v + except ValueError: + i = string.find(s, "-") + lo, hi = string.atoi(s[:i]), string.atoi(s[i+1:]) + + self.hilo.append((hi, lo)) + + if not self.hilo: + self.hilo = [(sys.maxint, 0)] + + def __getitem__(self, index): + + for hi, lo in self.hilo: + if hi >= index >= lo: + return 1 + return 0 + +# -------------------------------------------------------------------- +# main program + +html = 0 + +if sys.argv[1:2] == ["-h"]: + html = 1 + del sys.argv[1] + +if not sys.argv[2:]: + print + print "Syntax: python explode.py infile template [range]" + print + print "The template argument is used to construct the names of the" + print "individual frame files. The frames are numbered file001.ext," + print "file002.ext, etc. You can insert %d to control the placement" + print "and syntax of the frame number." + print + print "The optional range argument specifies which frames to extract." + print "You can give one or more ranges like 1-10, 5, -15 etc. If" + print "omitted, all frames are extracted." + sys.exit(1) + +infile = sys.argv[1] +outfile = sys.argv[2] + +frames = Interval(string.join(sys.argv[3:], ",")) + +try: + # check if outfile contains a placeholder + outfile % 1 +except TypeError: + file, ext = os.path.splitext(outfile) + outfile = file + "%03d" + ext + +ix = 1 + +im = Image.open(infile) + +if html: + file, ext = os.path.splitext(outfile) + html = open(file+".html", "w") + html.write("\n\n") + +while 1: + + if frames[ix]: + im.save(outfile % ix) + print outfile % ix + + if html: + html.write("
    \n" % outfile % ix) + + try: + im.seek(ix) + except EOFError: + break + + ix = ix + 1 + +if html: + html.write("\n\n") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py new file mode 100755 index 00000000000..95524eacc1c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py @@ -0,0 +1,135 @@ +# +# The Python Imaging Library +# $Id$ +# +# convert sequence format to GIF animation +# +# history: +# 97-01-03 fl created +# +# Copyright (c) Secret Labs AB 1997. All rights reserved. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +# +# For special purposes, you can import this module and call +# the makedelta or compress functions yourself. For example, +# if you have an application that generates a sequence of +# images, you can convert it to a GIF animation using some- +# thing like the following code: +# +# import Image +# import gifmaker +# +# sequence = [] +# +# # generate sequence +# for i in range(100): +# im = +# sequence.append(im) +# +# # write GIF animation +# fp = open("out.gif", "wb") +# gifmaker.makedelta(fp, sequence) +# fp.close() +# +# Alternatively, use an iterator to generate the sequence, and +# write data directly to a socket. Or something... +# + +from PIL import Image, ImageChops +import string + +from PIL.GifImagePlugin import getheader, getdata + +# -------------------------------------------------------------------- +# sequence iterator + +class image_sequence: + def __init__(self, im): + self.im = im + def __getitem__(self, ix): + try: + if ix: + self.im.seek(ix) + return self.im + except EOFError: + raise IndexError # end of sequence + +# -------------------------------------------------------------------- +# straightforward delta encoding + +def makedelta(fp, sequence): + """Convert list of image frames to a GIF animation file""" + + frames = 0 + + previous = None + + for im in sequence: + + # + # FIXME: write graphics control block before each frame + + if not previous: + + # global header + for s in getheader(im) + getdata(im): + fp.write(s) + + else: + + # delta frame + delta = ImageChops.subtract_modulo(im, previous) + + bbox = delta.getbbox() + + if bbox: + + # compress difference + for s in getdata(im.crop(bbox), offset = bbox[:2]): + fp.write(s) + + else: + # FIXME: what should we do in this case? + pass + + previous = im.copy() + + frames = frames + 1 + + fp.write(";") + + return frames + +# -------------------------------------------------------------------- +# main hack + +def compress(infile, outfile): + + # open input image, and force loading of first frame + im = Image.open(infile) + im.load() + + # open output file + fp = open(outfile, "wb") + + seq = image_sequence(im) + + makedelta(fp, seq) + + fp.close() + + +if __name__ == "__main__": + + import sys + + if len(sys.argv) < 3: + print "GIFMAKER -- create GIF animations" + print "Usage: gifmaker infile outfile" + sys.exit(1) + + compress(sys.argv[1], sys.argv[2]) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py new file mode 100755 index 00000000000..efe307386ff --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py @@ -0,0 +1,72 @@ +# +# The Python Imaging Library +# $Id$ +# +# this demo script illustrates pasting into an already displayed +# photoimage. note that the current version of Tk updates the whole +# image everytime we paste, so to get decent performance, we split +# the image into a set of tiles. +# + +from Tkinter import * +from PIL import Image, ImageTk +import sys + +# +# painter widget + +class PaintCanvas(Canvas): + def __init__(self, master, image): + Canvas.__init__(self, master, width=image.size[0], height=image.size[1]) + + # fill the canvas + self.tile = {} + self.tilesize = tilesize = 32 + xsize, ysize = image.size + for x in range(0, xsize, tilesize): + for y in range(0, ysize, tilesize): + box = x, y, min(xsize, x+tilesize), min(ysize, y+tilesize) + tile = ImageTk.PhotoImage(image.crop(box)) + self.create_image(x, y, image=tile, anchor=NW) + self.tile[(x,y)] = box, tile + + self.image = image + + self.bind("", self.paint) + + def paint(self, event): + xy = event.x - 10, event.y - 10, event.x + 10, event.y + 10 + im = self.image.crop(xy) + + # process the image in some fashion + im = im.convert("L") + + self.image.paste(im, xy) + self.repair(xy) + + def repair(self, box): + # update canvas + dx = box[0] % self.tilesize + dy = box[1] % self.tilesize + for x in range(box[0]-dx, box[2]+1, self.tilesize): + for y in range(box[1]-dy, box[3]+1, self.tilesize): + try: + xy, tile = self.tile[(x, y)] + tile.paste(self.image.crop(xy)) + except KeyError: + pass # outside the image + self.update_idletasks() + +# +# main + +root = Tk() + +im = Image.open(sys.argv[1]) + +if im.mode != "RGB": + im = im.convert("RGB") + +PaintCanvas(root, im).pack() + +root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py new file mode 100755 index 00000000000..1c688f7c9b0 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py @@ -0,0 +1,96 @@ +#! /usr/local/bin/python +# +# The Python Imaging Library. +# $Id$ +# +# convert image files +# +# History: +# 0.1 96-04-20 fl Created +# 0.2 96-10-04 fl Use draft mode when converting images +# 0.3 96-12-30 fl Optimize output (PNG, JPEG) +# 0.4 97-01-18 fl Made optimize an option (PNG, JPEG) +# 0.5 98-12-30 fl Fixed -f option (from Anthony Baxter) +# + +import site +import getopt, string, sys + +from PIL import Image + +def usage(): + print "PIL Convert 0.5/1998-12-30 -- convert image files" + print "Usage: pilconvert [option] infile outfile" + print + print "Options:" + print + print " -c convert to format (default is given by extension)" + print + print " -g convert to greyscale" + print " -p convert to palette image (using standard palette)" + print " -r convert to rgb" + print + print " -o optimize output (trade speed for size)" + print " -q set compression quality (0-100, JPEG only)" + print + print " -f list supported file formats" + sys.exit(1) + +if len(sys.argv) == 1: + usage() + +try: + opt, argv = getopt.getopt(sys.argv[1:], "c:dfgopq:r") +except getopt.error, v: + print v + sys.exit(1) + +format = None +convert = None + +options = { } + +for o, a in opt: + + if o == "-f": + Image.init() + id = Image.ID[:] + id.sort() + print "Supported formats (* indicates output format):" + for i in id: + if Image.SAVE.has_key(i): + print i+"*", + else: + print i, + sys.exit(1) + + elif o == "-c": + format = a + + if o == "-g": + convert = "L" + elif o == "-p": + convert = "P" + elif o == "-r": + convert = "RGB" + + elif o == "-o": + options["optimize"] = 1 + elif o == "-q": + options["quality"] = string.atoi(a) + +if len(argv) != 2: + usage() + +try: + im = Image.open(argv[0]) + if convert and im.mode != convert: + im.draft(convert, im.size) + im = im.convert(convert) + if format: + apply(im.save, (argv[1], format), options) + else: + apply(im.save, (argv[1],), options) +except: + print "cannot convert image", + print "(%s:%s)" % (sys.exc_type, sys.exc_value) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py new file mode 100755 index 00000000000..5dd575a3fd6 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py @@ -0,0 +1,524 @@ +#!/usr/bin/env python +"""PILdriver, an image-processing calculator using PIL. + +An instance of class PILDriver is essentially a software stack machine +(Polish-notation interpreter) for sequencing PIL image +transformations. The state of the instance is the interpreter stack. + +The only method one will normally invoke after initialization is the +`execute' method. This takes an argument list of tokens, pushes them +onto the instance's stack, and then tries to clear the stack by +successive evaluation of PILdriver operators. Any part of the stack +not cleaned off persists and is part of the evaluation context for +the next call of the execute method. + +PILDriver doesn't catch any exceptions, on the theory that these +are actually diagnostic information that should be interpreted by +the calling code. + +When called as a script, the command-line arguments are passed to +a PILDriver instance. If there are no command-line arguments, the +module runs an interactive interpreter, each line of which is split into +space-separated tokens and passed to the execute method. + +In the method descriptions below, a first line beginning with the string +`usage:' means this method can be invoked with the token that follows +it. Following <>-enclosed arguments describe how the method interprets +the entries on the stack. Each argument specification begins with a +type specification: either `int', `float', `string', or `image'. + +All operations consume their arguments off the stack (use `dup' to +keep copies around). Use `verbose 1' to see the stack state displayed +before each operation. + +Usage examples: + + `show crop 0 0 200 300 open test.png' loads test.png, crops out a portion +of its upper-left-hand corner and displays the cropped portion. + + `save rotated.png rotate 30 open test.tiff' loads test.tiff, rotates it +30 degrees, and saves the result as rotated.png (in PNG format). +""" +# by Eric S. Raymond +# $Id$ + +# TO DO: +# 1. Add PILFont capabilities, once that's documented. +# 2. Add PILDraw operations. +# 3. Add support for composing and decomposing multiple-image files. +# + +from PIL import Image +import string + +class PILDriver: + + verbose = 0 + + def do_verbose(self): + """usage: verbose + + Set verbosity flag from top of stack. + """ + self.verbose = self.do_pop() + + # The evaluation stack (internal only) + + stack = [] # Stack of pending operations + + def push(self, item): + "Push an argument onto the evaluation stack." + self.stack = [item] + self.stack + + def top(self): + "Return the top-of-stack element." + return self.stack[0] + + # Stack manipulation (callable) + + def do_clear(self): + """usage: clear + + Clear the stack. + """ + self.stack = [] + + def do_pop(self): + """usage: pop + + Discard the top element on the stack. + """ + top = self.stack[0] + self.stack = self.stack[1:] + return top + + def do_dup(self): + """usage: dup + + Duplicate the top-of-stack item. + """ + if hasattr(self, 'format'): # If it's an image, do a real copy + dup = self.stack[0].copy() + else: + dup = self.stack[0] + self.stack = [dup] + self.stack + + def do_swap(self): + """usage: swap + + Swap the top-of-stack item with the next one down. + """ + self.stack = [self.stack[1], self.stack[0]] + self.stack[2:] + + # Image module functions (callable) + + def do_new(self): + """usage: new : + + Create and push a greyscale image of given size and color. + """ + xsize = int(self.do_pop()) + ysize = int(self.do_pop()) + color = int(self.do_pop()) + self.push(Image.new("L", (xsize, ysize), color)) + + def do_open(self): + """usage: open + + Open the indicated image, read it, push the image on the stack. + """ + self.push(Image.open(self.do_pop())) + + def do_blend(self): + """usage: blend + + Replace two images and an alpha with the blended image. + """ + image1 = self.do_pop() + image2 = self.do_pop() + alpha = float(self.do_pop()) + self.push(Image.blend(image1, image2, alpha)) + + def do_composite(self): + """usage: composite + + Replace two images and a mask with their composite. + """ + image1 = self.do_pop() + image2 = self.do_pop() + mask = self.do_pop() + self.push(Image.composite(image1, image2, mask)) + + def do_merge(self): + """usage: merge [ [ []]] + + Merge top-of stack images in a way described by the mode. + """ + mode = self.do_pop() + bandlist = [] + for band in mode: + bandlist.append(self.do_pop()) + self.push(Image.merge(mode, bandlist)) + + # Image class methods + + def do_convert(self): + """usage: convert + + Convert the top image to the given mode. + """ + mode = self.do_pop() + image = self.do_pop() + self.push(image.convert(mode)) + + def do_copy(self): + """usage: copy + + Make and push a true copy of the top image. + """ + self.dup() + + def do_crop(self): + """usage: crop + + Crop and push a rectangular region from the current image. + """ + left = int(self.do_pop()) + upper = int(self.do_pop()) + right = int(self.do_pop()) + lower = int(self.do_pop()) + image = self.do_pop() + self.push(image.crop((left, upper, right, lower))) + + def do_draft(self): + """usage: draft + + Configure the loader for a given mode and size. + """ + mode = self.do_pop() + xsize = int(self.do_pop()) + ysize = int(self.do_pop()) + self.push(self.draft(mode, (xsize, ysize))) + + def do_filter(self): + """usage: filter + + Process the top image with the given filter. + """ + import ImageFilter + filter = eval("ImageFilter." + string.upper(self.do_pop())) + image = self.do_pop() + self.push(image.filter(filter)) + + def do_getbbox(self): + """usage: getbbox + + Push left, upper, right, and lower pixel coordinates of the top image. + """ + bounding_box = self.do_pop().getbbox() + self.push(bounding_box[3]) + self.push(bounding_box[2]) + self.push(bounding_box[1]) + self.push(bounding_box[0]) + + def do_getextrema(self): + """usage: extrema + + Push minimum and maximum pixel values of the top image. + """ + extrema = self.do_pop().extrema() + self.push(extrema[1]) + self.push(extrema[0]) + + def do_offset(self): + """usage: offset + + Offset the pixels in the top image. + """ + xoff = int(self.do_pop()) + yoff = int(self.do_pop()) + image = self.do_pop() + self.push(image.offset(xoff, yoff)) + + def do_paste(self): + """usage: paste + + Paste figure image into ground with upper left at given offsets. + """ + figure = self.do_pop() + xoff = int(self.do_pop()) + yoff = int(self.do_pop()) + ground = self.do_pop() + if figure.mode == "RGBA": + ground.paste(figure, (xoff, yoff), figure) + else: + ground.paste(figure, (xoff, yoff)) + self.push(ground) + + def do_resize(self): + """usage: resize + + Resize the top image. + """ + ysize = int(self.do_pop()) + xsize = int(self.do_pop()) + image = self.do_pop() + self.push(image.resize((xsize, ysize))) + + def do_rotate(self): + """usage: rotate + + Rotate image through a given angle + """ + angle = int(self.do_pop()) + image = self.do_pop() + self.push(image.rotate(angle)) + + def do_save(self): + """usage: save + + Save image with default options. + """ + filename = self.do_pop() + image = self.do_pop() + image.save(filename) + + def do_save2(self): + """usage: save2 + + Save image with specified options. + """ + filename = self.do_pop() + options = self.do_pop() + image = self.do_pop() + image.save(filename, None, options) + + def do_show(self): + """usage: show + + Display and pop the top image. + """ + self.do_pop().show() + + def do_thumbnail(self): + """usage: thumbnail + + Modify the top image in the stack to contain a thumbnail of itself. + """ + ysize = int(self.do_pop()) + xsize = int(self.do_pop()) + self.top().thumbnail((xsize, ysize)) + + def do_transpose(self): + """usage: transpose + + Transpose the top image. + """ + transpose = string.upper(self.do_pop()) + image = self.do_pop() + self.push(image.transpose(transpose)) + + # Image attributes + + def do_format(self): + """usage: format + + Push the format of the top image onto the stack. + """ + self.push(self.pop().format) + + def do_mode(self): + """usage: mode + + Push the mode of the top image onto the stack. + """ + self.push(self.pop().mode) + + def do_size(self): + """usage: size + + Push the image size on the stack as (y, x). + """ + size = self.pop().size + self.push(size[0]) + self.push(size[1]) + + # ImageChops operations + + def do_invert(self): + """usage: invert + + Invert the top image. + """ + import ImageChops + self.push(ImageChops.invert(self.do_pop())) + + def do_lighter(self): + """usage: lighter + + Pop the two top images, push an image of the lighter pixels of both. + """ + import ImageChops + image1 = self.do_pop() + image2 = self.do_pop() + self.push(ImageChops.lighter(image1, image2)) + + def do_darker(self): + """usage: darker + + Pop the two top images, push an image of the darker pixels of both. + """ + import ImageChops + image1 = self.do_pop() + image2 = self.do_pop() + self.push(ImageChops.darker(image1, image2)) + + def do_difference(self): + """usage: difference + + Pop the two top images, push the difference image + """ + import ImageChops + image1 = self.do_pop() + image2 = self.do_pop() + self.push(ImageChops.difference(image1, image2)) + + def do_multiply(self): + """usage: multiply + + Pop the two top images, push the multiplication image. + """ + import ImageChops + image1 = self.do_pop() + image2 = self.do_pop() + self.push(ImageChops.multiply(image1, image2)) + + def do_screen(self): + """usage: screen + + Pop the two top images, superimpose their inverted versions. + """ + import ImageChops + image2 = self.do_pop() + image1 = self.do_pop() + self.push(ImageChops.screen(image1, image2)) + + def do_add(self): + """usage: add + + Pop the two top images, produce the scaled sum with offset. + """ + import ImageChops + image1 = self.do_pop() + image2 = self.do_pop() + scale = float(self.do_pop()) + offset = int(self.do_pop()) + self.push(ImageChops.add(image1, image2, scale, offset)) + + def do_subtract(self): + """usage: subtract + + Pop the two top images, produce the scaled difference with offset. + """ + import ImageChops + image1 = self.do_pop() + image2 = self.do_pop() + scale = float(self.do_pop()) + offset = int(self.do_pop()) + self.push(ImageChops.subtract(image1, image2, scale, offset)) + + # ImageEnhance classes + + def do_color(self): + """usage: color + + Enhance color in the top image. + """ + import ImageEnhance + factor = float(self.do_pop()) + image = self.do_pop() + enhancer = ImageEnhance.Color(image) + self.push(enhancer.enhance(factor)) + + def do_contrast(self): + """usage: contrast + + Enhance contrast in the top image. + """ + import ImageEnhance + factor = float(self.do_pop()) + image = self.do_pop() + enhancer = ImageEnhance.Color(image) + self.push(enhancer.enhance(factor)) + + def do_brightness(self): + """usage: brightness + + Enhance brightness in the top image. + """ + import ImageEnhance + factor = float(self.do_pop()) + image = self.do_pop() + enhancer = ImageEnhance.Color(image) + self.push(enhancer.enhance(factor)) + + def do_sharpness(self): + """usage: sharpness + + Enhance sharpness in the top image. + """ + import ImageEnhance + factor = float(self.do_pop()) + image = self.do_pop() + enhancer = ImageEnhance.Color(image) + self.push(enhancer.enhance(factor)) + + # The interpreter loop + + def execute(self, list): + "Interpret a list of PILDriver commands." + list.reverse() + while len(list) > 0: + self.push(list[0]) + list = list[1:] + if self.verbose: + print "Stack: " + `self.stack` + top = self.top() + if type(top) != type(""): + continue; + funcname = "do_" + top + if not hasattr(self, funcname): + continue + else: + self.do_pop() + func = getattr(self, funcname) + func() + +if __name__ == '__main__': + import sys + try: + import readline + except ImportError: + pass # not available on all platforms + + # If we see command-line arguments, interpret them as a stack state + # and execute. Otherwise go interactive. + + driver = PILDriver() + if len(sys.argv[1:]) > 0: + driver.execute(sys.argv[1:]) + else: + print "PILDriver says hello." + while 1: + try: + line = raw_input('pildriver> '); + except EOFError: + print "\nPILDriver says goodbye." + break + driver.execute(string.split(line)) + print driver.stack + +# The following sets edit modes for GNU EMACS +# Local Variables: +# mode:python +# End: diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py new file mode 100755 index 00000000000..6957257965e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py @@ -0,0 +1,94 @@ +#! /usr/local/bin/python +# +# The Python Imaging Library. +# $Id$ +# +# a utility to identify image files +# +# this script identifies image files, extracting size and +# pixel mode information for known file formats. Note that +# you don't need the PIL C extension to use this module. +# +# History: +# 0.0 1995-09-01 fl Created +# 0.1 1996-05-18 fl Modified options, added debugging mode +# 0.2 1996-12-29 fl Added verify mode +# 0.3 1999-06-05 fl Don't mess up on class exceptions (1.5.2 and later) +# 0.4 2003-09-30 fl Expand wildcards on Windows; robustness tweaks +# + +import site +import getopt, glob, sys + +from PIL import Image + +if len(sys.argv) == 1: + print "PIL File 0.4/2003-09-30 -- identify image files" + print "Usage: pilfile [option] files..." + print "Options:" + print " -f list supported file formats" + print " -i show associated info and tile data" + print " -v verify file headers" + print " -q quiet, don't warn for unidentified/missing/broken files" + sys.exit(1) + +try: + opt, args = getopt.getopt(sys.argv[1:], "fqivD") +except getopt.error, v: + print v + sys.exit(1) + +verbose = quiet = verify = 0 + +for o, a in opt: + if o == "-f": + Image.init() + id = Image.ID[:] + id.sort() + print "Supported formats:" + for i in id: + print i, + sys.exit(1) + elif o == "-i": + verbose = 1 + elif o == "-q": + quiet = 1 + elif o == "-v": + verify = 1 + elif o == "-D": + Image.DEBUG = Image.DEBUG + 1 + +def globfix(files): + # expand wildcards where necessary + if sys.platform == "win32": + out = [] + for file in files: + if glob.has_magic(file): + out.extend(glob.glob(file)) + else: + out.append(file) + return out + return files + +for file in globfix(args): + try: + im = Image.open(file) + print "%s:" % file, im.format, "%dx%d" % im.size, im.mode, + if verbose: + print im.info, im.tile, + print + if verify: + try: + im.verify() + except: + if not quiet: + print "failed to verify image", + print "(%s:%s)" % (sys.exc_type, sys.exc_value) + except IOError, v: + if not quiet: + print file, "failed:", v + except: + import traceback + if not quiet: + print file, "failed:", "unexpected error" + traceback.print_exc(file=sys.stdout) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py new file mode 100755 index 00000000000..df08d4c083e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py @@ -0,0 +1,54 @@ +# +# The Python Imaging Library +# $Id$ +# +# PIL raster font compiler +# +# history: +# 1997-08-25 fl created +# 2002-03-10 fl use "from PIL import" +# + +VERSION = "0.4" + +import site +import glob, os, sys + +# drivers +from PIL import BdfFontFile +from PIL import PcfFontFile + +if len(sys.argv) <= 1: + print "PILFONT", VERSION, "-- PIL font compiler." + print + print "Usage: pilfont fontfiles..." + print + print "Convert given font files to the PIL raster font format." + print "This version of pilfont supports X BDF and PCF fonts." + sys.exit(1) + +files = [] +for f in sys.argv[1:]: + files = files + glob.glob(f) + +for f in files: + + print f + "...", + + try: + + fp = open(f, "rb") + + try: + p = PcfFontFile.PcfFontFile(fp) + except SyntaxError: + fp.seek(0) + p = BdfFontFile.BdfFontFile(fp) + + p.save(f) + + except (SyntaxError, IOError): + print "failed" + + else: + print "OK" diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py new file mode 100755 index 00000000000..a98b39f7d9b --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py @@ -0,0 +1,93 @@ +#! /usr/local/bin/python +# +# The Python Imaging Library. +# $Id$ +# +# print image files to postscript printer +# +# History: +# 0.1 1996-04-20 fl Created +# 0.2 1996-10-04 fl Use draft mode when converting. +# 0.3 2003-05-06 fl Fixed a typo or two. +# + +VERSION = "pilprint 0.3/2003-05-05" + +from PIL import Image +from PIL import PSDraw + +letter = ( 1.0*72, 1.0*72, 7.5*72, 10.0*72 ) + +def description(file, image): + import os + title = os.path.splitext(os.path.split(file)[1])[0] + format = " (%dx%d " + if image.format: + format = " (" + image.format + " %dx%d " + return title + format % image.size + image.mode + ")" + +import getopt, os, sys + +if len(sys.argv) == 1: + print "PIL Print 0.2a1/96-10-04 -- print image files" + print "Usage: pilprint files..." + print "Options:" + print " -c colour printer (default is monochrome)" + print " -p print via lpr (default is stdout)" + print " -P same as -p but use given printer" + sys.exit(1) + +try: + opt, argv = getopt.getopt(sys.argv[1:], "cdpP:") +except getopt.error, v: + print v + sys.exit(1) + +printer = None # print to stdout +monochrome = 1 # reduce file size for most common case + +for o, a in opt: + if o == "-d": + # debug: show available drivers + Image.init() + print Image.ID + sys.exit(1) + elif o == "-c": + # colour printer + monochrome = 0 + elif o == "-p": + # default printer channel + printer = "lpr" + elif o == "-P": + # printer channel + printer = "lpr -P%s" % a + +for file in argv: + try: + + im = Image.open(file) + + title = description(file, im) + + if monochrome and im.mode not in ["1", "L"]: + im.draft("L", im.size) + im = im.convert("L") + + if printer: + fp = os.popen(printer, "w") + else: + fp = sys.stdout + + ps = PSDraw.PSDraw(fp) + + ps.begin_document() + ps.setfont("Helvetica-Narrow-Bold", 18) + ps.text((letter[0], letter[3]+24), title) + ps.setfont("Helvetica-Narrow-Bold", 8) + ps.text((letter[0], letter[1]-30), VERSION) + ps.image(letter, im) + ps.end_document() + + except: + print "cannot print image", + print "(%s:%s)" % (sys.exc_type, sys.exc_value) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py new file mode 100755 index 00000000000..9ca4500bfd4 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py @@ -0,0 +1,121 @@ +# +# The Python Imaging Library +# $Id$ +# + +from Tkinter import * +from PIL import Image, ImageTk +import sys + + +Image.DEBUG = 0 + + +# -------------------------------------------------------------------- +# experimental: support ARG animation scripts + +import ArgImagePlugin + +def applet_hook(animation, images): + app = animation(animation_display, images) + app.run() + +ArgImagePlugin.APPLET_HOOK = applet_hook + +class AppletDisplay: + def __init__(self, ui): + self.__ui = ui + def paste(self, im, bbox): + self.__ui.image.paste(im, bbox) + def update(self): + self.__ui.update_idletasks() + +# -------------------------------------------------------------------- +# an image animation player + +class UI(Label): + + def __init__(self, master, im): + if type(im) == type([]): + # list of images + self.im = im[1:] + im = self.im[0] + else: + # sequence + self.im = im + + if im.mode == "1": + self.image = ImageTk.BitmapImage(im, foreground="white") + else: + self.image = ImageTk.PhotoImage(im) + + # APPLET SUPPORT (very crude, and not 100% safe) + global animation_display + animation_display = AppletDisplay(self) + + Label.__init__(self, master, image=self.image, bg="black", bd=0) + + self.update() + + try: + duration = im.info["duration"] + except KeyError: + duration = 100 + self.after(duration, self.next) + + def next(self): + + if type(self.im) == type([]): + + try: + im = self.im[0] + del self.im[0] + self.image.paste(im) + except IndexError: + return # end of list + + else: + + try: + im = self.im + im.seek(im.tell() + 1) + self.image.paste(im) + except EOFError: + return # end of file + + try: + duration = im.info["duration"] + except KeyError: + duration = 100 + self.after(duration, self.next) + + self.update_idletasks() + + +# -------------------------------------------------------------------- +# script interface + +if __name__ == "__main__": + + if not sys.argv[1:]: + print "Syntax: python player.py imagefile(s)" + sys.exit(1) + + filename = sys.argv[1] + + root = Tk() + root.title(filename) + + if len(sys.argv) > 2: + # list of images + print "loading..." + im = [] + for filename in sys.argv[1:]: + im.append(Image.open(filename)) + else: + # sequence + im = Image.open(filename) + + UI(root, im).pack() + + root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py new file mode 100755 index 00000000000..eb510987267 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py @@ -0,0 +1,68 @@ +# +# The Python Imaging Library +# $Id$ +# +# this demo script illustrates how a 1-bit BitmapImage can be used +# as a dynamically updated overlay +# + +from Tkinter import * +from PIL import Image, ImageTk +import sys + +# +# an image viewer + +class UI(Frame): + def __init__(self, master, im, value = 128): + Frame.__init__(self, master) + + self.image = im + self.value = value + + self.canvas = Canvas(self, width=im.size[0], height=im.size[1]) + self.backdrop = ImageTk.PhotoImage(im) + self.canvas.create_image(0, 0, image=self.backdrop, anchor=NW) + self.canvas.pack() + + scale = Scale(self, orient=HORIZONTAL, from_=0, to=255, + resolution=1, command=self.update, length=256) + scale.set(value) + scale.bind("", self.redraw) + scale.pack() + + # uncomment the following line for instant feedback (might + # be too slow on some platforms) + # self.redraw() + + def update(self, value): + self.value = eval(value) + + self.redraw() + + def redraw(self, event = None): + + # create overlay (note the explicit conversion to mode "1") + im = self.image.point(lambda v,t=self.value: v>=t, "1") + self.overlay = ImageTk.BitmapImage(im, foreground="green") + + # update canvas + self.canvas.delete("overlay") + self.canvas.create_image(0, 0, image=self.overlay, anchor=NW, + tags="overlay") + +# -------------------------------------------------------------------- +# main + +root = Tk() + +im = Image.open(sys.argv[1]) + +if im.mode != "L": + im = im.convert("L") + +# im.thumbnail((320,200)) + +UI(root, im).pack() + +root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py new file mode 100755 index 00000000000..6e4dc8b67a1 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py @@ -0,0 +1,46 @@ +# +# The Python Imaging Library +# $Id$ +# + +from Tkinter import * +from PIL import Image, ImageTk + +# +# an image viewer + +class UI(Label): + + def __init__(self, master, im): + + if im.mode == "1": + # bitmap image + self.image = ImageTk.BitmapImage(im, foreground="white") + Label.__init__(self, master, image=self.image, bg="black", bd=0) + + else: + # photo image + self.image = ImageTk.PhotoImage(im) + Label.__init__(self, master, image=self.image, bd=0) + +# +# script interface + +if __name__ == "__main__": + + import sys + + if not sys.argv[1:]: + print "Syntax: python viewer.py imagefile" + sys.exit(1) + + filename = sys.argv[1] + + root = Tk() + root.title(filename) + + im = Image.open(filename) + + UI(root, im).pack() + + root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt new file mode 100755 index 00000000000..2d787983b75 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt @@ -0,0 +1,108 @@ +==================================================================== +The Photoimage Booster Patch (for Windows 95/NT) +==================================================================== + + This patch kit boosts performance for 16/24-bit displays. The +first patch is required on Tk 4.2 (where it fixes the problems for +16-bit displays) and later versions, with the exception for Tk 8.0b1 +where Sun added something similar themselves, only to remove it in +8.0b2. By installing both patches, Tk's PhotoImage handling becomes +much faster on both 16-bit and 24-bit displays. The patch has been +tested with Tk 4.2 and 8.0. + + Here's a benchmark, made with a sample program which loads two +512x512 greyscale PGM's, and two 512x512 colour PPM's, and displays +each of them in a separate toplevel windows. Tcl/Tk was compiled +with Visual C 4.0, and run on a P100 under Win95. Image load times +are not included in the timings: + + 8-bit 16-bit 24-bit +-------------------------------------------------------------------- +1. original 4.2 code 5.52 s 8.57 s 3.79 s +2. booster patch 5.49 s 1.87 s 1.82 s + + speedup None 4.6x 2.1x + +==================================================================== + +Here's the patches: + +1. For portability and speed, the best thing under Windows is to +treat 16-bit displays as if they were 24-bit. The Windows device +drivers take care of the rest. + + ---------------------------------------------------------------- + If you have Tk 4.1 or Tk 8.0b1, you don't have to apply this + patch! It only applies to Tk 4.2, Tk 8.0a[12] and Tk 8.0b2. + ---------------------------------------------------------------- + +In win/tkWinImage.c, change the following line in XCreateImage: + + imagePtr->bits_per_pixel = depth; + +to + +/* ==================================================================== */ +/* The tk photo image booster patch -- patch section 1 */ +/* ==================================================================== */ + + if (visual->class == TrueColor) + /* true colour is stored as 3 bytes: (blue, green, red) */ + imagePtr->bits_per_pixel = 24; + else + imagePtr->bits_per_pixel = depth; + +/* ==================================================================== */ + + +2. The DitherInstance implementation is not good. It's especially +bad on highend truecolour displays. IMO, it should be rewritten from +scratch (some other day...). + + Anyway, the following band-aid makes the situation a little bit +better under Windows. This hack trades some marginal quality (no +dithering on 16-bit displays) for a dramatic performance boost. +Requires patch 1, unless you're using Tk 4.1 or Tk 8.0b1. + +In generic/tkImgPhoto.c, add the #ifdef section to the DitherInstance +function: + + for (; height > 0; height -= nLines) { + if (nLines > height) { + nLines = height; + } + dstLinePtr = (unsigned char *) imagePtr->data; + yEnd = yStart + nLines; + +/* ==================================================================== */ +/* The tk photo image booster patch -- patch section 2 */ +/* ==================================================================== */ + +#ifdef __WIN32__ + if (colorPtr->visualInfo.class == TrueColor + && instancePtr->gamma == 1.0) { + /* Windows hicolor/truecolor booster */ + for (y = yStart; y < yEnd; ++y) { + destBytePtr = dstLinePtr; + srcPtr = srcLinePtr; + for (x = xStart; x < xEnd; ++x) { + destBytePtr[0] = srcPtr[2]; + destBytePtr[1] = srcPtr[1]; + destBytePtr[2] = srcPtr[0]; + destBytePtr += 3; srcPtr += 3; + } + srcLinePtr += lineLength; + dstLinePtr += bytesPerLine; + } + } else +#endif + +/* ==================================================================== */ + + for (y = yStart; y < yEnd; ++y) { + srcPtr = srcLinePtr; + errPtr = errLinePtr; + destBytePtr = dstLinePtr; + +==================================================================== +last updated: 97-07-03/fl diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt new file mode 100755 index 00000000000..e24d36301c7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt @@ -0,0 +1,41 @@ +==================================================================== +Using PIL With Tkinter +==================================================================== + +Starting with 1.0 final (release candidate 2 and later, to be +precise), PIL can attach itself to Tkinter in flight. As a result, +you no longer need to rebuild the Tkinter extension to be able to +use PIL. + +However, if you cannot get the this to work on your platform, you +can do it in the old way: + +* Adding Tkinter support + +1. Compile Python's _tkinter.c with the WITH_APPINIT and WITH_PIL + flags set, and link it with tkImaging.c and tkappinit.c. To + do this, copy the former to the Modules directory, and edit + the _tkinter line in Setup (or Setup.in) according to the + instructions in that file. + + NOTE: if you have an old Python version, the tkappinit.c + file is not included by default. If this is the case, you + will have to add the following lines to tkappinit.c, after + the MOREBUTTONS stuff: + + { + extern void TkImaging_Init(Tcl_Interp* interp); + TkImaging_Init(interp); + } + + This registers a Tcl command called "PyImagingPhoto", which is + use to communicate between PIL and Tk's PhotoImage handler. + + You must also change the _tkinter line in Setup (or Setup.in) + to something like: + + _tkinter _tkinter.c tkImaging.c tkappinit.c -DWITH_APPINIT + -I/usr/local/include -L/usr/local/lib -ltk8.0 -ltcl8.0 -lX11 + + + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt new file mode 100755 index 00000000000..e7c46c65fea --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt @@ -0,0 +1,149 @@ +==================================================================== +The PIL Bitmap Booster Patch +==================================================================== + +The pilbitmap booster patch greatly improves performance of the +ImageTk.BitmapImage constructor. Unfortunately, the design of Tk +doesn't allow us to do this from the tkImaging interface module, so +you have to patch the Tk sources. + +Once installed, the ImageTk module will automatically detect this +patch. + +(Note: this patch has been tested with Tk 8.0 on Win32 only, but it +should work just fine on other platforms as well). + +1. To the beginning of TkGetBitmapData (in generic/tkImgBmap.c), add + the following stuff: + +------------------------------------------------------------------------ + int width, height, numBytes, hotX, hotY; + char *p, *end, *expandedFileName; + ParseInfo pi; + char *data = NULL; + Tcl_DString buffer; + +/* ==================================================================== */ +/* The pilbitmap booster patch -- patch section */ +/* ==================================================================== */ + + char *PILGetBitmapData(); + + if (string) { + /* Is this a PIL bitmap reference? */ + data = PILGetBitmapData(string, widthPtr, heightPtr, hotXPtr, hotYPtr); + if (data) + return data; + } + +/* ==================================================================== */ + + pi.string = string; + if (string == NULL) { + if (Tcl_IsSafe(interp)) { +------------------------------------------------------------------------ + + +2. Append the following to the same file (you may wish to include +Imaging.h instead of copying the struct declaration...) + +------------------------------------------------------------------------ + +/* ==================================================================== */ +/* The pilbitmap booster patch -- code section */ +/* ==================================================================== */ + +/* Imaging declaration boldly copied from Imaging.h (!) */ + +typedef struct ImagingInstance *Imaging; /* a.k.a. ImagingImage :-) */ + +typedef unsigned char UINT8; +typedef int INT32; + +struct ImagingInstance { + + /* Format */ + char mode[4+1]; /* Band names ("1", "L", "P", "RGB", "RGBA", "CMYK") */ + int type; /* Always 0 in this version */ + int depth; /* Always 8 in this version */ + int bands; /* Number of bands (1, 3, or 4) */ + int xsize; /* Image dimension. */ + int ysize; + + /* Colour palette (for "P" images only) */ + void* palette; + + /* Data pointers */ + UINT8 **image8; /* Set for 8-bit image (pixelsize=1). */ + INT32 **image32; /* Set for 32-bit image (pixelsize=4). */ + + /* Internals */ + char **image; /* Actual raster data. */ + char *block; /* Set if data is allocated in a single block. */ + + int pixelsize; /* Size of a pixel, in bytes (1 or 4) */ + int linesize; /* Size of a line, in bytes (xsize * pixelsize) */ + + /* Virtual methods */ + void (*im_delete)(Imaging *); + +}; + +/* The pilbitmap booster patch allows you to pass PIL images to the + Tk bitmap decoder. Passing images this way is much more efficient + than using the "tobitmap" method. */ + +char * +PILGetBitmapData(string, widthPtr, heightPtr, hotXPtr, hotYPtr) + char *string; + int *widthPtr, *heightPtr; + int *hotXPtr, *hotYPtr; +{ + char* data; + char* p; + int y; + Imaging im; + + if (strncmp(string, "PIL:", 4) != 0) + return NULL; + + im = (Imaging) atol(string + 4); + + if (strcmp(im->mode, "1") != 0 && strcmp(im->mode, "L") != 0) + return NULL; + + data = p = (char *) ckalloc((unsigned) ((im->xsize+7)/8) * im->ysize); + + for (y = 0; y < im->ysize; y++) { + char* in = im->image8[y]; + int i, m, b; + b = 0; m = 1; + for (i = 0; i < im->xsize; i++) { + if (in[i] != 0) + b |= m; + m <<= 1; + if (m == 256){ + *p++ = b; + b = 0; m = 1; + } + } + if (m != 1) + *p++ = b; + } + + *widthPtr = im->xsize; + *heightPtr = im->ysize; + *hotXPtr = -1; + *hotYPtr = -1; + + return data; +} + +/* ==================================================================== */ + +------------------------------------------------------------------------ + +3. Recompile Tk and relink the _tkinter module (where necessary). + +==================================================================== +Last updated: 97-05-17/fl diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c new file mode 100755 index 00000000000..5963ee24c7d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c @@ -0,0 +1,265 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * TK interface for Python Imaging objects + * + * Copies (parts of) a named display memory to a photo image object. + * Also contains code to create an display memory. Under Tk, a + * display memory is simply an "L" or "RGB" image memory that is + * allocated in a single block. + * + * To use this module, import the _imagingtk module (ImageTk does + * this for you). + * + * If you're using Python in an embedded context, you can add the + * following lines to your Tcl_AppInit function (in tkappinit.c) + * instead. Put them after the calls to Tcl_Init and Tk_Init: + * + * { + * extern void TkImaging_Init(Tcl_Interp* interp); + * TkImaging_Init(interp); + * } + * + * This registers a Tcl command called "PyImagingPhoto", which is used + * to communicate between PIL and Tk's PhotoImage handler. + * + * Compile and link tkImaging.c with tkappinit.c and _tkinter (see the + * Setup file for details on how to use tkappinit.c). Note that + * _tkinter.c must be compiled with WITH_APPINIT. + * + * History: + * 1995-09-12 fl Created + * 1996-04-08 fl Ready for release + * 1997-05-09 fl Use command instead of image type + * 2001-03-18 fl Initialize alpha layer pointer (struct changed in 8.3) + * 2003-04-23 fl Fixed building for Tk 8.4.1 and later (Jack Jansen) + * 2004-06-24 fl Fixed building for Tk 8.4.6 and later. + * + * Copyright (c) 1997-2004 by Secret Labs AB + * Copyright (c) 1995-2004 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + +#define TK (TK_MAJOR_VERSION*10 + TK_MINOR_VERSION) + +/* This is needed for (at least) Tk 8.4.6 and later, to avoid warnings + for the Tcl_CreateCommand command. */ +#define USE_COMPAT_CONST + +#include "tk.h" + +#include "Imaging.h" + +#include + + +static Imaging +ImagingFind(const char* name) +{ + long id; + + /* FIXME: use CObject instead? */ + id = atol(name); + if (!id) + return NULL; + + return (Imaging) id; +} + + +static int +PyImagingPhotoPut(ClientData clientdata, Tcl_Interp* interp, + int argc, char **argv) +{ + Imaging im; + Tk_PhotoHandle photo; + Tk_PhotoImageBlock block; + + if (argc != 3) { + Tcl_AppendResult(interp, "usage: ", argv[0], + " destPhoto srcImage", (char *) NULL); + return TCL_ERROR; + } + + /* get Tcl PhotoImage handle */ + photo = Tk_FindPhoto(interp, argv[1]); + if (photo == NULL) { + Tcl_AppendResult( + interp, "destination photo must exist", (char *) NULL + ); + return TCL_ERROR; + } + + /* get PIL Image handle */ + im = ImagingFind(argv[2]); + if (!im) { + Tcl_AppendResult(interp, "bad name", (char*) NULL); + return TCL_ERROR; + } + if (!im->block) { + Tcl_AppendResult(interp, "bad display memory", (char*) NULL); + return TCL_ERROR; + } + + /* Active region */ +#if 0 + if (src_xoffset + xsize > im->xsize) + xsize = im->xsize - src_xoffset; + if (src_yoffset + ysize > im->ysize) + ysize = im->ysize - src_yoffset; + if (xsize < 0 || ysize < 0 + || src_xoffset >= im->xsize + || src_yoffset >= im->ysize) + return TCL_OK; +#endif + + /* Mode */ + + if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) { + block.pixelSize = 1; + block.offset[0] = block.offset[1] = block.offset[2] = 0; + } else if (strncmp(im->mode, "RGB", 3) == 0) { + block.pixelSize = 4; + block.offset[0] = 0; + block.offset[1] = 1; + block.offset[2] = 2; + if (strcmp(im->mode, "RGBA") == 0) + block.offset[3] = 3; /* alpha (or reserved, under 8.2) */ + else + block.offset[3] = 0; /* no alpha */ + } else { + Tcl_AppendResult(interp, "Bad mode", (char*) NULL); + return TCL_ERROR; + } + + block.width = im->xsize; + block.height = im->ysize; + block.pitch = im->linesize; + block.pixelPtr = (unsigned char*) im->block; +#if 0 + block.pixelPtr = (unsigned char*) im->block + + src_yoffset * im->linesize + + src_xoffset * im->pixelsize; +#endif + +#if TK < 84 /* < 8.4.0 */ + if (strcmp(im->mode, "RGBA") == 0) { + /* Copy non-transparent pixels to photo image */ + int x, y; + Tk_PhotoImageBlock run; + + /* Clear current contents */ + Tk_PhotoBlank(photo); + + /* Setup run descriptor */ + run.height = 1; + run.pitch = block.pitch; + run.pixelSize = block.pixelSize; + run.offset[0] = 0; + run.offset[1] = 1; + run.offset[2] = 2; + run.offset[3] = 0; /* no alpha (or reserved, under 8.2) */ + + /* Copy opaque runs to photo image */ + for (y = 0; y < block.height; y++) { + unsigned char* p = block.pixelPtr + y*block.pitch; + unsigned char* s = p; + int w = 0; + for (x = 0; x < block.width; x++) { + if (p[3]) { + /* opaque: add pixel to current run */ + if (w == 0) + s = p; + w = w + 1; + } else if (s) { + /* copy run to photo image */ + if (w > 0) { + run.width = w; + run.pixelPtr = s; + Tk_PhotoPutBlock(photo, &run, x-w, y, run.width, 1); + } + w = 0; + } + p += block.pixelSize; + } + if (w > 0) { + /* copy final run, if any */ + run.width = w; + run.pixelPtr = s; + Tk_PhotoPutBlock(photo, &run, x-w, y, run.width, 1); + } + } + + } else + + /* Copy opaque block to photo image, and leave the rest to TK */ + Tk_PhotoPutBlock(photo, &block, 0, 0, block.width, block.height); + +#else /* Tk 8.4 and newer */ +#if TK < 85 /* Tk 8.4 */ + Tk_PhotoPutBlock(photo, &block, 0, 0, block.width, block.height, + TK_PHOTO_COMPOSITE_SET); + if (strcmp(im->mode, "RGBA") == 0) + /* Tk workaround: we need apply ToggleComplexAlphaIfNeeded */ + /* (fixed in Tk 8.5a3) */ + Tk_PhotoSetSize(photo, block.width, block.height); +#else /* Tk 8.5 */ + Tk_PhotoPutBlock(interp, photo, &block, 0, 0, block.width, block.height, + TK_PHOTO_COMPOSITE_SET); +#endif +#endif + + return TCL_OK; +} + + +static int +PyImagingPhotoGet(ClientData clientdata, Tcl_Interp* interp, + int argc, char **argv) +{ + Tk_PhotoHandle photo; + Tk_PhotoImageBlock block; + + if (argc != 2) { + Tcl_AppendResult(interp, "usage: ", argv[0], + " srcPhoto", (char *) NULL); + return TCL_ERROR; + } + + /* get Tcl PhotoImage handle */ + photo = Tk_FindPhoto(interp, argv[1]); + if (photo == NULL) { + Tcl_AppendResult( + interp, "source photo must exist", (char *) NULL + ); + return TCL_ERROR; + } + + Tk_PhotoGetImage(photo, &block); + + printf("pixelPtr = %p\n", block.pixelPtr); + printf("width = %d\n", block.width); + printf("height = %d\n", block.height); + printf("pitch = %d\n", block.pitch); + printf("pixelSize = %d\n", block.pixelSize); + printf("offset = %d %d %d %d\n", block.offset[0], block.offset[1], + block.offset[2], block.offset[3]); + + Tcl_AppendResult( + interp, "this function is not yet supported", (char *) NULL + ); + + return TCL_ERROR; +} + + +void +TkImaging_Init(Tcl_Interp* interp) +{ + Tcl_CreateCommand(interp, "PyImagingPhoto", PyImagingPhotoPut, + (ClientData) 0, (Tcl_CmdDeleteProc*) NULL); + Tcl_CreateCommand(interp, "PyImagingPhotoGet", PyImagingPhotoGet, + (ClientData) 0, (Tcl_CmdDeleteProc*) NULL); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c new file mode 100755 index 00000000000..c21897decdc --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c @@ -0,0 +1,3281 @@ +/* + * The Python Imaging Library. + * + * the imaging library bindings + * + * history: + * 1995-09-24 fl Created + * 1996-03-24 fl Ready for first public release (release 0.0) + * 1996-03-25 fl Added fromstring (for Jack's "img" library) + * 1996-03-28 fl Added channel operations + * 1996-03-31 fl Added point operation + * 1996-04-08 fl Added new/new_block/new_array factories + * 1996-04-13 fl Added decoders + * 1996-05-04 fl Added palette hack + * 1996-05-12 fl Compile cleanly as C++ + * 1996-05-19 fl Added matrix conversions, gradient fills + * 1996-05-27 fl Added display_mode + * 1996-07-22 fl Added getbbox, offset + * 1996-07-23 fl Added sequence semantics + * 1996-08-13 fl Added logical operators, point mode + * 1996-08-16 fl Modified paste interface + * 1996-09-06 fl Added putdata methods, use abstract interface + * 1996-11-01 fl Added xbm encoder + * 1996-11-04 fl Added experimental path stuff, draw_lines, etc + * 1996-12-10 fl Added zip decoder, crc32 interface + * 1996-12-14 fl Added modulo arithmetics + * 1996-12-29 fl Added zip encoder + * 1997-01-03 fl Added fli and msp decoders + * 1997-01-04 fl Added experimental sun_rle and tga_rle decoders + * 1997-01-05 fl Added gif encoder, getpalette hack + * 1997-02-23 fl Added histogram mask + * 1997-05-12 fl Minor tweaks to match the IFUNC95 interface + * 1997-05-21 fl Added noise generator, spread effect + * 1997-06-05 fl Added mandelbrot generator + * 1997-08-02 fl Modified putpalette to coerce image mode if necessary + * 1998-01-11 fl Added INT32 support + * 1998-01-22 fl Fixed draw_points to draw the last point too + * 1998-06-28 fl Added getpixel, getink, draw_ink + * 1998-07-12 fl Added getextrema + * 1998-07-17 fl Added point conversion to arbitrary formats + * 1998-09-21 fl Added support for resampling filters + * 1998-09-22 fl Added support for quad transform + * 1998-12-29 fl Added support for arcs, chords, and pieslices + * 1999-01-10 fl Added some experimental arrow graphics stuff + * 1999-02-06 fl Added draw_bitmap, font acceleration stuff + * 2001-04-17 fl Fixed some egcs compiler nits + * 2001-09-17 fl Added screen grab primitives (win32) + * 2002-03-09 fl Added stretch primitive + * 2002-03-10 fl Fixed filter handling in rotate + * 2002-06-06 fl Added I, F, and RGB support to putdata + * 2002-06-08 fl Added rankfilter + * 2002-06-09 fl Added support for user-defined filter kernels + * 2002-11-19 fl Added clipboard grab primitives (win32) + * 2002-12-11 fl Added draw context + * 2003-04-26 fl Tweaks for Python 2.3 beta 1 + * 2003-05-21 fl Added createwindow primitive (win32) + * 2003-09-13 fl Added thread section hooks + * 2003-09-15 fl Added expand helper + * 2003-09-26 fl Added experimental LA support + * 2004-02-21 fl Handle zero-size images in quantize + * 2004-06-05 fl Added ptr attribute (used to access Imaging objects) + * 2004-06-05 fl Don't crash when fetching pixels from zero-wide images + * 2004-09-17 fl Added getcolors + * 2004-10-04 fl Added modefilter + * 2005-10-02 fl Added access proxy + * 2006-06-18 fl Always draw last point in polyline + * + * Copyright (c) 1997-2006 by Secret Labs AB + * Copyright (c) 1995-2006 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + + +#include "Python.h" + +#include "Imaging.h" + + +/* Configuration stuff. Feel free to undef things you don't need. */ +#define WITH_IMAGECHOPS /* ImageChops support */ +#define WITH_IMAGEDRAW /* ImageDraw support */ +#define WITH_MAPPING /* use memory mapping to read some file formats */ +#define WITH_IMAGEPATH /* ImagePath stuff */ +#define WITH_ARROW /* arrow graphics stuff (experimental) */ +#define WITH_EFFECTS /* special effects */ +#define WITH_QUANTIZE /* quantization support */ +#define WITH_RANKFILTER /* rank filter */ +#define WITH_MODEFILTER /* mode filter */ +#define WITH_THREADING /* "friendly" threading support */ +#define WITH_UNSHARPMASK /* Kevin Cazabon's unsharpmask module */ + +#define WITH_DEBUG /* extra debugging interfaces */ + +/* PIL Plus extensions */ +#undef WITH_CRACKCODE /* pil plus */ + +#undef VERBOSE + +#define CLIP(x) ((x) <= 0 ? 0 : (x) < 256 ? (x) : 255) + +#define B16(p, i) ((((int)p[(i)]) << 8) + p[(i)+1]) +#define L16(p, i) ((((int)p[(i)+1]) << 8) + p[(i)]) +#define S16(v) ((v) < 32768 ? (v) : ((v) - 65536)) + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#if PY_VERSION_HEX < 0x02050000 +#define Py_ssize_t int +#define ssizeargfunc intargfunc +#define ssizessizeargfunc intintargfunc +#define ssizeobjargproc intobjargproc +#define ssizessizeobjargproc intintobjargproc +#endif + +/* -------------------------------------------------------------------- */ +/* OBJECT ADMINISTRATION */ +/* -------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + Imaging image; + ImagingAccess access; +} ImagingObject; + +staticforward PyTypeObject Imaging_Type; + +#ifdef WITH_IMAGEDRAW + +typedef struct +{ + /* to write a character, cut out sxy from glyph data, place + at current position plus dxy, and advance by (dx, dy) */ + int dx, dy; + int dx0, dy0, dx1, dy1; + int sx0, sy0, sx1, sy1; +} Glyph; + +typedef struct { + PyObject_HEAD + ImagingObject* ref; + Imaging bitmap; + int ysize; + int baseline; + Glyph glyphs[256]; +} ImagingFontObject; + +staticforward PyTypeObject ImagingFont_Type; + +typedef struct { + PyObject_HEAD + ImagingObject* image; + UINT8 ink[4]; + int blend; +} ImagingDrawObject; + +staticforward PyTypeObject ImagingDraw_Type; + +#endif + +typedef struct { + PyObject_HEAD + ImagingObject* image; + int readonly; +} PixelAccessObject; + +staticforward PyTypeObject PixelAccess_Type; + +PyObject* +PyImagingNew(Imaging imOut) +{ + ImagingObject* imagep; + + if (!imOut) + return NULL; + + imagep = PyObject_New(ImagingObject, &Imaging_Type); + if (imagep == NULL) { + ImagingDelete(imOut); + return NULL; + } + +#ifdef VERBOSE + printf("imaging %p allocated\n", imagep); +#endif + + imagep->image = imOut; + imagep->access = ImagingAccessNew(imOut); + + return (PyObject*) imagep; +} + +static void +_dealloc(ImagingObject* imagep) +{ + +#ifdef VERBOSE + printf("imaging %p deleted\n", imagep); +#endif + + if (imagep->access) + ImagingAccessDelete(imagep->image, imagep->access); + ImagingDelete(imagep->image); + PyObject_Del(imagep); +} + +#define PyImaging_Check(op) ((op)->ob_type == &Imaging_Type) + +Imaging PyImaging_AsImaging(PyObject *op) +{ + if (!PyImaging_Check(op)) { + PyErr_BadInternalCall(); + return NULL; + } + + return ((ImagingObject *)op)->image; +} + + +/* -------------------------------------------------------------------- */ +/* THREAD HANDLING */ +/* -------------------------------------------------------------------- */ + +void ImagingSectionEnter(ImagingSectionCookie* cookie) +{ +#ifdef WITH_THREADING + *cookie = (PyThreadState *) PyEval_SaveThread(); +#endif +} + +void ImagingSectionLeave(ImagingSectionCookie* cookie) +{ +#ifdef WITH_THREADING + PyEval_RestoreThread((PyThreadState*) *cookie); +#endif +} + +/* -------------------------------------------------------------------- */ +/* BUFFER HANDLING */ +/* -------------------------------------------------------------------- */ +/* Python compatibility API */ + +#if PY_VERSION_HEX < 0x02020000 + +int PyImaging_CheckBuffer(PyObject *buffer) +{ + PyBufferProcs *procs = buffer->ob_type->tp_as_buffer; + if (procs && procs->bf_getreadbuffer && procs->bf_getsegcount && + procs->bf_getsegcount(buffer, NULL) == 1) + return 1; + return 0; +} + +int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr) +{ + PyBufferProcs *procs = buffer->ob_type->tp_as_buffer; + return procs->bf_getreadbuffer(buffer, 0, ptr); +} + +#else + +int PyImaging_CheckBuffer(PyObject* buffer) +{ + return PyObject_CheckReadBuffer(buffer); +} + +int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr) +{ + /* must call check_buffer first! */ +#if PY_VERSION_HEX < 0x02050000 + int n = 0; +#else + Py_ssize_t n = 0; +#endif + PyObject_AsReadBuffer(buffer, ptr, &n); + return (int) n; +} + +#endif + +/* -------------------------------------------------------------------- */ +/* EXCEPTION REROUTING */ +/* -------------------------------------------------------------------- */ + +/* error messages */ +static const char* must_be_sequence = "argument must be a sequence"; +static const char* wrong_mode = "unrecognized image mode"; +static const char* wrong_raw_mode = "unrecognized raw mode"; +static const char* outside_image = "image index out of range"; +static const char* outside_palette = "palette index out of range"; +static const char* no_palette = "image has no palette"; +static const char* readonly = "image is readonly"; +/* static const char* no_content = "image has no content"; */ + +void * +ImagingError_IOError(void) +{ + PyErr_SetString(PyExc_IOError, "error when accessing file"); + return NULL; +} + +void * +ImagingError_MemoryError(void) +{ + return PyErr_NoMemory(); +} + +void * +ImagingError_Mismatch(void) +{ + PyErr_SetString(PyExc_ValueError, "images do not match"); + return NULL; +} + +void * +ImagingError_ModeError(void) +{ + PyErr_SetString(PyExc_ValueError, "image has wrong mode"); + return NULL; +} + +void * +ImagingError_ValueError(const char *message) +{ + PyErr_SetString( + PyExc_ValueError, + (message) ? (char*) message : "unrecognized argument value" + ); + return NULL; +} + +void +ImagingError_Clear(void) +{ + PyErr_Clear(); +} + +/* -------------------------------------------------------------------- */ +/* HELPERS */ +/* -------------------------------------------------------------------- */ + +static int +getbands(const char* mode) +{ + Imaging im; + int bands; + + /* FIXME: add primitive to libImaging to avoid extra allocation */ + im = ImagingNew(mode, 0, 0); + if (!im) + return -1; + + bands = im->bands; + + ImagingDelete(im); + + return bands; +} + +#define TYPE_UINT8 (0x100|sizeof(UINT8)) +#define TYPE_INT32 (0x200|sizeof(INT32)) +#define TYPE_FLOAT32 (0x300|sizeof(FLOAT32)) +#define TYPE_DOUBLE (0x400|sizeof(double)) + +static void* +getlist(PyObject* arg, int* length, const char* wrong_length, int type) +{ + int i, n; + void* list; + + if (!PySequence_Check(arg)) { + PyErr_SetString(PyExc_TypeError, must_be_sequence); + return NULL; + } + + n = PyObject_Length(arg); + if (length && wrong_length && n != *length) { + PyErr_SetString(PyExc_ValueError, wrong_length); + return NULL; + } + + list = malloc(n * (type & 0xff)); + if (!list) + return PyErr_NoMemory(); + + switch (type) { + case TYPE_UINT8: + if (PyList_Check(arg)) { + for (i = 0; i < n; i++) { + PyObject *op = PyList_GET_ITEM(arg, i); + int temp = PyInt_AsLong(op); + ((UINT8*)list)[i] = CLIP(temp); + } + } else { + for (i = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(arg, i); + int temp = PyInt_AsLong(op); + Py_XDECREF(op); + ((UINT8*)list)[i] = CLIP(temp); + } + } + break; + case TYPE_INT32: + if (PyList_Check(arg)) { + for (i = 0; i < n; i++) { + PyObject *op = PyList_GET_ITEM(arg, i); + int temp = PyInt_AsLong(op); + ((INT32*)list)[i] = temp; + } + } else { + for (i = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(arg, i); + int temp = PyInt_AsLong(op); + Py_XDECREF(op); + ((INT32*)list)[i] = temp; + } + } + break; + case TYPE_FLOAT32: + if (PyList_Check(arg)) { + for (i = 0; i < n; i++) { + PyObject *op = PyList_GET_ITEM(arg, i); + double temp = PyFloat_AsDouble(op); + ((FLOAT32*)list)[i] = (FLOAT32) temp; + } + } else { + for (i = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(arg, i); + double temp = PyFloat_AsDouble(op); + Py_XDECREF(op); + ((FLOAT32*)list)[i] = (FLOAT32) temp; + } + } + break; + case TYPE_DOUBLE: + if (PyList_Check(arg)) { + for (i = 0; i < n; i++) { + PyObject *op = PyList_GET_ITEM(arg, i); + double temp = PyFloat_AsDouble(op); + ((double*)list)[i] = temp; + } + } else { + for (i = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(arg, i); + double temp = PyFloat_AsDouble(op); + Py_XDECREF(op); + ((double*)list)[i] = temp; + } + } + break; + } + + if (length) + *length = n; + + PyErr_Clear(); + + return list; +} + +static inline PyObject* +getpixel(Imaging im, ImagingAccess access, int x, int y) +{ + union { + UINT8 b[4]; + INT16 h; + INT32 i; + FLOAT32 f; + } pixel; + + if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) { + PyErr_SetString(PyExc_IndexError, outside_image); + return NULL; + } + + access->get_pixel(im, x, y, &pixel); + + switch (im->type) { + case IMAGING_TYPE_UINT8: + switch (im->bands) { + case 1: + return PyInt_FromLong(pixel.b[0]); + case 2: + return Py_BuildValue("ii", pixel.b[0], pixel.b[1]); + case 3: + return Py_BuildValue("iii", pixel.b[0], pixel.b[1], pixel.b[2]); + case 4: + return Py_BuildValue("iiii", pixel.b[0], pixel.b[1], pixel.b[2], pixel.b[3]); + } + break; + case IMAGING_TYPE_INT32: + return PyInt_FromLong(pixel.i); + case IMAGING_TYPE_FLOAT32: + return PyFloat_FromDouble(pixel.f); + case IMAGING_TYPE_SPECIAL: + if (strncmp(im->mode, "I;16", 4) == 0) + return PyInt_FromLong(pixel.h); + break; + } + + /* unknown type */ + Py_INCREF(Py_None); + return Py_None; +} + +static char* +getink(PyObject* color, Imaging im, char* ink) +{ + int r, g, b, a; + double f; + + /* fill ink buffer (four bytes) with something that can + be cast to either UINT8 or INT32 */ + + switch (im->type) { + case IMAGING_TYPE_UINT8: + /* unsigned integer */ + if (im->bands == 1) { + /* unsigned integer, single layer */ + r = PyInt_AsLong(color); + if (r == -1 && PyErr_Occurred()) + return NULL; + ink[0] = CLIP(r); + ink[1] = ink[2] = ink[3] = 0; + } else { + a = 255; + if (PyInt_Check(color)) { + r = PyInt_AS_LONG(color); + /* compatibility: ABGR */ + a = (UINT8) (r >> 24); + b = (UINT8) (r >> 16); + g = (UINT8) (r >> 8); + r = (UINT8) r; + } else { + if (im->bands == 2) { + if (!PyArg_ParseTuple(color, "i|i", &r, &a)) + return NULL; + g = b = r; + } else { + if (!PyArg_ParseTuple(color, "iii|i", &r, &g, &b, &a)) + return NULL; + } + } + ink[0] = CLIP(r); + ink[1] = CLIP(g); + ink[2] = CLIP(b); + ink[3] = CLIP(a); + } + return ink; + case IMAGING_TYPE_INT32: + /* signed integer */ + r = PyInt_AsLong(color); + if (r == -1 && PyErr_Occurred()) + return NULL; + *(INT32*) ink = r; + return ink; + case IMAGING_TYPE_FLOAT32: + /* floating point */ + f = PyFloat_AsDouble(color); + if (f == -1.0 && PyErr_Occurred()) + return NULL; + *(FLOAT32*) ink = (FLOAT32) f; + return ink; + case IMAGING_TYPE_SPECIAL: + if (strncmp(im->mode, "I;16", 4) == 0) { + r = PyInt_AsLong(color); + if (r == -1 && PyErr_Occurred()) + return NULL; + ink[0] = (UINT8) r; + ink[1] = (UINT8) (r >> 8); + ink[2] = ink[3] = 0; + return ink; + } + } + + PyErr_SetString(PyExc_ValueError, wrong_mode); + return NULL; +} + +/* -------------------------------------------------------------------- */ +/* FACTORIES */ +/* -------------------------------------------------------------------- */ + +static PyObject* +_fill(PyObject* self, PyObject* args) +{ + char* mode; + int xsize, ysize; + PyObject* color; + char buffer[4]; + Imaging im; + + xsize = ysize = 256; + color = NULL; + + if (!PyArg_ParseTuple(args, "s|(ii)O", &mode, &xsize, &ysize, &color)) + return NULL; + + im = ImagingNew(mode, xsize, ysize); + if (!im) + return NULL; + + if (color) { + if (!getink(color, im, buffer)) { + ImagingDelete(im); + return NULL; + } + } else + buffer[0] = buffer[1] = buffer[2] = buffer[3] = 0; + + (void) ImagingFill(im, buffer); + + return PyImagingNew(im); +} + +static PyObject* +_new(PyObject* self, PyObject* args) +{ + char* mode; + int xsize, ysize; + + if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) + return NULL; + + return PyImagingNew(ImagingNew(mode, xsize, ysize)); +} + +static PyObject* +_new_array(PyObject* self, PyObject* args) +{ + char* mode; + int xsize, ysize; + + if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) + return NULL; + + return PyImagingNew(ImagingNewArray(mode, xsize, ysize)); +} + +static PyObject* +_new_block(PyObject* self, PyObject* args) +{ + char* mode; + int xsize, ysize; + + if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) + return NULL; + + return PyImagingNew(ImagingNewBlock(mode, xsize, ysize)); +} + +static PyObject* +_getcount(PyObject* self, PyObject* args) +{ + if (!PyArg_ParseTuple(args, ":getcount")) + return NULL; + + return PyInt_FromLong(ImagingNewCount); +} + +static PyObject* +_linear_gradient(PyObject* self, PyObject* args) +{ + char* mode; + + if (!PyArg_ParseTuple(args, "s", &mode)) + return NULL; + + return PyImagingNew(ImagingFillLinearGradient(mode)); +} + +static PyObject* +_radial_gradient(PyObject* self, PyObject* args) +{ + char* mode; + + if (!PyArg_ParseTuple(args, "s", &mode)) + return NULL; + + return PyImagingNew(ImagingFillRadialGradient(mode)); +} + +static PyObject* +_open_ppm(PyObject* self, PyObject* args) +{ + char* filename; + + if (!PyArg_ParseTuple(args, "s", &filename)) + return NULL; + + return PyImagingNew(ImagingOpenPPM(filename)); +} + +static PyObject* +_blend(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep1; + ImagingObject* imagep2; + double alpha; + + alpha = 0.5; + if (!PyArg_ParseTuple(args, "O!O!|d", + &Imaging_Type, &imagep1, + &Imaging_Type, &imagep2, + &alpha)) + return NULL; + + return PyImagingNew(ImagingBlend(imagep1->image, imagep2->image, + (float) alpha)); +} + +/* -------------------------------------------------------------------- */ +/* METHODS */ +/* -------------------------------------------------------------------- */ + +static PyObject* +_convert(ImagingObject* self, PyObject* args) +{ + char* mode; + int dither = 0; + ImagingObject *paletteimage = NULL; + + if (!PyArg_ParseTuple(args, "s|iO", &mode, &dither, &paletteimage)) + return NULL; + if (paletteimage != NULL) { + if (!PyImaging_Check(paletteimage)) { + PyObject_Print((PyObject *)paletteimage, stderr, 0); + PyErr_SetString(PyExc_ValueError, "palette argument must be image with mode 'P'"); + return NULL; + } + if (paletteimage->image->palette == NULL) { + PyErr_SetString(PyExc_ValueError, "null palette"); + return NULL; + } + } + + return PyImagingNew(ImagingConvert(self->image, mode, paletteimage ? paletteimage->image->palette : NULL, dither)); +} + +static PyObject* +_convert2(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep1; + ImagingObject* imagep2; + if (!PyArg_ParseTuple(args, "O!O!", + &Imaging_Type, &imagep1, + &Imaging_Type, &imagep2)) + return NULL; + + if (!ImagingConvert2(imagep1->image, imagep2->image)) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_convert_matrix(ImagingObject* self, PyObject* args) +{ + char* mode; + float m[12]; + if (!PyArg_ParseTuple(args, "s(ffff)", &mode, m+0, m+1, m+2, m+3)) { + PyErr_Clear(); + if (!PyArg_ParseTuple(args, "s(ffffffffffff)", &mode, + m+0, m+1, m+2, m+3, + m+4, m+5, m+6, m+7, + m+8, m+9, m+10, m+11)) + return NULL; + } + + return PyImagingNew(ImagingConvertMatrix(self->image, mode, m)); +} + +static PyObject* +_copy(ImagingObject* self, PyObject* args) +{ + if (!PyArg_ParseTuple(args, "")) + return NULL; + + return PyImagingNew(ImagingCopy(self->image)); +} + +static PyObject* +_copy2(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep1; + ImagingObject* imagep2; + if (!PyArg_ParseTuple(args, "O!O!", + &Imaging_Type, &imagep1, + &Imaging_Type, &imagep2)) + return NULL; + + if (!ImagingCopy2(imagep1->image, imagep2->image)) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_crop(ImagingObject* self, PyObject* args) +{ + int x0, y0, x1, y1; + if (!PyArg_ParseTuple(args, "(iiii)", &x0, &y0, &x1, &y1)) + return NULL; + + return PyImagingNew(ImagingCrop(self->image, x0, y0, x1, y1)); +} + +static PyObject* +_expand(ImagingObject* self, PyObject* args) +{ + int x, y; + int mode = 0; + if (!PyArg_ParseTuple(args, "ii|i", &x, &y, &mode)) + return NULL; + + return PyImagingNew(ImagingExpand(self->image, x, y, mode)); +} + +static PyObject* +_filter(ImagingObject* self, PyObject* args) +{ + PyObject* imOut; + int kernelsize; + FLOAT32* kerneldata; + + int xsize, ysize; + float divisor, offset; + PyObject* kernel = NULL; + if (!PyArg_ParseTuple(args, "(ii)ffO", &xsize, &ysize, + &divisor, &offset, &kernel)) + return NULL; + + /* get user-defined kernel */ + kerneldata = getlist(kernel, &kernelsize, NULL, TYPE_FLOAT32); + if (!kerneldata) + return NULL; + if (kernelsize != xsize * ysize) { + free(kerneldata); + return ImagingError_ValueError("bad kernel size"); + } + + imOut = PyImagingNew( + ImagingFilter(self->image, xsize, ysize, kerneldata, offset, divisor) + ); + + free(kerneldata); + + return imOut; +} + +#ifdef WITH_UNSHARPMASK +static PyObject* +_gaussian_blur(ImagingObject* self, PyObject* args) +{ + Imaging imIn; + Imaging imOut; + + float radius = 0; + if (!PyArg_ParseTuple(args, "f", &radius)) + return NULL; + + imIn = self->image; + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + if (!imOut) + return NULL; + + if (!ImagingGaussianBlur(imIn, imOut, radius)) + return NULL; + + return PyImagingNew(imOut); +} +#endif + +static PyObject* +_getpalette(ImagingObject* self, PyObject* args) +{ + PyObject* palette; + int palettesize = 256; + int bits; + ImagingShuffler pack; + + char* mode = "RGB"; + char* rawmode = "RGB"; + if (!PyArg_ParseTuple(args, "|ss", &mode, &rawmode)) + return NULL; + + if (!self->image->palette) { + PyErr_SetString(PyExc_ValueError, no_palette); + return NULL; + } + + pack = ImagingFindPacker(mode, rawmode, &bits); + if (!pack) { + PyErr_SetString(PyExc_ValueError, wrong_raw_mode); + return NULL; + } + + palette = PyString_FromStringAndSize(NULL, palettesize * bits / 8); + if (!palette) + return NULL; + + pack((UINT8*) PyString_AsString(palette), + self->image->palette->palette, palettesize); + + return palette; +} + +static inline int +_getxy(PyObject* xy, int* x, int *y) +{ + PyObject* value; + + if (!PyTuple_Check(xy) || PyTuple_GET_SIZE(xy) != 2) + goto badarg; + + value = PyTuple_GET_ITEM(xy, 0); + if (PyInt_Check(value)) + *x = PyInt_AS_LONG(value); + else if (PyFloat_Check(value)) + *x = (int) PyFloat_AS_DOUBLE(value); + else + goto badval; + + value = PyTuple_GET_ITEM(xy, 1); + if (PyInt_Check(value)) + *y = PyInt_AS_LONG(value); + else if (PyFloat_Check(value)) + *y = (int) PyFloat_AS_DOUBLE(value); + else + goto badval; + + return 0; + + badarg: + PyErr_SetString( + PyExc_TypeError, + "argument must be sequence of length 2" + ); + return -1; + + badval: + PyErr_SetString( + PyExc_TypeError, + "an integer is required" + ); + return -1; +} + +static PyObject* +_getpixel(ImagingObject* self, PyObject* args) +{ + PyObject* xy; + int x, y; + + if (PyTuple_GET_SIZE(args) != 1) { + PyErr_SetString( + PyExc_TypeError, + "argument 1 must be sequence of length 2" + ); + return NULL; + } + + xy = PyTuple_GET_ITEM(args, 0); + + if (_getxy(xy, &x, &y)) + return NULL; + + if (self->access == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + + return getpixel(self->image, self->access, x, y); +} + +static PyObject* +_histogram(ImagingObject* self, PyObject* args) +{ + ImagingHistogram h; + PyObject* list; + int i; + union { + UINT8 u[2]; + INT32 i[2]; + FLOAT32 f[2]; + } extrema; + void* ep; + int i0, i1; + double f0, f1; + + PyObject* extremap = NULL; + ImagingObject* maskp = NULL; + if (!PyArg_ParseTuple(args, "|OO!", &extremap, &Imaging_Type, &maskp)) + return NULL; + + if (extremap) { + ep = &extrema; + switch (self->image->type) { + case IMAGING_TYPE_UINT8: + if (!PyArg_ParseTuple(extremap, "ii", &i0, &i1)) + return NULL; + /* FIXME: clip */ + extrema.u[0] = i0; + extrema.u[1] = i1; + break; + case IMAGING_TYPE_INT32: + if (!PyArg_ParseTuple(extremap, "ii", &i0, &i1)) + return NULL; + extrema.i[0] = i0; + extrema.i[1] = i1; + break; + case IMAGING_TYPE_FLOAT32: + if (!PyArg_ParseTuple(extremap, "dd", &f0, &f1)) + return NULL; + extrema.f[0] = (FLOAT32) f0; + extrema.f[1] = (FLOAT32) f1; + break; + default: + ep = NULL; + break; + } + } else + ep = NULL; + + h = ImagingGetHistogram(self->image, (maskp) ? maskp->image : NULL, ep); + + if (!h) + return NULL; + + /* Build an integer list containing the histogram */ + list = PyList_New(h->bands * 256); + for (i = 0; i < h->bands * 256; i++) { + PyObject* item; + item = PyInt_FromLong(h->histogram[i]); + if (item == NULL) { + Py_DECREF(list); + list = NULL; + break; + } + PyList_SetItem(list, i, item); + } + + ImagingHistogramDelete(h); + + return list; +} + +#ifdef WITH_MODEFILTER +static PyObject* +_modefilter(ImagingObject* self, PyObject* args) +{ + int size; + if (!PyArg_ParseTuple(args, "i", &size)) + return NULL; + + return PyImagingNew(ImagingModeFilter(self->image, size)); +} +#endif + +static PyObject* +_offset(ImagingObject* self, PyObject* args) +{ + int xoffset, yoffset; + if (!PyArg_ParseTuple(args, "ii", &xoffset, &yoffset)) + return NULL; + + return PyImagingNew(ImagingOffset(self->image, xoffset, yoffset)); +} + +static PyObject* +_paste(ImagingObject* self, PyObject* args) +{ + int status; + char ink[4]; + + PyObject* source; + int x0, y0, x1, y1; + ImagingObject* maskp = NULL; + if (!PyArg_ParseTuple(args, "O(iiii)|O!", + &source, + &x0, &y0, &x1, &y1, + &Imaging_Type, &maskp)) + return NULL; + + if (PyImaging_Check(source)) + status = ImagingPaste( + self->image, PyImaging_AsImaging(source), + (maskp) ? maskp->image : NULL, + x0, y0, x1, y1 + ); + + else { + if (!getink(source, self->image, ink)) + return NULL; + status = ImagingFill2( + self->image, ink, + (maskp) ? maskp->image : NULL, + x0, y0, x1, y1 + ); + } + + if (status < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_point(ImagingObject* self, PyObject* args) +{ + static const char* wrong_number = "wrong number of lut entries"; + + int n, i; + int bands; + Imaging im; + + PyObject* list; + char* mode; + if (!PyArg_ParseTuple(args, "Oz", &list, &mode)) + return NULL; + + if (mode && !strcmp(mode, "F")) { + FLOAT32* data; + + /* map from 8-bit data to floating point */ + n = 256; + data = getlist(list, &n, wrong_number, TYPE_FLOAT32); + if (!data) + return NULL; + im = ImagingPoint(self->image, mode, (void*) data); + free(data); + + } else if (!strcmp(self->image->mode, "I") && mode && !strcmp(mode, "L")) { + UINT8* data; + + /* map from 16-bit subset of 32-bit data to 8-bit */ + /* FIXME: support arbitrary number of entries (requires API change) */ + n = 65536; + data = getlist(list, &n, wrong_number, TYPE_UINT8); + if (!data) + return NULL; + im = ImagingPoint(self->image, mode, (void*) data); + free(data); + + } else { + INT32* data; + UINT8 lut[1024]; + + if (mode) { + bands = getbands(mode); + if (bands < 0) + return NULL; + } else + bands = self->image->bands; + + /* map to integer data */ + n = 256 * bands; + data = getlist(list, &n, wrong_number, TYPE_INT32); + if (!data) + return NULL; + + if (mode && !strcmp(mode, "I")) + im = ImagingPoint(self->image, mode, (void*) data); + else if (mode && bands > 1) { + for (i = 0; i < 256; i++) { + lut[i*4] = CLIP(data[i]); + lut[i*4+1] = CLIP(data[i+256]); + lut[i*4+2] = CLIP(data[i+512]); + if (n > 768) + lut[i*4+3] = CLIP(data[i+768]); + } + im = ImagingPoint(self->image, mode, (void*) lut); + } else { + /* map individual bands */ + for (i = 0; i < n; i++) + lut[i] = CLIP(data[i]); + im = ImagingPoint(self->image, mode, (void*) lut); + } + free(data); + } + + return PyImagingNew(im); +} + +static PyObject* +_point_transform(ImagingObject* self, PyObject* args) +{ + double scale = 1.0; + double offset = 0.0; + if (!PyArg_ParseTuple(args, "|dd", &scale, &offset)) + return NULL; + + return PyImagingNew(ImagingPointTransform(self->image, scale, offset)); +} + +static PyObject* +_putdata(ImagingObject* self, PyObject* args) +{ + Imaging image; + int n, i, x, y; + + PyObject* data; + double scale = 1.0; + double offset = 0.0; + if (!PyArg_ParseTuple(args, "O|dd", &data, &scale, &offset)) + return NULL; + + if (!PySequence_Check(data)) { + PyErr_SetString(PyExc_TypeError, must_be_sequence); + return NULL; + } + + image = self->image; + + n = PyObject_Length(data); + if (n > (int) (image->xsize * image->ysize)) { + PyErr_SetString(PyExc_TypeError, "too many data entries"); + return NULL; + } + + if (image->image8) { + if (PyString_Check(data)) { + unsigned char* p; + p = (unsigned char*) PyString_AS_STRING((PyStringObject*) data); + if (scale == 1.0 && offset == 0.0) + /* Plain string data */ + for (i = y = 0; i < n; i += image->xsize, y++) { + x = n - i; + if (x > (int) image->xsize) + x = image->xsize; + memcpy(image->image8[y], p+i, x); + } + else + /* Scaled and clipped string data */ + for (i = x = y = 0; i < n; i++) { + image->image8[y][x] = CLIP((int) (p[i] * scale + offset)); + if (++x >= (int) image->xsize) + x = 0, y++; + } + } else { + if (scale == 1.0 && offset == 0.0) { + /* Clipped data */ + if (PyList_Check(data)) { + for (i = x = y = 0; i < n; i++) { + PyObject *op = PyList_GET_ITEM(data, i); + image->image8[y][x] = (UINT8) CLIP(PyInt_AsLong(op)); + if (++x >= (int) image->xsize) + x = 0, y++; + } + } else { + for (i = x = y = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(data, i); + image->image8[y][x] = (UINT8) CLIP(PyInt_AsLong(op)); + Py_XDECREF(op); + if (++x >= (int) image->xsize) + x = 0, y++; + } + } + } else { + if (PyList_Check(data)) { + /* Scaled and clipped data */ + for (i = x = y = 0; i < n; i++) { + PyObject *op = PyList_GET_ITEM(data, i); + image->image8[y][x] = CLIP( + (int) (PyFloat_AsDouble(op) * scale + offset)); + if (++x >= (int) image->xsize) + x = 0, y++; + } + } else { + for (i = x = y = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(data, i); + image->image8[y][x] = CLIP( + (int) (PyFloat_AsDouble(op) * scale + offset)); + Py_XDECREF(op); + if (++x >= (int) image->xsize) + x = 0, y++; + } + } + } + PyErr_Clear(); /* Avoid weird exceptions */ + } + } else { + /* 32-bit images */ + switch (image->type) { + case IMAGING_TYPE_INT32: + for (i = x = y = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(data, i); + IMAGING_PIXEL_INT32(image, x, y) = + (INT32) (PyFloat_AsDouble(op) * scale + offset); + Py_XDECREF(op); + if (++x >= (int) image->xsize) + x = 0, y++; + } + PyErr_Clear(); /* Avoid weird exceptions */ + break; + case IMAGING_TYPE_FLOAT32: + for (i = x = y = 0; i < n; i++) { + PyObject *op = PySequence_GetItem(data, i); + IMAGING_PIXEL_FLOAT32(image, x, y) = + (FLOAT32) (PyFloat_AsDouble(op) * scale + offset); + Py_XDECREF(op); + if (++x >= (int) image->xsize) + x = 0, y++; + } + PyErr_Clear(); /* Avoid weird exceptions */ + break; + default: + for (i = x = y = 0; i < n; i++) { + char ink[4]; + PyObject *op = PySequence_GetItem(data, i); + if (!op || !getink(op, image, ink)) { + Py_DECREF(op); + return NULL; + } + /* FIXME: what about scale and offset? */ + image->image32[y][x] = *((INT32*) ink); + Py_XDECREF(op); + if (++x >= (int) image->xsize) + x = 0, y++; + } + PyErr_Clear(); /* Avoid weird exceptions */ + break; + } + } + + Py_INCREF(Py_None); + return Py_None; +} + +#ifdef WITH_QUANTIZE + +#include "Quant.h" +static PyObject* +_quantize(ImagingObject* self, PyObject* args) +{ + int colours = 256; + int method = 0; + int kmeans = 0; + if (!PyArg_ParseTuple(args, "|iii", &colours, &method, &kmeans)) + return NULL; + + if (!self->image->xsize || !self->image->ysize) { + /* no content; return an empty image */ + return PyImagingNew( + ImagingNew("P", self->image->xsize, self->image->ysize) + ); + } + + return PyImagingNew(ImagingQuantize(self->image, colours, method, kmeans)); +} +#endif + +static PyObject* +_putpalette(ImagingObject* self, PyObject* args) +{ + ImagingShuffler unpack; + int bits; + + char* rawmode; + UINT8* palette; + int palettesize; + if (!PyArg_ParseTuple(args, "ss#", &rawmode, &palette, &palettesize)) + return NULL; + + if (strcmp(self->image->mode, "L") != 0 && strcmp(self->image->mode, "P")) { + PyErr_SetString(PyExc_ValueError, wrong_mode); + return NULL; + } + + unpack = ImagingFindUnpacker("RGB", rawmode, &bits); + if (!unpack) { + PyErr_SetString(PyExc_ValueError, wrong_raw_mode); + return NULL; + } + + ImagingPaletteDelete(self->image->palette); + + strcpy(self->image->mode, "P"); + + self->image->palette = ImagingPaletteNew("RGB"); + + unpack(self->image->palette->palette, palette, palettesize * 8 / bits); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_putpalettealpha(ImagingObject* self, PyObject* args) +{ + int index; + int alpha = 0; + if (!PyArg_ParseTuple(args, "i|i", &index, &alpha)) + return NULL; + + if (!self->image->palette) { + PyErr_SetString(PyExc_ValueError, no_palette); + return NULL; + } + + if (index < 0 || index >= 256) { + PyErr_SetString(PyExc_ValueError, outside_palette); + return NULL; + } + + strcpy(self->image->palette->mode, "RGBA"); + self->image->palette->palette[index*4+3] = (UINT8) alpha; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_putpixel(ImagingObject* self, PyObject* args) +{ + Imaging im; + char ink[4]; + + int x, y; + PyObject* color; + if (!PyArg_ParseTuple(args, "(ii)O", &x, &y, &color)) + return NULL; + + im = self->image; + + if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) { + PyErr_SetString(PyExc_IndexError, outside_image); + return NULL; + } + + if (!getink(color, im, ink)) + return NULL; + + if (self->access) + self->access->put_pixel(im, x, y, ink); + + Py_INCREF(Py_None); + return Py_None; +} + +#ifdef WITH_RANKFILTER +static PyObject* +_rankfilter(ImagingObject* self, PyObject* args) +{ + int size, rank; + if (!PyArg_ParseTuple(args, "ii", &size, &rank)) + return NULL; + + return PyImagingNew(ImagingRankFilter(self->image, size, rank)); +} +#endif + +static PyObject* +_resize(ImagingObject* self, PyObject* args) +{ + Imaging imIn; + Imaging imOut; + + int xsize, ysize; + int filter = IMAGING_TRANSFORM_NEAREST; + if (!PyArg_ParseTuple(args, "(ii)|i", &xsize, &ysize, &filter)) + return NULL; + + imIn = self->image; + + imOut = ImagingNew(imIn->mode, xsize, ysize); + if (imOut) + (void) ImagingResize(imOut, imIn, filter); + + return PyImagingNew(imOut); +} + +static PyObject* +_rotate(ImagingObject* self, PyObject* args) +{ + Imaging imOut; + Imaging imIn; + + double theta; + int filter = IMAGING_TRANSFORM_NEAREST; + if (!PyArg_ParseTuple(args, "d|i", &theta, &filter)) + return NULL; + + imIn = self->image; + + theta = fmod(theta, 360.0); + if (theta < 0.0) + theta += 360; + + if (filter && imIn->type != IMAGING_TYPE_SPECIAL) { + /* Rotate with resampling filter */ + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + (void) ImagingRotate(imOut, imIn, theta, filter); + } else if (theta == 90.0 || theta == 270.0) { + /* Use fast version */ + imOut = ImagingNew(imIn->mode, imIn->ysize, imIn->xsize); + if (imOut) { + if (theta == 90.0) + (void) ImagingRotate90(imOut, imIn); + else + (void) ImagingRotate270(imOut, imIn); + } + } else { + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + if (imOut) { + if (theta == 0.0) + /* No rotation: simply copy the input image */ + (void) ImagingCopy2(imOut, imIn); + else if (theta == 180.0) + /* Use fast version */ + (void) ImagingRotate180(imOut, imIn); + else + /* Use ordinary version */ + (void) ImagingRotate(imOut, imIn, theta, 0); + } + } + + return PyImagingNew(imOut); +} + +#define IS_RGB(mode)\ + (!strcmp(mode, "RGB") || !strcmp(mode, "RGBA") || !strcmp(mode, "RGBX")) + +static PyObject* +im_setmode(ImagingObject* self, PyObject* args) +{ + /* attempt to modify the mode of an image in place */ + + Imaging im; + + char* mode; + int modelen; + if (!PyArg_ParseTuple(args, "s#:setmode", &mode, &modelen)) + return NULL; + + im = self->image; + + /* move all logic in here to the libImaging primitive */ + + if (!strcmp(im->mode, mode)) { + ; /* same mode; always succeeds */ + } else if (IS_RGB(im->mode) && IS_RGB(mode)) { + /* color to color */ + strcpy(im->mode, mode); + im->bands = modelen; + if (!strcmp(mode, "RGBA")) + (void) ImagingFillBand(im, 3, 255); + } else { + /* trying doing an in-place conversion */ + if (!ImagingConvertInPlace(im, mode)) + return NULL; + } + + if (self->access) + ImagingAccessDelete(im, self->access); + self->access = ImagingAccessNew(im); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_stretch(ImagingObject* self, PyObject* args) +{ + Imaging imIn; + Imaging imTemp; + Imaging imOut; + + int xsize, ysize; + int filter = IMAGING_TRANSFORM_NEAREST; + if (!PyArg_ParseTuple(args, "(ii)|i", &xsize, &ysize, &filter)) + return NULL; + + imIn = self->image; + + /* two-pass resize: minimize size of intermediate image */ + if (imIn->xsize * ysize < xsize * imIn->ysize) + imTemp = ImagingNew(imIn->mode, imIn->xsize, ysize); + else + imTemp = ImagingNew(imIn->mode, xsize, imIn->ysize); + if (!imTemp) + return NULL; + + /* first pass */ + if (!ImagingStretch(imTemp, imIn, filter)) { + ImagingDelete(imTemp); + return NULL; + } + + imOut = ImagingNew(imIn->mode, xsize, ysize); + if (!imOut) { + ImagingDelete(imTemp); + return NULL; + } + + /* second pass */ + if (!ImagingStretch(imOut, imTemp, filter)) { + ImagingDelete(imOut); + ImagingDelete(imTemp); + return NULL; + } + + ImagingDelete(imTemp); + + return PyImagingNew(imOut); +} + +static PyObject* +_transform2(ImagingObject* self, PyObject* args) +{ + static const char* wrong_number = "wrong number of matrix entries"; + + Imaging imIn; + Imaging imOut; + int n; + double *a; + + ImagingObject* imagep; + int x0, y0, x1, y1; + int method; + PyObject* data; + int filter = IMAGING_TRANSFORM_NEAREST; + int fill = 1; + if (!PyArg_ParseTuple(args, "(iiii)O!iO|ii", + &x0, &y0, &x1, &y1, + &Imaging_Type, &imagep, + &method, &data, + &filter, &fill)) + return NULL; + + switch (method) { + case IMAGING_TRANSFORM_AFFINE: + n = 6; + break; + case IMAGING_TRANSFORM_PERSPECTIVE: + n = 8; + break; + case IMAGING_TRANSFORM_QUAD: + n = 8; + break; + default: + n = -1; /* force error */ + } + + a = getlist(data, &n, wrong_number, TYPE_DOUBLE); + if (!a) + return NULL; + + imOut = self->image; + imIn = imagep->image; + + /* FIXME: move transform dispatcher into libImaging */ + + switch (method) { + case IMAGING_TRANSFORM_AFFINE: + imOut = ImagingTransformAffine( + imOut, imIn, x0, y0, x1, y1, a, filter, 1 + ); + break; + case IMAGING_TRANSFORM_PERSPECTIVE: + imOut = ImagingTransformPerspective( + imOut, imIn, x0, y0, x1, y1, a, filter, 1 + ); + break; + case IMAGING_TRANSFORM_QUAD: + imOut = ImagingTransformQuad( + imOut, imIn, x0, y0, x1, y1, a, filter, 1 + ); + break; + default: + (void) ImagingError_ValueError("bad transform method"); + } + + free(a); + + if (!imOut) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_transpose(ImagingObject* self, PyObject* args) +{ + Imaging imIn; + Imaging imOut; + + int op; + if (!PyArg_ParseTuple(args, "i", &op)) + return NULL; + + imIn = self->image; + + switch (op) { + case 0: /* flip left right */ + case 1: /* flip top bottom */ + case 3: /* rotate 180 */ + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + break; + case 2: /* rotate 90 */ + case 4: /* rotate 270 */ + imOut = ImagingNew(imIn->mode, imIn->ysize, imIn->xsize); + break; + default: + PyErr_SetString(PyExc_ValueError, "No such transpose operation"); + return NULL; + } + + if (imOut) + switch (op) { + case 0: + (void) ImagingFlipLeftRight(imOut, imIn); + break; + case 1: + (void) ImagingFlipTopBottom(imOut, imIn); + break; + case 2: + (void) ImagingRotate90(imOut, imIn); + break; + case 3: + (void) ImagingRotate180(imOut, imIn); + break; + case 4: + (void) ImagingRotate270(imOut, imIn); + break; + } + + return PyImagingNew(imOut); +} + +#ifdef WITH_UNSHARPMASK +static PyObject* +_unsharp_mask(ImagingObject* self, PyObject* args) +{ + Imaging imIn; + Imaging imOut; + + float radius; + int percent, threshold; + if (!PyArg_ParseTuple(args, "fii", &radius, &percent, &threshold)) + return NULL; + + + imIn = self->image; + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + if (!imOut) + return NULL; + + if (!ImagingUnsharpMask(imIn, imOut, radius, percent, threshold)) + return NULL; + + return PyImagingNew(imOut); +} +#endif + +/* -------------------------------------------------------------------- */ + +static PyObject* +_isblock(ImagingObject* self, PyObject* args) +{ + return PyInt_FromLong((long) self->image->block); +} + +static PyObject* +_getbbox(ImagingObject* self, PyObject* args) +{ + int bbox[4]; + if (!ImagingGetBBox(self->image, bbox)) { + Py_INCREF(Py_None); + return Py_None; + } + + return Py_BuildValue("iiii", bbox[0], bbox[1], bbox[2], bbox[3]); +} + +static PyObject* +_getcolors(ImagingObject* self, PyObject* args) +{ + ImagingColorItem* items; + int i, colors; + PyObject* out; + + int maxcolors = 256; + if (!PyArg_ParseTuple(args, "i:getcolors", &maxcolors)) + return NULL; + + items = ImagingGetColors(self->image, maxcolors, &colors); + if (!items) + return NULL; + + if (colors > maxcolors) { + out = Py_None; + Py_INCREF(out); + } else { + out = PyList_New(colors); + for (i = 0; i < colors; i++) { + ImagingColorItem* v = &items[i]; + PyObject* item = Py_BuildValue( + "iN", v->count, getpixel(self->image, self->access, v->x, v->y) + ); + PyList_SetItem(out, i, item); + } + } + + free(items); + + return out; +} + +static PyObject* +_getextrema(ImagingObject* self, PyObject* args) +{ + union { + UINT8 u[2]; + INT32 i[2]; + FLOAT32 f[2]; + } extrema; + int status; + + status = ImagingGetExtrema(self->image, &extrema); + if (status < 0) + return NULL; + + if (status) + switch (self->image->type) { + case IMAGING_TYPE_UINT8: + return Py_BuildValue("ii", extrema.u[0], extrema.u[1]); + case IMAGING_TYPE_INT32: + return Py_BuildValue("ii", extrema.i[0], extrema.i[1]); + case IMAGING_TYPE_FLOAT32: + return Py_BuildValue("dd", extrema.f[0], extrema.f[1]); + } + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_getprojection(ImagingObject* self, PyObject* args) +{ + unsigned char* xprofile; + unsigned char* yprofile; + PyObject* result; + + xprofile = malloc(self->image->xsize); + yprofile = malloc(self->image->ysize); + + if (xprofile == NULL || yprofile == NULL) { + free(xprofile); + free(yprofile); + return PyErr_NoMemory(); + } + + ImagingGetProjection(self->image, (unsigned char *)xprofile, (unsigned char *)yprofile); + + result = Py_BuildValue("s#s#", xprofile, self->image->xsize, + yprofile, self->image->ysize); + + free(xprofile); + free(yprofile); + + return result; +} + +/* -------------------------------------------------------------------- */ + +static PyObject* +_getband(ImagingObject* self, PyObject* args) +{ + int band; + + if (!PyArg_ParseTuple(args, "i", &band)) + return NULL; + + return PyImagingNew(ImagingGetBand(self->image, band)); +} + +static PyObject* +_fillband(ImagingObject* self, PyObject* args) +{ + int band; + int color; + + if (!PyArg_ParseTuple(args, "ii", &band, &color)) + return NULL; + + if (!ImagingFillBand(self->image, band, color)) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_putband(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + int band; + if (!PyArg_ParseTuple(args, "O!i", + &Imaging_Type, &imagep, + &band)) + return NULL; + + if (!ImagingPutBand(self->image, imagep->image, band)) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +/* -------------------------------------------------------------------- */ + +#ifdef WITH_IMAGECHOPS + +static PyObject* +_chop_invert(ImagingObject* self, PyObject* args) +{ + return PyImagingNew(ImagingNegative(self->image)); +} + +static PyObject* +_chop_lighter(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopLighter(self->image, imagep->image)); +} + +static PyObject* +_chop_darker(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopDarker(self->image, imagep->image)); +} + +static PyObject* +_chop_difference(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopDifference(self->image, imagep->image)); +} + +static PyObject* +_chop_multiply(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopMultiply(self->image, imagep->image)); +} + +static PyObject* +_chop_screen(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopScreen(self->image, imagep->image)); +} + +static PyObject* +_chop_add(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + float scale; + int offset; + + scale = 1.0; + offset = 0; + + if (!PyArg_ParseTuple(args, "O!|fi", &Imaging_Type, &imagep, + &scale, &offset)) + return NULL; + + return PyImagingNew(ImagingChopAdd(self->image, imagep->image, + scale, offset)); +} + +static PyObject* +_chop_subtract(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + float scale; + int offset; + + scale = 1.0; + offset = 0; + + if (!PyArg_ParseTuple(args, "O!|fi", &Imaging_Type, &imagep, + &scale, &offset)) + return NULL; + + return PyImagingNew(ImagingChopSubtract(self->image, imagep->image, + scale, offset)); +} + +static PyObject* +_chop_and(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopAnd(self->image, imagep->image)); +} + +static PyObject* +_chop_or(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopOr(self->image, imagep->image)); +} + +static PyObject* +_chop_xor(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopXor(self->image, imagep->image)); +} + +static PyObject* +_chop_add_modulo(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopAddModulo(self->image, imagep->image)); +} + +static PyObject* +_chop_subtract_modulo(ImagingObject* self, PyObject* args) +{ + ImagingObject* imagep; + + if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) + return NULL; + + return PyImagingNew(ImagingChopSubtractModulo(self->image, imagep->image)); +} + +#endif + + +/* -------------------------------------------------------------------- */ + +#ifdef WITH_IMAGEDRAW + +static PyObject* +_font_new(PyObject* self_, PyObject* args) +{ + ImagingFontObject *self; + int i, y0, y1; + static const char* wrong_length = "descriptor table has wrong size"; + + ImagingObject* imagep; + unsigned char* glyphdata; + int glyphdata_length; + if (!PyArg_ParseTuple(args, "O!s#", + &Imaging_Type, &imagep, + &glyphdata, &glyphdata_length)) + return NULL; + + if (glyphdata_length != 256 * 20) { + PyErr_SetString(PyExc_ValueError, wrong_length); + return NULL; + } + + self = PyObject_New(ImagingFontObject, &ImagingFont_Type); + if (self == NULL) + return NULL; + + /* glyph bitmap */ + self->bitmap = imagep->image; + + y0 = y1 = 0; + + /* glyph glyphs */ + for (i = 0; i < 256; i++) { + self->glyphs[i].dx = S16(B16(glyphdata, 0)); + self->glyphs[i].dy = S16(B16(glyphdata, 2)); + self->glyphs[i].dx0 = S16(B16(glyphdata, 4)); + self->glyphs[i].dy0 = S16(B16(glyphdata, 6)); + self->glyphs[i].dx1 = S16(B16(glyphdata, 8)); + self->glyphs[i].dy1 = S16(B16(glyphdata, 10)); + self->glyphs[i].sx0 = S16(B16(glyphdata, 12)); + self->glyphs[i].sy0 = S16(B16(glyphdata, 14)); + self->glyphs[i].sx1 = S16(B16(glyphdata, 16)); + self->glyphs[i].sy1 = S16(B16(glyphdata, 18)); + if (self->glyphs[i].dy0 < y0) + y0 = self->glyphs[i].dy0; + if (self->glyphs[i].dy1 > y1) + y1 = self->glyphs[i].dy1; + glyphdata += 20; + } + + self->baseline = -y0; + self->ysize = y1 - y0; + + /* keep a reference to the bitmap object */ + Py_INCREF(imagep); + self->ref = imagep; + + return (PyObject*) self; +} + +static void +_font_dealloc(ImagingFontObject* self) +{ + Py_XDECREF(self->ref); + PyObject_Del(self); +} + +static inline int +textwidth(ImagingFontObject* self, const unsigned char* text) +{ + int xsize; + + for (xsize = 0; *text; text++) + xsize += self->glyphs[*text].dx; + + return xsize; +} + +static PyObject* +_font_getmask(ImagingFontObject* self, PyObject* args) +{ + Imaging im; + Imaging bitmap; + int x, b; + int status; + Glyph* glyph; + + unsigned char* text; + char* mode = ""; + if (!PyArg_ParseTuple(args, "s|s:getmask", &text, &mode)) + return NULL; + + im = ImagingNew(self->bitmap->mode, textwidth(self, text), self->ysize); + if (!im) + return NULL; + + b = 0; + (void) ImagingFill(im, &b); + + b = self->baseline; + for (x = 0; *text; text++) { + glyph = &self->glyphs[*text]; + bitmap = ImagingCrop( + self->bitmap, + glyph->sx0, glyph->sy0, glyph->sx1, glyph->sy1 + ); + if (!bitmap) + goto failed; + status = ImagingPaste( + im, bitmap, NULL, + glyph->dx0+x, glyph->dy0+b, glyph->dx1+x, glyph->dy1+b + ); + ImagingDelete(bitmap); + if (status < 0) + goto failed; + x = x + glyph->dx; + b = b + glyph->dy; + } + + return PyImagingNew(im); + + failed: + ImagingDelete(im); + return NULL; +} + +static PyObject* +_font_getsize(ImagingFontObject* self, PyObject* args) +{ + unsigned char* text; + if (!PyArg_ParseTuple(args, "s:getsize", &text)) + return NULL; + + return Py_BuildValue("ii", textwidth(self, text), self->ysize); +} + +static struct PyMethodDef _font_methods[] = { + {"getmask", (PyCFunction)_font_getmask, 1}, + {"getsize", (PyCFunction)_font_getsize, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +_font_getattr(ImagingFontObject* self, char* name) +{ + return Py_FindMethod(_font_methods, (PyObject*) self, name); +} + +/* -------------------------------------------------------------------- */ + +static PyObject* +_draw_new(PyObject* self_, PyObject* args) +{ + ImagingDrawObject *self; + + ImagingObject* imagep; + int blend = 0; + if (!PyArg_ParseTuple(args, "O!|i", &Imaging_Type, &imagep, &blend)) + return NULL; + + self = PyObject_New(ImagingDrawObject, &ImagingDraw_Type); + if (self == NULL) + return NULL; + + /* keep a reference to the image object */ + Py_INCREF(imagep); + self->image = imagep; + + self->ink[0] = self->ink[1] = self->ink[2] = self->ink[3] = 0; + + self->blend = blend; + + return (PyObject*) self; +} + +static void +_draw_dealloc(ImagingDrawObject* self) +{ + Py_XDECREF(self->image); + PyObject_Del(self); +} + +extern int PyPath_Flatten(PyObject* data, double **xy); + +static PyObject* +_draw_ink(ImagingDrawObject* self, PyObject* args) +{ + INT32 ink = 0; + PyObject* color; + char* mode = NULL; /* not used in this release */ + if (!PyArg_ParseTuple(args, "O|s", &color, &mode)) + return NULL; + + if (!getink(color, self->image->image, (char*) &ink)) + return NULL; + + return PyInt_FromLong((int) ink); +} + +static PyObject* +_draw_arc(ImagingDrawObject* self, PyObject* args) +{ + int x0, y0, x1, y1; + int ink; + int start, end; + int op = 0; + if (!PyArg_ParseTuple(args, "(iiii)iii|i", + &x0, &y0, &x1, &y1, + &start, &end, &ink)) + return NULL; + + if (ImagingDrawArc(self->image->image, x0, y0, x1, y1, start, end, + &ink, op) < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_bitmap(ImagingDrawObject* self, PyObject* args) +{ + double *xy; + int n; + + PyObject *data; + ImagingObject* bitmap; + int ink; + if (!PyArg_ParseTuple(args, "OO!i", &data, &Imaging_Type, &bitmap, &ink)) + return NULL; + + n = PyPath_Flatten(data, &xy); + if (n < 0) + return NULL; + if (n != 1) { + PyErr_SetString( + PyExc_TypeError, + "coordinate list must contain exactly 1 coordinate" + ); + return NULL; + } + + n = ImagingDrawBitmap( + self->image->image, (int) xy[0], (int) xy[1], bitmap->image, + &ink, self->blend + ); + + free(xy); + + if (n < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_chord(ImagingDrawObject* self, PyObject* args) +{ + int x0, y0, x1, y1; + int ink, fill; + int start, end; + if (!PyArg_ParseTuple(args, "(iiii)iiii", + &x0, &y0, &x1, &y1, &start, &end, &ink, &fill)) + return NULL; + + if (ImagingDrawChord(self->image->image, x0, y0, x1, y1, + start, end, &ink, fill, self->blend) < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_ellipse(ImagingDrawObject* self, PyObject* args) +{ + double* xy; + int n; + + PyObject* data; + int ink; + int fill = 0; + if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &fill)) + return NULL; + + n = PyPath_Flatten(data, &xy); + if (n < 0) + return NULL; + if (n != 2) { + PyErr_SetString( + PyExc_TypeError, + "coordinate list must contain exactly 2 coordinates" + ); + return NULL; + } + + n = ImagingDrawEllipse( + self->image->image, (int) xy[0], (int) xy[1], (int) xy[2], (int) xy[3], + &ink, fill, self->blend + ); + + free(xy); + + if (n < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_line(ImagingDrawObject* self, PyObject* args) +{ + int x0, y0, x1, y1; + int ink; + if (!PyArg_ParseTuple(args, "(ii)(ii)i", &x0, &y0, &x1, &y1, &ink)) + return NULL; + + if (ImagingDrawLine(self->image->image, x0, y0, x1, y1, + &ink, self->blend) < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_lines(ImagingDrawObject* self, PyObject* args) +{ + double *xy; + int i, n; + + PyObject *data; + int ink; + int width = 0; + if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &width)) + return NULL; + + n = PyPath_Flatten(data, &xy); + if (n < 0) + return NULL; + + if (width <= 1) { + double *p = NULL; + for (i = 0; i < n-1; i++) { + p = &xy[i+i]; + if (ImagingDrawLine( + self->image->image, + (int) p[0], (int) p[1], (int) p[2], (int) p[3], + &ink, self->blend) < 0) { + free(xy); + return NULL; + } + } + if (p) /* draw last point */ + ImagingDrawPoint( + self->image->image, + (int) p[2], (int) p[3], + &ink, self->blend + ); + } else { + for (i = 0; i < n-1; i++) { + double *p = &xy[i+i]; + if (ImagingDrawWideLine( + self->image->image, + (int) p[0], (int) p[1], (int) p[2], (int) p[3], + &ink, width, self->blend) < 0) { + free(xy); + return NULL; + } + } + } + + free(xy); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_point(ImagingDrawObject* self, PyObject* args) +{ + int x, y; + int ink; + if (!PyArg_ParseTuple(args, "(ii)i", &x, &y, &ink)) + return NULL; + + if (ImagingDrawPoint(self->image->image, x, y, &ink, self->blend) < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_points(ImagingDrawObject* self, PyObject* args) +{ + double *xy; + int i, n; + + PyObject *data; + int ink; + if (!PyArg_ParseTuple(args, "Oi", &data, &ink)) + return NULL; + + n = PyPath_Flatten(data, &xy); + if (n < 0) + return NULL; + + for (i = 0; i < n; i++) { + double *p = &xy[i+i]; + if (ImagingDrawPoint(self->image->image, (int) p[0], (int) p[1], + &ink, self->blend) < 0) { + free(xy); + return NULL; + } + } + + free(xy); + + Py_INCREF(Py_None); + return Py_None; +} + +#ifdef WITH_ARROW + +/* from outline.c */ +extern ImagingOutline PyOutline_AsOutline(PyObject* outline); + +static PyObject* +_draw_outline(ImagingDrawObject* self, PyObject* args) +{ + ImagingOutline outline; + + PyObject* outline_; + int ink; + int fill = 0; + if (!PyArg_ParseTuple(args, "Oi|i", &outline_, &ink, &fill)) + return NULL; + + outline = PyOutline_AsOutline(outline_); + if (!outline) { + PyErr_SetString(PyExc_TypeError, "expected outline object"); + return NULL; + } + + if (ImagingDrawOutline(self->image->image, outline, + &ink, fill, self->blend) < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +#endif + +static PyObject* +_draw_pieslice(ImagingDrawObject* self, PyObject* args) +{ + int x0, y0, x1, y1; + int ink, fill; + int start, end; + if (!PyArg_ParseTuple(args, "(iiii)iiii", + &x0, &y0, &x1, &y1, &start, &end, &ink, &fill)) + return NULL; + + if (ImagingDrawPieslice(self->image->image, x0, y0, x1, y1, + start, end, &ink, fill, self->blend) < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_polygon(ImagingDrawObject* self, PyObject* args) +{ + double *xy; + int *ixy; + int n, i; + + PyObject* data; + int ink; + int fill = 0; + if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &fill)) + return NULL; + + n = PyPath_Flatten(data, &xy); + if (n < 0) + return NULL; + if (n < 2) { + PyErr_SetString( + PyExc_TypeError, + "coordinate list must contain at least 2 coordinates" + ); + return NULL; + } + + /* Copy list of vertices to array */ + ixy = (int*) malloc(n * 2 * sizeof(int)); + + for (i = 0; i < n; i++) { + ixy[i+i] = (int) xy[i+i]; + ixy[i+i+1] = (int) xy[i+i+1]; + } + + free(xy); + + if (ImagingDrawPolygon(self->image->image, n, ixy, + &ink, fill, self->blend) < 0) { + free(ixy); + return NULL; + } + + free(ixy); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw_rectangle(ImagingDrawObject* self, PyObject* args) +{ + double* xy; + int n; + + PyObject* data; + int ink; + int fill = 0; + if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &fill)) + return NULL; + + n = PyPath_Flatten(data, &xy); + if (n < 0) + return NULL; + if (n != 2) { + PyErr_SetString( + PyExc_TypeError, + "coordinate list must contain exactly 2 coordinates" + ); + return NULL; + } + + n = ImagingDrawRectangle( + self->image->image, (int) xy[0], (int) xy[1], + (int) xy[2], (int) xy[3], &ink, fill, self->blend + ); + + free(xy); + + if (n < 0) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +static struct PyMethodDef _draw_methods[] = { +#ifdef WITH_IMAGEDRAW + /* Graphics (ImageDraw) */ + {"draw_line", (PyCFunction)_draw_line, 1}, + {"draw_lines", (PyCFunction)_draw_lines, 1}, +#ifdef WITH_ARROW + {"draw_outline", (PyCFunction)_draw_outline, 1}, +#endif + {"draw_polygon", (PyCFunction)_draw_polygon, 1}, + {"draw_rectangle", (PyCFunction)_draw_rectangle, 1}, + {"draw_point", (PyCFunction)_draw_point, 1}, + {"draw_points", (PyCFunction)_draw_points, 1}, + {"draw_arc", (PyCFunction)_draw_arc, 1}, + {"draw_bitmap", (PyCFunction)_draw_bitmap, 1}, + {"draw_chord", (PyCFunction)_draw_chord, 1}, + {"draw_ellipse", (PyCFunction)_draw_ellipse, 1}, + {"draw_pieslice", (PyCFunction)_draw_pieslice, 1}, + {"draw_ink", (PyCFunction)_draw_ink, 1}, +#endif + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +_draw_getattr(ImagingDrawObject* self, char* name) +{ + return Py_FindMethod(_draw_methods, (PyObject*) self, name); +} + +#endif + + +static PyObject* +pixel_access_new(ImagingObject* imagep, PyObject* args) +{ + PixelAccessObject *self; + + int readonly = 0; + if (!PyArg_ParseTuple(args, "|i", &readonly)) + return NULL; + + self = PyObject_New(PixelAccessObject, &PixelAccess_Type); + if (self == NULL) + return NULL; + + /* keep a reference to the image object */ + Py_INCREF(imagep); + self->image = imagep; + + self->readonly = readonly; + + return (PyObject*) self; +} + +static void +pixel_access_dealloc(PixelAccessObject* self) +{ + Py_XDECREF(self->image); + PyObject_Del(self); +} + +static PyObject * +pixel_access_getitem(PixelAccessObject *self, PyObject *xy) +{ + int x, y; + if (_getxy(xy, &x, &y)) + return NULL; + + return getpixel(self->image->image, self->image->access, x, y); +} + +static int +pixel_access_setitem(PixelAccessObject *self, PyObject *xy, PyObject *color) +{ + Imaging im = self->image->image; + char ink[4]; + int x, y; + + if (self->readonly) { + (void) ImagingError_ValueError(readonly); + return -1; + } + + if (_getxy(xy, &x, &y)) + return -1; + + if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) { + PyErr_SetString(PyExc_IndexError, outside_image); + return -1; + } + + if (!color) /* FIXME: raise exception? */ + return 0; + + if (!getink(color, im, ink)) + return -1; + + self->image->access->put_pixel(im, x, y, ink); + + return 0; +} + +/* -------------------------------------------------------------------- */ +/* EFFECTS (experimental) */ +/* -------------------------------------------------------------------- */ + +#ifdef WITH_EFFECTS + +static PyObject* +_effect_mandelbrot(ImagingObject* self, PyObject* args) +{ + int xsize = 512; + int ysize = 512; + double extent[4]; + int quality = 100; + + extent[0] = -3; extent[1] = -2.5; + extent[2] = 2; extent[3] = 2.5; + + if (!PyArg_ParseTuple(args, "|(ii)(dddd)i", &xsize, &ysize, + &extent[0], &extent[1], &extent[2], &extent[3], + &quality)) + return NULL; + + return PyImagingNew(ImagingEffectMandelbrot(xsize, ysize, extent, quality)); +} + +static PyObject* +_effect_noise(ImagingObject* self, PyObject* args) +{ + int xsize, ysize; + float sigma = 128; + if (!PyArg_ParseTuple(args, "(ii)|f", &xsize, &ysize, &sigma)) + return NULL; + + return PyImagingNew(ImagingEffectNoise(xsize, ysize, sigma)); +} + +static PyObject* +_effect_spread(ImagingObject* self, PyObject* args) +{ + int dist; + + if (!PyArg_ParseTuple(args, "i", &dist)) + return NULL; + + return PyImagingNew(ImagingEffectSpread(self->image, dist)); +} + +#endif + +/* -------------------------------------------------------------------- */ +/* UTILITIES */ +/* -------------------------------------------------------------------- */ + +static PyObject* +_crc32(PyObject* self, PyObject* args) +{ + unsigned char* buffer; + int bytes; + int hi, lo; + UINT32 crc; + + hi = lo = 0; + + if (!PyArg_ParseTuple(args, "s#|(ii)", &buffer, &bytes, &hi, &lo)) + return NULL; + + crc = ((UINT32) (hi & 0xFFFF) << 16) + (lo & 0xFFFF); + + crc = ImagingCRC32(crc, (unsigned char *)buffer, bytes); + + return Py_BuildValue("ii", (crc >> 16) & 0xFFFF, crc & 0xFFFF); +} + +static PyObject* +_getcodecstatus(PyObject* self, PyObject* args) +{ + int status; + char* msg; + + if (!PyArg_ParseTuple(args, "i", &status)) + return NULL; + + switch (status) { + case IMAGING_CODEC_OVERRUN: + msg = "buffer overrun"; break; + case IMAGING_CODEC_BROKEN: + msg = "broken data stream"; break; + case IMAGING_CODEC_UNKNOWN: + msg = "unrecognized data stream contents"; break; + case IMAGING_CODEC_CONFIG: + msg = "codec configuration error"; break; + case IMAGING_CODEC_MEMORY: + msg = "out of memory"; break; + default: + Py_INCREF(Py_None); + return Py_None; + } + + return PyString_FromString(msg); +} + +/* -------------------------------------------------------------------- */ +/* DEBUGGING HELPERS */ +/* -------------------------------------------------------------------- */ + + +#ifdef WITH_DEBUG + +static PyObject* +_save_ppm(ImagingObject* self, PyObject* args) +{ + char* filename; + + if (!PyArg_ParseTuple(args, "s", &filename)) + return NULL; + + if (!ImagingSavePPM(self->image, filename)) + return NULL; + + Py_INCREF(Py_None); + return Py_None; +} + +#endif + +/* -------------------------------------------------------------------- */ + +/* methods */ + +static struct PyMethodDef methods[] = { + + /* Put commonly used methods first */ + {"getpixel", (PyCFunction)_getpixel, 1}, + {"putpixel", (PyCFunction)_putpixel, 1}, + + {"pixel_access", (PyCFunction)pixel_access_new, 1}, + + /* Standard processing methods (Image) */ + {"convert", (PyCFunction)_convert, 1}, + {"convert2", (PyCFunction)_convert2, 1}, + {"convert_matrix", (PyCFunction)_convert_matrix, 1}, + {"copy", (PyCFunction)_copy, 1}, + {"copy2", (PyCFunction)_copy2, 1}, +#ifdef WITH_CRACKCODE + {"crackcode", (PyCFunction)_crackcode, 1}, +#endif + {"crop", (PyCFunction)_crop, 1}, + {"expand", (PyCFunction)_expand, 1}, + {"filter", (PyCFunction)_filter, 1}, + {"histogram", (PyCFunction)_histogram, 1}, +#ifdef WITH_MODEFILTER + {"modefilter", (PyCFunction)_modefilter, 1}, +#endif + {"offset", (PyCFunction)_offset, 1}, + {"paste", (PyCFunction)_paste, 1}, + {"point", (PyCFunction)_point, 1}, + {"point_transform", (PyCFunction)_point_transform, 1}, + {"putdata", (PyCFunction)_putdata, 1}, +#ifdef WITH_QUANTIZE + {"quantize", (PyCFunction)_quantize, 1}, +#endif +#ifdef WITH_RANKFILTER + {"rankfilter", (PyCFunction)_rankfilter, 1}, +#endif + {"resize", (PyCFunction)_resize, 1}, + {"rotate", (PyCFunction)_rotate, 1}, + {"stretch", (PyCFunction)_stretch, 1}, + {"transpose", (PyCFunction)_transpose, 1}, + {"transform2", (PyCFunction)_transform2, 1}, + + {"isblock", (PyCFunction)_isblock, 1}, + + {"getbbox", (PyCFunction)_getbbox, 1}, + {"getcolors", (PyCFunction)_getcolors, 1}, + {"getextrema", (PyCFunction)_getextrema, 1}, + {"getprojection", (PyCFunction)_getprojection, 1}, + + {"getband", (PyCFunction)_getband, 1}, + {"putband", (PyCFunction)_putband, 1}, + {"fillband", (PyCFunction)_fillband, 1}, + + {"setmode", (PyCFunction)im_setmode, 1}, + + {"getpalette", (PyCFunction)_getpalette, 1}, + {"putpalette", (PyCFunction)_putpalette, 1}, + {"putpalettealpha", (PyCFunction)_putpalettealpha, 1}, + +#ifdef WITH_IMAGECHOPS + /* Channel operations (ImageChops) */ + {"chop_invert", (PyCFunction)_chop_invert, 1}, + {"chop_lighter", (PyCFunction)_chop_lighter, 1}, + {"chop_darker", (PyCFunction)_chop_darker, 1}, + {"chop_difference", (PyCFunction)_chop_difference, 1}, + {"chop_multiply", (PyCFunction)_chop_multiply, 1}, + {"chop_screen", (PyCFunction)_chop_screen, 1}, + {"chop_add", (PyCFunction)_chop_add, 1}, + {"chop_subtract", (PyCFunction)_chop_subtract, 1}, + {"chop_add_modulo", (PyCFunction)_chop_add_modulo, 1}, + {"chop_subtract_modulo", (PyCFunction)_chop_subtract_modulo, 1}, + {"chop_and", (PyCFunction)_chop_and, 1}, + {"chop_or", (PyCFunction)_chop_or, 1}, + {"chop_xor", (PyCFunction)_chop_xor, 1}, +#endif + +#ifdef WITH_UNSHARPMASK + /* Kevin Cazabon's unsharpmask extension */ + {"gaussian_blur", (PyCFunction)_gaussian_blur, 1}, + {"unsharp_mask", (PyCFunction)_unsharp_mask, 1}, +#endif + +#ifdef WITH_EFFECTS + /* Special effects */ + {"effect_spread", (PyCFunction)_effect_spread, 1}, +#endif + + /* Misc. */ + {"new_array", (PyCFunction)_new_array, 1}, + {"new_block", (PyCFunction)_new_block, 1}, + +#ifdef WITH_DEBUG + {"save_ppm", (PyCFunction)_save_ppm, 1}, +#endif + + {NULL, NULL} /* sentinel */ +}; + + +/* attributes */ + +static PyObject* +_getattr(ImagingObject* self, char* name) +{ + PyObject* res; + + res = Py_FindMethod(methods, (PyObject*) self, name); + if (res) + return res; + PyErr_Clear(); + if (strcmp(name, "mode") == 0) + return PyString_FromString(self->image->mode); + if (strcmp(name, "size") == 0) + return Py_BuildValue("ii", self->image->xsize, self->image->ysize); + if (strcmp(name, "bands") == 0) + return PyInt_FromLong(self->image->bands); + if (strcmp(name, "id") == 0) + return PyInt_FromLong((long) self->image); + if (strcmp(name, "ptr") == 0) + return PyCObject_FromVoidPtrAndDesc(self->image, IMAGING_MAGIC, NULL); + PyErr_SetString(PyExc_AttributeError, name); + return NULL; +} + + +/* basic sequence semantics */ + +static Py_ssize_t +image_length(ImagingObject *self) +{ + Imaging im = self->image; + + return im->xsize * im->ysize; +} + +static PyObject * +image_item(ImagingObject *self, Py_ssize_t i) +{ + int x, y; + Imaging im = self->image; + + if (im->xsize > 0) { + x = i % im->xsize; + y = i / im->xsize; + } else + x = y = 0; /* leave it to getpixel to raise an exception */ + + return getpixel(im, self->access, x, y); +} + +static PySequenceMethods image_as_sequence = { + (inquiry) image_length, /*sq_length*/ + (binaryfunc) NULL, /*sq_concat*/ + (ssizeargfunc) NULL, /*sq_repeat*/ + (ssizeargfunc) image_item, /*sq_item*/ + (ssizessizeargfunc) NULL, /*sq_slice*/ + (ssizeobjargproc) NULL, /*sq_ass_item*/ + (ssizessizeobjargproc) NULL, /*sq_ass_slice*/ +}; + + +/* type description */ + +statichere PyTypeObject Imaging_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingCore", /*tp_name*/ + sizeof(ImagingObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number */ + &image_as_sequence, /*tp_as_sequence */ + 0, /*tp_as_mapping */ + 0 /*tp_hash*/ +}; + +#ifdef WITH_IMAGEDRAW + +statichere PyTypeObject ImagingFont_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingFont", /*tp_name*/ + sizeof(ImagingFontObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_font_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_font_getattr, /*tp_getattr*/ +}; + +statichere PyTypeObject ImagingDraw_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingDraw", /*tp_name*/ + sizeof(ImagingDrawObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_draw_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_draw_getattr, /*tp_getattr*/ +}; + +#endif + +static PyMappingMethods pixel_access_as_mapping = { + (inquiry) NULL, /*mp_length*/ + (binaryfunc) pixel_access_getitem, /*mp_subscript*/ + (objobjargproc) pixel_access_setitem, /*mp_ass_subscript*/ +}; + +/* type description */ + +statichere PyTypeObject PixelAccess_Type = { + PyObject_HEAD_INIT(NULL) + 0, "PixelAccess", sizeof(PixelAccessObject), 0, + /* methods */ + (destructor)pixel_access_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number */ + 0, /*tp_as_sequence */ + &pixel_access_as_mapping, /*tp_as_mapping */ + 0 /*tp_hash*/ +}; + +/* -------------------------------------------------------------------- */ + +/* FIXME: this is something of a mess. Should replace this with + pluggable codecs, but not before PIL 1.2 */ + +/* Decoders (in decode.c) */ +extern PyObject* PyImaging_BitDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_FliDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_GifDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_HexDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_JpegDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_TiffLzwDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_MspDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_PackbitsDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_PcdDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_PcxDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_RawDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_SunRleDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_TgaRleDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_XbmDecoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_ZipDecoderNew(PyObject* self, PyObject* args); + +/* Encoders (in encode.c) */ +extern PyObject* PyImaging_EpsEncoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_GifEncoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_JpegEncoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_PcxEncoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_RawEncoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_XbmEncoderNew(PyObject* self, PyObject* args); +extern PyObject* PyImaging_ZipEncoderNew(PyObject* self, PyObject* args); + +/* Display support etc (in display.c) */ +#ifdef WIN32 +extern PyObject* PyImaging_CreateWindowWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_DisplayWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_DisplayModeWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_GrabScreenWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_GrabClipboardWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_ListWindowsWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_EventLoopWin32(PyObject* self, PyObject* args); +extern PyObject* PyImaging_DrawWmf(PyObject* self, PyObject* args); +#endif + +/* Experimental path stuff (in path.c) */ +extern PyObject* PyPath_Create(ImagingObject* self, PyObject* args); + +/* Experimental outline stuff (in outline.c) */ +extern PyObject* PyOutline_Create(ImagingObject* self, PyObject* args); + +extern PyObject* PyImaging_Mapper(PyObject* self, PyObject* args); +extern PyObject* PyImaging_MapBuffer(PyObject* self, PyObject* args); + +static PyMethodDef functions[] = { + + /* Object factories */ + {"blend", (PyCFunction)_blend, 1}, + {"fill", (PyCFunction)_fill, 1}, + {"new", (PyCFunction)_new, 1}, + + {"getcount", (PyCFunction)_getcount, 1}, + + /* Functions */ + {"convert", (PyCFunction)_convert2, 1}, + {"copy", (PyCFunction)_copy2, 1}, + + /* Codecs */ + {"bit_decoder", (PyCFunction)PyImaging_BitDecoderNew, 1}, + {"eps_encoder", (PyCFunction)PyImaging_EpsEncoderNew, 1}, + {"fli_decoder", (PyCFunction)PyImaging_FliDecoderNew, 1}, + {"gif_decoder", (PyCFunction)PyImaging_GifDecoderNew, 1}, + {"gif_encoder", (PyCFunction)PyImaging_GifEncoderNew, 1}, + {"hex_decoder", (PyCFunction)PyImaging_HexDecoderNew, 1}, + {"hex_encoder", (PyCFunction)PyImaging_EpsEncoderNew, 1}, /* EPS=HEX! */ +#ifdef HAVE_LIBJPEG + {"jpeg_decoder", (PyCFunction)PyImaging_JpegDecoderNew, 1}, + {"jpeg_encoder", (PyCFunction)PyImaging_JpegEncoderNew, 1}, +#endif + {"tiff_lzw_decoder", (PyCFunction)PyImaging_TiffLzwDecoderNew, 1}, + {"msp_decoder", (PyCFunction)PyImaging_MspDecoderNew, 1}, + {"packbits_decoder", (PyCFunction)PyImaging_PackbitsDecoderNew, 1}, + {"pcd_decoder", (PyCFunction)PyImaging_PcdDecoderNew, 1}, + {"pcx_decoder", (PyCFunction)PyImaging_PcxDecoderNew, 1}, + {"pcx_encoder", (PyCFunction)PyImaging_PcxEncoderNew, 1}, + {"raw_decoder", (PyCFunction)PyImaging_RawDecoderNew, 1}, + {"raw_encoder", (PyCFunction)PyImaging_RawEncoderNew, 1}, + {"sun_rle_decoder", (PyCFunction)PyImaging_SunRleDecoderNew, 1}, + {"tga_rle_decoder", (PyCFunction)PyImaging_TgaRleDecoderNew, 1}, + {"xbm_decoder", (PyCFunction)PyImaging_XbmDecoderNew, 1}, + {"xbm_encoder", (PyCFunction)PyImaging_XbmEncoderNew, 1}, +#ifdef HAVE_LIBZ + {"zip_decoder", (PyCFunction)PyImaging_ZipDecoderNew, 1}, + {"zip_encoder", (PyCFunction)PyImaging_ZipEncoderNew, 1}, +#endif + + /* Memory mapping */ +#ifdef WITH_MAPPING +#ifdef WIN32 + {"map", (PyCFunction)PyImaging_Mapper, 1}, +#endif + {"map_buffer", (PyCFunction)PyImaging_MapBuffer, 1}, +#endif + + /* Display support */ +#ifdef WIN32 + {"display", (PyCFunction)PyImaging_DisplayWin32, 1}, + {"display_mode", (PyCFunction)PyImaging_DisplayModeWin32, 1}, + {"grabscreen", (PyCFunction)PyImaging_GrabScreenWin32, 1}, + {"grabclipboard", (PyCFunction)PyImaging_GrabClipboardWin32, 1}, + {"createwindow", (PyCFunction)PyImaging_CreateWindowWin32, 1}, + {"eventloop", (PyCFunction)PyImaging_EventLoopWin32, 1}, + {"listwindows", (PyCFunction)PyImaging_ListWindowsWin32, 1}, + {"drawwmf", (PyCFunction)PyImaging_DrawWmf, 1}, +#endif + + /* Utilities */ + {"crc32", (PyCFunction)_crc32, 1}, + {"getcodecstatus", (PyCFunction)_getcodecstatus, 1}, + + /* Debugging stuff */ + {"open_ppm", (PyCFunction)_open_ppm, 1}, + + /* Special effects (experimental) */ +#ifdef WITH_EFFECTS + {"effect_mandelbrot", (PyCFunction)_effect_mandelbrot, 1}, + {"effect_noise", (PyCFunction)_effect_noise, 1}, + {"linear_gradient", (PyCFunction)_linear_gradient, 1}, + {"radial_gradient", (PyCFunction)_radial_gradient, 1}, + {"wedge", (PyCFunction)_linear_gradient, 1}, /* Compatibility */ +#endif + + /* Drawing support stuff */ +#ifdef WITH_IMAGEDRAW + {"font", (PyCFunction)_font_new, 1}, + {"draw", (PyCFunction)_draw_new, 1}, +#endif + + /* Experimental path stuff */ +#ifdef WITH_IMAGEPATH + {"path", (PyCFunction)PyPath_Create, 1}, +#endif + + /* Experimental arrow graphics stuff */ +#ifdef WITH_ARROW + {"outline", (PyCFunction)PyOutline_Create, 1}, +#endif + + {NULL, NULL} /* sentinel */ +}; + +DL_EXPORT(void) +init_imaging(void) +{ + PyObject* m; + PyObject* d; + + /* Patch object type */ + Imaging_Type.ob_type = &PyType_Type; +#ifdef WITH_IMAGEDRAW + ImagingFont_Type.ob_type = &PyType_Type; + ImagingDraw_Type.ob_type = &PyType_Type; +#endif + PixelAccess_Type.ob_type = &PyType_Type; + + ImagingAccessInit(); + + m = Py_InitModule("_imaging", functions); + d = PyModule_GetDict(m); + +#ifdef HAVE_LIBJPEG + { + extern const char* ImagingJpegVersion(void); + PyDict_SetItemString(d, "jpeglib_version", PyString_FromString(ImagingJpegVersion())); + } +#endif + +#ifdef HAVE_LIBZ + { + extern const char* ImagingZipVersion(void); + PyDict_SetItemString(d, "zlib_version", PyString_FromString(ImagingZipVersion())); + } +#endif +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c new file mode 100755 index 00000000000..e9a3b00c596 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c @@ -0,0 +1,608 @@ +/* + * pyCMS + * a Python / PIL interface to the littleCMS ICC Color Management System + * Copyright (C) 2002-2003 Kevin Cazabon + * kevin@cazabon.com + * http://www.cazabon.com + * Adapted/reworked for PIL by Fredrik Lundh + * Copyright (c) 2009 Fredrik Lundh + * + * pyCMS home page: http://www.cazabon.com/pyCMS + * littleCMS home page: http://www.littlecms.com + * (littleCMS is Copyright (C) 1998-2001 Marti Maria) + * + * Originally released under LGPL. Graciously donated to PIL in + * March 2009, for distribution under the standard PIL license + */ + +#define COPYRIGHTINFO "\ +pyCMS\n\ +a Python / PIL interface to the littleCMS ICC Color Management System\n\ +Copyright (C) 2002-2003 Kevin Cazabon\n\ +kevin@cazabon.com\n\ +http://www.cazabon.com\n\ +" + +#include "Python.h" +#include "lcms.h" +#include "Imaging.h" + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#if LCMS_VERSION < 117 +#define LCMSBOOL BOOL +#endif + +#ifdef WIN32 +#include +#endif + +#define PYCMSVERSION "0.1.0 pil" + +/* version history */ + +/* + 0.1.0 pil integration & refactoring + 0.0.2 alpha: Minor updates, added interfaces to littleCMS features, Jan 6, 2003 + - fixed some memory holes in how transforms/profiles were created and passed back to Python + due to improper destructor setup for PyCObjects + - added buildProofTransformFromOpenProfiles() function + - eliminated some code redundancy, centralizing several common tasks with internal functions + + 0.0.1 alpha: First public release Dec 26, 2002 + +*/ + +/* known to-do list with current version: + + Verify that PILmode->littleCMStype conversion in findLCMStype is correct for all PIL modes (it probably isn't for the more obscure ones) + + Add support for creating custom RGB profiles on the fly + Add support for checking presence of a specific tag in a profile + Add support for other littleCMS features as required + +*/ + +/* + INTENT_PERCEPTUAL 0 + INTENT_RELATIVE_COLORIMETRIC 1 + INTENT_SATURATION 2 + INTENT_ABSOLUTE_COLORIMETRIC 3 +*/ + +/* -------------------------------------------------------------------- */ +/* wrapper classes */ + +/* a profile represents the ICC characteristics for a specific device */ + +typedef struct { + PyObject_HEAD + cmsHPROFILE profile; +} CmsProfileObject; + +staticforward PyTypeObject CmsProfile_Type; + +#define CmsProfile_Check(op) ((op)->ob_type == &CmsProfile_Type) + +static PyObject* +cms_profile_new(cmsHPROFILE profile) +{ + CmsProfileObject* self; + + self = PyObject_New(CmsProfileObject, &CmsProfile_Type); + if (!self) + return NULL; + + self->profile = profile; + + return (PyObject*) self; +} + +static PyObject* +cms_profile_open(PyObject* self, PyObject* args) +{ + cmsHPROFILE hProfile; + + char* sProfile; + if (!PyArg_ParseTuple(args, "s:profile_open", &sProfile)) + return NULL; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + hProfile = cmsOpenProfileFromFile(sProfile, "r"); + if (!hProfile) { + PyErr_SetString(PyExc_IOError, "cannot open profile file"); + return NULL; + } + + return cms_profile_new(hProfile); +} + +static PyObject* +cms_profile_fromstring(PyObject* self, PyObject* args) +{ + cmsHPROFILE hProfile; + + char* pProfile; + int nProfile; + if (!PyArg_ParseTuple(args, "s#:profile_fromstring", &pProfile, &nProfile)) + return NULL; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + hProfile = cmsOpenProfileFromMem(pProfile, nProfile); + if (!hProfile) + PyErr_SetString(PyExc_IOError, "cannot open profile from string"); + + return cms_profile_new(hProfile); +} + +static void +cms_profile_dealloc(CmsProfileObject* self) +{ + (void) cmsCloseProfile(self->profile); + PyObject_Del(self); +} + +/* a transform represents the mapping between two profiles */ + +typedef struct { + PyObject_HEAD + char mode_in[8]; + char mode_out[8]; + cmsHTRANSFORM transform; +} CmsTransformObject; + +staticforward PyTypeObject CmsTransform_Type; + +#define CmsTransform_Check(op) ((op)->ob_type == &CmsTransform_Type) + +static PyObject* +cms_transform_new(cmsHTRANSFORM transform, char* mode_in, char* mode_out) +{ + CmsTransformObject* self; + + self = PyObject_New(CmsTransformObject, &CmsTransform_Type); + if (!self) + return NULL; + + self->transform = transform; + + strcpy(self->mode_in, mode_in); + strcpy(self->mode_out, mode_out); + + return (PyObject*) self; +} + +static void +cms_transform_dealloc(CmsTransformObject* self) +{ + cmsDeleteTransform(self->transform); + PyObject_Del(self); +} + +/* -------------------------------------------------------------------- */ +/* internal functions */ + +static const char* +findICmode(icColorSpaceSignature cs) +{ + switch (cs) { + case icSigXYZData: return "XYZ"; + case icSigLabData: return "LAB"; + case icSigLuvData: return "LUV"; + case icSigYCbCrData: return "YCbCr"; + case icSigYxyData: return "YXY"; + case icSigRgbData: return "RGB"; + case icSigGrayData: return "L"; + case icSigHsvData: return "HSV"; + case icSigHlsData: return "HLS"; + case icSigCmykData: return "CMYK"; + case icSigCmyData: return "CMY"; + default: return ""; /* other TBA */ + } +} + +static DWORD +findLCMStype(char* PILmode) +{ + if (strcmp(PILmode, "RGB") == 0) { + return TYPE_RGBA_8; + } + else if (strcmp(PILmode, "RGBA") == 0) { + return TYPE_RGBA_8; + } + else if (strcmp(PILmode, "RGBX") == 0) { + return TYPE_RGBA_8; + } + else if (strcmp(PILmode, "RGBA;16B") == 0) { + return TYPE_RGBA_16; + } + else if (strcmp(PILmode, "CMYK") == 0) { + return TYPE_CMYK_8; + } + else if (strcmp(PILmode, "L") == 0) { + return TYPE_GRAY_8; + } + else if (strcmp(PILmode, "L;16") == 0) { + return TYPE_GRAY_16; + } + else if (strcmp(PILmode, "L;16B") == 0) { + return TYPE_GRAY_16_SE; + } + else if (strcmp(PILmode, "YCCA") == 0) { + return TYPE_YCbCr_8; + } + else if (strcmp(PILmode, "YCC") == 0) { + return TYPE_YCbCr_8; + } + + else { + /* take a wild guess... but you probably should fail instead. */ + return TYPE_GRAY_8; /* so there's no buffer overrun... */ + } +} + +static int +pyCMSdoTransform(Imaging im, Imaging imOut, cmsHTRANSFORM hTransform) +{ + int i; + + if (im->xsize > imOut->xsize || im->ysize > imOut->ysize) + return -1; + + Py_BEGIN_ALLOW_THREADS + + for (i = 0; i < im->ysize; i++) + cmsDoTransform(hTransform, im->image[i], imOut->image[i], im->xsize); + + Py_END_ALLOW_THREADS + + return 0; +} + +static cmsHTRANSFORM +_buildTransform(cmsHPROFILE hInputProfile, cmsHPROFILE hOutputProfile, char *sInMode, char *sOutMode, int iRenderingIntent, DWORD cmsFLAGS) +{ + cmsHTRANSFORM hTransform; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + Py_BEGIN_ALLOW_THREADS + + /* create the transform */ + hTransform = cmsCreateTransform(hInputProfile, + findLCMStype(sInMode), + hOutputProfile, + findLCMStype(sOutMode), + iRenderingIntent, cmsFLAGS); + + Py_END_ALLOW_THREADS + + if (!hTransform) + PyErr_SetString(PyExc_ValueError, "cannot build transform"); + + return hTransform; /* if NULL, an exception is set */ +} + +static cmsHTRANSFORM +_buildProofTransform(cmsHPROFILE hInputProfile, cmsHPROFILE hOutputProfile, cmsHPROFILE hProofProfile, char *sInMode, char *sOutMode, int iRenderingIntent, int iProofIntent, DWORD cmsFLAGS) +{ + cmsHTRANSFORM hTransform; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + Py_BEGIN_ALLOW_THREADS + + /* create the transform */ + hTransform = cmsCreateProofingTransform(hInputProfile, + findLCMStype(sInMode), + hOutputProfile, + findLCMStype(sOutMode), + hProofProfile, + iRenderingIntent, + iProofIntent, + cmsFLAGS); + + Py_END_ALLOW_THREADS + + if (!hTransform) + PyErr_SetString(PyExc_ValueError, "cannot build proof transform"); + + return hTransform; /* if NULL, an exception is set */ +} + +/* -------------------------------------------------------------------- */ +/* Python callable functions */ + +static PyObject * +buildTransform(PyObject *self, PyObject *args) { + CmsProfileObject *pInputProfile; + CmsProfileObject *pOutputProfile; + char *sInMode; + char *sOutMode; + int iRenderingIntent = 0; + int cmsFLAGS = 0; + + cmsHTRANSFORM transform = NULL; + + if (!PyArg_ParseTuple(args, "O!O!ss|ii:buildTransform", &CmsProfile_Type, &pInputProfile, &CmsProfile_Type, &pOutputProfile, &sInMode, &sOutMode, &iRenderingIntent, &cmsFLAGS)) + return NULL; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + transform = _buildTransform(pInputProfile->profile, pOutputProfile->profile, sInMode, sOutMode, iRenderingIntent, cmsFLAGS); + + if (!transform) + return NULL; + + return cms_transform_new(transform, sInMode, sOutMode); +} + +static PyObject * +buildProofTransform(PyObject *self, PyObject *args) +{ + CmsProfileObject *pInputProfile; + CmsProfileObject *pOutputProfile; + CmsProfileObject *pProofProfile; + char *sInMode; + char *sOutMode; + int iRenderingIntent = 0; + int iProofIntent = 0; + int cmsFLAGS = 0; + + cmsHTRANSFORM transform = NULL; + + if (!PyArg_ParseTuple(args, "O!O!O!ss|iii:buildProofTransform", &CmsProfile_Type, &pInputProfile, &CmsProfile_Type, &pOutputProfile, &CmsProfile_Type, &pProofProfile, &sInMode, &sOutMode, &iRenderingIntent, &iProofIntent, &cmsFLAGS)) + return NULL; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + transform = _buildProofTransform(pInputProfile->profile, pOutputProfile->profile, pProofProfile->profile, sInMode, sOutMode, iRenderingIntent, iProofIntent, cmsFLAGS); + + if (!transform) + return NULL; + + return cms_transform_new(transform, sInMode, sOutMode); + +} + +static PyObject * +cms_transform_apply(CmsTransformObject *self, PyObject *args) +{ + long idIn; + long idOut; + Imaging im; + Imaging imOut; + + int result; + + if (!PyArg_ParseTuple(args, "ll:apply", &idIn, &idOut)) + return NULL; + + im = (Imaging) idIn; + imOut = (Imaging) idOut; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + result = pyCMSdoTransform(im, imOut, self->transform); + + return Py_BuildValue("i", result); +} + +/* -------------------------------------------------------------------- */ +/* Python-Callable On-The-Fly profile creation functions */ + +static PyObject * +createProfile(PyObject *self, PyObject *args) +{ + char *sColorSpace; + cmsHPROFILE hProfile; + int iColorTemp = 0; + LPcmsCIExyY whitePoint = NULL; + LCMSBOOL result; + + if (!PyArg_ParseTuple(args, "s|i:createProfile", &sColorSpace, &iColorTemp)) + return NULL; + + cmsErrorAction(LCMS_ERROR_IGNORE); + + if (strcmp(sColorSpace, "LAB") == 0) { + if (iColorTemp > 0) { + result = cmsWhitePointFromTemp(iColorTemp, whitePoint); + if (!result) { + PyErr_SetString(PyExc_ValueError, "ERROR: Could not calculate white point from color temperature provided, must be integer in degrees Kelvin"); + return NULL; + } + hProfile = cmsCreateLabProfile(whitePoint); + } else + hProfile = cmsCreateLabProfile(NULL); + } + else if (strcmp(sColorSpace, "XYZ") == 0) + hProfile = cmsCreateXYZProfile(); + else if (strcmp(sColorSpace, "sRGB") == 0) + hProfile = cmsCreate_sRGBProfile(); + else + hProfile = NULL; + + if (!hProfile) { + PyErr_SetString(PyExc_ValueError, "failed to create requested color space"); + return NULL; + } + + return cms_profile_new(hProfile); +} + +/* -------------------------------------------------------------------- */ +/* profile methods */ + +static PyObject * +cms_profile_is_intent_supported(CmsProfileObject *self, PyObject *args) +{ + LCMSBOOL result; + + int intent; + int direction; + if (!PyArg_ParseTuple(args, "ii:is_intent_supported", &intent, &direction)) + return NULL; + + result = cmsIsIntentSupported(self->profile, intent, direction); + + /* printf("cmsIsIntentSupported(%p, %d, %d) => %d\n", self->profile, intent, direction, result); */ + + return PyInt_FromLong(result != 0); +} + +#ifdef WIN32 +static PyObject * +cms_get_display_profile_win32(PyObject* self, PyObject* args) +{ + char filename[MAX_PATH]; + DWORD filename_size; + BOOL ok; + + int handle = 0; + int is_dc = 0; + if (!PyArg_ParseTuple(args, "|ii:get_display_profile", &handle, &is_dc)) + return NULL; + + filename_size = sizeof(filename); + + if (is_dc) { + ok = GetICMProfile((HDC) handle, &filename_size, filename); + } else { + HDC dc = GetDC((HWND) handle); + ok = GetICMProfile(dc, &filename_size, filename); + ReleaseDC((HWND) handle, dc); + } + + if (ok) + return PyString_FromStringAndSize(filename, filename_size-1); + + Py_INCREF(Py_None); + return Py_None; +} +#endif + +/* -------------------------------------------------------------------- */ +/* Python interface setup */ + +static PyMethodDef pyCMSdll_methods[] = { + + {"profile_open", cms_profile_open, 1}, + {"profile_fromstring", cms_profile_fromstring, 1}, + + /* profile and transform functions */ + {"buildTransform", buildTransform, 1}, + {"buildProofTransform", buildProofTransform, 1}, + {"createProfile", createProfile, 1}, + + /* platform specific tools */ +#ifdef WIN32 + {"get_display_profile_win32", cms_get_display_profile_win32, 1}, +#endif + + {NULL, NULL} +}; + +static struct PyMethodDef cms_profile_methods[] = { + {"is_intent_supported", (PyCFunction) cms_profile_is_intent_supported, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +cms_profile_getattr(CmsProfileObject* self, char* name) +{ + if (!strcmp(name, "product_name")) + return PyString_FromString(cmsTakeProductName(self->profile)); + if (!strcmp(name, "product_desc")) + return PyString_FromString(cmsTakeProductDesc(self->profile)); + if (!strcmp(name, "product_info")) + return PyString_FromString(cmsTakeProductInfo(self->profile)); + if (!strcmp(name, "rendering_intent")) + return PyInt_FromLong(cmsTakeRenderingIntent(self->profile)); + if (!strcmp(name, "pcs")) + return PyString_FromString(findICmode(cmsGetPCS(self->profile))); + if (!strcmp(name, "color_space")) + return PyString_FromString(findICmode(cmsGetColorSpace(self->profile))); + /* FIXME: add more properties (creation_datetime etc) */ + + return Py_FindMethod(cms_profile_methods, (PyObject*) self, name); +} + +statichere PyTypeObject CmsProfile_Type = { + PyObject_HEAD_INIT(NULL) + 0, "CmsProfile", sizeof(CmsProfileObject), 0, + /* methods */ + (destructor) cms_profile_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc) cms_profile_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number */ + 0, /*tp_as_sequence */ + 0, /*tp_as_mapping */ + 0 /*tp_hash*/ +}; + +static struct PyMethodDef cms_transform_methods[] = { + {"apply", (PyCFunction) cms_transform_apply, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +cms_transform_getattr(CmsTransformObject* self, char* name) +{ + if (!strcmp(name, "inputMode")) + return PyString_FromString(self->mode_in); + if (!strcmp(name, "outputMode")) + return PyString_FromString(self->mode_out); + + return Py_FindMethod(cms_transform_methods, (PyObject*) self, name); +} + +statichere PyTypeObject CmsTransform_Type = { + PyObject_HEAD_INIT(NULL) + 0, "CmsTransform", sizeof(CmsTransformObject), 0, + /* methods */ + (destructor) cms_transform_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc) cms_transform_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number */ + 0, /*tp_as_sequence */ + 0, /*tp_as_mapping */ + 0 /*tp_hash*/ +}; + +DL_EXPORT(void) +init_imagingcms(void) +{ + PyObject *m; + PyObject *d; + PyObject *v; + + /* Patch up object types */ + CmsProfile_Type.ob_type = &PyType_Type; + CmsTransform_Type.ob_type = &PyType_Type; + + m = Py_InitModule("_imagingcms", pyCMSdll_methods); + d = PyModule_GetDict(m); + +#if PY_VERSION_HEX >= 0x02020000 + v = PyString_FromFormat("%d.%d", LCMS_VERSION / 100, LCMS_VERSION % 100); +#else + { + char buffer[100]; + sprintf(buffer, "%d.%d", LCMS_VERSION / 100, LCMS_VERSION % 100); + v = PyString_FromString(buffer); + } +#endif + PyDict_SetItemString(d, "littlecms_version", v); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c new file mode 100755 index 00000000000..9358087180d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c @@ -0,0 +1,502 @@ +/* + * PIL FreeType Driver + * + * a FreeType 2.X driver for PIL + * + * history: + * 2001-02-17 fl Created (based on old experimental freetype 1.0 code) + * 2001-04-18 fl Fixed some egcs compiler nits + * 2002-11-08 fl Added unicode support; more font metrics, etc + * 2003-05-20 fl Fixed compilation under 1.5.2 and newer non-unicode builds + * 2003-09-27 fl Added charmap encoding support + * 2004-05-15 fl Fixed compilation for FreeType 2.1.8 + * 2004-09-10 fl Added support for monochrome bitmaps + * 2006-06-18 fl Fixed glyph bearing calculation + * 2007-12-23 fl Fixed crash in family/style attribute fetch + * 2008-01-02 fl Handle Unicode filenames properly + * + * Copyright (c) 1998-2007 by Secret Labs AB + */ + +#include "Python.h" +#include "Imaging.h" + +#if !defined(USE_FREETYPE_2_0) +/* undef/comment out to use freetype 2.0 */ +#define USE_FREETYPE_2_1 +#endif + +#if defined(USE_FREETYPE_2_1) +/* freetype 2.1 and newer */ +#include +#include FT_FREETYPE_H +#else +/* freetype 2.0 */ +#include +#endif + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#if PY_VERSION_HEX >= 0x01060000 +#if PY_VERSION_HEX < 0x02020000 || defined(Py_USING_UNICODE) +/* defining this enables unicode support (default under 1.6a1 and later) */ +#define HAVE_UNICODE +#endif +#endif + +#if !defined(Py_RETURN_NONE) +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#endif + +#if !defined(FT_LOAD_TARGET_MONO) +#define FT_LOAD_TARGET_MONO FT_LOAD_MONOCHROME +#endif + +/* -------------------------------------------------------------------- */ +/* error table */ + +#undef FTERRORS_H +#undef __FTERRORS_H__ + +#define FT_ERRORDEF( e, v, s ) { e, s }, +#define FT_ERROR_START_LIST { +#define FT_ERROR_END_LIST { 0, 0 } }; + +struct { + int code; + const char* message; +} ft_errors[] = + +#include + +/* -------------------------------------------------------------------- */ +/* font objects */ + +static FT_Library library; + +typedef struct { + PyObject_HEAD + FT_Face face; +} FontObject; + +staticforward PyTypeObject Font_Type; + +/* round a 26.6 pixel coordinate to the nearest larger integer */ +#define PIXEL(x) ((((x)+63) & -64)>>6) + +static PyObject* +geterror(int code) +{ + int i; + + for (i = 0; ft_errors[i].message; i++) + if (ft_errors[i].code == code) { + PyErr_SetString(PyExc_IOError, ft_errors[i].message); + return NULL; + } + + PyErr_SetString(PyExc_IOError, "unknown freetype error"); + return NULL; +} + +static PyObject* +getfont(PyObject* self_, PyObject* args, PyObject* kw) +{ + /* create a font object from a file name and a size (in pixels) */ + + FontObject* self; + int error; + + char* filename; + int size; + int index = 0; + unsigned char* encoding = NULL; + static char* kwlist[] = { + "filename", "size", "index", "encoding", NULL + }; + +#if defined(HAVE_UNICODE) && PY_VERSION_HEX >= 0x02020000 + if (!PyArg_ParseTupleAndKeywords(args, kw, "eti|is", kwlist, + Py_FileSystemDefaultEncoding, &filename, + &size, &index, &encoding)) + return NULL; +#else + if (!PyArg_ParseTupleAndKeywords(args, kw, "si|is", kwlist, + &filename, &size, &index, &encoding)) + return NULL; +#endif + + if (!library) { + PyErr_SetString( + PyExc_IOError, + "failed to initialize FreeType library" + ); + return NULL; + } + + self = PyObject_New(FontObject, &Font_Type); + if (!self) + return NULL; + + error = FT_New_Face(library, filename, index, &self->face); + + if (!error) + error = FT_Set_Pixel_Sizes(self->face, 0, size); + + if (!error && encoding && strlen((char*) encoding) == 4) { + FT_Encoding encoding_tag = FT_MAKE_TAG( + encoding[0], encoding[1], encoding[2], encoding[3] + ); + error = FT_Select_Charmap(self->face, encoding_tag); + } + + if (error) { + PyObject_Del(self); + return geterror(error); + } + + return (PyObject*) self; +} + +static int +font_getchar(PyObject* string, int index, FT_ULong* char_out) +{ +#if defined(HAVE_UNICODE) + if (PyUnicode_Check(string)) { + Py_UNICODE* p = PyUnicode_AS_UNICODE(string); + int size = PyUnicode_GET_SIZE(string); + if (index >= size) + return 0; + *char_out = p[index]; + return 1; + } +#endif + if (PyString_Check(string)) { + unsigned char* p = (unsigned char*) PyString_AS_STRING(string); + int size = PyString_GET_SIZE(string); + if (index >= size) + return 0; + *char_out = (unsigned char) p[index]; + return 1; + } + return 0; +} + +static PyObject* +font_getsize(FontObject* self, PyObject* args) +{ + int i, x; + FT_ULong ch; + FT_Face face; + int xoffset; + FT_Bool kerning = FT_HAS_KERNING(self->face); + FT_UInt last_index = 0; + + /* calculate size and bearing for a given string */ + + PyObject* string; + if (!PyArg_ParseTuple(args, "O:getsize", &string)) + return NULL; + +#if defined(HAVE_UNICODE) + if (!PyUnicode_Check(string) && !PyString_Check(string)) { +#else + if (!PyString_Check(string)) { +#endif + PyErr_SetString(PyExc_TypeError, "expected string"); + return NULL; + } + + face = NULL; + xoffset = 0; + + for (x = i = 0; font_getchar(string, i, &ch); i++) { + int index, error; + face = self->face; + index = FT_Get_Char_Index(face, ch); + if (kerning && last_index && index) { + FT_Vector delta; + FT_Get_Kerning(self->face, last_index, index, ft_kerning_default, + &delta); + x += delta.x; + } + error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); + if (error) + return geterror(error); + if (i == 0) + xoffset = face->glyph->metrics.horiBearingX; + x += face->glyph->metrics.horiAdvance; + last_index = index; + } + + if (face) { + int offset; + /* left bearing */ + if (xoffset < 0) + x -= xoffset; + else + xoffset = 0; + /* right bearing */ + offset = face->glyph->metrics.horiAdvance - + face->glyph->metrics.width - + face->glyph->metrics.horiBearingX; + if (offset < 0) + x -= offset; + } + + return Py_BuildValue( + "(ii)(ii)", + PIXEL(x), PIXEL(self->face->size->metrics.height), + PIXEL(xoffset), 0 + ); +} + +static PyObject* +font_getabc(FontObject* self, PyObject* args) +{ + FT_ULong ch; + FT_Face face; + double a, b, c; + + /* calculate ABC values for a given string */ + + PyObject* string; + if (!PyArg_ParseTuple(args, "O:getabc", &string)) + return NULL; + +#if defined(HAVE_UNICODE) + if (!PyUnicode_Check(string) && !PyString_Check(string)) { +#else + if (!PyString_Check(string)) { +#endif + PyErr_SetString(PyExc_TypeError, "expected string"); + return NULL; + } + + if (font_getchar(string, 0, &ch)) { + int index, error; + face = self->face; + index = FT_Get_Char_Index(face, ch); + error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); + if (error) + return geterror(error); + a = face->glyph->metrics.horiBearingX / 64.0; + b = face->glyph->metrics.width / 64.0; + c = (face->glyph->metrics.horiAdvance - + face->glyph->metrics.horiBearingX - + face->glyph->metrics.width) / 64.0; + } else + a = b = c = 0.0; + + return Py_BuildValue("ddd", a, b, c); +} + +static PyObject* +font_render(FontObject* self, PyObject* args) +{ + int i, x, y; + Imaging im; + int index, error, ascender; + int load_flags; + unsigned char *source; + FT_ULong ch; + FT_GlyphSlot glyph; + FT_Bool kerning = FT_HAS_KERNING(self->face); + FT_UInt last_index = 0; + + /* render string into given buffer (the buffer *must* have + the right size, or this will crash) */ + PyObject* string; + long id; + int mask = 0; + if (!PyArg_ParseTuple(args, "Ol|i:render", &string, &id, &mask)) + return NULL; + +#if defined(HAVE_UNICODE) + if (!PyUnicode_Check(string) && !PyString_Check(string)) { +#else + if (!PyString_Check(string)) { +#endif + PyErr_SetString(PyExc_TypeError, "expected string"); + return NULL; + } + + im = (Imaging) id; + + load_flags = FT_LOAD_RENDER; + if (mask) + load_flags |= FT_LOAD_TARGET_MONO; + + for (x = i = 0; font_getchar(string, i, &ch); i++) { + if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) + x = -PIXEL(self->face->glyph->metrics.horiBearingX); + index = FT_Get_Char_Index(self->face, ch); + if (kerning && last_index && index) { + FT_Vector delta; + FT_Get_Kerning(self->face, last_index, index, ft_kerning_default, + &delta); + x += delta.x >> 6; + } + error = FT_Load_Glyph(self->face, index, load_flags); + if (error) + return geterror(error); + glyph = self->face->glyph; + if (mask) { + /* use monochrome mask (on palette images, etc) */ + int xx, x0, x1; + source = (unsigned char*) glyph->bitmap.buffer; + ascender = PIXEL(self->face->size->metrics.ascender); + xx = x + glyph->bitmap_left; + x0 = 0; + x1 = glyph->bitmap.width; + if (xx < 0) + x0 = -xx; + if (xx + x1 > im->xsize) + x1 = im->xsize - xx; + for (y = 0; y < glyph->bitmap.rows; y++) { + int yy = y + ascender - glyph->bitmap_top; + if (yy >= 0 && yy < im->ysize) { + /* blend this glyph into the buffer */ + unsigned char *target = im->image8[yy] + xx; + int i, j, m = 128; + for (i = j = 0; j < x1; j++) { + if (j >= x0 && (source[i] & m)) + target[j] = 255; + if (!(m >>= 1)) { + m = 128; + i++; + } + } + } + source += glyph->bitmap.pitch; + } + } else { + /* use antialiased rendering */ + int xx, x0, x1; + source = (unsigned char*) glyph->bitmap.buffer; + ascender = PIXEL(self->face->size->metrics.ascender); + xx = x + glyph->bitmap_left; + x0 = 0; + x1 = glyph->bitmap.width; + if (xx < 0) + x0 = -xx; + if (xx + x1 > im->xsize) + x1 = im->xsize - xx; + for (y = 0; y < glyph->bitmap.rows; y++) { + int yy = y + ascender - glyph->bitmap_top; + if (yy >= 0 && yy < im->ysize) { + /* blend this glyph into the buffer */ + int i; + unsigned char *target = im->image8[yy] + xx; + for (i = x0; i < x1; i++) { + if (target[i] < source[i]) + target[i] = source[i]; + } + } + source += glyph->bitmap.pitch; + } + } + x += PIXEL(glyph->metrics.horiAdvance); + last_index = index; + } + + Py_RETURN_NONE; +} + +static void +font_dealloc(FontObject* self) +{ + FT_Done_Face(self->face); + PyObject_Del(self); +} + +static PyMethodDef font_methods[] = { + {"render", (PyCFunction) font_render, METH_VARARGS}, + {"getsize", (PyCFunction) font_getsize, METH_VARARGS}, + {"getabc", (PyCFunction) font_getabc, METH_VARARGS}, + {NULL, NULL} +}; + +static PyObject* +font_getattr(FontObject* self, char* name) +{ + PyObject* res; + + res = Py_FindMethod(font_methods, (PyObject*) self, name); + + if (res) + return res; + + PyErr_Clear(); + + /* attributes */ + if (!strcmp(name, "family")) { + if (self->face->family_name) + return PyString_FromString(self->face->family_name); + Py_RETURN_NONE; + } + if (!strcmp(name, "style")) { + if (self->face->style_name) + return PyString_FromString(self->face->style_name); + Py_RETURN_NONE; + } + if (!strcmp(name, "ascent")) + return PyInt_FromLong(PIXEL(self->face->size->metrics.ascender)); + if (!strcmp(name, "descent")) + return PyInt_FromLong(-PIXEL(self->face->size->metrics.descender)); + + if (!strcmp(name, "glyphs")) + /* number of glyphs provided by this font */ + return PyInt_FromLong(self->face->num_glyphs); + + PyErr_SetString(PyExc_AttributeError, name); + return NULL; +} + +statichere PyTypeObject Font_Type = { + PyObject_HEAD_INIT(NULL) + 0, "Font", sizeof(FontObject), 0, + /* methods */ + (destructor)font_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc)font_getattr, /* tp_getattr */ +}; + +static PyMethodDef _functions[] = { + {"getfont", (PyCFunction) getfont, METH_VARARGS|METH_KEYWORDS}, + {NULL, NULL} +}; + +DL_EXPORT(void) +init_imagingft(void) +{ + PyObject* m; + PyObject* d; + PyObject* v; + int major, minor, patch; + + /* Patch object type */ + Font_Type.ob_type = &PyType_Type; + + m = Py_InitModule("_imagingft", _functions); + d = PyModule_GetDict(m); + + if (FT_Init_FreeType(&library)) + return; /* leave it uninitalized */ + + FT_Library_Version(library, &major, &minor, &patch); + +#if PY_VERSION_HEX >= 0x02020000 + v = PyString_FromFormat("%d.%d.%d", major, minor, patch); +#else + { + char buffer[100]; + sprintf(buffer, "%d.%d.%d", major, minor, patch); + v = PyString_FromString(buffer); + } +#endif + PyDict_SetItemString(d, "freetype2_version", v); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c new file mode 100755 index 00000000000..928986bb323 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c @@ -0,0 +1,284 @@ +/* + * The Python Imaging Library + * + * a simple math add-on for the Python Imaging Library + * + * history: + * 1999-02-15 fl Created + * 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 + * + * Copyright (c) 1999-2005 by Secret Labs AB + * Copyright (c) 2005 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + +#include "Python.h" + +#include "Imaging.h" + +#include "math.h" +#include "float.h" + +#define MAX_INT32 2147483647.0 +#define MIN_INT32 -2147483648.0 + +#if defined(_MSC_VER) && _MSC_VER < 1500 +/* python 2.1/2.2/2.3 = VC98 = VER 1200 */ +/* python 2.4/2.5 = VS.NET 2003 = VER 1310 */ +/* python 2.6 = VS 9.0 = VER 1500 */ +#define powf(a, b) ((float) pow((double) (a), (double) (b))) +#endif + +#define UNOP(name, op, type)\ +void name(Imaging out, Imaging im1)\ +{\ + int x, y;\ + for (y = 0; y < out->ysize; y++) {\ + type* p0 = (type*) out->image[y];\ + type* p1 = (type*) im1->image[y];\ + for (x = 0; x < out->xsize; x++) {\ + *p0 = op(type, *p1);\ + p0++; p1++;\ + }\ + }\ +} + +#define BINOP(name, op, type)\ +void name(Imaging out, Imaging im1, Imaging im2)\ +{\ + int x, y;\ + for (y = 0; y < out->ysize; y++) {\ + type* p0 = (type*) out->image[y];\ + type* p1 = (type*) im1->image[y];\ + type* p2 = (type*) im2->image[y];\ + for (x = 0; x < out->xsize; x++) {\ + *p0 = op(type, *p1, *p2);\ + p0++; p1++; p2++;\ + }\ + }\ +} + +#define NEG(type, v1) -(v1) +#define INVERT(type, v1) ~(v1) + +#define ADD(type, v1, v2) (v1)+(v2) +#define SUB(type, v1, v2) (v1)-(v2) +#define MUL(type, v1, v2) (v1)*(v2) + +#define MIN(type, v1, v2) ((v1)<(v2))?(v1):(v2) +#define MAX(type, v1, v2) ((v1)>(v2))?(v1):(v2) + +#define AND(type, v1, v2) (v1)&(v2) +#define OR(type, v1, v2) (v1)|(v2) +#define XOR(type, v1, v2) (v1)^(v2) +#define LSHIFT(type, v1, v2) (v1)<<(v2) +#define RSHIFT(type, v1, v2) (v1)>>(v2) + +#define ABS_I(type, v1) abs((v1)) +#define ABS_F(type, v1) fabs((v1)) + +/* -------------------------------------------------------------------- + * some day, we should add FPE protection mechanisms. see pyfpe.h for + * details. + * + * PyFPE_START_PROTECT("Error in foobar", return 0) + * PyFPE_END_PROTECT(result) + */ + +#define DIV_I(type, v1, v2) ((v2)!=0)?(v1)/(v2):0 +#define DIV_F(type, v1, v2) ((v2)!=0.0F)?(v1)/(v2):0.0F + +#define MOD_I(type, v1, v2) ((v2)!=0)?(v1)%(v2):0 +#define MOD_F(type, v1, v2) ((v2)!=0.0F)?fmod((v1),(v2)):0.0F + +static int powi(int x, int y) +{ + double v = pow(x, y) + 0.5; + if (errno == EDOM) + return 0; + if (v < MIN_INT32) + v = MIN_INT32; + else if (v > MAX_INT32) + v = MAX_INT32; + return (int) v; +} + +#define POW_I(type, v1, v2) powi(v1, v2) +#define POW_F(type, v1, v2) powf(v1, v2) /* FIXME: EDOM handling */ + +#define DIFF_I(type, v1, v2) abs((v1)-(v2)) +#define DIFF_F(type, v1, v2) fabs((v1)-(v2)) + +#define EQ(type, v1, v2) (v1)==(v2) +#define NE(type, v1, v2) (v1)!=(v2) +#define LT(type, v1, v2) (v1)<(v2) +#define LE(type, v1, v2) (v1)<=(v2) +#define GT(type, v1, v2) (v1)>(v2) +#define GE(type, v1, v2) (v1)>=(v2) + +UNOP(abs_I, ABS_I, INT32) +UNOP(neg_I, NEG, INT32) + +BINOP(add_I, ADD, INT32) +BINOP(sub_I, SUB, INT32) +BINOP(mul_I, MUL, INT32) +BINOP(div_I, DIV_I, INT32) +BINOP(mod_I, MOD_I, INT32) +BINOP(pow_I, POW_I, INT32) +BINOP(diff_I, DIFF_I, INT32) + +UNOP(invert_I, INVERT, INT32) +BINOP(and_I, AND, INT32) +BINOP(or_I, OR, INT32) +BINOP(xor_I, XOR, INT32) +BINOP(lshift_I, LSHIFT, INT32) +BINOP(rshift_I, RSHIFT, INT32) + +BINOP(min_I, MIN, INT32) +BINOP(max_I, MAX, INT32) + +BINOP(eq_I, EQ, INT32) +BINOP(ne_I, NE, INT32) +BINOP(lt_I, LT, INT32) +BINOP(le_I, LE, INT32) +BINOP(gt_I, GT, INT32) +BINOP(ge_I, GE, INT32) + +UNOP(abs_F, ABS_F, FLOAT32) +UNOP(neg_F, NEG, FLOAT32) + +BINOP(add_F, ADD, FLOAT32) +BINOP(sub_F, SUB, FLOAT32) +BINOP(mul_F, MUL, FLOAT32) +BINOP(div_F, DIV_F, FLOAT32) +BINOP(mod_F, MOD_F, FLOAT32) +BINOP(pow_F, POW_F, FLOAT32) +BINOP(diff_F, DIFF_F, FLOAT32) + +BINOP(min_F, MIN, FLOAT32) +BINOP(max_F, MAX, FLOAT32) + +BINOP(eq_F, EQ, FLOAT32) +BINOP(ne_F, NE, FLOAT32) +BINOP(lt_F, LT, FLOAT32) +BINOP(le_F, LE, FLOAT32) +BINOP(gt_F, GT, FLOAT32) +BINOP(ge_F, GE, FLOAT32) + +static PyObject * +_unop(PyObject* self, PyObject* args) +{ + Imaging out; + Imaging im1; + void (*unop)(Imaging, Imaging); + + long op, i0, i1; + if (!PyArg_ParseTuple(args, "lll", &op, &i0, &i1)) + return NULL; + + out = (Imaging) i0; + im1 = (Imaging) i1; + + unop = (void*) op; + + unop(out, im1); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_binop(PyObject* self, PyObject* args) +{ + Imaging out; + Imaging im1; + Imaging im2; + void (*binop)(Imaging, Imaging, Imaging); + + long op, i0, i1, i2; + if (!PyArg_ParseTuple(args, "llll", &op, &i0, &i1, &i2)) + return NULL; + + out = (Imaging) i0; + im1 = (Imaging) i1; + im2 = (Imaging) i2; + + binop = (void*) op; + + binop(out, im1, im2); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef _functions[] = { + {"unop", _unop, 1}, + {"binop", _binop, 1}, + {NULL, NULL} +}; + +static void +install(PyObject *d, char* name, void* value) +{ + PyObject *v = PyInt_FromLong((long) value); + if (!v || PyDict_SetItemString(d, name, v)) + PyErr_Clear(); + Py_XDECREF(v); +} + +DL_EXPORT(void) +init_imagingmath(void) +{ + PyObject* m; + PyObject* d; + + m = Py_InitModule("_imagingmath", _functions); + d = PyModule_GetDict(m); + + install(d, "abs_I", abs_I); + install(d, "neg_I", neg_I); + install(d, "add_I", add_I); + install(d, "sub_I", sub_I); + install(d, "diff_I", diff_I); + install(d, "mul_I", mul_I); + install(d, "div_I", div_I); + install(d, "mod_I", mod_I); + install(d, "min_I", min_I); + install(d, "max_I", max_I); + install(d, "pow_I", pow_I); + + install(d, "invert_I", invert_I); + install(d, "and_I", and_I); + install(d, "or_I", or_I); + install(d, "xor_I", xor_I); + install(d, "lshift_I", lshift_I); + install(d, "rshift_I", rshift_I); + + install(d, "eq_I", eq_I); + install(d, "ne_I", ne_I); + install(d, "lt_I", lt_I); + install(d, "le_I", le_I); + install(d, "gt_I", gt_I); + install(d, "ge_I", ge_I); + + install(d, "abs_F", abs_F); + install(d, "neg_F", neg_F); + install(d, "add_F", add_F); + install(d, "sub_F", sub_F); + install(d, "diff_F", diff_F); + install(d, "mul_F", mul_F); + install(d, "div_F", div_F); + install(d, "mod_F", mod_F); + install(d, "min_F", min_F); + install(d, "max_F", max_F); + install(d, "pow_F", pow_F); + + install(d, "eq_F", eq_F); + install(d, "ne_F", ne_F); + install(d, "lt_F", lt_F); + install(d, "le_F", le_F); + install(d, "gt_F", gt_F); + install(d, "ge_F", ge_F); + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c new file mode 100755 index 00000000000..6165a2acb93 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c @@ -0,0 +1,70 @@ +/* + * The Python Imaging Library. + * + * tkinter hooks + * + * history: + * 99-07-26 fl created + * 99-08-15 fl moved to its own support module + * + * Copyright (c) Secret Labs AB 1999. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Python.h" +#include "Imaging.h" + +#include "tk.h" + +/* must link with Tk/tkImaging.c */ +extern void TkImaging_Init(Tcl_Interp* interp); + +/* copied from _tkinter.c (this isn't as bad as it may seem: for new + versions, we use _tkinter's interpaddr hook instead, and all older + versions use this structure layout) */ + +typedef struct { + PyObject_HEAD + Tcl_Interp* interp; +} TkappObject; + +static PyObject* +_tkinit(PyObject* self, PyObject* args) +{ + Tcl_Interp* interp; + + long arg; + int is_interp; + if (!PyArg_ParseTuple(args, "li", &arg, &is_interp)) + return NULL; + + if (is_interp) + interp = (Tcl_Interp*) arg; + else { + TkappObject* app; + /* Do it the hard way. This will break if the TkappObject + layout changes */ + app = (TkappObject*) arg; + interp = app->interp; + } + + /* This will bomb if interp is invalid... */ + TkImaging_Init(interp); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef functions[] = { + /* Tkinter interface stuff */ + {"tkinit", (PyCFunction)_tkinit, 1}, + {NULL, NULL} /* sentinel */ +}; + +DL_EXPORT(void) +init_imagingtk(void) +{ + Py_InitModule("_imagingtk", functions); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.exp b/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.exp new file mode 100755 index 0000000000000000000000000000000000000000..7247036d7846cba448752fb860a08262cea605b2 GIT binary patch literal 670 zcmY*XO;5r=5S@aGF&@Bp^w0wbh_We|h%p+8Uy+DtAmOwLS=hC1EZwGEp!y%YdGk;B z!@PJm(b+adnRMQ~d719)&ThxbL8JE8`?dhqAu)>x&NNFCgB^5^{$UcdHS`vKgp1MC zE%%LPtcYuTrgVWVD4v5Z6llFusSR`oHm54Zi zT{tck@DI~7wG9kvX2Go-hbmGJ+OG7fcBkFFfmb*w!FbN$;)rT@7-^=Z@~KwJi|Dn~ zBNbo90rR;CseY6p9|kPc&$OMMyH+Q4(gYC;I6tEIp>jhuv9F{jBD)eF9#rXH&w-4l z%(MG?%B8aF4sqzz@OC0Da|`1vs>`+xJMJ`d4L zmrZbm24<-ey1@(+FcZ#{w8~66Q|5OeJ{f1Bl)DaE9ZnYtlH^8AG?s%c#N{3S0vo-5 AWB>pF literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.lib b/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.lib new file mode 100755 index 0000000000000000000000000000000000000000..c6fe61113dae7ec20238a1c100fb1862481fca66 GIT binary patch literal 1736 zcmcIl%}(1u5dLfzNG*h-(i@^O5>nwnN{r1^Mm>ZHwlQ#Ge96><}{TjlswC#ES zYT!gvS_;9Z?b2GfvJ@=Qk*MCFVLxh$4m!Cc%hqdJoYVJL2`Eh{VERny%_=d5ctQ3=kJ$pOGo9vPykr)GQa=vr zErzoLB;*U37*Fx>tM#aI5Ff^0o7RLsX?excTC#g<7$lw#@&%v@@hVFrS8agM(Lx)W zAulR%y+Q8A$3Jm(B?kEn6Z@w_qAmc5$9p14;$usONF3H70opq5jfCZ6JSgJZf%l5z zNk>5A)9}e@Hn!cSU7-3Oym|AF z__s{F>uj4M#!2Vxo0r+n?Cf4yIjC3O`h^_88YE^B!I@@hVDKKDqkotHZ56$ZAK_v+ zaY}baGqz;`e5G`bZP++5fvJ&+m+Bdq(S?_6)X~T zu`&^H0K0Hh%;PRoH??(K)YO7&ISN&z9<^QW@7Pz}-X*-kaS=u{4yP@uok66TmddAE zDL0}QQV&&p76;7dBBXjOLp}&tsGn&!ok68WYNP=o7SL(Y+fX?n^Xzl!ipVa<&BGn~ zTk}Ci6Xx1?dcvi$YgJOE4;^~a?NL|yPuRM^TY_fMOn>lirtOi!<4dll@9_O?PPh0H z%$_BPUV6;Kztk~GmCy;M7=W2{rleVB;+ZnL3GoS4=SrzpMXNz)t{_Qn#;nG2u!;D; F%O5MChW`Kn literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.lib b/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.lib new file mode 100755 index 0000000000000000000000000000000000000000..725d4c008867b596b0bb6209e3b04d6e2073a741 GIT binary patch literal 1882 zcmcIl!EVz)5Pfz+TPzM%LG7uMfg<2Q(ztfW0aY#(L{!(U-1LUznxsv9NF9~55-08z zM~-{}AA$M}960a+{f#oS@y2cvnxraYd3WdScz0&@&HCZ1@VMSu(~8DbDXms)%QDNQ zm8-Z^OSY9v>}vq-0ICk;JsO??GZ*{@L3L|q+ph&1Z+GAL)t%b59|Tc5Y(_`TcGztp z2)sSl9k#-ktXa>f_I}UX3^vwl>-1UF?oe|Sb+dLDMy8IcTG@+hv)MsXm>u_yOZp6I@oO<$q&xdE*x4>&Ozx0+o_dEhEJm@mHh z3konNas{Q(IQV$dT;A=ez&jdzl}ge(&|ep#M%WFPO*!>|2EXVfA_>V+>tN+Pu`4Gq z=4p_p{iGe^4vcd;I4t5WtI!9-e2V+}EKTsDEX?5ebbc$UAIG2K!>;kne{Q%{Z&S<; zH1|m74|xIFTa1YMf)}&I!Ia-3qj2hRyF+frr{8gTDL3WsSlCY$GI|FPp0^|-;^f_O z60z8Z0Q7C_6k+@cH;M4-z*?elr{V*(H)rh_E>6iF)3*Ed<|?XS&rjhc`#PFE4KbBA z8TPD7l-ct`DoM}m`G2gKstate, 0, sizeof(decoder->state)); + + /* Allocate decoder context */ + if (contextsize > 0) { + context = (void*) calloc(1, contextsize); + if (!context) { + Py_DECREF(decoder); + (void) PyErr_NoMemory(); + return NULL; + } + } else + context = 0; + + /* Initialize decoder context */ + decoder->state.context = context; + + /* Target image */ + decoder->lock = NULL; + decoder->im = NULL; + + return decoder; +} + +static void +_dealloc(ImagingDecoderObject* decoder) +{ + free(decoder->state.buffer); + free(decoder->state.context); + Py_XDECREF(decoder->lock); + PyObject_Del(decoder); +} + +static PyObject* +_decode(ImagingDecoderObject* decoder, PyObject* args) +{ + UINT8* buffer; + int bufsize, status; + + if (!PyArg_ParseTuple(args, "s#", &buffer, &bufsize)) + return NULL; + + status = decoder->decode(decoder->im, &decoder->state, buffer, bufsize); + + return Py_BuildValue("ii", status, decoder->state.errcode); +} + +extern Imaging PyImaging_AsImaging(PyObject *op); + +static PyObject* +_setimage(ImagingDecoderObject* decoder, PyObject* args) +{ + PyObject* op; + Imaging im; + ImagingCodecState state; + int x0, y0, x1, y1; + + x0 = y0 = x1 = y1 = 0; + + /* FIXME: should publish the ImagingType descriptor */ + if (!PyArg_ParseTuple(args, "O|(iiii)", &op, &x0, &y0, &x1, &y1)) + return NULL; + im = PyImaging_AsImaging(op); + if (!im) + return NULL; + + decoder->im = im; + + state = &decoder->state; + + /* Setup decoding tile extent */ + if (x0 == 0 && x1 == 0) { + state->xsize = im->xsize; + state->ysize = im->ysize; + } else { + state->xoff = x0; + state->yoff = y0; + state->xsize = x1 - x0; + state->ysize = y1 - y0; + } + + if (state->xsize <= 0 || + state->xsize + state->xoff > (int) im->xsize || + state->ysize <= 0 || + state->ysize + state->yoff > (int) im->ysize) { + PyErr_SetString(PyExc_ValueError, "tile cannot extend outside image"); + return NULL; + } + + /* Allocate memory buffer (if bits field is set) */ + if (state->bits > 0) { + if (!state->bytes) + state->bytes = (state->bits * state->xsize+7)/8; + state->buffer = (UINT8*) malloc(state->bytes); + if (!state->buffer) + return PyErr_NoMemory(); + } + + /* Keep a reference to the image object, to make sure it doesn't + go away before we do */ + Py_INCREF(op); + Py_XDECREF(decoder->lock); + decoder->lock = op; + + Py_INCREF(Py_None); + return Py_None; +} + +static struct PyMethodDef methods[] = { + {"decode", (PyCFunction)_decode, 1}, + {"setimage", (PyCFunction)_setimage, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +_getattr(ImagingDecoderObject* self, char* name) +{ + return Py_FindMethod(methods, (PyObject*) self, name); +} + +statichere PyTypeObject ImagingDecoderType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingDecoder", /*tp_name*/ + sizeof(ImagingDecoderObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_hash*/ +}; + +/* -------------------------------------------------------------------- */ + +int +get_unpacker(ImagingDecoderObject* decoder, const char* mode, + const char* rawmode) +{ + int bits; + ImagingShuffler unpack; + + unpack = ImagingFindUnpacker(mode, rawmode, &bits); + if (!unpack) { + Py_DECREF(decoder); + PyErr_SetString(PyExc_ValueError, "unknown raw mode"); + return -1; + } + + decoder->state.shuffle = unpack; + decoder->state.bits = bits; + + return 0; +} + + +/* -------------------------------------------------------------------- */ +/* BIT (packed fields) */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_BitDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + int bits = 8; + int pad = 8; + int fill = 0; + int sign = 0; + int ystep = 1; + if (!PyArg_ParseTuple(args, "s|iiiii", &mode, &bits, &pad, &fill, + &sign, &ystep)) + return NULL; + + if (strcmp(mode, "F") != 0) { + PyErr_SetString(PyExc_ValueError, "bad image mode"); + return NULL; + } + + decoder = PyImaging_DecoderNew(sizeof(BITSTATE)); + if (decoder == NULL) + return NULL; + + decoder->decode = ImagingBitDecode; + + decoder->state.ystep = ystep; + + ((BITSTATE*)decoder->state.context)->bits = bits; + ((BITSTATE*)decoder->state.context)->pad = pad; + ((BITSTATE*)decoder->state.context)->fill = fill; + ((BITSTATE*)decoder->state.context)->sign = sign; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* FLI */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_FliDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + decoder->decode = ImagingFliDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* GIF */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_GifDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + int bits = 8; + int interlace = 0; + if (!PyArg_ParseTuple(args, "s|ii", &mode, &bits, &interlace)) + return NULL; + + if (strcmp(mode, "L") != 0 && strcmp(mode, "P") != 0) { + PyErr_SetString(PyExc_ValueError, "bad image mode"); + return NULL; + } + + decoder = PyImaging_DecoderNew(sizeof(GIFDECODERSTATE)); + if (decoder == NULL) + return NULL; + + decoder->decode = ImagingGifDecode; + + ((GIFDECODERSTATE*)decoder->state.context)->bits = bits; + ((GIFDECODERSTATE*)decoder->state.context)->interlace = interlace; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* HEX */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_HexDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + if (!PyArg_ParseTuple(args, "ss", &mode, &rawmode)) + return NULL; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingHexDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* LZW */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_TiffLzwDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + int filter = 0; + if (!PyArg_ParseTuple(args, "ss|i", &mode, &rawmode, &filter)) + return NULL; + + decoder = PyImaging_DecoderNew(sizeof(LZWSTATE)); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingLzwDecode; + + ((LZWSTATE*)decoder->state.context)->filter = filter; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* MSP */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_MspDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, "1", "1") < 0) + return NULL; + + decoder->decode = ImagingMspDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* PackBits */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_PackbitsDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + if (!PyArg_ParseTuple(args, "ss", &mode, &rawmode)) + return NULL; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingPackbitsDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* PCD */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_PcdDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + /* Unpack from PhotoYCC to RGB */ + if (get_unpacker(decoder, "RGB", "YCC;P") < 0) + return NULL; + + decoder->decode = ImagingPcdDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* PCX */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_PcxDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + int stride; + if (!PyArg_ParseTuple(args, "ssi", &mode, &rawmode, &stride)) + return NULL; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->state.bytes = stride; + + decoder->decode = ImagingPcxDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* RAW */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_RawDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + int stride = 0; + int ystep = 1; + if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &stride, &ystep)) + return NULL; + + decoder = PyImaging_DecoderNew(sizeof(RAWSTATE)); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingRawDecode; + + decoder->state.ystep = ystep; + + ((RAWSTATE*)decoder->state.context)->stride = stride; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* SUN RLE */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_SunRleDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + if (!PyArg_ParseTuple(args, "ss", &mode, &rawmode)) + return NULL; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingSunRleDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* TGA RLE */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_TgaRleDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + int ystep = 1; + int depth = 8; + if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &ystep, &depth)) + return NULL; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingTgaRleDecode; + + decoder->state.ystep = ystep; + decoder->state.count = depth / 8; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* XBM */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_XbmDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + decoder = PyImaging_DecoderNew(0); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, "1", "1;R") < 0) + return NULL; + + decoder->decode = ImagingXbmDecode; + + return (PyObject*) decoder; +} + + +/* -------------------------------------------------------------------- */ +/* ZIP */ +/* -------------------------------------------------------------------- */ + +#ifdef HAVE_LIBZ + +#include "Zip.h" + +PyObject* +PyImaging_ZipDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; + int interlaced = 0; + if (!PyArg_ParseTuple(args, "ss|i", &mode, &rawmode, &interlaced)) + return NULL; + + decoder = PyImaging_DecoderNew(sizeof(ZIPSTATE)); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingZipDecode; + + ((ZIPSTATE*)decoder->state.context)->interlaced = interlaced; + + return (PyObject*) decoder; +} +#endif + + +/* -------------------------------------------------------------------- */ +/* JPEG */ +/* -------------------------------------------------------------------- */ + +#ifdef HAVE_LIBJPEG + +/* We better define this decoder last in this file, so the following + undef's won't mess things up for the Imaging library proper. */ + +#undef HAVE_PROTOTYPES +#undef HAVE_STDDEF_H +#undef HAVE_STDLIB_H +#undef UINT8 +#undef UINT16 +#undef UINT32 +#undef INT8 +#undef INT16 +#undef INT32 + +#include "Jpeg.h" + +PyObject* +PyImaging_JpegDecoderNew(PyObject* self, PyObject* args) +{ + ImagingDecoderObject* decoder; + + char* mode; + char* rawmode; /* what we wan't from the decoder */ + char* jpegmode; /* what's in the file */ + int scale = 1; + int draft = 0; + if (!PyArg_ParseTuple(args, "ssz|ii", &mode, &rawmode, &jpegmode, + &scale, &draft)) + return NULL; + + if (!jpegmode) + jpegmode = ""; + + decoder = PyImaging_DecoderNew(sizeof(JPEGSTATE)); + if (decoder == NULL) + return NULL; + + if (get_unpacker(decoder, mode, rawmode) < 0) + return NULL; + + decoder->decode = ImagingJpegDecode; + + strncpy(((JPEGSTATE*)decoder->state.context)->rawmode, rawmode, 8); + strncpy(((JPEGSTATE*)decoder->state.context)->jpegmode, jpegmode, 8); + + ((JPEGSTATE*)decoder->state.context)->scale = scale; + ((JPEGSTATE*)decoder->state.context)->draft = draft; + + return (PyObject*) decoder; +} +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/display.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/display.c new file mode 100755 index 00000000000..1a08fadd56e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/display.c @@ -0,0 +1,836 @@ +/* + * The Python Imaging Library. + * + * display support (and other windows-related stuff) + * + * History: + * 1996-05-13 fl Windows DIB support + * 1996-05-21 fl Added palette stuff + * 1996-05-28 fl Added display_mode stuff + * 1997-09-21 fl Added draw primitive + * 2001-09-17 fl Added ImagingGrabScreen (from _grabscreen.c) + * 2002-05-12 fl Added ImagingListWindows + * 2002-11-19 fl Added clipboard support + * 2002-11-25 fl Added GetDC/ReleaseDC helpers + * 2003-05-21 fl Added create window support (including window callback) + * 2003-09-05 fl Added fromstring/tostring methods + * 2009-03-14 fl Added WMF support (from pilwmf) + * + * Copyright (c) 1997-2003 by Secret Labs AB. + * Copyright (c) 1996-1997 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Python.h" + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#include "Imaging.h" + +/* -------------------------------------------------------------------- */ +/* Windows DIB support */ + +#ifdef WIN32 + +#include "ImDib.h" + +typedef struct { + PyObject_HEAD + ImagingDIB dib; +} ImagingDisplayObject; + +staticforward PyTypeObject ImagingDisplayType; + +static ImagingDisplayObject* +_new(const char* mode, int xsize, int ysize) +{ + ImagingDisplayObject *display; + + display = PyObject_New(ImagingDisplayObject, &ImagingDisplayType); + if (display == NULL) + return NULL; + + display->dib = ImagingNewDIB(mode, xsize, ysize); + if (!display->dib) { + Py_DECREF(display); + return NULL; + } + + return display; +} + +static void +_delete(ImagingDisplayObject* display) +{ + if (display->dib) + ImagingDeleteDIB(display->dib); + PyObject_Del(display); +} + +static PyObject* +_expose(ImagingDisplayObject* display, PyObject* args) +{ + int hdc; + if (!PyArg_ParseTuple(args, "i", &hdc)) + return NULL; + + ImagingExposeDIB(display->dib, hdc); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_draw(ImagingDisplayObject* display, PyObject* args) +{ + int hdc; + int dst[4]; + int src[4]; + if (!PyArg_ParseTuple(args, "i(iiii)(iiii)", &hdc, + dst+0, dst+1, dst+2, dst+3, + src+0, src+1, src+2, src+3)) + return NULL; + + ImagingDrawDIB(display->dib, hdc, dst, src); + + Py_INCREF(Py_None); + return Py_None; +} + +extern Imaging PyImaging_AsImaging(PyObject *op); + +static PyObject* +_paste(ImagingDisplayObject* display, PyObject* args) +{ + Imaging im; + + PyObject* op; + int xy[4]; + xy[0] = xy[1] = xy[2] = xy[3] = 0; + if (!PyArg_ParseTuple(args, "O|(iiii)", &op, xy+0, xy+1, xy+2, xy+3)) + return NULL; + im = PyImaging_AsImaging(op); + if (!im) + return NULL; + + if (xy[2] <= xy[0]) + xy[2] = xy[0] + im->xsize; + if (xy[3] <= xy[1]) + xy[3] = xy[1] + im->ysize; + + ImagingPasteDIB(display->dib, im, xy); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_query_palette(ImagingDisplayObject* display, PyObject* args) +{ + int hdc; + int status; + + if (!PyArg_ParseTuple(args, "i", &hdc)) + return NULL; + + status = ImagingQueryPaletteDIB(display->dib, hdc); + + return Py_BuildValue("i", status); +} + +static PyObject* +_getdc(ImagingDisplayObject* display, PyObject* args) +{ + int window; + HDC dc; + + if (!PyArg_ParseTuple(args, "i", &window)) + return NULL; + + dc = GetDC((HWND) window); + if (!dc) { + PyErr_SetString(PyExc_IOError, "cannot create dc"); + return NULL; + } + + return Py_BuildValue("i", (int) dc); +} + +static PyObject* +_releasedc(ImagingDisplayObject* display, PyObject* args) +{ + int window, dc; + + if (!PyArg_ParseTuple(args, "ii", &window, &dc)) + return NULL; + + ReleaseDC((HWND) window, (HDC) dc); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_fromstring(ImagingDisplayObject* display, PyObject* args) +{ + char* ptr; + int bytes; + if (!PyArg_ParseTuple(args, "s#:fromstring", &ptr, &bytes)) + return NULL; + + if (display->dib->ysize * display->dib->linesize != bytes) { + PyErr_SetString(PyExc_ValueError, "wrong size"); + return NULL; + } + + memcpy(display->dib->bits, ptr, bytes); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_tostring(ImagingDisplayObject* display, PyObject* args) +{ + if (!PyArg_ParseTuple(args, ":tostring")) + return NULL; + + return PyString_FromStringAndSize( + display->dib->bits, display->dib->ysize * display->dib->linesize + ); +} + +static struct PyMethodDef methods[] = { + {"draw", (PyCFunction)_draw, 1}, + {"expose", (PyCFunction)_expose, 1}, + {"paste", (PyCFunction)_paste, 1}, + {"query_palette", (PyCFunction)_query_palette, 1}, + {"getdc", (PyCFunction)_getdc, 1}, + {"releasedc", (PyCFunction)_releasedc, 1}, + {"fromstring", (PyCFunction)_fromstring, 1}, + {"tostring", (PyCFunction)_tostring, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +_getattr(ImagingDisplayObject* self, char* name) +{ + PyObject* res; + + res = Py_FindMethod(methods, (PyObject*) self, name); + if (res) + return res; + PyErr_Clear(); + if (!strcmp(name, "mode")) + return Py_BuildValue("s", self->dib->mode); + if (!strcmp(name, "size")) + return Py_BuildValue("ii", self->dib->xsize, self->dib->ysize); + PyErr_SetString(PyExc_AttributeError, name); + return NULL; +} + +statichere PyTypeObject ImagingDisplayType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingDisplay", /*tp_name*/ + sizeof(ImagingDisplayObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_delete, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_hash*/ +}; + +PyObject* +PyImaging_DisplayWin32(PyObject* self, PyObject* args) +{ + ImagingDisplayObject* display; + char *mode; + int xsize, ysize; + + if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) + return NULL; + + display = _new(mode, xsize, ysize); + if (display == NULL) + return NULL; + + return (PyObject*) display; +} + +PyObject* +PyImaging_DisplayModeWin32(PyObject* self, PyObject* args) +{ + char *mode; + int size[2]; + + mode = ImagingGetModeDIB(size); + + return Py_BuildValue("s(ii)", mode, size[0], size[1]); +} + +/* -------------------------------------------------------------------- */ +/* Windows screen grabber */ + +PyObject* +PyImaging_GrabScreenWin32(PyObject* self, PyObject* args) +{ + int width, height; + HBITMAP bitmap; + BITMAPCOREHEADER core; + HDC screen, screen_copy; + PyObject* buffer; + + /* step 1: create a memory DC large enough to hold the + entire screen */ + + screen = CreateDC("DISPLAY", NULL, NULL, NULL); + screen_copy = CreateCompatibleDC(screen); + + width = GetDeviceCaps(screen, HORZRES); + height = GetDeviceCaps(screen, VERTRES); + + bitmap = CreateCompatibleBitmap(screen, width, height); + if (!bitmap) + goto error; + + if (!SelectObject(screen_copy, bitmap)) + goto error; + + /* step 2: copy bits into memory DC bitmap */ + + if (!BitBlt(screen_copy, 0, 0, width, height, screen, 0, 0, SRCCOPY)) + goto error; + + /* step 3: extract bits from bitmap */ + + buffer = PyString_FromStringAndSize(NULL, height * ((width*3 + 3) & -4)); + if (!buffer) + return NULL; + + core.bcSize = sizeof(core); + core.bcWidth = width; + core.bcHeight = height; + core.bcPlanes = 1; + core.bcBitCount = 24; + if (!GetDIBits(screen_copy, bitmap, 0, height, PyString_AS_STRING(buffer), + (BITMAPINFO*) &core, DIB_RGB_COLORS)) + goto error; + + DeleteObject(bitmap); + DeleteDC(screen_copy); + DeleteDC(screen); + + return Py_BuildValue("(ii)N", width, height, buffer); + +error: + PyErr_SetString(PyExc_IOError, "screen grab failed"); + + DeleteDC(screen_copy); + DeleteDC(screen); + + return NULL; +} + +static BOOL CALLBACK list_windows_callback(HWND hwnd, LPARAM lParam) +{ + PyObject* window_list = (PyObject*) lParam; + PyObject* item; + PyObject* title; + RECT inner, outer; + int title_size; + int status; + + /* get window title */ + title_size = GetWindowTextLength(hwnd); + if (title_size > 0) { + title = PyString_FromStringAndSize(NULL, title_size); + if (title) + GetWindowText(hwnd, PyString_AS_STRING(title), title_size+1); + } else + title = PyString_FromString(""); + if (!title) + return 0; + + /* get bounding boxes */ + GetClientRect(hwnd, &inner); + GetWindowRect(hwnd, &outer); + + item = Py_BuildValue( + "lN(iiii)(iiii)", (long) hwnd, title, + inner.left, inner.top, inner.right, inner.bottom, + outer.left, outer.top, outer.right, outer.bottom + ); + if (!item) + return 0; + + status = PyList_Append(window_list, item); + + Py_DECREF(item); + + if (status < 0) + return 0; + + return 1; +} + +PyObject* +PyImaging_ListWindowsWin32(PyObject* self, PyObject* args) +{ + PyObject* window_list; + + window_list = PyList_New(0); + if (!window_list) + return NULL; + + EnumWindows(list_windows_callback, (LPARAM) window_list); + + if (PyErr_Occurred()) { + Py_DECREF(window_list); + return NULL; + } + + return window_list; +} + +/* -------------------------------------------------------------------- */ +/* Windows clipboard grabber */ + +PyObject* +PyImaging_GrabClipboardWin32(PyObject* self, PyObject* args) +{ + int clip; + HANDLE handle; + int size; + void* data; + PyObject* result; + + int verbose = 0; /* debugging; will be removed in future versions */ + if (!PyArg_ParseTuple(args, "|i", &verbose)) + return NULL; + + + clip = OpenClipboard(NULL); + /* FIXME: check error status */ + + if (verbose) { + UINT format = EnumClipboardFormats(0); + char buffer[200]; + char* result; + while (format != 0) { + if (GetClipboardFormatName(format, buffer, sizeof buffer) > 0) + result = buffer; + else + switch (format) { + case CF_BITMAP: + result = "CF_BITMAP"; + break; + case CF_DIB: + result = "CF_DIB"; + break; + case CF_DIF: + result = "CF_DIF"; + break; + case CF_ENHMETAFILE: + result = "CF_ENHMETAFILE"; + break; + case CF_HDROP: + result = "CF_HDROP"; + break; + case CF_LOCALE: + result = "CF_LOCALE"; + break; + case CF_METAFILEPICT: + result = "CF_METAFILEPICT"; + break; + case CF_OEMTEXT: + result = "CF_OEMTEXT"; + break; + case CF_OWNERDISPLAY: + result = "CF_OWNERDISPLAY"; + break; + case CF_PALETTE: + result = "CF_PALETTE"; + break; + case CF_PENDATA: + result = "CF_PENDATA"; + break; + case CF_RIFF: + result = "CF_RIFF"; + break; + case CF_SYLK: + result = "CF_SYLK"; + break; + case CF_TEXT: + result = "CF_TEXT"; + break; + case CF_WAVE: + result = "CF_WAVE"; + break; + case CF_TIFF: + result = "CF_TIFF"; + break; + case CF_UNICODETEXT: + result = "CF_UNICODETEXT"; + break; + default: + sprintf(buffer, "[%d]", format); + result = buffer; + break; + } + printf("%s (%d)\n", result, format); + format = EnumClipboardFormats(format); + } + } + + handle = GetClipboardData(CF_DIB); + if (!handle) { + /* FIXME: add CF_HDROP support to allow cut-and-paste from + the explorer */ + CloseClipboard(); + Py_INCREF(Py_None); + return Py_None; + } + + size = GlobalSize(handle); + data = GlobalLock(handle); + +#if 0 + /* calculate proper size for string formats */ + if (format == CF_TEXT || format == CF_OEMTEXT) + size = strlen(data); + else if (format == CF_UNICODETEXT) + size = wcslen(data) * 2; +#endif + + result = PyString_FromStringAndSize(data, size); + + GlobalUnlock(handle); + + CloseClipboard(); + + return result; +} + +/* -------------------------------------------------------------------- */ +/* Windows class */ + +#ifndef WM_MOUSEWHEEL +#define WM_MOUSEWHEEL 522 +#endif + +static int mainloop = 0; + +static void +callback_error(const char* handler) +{ + PyObject* sys_stderr; + + sys_stderr = PySys_GetObject("stderr"); + + if (sys_stderr) { + PyFile_WriteString("*** ImageWin: error in ", sys_stderr); + PyFile_WriteString((char*) handler, sys_stderr); + PyFile_WriteString(":\n", sys_stderr); + } + + PyErr_Print(); + PyErr_Clear(); +} + +static LRESULT CALLBACK +windowCallback(HWND wnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + PAINTSTRUCT ps; + PyObject* callback = NULL; + PyObject* result; + PyThreadState* threadstate; + PyThreadState* current_threadstate; + HDC dc; + RECT rect; + LRESULT status = 0; + + /* set up threadstate for messages that calls back into python */ + switch (message) { + case WM_CREATE: + mainloop++; + break; + case WM_DESTROY: + mainloop--; + /* fall through... */ + case WM_PAINT: + case WM_SIZE: + callback = (PyObject*) GetWindowLong(wnd, 0); + if (callback) { + threadstate = (PyThreadState*) + GetWindowLong(wnd, sizeof(PyObject*)); + current_threadstate = PyThreadState_Swap(NULL); + PyEval_RestoreThread(threadstate); + } else + return DefWindowProc(wnd, message, wParam, lParam); + } + + /* process message */ + switch (message) { + + case WM_PAINT: + /* redraw (part of) window. this generates a WCK-style + damage/clear/repair cascade */ + BeginPaint(wnd, &ps); + dc = GetDC(wnd); + GetWindowRect(wnd, &rect); /* in screen coordinates */ + + result = PyObject_CallFunction( + callback, "siiii", "damage", + ps.rcPaint.left, ps.rcPaint.top, + ps.rcPaint.right, ps.rcPaint.bottom + ); + if (result) + Py_DECREF(result); + else + callback_error("window damage callback"); + + result = PyObject_CallFunction( + callback, "siiiii", "clear", (int) dc, + 0, 0, rect.right-rect.left, rect.bottom-rect.top + ); + if (result) + Py_DECREF(result); + else + callback_error("window clear callback"); + + result = PyObject_CallFunction( + callback, "siiiii", "repair", (int) dc, + 0, 0, rect.right-rect.left, rect.bottom-rect.top + ); + if (result) + Py_DECREF(result); + else + callback_error("window repair callback"); + + ReleaseDC(wnd, dc); + EndPaint(wnd, &ps); + break; + + case WM_SIZE: + /* resize window */ + result = PyObject_CallFunction( + callback, "sii", "resize", LOWORD(lParam), HIWORD(lParam) + ); + if (result) { + InvalidateRect(wnd, NULL, 1); + Py_DECREF(result); + } else + callback_error("window resize callback"); + break; + + case WM_DESTROY: + /* destroy window */ + result = PyObject_CallFunction(callback, "s", "destroy"); + if (result) + Py_DECREF(result); + else + callback_error("window destroy callback"); + Py_DECREF(callback); + break; + + default: + status = DefWindowProc(wnd, message, wParam, lParam); + } + + if (callback) { + /* restore thread state */ + PyEval_SaveThread(); + PyThreadState_Swap(threadstate); + } + + return status; +} + +PyObject* +PyImaging_CreateWindowWin32(PyObject* self, PyObject* args) +{ + HWND wnd; + WNDCLASS windowClass; + + char* title; + PyObject* callback; + int width = 0, height = 0; + if (!PyArg_ParseTuple(args, "sO|ii", &title, &callback, &width, &height)) + return NULL; + + if (width <= 0) + width = CW_USEDEFAULT; + if (height <= 0) + height = CW_USEDEFAULT; + + /* register toplevel window class */ + windowClass.style = CS_CLASSDC; + windowClass.cbClsExtra = 0; + windowClass.cbWndExtra = sizeof(PyObject*) + sizeof(PyThreadState*); + windowClass.hInstance = GetModuleHandle(NULL); + /* windowClass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); */ + windowClass.hbrBackground = NULL; + windowClass.lpszMenuName = NULL; + windowClass.lpszClassName = "pilWindow"; + windowClass.lpfnWndProc = windowCallback; + windowClass.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(1)); + windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); /* CROSS? */ + + RegisterClass(&windowClass); /* FIXME: check return status */ + + wnd = CreateWindowEx( + 0, windowClass.lpszClassName, title, + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, width, height, + HWND_DESKTOP, NULL, NULL, NULL + ); + + if (!wnd) { + PyErr_SetString(PyExc_IOError, "failed to create window"); + return NULL; + } + + /* register window callback */ + Py_INCREF(callback); + SetWindowLong(wnd, 0, (LONG) callback); + SetWindowLong(wnd, sizeof(callback), (LONG) PyThreadState_Get()); + + Py_BEGIN_ALLOW_THREADS + ShowWindow(wnd, SW_SHOWNORMAL); + SetForegroundWindow(wnd); /* to make sure it's visible */ + Py_END_ALLOW_THREADS + + return Py_BuildValue("l", (long) wnd); +} + +PyObject* +PyImaging_EventLoopWin32(PyObject* self, PyObject* args) +{ + MSG msg; + + Py_BEGIN_ALLOW_THREADS + while (mainloop && GetMessage(&msg, NULL, 0, 0)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + Py_END_ALLOW_THREADS + + Py_INCREF(Py_None); + return Py_None; +} + +/* -------------------------------------------------------------------- */ +/* windows WMF renderer */ + +#define GET32(p,o) ((DWORD*)(p+o))[0] + +PyObject * +PyImaging_DrawWmf(PyObject* self, PyObject* args) +{ + HBITMAP bitmap; + HENHMETAFILE meta; + BITMAPCOREHEADER core; + HDC dc; + RECT rect; + PyObject* buffer = NULL; + char* ptr; + + char* data; + int datasize; + int width, height; + int x0, y0, x1, y1; + if (!PyArg_ParseTuple(args, "s#(ii)(iiii):_load", &data, &datasize, + &width, &height, &x0, &x1, &y0, &y1)) + return NULL; + + /* step 1: copy metafile contents into METAFILE object */ + + if (datasize > 22 && GET32(data, 0) == 0x9ac6cdd7) { + + /* placeable windows metafile (22-byte aldus header) */ + meta = SetWinMetaFileBits(datasize-22, data+22, NULL, NULL); + + } else if (datasize > 80 && GET32(data, 0) == 1 && + GET32(data, 40) == 0x464d4520) { + + /* enhanced metafile */ + meta = SetEnhMetaFileBits(datasize, data); + + } else { + + /* unknown meta format */ + meta = NULL; + + } + + if (!meta) { + PyErr_SetString(PyExc_IOError, "cannot load metafile"); + return NULL; + } + + /* step 2: create bitmap */ + + core.bcSize = sizeof(core); + core.bcWidth = width; + core.bcHeight = height; + core.bcPlanes = 1; + core.bcBitCount = 24; + + dc = CreateCompatibleDC(NULL); + + bitmap = CreateDIBSection( + dc, (BITMAPINFO*) &core, DIB_RGB_COLORS, &ptr, NULL, 0 + ); + + if (!bitmap) { + PyErr_SetString(PyExc_IOError, "cannot create bitmap"); + goto error; + } + + if (!SelectObject(dc, bitmap)) { + PyErr_SetString(PyExc_IOError, "cannot select bitmap"); + goto error; + } + + /* step 3: render metafile into bitmap */ + + rect.left = rect.top = 0; + rect.right = width; + rect.bottom = height; + + /* FIXME: make background transparent? configurable? */ + FillRect(dc, &rect, GetStockObject(WHITE_BRUSH)); + + if (!PlayEnhMetaFile(dc, meta, &rect)) { + PyErr_SetString(PyExc_IOError, "cannot render metafile"); + goto error; + } + + /* step 4: extract bits from bitmap */ + + GdiFlush(); + + buffer = PyString_FromStringAndSize(ptr, height * ((width*3 + 3) & -4)); + +error: + DeleteEnhMetaFile(meta); + + if (bitmap) + DeleteObject(bitmap); + + DeleteDC(dc); + + return buffer; +} + +#endif /* WIN32 */ diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py new file mode 100755 index 00000000000..e8140ecdfdd --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py @@ -0,0 +1,1111 @@ +# Module doctest version 0.9.6 +# Released to the public domain 16-Jan-2001, +# by Tim Peters (tim.one@home.com). + +# local modifications: +# 2001-02-13 fl: minor tweaks to make it run under both 1.5.2 and 2.0 + +# Provided as-is; use at your own risk; no warranty; no promises; enjoy! + +"""Module doctest -- a framework for running examples in docstrings. + +NORMAL USAGE + +In normal use, end each module M with: + +def _test(): + import doctest, M # replace M with your module's name + return doctest.testmod(M) # ditto + +if __name__ == "__main__": + _test() + +Then running the module as a script will cause the examples in the +docstrings to get executed and verified: + +python M.py + +This won't display anything unless an example fails, in which case the +failing example(s) and the cause(s) of the failure(s) are printed to stdout +(why not stderr? because stderr is a lame hack <0.2 wink>), and the final +line of output is "Test failed.". + +Run it with the -v switch instead: + +python M.py -v + +and a detailed report of all examples tried is printed to stdout, along +with assorted summaries at the end. + +You can force verbose mode by passing "verbose=1" to testmod, or prohibit +it by passing "verbose=0". In either of those cases, sys.argv is not +examined by testmod. + +In any case, testmod returns a 2-tuple of ints (f, t), where f is the +number of docstring examples that failed and t is the total number of +docstring examples attempted. + + +WHICH DOCSTRINGS ARE EXAMINED? + ++ M.__doc__. + ++ f.__doc__ for all functions f in M.__dict__.values(), except those + with private names. + ++ C.__doc__ for all classes C in M.__dict__.values(), except those with + private names. + ++ If M.__test__ exists and "is true", it must be a dict, and + each entry maps a (string) name to a function object, class object, or + string. Function and class object docstrings found from M.__test__ + are searched even if the name is private, and strings are searched + directly as if they were docstrings. In output, a key K in M.__test__ + appears with name + .__test__.K + +Any classes found are recursively searched similarly, to test docstrings in +their contained methods and nested classes. Private names reached from M's +globals are skipped, but all names reached from M.__test__ are searched. + +By default, a name is considered to be private if it begins with an +underscore (like "_my_func") but doesn't both begin and end with (at least) +two underscores (like "__init__"). You can change the default by passing +your own "isprivate" function to testmod. + +If you want to test docstrings in objects with private names too, stuff +them into an M.__test__ dict, or see ADVANCED USAGE below (e.g., pass your +own isprivate function to Tester's constructor, or call the rundoc method +of a Tester instance). + +Warning: imports can cause trouble; e.g., if you do + +from XYZ import XYZclass + +then XYZclass is a name in M.__dict__ too, and doctest has no way to know +that XYZclass wasn't *defined* in M. So it may try to execute the examples +in XYZclass's docstring, and those in turn may require a different set of +globals to work correctly. I prefer to do "import *"- friendly imports, +a la + +import XYY +_XYZclass = XYZ.XYZclass +del XYZ + +or (Python 2.0) + +from XYZ import XYZclass as _XYZclass + +and then the leading underscore stops testmod from going nuts. You may +prefer the method in the next section. + + +WHAT'S THE EXECUTION CONTEXT? + +By default, each time testmod finds a docstring to test, it uses a *copy* +of M's globals (so that running tests on a module doesn't change the +module's real globals, and so that one test in M can't leave behind crumbs +that accidentally allow another test to work). This means examples can +freely use any names defined at top-level in M. It also means that sloppy +imports (see above) can cause examples in external docstrings to use +globals inappropriate for them. + +You can force use of your own dict as the execution context by passing +"globs=your_dict" to testmod instead. Presumably this would be a copy of +M.__dict__ merged with the globals from other imported modules. + + +WHAT IF I WANT TO TEST A WHOLE PACKAGE? + +Piece o' cake, provided the modules do their testing from docstrings. +Here's the test.py I use for the world's most elaborate Rational/ +floating-base-conversion pkg (which I'll distribute some day): + +from Rational import Cvt +from Rational import Format +from Rational import machprec +from Rational import Rat +from Rational import Round +from Rational import utils + +modules = (Cvt, + Format, + machprec, + Rat, + Round, + utils) + +def _test(): + import doctest + import sys + verbose = "-v" in sys.argv + for mod in modules: + doctest.testmod(mod, verbose=verbose, report=0) + doctest.master.summarize() + +if __name__ == "__main__": + _test() + +IOW, it just runs testmod on all the pkg modules. testmod remembers the +names and outcomes (# of failures, # of tries) for each item it's seen, and +passing "report=0" prevents it from printing a summary in verbose mode. +Instead, the summary is delayed until all modules have been tested, and +then "doctest.master.summarize()" forces the summary at the end. + +So this is very nice in practice: each module can be tested individually +with almost no work beyond writing up docstring examples, and collections +of modules can be tested too as a unit with no more work than the above. + + +WHAT ABOUT EXCEPTIONS? + +No problem, as long as the only output generated by the example is the +traceback itself. For example: + + >>> a = [None] + >>> a[1] + Traceback (innermost last): + File "", line 1, in ? + IndexError: list index out of range + >>> + +Note that only the exception type and value are compared (specifically, +only the last line in the traceback). + + +ADVANCED USAGE + +doctest.testmod() captures the testing policy I find most useful most +often. You may want other policies. + +testmod() actually creates a local instance of class doctest.Tester, runs +appropriate methods of that class, and merges the results into global +Tester instance doctest.master. + +You can create your own instances of doctest.Tester, and so build your own +policies, or even run methods of doctest.master directly. See +doctest.Tester.__doc__ for details. + + +SO WHAT DOES A DOCSTRING EXAMPLE LOOK LIKE ALREADY!? + +Oh ya. It's easy! In most cases a copy-and-paste of an interactive +console session works fine -- just make sure the leading whitespace is +rigidly consistent (you can mix tabs and spaces if you're too lazy to do it +right, but doctest is not in the business of guessing what you think a tab +means). + + >>> # comments are ignored + >>> x = 12 + >>> x + 12 + >>> if x == 13: + ... print "yes" + ... else: + ... print "no" + ... print "NO" + ... print "NO!!!" + ... + no + NO + NO!!! + >>> + +Any expected output must immediately follow the final ">>>" or "..." line +containing the code, and the expected output (if any) extends to the next +">>>" or all-whitespace line. That's it. + +Bummers: + ++ Expected output cannot contain an all-whitespace line, since such a line + is taken to signal the end of expected output. + ++ Output to stdout is captured, but not output to stderr (exception + tracebacks are captured via a different means). + ++ If you continue a line via backslashing in an interactive session, or for + any other reason use a backslash, you need to double the backslash in the + docstring version. This is simply because you're in a string, and so the + backslash must be escaped for it to survive intact. Like: + +>>> if "yes" == \\ +... "y" + \\ +... "es": # in the source code you'll see the doubled backslashes +... print 'yes' +yes + +The starting column doesn't matter: + +>>> assert "Easy!" + >>> import math + >>> math.floor(1.9) + 1.0 + +and as many leading whitespace characters are stripped from the expected +output as appeared in the initial ">>>" line that triggered it. + +If you execute this very file, the examples above will be found and +executed, leading to this output in verbose mode: + +Running doctest.__doc__ +Trying: a = [None] +Expecting: nothing +ok +Trying: a[1] +Expecting: +Traceback (innermost last): + File "", line 1, in ? +IndexError: list index out of range +ok +Trying: x = 12 +Expecting: nothing +ok +Trying: x +Expecting: 12 +ok +Trying: +if x == 13: + print "yes" +else: + print "no" + print "NO" + print "NO!!!" +Expecting: +no +NO +NO!!! +ok +... and a bunch more like that, with this summary at the end: + +5 items had no tests: + doctest.Tester.__init__ + doctest.Tester.run__test__ + doctest.Tester.summarize + doctest.run_docstring_examples + doctest.testmod +12 items passed all tests: + 9 tests in doctest + 6 tests in doctest.Tester + 10 tests in doctest.Tester.merge + 7 tests in doctest.Tester.rundict + 3 tests in doctest.Tester.rundoc + 3 tests in doctest.Tester.runstring + 2 tests in doctest.__test__._TestClass + 2 tests in doctest.__test__._TestClass.__init__ + 2 tests in doctest.__test__._TestClass.get + 1 tests in doctest.__test__._TestClass.square + 2 tests in doctest.__test__.string + 7 tests in doctest.is_private +54 tests in 17 items. +54 passed and 0 failed. +Test passed. +""" + +# 0,0,1 06-Mar-1999 +# initial version posted +# 0,0,2 06-Mar-1999 +# loosened parsing: +# cater to stinkin' tabs +# don't insist on a blank after PS2 prefix +# so trailing "... " line from a compound stmt no longer +# breaks if the file gets whitespace-trimmed +# better error msgs for inconsistent leading whitespace +# 0,9,1 08-Mar-1999 +# exposed the Tester class and added client methods +# plus docstring examples of their use (eww - head-twisting!) +# fixed logic error in reporting total # of tests & failures +# added __test__ support to testmod (a pale reflection of Christian +# Tismer's vision ...) +# removed the "deep" argument; fiddle __test__ instead +# simplified endcase logic for extracting tests, and running them. +# before, if no output was expected but some was produced +# anyway via an eval'ed result, the discrepancy wasn't caught +# made TestClass private and used __test__ to get at it +# many doc updates +# speed _SpoofOut for long expected outputs +# 0,9,2 09-Mar-1999 +# throw out comments from examples, enabling use of the much simpler +# exec compile(... "single") ... +# for simulating the runtime; that barfs on comment-only lines +# used the traceback module to do a much better job of reporting +# exceptions +# run __doc__ values thru str(), "just in case" +# privateness of names now determined by an overridable "isprivate" +# function +# by default a name now considered to be private iff it begins with +# an underscore but doesn't both begin & end with two of 'em; so +# e.g. Class.__init__ etc are searched now -- as they always +# should have been +# 0,9,3 18-Mar-1999 +# added .flush stub to _SpoofOut (JPython buglet diagnosed by +# Hugh Emberson) +# repaired ridiculous docs about backslashes in examples +# minor internal changes +# changed source to Unix line-end conventions +# moved __test__ logic into new Tester.run__test__ method +# 0,9,4 27-Mar-1999 +# report item name and line # in failing examples +# 0,9,5 29-Jun-1999 +# allow straightforward exceptions in examples - thanks to Mark Hammond! +# 0,9,6 16-Jan-2001 +# fiddling for changes in Python 2.0: some of the embedded docstring +# examples no longer worked *exactly* as advertised, due to minor +# language changes, and running doctest on itself pointed that out. +# Hard to think of a better example of why this is useful . + +__version__ = 0, 9, 6 + +import types +_FunctionType = types.FunctionType +_ClassType = types.ClassType +_ModuleType = types.ModuleType +_StringType = types.StringType +del types + +import string +_string_find = string.find +_string_join = string.join +_string_split = string.split +_string_rindex = string.rindex +del string + +import re +PS1 = ">>>" +PS2 = "..." +_isPS1 = re.compile(r"(\s*)" + re.escape(PS1)).match +_isPS2 = re.compile(r"(\s*)" + re.escape(PS2)).match +_isEmpty = re.compile(r"\s*$").match +_isComment = re.compile(r"\s*#").match +del re + +__all__ = [] + +# Extract interactive examples from a string. Return a list of triples, +# (source, outcome, lineno). "source" is the source code, and ends +# with a newline iff the source spans more than one line. "outcome" is +# the expected output if any, else an empty string. When not empty, +# outcome always ends with a newline. "lineno" is the line number, +# 0-based wrt the start of the string, of the first source line. + +def _extract_examples(s): + isPS1, isPS2 = _isPS1, _isPS2 + isEmpty, isComment = _isEmpty, _isComment + examples = [] + lines = _string_split(s, "\n") + i, n = 0, len(lines) + while i < n: + line = lines[i] + i = i + 1 + m = isPS1(line) + if m is None: + continue + j = m.end(0) # beyond the prompt + if isEmpty(line, j) or isComment(line, j): + # a bare prompt or comment -- not interesting + continue + lineno = i - 1 + if line[j] != " ": + raise ValueError("line " + `lineno` + " of docstring lacks " + "blank after " + PS1 + ": " + line) + j = j + 1 + blanks = m.group(1) + nblanks = len(blanks) + # suck up this and following PS2 lines + source = [] + while 1: + source.append(line[j:]) + line = lines[i] + m = isPS2(line) + if m: + if m.group(1) != blanks: + raise ValueError("inconsistent leading whitespace " + "in line " + `i` + " of docstring: " + line) + i = i + 1 + else: + break + if len(source) == 1: + source = source[0] + else: + # get rid of useless null line from trailing empty "..." + if source[-1] == "": + del source[-1] + source = _string_join(source, "\n") + "\n" + # suck up response + if isPS1(line) or isEmpty(line): + expect = "" + else: + expect = [] + while 1: + if line[:nblanks] != blanks: + raise ValueError("inconsistent leading whitespace " + "in line " + `i` + " of docstring: " + line) + expect.append(line[nblanks:]) + i = i + 1 + line = lines[i] + if isPS1(line) or isEmpty(line): + break + expect = _string_join(expect, "\n") + "\n" + examples.append( (source, expect, lineno) ) + return examples + +# Capture stdout when running examples. + +class _SpoofOut: + def __init__(self): + self.clear() + def write(self, s): + self.buf.append(s) + def get(self): + return _string_join(self.buf, "") + def clear(self): + self.buf = [] + def flush(self): + # JPython calls flush + pass + +# Display some tag-and-msg pairs nicely, keeping the tag and its msg +# on the same line when that makes sense. + +def _tag_out(printer, *tag_msg_pairs): + for tag, msg in tag_msg_pairs: + printer(tag + ":") + msg_has_nl = msg[-1:] == "\n" + msg_has_two_nl = msg_has_nl and \ + _string_find(msg, "\n") < len(msg) - 1 + if len(tag) + len(msg) < 76 and not msg_has_two_nl: + printer(" ") + else: + printer("\n") + printer(msg) + if not msg_has_nl: + printer("\n") + +# Run list of examples, in context globs. "out" can be used to display +# stuff to "the real" stdout, and fakeout is an instance of _SpoofOut +# that captures the examples' std output. Return (#failures, #tries). + +def _run_examples_inner(out, fakeout, examples, globs, verbose, name): + import sys, traceback + OK, BOOM, FAIL = range(3) + NADA = "nothing" + stderr = _SpoofOut() + failures = 0 + for source, want, lineno in examples: + if verbose: + _tag_out(out, ("Trying", source), + ("Expecting", want or NADA)) + fakeout.clear() + try: + exec compile(source, "", "single") in globs + got = fakeout.get() + state = OK + except: + # See whether the exception was expected. + if _string_find(want, "Traceback (innermost last):\n") == 0 or\ + _string_find(want, "Traceback (most recent call last):\n") == 0: + # Only compare exception type and value - the rest of + # the traceback isn't necessary. + want = _string_split(want, '\n')[-2] + '\n' + exc_type, exc_val, exc_tb = sys.exc_info() + got = traceback.format_exception_only(exc_type, exc_val)[0] + state = OK + else: + # unexpected exception + stderr.clear() + traceback.print_exc(file=stderr) + state = BOOM + + if state == OK: + if got == want: + if verbose: + out("ok\n") + continue + state = FAIL + + assert state in (FAIL, BOOM) + failures = failures + 1 + out("*" * 65 + "\n") + _tag_out(out, ("Failure in example", source)) + out("from line #" + `lineno` + " of " + name + "\n") + if state == FAIL: + _tag_out(out, ("Expected", want or NADA), ("Got", got)) + else: + assert state == BOOM + _tag_out(out, ("Exception raised", stderr.get())) + + return failures, len(examples) + +# Run list of examples, in context globs. Return (#failures, #tries). + +def _run_examples(examples, globs, verbose, name): + import sys + saveout = sys.stdout + try: + sys.stdout = fakeout = _SpoofOut() + x = _run_examples_inner(saveout.write, fakeout, examples, + globs, verbose, name) + finally: + sys.stdout = saveout + return x + +def run_docstring_examples(f, globs, verbose=0, name="NoName"): + """f, globs, verbose=0, name="NoName" -> run examples from f.__doc__. + + Use dict globs as the globals for execution. + Return (#failures, #tries). + + If optional arg verbose is true, print stuff even if there are no + failures. + Use string name in failure msgs. + """ + + try: + doc = f.__doc__ + if not doc: + # docstring empty or None + return 0, 0 + # just in case CT invents a doc object that has to be forced + # to look like a string <0.9 wink> + doc = str(doc) + except: + return 0, 0 + + e = _extract_examples(doc) + if not e: + return 0, 0 + return _run_examples(e, globs, verbose, name) + +def is_private(prefix, base): + """prefix, base -> true iff name prefix + "." + base is "private". + + Prefix may be an empty string, and base does not contain a period. + Prefix is ignored (although functions you write conforming to this + protocol may make use of it). + Return true iff base begins with an (at least one) underscore, but + does not both begin and end with (at least) two underscores. + + >>> is_private("a.b", "my_func") + 0 + >>> is_private("____", "_my_func") + 1 + >>> is_private("someclass", "__init__") + 0 + >>> is_private("sometypo", "__init_") + 1 + >>> is_private("x.y.z", "_") + 1 + >>> is_private("_x.y.z", "__") + 0 + >>> is_private("", "") # senseless but consistent + 0 + """ + + return base[:1] == "_" and not base[:2] == "__" == base[-2:] + +class Tester: + """Class Tester -- runs docstring examples and accumulates stats. + +In normal use, function doctest.testmod() hides all this from you, +so use that if you can. Create your own instances of Tester to do +fancier things. + +Methods: + runstring(s, name) + Search string s for examples to run; use name for logging. + Return (#failures, #tries). + + rundoc(object, name=None) + Search object.__doc__ for examples to run; use name (or + object.__name__) for logging. Return (#failures, #tries). + + rundict(d, name) + Search for examples in docstrings in all of d.values(); use name + for logging. Return (#failures, #tries). + + run__test__(d, name) + Treat dict d like module.__test__. Return (#failures, #tries). + + summarize(verbose=None) + Display summary of testing results, to stdout. Return + (#failures, #tries). + + merge(other) + Merge in the test results from Tester instance "other". + +>>> from doctest import Tester +>>> t = Tester(globs={'x': 42}, verbose=0) +>>> t.runstring(r''' +... >>> x = x * 2 +... >>> print x +... 42 +... ''', 'XYZ') +***************************************************************** +Failure in example: print x +from line #2 of XYZ +Expected: 42 +Got: 84 +(1, 2) +>>> t.runstring(">>> x = x * 2\\n>>> print x\\n84\\n", 'example2') +(0, 2) +>>> t.summarize() +1 items had failures: + 1 of 2 in XYZ +***Test Failed*** 1 failures. +(1, 4) +>>> t.summarize(verbose=1) +1 items passed all tests: + 2 tests in example2 +1 items had failures: + 1 of 2 in XYZ +4 tests in 2 items. +3 passed and 1 failed. +***Test Failed*** 1 failures. +(1, 4) +>>> +""" + + def __init__(self, mod=None, globs=None, verbose=None, + isprivate=None): + """mod=None, globs=None, verbose=None, isprivate=None + +See doctest.__doc__ for an overview. + +Optional keyword arg "mod" is a module, whose globals are used for +executing examples. If not specified, globs must be specified. + +Optional keyword arg "globs" gives a dict to be used as the globals +when executing examples; if not specified, use the globals from +module mod. + +In either case, a copy of the dict is used for each docstring +examined. + +Optional keyword arg "verbose" prints lots of stuff if true, only +failures if false; by default, it's true iff "-v" is in sys.argv. + +Optional keyword arg "isprivate" specifies a function used to determine +whether a name is private. The default function is doctest.is_private; +see its docs for details. +""" + + if mod is None and globs is None: + raise TypeError("Tester.__init__: must specify mod or globs") + if mod is not None and type(mod) is not _ModuleType: + raise TypeError("Tester.__init__: mod must be a module; " + + `mod`) + if globs is None: + globs = mod.__dict__ + self.globs = globs + + if verbose is None: + import sys + verbose = "-v" in sys.argv + self.verbose = verbose + + if isprivate is None: + isprivate = is_private + self.isprivate = isprivate + + self.name2ft = {} # map name to (#failures, #trials) pair + + def runstring(self, s, name): + """ + s, name -> search string s for examples to run, logging as name. + + Use string name as the key for logging the outcome. + Return (#failures, #examples). + + >>> t = Tester(globs={}, verbose=1) + >>> test = r''' + ... # just an example + ... >>> x = 1 + 2 + ... >>> x + ... 3 + ... ''' + >>> t.runstring(test, "Example") + Running string Example + Trying: x = 1 + 2 + Expecting: nothing + ok + Trying: x + Expecting: 3 + ok + 0 of 2 examples failed in string Example + (0, 2) + """ + + if self.verbose: + print "Running string", name + f = t = 0 + e = _extract_examples(s) + if e: + f, t = _run_examples(e, self.globs.copy(), self.verbose, name) + if self.verbose: + print f, "of", t, "examples failed in string", name + self.__record_outcome(name, f, t) + return f, t + + def rundoc(self, object, name=None): + """ + object, name=None -> search object.__doc__ for examples to run. + + Use optional string name as the key for logging the outcome; + by default use object.__name__. + Return (#failures, #examples). + If object is a class object, search recursively for method + docstrings too. + object.__doc__ is examined regardless of name, but if object is + a class, whether private names reached from object are searched + depends on the constructor's "isprivate" argument. + + >>> t = Tester(globs={}, verbose=0) + >>> def _f(): + ... '''Trivial docstring example. + ... >>> assert 2 == 2 + ... ''' + ... return 32 + ... + >>> t.rundoc(_f) # expect 0 failures in 1 example + (0, 1) + """ + + if name is None: + try: + name = object.__name__ + except AttributeError: + raise ValueError("Tester.rundoc: name must be given " + "when object.__name__ doesn't exist; " + `object`) + if self.verbose: + print "Running", name + ".__doc__" + f, t = run_docstring_examples(object, self.globs.copy(), + self.verbose, name) + if self.verbose: + print f, "of", t, "examples failed in", name + ".__doc__" + self.__record_outcome(name, f, t) + if type(object) is _ClassType: + f2, t2 = self.rundict(object.__dict__, name) + f = f + f2 + t = t + t2 + return f, t + + def rundict(self, d, name): + """ + d. name -> search for docstring examples in all of d.values(). + + For k, v in d.items() such that v is a function or class, + do self.rundoc(v, name + "." + k). Whether this includes + objects with private names depends on the constructor's + "isprivate" argument. + Return aggregate (#failures, #examples). + + >>> def _f(): + ... '''>>> assert 1 == 1 + ... ''' + >>> def g(): + ... '''>>> assert 2 != 1 + ... ''' + >>> d = {"_f": _f, "g": g} + >>> t = Tester(globs={}, verbose=0) + >>> t.rundict(d, "rundict_test") # _f is skipped + (0, 1) + >>> t = Tester(globs={}, verbose=0, isprivate=lambda x,y: 0) + >>> t.rundict(d, "rundict_test_pvt") # both are searched + (0, 2) + """ + + if not hasattr(d, "items"): + raise TypeError("Tester.rundict: d must support .items(); " + + `d`) + f = t = 0 + for thisname, value in d.items(): + if type(value) in (_FunctionType, _ClassType): + f2, t2 = self.__runone(value, name + "." + thisname) + f = f + f2 + t = t + t2 + return f, t + + def run__test__(self, d, name): + """d, name -> Treat dict d like module.__test__. + + Return (#failures, #tries). + See testmod.__doc__ for details. + """ + + failures = tries = 0 + prefix = name + "." + savepvt = self.isprivate + try: + self.isprivate = lambda *args: 0 + for k, v in d.items(): + thisname = prefix + k + if type(v) is _StringType: + f, t = self.runstring(v, thisname) + elif type(v) in (_FunctionType, _ClassType): + f, t = self.rundoc(v, thisname) + else: + raise TypeError("Tester.run__test__: values in " + "dict must be strings, functions " + "or classes; " + `v`) + failures = failures + f + tries = tries + t + finally: + self.isprivate = savepvt + return failures, tries + + def summarize(self, verbose=None): + """ + verbose=None -> summarize results, return (#failures, #tests). + + Print summary of test results to stdout. + Optional arg 'verbose' controls how wordy this is. By + default, use the verbose setting established by the + constructor. + """ + + if verbose is None: + verbose = self.verbose + notests = [] + passed = [] + failed = [] + totalt = totalf = 0 + for x in self.name2ft.items(): + name, (f, t) = x + assert f <= t + totalt = totalt + t + totalf = totalf + f + if t == 0: + notests.append(name) + elif f == 0: + passed.append( (name, t) ) + else: + failed.append(x) + if verbose: + if notests: + print len(notests), "items had no tests:" + notests.sort() + for thing in notests: + print " ", thing + if passed: + print len(passed), "items passed all tests:" + passed.sort() + for thing, count in passed: + print " %3d tests in %s" % (count, thing) + if failed: + print len(failed), "items had failures:" + failed.sort() + for thing, (f, t) in failed: + print " %3d of %3d in %s" % (f, t, thing) + if verbose: + print totalt, "tests in", len(self.name2ft), "items." + print totalt - totalf, "passed and", totalf, "failed." + if totalf: + print "***Test Failed***", totalf, "failures." + elif verbose: + print "Test passed." + return totalf, totalt + + def merge(self, other): + """ + other -> merge in test results from the other Tester instance. + + If self and other both have a test result for something + with the same name, the (#failures, #tests) results are + summed, and a warning is printed to stdout. + + >>> from doctest import Tester + >>> t1 = Tester(globs={}, verbose=0) + >>> t1.runstring(''' + ... >>> x = 12 + ... >>> print x + ... 12 + ... ''', "t1example") + (0, 2) + >>> + >>> t2 = Tester(globs={}, verbose=0) + >>> t2.runstring(''' + ... >>> x = 13 + ... >>> print x + ... 13 + ... ''', "t2example") + (0, 2) + >>> common = ">>> assert 1 + 2 == 3\\n" + >>> t1.runstring(common, "common") + (0, 1) + >>> t2.runstring(common, "common") + (0, 1) + >>> t1.merge(t2) + *** Tester.merge: 'common' in both testers; summing outcomes. + >>> t1.summarize(1) + 3 items passed all tests: + 2 tests in common + 2 tests in t1example + 2 tests in t2example + 6 tests in 3 items. + 6 passed and 0 failed. + Test passed. + (0, 6) + >>> + """ + + d = self.name2ft + for name, (f, t) in other.name2ft.items(): + if d.has_key(name): + print "*** Tester.merge: '" + name + "' in both" \ + " testers; summing outcomes." + f2, t2 = d[name] + f = f + f2 + t = t + t2 + d[name] = f, t + + def __record_outcome(self, name, f, t): + if self.name2ft.has_key(name): + print "*** Warning: '" + name + "' was tested before;", \ + "summing outcomes." + f2, t2 = self.name2ft[name] + f = f + f2 + t = t + t2 + self.name2ft[name] = f, t + + def __runone(self, target, name): + if "." in name: + i = _string_rindex(name, ".") + prefix, base = name[:i], name[i+1:] + else: + prefix, base = "", base + if self.isprivate(prefix, base): + return 0, 0 + return self.rundoc(target, name) + +master = None + +def testmod(m, name=None, globs=None, verbose=None, isprivate=None, + report=1): + """m, name=None, globs=None, verbose=None, isprivate=None, report=1 + + Test examples in docstrings in functions and classes reachable from + module m, starting with m.__doc__. Private names are skipped. + + Also test examples reachable from dict m.__test__ if it exists and is + not None. m.__dict__ maps names to functions, classes and strings; + function and class docstrings are tested even if the name is private; + strings are tested directly, as if they were docstrings. + + Return (#failures, #tests). + + See doctest.__doc__ for an overview. + + Optional keyword arg "name" gives the name of the module; by default + use m.__name__. + + Optional keyword arg "globs" gives a dict to be used as the globals + when executing examples; by default, use m.__dict__. A copy of this + dict is actually used for each docstring, so that each docstring's + examples start with a clean slate. + + Optional keyword arg "verbose" prints lots of stuff if true, prints + only failures if false; by default, it's true iff "-v" is in sys.argv. + + Optional keyword arg "isprivate" specifies a function used to + determine whether a name is private. The default function is + doctest.is_private; see its docs for details. + + Optional keyword arg "report" prints a summary at the end when true, + else prints nothing at the end. In verbose mode, the summary is + detailed, else very brief (in fact, empty if all tests passed). + + Advanced tomfoolery: testmod runs methods of a local instance of + class doctest.Tester, then merges the results into (or creates) + global Tester instance doctest.master. Methods of doctest.master + can be called directly too, if you want to do something unusual. + Passing report=0 to testmod is especially useful then, to delay + displaying a summary. Invoke doctest.master.summarize(verbose) + when you're done fiddling. + """ + + global master + + if type(m) is not _ModuleType: + raise TypeError("testmod: module required; " + `m`) + if name is None: + name = m.__name__ + tester = Tester(m, globs=globs, verbose=verbose, isprivate=isprivate) + failures, tries = tester.rundoc(m, name) + f, t = tester.rundict(m.__dict__, name) + failures = failures + f + tries = tries + t + if hasattr(m, "__test__"): + testdict = m.__test__ + if testdict: + if not hasattr(testdict, "items"): + raise TypeError("testmod: module.__test__ must support " + ".items(); " + `testdict`) + f, t = tester.run__test__(testdict, name + ".__test__") + failures = failures + f + tries = tries + t + if report: + tester.summarize() + if master is None: + master = tester + else: + master.merge(tester) + return failures, tries + +class _TestClass: + """ + A pointless class, for sanity-checking of docstring testing. + + Methods: + square() + get() + + >>> _TestClass(13).get() + _TestClass(-12).get() + 1 + >>> hex(_TestClass(13).square().get()) + '0xa9' + """ + + def __init__(self, val): + """val -> _TestClass object with associated value val. + + >>> t = _TestClass(123) + >>> print t.get() + 123 + """ + + self.val = val + + def square(self): + """square() -> square TestClass's associated value + + >>> _TestClass(13).square().get() + 169 + """ + + self.val = self.val ** 2 + return self + + def get(self): + """get() -> return TestClass's associated value. + + >>> x = _TestClass(-42) + >>> print x.get() + -42 + """ + + return self.val + +__test__ = {"_TestClass": _TestClass, + "string": r""" + Example of a string object, searched as-is. + >>> x = 1; y = 2 + >>> x + y, x * y + (3, 2) + """ + } + +def _test(): + import doctest + return doctest.testmod(doctest) + +if __name__ == "__main__": + _test() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c new file mode 100755 index 00000000000..2ae13ad7281 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c @@ -0,0 +1,540 @@ +/* + * The Python Imaging Library. + * + * standard encoder interfaces for the Imaging library + * + * History: + * 1996-04-19 fl Based on decoders.c + * 1996-05-12 fl Compile cleanly as C++ + * 1996-12-30 fl Plugged potential memory leak for tiled images + * 1997-01-03 fl Added GIF encoder + * 1997-01-05 fl Plugged encoder buffer leaks + * 1997-01-11 fl Added encode_to_file method + * 1998-03-09 fl Added mode/rawmode argument to encoders + * 1998-07-09 fl Added interlace argument to GIF encoder + * 1999-02-07 fl Added PCX encoder + * + * Copyright (c) 1997-2001 by Secret Labs AB + * Copyright (c) 1996-1997 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + +/* FIXME: make these pluggable! */ + +#include "Python.h" + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#include "Imaging.h" +#include "Gif.h" + +#ifdef HAVE_UNISTD_H +#include /* write */ +#endif + +/* -------------------------------------------------------------------- */ +/* Common */ +/* -------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + int (*encode)(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); + struct ImagingCodecStateInstance state; + Imaging im; + PyObject* lock; +} ImagingEncoderObject; + +staticforward PyTypeObject ImagingEncoderType; + +static ImagingEncoderObject* +PyImaging_EncoderNew(int contextsize) +{ + ImagingEncoderObject *encoder; + void *context; + + ImagingEncoderType.ob_type = &PyType_Type; + + encoder = PyObject_New(ImagingEncoderObject, &ImagingEncoderType); + if (encoder == NULL) + return NULL; + + /* Clear the encoder state */ + memset(&encoder->state, 0, sizeof(encoder->state)); + + /* Allocate encoder context */ + if (contextsize > 0) { + context = (void*) calloc(1, contextsize); + if (!context) { + Py_DECREF(encoder); + (void) PyErr_NoMemory(); + return NULL; + } + } else + context = 0; + + /* Initialize encoder context */ + encoder->state.context = context; + + /* Target image */ + encoder->lock = NULL; + encoder->im = NULL; + + return encoder; +} + +static void +_dealloc(ImagingEncoderObject* encoder) +{ + free(encoder->state.buffer); + free(encoder->state.context); + Py_XDECREF(encoder->lock); + PyObject_Del(encoder); +} + +static PyObject* +_encode(ImagingEncoderObject* encoder, PyObject* args) +{ + PyObject* buf; + PyObject* result; + int status; + + /* Encode to a Python string (allocated by this method) */ + + int bufsize = 16384; + + if (!PyArg_ParseTuple(args, "|i", &bufsize)) + return NULL; + + buf = PyString_FromStringAndSize(NULL, bufsize); + if (!buf) + return NULL; + + status = encoder->encode(encoder->im, &encoder->state, + (UINT8*) PyString_AsString(buf), bufsize); + + /* adjust string length to avoid slicing in encoder */ + if (_PyString_Resize(&buf, (status > 0) ? status : 0) < 0) + return NULL; + + result = Py_BuildValue("iiO", status, encoder->state.errcode, buf); + + Py_DECREF(buf); /* must release buffer!!! */ + + return result; +} + +static PyObject* +_encode_to_file(ImagingEncoderObject* encoder, PyObject* args) +{ + UINT8* buf; + int status; + ImagingSectionCookie cookie; + + /* Encode to a file handle */ + + int fh; + int bufsize = 16384; + + if (!PyArg_ParseTuple(args, "i|i", &fh, &bufsize)) + return NULL; + + /* Allocate an encoder buffer */ + buf = (UINT8*) malloc(bufsize); + if (!buf) + return PyErr_NoMemory(); + + ImagingSectionEnter(&cookie); + + do { + + /* This replaces the inner loop in the ImageFile _save + function. */ + + status = encoder->encode(encoder->im, &encoder->state, buf, bufsize); + + if (status > 0) + if (write(fh, buf, status) < 0) { + ImagingSectionLeave(&cookie); + free(buf); + return PyErr_SetFromErrno(PyExc_IOError); + } + + } while (encoder->state.errcode == 0); + + ImagingSectionLeave(&cookie); + + free(buf); + + return Py_BuildValue("i", encoder->state.errcode); +} + +extern Imaging PyImaging_AsImaging(PyObject *op); + +static PyObject* +_setimage(ImagingEncoderObject* encoder, PyObject* args) +{ + PyObject* op; + Imaging im; + ImagingCodecState state; + int x0, y0, x1, y1; + + /* Define where image data should be stored */ + + x0 = y0 = x1 = y1 = 0; + + /* FIXME: should publish the ImagingType descriptor */ + if (!PyArg_ParseTuple(args, "O|(iiii)", &op, &x0, &y0, &x1, &y1)) + return NULL; + im = PyImaging_AsImaging(op); + if (!im) + return NULL; + + encoder->im = im; + + state = &encoder->state; + + if (x0 == 0 && x1 == 0) { + state->xsize = im->xsize; + state->ysize = im->ysize; + } else { + state->xoff = x0; + state->yoff = y0; + state->xsize = x1 - x0; + state->ysize = y1 - y0; + } + + if (state->xsize <= 0 || + state->xsize + state->xoff > im->xsize || + state->ysize <= 0 || + state->ysize + state->yoff > im->ysize) { + PyErr_SetString(PyExc_SystemError, "tile cannot extend outside image"); + return NULL; + } + + /* Allocate memory buffer (if bits field is set) */ + if (state->bits > 0) { + state->bytes = (state->bits * state->xsize+7)/8; + state->buffer = (UINT8*) malloc(state->bytes); + if (!state->buffer) + return PyErr_NoMemory(); + } + + /* Keep a reference to the image object, to make sure it doesn't + go away before we do */ + Py_INCREF(op); + Py_XDECREF(encoder->lock); + encoder->lock = op; + + Py_INCREF(Py_None); + return Py_None; +} + +static struct PyMethodDef methods[] = { + {"encode", (PyCFunction)_encode, 1}, + {"encode_to_file", (PyCFunction)_encode_to_file, 1}, + {"setimage", (PyCFunction)_setimage, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +_getattr(ImagingEncoderObject* self, char* name) +{ + return Py_FindMethod(methods, (PyObject*) self, name); +} + +statichere PyTypeObject ImagingEncoderType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingEncoder", /*tp_name*/ + sizeof(ImagingEncoderObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_hash*/ +}; + +/* -------------------------------------------------------------------- */ + +int +get_packer(ImagingEncoderObject* encoder, const char* mode, + const char* rawmode) +{ + int bits; + ImagingShuffler pack; + + pack = ImagingFindPacker(mode, rawmode, &bits); + if (!pack) { + Py_DECREF(encoder); + PyErr_SetString(PyExc_SystemError, "unknown raw mode"); + return -1; + } + + encoder->state.shuffle = pack; + encoder->state.bits = bits; + + return 0; +} + + +/* -------------------------------------------------------------------- */ +/* EPS */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_EpsEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + encoder = PyImaging_EncoderNew(0); + if (encoder == NULL) + return NULL; + + encoder->encode = ImagingEpsEncode; + + return (PyObject*) encoder; +} + + +/* -------------------------------------------------------------------- */ +/* GIF */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_GifEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + char *mode; + char *rawmode; + int bits = 8; + int interlace = 0; + if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &bits, &interlace)) + return NULL; + + encoder = PyImaging_EncoderNew(sizeof(GIFENCODERSTATE)); + if (encoder == NULL) + return NULL; + + if (get_packer(encoder, mode, rawmode) < 0) + return NULL; + + encoder->encode = ImagingGifEncode; + + ((GIFENCODERSTATE*)encoder->state.context)->bits = bits; + ((GIFENCODERSTATE*)encoder->state.context)->interlace = interlace; + + return (PyObject*) encoder; +} + + +/* -------------------------------------------------------------------- */ +/* PCX */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_PcxEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + char *mode; + char *rawmode; + int bits = 8; + if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &bits)) + return NULL; + + encoder = PyImaging_EncoderNew(0); + if (encoder == NULL) + return NULL; + + if (get_packer(encoder, mode, rawmode) < 0) + return NULL; + + encoder->encode = ImagingPcxEncode; + + return (PyObject*) encoder; +} + + +/* -------------------------------------------------------------------- */ +/* RAW */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_RawEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + char *mode; + char *rawmode; + int stride = 0; + int ystep = 1; + + if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &stride, &ystep)) + return NULL; + + encoder = PyImaging_EncoderNew(0); + if (encoder == NULL) + return NULL; + + if (get_packer(encoder, mode, rawmode) < 0) + return NULL; + + encoder->encode = ImagingRawEncode; + + encoder->state.ystep = ystep; + encoder->state.count = stride; + + return (PyObject*) encoder; +} + + +/* -------------------------------------------------------------------- */ +/* XBM */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyImaging_XbmEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + encoder = PyImaging_EncoderNew(0); + if (encoder == NULL) + return NULL; + + if (get_packer(encoder, "1", "1;R") < 0) + return NULL; + + encoder->encode = ImagingXbmEncode; + + return (PyObject*) encoder; +} + + +/* -------------------------------------------------------------------- */ +/* ZIP */ +/* -------------------------------------------------------------------- */ + +#ifdef HAVE_LIBZ + +#include "Zip.h" + +PyObject* +PyImaging_ZipEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + char* mode; + char* rawmode; + int optimize = 0; + char* dictionary = NULL; + int dictionary_size = 0; + if (!PyArg_ParseTuple(args, "ss|is#", &mode, &rawmode, &optimize, + &dictionary, &dictionary_size)) + return NULL; + + encoder = PyImaging_EncoderNew(sizeof(ZIPSTATE)); + if (encoder == NULL) + return NULL; + + if (get_packer(encoder, mode, rawmode) < 0) + return NULL; + + encoder->encode = ImagingZipEncode; + + if (rawmode[0] == 'P') + /* disable filtering */ + ((ZIPSTATE*)encoder->state.context)->mode = ZIP_PNG_PALETTE; + + ((ZIPSTATE*)encoder->state.context)->optimize = optimize; + ((ZIPSTATE*)encoder->state.context)->dictionary = dictionary; + ((ZIPSTATE*)encoder->state.context)->dictionary_size = dictionary_size; + + return (PyObject*) encoder; +} +#endif + + +/* -------------------------------------------------------------------- */ +/* JPEG */ +/* -------------------------------------------------------------------- */ + +#ifdef HAVE_LIBJPEG + +/* We better define this encoder last in this file, so the following + undef's won't mess things up for the Imaging library proper. */ + +#undef HAVE_PROTOTYPES +#undef HAVE_STDDEF_H +#undef HAVE_STDLIB_H +#undef UINT8 +#undef UINT16 +#undef UINT32 +#undef INT8 +#undef INT16 +#undef INT32 + +#include "Jpeg.h" + +PyObject* +PyImaging_JpegEncoderNew(PyObject* self, PyObject* args) +{ + ImagingEncoderObject* encoder; + + char *mode; + char *rawmode; + int quality = 0; + int progressive = 0; + int smooth = 0; + int optimize = 0; + int streamtype = 0; /* 0=interchange, 1=tables only, 2=image only */ + int xdpi = 0, ydpi = 0; + int subsampling = -1; /* -1=default, 0=none, 1=medium, 2=high */ + char* extra = NULL; int extra_size; + if (!PyArg_ParseTuple(args, "ss|iiiiiiiis#", &mode, &rawmode, &quality, + &progressive, &smooth, &optimize, &streamtype, + &xdpi, &ydpi, &subsampling, &extra, &extra_size)) + return NULL; + + encoder = PyImaging_EncoderNew(sizeof(JPEGENCODERSTATE)); + if (encoder == NULL) + return NULL; + + if (get_packer(encoder, mode, rawmode) < 0) + return NULL; + + if (extra && extra_size > 0) { + char* p = malloc(extra_size); + if (!p) + return PyErr_NoMemory(); + memcpy(p, extra, extra_size); + extra = p; + } else + extra = NULL; + + encoder->encode = ImagingJpegEncode; + + ((JPEGENCODERSTATE*)encoder->state.context)->quality = quality; + ((JPEGENCODERSTATE*)encoder->state.context)->subsampling = subsampling; + ((JPEGENCODERSTATE*)encoder->state.context)->progressive = progressive; + ((JPEGENCODERSTATE*)encoder->state.context)->smooth = smooth; + ((JPEGENCODERSTATE*)encoder->state.context)->optimize = optimize; + ((JPEGENCODERSTATE*)encoder->state.context)->streamtype = streamtype; + ((JPEGENCODERSTATE*)encoder->state.context)->xdpi = xdpi; + ((JPEGENCODERSTATE*)encoder->state.context)->ydpi = ydpi; + ((JPEGENCODERSTATE*)encoder->state.context)->extra = extra; + ((JPEGENCODERSTATE*)encoder->state.context)->extra_size = extra_size; + + return (PyObject*) encoder; +} + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c new file mode 100755 index 00000000000..5ebc9b6f36d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c @@ -0,0 +1,255 @@ +/* + * The Python Imaging Library + * $Id$ + * + * imaging access objects + * + * Copyright (c) Fredrik Lundh 2009. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +/* use Tests/make_hash.py to calculate these values */ +#define ACCESS_TABLE_SIZE 21 +#define ACCESS_TABLE_HASH 30197 + +static struct ImagingAccessInstance access_table[ACCESS_TABLE_SIZE]; + +static inline UINT32 +hash(const char* mode) +{ + UINT32 i = ACCESS_TABLE_HASH; + while (*mode) + i = ((i<<5) + i) ^ (UINT8) *mode++; + return i % ACCESS_TABLE_SIZE; +} + +static ImagingAccess +add_item(const char* mode) +{ + UINT32 i = hash(mode); + /* printf("hash %s => %d\n", mode, i); */ + if (access_table[i].mode) { + fprintf(stderr, "AccessInit: hash collision: %d for both %s and %s\n", + i, mode, access_table[i].mode); + exit(1); + } + access_table[i].mode = mode; + return &access_table[i]; +} + +/* fetch pointer to pixel line */ + +static void* +line_8(Imaging im, int x, int y) +{ + return &im->image8[y][x]; +} + +static void* +line_16(Imaging im, int x, int y) +{ + return &im->image8[y][x+x]; +} + +static void* +line_32(Imaging im, int x, int y) +{ + return &im->image32[y][x]; +} + +/* fetch individual pixel */ + +static void +get_pixel(Imaging im, int x, int y, void* color) +{ + char* out = color; + + /* generic pixel access*/ + + if (im->image8) { + out[0] = im->image8[y][x]; + } else { + UINT8* p = (UINT8*) &im->image32[y][x]; + if (im->type == IMAGING_TYPE_UINT8 && im->bands == 2) { + out[0] = p[0]; + out[1] = p[3]; + return; + } + memcpy(out, p, im->pixelsize); + } +} + +static void +get_pixel_8(Imaging im, int x, int y, void* color) +{ + char* out = color; + out[0] = im->image8[y][x]; +} + +static void +get_pixel_16L(Imaging im, int x, int y, void* color) +{ + UINT8* in = (UINT8*) &im->image[y][x+x]; + INT16* out = color; +#ifdef WORDS_BIGENDIAN + out[0] = in[0] + (in[1]<<8); +#else + out[0] = *(INT16*) in; +#endif +} + +static void +get_pixel_16B(Imaging im, int x, int y, void* color) +{ + UINT8* in = (UINT8*) &im->image[y][x+x]; + INT16* out = color; +#ifdef WORDS_BIGENDIAN + out[0] = *(INT16*) in; +#else + out[0] = in[1] + (in[0]<<8); +#endif +} + +static void +get_pixel_32(Imaging im, int x, int y, void* color) +{ + INT32* out = color; + out[0] = im->image32[y][x]; +} + +static void +get_pixel_32L(Imaging im, int x, int y, void* color) +{ + UINT8* in = (UINT8*) &im->image[y][x*4]; + INT32* out = color; +#ifdef WORDS_BIGENDIAN + out[0] = in[0] + (in[1]<<8) + (in[2]<<16) + (in[3]<<24); +#else + out[0] = *(INT32*) in; +#endif +} + +static void +get_pixel_32B(Imaging im, int x, int y, void* color) +{ + UINT8* in = (UINT8*) &im->image[y][x*4]; + INT32* out = color; +#ifdef WORDS_BIGENDIAN + out[0] = *(INT32*) in; +#else + out[0] = in[3] + (in[2]<<8) + (in[1]<<16) + (in[0]<<24); +#endif +} + +/* store individual pixel */ + +static void +put_pixel(Imaging im, int x, int y, const void* color) +{ + if (im->image8) + im->image8[y][x] = *((UINT8*) color); + else + im->image32[y][x] = *((INT32*) color); +} + +static void +put_pixel_8(Imaging im, int x, int y, const void* color) +{ + im->image8[y][x] = *((UINT8*) color); +} + +static void +put_pixel_16L(Imaging im, int x, int y, const void* color) +{ + const char* in = color; + UINT8* out = (UINT8*) &im->image8[y][x+x]; + out[0] = in[0]; + out[1] = in[1]; +} + +static void +put_pixel_16B(Imaging im, int x, int y, const void* color) +{ + const char* in = color; + UINT8* out = (UINT8*) &im->image8[y][x+x]; + out[0] = in[1]; + out[1] = in[0]; +} + +static void +put_pixel_32L(Imaging im, int x, int y, const void* color) +{ + const char* in = color; + UINT8* out = (UINT8*) &im->image8[y][x*4]; + out[0] = in[0]; + out[1] = in[1]; + out[2] = in[2]; + out[3] = in[3]; +} + +static void +put_pixel_32B(Imaging im, int x, int y, const void* color) +{ + const char* in = color; + UINT8* out = (UINT8*) &im->image8[y][x*4]; + out[0] = in[3]; + out[1] = in[2]; + out[2] = in[1]; + out[3] = in[0]; +} + +static void +put_pixel_32(Imaging im, int x, int y, const void* color) +{ + im->image32[y][x] = *((INT32*) color); +} + +void +ImagingAccessInit() +{ +#define ADD(mode_, line_, get_pixel_, put_pixel_) \ + { ImagingAccess access = add_item(mode_); \ + access->line = line_; \ + access->get_pixel = get_pixel_; \ + access->put_pixel = put_pixel_; \ + } + + /* populate access table */ + ADD("1", line_8, get_pixel_8, put_pixel_8); + ADD("L", line_8, get_pixel_8, put_pixel_8); + ADD("LA", line_32, get_pixel, put_pixel); + ADD("I", line_32, get_pixel_32, put_pixel_32); + ADD("I;16", line_16, get_pixel_16L, put_pixel_16L); + ADD("I;16L", line_16, get_pixel_16L, put_pixel_16L); + ADD("I;16B", line_16, get_pixel_16B, put_pixel_16B); + ADD("I;32L", line_32, get_pixel_32L, put_pixel_32L); + ADD("I;32B", line_32, get_pixel_32B, put_pixel_32B); + ADD("F", line_32, get_pixel_32, put_pixel_32); + ADD("P", line_8, get_pixel_8, put_pixel_8); + ADD("PA", line_32, get_pixel, put_pixel); + ADD("RGB", line_32, get_pixel_32, put_pixel_32); + ADD("RGBA", line_32, get_pixel_32, put_pixel_32); + ADD("RGBa", line_32, get_pixel_32, put_pixel_32); + ADD("RGBX", line_32, get_pixel_32, put_pixel_32); + ADD("CMYK", line_32, get_pixel_32, put_pixel_32); + ADD("YCbCr", line_32, get_pixel_32, put_pixel_32); +} + +ImagingAccess +ImagingAccessNew(Imaging im) +{ + ImagingAccess access = &access_table[hash(im->mode)]; + if (im->mode[0] != access->mode[0] || strcmp(im->mode, access->mode) != 0) + return NULL; + return access; +} + +void +_ImagingAccessDelete(Imaging im, ImagingAccess access) +{ + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c new file mode 100755 index 00000000000..53dfa352251 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c @@ -0,0 +1,307 @@ +/* + * The Python Imaging Library + * $Id$ + * + * pilopen antialiasing support + * + * history: + * 2002-03-09 fl Created (for PIL 1.1.3) + * 2002-03-10 fl Added support for mode "F" + * + * Copyright (c) 1997-2002 by Secret Labs AB + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +#include + +/* resampling filters (from antialias.py) */ + +struct filter { + float (*filter)(float x); + float support; +}; + +static inline float sinc_filter(float x) +{ + if (x == 0.0) + return 1.0; + x = x * M_PI; + return sin(x) / x; +} + +static inline float antialias_filter(float x) +{ + /* lanczos (truncated sinc) */ + if (-3.0 <= x && x < 3.0) + return sinc_filter(x) * sinc_filter(x/3); + return 0.0; +} + +static struct filter ANTIALIAS = { antialias_filter, 3.0 }; + +static inline float nearest_filter(float x) +{ + if (-0.5 <= x && x < 0.5) + return 1.0; + return 0.0; +} + +static struct filter NEAREST = { nearest_filter, 0.5 }; + +static inline float bilinear_filter(float x) +{ + if (x < 0.0) + x = -x; + if (x < 1.0) + return 1.0-x; + return 0.0; +} + +static struct filter BILINEAR = { bilinear_filter, 1.0 }; + +static inline float bicubic_filter(float x) +{ + /* FIXME: double-check this algorithm */ + /* FIXME: for best results, "a" should be -0.5 to -1.0, but we'll + set it to zero for now, to match the 1.1 magnifying filter */ +#define a 0.0 + if (x < 0.0) + x = -x; + if (x < 1.0) + return (((a + 2.0) * x) - (a + 3.0)) * x*x + 1; + if (x < 2.0) + return (((a * x) - 5*a) * x + 8) * x - 4*a; + return 0.0; +#undef a +} + +static struct filter BICUBIC = { bicubic_filter, 2.0 }; + +Imaging +ImagingStretch(Imaging imOut, Imaging imIn, int filter) +{ + /* FIXME: this is a quick and straightforward translation from a + python prototype. might need some further C-ification... */ + + ImagingSectionCookie cookie; + struct filter *filterp; + float support, scale, filterscale; + float center, ww, ss, ymin, ymax, xmin, xmax; + int xx, yy, x, y, b; + float *k; + + /* check modes */ + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + + /* check filter */ + switch (filter) { + case IMAGING_TRANSFORM_NEAREST: + filterp = &NEAREST; + break; + case IMAGING_TRANSFORM_ANTIALIAS: + filterp = &ANTIALIAS; + break; + case IMAGING_TRANSFORM_BILINEAR: + filterp = &BILINEAR; + break; + case IMAGING_TRANSFORM_BICUBIC: + filterp = &BICUBIC; + break; + default: + return (Imaging) ImagingError_ValueError( + "unsupported resampling filter" + ); + } + + if (imIn->ysize == imOut->ysize) { + /* prepare for horizontal stretch */ + filterscale = scale = (float) imIn->xsize / imOut->xsize; + } else if (imIn->xsize == imOut->xsize) { + /* prepare for vertical stretch */ + filterscale = scale = (float) imIn->ysize / imOut->ysize; + } else + return (Imaging) ImagingError_Mismatch(); + + /* determine support size (length of resampling filter) */ + support = filterp->support; + + if (filterscale < 1.0) { + filterscale = 1.0; + support = 0.5; + } + + support = support * filterscale; + + /* coefficient buffer (with rounding safety margin) */ + k = malloc(((int) support * 2 + 10) * sizeof(float)); + if (!k) + return (Imaging) ImagingError_MemoryError(); + + ImagingSectionEnter(&cookie); + if (imIn->xsize == imOut->xsize) { + /* vertical stretch */ + for (yy = 0; yy < imOut->ysize; yy++) { + center = (yy + 0.5) * scale; + ww = 0.0; + ss = 1.0 / filterscale; + /* calculate filter weights */ + ymin = floor(center - support); + if (ymin < 0.0) + ymin = 0.0; + ymax = ceil(center + support); + if (ymax > (float) imIn->ysize) + ymax = (float) imIn->ysize; + for (y = (int) ymin; y < (int) ymax; y++) { + float w = filterp->filter((y - center + 0.5) * ss) * ss; + k[y - (int) ymin] = w; + ww = ww + w; + } + if (ww == 0.0) + ww = 1.0; + else + ww = 1.0 / ww; + if (imIn->image8) { + /* 8-bit grayscale */ + for (xx = 0; xx < imOut->xsize; xx++) { + ss = 0.0; + for (y = (int) ymin; y < (int) ymax; y++) + ss = ss + imIn->image8[y][xx] * k[y - (int) ymin]; + ss = ss * ww + 0.5; + if (ss < 0.5) + imOut->image8[yy][xx] = 0; + else if (ss >= 255.0) + imOut->image8[yy][xx] = 255; + else + imOut->image8[yy][xx] = (UINT8) ss; + } + } else + switch(imIn->type) { + case IMAGING_TYPE_UINT8: + /* n-bit grayscale */ + for (xx = 0; xx < imOut->xsize*4; xx++) { + /* FIXME: skip over unused pixels */ + ss = 0.0; + for (y = (int) ymin; y < (int) ymax; y++) + ss = ss + (UINT8) imIn->image[y][xx] * k[y-(int) ymin]; + ss = ss * ww + 0.5; + if (ss < 0.5) + imOut->image[yy][xx] = (UINT8) 0; + else if (ss >= 255.0) + imOut->image[yy][xx] = (UINT8) 255; + else + imOut->image[yy][xx] = (UINT8) ss; + } + break; + case IMAGING_TYPE_INT32: + /* 32-bit integer */ + for (xx = 0; xx < imOut->xsize; xx++) { + ss = 0.0; + for (y = (int) ymin; y < (int) ymax; y++) + ss = ss + IMAGING_PIXEL_I(imIn, xx, y) * k[y - (int) ymin]; + IMAGING_PIXEL_I(imOut, xx, yy) = (int) ss * ww; + } + break; + case IMAGING_TYPE_FLOAT32: + /* 32-bit float */ + for (xx = 0; xx < imOut->xsize; xx++) { + ss = 0.0; + for (y = (int) ymin; y < (int) ymax; y++) + ss = ss + IMAGING_PIXEL_F(imIn, xx, y) * k[y - (int) ymin]; + IMAGING_PIXEL_F(imOut, xx, yy) = ss * ww; + } + break; + default: + ImagingSectionLeave(&cookie); + return (Imaging) ImagingError_ModeError(); + } + } + } else { + /* horizontal stretch */ + for (xx = 0; xx < imOut->xsize; xx++) { + center = (xx + 0.5) * scale; + ww = 0.0; + ss = 1.0 / filterscale; + xmin = floor(center - support); + if (xmin < 0.0) + xmin = 0.0; + xmax = ceil(center + support); + if (xmax > (float) imIn->xsize) + xmax = (float) imIn->xsize; + for (x = (int) xmin; x < (int) xmax; x++) { + float w = filterp->filter((x - center + 0.5) * ss) * ss; + k[x - (int) xmin] = w; + ww = ww + w; + } + if (ww == 0.0) + ww = 1.0; + else + ww = 1.0 / ww; + if (imIn->image8) { + /* 8-bit grayscale */ + for (yy = 0; yy < imOut->ysize; yy++) { + ss = 0.0; + for (x = (int) xmin; x < (int) xmax; x++) + ss = ss + imIn->image8[yy][x] * k[x - (int) xmin]; + ss = ss * ww + 0.5; + if (ss < 0.5) + imOut->image8[yy][xx] = (UINT8) 0; + else if (ss >= 255.0) + imOut->image8[yy][xx] = (UINT8) 255; + else + imOut->image8[yy][xx] = (UINT8) ss; + } + } else + switch(imIn->type) { + case IMAGING_TYPE_UINT8: + /* n-bit grayscale */ + for (yy = 0; yy < imOut->ysize; yy++) { + for (b = 0; b < imIn->bands; b++) { + if (imIn->bands == 2 && b) + b = 3; /* hack to deal with LA images */ + ss = 0.0; + for (x = (int) xmin; x < (int) xmax; x++) + ss = ss + (UINT8) imIn->image[yy][x*4+b] * k[x - (int) xmin]; + ss = ss * ww + 0.5; + if (ss < 0.5) + imOut->image[yy][xx*4+b] = (UINT8) 0; + else if (ss >= 255.0) + imOut->image[yy][xx*4+b] = (UINT8) 255; + else + imOut->image[yy][xx*4+b] = (UINT8) ss; + } + } + break; + case IMAGING_TYPE_INT32: + /* 32-bit integer */ + for (yy = 0; yy < imOut->ysize; yy++) { + ss = 0.0; + for (x = (int) xmin; x < (int) xmax; x++) + ss = ss + IMAGING_PIXEL_I(imIn, x, yy) * k[x - (int) xmin]; + IMAGING_PIXEL_I(imOut, xx, yy) = (int) ss * ww; + } + break; + case IMAGING_TYPE_FLOAT32: + /* 32-bit float */ + for (yy = 0; yy < imOut->ysize; yy++) { + ss = 0.0; + for (x = (int) xmin; x < (int) xmax; x++) + ss = ss + IMAGING_PIXEL_F(imIn, x, yy) * k[x - (int) xmin]; + IMAGING_PIXEL_F(imOut, xx, yy) = ss * ww; + } + break; + default: + ImagingSectionLeave(&cookie); + return (Imaging) ImagingError_ModeError(); + } + } + } + ImagingSectionLeave(&cookie); + + free(k); + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c new file mode 100755 index 00000000000..fdfc6ae9581 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c @@ -0,0 +1,129 @@ +/* + * The Python Imaging Library + * $Id$ + * + * stuff to extract and paste back individual bands + * + * history: + * 1996-03-20 fl Created + * 1997-08-27 fl Fixed putband for single band targets. + * 2003-09-26 fl Fixed getband/putband for 2-band images (LA, PA). + * + * Copyright (c) 1997-2003 by Secret Labs AB. + * Copyright (c) 1996-1997 by Fredrik Lundh. + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + + +#define CLIP(x) ((x) <= 0 ? 0 : (x) < 256 ? (x) : 255) + + +Imaging +ImagingGetBand(Imaging imIn, int band) +{ + Imaging imOut; + int x, y; + + /* Check arguments */ + if (!imIn || imIn->type != IMAGING_TYPE_UINT8) + return (Imaging) ImagingError_ModeError(); + + if (band < 0 || band >= imIn->bands) + return (Imaging) ImagingError_ValueError("band index out of range"); + + /* Shortcuts */ + if (imIn->bands == 1) + return ImagingCopy(imIn); + + /* Special case for LXXA etc */ + if (imIn->bands == 2 && band == 1) + band = 3; + + imOut = ImagingNew("L", imIn->xsize, imIn->ysize); + if (!imOut) + return NULL; + + /* Extract band from image */ + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = (UINT8*) imIn->image[y] + band; + UINT8* out = imOut->image8[y]; + for (x = 0; x < imIn->xsize; x++) { + out[x] = *in; + in += 4; + } + } + + return imOut; +} + +Imaging +ImagingPutBand(Imaging imOut, Imaging imIn, int band) +{ + int x, y; + + /* Check arguments */ + if (!imIn || imIn->bands != 1 || !imOut) + return (Imaging) ImagingError_ModeError(); + + if (band < 0 || band >= imOut->bands) + return (Imaging) ImagingError_ValueError("band index out of range"); + + if (imIn->type != imOut->type || + imIn->xsize != imOut->xsize || + imIn->ysize != imOut->ysize) + return (Imaging) ImagingError_Mismatch(); + + /* Shortcuts */ + if (imOut->bands == 1) + return ImagingCopy2(imOut, imIn); + + /* Special case for LXXA etc */ + if (imOut->bands == 2 && band == 1) + band = 3; + + /* Insert band into image */ + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = imIn->image8[y]; + UINT8* out = (UINT8*) imOut->image[y] + band; + for (x = 0; x < imIn->xsize; x++) { + *out = in[x]; + out += 4; + } + } + + return imOut; +} + +Imaging +ImagingFillBand(Imaging imOut, int band, int color) +{ + int x, y; + + /* Check arguments */ + if (!imOut || imOut->type != IMAGING_TYPE_UINT8) + return (Imaging) ImagingError_ModeError(); + + if (band < 0 || band >= imOut->bands) + return (Imaging) ImagingError_ValueError("band index out of range"); + + /* Special case for LXXA etc */ + if (imOut->bands == 2 && band == 1) + band = 3; + + color = CLIP(color); + + /* Insert color into image */ + for (y = 0; y < imOut->ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y] + band; + for (x = 0; x < imOut->xsize; x++) { + *out = (UINT8) color; + out += 4; + } + } + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h new file mode 100755 index 00000000000..56e3a17d2e7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h @@ -0,0 +1,30 @@ +/* Bit.h */ + +typedef struct { + + /* CONFIGURATION */ + + /* Number of bits per pixel */ + int bits; + + /* Line padding (0 or 8) */ + int pad; + + /* Fill order */ + /* 0=msb/msb, 1=msbfill/lsbshift, 2=lsbfill/msbshift, 3=lsb/lsb */ + int fill; + + /* Signed integers (0=unsigned, 1=signed) */ + int sign; + + /* Lookup table (not implemented) */ + unsigned long lutsize; + FLOAT32* lut; + + /* INTERNAL */ + unsigned long mask; + unsigned long signmask; + unsigned long bitbuffer; + int bitcount; + +} BITSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c new file mode 100755 index 00000000000..572926f0079 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c @@ -0,0 +1,138 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for packed bitfields (converts to floating point) + * + * history: + * 97-05-31 fl created (much more than originally intended) + * + * Copyright (c) Fredrik Lundh 1997. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#include "Bit.h" + + +int +ImagingBitDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + BITSTATE* bitstate = state->context; + UINT8* ptr; + + if (state->state == 0) { + + /* Initialize context variables */ + + /* this decoder only works for float32 image buffers */ + if (im->type != IMAGING_TYPE_FLOAT32) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + + /* sanity check */ + if (bitstate->bits < 1 || bitstate->bits >= 32) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + + bitstate->mask = (1<bits)-1; + + if (bitstate->sign) + bitstate->signmask = (1<<(bitstate->bits-1)); + + /* check image orientation */ + if (state->ystep < 0) { + state->y = state->ysize-1; + state->ystep = -1; + } else + state->ystep = 1; + + state->state = 1; + + } + + ptr = buf; + + while (bytes > 0) { + + UINT8 byte = *ptr; + + ptr++; + bytes--; + + /* get a byte from the input stream and insert in the bit buffer */ + if (bitstate->fill&1) + /* fill MSB first */ + bitstate->bitbuffer |= (unsigned long) byte << bitstate->bitcount; + else + /* fill LSB first */ + bitstate->bitbuffer = (bitstate->bitbuffer << 8) | byte; + + bitstate->bitcount += 8; + + while (bitstate->bitcount >= bitstate->bits) { + + /* get a pixel from the bit buffer */ + unsigned long data; + FLOAT32 pixel; + + if (bitstate->fill&2) { + /* store LSB first */ + data = bitstate->bitbuffer & bitstate->mask; + if (bitstate->bitcount > 32) + /* bitbuffer overflow; restore it from last input byte */ + bitstate->bitbuffer = byte >> (8 - (bitstate->bitcount - + bitstate->bits)); + else + bitstate->bitbuffer >>= bitstate->bits; + } else + /* store MSB first */ + data = (bitstate->bitbuffer >> (bitstate->bitcount - + bitstate->bits)) + & bitstate->mask; + + bitstate->bitcount -= bitstate->bits; + + if (bitstate->lutsize > 0) { + /* map through lookup table */ + if (data <= 0) + pixel = bitstate->lut[0]; + else if (data >= bitstate->lutsize) + pixel = bitstate->lut[bitstate->lutsize-1]; + else + pixel = bitstate->lut[data]; + } else { + /* convert */ + if (data & bitstate->signmask) + /* image memory contains signed data */ + pixel = (FLOAT32) (INT32) (data | ~bitstate->mask); + else + pixel = (FLOAT32) data; + } + + *(FLOAT32*)(&im->image32[state->y][state->x]) = pixel; + + /* step forward */ + if (++state->x >= state->xsize) { + /* new line */ + state->y += state->ystep; + if (state->y < 0 || state->y >= state->ysize) { + /* end of file (errcode = 0) */ + return -1; + } + state->x = 0; + /* reset bit buffer */ + if (bitstate->pad > 0) + bitstate->bitcount = 0; + } + } + } + + return ptr - buf; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c new file mode 100755 index 00000000000..0861c8ef4fb --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c @@ -0,0 +1,79 @@ +/* + * The Python Imaging Library + * $Id$ + * + * interpolate between two existing images + * + * history: + * 96-03-20 fl Created + * 96-05-18 fl Simplified blend expression + * 96-10-05 fl Fixed expression bug, special case for interpolation + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + + +Imaging +ImagingBlend(Imaging imIn1, Imaging imIn2, float alpha) +{ + Imaging imOut; + int x, y; + + /* Check arguments */ + if (!imIn1 || !imIn2 || imIn1->type != IMAGING_TYPE_UINT8) + return ImagingError_ModeError(); + if (imIn1->type != imIn2->type || + imIn1->bands != imIn2->bands || + imIn1->xsize != imIn2->xsize || + imIn1->ysize != imIn2->ysize) + return ImagingError_Mismatch(); + + /* Shortcuts */ + if (alpha == 0.0) + return ImagingCopy(imIn1); + else if (alpha == 1.0) + return ImagingCopy(imIn2); + + imOut = ImagingNew(imIn1->mode, imIn1->xsize, imIn1->ysize); + if (!imOut) + return NULL; + + ImagingCopyInfo(imOut, imIn1); + + if (alpha >= 0 && alpha <= 1.0) { + /* Interpolate between bands */ + for (y = 0; y < imIn1->ysize; y++) { + UINT8* in1 = (UINT8*) imIn1->image[y]; + UINT8* in2 = (UINT8*) imIn2->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + for (x = 0; x < imIn1->linesize; x++) + out[x] = (UINT8) + ((int) in1[x] + alpha * ((int) in2[x] - (int) in1[x])); + } + } else { + /* Extrapolation; must make sure to clip resulting values */ + for (y = 0; y < imIn1->ysize; y++) { + UINT8* in1 = (UINT8*) imIn1->image[y]; + UINT8* in2 = (UINT8*) imIn2->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + for (x = 0; x < imIn1->linesize; x++) { + float temp = (float) + ((int) in1[x] + alpha * ((int) in2[x] - (int) in1[x])); + if (temp <= 0.0) + out[x] = 0; + else if (temp >= 255.0) + out[x] = 255; + else + out[x] = (UINT8) temp; + } + } + } + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c new file mode 100755 index 00000000000..e5993195a03 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c @@ -0,0 +1,148 @@ +/* + * The Python Imaging Library + * $Id$ + * + * basic channel operations + * + * history: + * 1996-03-28 fl Created + * 1996-08-13 fl Added and/or/xor for "1" images + * 1996-12-14 fl Added add_modulo, sub_modulo + * 2005-09-10 fl Fixed output values from and/or/xor + * + * Copyright (c) 1996 by Fredrik Lundh. + * Copyright (c) 1997 by Secret Labs AB. + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + +#define CHOP(operation, mode)\ + int x, y;\ + Imaging imOut;\ + imOut = create(imIn1, imIn2, mode);\ + if (!imOut)\ + return NULL;\ + for (y = 0; y < imOut->ysize; y++) {\ + UINT8* out = (UINT8*) imOut->image[y];\ + UINT8* in1 = (UINT8*) imIn1->image[y];\ + UINT8* in2 = (UINT8*) imIn2->image[y];\ + for (x = 0; x < imOut->linesize; x++) {\ + int temp = operation;\ + if (temp <= 0)\ + out[x] = 0;\ + else if (temp >= 255)\ + out[x] = 255;\ + else\ + out[x] = temp;\ + }\ + }\ + return imOut; + +#define CHOP2(operation, mode)\ + int x, y;\ + Imaging imOut;\ + imOut = create(imIn1, imIn2, mode);\ + if (!imOut)\ + return NULL;\ + for (y = 0; y < imOut->ysize; y++) {\ + UINT8* out = (UINT8*) imOut->image[y];\ + UINT8* in1 = (UINT8*) imIn1->image[y];\ + UINT8* in2 = (UINT8*) imIn2->image[y];\ + for (x = 0; x < imOut->linesize; x++) {\ + out[x] = operation;\ + }\ + }\ + return imOut; + +static Imaging +create(Imaging im1, Imaging im2, char* mode) +{ + int xsize, ysize; + + if (!im1 || !im2 || im1->type != IMAGING_TYPE_UINT8 || + (mode != NULL && (strcmp(im1->mode, "1") || strcmp(im2->mode, "1")))) + return (Imaging) ImagingError_ModeError(); + if (im1->type != im2->type || + im1->bands != im2->bands) + return (Imaging) ImagingError_Mismatch(); + + xsize = (im1->xsize < im2->xsize) ? im1->xsize : im2->xsize; + ysize = (im1->ysize < im2->ysize) ? im1->ysize : im2->ysize; + + return ImagingNew(im1->mode, xsize, ysize); +} + +Imaging +ImagingChopLighter(Imaging imIn1, Imaging imIn2) +{ + CHOP((in1[x] > in2[x]) ? in1[x] : in2[x], NULL); +} + +Imaging +ImagingChopDarker(Imaging imIn1, Imaging imIn2) +{ + CHOP((in1[x] < in2[x]) ? in1[x] : in2[x], NULL); +} + +Imaging +ImagingChopDifference(Imaging imIn1, Imaging imIn2) +{ + CHOP(abs((int) in1[x] - (int) in2[x]), NULL); +} + +Imaging +ImagingChopMultiply(Imaging imIn1, Imaging imIn2) +{ + CHOP((int) in1[x] * (int) in2[x] / 255, NULL); +} + +Imaging +ImagingChopScreen(Imaging imIn1, Imaging imIn2) +{ + CHOP(255 - ((int) (255 - in1[x]) * (int) (255 - in2[x])) / 255, NULL); +} + +Imaging +ImagingChopAdd(Imaging imIn1, Imaging imIn2, float scale, int offset) +{ + CHOP(((int) in1[x] + (int) in2[x]) / scale + offset, NULL); +} + +Imaging +ImagingChopSubtract(Imaging imIn1, Imaging imIn2, float scale, int offset) +{ + CHOP(((int) in1[x] - (int) in2[x]) / scale + offset, NULL); +} + +Imaging +ImagingChopAnd(Imaging imIn1, Imaging imIn2) +{ + CHOP2((in1[x] && in2[x]) ? 255 : 0, "1"); +} + +Imaging +ImagingChopOr(Imaging imIn1, Imaging imIn2) +{ + CHOP2((in1[x] || in2[x]) ? 255 : 0, "1"); +} + +Imaging +ImagingChopXor(Imaging imIn1, Imaging imIn2) +{ + CHOP2(((in1[x] != 0) ^ (in2[x] != 0)) ? 255 : 0, "1"); +} + +Imaging +ImagingChopAddModulo(Imaging imIn1, Imaging imIn2) +{ + CHOP2(in1[x] + in2[x], NULL); +} + +Imaging +ImagingChopSubtractModulo(Imaging imIn1, Imaging imIn2) +{ + CHOP2(in1[x] - in2[x], NULL); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c new file mode 100755 index 00000000000..25299aa8280 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c @@ -0,0 +1,1132 @@ +/* + * The Python Imaging Library + * $Id$ + * + * convert images + * + * history: + * 1995-06-15 fl created + * 1995-11-28 fl added some "RGBA" and "CMYK" conversions + * 1996-04-22 fl added "1" conversions (same as "L") + * 1996-05-05 fl added palette conversions (hack) + * 1996-07-23 fl fixed "1" conversions to zero/non-zero convention + * 1996-11-01 fl fixed "P" to "L" and "RGB" to "1" conversions + * 1996-12-29 fl set alpha byte in RGB converters + * 1997-05-12 fl added ImagingConvert2 + * 1997-05-30 fl added floating point support + * 1997-08-27 fl added "P" to "1" and "P" to "F" conversions + * 1998-01-11 fl added integer support + * 1998-07-01 fl added "YCbCr" support + * 1998-07-02 fl added "RGBX" conversions (sort of) + * 1998-07-04 fl added floyd-steinberg dithering + * 1998-07-12 fl changed "YCrCb" to "YCbCr" (!) + * 1998-12-29 fl added basic "I;16" and "I;16B" conversions + * 1999-02-03 fl added "RGBa", and "BGR" conversions (experimental) + * 2003-09-26 fl added "LA" and "PA" conversions (experimental) + * 2005-05-05 fl fixed "P" to "1" threshold + * 2005-12-08 fl fixed palette memory leak in topalette + * + * Copyright (c) 1997-2005 by Secret Labs AB. + * Copyright (c) 1995-1997 by Fredrik Lundh. + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + +#define CLIP(v) ((v) <= 0 ? 0 : (v) >= 255 ? 255 : (v)) +#define CLIP16(v) ((v) <= -32768 ? -32768 : (v) >= 32767 ? 32767 : (v)) + +/* like (a * b + 127) / 255), but much faster on most platforms */ +#define MULDIV255(a, b, tmp)\ + (tmp = (a) * (b) + 128, ((((tmp) >> 8) + (tmp)) >> 8)) + +/* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ +#define L(rgb)\ + ((INT32) (rgb)[0]*299 + (INT32) (rgb)[1]*587 + (INT32) (rgb)[2]*114) + +/* ------------------- */ +/* 1 (bit) conversions */ +/* ------------------- */ + +static void +bit2l(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) + *out++ = (*in++ != 0) ? 255 : 0; +} + +static void +bit2rgb(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + UINT8 v = (*in++ != 0) ? 255 : 0; + *out++ = v; + *out++ = v; + *out++ = v; + *out++ = 255; + } +} + +static void +bit2cmyk(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + *out++ = 0; + *out++ = 0; + *out++ = 0; + *out++ = (*in++ != 0) ? 0 : 255; + } +} + +static void +bit2ycbcr(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + *out++ = (*in++ != 0) ? 255 : 0; + *out++ = 128; + *out++ = 128; + *out++ = 255; + } +} + +/* ----------------- */ +/* RGB/L conversions */ +/* ----------------- */ + +static void +l2bit(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) + *out++ = (*in++ >= 128) ? 255 : 0; +} + +static void +l2la(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + UINT8 v = *in++; + *out++ = v; + *out++ = v; + *out++ = v; + *out++ = 255; + } +} + +static void +l2rgb(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + UINT8 v = *in++; + *out++ = v; + *out++ = v; + *out++ = v; + *out++ = 255; + } +} + +static void +la2l(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) + *out++ = in[0]; +} + +static void +la2rgb(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) { + UINT8 v = in[0]; + *out++ = v; + *out++ = v; + *out++ = v; + *out++ = in[3]; + } +} + +static void +rgb2bit(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) + /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ + *out++ = (L(in) >= 128000) ? 255 : 0; +} + +static void +rgb2l(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) + /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ + *out++ = L(in) / 1000; +} + +static void +rgb2la(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4, out += 4) { + /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ + out[0] = out[1] = out[2] = L(in) / 1000; + out[3] = 255; + } +} + +static void +rgb2i(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++, in += 4) + *out++ = L(in) / 1000; +} + +static void +rgb2f(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + FLOAT32* out = (FLOAT32*) out_; + for (x = 0; x < xsize; x++, in += 4) + *out++ = (float) L(in) / 1000.0F; +} + +static void +rgb2bgr15(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + UINT16* out = (UINT16*) out_; + for (x = 0; x < xsize; x++, in += 4) + *out++ = + ((((UINT16)in[0])<<7)&0x7c00) + + ((((UINT16)in[1])<<2)&0x03e0) + + ((((UINT16)in[2])>>3)&0x001f); +} + +static void +rgb2bgr16(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + UINT16* out = (UINT16*) out_; + for (x = 0; x < xsize; x++, in += 4) + *out++ = + ((((UINT16)in[0])<<8)&0xf800) + + ((((UINT16)in[1])<<3)&0x07e0) + + ((((UINT16)in[2])>>3)&0x001f); +} + +static void +rgb2bgr24(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) { + *out++ = in[2]; + *out++ = in[1]; + *out++ = in[0]; + } +} + +/* ---------------- */ +/* RGBA conversions */ +/* ---------------- */ + +static void +rgb2rgba(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + *out++ = *in++; + *out++ = *in++; + *out++ = *in++; + *out++ = 255; in++; + } +} + +static void +rgba2la(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4, out += 4) { + /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ + out[0] = out[1] = out[2] = L(in) / 1000; + out[3] = in[3]; + } +} + +static void +rgba2rgb(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + *out++ = *in++; + *out++ = *in++; + *out++ = *in++; + *out++ = 255; in++; + } +} + +static void +rgba2rgba(UINT8* out, const UINT8* in, int xsize) +{ + int x; + unsigned int alpha, tmp; + for (x = 0; x < xsize; x++) { + alpha = in[3]; + *out++ = MULDIV255(*in++, alpha, tmp); + *out++ = MULDIV255(*in++, alpha, tmp); + *out++ = MULDIV255(*in++, alpha, tmp); + *out++ = *in++; + } +} + +/* ---------------- */ +/* CMYK conversions */ +/* ---------------- */ + +static void +l2cmyk(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + *out++ = 0; + *out++ = 0; + *out++ = 0; + *out++ = ~(*in++); + } +} + +static void +rgb2cmyk(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + /* Note: no undercolour removal */ + *out++ = ~(*in++); + *out++ = ~(*in++); + *out++ = ~(*in++); + *out++ = 0; in++; + } +} + +static void +cmyk2rgb(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) { + *out++ = CLIP(255 - (in[0] + in[3])); + *out++ = CLIP(255 - (in[1] + in[3])); + *out++ = CLIP(255 - (in[2] + in[3])); + *out++ = 255; + } +} + +/* ------------- */ +/* I conversions */ +/* ------------- */ + +static void +bit2i(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (*in++ != 0) ? 255 : 0; +} + +static void +l2i(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (INT32) *in++; +} + +static void +i2l(UINT8* out, const UINT8* in_, int xsize) +{ + int x; + INT32* in = (INT32*) in_; + for (x = 0; x < xsize; x++, in++, out++) { + if (*in <= 0) + *out = 0; + else if (*in >= 255) + *out = 255; + else + *out = (UINT8) *in; + } +} + +static void +i2f(UINT8* out_, const UINT8* in_, int xsize) +{ + int x; + INT32* in = (INT32*) in_; + FLOAT32* out = (FLOAT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (FLOAT32) *in++; +} + +/* ------------- */ +/* F conversions */ +/* ------------- */ + +static void +bit2f(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + FLOAT32* out = (FLOAT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (*in++ != 0) ? 255.0F : 0.0F; +} + +static void +l2f(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + FLOAT32* out = (FLOAT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (FLOAT32) *in++; +} + +static void +f2l(UINT8* out, const UINT8* in_, int xsize) +{ + int x; + FLOAT32* in = (FLOAT32*) in_; + for (x = 0; x < xsize; x++, in++, out++) { + if (*in <= 0.0) + *out = 0; + else if (*in >= 255.0) + *out = 255; + else + *out = (UINT8) *in; + } +} + +static void +f2i(UINT8* out_, const UINT8* in_, int xsize) +{ + int x; + FLOAT32* in = (FLOAT32*) in_; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (INT32) *in++; +} + +/* ----------------- */ +/* YCbCr conversions */ +/* ----------------- */ + +/* See ConvertYCbCr.c for RGB/YCbCr tables */ + +static void +l2ycbcr(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++) { + *out++ = *in++; + *out++ = 128; + *out++ = 128; + *out++ = 255; + } +} + +static void +ycbcr2l(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) + *out++ = in[0]; +} + +/* ------------------------- */ +/* I;16 (16-bit) conversions */ +/* ------------------------- */ + +static void +I_I16L(UINT8* out, const UINT8* in_, int xsize) +{ + int x, v; + INT32* in = (INT32*) in_; + for (x = 0; x < xsize; x++, in++) { + v = CLIP16(*in); + *out++ = (UINT8) v; + *out++ = (UINT8) (v >> 8); + } +} + +static void +I_I16B(UINT8* out, const UINT8* in_, int xsize) +{ + int x, v; + INT32* in = (INT32*) in_; + for (x = 0; x < xsize; x++, in++) { + v = CLIP16(*in); + *out++ = (UINT8) (v >> 8); + *out++ = (UINT8) v; + } +} + + +static void +I16L_I(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++, in += 2) + *out++ = in[0] + ((int) in[1] << 8); +} + + +static void +I16B_I(UINT8* out_, const UINT8* in, int xsize) +{ + int x; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++, in += 2) + *out++ = in[1] + ((int) in[0] << 8); +} + +static void +L_I16L(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in++) { + *out++ = *in; + *out++ = 0; + } +} + +static void +L_I16B(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in++) { + *out++ = 0; + *out++ = *in; + } +} + +static void +I16L_L(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 2) + if (in[1] != 0) + *out++ = 255; + else + *out++ = in[0]; +} + +static void +I16B_L(UINT8* out, const UINT8* in, int xsize) +{ + int x; + for (x = 0; x < xsize; x++, in += 2) + if (in[0] != 0) + *out++ = 255; + else + *out++ = in[1]; +} + +static struct { + const char* from; + const char* to; + ImagingShuffler convert; +} converters[] = { + + { "1", "L", bit2l }, + { "1", "I", bit2i }, + { "1", "F", bit2f }, + { "1", "RGB", bit2rgb }, + { "1", "RGBA", bit2rgb }, + { "1", "RGBX", bit2rgb }, + { "1", "CMYK", bit2cmyk }, + { "1", "YCbCr", bit2ycbcr }, + + { "L", "1", l2bit }, + { "L", "LA", l2la }, + { "L", "I", l2i }, + { "L", "F", l2f }, + { "L", "RGB", l2rgb }, + { "L", "RGBA", l2rgb }, + { "L", "RGBX", l2rgb }, + { "L", "CMYK", l2cmyk }, + { "L", "YCbCr", l2ycbcr }, + + { "LA", "L", la2l }, + { "LA", "RGB", la2rgb }, + { "LA", "RGBX", la2rgb }, + { "LA", "RGBA", la2rgb }, + + { "I", "L", i2l }, + { "I", "F", i2f }, + + { "F", "L", f2l }, + { "F", "I", f2i }, + + { "RGB", "1", rgb2bit }, + { "RGB", "L", rgb2l }, + { "RGB", "LA", rgb2la }, + { "RGB", "I", rgb2i }, + { "RGB", "F", rgb2f }, + { "RGB", "BGR;15", rgb2bgr15 }, + { "RGB", "BGR;16", rgb2bgr16 }, + { "RGB", "BGR;24", rgb2bgr24 }, + { "RGB", "RGBA", rgb2rgba }, + { "RGB", "RGBX", rgb2rgba }, + { "RGB", "CMYK", rgb2cmyk }, + { "RGB", "YCbCr", ImagingConvertRGB2YCbCr }, + + { "RGBA", "1", rgb2bit }, + { "RGBA", "L", rgb2l }, + { "RGBA", "LA", rgba2la }, + { "RGBA", "I", rgb2i }, + { "RGBA", "F", rgb2f }, + { "RGBA", "RGB", rgba2rgb }, + { "RGBA", "RGBa", rgba2rgba }, + { "RGBA", "RGBX", rgb2rgba }, + { "RGBA", "CMYK", rgb2cmyk }, + { "RGBA", "YCbCr", ImagingConvertRGB2YCbCr }, + + { "RGBX", "1", rgb2bit }, + { "RGBX", "L", rgb2l }, + { "RGBA", "I", rgb2i }, + { "RGBA", "F", rgb2f }, + { "RGBX", "RGB", rgba2rgb }, + { "RGBX", "CMYK", rgb2cmyk }, + { "RGBX", "YCbCr", ImagingConvertRGB2YCbCr }, + + { "CMYK", "RGB", cmyk2rgb }, + { "CMYK", "RGBA", cmyk2rgb }, + { "CMYK", "RGBX", cmyk2rgb }, + + { "YCbCr", "L", ycbcr2l }, + { "YCbCr", "RGB", ImagingConvertYCbCr2RGB }, + + { "I", "I;16", I_I16L }, + { "I;16", "I", I16L_I }, + { "L", "I;16", L_I16L }, + { "I;16", "L", I16L_L }, + + { "I", "I;16L", I_I16L }, + { "I;16L", "I", I16L_I }, + { "I", "I;16B", I_I16B }, + { "I;16B", "I", I16B_I }, + + { "L", "I;16L", L_I16L }, + { "I;16L", "L", I16L_L }, + { "L", "I;16B", L_I16B }, + { "I;16B", "L", I16B_L }, + + { NULL } +}; + +/* FIXME: translate indexed versions to pointer versions below this line */ + +/* ------------------- */ +/* Palette conversions */ +/* ------------------- */ + +static void +p2bit(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + /* FIXME: precalculate greyscale palette? */ + for (x = 0; x < xsize; x++) + *out++ = (L(&palette[in[x]*4]) >= 128000) ? 255 : 0; +} + +static void +p2l(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + /* FIXME: precalculate greyscale palette? */ + for (x = 0; x < xsize; x++) + *out++ = L(&palette[in[x]*4]) / 1000; +} + +static void +pa2la(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + /* FIXME: precalculate greyscale palette? */ + for (x = 0; x < xsize; x++, in += 2) { + *out++ = L(&palette[in[0]*4]) / 1000; + *out++ = in[1]; + } +} + +static void +p2i(UINT8* out_, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + INT32* out = (INT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = L(&palette[in[x]*4]) / 1000; +} + +static void +p2f(UINT8* out_, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + FLOAT32* out = (FLOAT32*) out_; + for (x = 0; x < xsize; x++) + *out++ = (float) L(&palette[in[x]*4]) / 1000.0F; +} + +static void +p2rgb(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + for (x = 0; x < xsize; x++) { + const UINT8* rgb = &palette[*in++ * 4]; + *out++ = rgb[0]; + *out++ = rgb[1]; + *out++ = rgb[2]; + *out++ = 255; + } +} + +static void +p2rgba(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + for (x = 0; x < xsize; x++) { + const UINT8* rgba = &palette[*in++ * 4]; + *out++ = rgba[0]; + *out++ = rgba[1]; + *out++ = rgba[2]; + *out++ = rgba[3]; + } +} + +static void +pa2rgba(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + int x; + for (x = 0; x < xsize; x++, in += 4) { + const UINT8* rgb = &palette[in[0] * 4]; + *out++ = rgb[0]; + *out++ = rgb[1]; + *out++ = rgb[2]; + *out++ = in[3]; + } +} + +static void +p2cmyk(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + p2rgb(out, in, xsize, palette); + rgb2cmyk(out, out, xsize); +} + +static void +p2ycbcr(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) +{ + p2rgb(out, in, xsize, palette); + ImagingConvertRGB2YCbCr(out, out, xsize); +} + +static Imaging +frompalette(Imaging imOut, Imaging imIn, const char *mode) +{ + ImagingSectionCookie cookie; + int alpha; + int y; + void (*convert)(UINT8*, const UINT8*, int, const UINT8*); + + /* Map palette image to L, RGB, RGBA, or CMYK */ + + if (!imIn->palette) + return (Imaging) ImagingError_ValueError("no palette"); + + alpha = !strcmp(imIn->mode, "PA"); + + if (strcmp(mode, "1") == 0) + convert = p2bit; + else if (strcmp(mode, "L") == 0) + convert = p2l; + else if (strcmp(mode, "LA") == 0) + convert = (alpha) ? pa2la : p2l; + else if (strcmp(mode, "I") == 0) + convert = p2i; + else if (strcmp(mode, "F") == 0) + convert = p2f; + else if (strcmp(mode, "RGB") == 0) + convert = p2rgb; + else if (strcmp(mode, "RGBA") == 0) + convert = (alpha) ? pa2rgba : p2rgba; + else if (strcmp(mode, "RGBX") == 0) + convert = p2rgba; + else if (strcmp(mode, "CMYK") == 0) + convert = p2cmyk; + else if (strcmp(mode, "YCbCr") == 0) + convert = p2ycbcr; + else + return (Imaging) ImagingError_ValueError("conversion not supported"); + + imOut = ImagingNew2(mode, imOut, imIn); + if (!imOut) + return NULL; + + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) + (*convert)((UINT8*) imOut->image[y], (UINT8*) imIn->image[y], + imIn->xsize, imIn->palette->palette); + ImagingSectionLeave(&cookie); + + return imOut; +} + +static Imaging +topalette(Imaging imOut, Imaging imIn, ImagingPalette inpalette, int dither) +{ + ImagingSectionCookie cookie; + int x, y; + ImagingPalette palette = inpalette;; + + /* Map L or RGB/RGBX/RGBA to palette image */ + if (strcmp(imIn->mode, "L") != 0 && strncmp(imIn->mode, "RGB", 3) != 0) + return (Imaging) ImagingError_ValueError("conversion not supported"); + + if (palette == NULL) { + /* FIXME: make user configurable */ + if (imIn->bands == 1) + palette = ImagingPaletteNew("RGB"); /* Initialised to grey ramp */ + else + palette = ImagingPaletteNewBrowser(); /* Standard colour cube */ + } + + if (!palette) + return (Imaging) ImagingError_ValueError("no palette"); + + imOut = ImagingNew2("P", imOut, imIn); + if (!imOut) { + if (palette != inpalette) + ImagingPaletteDelete(palette); + return NULL; + } + + ImagingPaletteDelete(imOut->palette); + imOut->palette = ImagingPaletteDuplicate(palette); + + if (imIn->bands == 1) { + /* greyscale image */ + + /* Greyscale palette: copy data as is */ + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) + memcpy(imOut->image[y], imIn->image[y], imIn->linesize); + ImagingSectionLeave(&cookie); + + } else { + /* colour image */ + + /* Create mapping cache */ + if (ImagingPaletteCachePrepare(palette) < 0) { + ImagingDelete(imOut); + if (palette != inpalette) + ImagingPaletteDelete(palette); + return NULL; + } + + if (dither) { + /* floyd-steinberg dither */ + + int* errors; + errors = calloc(imIn->xsize + 1, sizeof(int) * 3); + if (!errors) { + ImagingDelete(imOut); + return ImagingError_MemoryError(); + } + + /* Map each pixel to the nearest palette entry */ + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + int r, r0, r1, r2; + int g, g0, g1, g2; + int b, b0, b1, b2; + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = imOut->image8[y]; + int* e = errors; + + r = r0 = r1 = 0; + g = g0 = g1 = 0; + b = b0 = b1 = b2 = 0; + + for (x = 0; x < imIn->xsize; x++, in += 4) { + int d2; + INT16* cache; + + r = CLIP(in[0] + (r + e[3+0])/16); + g = CLIP(in[1] + (g + e[3+1])/16); + b = CLIP(in[2] + (b + e[3+2])/16); + + /* get closest colour */ + cache = &ImagingPaletteCache(palette, r, g, b); + if (cache[0] == 0x100) + ImagingPaletteCacheUpdate(palette, r, g, b); + out[x] = (UINT8) cache[0]; + + r -= (int) palette->palette[cache[0]*4]; + g -= (int) palette->palette[cache[0]*4+1]; + b -= (int) palette->palette[cache[0]*4+2]; + + /* propagate errors (don't ask ;-) */ + r2 = r; d2 = r + r; r += d2; e[0] = r + r0; + r += d2; r0 = r + r1; r1 = r2; r += d2; + g2 = g; d2 = g + g; g += d2; e[1] = g + g0; + g += d2; g0 = g + g1; g1 = g2; g += d2; + b2 = b; d2 = b + b; b += d2; e[2] = b + b0; + b += d2; b0 = b + b1; b1 = b2; b += d2; + + e += 3; + + } + + e[0] = b0; + e[1] = b1; + e[2] = b2; + + } + ImagingSectionLeave(&cookie); + free(errors); + + } else { + + /* closest colour */ + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + int r, g, b; + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = imOut->image8[y]; + + for (x = 0; x < imIn->xsize; x++, in += 4) { + INT16* cache; + + r = in[0]; g = in[1]; b = in[2]; + + /* get closest colour */ + cache = &ImagingPaletteCache(palette, r, g, b); + if (cache[0] == 0x100) + ImagingPaletteCacheUpdate(palette, r, g, b); + out[x] = (UINT8) cache[0]; + + } + } + ImagingSectionLeave(&cookie); + + } + if (inpalette != palette) + ImagingPaletteCacheDelete(palette); + } + + if (inpalette != palette) + ImagingPaletteDelete(palette); + + return imOut; +} + +static Imaging +tobilevel(Imaging imOut, Imaging imIn, int dither) +{ + ImagingSectionCookie cookie; + int x, y; + int* errors; + + /* Map L or RGB to dithered 1 image */ + if (strcmp(imIn->mode, "L") != 0 && strcmp(imIn->mode, "RGB") != 0) + return (Imaging) ImagingError_ValueError("conversion not supported"); + + imOut = ImagingNew2("1", imOut, imIn); + if (!imOut) + return NULL; + + errors = calloc(imIn->xsize + 1, sizeof(int)); + if (!errors) { + ImagingDelete(imOut); + return ImagingError_MemoryError(); + } + + if (imIn->bands == 1) { + + /* map each pixel to black or white, using error diffusion */ + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + int l, l0, l1, l2, d2; + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = imOut->image8[y]; + + l = l0 = l1 = 0; + + for (x = 0; x < imIn->xsize; x++) { + + /* pick closest colour */ + l = CLIP(in[x] + (l + errors[x+1])/16); + out[x] = (l > 128) ? 255 : 0; + + /* propagate errors */ + l -= (int) out[x]; + l2 = l; d2 = l + l; l += d2; errors[x] = l + l0; + l += d2; l0 = l + l1; l1 = l2; l += d2; + } + + errors[x] = l0; + + } + ImagingSectionLeave(&cookie); + + } else { + + /* map each pixel to black or white, using error diffusion */ + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + int l, l0, l1, l2, d2; + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = imOut->image8[y]; + + l = l0 = l1 = 0; + + for (x = 0; x < imIn->xsize; x++, in += 4) { + + /* pick closest colour */ + l = CLIP(L(in)/1000 + (l + errors[x+1])/16); + out[x] = (l > 128) ? 255 : 0; + + /* propagate errors */ + l -= (int) out[x]; + l2 = l; d2 = l + l; l += d2; errors[x] = l + l0; + l += d2; l0 = l + l1; l1 = l2; l += d2; + + } + + errors[x] = l0; + + } + ImagingSectionLeave(&cookie); + } + + free(errors); + + return imOut; +} + + +static Imaging +convert(Imaging imOut, Imaging imIn, const char *mode, + ImagingPalette palette, int dither) +{ + ImagingSectionCookie cookie; + ImagingShuffler convert; + int y; + + if (!imIn) + return (Imaging) ImagingError_ModeError(); + + if (!mode) { + /* Map palette image to full depth */ + if (!imIn->palette) + return (Imaging) ImagingError_ModeError(); + mode = imIn->palette->mode; + } else + /* Same mode? */ + if (!strcmp(imIn->mode, mode)) + return ImagingCopy2(imOut, imIn); + + + /* test for special conversions */ + + if (strcmp(imIn->mode, "P") == 0 || strcmp(imIn->mode, "PA") == 0) + return frompalette(imOut, imIn, mode); + + if (strcmp(mode, "P") == 0) + return topalette(imOut, imIn, palette, dither); + + if (dither && strcmp(mode, "1") == 0) + return tobilevel(imOut, imIn, dither); + + + /* standard conversion machinery */ + + convert = NULL; + + for (y = 0; converters[y].from; y++) + if (!strcmp(imIn->mode, converters[y].from) && + !strcmp(mode, converters[y].to)) { + convert = converters[y].convert; + break; + } + + if (!convert) +#ifdef notdef + return (Imaging) ImagingError_ValueError("conversion not supported"); +#else + { + static char buf[256]; + /* FIXME: may overflow if mode is too large */ + sprintf(buf, "conversion from %s to %s not supported", imIn->mode, mode); + return (Imaging) ImagingError_ValueError(buf); + } +#endif + + imOut = ImagingNew2(mode, imOut, imIn); + if (!imOut) + return NULL; + + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) + (*convert)((UINT8*) imOut->image[y], (UINT8*) imIn->image[y], + imIn->xsize); + ImagingSectionLeave(&cookie); + + return imOut; +} + +Imaging +ImagingConvert(Imaging imIn, const char *mode, + ImagingPalette palette, int dither) +{ + return convert(NULL, imIn, mode, palette, dither); +} + +Imaging +ImagingConvert2(Imaging imOut, Imaging imIn) +{ + return convert(imOut, imIn, imOut->mode, NULL, 0); +} + +Imaging +ImagingConvertInPlace(Imaging imIn, const char* mode) +{ + ImagingSectionCookie cookie; + ImagingShuffler convert; + int y; + + /* limited support for inplace conversion */ + if (strcmp(imIn->mode, "L") == 0 && strcmp(mode, "1") == 0) + convert = l2bit; + else if (strcmp(imIn->mode, "1") == 0 && strcmp(mode, "L") == 0) + convert = bit2l; + else + return ImagingError_ModeError(); + + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) + (*convert)((UINT8*) imIn->image[y], (UINT8*) imIn->image[y], + imIn->xsize); + ImagingSectionLeave(&cookie); + + return imIn; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c new file mode 100755 index 00000000000..40cd01780d9 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c @@ -0,0 +1,387 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * code to convert YCbCr data + * + * history: + * 98-07-01 hk Created + * + * Copyright (c) Secret Labs AB 1998 + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +/* JPEG/JFIF YCbCr conversions + + Y = R * 0.29900 + G * 0.58700 + B * 0.11400 + Cb = R * -0.16874 + G * -0.33126 + B * 0.50000 + 128 + Cr = R * 0.50000 + G * -0.41869 + B * -0.08131 + 128 + + R = Y + + (Cr - 128) * 1.40200 + G = Y + (Cb - 128) * -0.34414 + (Cr - 128) * -0.71414 + B = Y + (Cb - 128) * 1.77200 + +*/ + +#define SCALE 6 /* bits */ + +static INT16 Y_R[] = { 0, 19, 38, 57, 77, 96, 115, 134, 153, 172, 191, +210, 230, 249, 268, 287, 306, 325, 344, 364, 383, 402, 421, 440, 459, +478, 498, 517, 536, 555, 574, 593, 612, 631, 651, 670, 689, 708, 727, +746, 765, 785, 804, 823, 842, 861, 880, 899, 919, 938, 957, 976, 995, +1014, 1033, 1052, 1072, 1091, 1110, 1129, 1148, 1167, 1186, 1206, +1225, 1244, 1263, 1282, 1301, 1320, 1340, 1359, 1378, 1397, 1416, +1435, 1454, 1473, 1493, 1512, 1531, 1550, 1569, 1588, 1607, 1627, +1646, 1665, 1684, 1703, 1722, 1741, 1761, 1780, 1799, 1818, 1837, +1856, 1875, 1894, 1914, 1933, 1952, 1971, 1990, 2009, 2028, 2048, +2067, 2086, 2105, 2124, 2143, 2162, 2182, 2201, 2220, 2239, 2258, +2277, 2296, 2315, 2335, 2354, 2373, 2392, 2411, 2430, 2449, 2469, +2488, 2507, 2526, 2545, 2564, 2583, 2602, 2622, 2641, 2660, 2679, +2698, 2717, 2736, 2756, 2775, 2794, 2813, 2832, 2851, 2870, 2890, +2909, 2928, 2947, 2966, 2985, 3004, 3023, 3043, 3062, 3081, 3100, +3119, 3138, 3157, 3177, 3196, 3215, 3234, 3253, 3272, 3291, 3311, +3330, 3349, 3368, 3387, 3406, 3425, 3444, 3464, 3483, 3502, 3521, +3540, 3559, 3578, 3598, 3617, 3636, 3655, 3674, 3693, 3712, 3732, +3751, 3770, 3789, 3808, 3827, 3846, 3865, 3885, 3904, 3923, 3942, +3961, 3980, 3999, 4019, 4038, 4057, 4076, 4095, 4114, 4133, 4153, +4172, 4191, 4210, 4229, 4248, 4267, 4286, 4306, 4325, 4344, 4363, +4382, 4401, 4420, 4440, 4459, 4478, 4497, 4516, 4535, 4554, 4574, +4593, 4612, 4631, 4650, 4669, 4688, 4707, 4727, 4746, 4765, 4784, +4803, 4822, 4841, 4861, 4880 }; + +static INT16 Y_G[] = { 0, 38, 75, 113, 150, 188, 225, 263, 301, 338, +376, 413, 451, 488, 526, 564, 601, 639, 676, 714, 751, 789, 826, 864, +902, 939, 977, 1014, 1052, 1089, 1127, 1165, 1202, 1240, 1277, 1315, +1352, 1390, 1428, 1465, 1503, 1540, 1578, 1615, 1653, 1691, 1728, +1766, 1803, 1841, 1878, 1916, 1954, 1991, 2029, 2066, 2104, 2141, +2179, 2217, 2254, 2292, 2329, 2367, 2404, 2442, 2479, 2517, 2555, +2592, 2630, 2667, 2705, 2742, 2780, 2818, 2855, 2893, 2930, 2968, +3005, 3043, 3081, 3118, 3156, 3193, 3231, 3268, 3306, 3344, 3381, +3419, 3456, 3494, 3531, 3569, 3607, 3644, 3682, 3719, 3757, 3794, +3832, 3870, 3907, 3945, 3982, 4020, 4057, 4095, 4132, 4170, 4208, +4245, 4283, 4320, 4358, 4395, 4433, 4471, 4508, 4546, 4583, 4621, +4658, 4696, 4734, 4771, 4809, 4846, 4884, 4921, 4959, 4997, 5034, +5072, 5109, 5147, 5184, 5222, 5260, 5297, 5335, 5372, 5410, 5447, +5485, 5522, 5560, 5598, 5635, 5673, 5710, 5748, 5785, 5823, 5861, +5898, 5936, 5973, 6011, 6048, 6086, 6124, 6161, 6199, 6236, 6274, +6311, 6349, 6387, 6424, 6462, 6499, 6537, 6574, 6612, 6650, 6687, +6725, 6762, 6800, 6837, 6875, 6913, 6950, 6988, 7025, 7063, 7100, +7138, 7175, 7213, 7251, 7288, 7326, 7363, 7401, 7438, 7476, 7514, +7551, 7589, 7626, 7664, 7701, 7739, 7777, 7814, 7852, 7889, 7927, +7964, 8002, 8040, 8077, 8115, 8152, 8190, 8227, 8265, 8303, 8340, +8378, 8415, 8453, 8490, 8528, 8566, 8603, 8641, 8678, 8716, 8753, +8791, 8828, 8866, 8904, 8941, 8979, 9016, 9054, 9091, 9129, 9167, +9204, 9242, 9279, 9317, 9354, 9392, 9430, 9467, 9505, 9542, 9580 }; + +static INT16 Y_B[] = { 0, 7, 15, 22, 29, 36, 44, 51, 58, 66, 73, 80, +88, 95, 102, 109, 117, 124, 131, 139, 146, 153, 161, 168, 175, 182, +190, 197, 204, 212, 219, 226, 233, 241, 248, 255, 263, 270, 277, 285, +292, 299, 306, 314, 321, 328, 336, 343, 350, 358, 365, 372, 379, 387, +394, 401, 409, 416, 423, 430, 438, 445, 452, 460, 467, 474, 482, 489, +496, 503, 511, 518, 525, 533, 540, 547, 554, 562, 569, 576, 584, 591, +598, 606, 613, 620, 627, 635, 642, 649, 657, 664, 671, 679, 686, 693, +700, 708, 715, 722, 730, 737, 744, 751, 759, 766, 773, 781, 788, 795, +803, 810, 817, 824, 832, 839, 846, 854, 861, 868, 876, 883, 890, 897, +905, 912, 919, 927, 934, 941, 948, 956, 963, 970, 978, 985, 992, 1000, +1007, 1014, 1021, 1029, 1036, 1043, 1051, 1058, 1065, 1073, 1080, +1087, 1094, 1102, 1109, 1116, 1124, 1131, 1138, 1145, 1153, 1160, +1167, 1175, 1182, 1189, 1197, 1204, 1211, 1218, 1226, 1233, 1240, +1248, 1255, 1262, 1270, 1277, 1284, 1291, 1299, 1306, 1313, 1321, +1328, 1335, 1342, 1350, 1357, 1364, 1372, 1379, 1386, 1394, 1401, +1408, 1415, 1423, 1430, 1437, 1445, 1452, 1459, 1466, 1474, 1481, +1488, 1496, 1503, 1510, 1518, 1525, 1532, 1539, 1547, 1554, 1561, +1569, 1576, 1583, 1591, 1598, 1605, 1612, 1620, 1627, 1634, 1642, +1649, 1656, 1663, 1671, 1678, 1685, 1693, 1700, 1707, 1715, 1722, +1729, 1736, 1744, 1751, 1758, 1766, 1773, 1780, 1788, 1795, 1802, +1809, 1817, 1824, 1831, 1839, 1846, 1853, 1860 }; + +static INT16 Cb_R[] = { 0, -10, -21, -31, -42, -53, -64, -75, -85, +-96, -107, -118, -129, -139, -150, -161, -172, -183, -193, -204, -215, +-226, -237, -247, -258, -269, -280, -291, -301, -312, -323, -334, +-345, -355, -366, -377, -388, -399, -409, -420, -431, -442, -453, +-463, -474, -485, -496, -507, -517, -528, -539, -550, -561, -571, +-582, -593, -604, -615, -625, -636, -647, -658, -669, -679, -690, +-701, -712, -723, -733, -744, -755, -766, -777, -787, -798, -809, +-820, -831, -841, -852, -863, -874, -885, -895, -906, -917, -928, +-939, -949, -960, -971, -982, -993, -1003, -1014, -1025, -1036, -1047, +-1057, -1068, -1079, -1090, -1101, -1111, -1122, -1133, -1144, -1155, +-1165, -1176, -1187, -1198, -1209, -1219, -1230, -1241, -1252, -1263, +-1273, -1284, -1295, -1306, -1317, -1327, -1338, -1349, -1360, -1371, +-1381, -1392, -1403, -1414, -1425, -1435, -1446, -1457, -1468, -1479, +-1489, -1500, -1511, -1522, -1533, -1543, -1554, -1565, -1576, -1587, +-1597, -1608, -1619, -1630, -1641, -1651, -1662, -1673, -1684, -1694, +-1705, -1716, -1727, -1738, -1748, -1759, -1770, -1781, -1792, -1802, +-1813, -1824, -1835, -1846, -1856, -1867, -1878, -1889, -1900, -1910, +-1921, -1932, -1943, -1954, -1964, -1975, -1986, -1997, -2008, -2018, +-2029, -2040, -2051, -2062, -2072, -2083, -2094, -2105, -2116, -2126, +-2137, -2148, -2159, -2170, -2180, -2191, -2202, -2213, -2224, -2234, +-2245, -2256, -2267, -2278, -2288, -2299, -2310, -2321, -2332, -2342, +-2353, -2364, -2375, -2386, -2396, -2407, -2418, -2429, -2440, -2450, +-2461, -2472, -2483, -2494, -2504, -2515, -2526, -2537, -2548, -2558, +-2569, -2580, -2591, -2602, -2612, -2623, -2634, -2645, -2656, -2666, +-2677, -2688, -2699, -2710, -2720, -2731, -2742, -2753 }; + +static INT16 Cb_G[] = { 0, -20, -41, -63, -84, -105, -126, -147, -169, +-190, -211, -232, -253, -275, -296, -317, -338, -359, -381, -402, +-423, -444, -465, -487, -508, -529, -550, -571, -593, -614, -635, +-656, -677, -699, -720, -741, -762, -783, -805, -826, -847, -868, +-889, -911, -932, -953, -974, -995, -1017, -1038, -1059, -1080, -1101, +-1123, -1144, -1165, -1186, -1207, -1229, -1250, -1271, -1292, -1313, +-1335, -1356, -1377, -1398, -1419, -1441, -1462, -1483, -1504, -1525, +-1547, -1568, -1589, -1610, -1631, -1653, -1674, -1695, -1716, -1737, +-1759, -1780, -1801, -1822, -1843, -1865, -1886, -1907, -1928, -1949, +-1971, -1992, -2013, -2034, -2055, -2077, -2098, -2119, -2140, -2161, +-2183, -2204, -2225, -2246, -2267, -2289, -2310, -2331, -2352, -2373, +-2395, -2416, -2437, -2458, -2479, -2501, -2522, -2543, -2564, -2585, +-2607, -2628, -2649, -2670, -2691, -2713, -2734, -2755, -2776, -2797, +-2819, -2840, -2861, -2882, -2903, -2925, -2946, -2967, -2988, -3009, +-3031, -3052, -3073, -3094, -3115, -3137, -3158, -3179, -3200, -3221, +-3243, -3264, -3285, -3306, -3328, -3349, -3370, -3391, -3412, -3434, +-3455, -3476, -3497, -3518, -3540, -3561, -3582, -3603, -3624, -3646, +-3667, -3688, -3709, -3730, -3752, -3773, -3794, -3815, -3836, -3858, +-3879, -3900, -3921, -3942, -3964, -3985, -4006, -4027, -4048, -4070, +-4091, -4112, -4133, -4154, -4176, -4197, -4218, -4239, -4260, -4282, +-4303, -4324, -4345, -4366, -4388, -4409, -4430, -4451, -4472, -4494, +-4515, -4536, -4557, -4578, -4600, -4621, -4642, -4663, -4684, -4706, +-4727, -4748, -4769, -4790, -4812, -4833, -4854, -4875, -4896, -4918, +-4939, -4960, -4981, -5002, -5024, -5045, -5066, -5087, -5108, -5130, +-5151, -5172, -5193, -5214, -5236, -5257, -5278, -5299, -5320, -5342, +-5363, -5384, -5405 }; + +static INT16 Cb_B[] = { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, +320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, +768, 800, 832, 864, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, +1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, +1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, +1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176, 2208, +2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, +2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, +2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, +3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, +3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, +4000, 4032, 4064, 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, +4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, +4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, +5056, 5088, 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, +5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, +5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, +6112, 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, +6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, +6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, +7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, +7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, +7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160 }; + +#define Cr_R Cb_B + +static INT16 Cr_G[] = { 0, -26, -53, -79, -106, -133, -160, -187, +-213, -240, -267, -294, -321, -347, -374, -401, -428, -455, -481, +-508, -535, -562, -589, -615, -642, -669, -696, -722, -749, -776, +-803, -830, -856, -883, -910, -937, -964, -990, -1017, -1044, -1071, +-1098, -1124, -1151, -1178, -1205, -1232, -1258, -1285, -1312, -1339, +-1366, -1392, -1419, -1446, -1473, -1500, -1526, -1553, -1580, -1607, +-1634, -1660, -1687, -1714, -1741, -1768, -1794, -1821, -1848, -1875, +-1902, -1928, -1955, -1982, -2009, -2036, -2062, -2089, -2116, -2143, +-2169, -2196, -2223, -2250, -2277, -2303, -2330, -2357, -2384, -2411, +-2437, -2464, -2491, -2518, -2545, -2571, -2598, -2625, -2652, -2679, +-2705, -2732, -2759, -2786, -2813, -2839, -2866, -2893, -2920, -2947, +-2973, -3000, -3027, -3054, -3081, -3107, -3134, -3161, -3188, -3215, +-3241, -3268, -3295, -3322, -3349, -3375, -3402, -3429, -3456, -3483, +-3509, -3536, -3563, -3590, -3616, -3643, -3670, -3697, -3724, -3750, +-3777, -3804, -3831, -3858, -3884, -3911, -3938, -3965, -3992, -4018, +-4045, -4072, -4099, -4126, -4152, -4179, -4206, -4233, -4260, -4286, +-4313, -4340, -4367, -4394, -4420, -4447, -4474, -4501, -4528, -4554, +-4581, -4608, -4635, -4662, -4688, -4715, -4742, -4769, -4796, -4822, +-4849, -4876, -4903, -4929, -4956, -4983, -5010, -5037, -5063, -5090, +-5117, -5144, -5171, -5197, -5224, -5251, -5278, -5305, -5331, -5358, +-5385, -5412, -5439, -5465, -5492, -5519, -5546, -5573, -5599, -5626, +-5653, -5680, -5707, -5733, -5760, -5787, -5814, -5841, -5867, -5894, +-5921, -5948, -5975, -6001, -6028, -6055, -6082, -6109, -6135, -6162, +-6189, -6216, -6243, -6269, -6296, -6323, -6350, -6376, -6403, -6430, +-6457, -6484, -6510, -6537, -6564, -6591, -6618, -6644, -6671, -6698, +-6725, -6752, -6778, -6805, -6832 }; + +static INT16 Cr_B[] = { 0, -4, -9, -15, -20, -25, -30, -35, -41, -46, +-51, -56, -61, -67, -72, -77, -82, -87, -93, -98, -103, -108, -113, +-119, -124, -129, -134, -140, -145, -150, -155, -160, -166, -171, +-176, -181, -186, -192, -197, -202, -207, -212, -218, -223, -228, +-233, -238, -244, -249, -254, -259, -264, -270, -275, -280, -285, +-290, -296, -301, -306, -311, -316, -322, -327, -332, -337, -342, +-348, -353, -358, -363, -368, -374, -379, -384, -389, -394, -400, +-405, -410, -415, -421, -426, -431, -436, -441, -447, -452, -457, +-462, -467, -473, -478, -483, -488, -493, -499, -504, -509, -514, +-519, -525, -530, -535, -540, -545, -551, -556, -561, -566, -571, +-577, -582, -587, -592, -597, -603, -608, -613, -618, -623, -629, +-634, -639, -644, -649, -655, -660, -665, -670, -675, -681, -686, +-691, -696, -702, -707, -712, -717, -722, -728, -733, -738, -743, +-748, -754, -759, -764, -769, -774, -780, -785, -790, -795, -800, +-806, -811, -816, -821, -826, -832, -837, -842, -847, -852, -858, +-863, -868, -873, -878, -884, -889, -894, -899, -904, -910, -915, +-920, -925, -930, -936, -941, -946, -951, -957, -962, -967, -972, +-977, -983, -988, -993, -998, -1003, -1009, -1014, -1019, -1024, +-1029, -1035, -1040, -1045, -1050, -1055, -1061, -1066, -1071, -1076, +-1081, -1087, -1092, -1097, -1102, -1107, -1113, -1118, -1123, -1128, +-1133, -1139, -1144, -1149, -1154, -1159, -1165, -1170, -1175, -1180, +-1185, -1191, -1196, -1201, -1206, -1211, -1217, -1222, -1227, -1232, +-1238, -1243, -1248, -1253, -1258, -1264, -1269, -1274, -1279, -1284, +-1290, -1295, -1300, -1305, -1310, -1316, -1321, -1326 }; + +static INT16 R_Cr[] = { -11484, -11394, -11305, -11215, -11125, +-11036, -10946, -10856, -10766, -10677, -10587, -10497, -10407, +-10318, -10228, -10138, -10049, -9959, -9869, -9779, -9690, -9600, +-9510, -9420, -9331, -9241, -9151, -9062, -8972, -8882, -8792, -8703, +-8613, -8523, -8433, -8344, -8254, -8164, -8075, -7985, -7895, -7805, +-7716, -7626, -7536, -7446, -7357, -7267, -7177, -7088, -6998, -6908, +-6818, -6729, -6639, -6549, -6459, -6370, -6280, -6190, -6101, -6011, +-5921, -5831, -5742, -5652, -5562, -5472, -5383, -5293, -5203, -5113, +-5024, -4934, -4844, -4755, -4665, -4575, -4485, -4396, -4306, -4216, +-4126, -4037, -3947, -3857, -3768, -3678, -3588, -3498, -3409, -3319, +-3229, -3139, -3050, -2960, -2870, -2781, -2691, -2601, -2511, -2422, +-2332, -2242, -2152, -2063, -1973, -1883, -1794, -1704, -1614, -1524, +-1435, -1345, -1255, -1165, -1076, -986, -896, -807, -717, -627, -537, +-448, -358, -268, -178, -89, 0, 90, 179, 269, 359, 449, 538, 628, 718, +808, 897, 987, 1077, 1166, 1256, 1346, 1436, 1525, 1615, 1705, 1795, +1884, 1974, 2064, 2153, 2243, 2333, 2423, 2512, 2602, 2692, 2782, +2871, 2961, 3051, 3140, 3230, 3320, 3410, 3499, 3589, 3679, 3769, +3858, 3948, 4038, 4127, 4217, 4307, 4397, 4486, 4576, 4666, 4756, +4845, 4935, 5025, 5114, 5204, 5294, 5384, 5473, 5563, 5653, 5743, +5832, 5922, 6012, 6102, 6191, 6281, 6371, 6460, 6550, 6640, 6730, +6819, 6909, 6999, 7089, 7178, 7268, 7358, 7447, 7537, 7627, 7717, +7806, 7896, 7986, 8076, 8165, 8255, 8345, 8434, 8524, 8614, 8704, +8793, 8883, 8973, 9063, 9152, 9242, 9332, 9421, 9511, 9601, 9691, +9780, 9870, 9960, 10050, 10139, 10229, 10319, 10408, 10498, 10588, +10678, 10767, 10857, 10947, 11037, 11126, 11216, 11306, 11395 }; + +static INT16 G_Cb[] = { 2819, 2797, 2775, 2753, 2731, 2709, 2687, +2665, 2643, 2621, 2599, 2577, 2555, 2533, 2511, 2489, 2467, 2445, +2423, 2401, 2379, 2357, 2335, 2313, 2291, 2269, 2247, 2225, 2202, +2180, 2158, 2136, 2114, 2092, 2070, 2048, 2026, 2004, 1982, 1960, +1938, 1916, 1894, 1872, 1850, 1828, 1806, 1784, 1762, 1740, 1718, +1696, 1674, 1652, 1630, 1608, 1586, 1564, 1542, 1520, 1498, 1476, +1454, 1432, 1410, 1388, 1366, 1344, 1321, 1299, 1277, 1255, 1233, +1211, 1189, 1167, 1145, 1123, 1101, 1079, 1057, 1035, 1013, 991, 969, +947, 925, 903, 881, 859, 837, 815, 793, 771, 749, 727, 705, 683, 661, +639, 617, 595, 573, 551, 529, 507, 485, 463, 440, 418, 396, 374, 352, +330, 308, 286, 264, 242, 220, 198, 176, 154, 132, 110, 88, 66, 44, 22, +0, -21, -43, -65, -87, -109, -131, -153, -175, -197, -219, -241, -263, +-285, -307, -329, -351, -373, -395, -417, -439, -462, -484, -506, +-528, -550, -572, -594, -616, -638, -660, -682, -704, -726, -748, +-770, -792, -814, -836, -858, -880, -902, -924, -946, -968, -990, +-1012, -1034, -1056, -1078, -1100, -1122, -1144, -1166, -1188, -1210, +-1232, -1254, -1276, -1298, -1320, -1343, -1365, -1387, -1409, -1431, +-1453, -1475, -1497, -1519, -1541, -1563, -1585, -1607, -1629, -1651, +-1673, -1695, -1717, -1739, -1761, -1783, -1805, -1827, -1849, -1871, +-1893, -1915, -1937, -1959, -1981, -2003, -2025, -2047, -2069, -2091, +-2113, -2135, -2157, -2179, -2201, -2224, -2246, -2268, -2290, -2312, +-2334, -2356, -2378, -2400, -2422, -2444, -2466, -2488, -2510, -2532, +-2554, -2576, -2598, -2620, -2642, -2664, -2686, -2708, -2730, -2752, +-2774, -2796 }; + +static INT16 G_Cr[] = { 5850, 5805, 5759, 5713, 5667, 5622, 5576, +5530, 5485, 5439, 5393, 5347, 5302, 5256, 5210, 5165, 5119, 5073, +5028, 4982, 4936, 4890, 4845, 4799, 4753, 4708, 4662, 4616, 4570, +4525, 4479, 4433, 4388, 4342, 4296, 4251, 4205, 4159, 4113, 4068, +4022, 3976, 3931, 3885, 3839, 3794, 3748, 3702, 3656, 3611, 3565, +3519, 3474, 3428, 3382, 3336, 3291, 3245, 3199, 3154, 3108, 3062, +3017, 2971, 2925, 2879, 2834, 2788, 2742, 2697, 2651, 2605, 2559, +2514, 2468, 2422, 2377, 2331, 2285, 2240, 2194, 2148, 2102, 2057, +2011, 1965, 1920, 1874, 1828, 1782, 1737, 1691, 1645, 1600, 1554, +1508, 1463, 1417, 1371, 1325, 1280, 1234, 1188, 1143, 1097, 1051, +1006, 960, 914, 868, 823, 777, 731, 686, 640, 594, 548, 503, 457, 411, +366, 320, 274, 229, 183, 137, 91, 46, 0, -45, -90, -136, -182, -228, +-273, -319, -365, -410, -456, -502, -547, -593, -639, -685, -730, +-776, -822, -867, -913, -959, -1005, -1050, -1096, -1142, -1187, +-1233, -1279, -1324, -1370, -1416, -1462, -1507, -1553, -1599, -1644, +-1690, -1736, -1781, -1827, -1873, -1919, -1964, -2010, -2056, -2101, +-2147, -2193, -2239, -2284, -2330, -2376, -2421, -2467, -2513, -2558, +-2604, -2650, -2696, -2741, -2787, -2833, -2878, -2924, -2970, -3016, +-3061, -3107, -3153, -3198, -3244, -3290, -3335, -3381, -3427, -3473, +-3518, -3564, -3610, -3655, -3701, -3747, -3793, -3838, -3884, -3930, +-3975, -4021, -4067, -4112, -4158, -4204, -4250, -4295, -4341, -4387, +-4432, -4478, -4524, -4569, -4615, -4661, -4707, -4752, -4798, -4844, +-4889, -4935, -4981, -5027, -5072, -5118, -5164, -5209, -5255, -5301, +-5346, -5392, -5438, -5484, -5529, -5575, -5621, -5666, -5712, -5758, +-5804 }; + +static INT16 B_Cb[] = { -14515, -14402, -14288, -14175, -14062, +-13948, -13835, -13721, -13608, -13495, -13381, -13268, -13154, +-13041, -12928, -12814, -12701, -12587, -12474, -12360, -12247, +-12134, -12020, -11907, -11793, -11680, -11567, -11453, -11340, +-11226, -11113, -11000, -10886, -10773, -10659, -10546, -10433, +-10319, -10206, -10092, -9979, -9865, -9752, -9639, -9525, -9412, +-9298, -9185, -9072, -8958, -8845, -8731, -8618, -8505, -8391, -8278, +-8164, -8051, -7938, -7824, -7711, -7597, -7484, -7371, -7257, -7144, +-7030, -6917, -6803, -6690, -6577, -6463, -6350, -6236, -6123, -6010, +-5896, -5783, -5669, -5556, -5443, -5329, -5216, -5102, -4989, -4876, +-4762, -4649, -4535, -4422, -4309, -4195, -4082, -3968, -3855, -3741, +-3628, -3515, -3401, -3288, -3174, -3061, -2948, -2834, -2721, -2607, +-2494, -2381, -2267, -2154, -2040, -1927, -1814, -1700, -1587, -1473, +-1360, -1246, -1133, -1020, -906, -793, -679, -566, -453, -339, -226, +-112, 0, 113, 227, 340, 454, 567, 680, 794, 907, 1021, 1134, 1247, +1361, 1474, 1588, 1701, 1815, 1928, 2041, 2155, 2268, 2382, 2495, +2608, 2722, 2835, 2949, 3062, 3175, 3289, 3402, 3516, 3629, 3742, +3856, 3969, 4083, 4196, 4310, 4423, 4536, 4650, 4763, 4877, 4990, +5103, 5217, 5330, 5444, 5557, 5670, 5784, 5897, 6011, 6124, 6237, +6351, 6464, 6578, 6691, 6804, 6918, 7031, 7145, 7258, 7372, 7485, +7598, 7712, 7825, 7939, 8052, 8165, 8279, 8392, 8506, 8619, 8732, +8846, 8959, 9073, 9186, 9299, 9413, 9526, 9640, 9753, 9866, 9980, +10093, 10207, 10320, 10434, 10547, 10660, 10774, 10887, 11001, 11114, +11227, 11341, 11454, 11568, 11681, 11794, 11908, 12021, 12135, 12248, +12361, 12475, 12588, 12702, 12815, 12929, 13042, 13155, 13269, 13382, +13496, 13609, 13722, 13836, 13949, 14063, 14176, 14289, 14403 }; + + +void +ImagingConvertRGB2YCbCr(UINT8* out, const UINT8* in, int pixels) +{ + int x; + UINT8 a; + int r, g, b; + int y, cr, cb; + + for (x = 0; x < pixels; x++, in +=4, out += 4) { + + r = in[0]; + g = in[1]; + b = in[2]; + a = in[3]; + + y = (Y_R[r] + Y_G[g] + Y_B[b]) >> SCALE; + cb = ((Cb_R[r] + Cb_G[g] + Cb_B[b]) >> SCALE) + 128; + cr = ((Cr_R[r] + Cr_G[g] + Cr_B[b]) >> SCALE) + 128; + + out[0] = (UINT8) y; + out[1] = (UINT8) cb; + out[2] = (UINT8) cr; + out[3] = a; + } +} + +void +ImagingConvertYCbCr2RGB(UINT8* out, const UINT8* in, int pixels) +{ + int x; + UINT8 a; + int r, g, b; + int y, cr, cb; + + for (x = 0; x < pixels; x++, in += 4, out += 4) { + + y = in[0]; + cb = in[1]; + cr = in[2]; + a = in[3]; + + r = y + (( R_Cr[cr]) >> SCALE); + g = y + ((G_Cb[cb] + G_Cr[cr]) >> SCALE); + b = y + ((B_Cb[cb] ) >> SCALE); + + out[0] = (r <= 0) ? 0 : (r >= 255) ? 255 : r; + out[1] = (g <= 0) ? 0 : (g >= 255) ? 255 : g; + out[2] = (b <= 0) ? 0 : (b >= 255) ? 255 : b; + out[3] = a; + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c new file mode 100755 index 00000000000..4a1fc248974 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c @@ -0,0 +1,58 @@ +/* + * The Python Imaging Library + * $Id$ + * + * copy image + * + * history: + * 95-11-26 fl Moved from Imaging.c + * 97-05-12 fl Added ImagingCopy2 + * 97-08-28 fl Allow imOut == NULL in ImagingCopy2 + * + * Copyright (c) Fredrik Lundh 1995-97. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + + +static Imaging +_copy(Imaging imOut, Imaging imIn) +{ + ImagingSectionCookie cookie; + int y; + + if (!imIn) + return (Imaging) ImagingError_ValueError(NULL); + + imOut = ImagingNew2(imIn->mode, imOut, imIn); + if (!imOut) + return NULL; + + ImagingCopyInfo(imOut, imIn); + + ImagingSectionEnter(&cookie); + if (imIn->block != NULL && imOut->block != NULL) + memcpy(imOut->block, imIn->block, imIn->ysize * imIn->linesize); + else + for (y = 0; y < imIn->ysize; y++) + memcpy(imOut->image[y], imIn->image[y], imIn->linesize); + ImagingSectionLeave(&cookie); + + return imOut; +} + +Imaging +ImagingCopy(Imaging imIn) +{ + return _copy(NULL, imIn); +} + +Imaging +ImagingCopy2(Imaging imOut, Imaging imIn) +{ + return _copy(imOut, imIn); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c new file mode 100755 index 00000000000..d83d0fbacb0 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c @@ -0,0 +1,87 @@ +/* + * The Python Imaging Library + * $Id$ + * + * calculate ISO 3307 checksum + * + * history: + * 96-12-10 fl: Created (based on example in the PNG spec) + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +/* Precalculated CRC values (created by makecrctable.py) */ + +static UINT32 crc32table[] = { 0x0, 0x77073096L, 0xEE0E612CL, +0x990951BAL, 0x76DC419L, 0x706AF48FL, 0xE963A535L, 0x9E6495A3L, +0xEDB8832L, 0x79DCB8A4L, 0xE0D5E91EL, 0x97D2D988L, 0x9B64C2BL, +0x7EB17CBDL, 0xE7B82D07L, 0x90BF1D91L, 0x1DB71064L, 0x6AB020F2L, +0xF3B97148L, 0x84BE41DEL, 0x1ADAD47DL, 0x6DDDE4EBL, 0xF4D4B551L, +0x83D385C7L, 0x136C9856L, 0x646BA8C0L, 0xFD62F97AL, 0x8A65C9ECL, +0x14015C4FL, 0x63066CD9L, 0xFA0F3D63L, 0x8D080DF5L, 0x3B6E20C8L, +0x4C69105EL, 0xD56041E4L, 0xA2677172L, 0x3C03E4D1L, 0x4B04D447L, +0xD20D85FDL, 0xA50AB56BL, 0x35B5A8FAL, 0x42B2986CL, 0xDBBBC9D6L, +0xACBCF940L, 0x32D86CE3L, 0x45DF5C75L, 0xDCD60DCFL, 0xABD13D59L, +0x26D930ACL, 0x51DE003AL, 0xC8D75180L, 0xBFD06116L, 0x21B4F4B5L, +0x56B3C423L, 0xCFBA9599L, 0xB8BDA50FL, 0x2802B89EL, 0x5F058808L, +0xC60CD9B2L, 0xB10BE924L, 0x2F6F7C87L, 0x58684C11L, 0xC1611DABL, +0xB6662D3DL, 0x76DC4190L, 0x1DB7106L, 0x98D220BCL, 0xEFD5102AL, +0x71B18589L, 0x6B6B51FL, 0x9FBFE4A5L, 0xE8B8D433L, 0x7807C9A2L, +0xF00F934L, 0x9609A88EL, 0xE10E9818L, 0x7F6A0DBBL, 0x86D3D2DL, +0x91646C97L, 0xE6635C01L, 0x6B6B51F4L, 0x1C6C6162L, 0x856530D8L, +0xF262004EL, 0x6C0695EDL, 0x1B01A57BL, 0x8208F4C1L, 0xF50FC457L, +0x65B0D9C6L, 0x12B7E950L, 0x8BBEB8EAL, 0xFCB9887CL, 0x62DD1DDFL, +0x15DA2D49L, 0x8CD37CF3L, 0xFBD44C65L, 0x4DB26158L, 0x3AB551CEL, +0xA3BC0074L, 0xD4BB30E2L, 0x4ADFA541L, 0x3DD895D7L, 0xA4D1C46DL, +0xD3D6F4FBL, 0x4369E96AL, 0x346ED9FCL, 0xAD678846L, 0xDA60B8D0L, +0x44042D73L, 0x33031DE5L, 0xAA0A4C5FL, 0xDD0D7CC9L, 0x5005713CL, +0x270241AAL, 0xBE0B1010L, 0xC90C2086L, 0x5768B525L, 0x206F85B3L, +0xB966D409L, 0xCE61E49FL, 0x5EDEF90EL, 0x29D9C998L, 0xB0D09822L, +0xC7D7A8B4L, 0x59B33D17L, 0x2EB40D81L, 0xB7BD5C3BL, 0xC0BA6CADL, +0xEDB88320L, 0x9ABFB3B6L, 0x3B6E20CL, 0x74B1D29AL, 0xEAD54739L, +0x9DD277AFL, 0x4DB2615L, 0x73DC1683L, 0xE3630B12L, 0x94643B84L, +0xD6D6A3EL, 0x7A6A5AA8L, 0xE40ECF0BL, 0x9309FF9DL, 0xA00AE27L, +0x7D079EB1L, 0xF00F9344L, 0x8708A3D2L, 0x1E01F268L, 0x6906C2FEL, +0xF762575DL, 0x806567CBL, 0x196C3671L, 0x6E6B06E7L, 0xFED41B76L, +0x89D32BE0L, 0x10DA7A5AL, 0x67DD4ACCL, 0xF9B9DF6FL, 0x8EBEEFF9L, +0x17B7BE43L, 0x60B08ED5L, 0xD6D6A3E8L, 0xA1D1937EL, 0x38D8C2C4L, +0x4FDFF252L, 0xD1BB67F1L, 0xA6BC5767L, 0x3FB506DDL, 0x48B2364BL, +0xD80D2BDAL, 0xAF0A1B4CL, 0x36034AF6L, 0x41047A60L, 0xDF60EFC3L, +0xA867DF55L, 0x316E8EEFL, 0x4669BE79L, 0xCB61B38CL, 0xBC66831AL, +0x256FD2A0L, 0x5268E236L, 0xCC0C7795L, 0xBB0B4703L, 0x220216B9L, +0x5505262FL, 0xC5BA3BBEL, 0xB2BD0B28L, 0x2BB45A92L, 0x5CB36A04L, +0xC2D7FFA7L, 0xB5D0CF31L, 0x2CD99E8BL, 0x5BDEAE1DL, 0x9B64C2B0L, +0xEC63F226L, 0x756AA39CL, 0x26D930AL, 0x9C0906A9L, 0xEB0E363FL, +0x72076785L, 0x5005713L, 0x95BF4A82L, 0xE2B87A14L, 0x7BB12BAEL, +0xCB61B38L, 0x92D28E9BL, 0xE5D5BE0DL, 0x7CDCEFB7L, 0xBDBDF21L, +0x86D3D2D4L, 0xF1D4E242L, 0x68DDB3F8L, 0x1FDA836EL, 0x81BE16CDL, +0xF6B9265BL, 0x6FB077E1L, 0x18B74777L, 0x88085AE6L, 0xFF0F6A70L, +0x66063BCAL, 0x11010B5CL, 0x8F659EFFL, 0xF862AE69L, 0x616BFFD3L, +0x166CCF45L, 0xA00AE278L, 0xD70DD2EEL, 0x4E048354L, 0x3903B3C2L, +0xA7672661L, 0xD06016F7L, 0x4969474DL, 0x3E6E77DBL, 0xAED16A4AL, +0xD9D65ADCL, 0x40DF0B66L, 0x37D83BF0L, 0xA9BCAE53L, 0xDEBB9EC5L, +0x47B2CF7FL, 0x30B5FFE9L, 0xBDBDF21CL, 0xCABAC28AL, 0x53B39330L, +0x24B4A3A6L, 0xBAD03605L, 0xCDD70693L, 0x54DE5729L, 0x23D967BFL, +0xB3667A2EL, 0xC4614AB8L, 0x5D681B02L, 0x2A6F2B94L, 0xB40BBE37L, +0xC30C8EA1L, 0x5A05DF1BL, 0x2D02EF8DL }; + + +UINT32 +ImagingCRC32(UINT32 crc, UINT8* buffer, int bytes) +{ + int i; + + crc ^= 0xFFFFFFFFL; + + for (i = 0; i < bytes; i++) + crc = crc32table[(UINT8) crc ^ buffer[i]] ^ (crc >> 8); + + return crc ^ 0xFFFFFFFFL; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c new file mode 100755 index 00000000000..5acacd4c47c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c @@ -0,0 +1,61 @@ +/* + * The Python Imaging Library + * $Id$ + * + * cut region from image + * + * history: + * 95-11-27 fl Created + * 98-07-10 fl Fixed "null result" error + * 99-02-05 fl Rewritten to use Paste primitive + * + * Copyright (c) Secret Labs AB 1997-99. + * Copyright (c) Fredrik Lundh 1995. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +Imaging +ImagingCrop(Imaging imIn, int sx0, int sy0, int sx1, int sy1) +{ + Imaging imOut; + int xsize, ysize; + int dx0, dy0, dx1, dy1; + INT32 zero = 0; + + if (!imIn) + return (Imaging) ImagingError_ModeError(); + + xsize = sx1 - sx0; + if (xsize < 0) + xsize = 0; + ysize = sy1 - sy0; + if (ysize < 0) + ysize = 0; + + imOut = ImagingNew(imIn->mode, xsize, ysize); + if (!imOut) + return NULL; + + ImagingCopyInfo(imOut, imIn); + + if (sx0 < 0 || sy0 < 0 || sx1 > imIn->xsize || sy1 > imIn->ysize) + (void) ImagingFill(imOut, &zero); + + dx0 = -sx0; + dy0 = -sy0; + dx1 = imIn->xsize - sx0; + dy1 = imIn->ysize - sy0; + + /* paste the source image on top of the output image!!! */ + if (ImagingPaste(imOut, imIn, NULL, dx0, dy0, dx1, dy1) < 0) { + ImagingDelete(imOut); + return NULL; + } + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c new file mode 100755 index 00000000000..36dc24ef3ac --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c @@ -0,0 +1,311 @@ +/* + * The Python Imaging Library + * $Id$ + * + * imaging display object for Windows + * + * history: + * 1996-05-12 fl Created + * 1996-05-17 fl Up and running + * 1996-05-21 fl Added palette stuff + * 1996-05-26 fl Added query palette and mode inquery + * 1997-09-21 fl Added draw primitive + * 1998-01-20 fl Use StretchDIBits instead of StretchBlt + * 1998-12-30 fl Plugged a resource leak in DeleteDIB (from Roger Burnham) + * + * Copyright (c) Secret Labs AB 1997-2001. + * Copyright (c) Fredrik Lundh 1996. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#ifdef WIN32 + +#include "ImDib.h" + + +char* +ImagingGetModeDIB(int size_out[2]) +{ + /* Get device characteristics */ + + HDC dc; + char* mode; + + dc = CreateCompatibleDC(NULL); + + mode = "P"; + if (!(GetDeviceCaps(dc, RASTERCAPS) & RC_PALETTE)) { + mode = "RGB"; + if (GetDeviceCaps(dc, BITSPIXEL) == 1) + mode = "1"; + } + + if (size_out) { + size_out[0] = GetDeviceCaps(dc, HORZRES); + size_out[1] = GetDeviceCaps(dc, VERTRES); + } + + DeleteDC(dc); + + return mode; +} + + +ImagingDIB +ImagingNewDIB(const char *mode, int xsize, int ysize) +{ + /* Create a Windows bitmap */ + + ImagingDIB dib; + RGBQUAD *palette; + int i; + + /* Check mode */ + if (strcmp(mode, "1") != 0 && strcmp(mode, "L") != 0 && + strcmp(mode, "RGB") != 0) + return (ImagingDIB) ImagingError_ModeError(); + + /* Create DIB context and info header */ + dib = (ImagingDIB) malloc(sizeof(*dib)); + if (!dib) + return (ImagingDIB) ImagingError_MemoryError(); + dib->info = (BITMAPINFO*) malloc(sizeof(BITMAPINFOHEADER) + + 256 * sizeof(RGBQUAD)); + if (!dib->info) { + free(dib); + return (ImagingDIB) ImagingError_MemoryError(); + } + + memset(dib->info, 0, sizeof(BITMAPINFOHEADER)); + dib->info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + dib->info->bmiHeader.biWidth = xsize; + dib->info->bmiHeader.biHeight = ysize; + dib->info->bmiHeader.biPlanes = 1; + dib->info->bmiHeader.biBitCount = strlen(mode)*8; + dib->info->bmiHeader.biCompression = BI_RGB; + + /* Create DIB */ + dib->dc = CreateCompatibleDC(NULL); + if (!dib->dc) { + free(dib->info); + free(dib); + return (ImagingDIB) ImagingError_MemoryError(); + } + + dib->bitmap = CreateDIBSection(dib->dc, dib->info, DIB_RGB_COLORS, + &dib->bits, NULL, 0); + if (!dib->bitmap) { + free(dib->info); + free(dib); + return (ImagingDIB) ImagingError_MemoryError(); + } + + strcpy(dib->mode, mode); + dib->xsize = xsize; + dib->ysize = ysize; + + dib->pixelsize = strlen(mode); + dib->linesize = (xsize * dib->pixelsize + 3) & -4; + + if (dib->pixelsize == 1) + dib->pack = dib->unpack = (ImagingShuffler) memcpy; + else { + dib->pack = ImagingPackBGR; + dib->unpack = ImagingPackBGR; + } + + /* Bind the DIB to the device context */ + dib->old_bitmap = SelectObject(dib->dc, dib->bitmap); + + palette = dib->info->bmiColors; + + /* Bind a palette to it as well (only required for 8-bit DIBs) */ + if (dib->pixelsize == 1) { + for (i = 0; i < 256; i++) { + palette[i].rgbRed = + palette[i].rgbGreen = + palette[i].rgbBlue = i; + palette[i].rgbReserved = 0; + } + SetDIBColorTable(dib->dc, 0, 256, palette); + } + + /* Create an associated palette (for 8-bit displays only) */ + if (strcmp(ImagingGetModeDIB(NULL), "P") == 0) { + + char palbuf[sizeof(LOGPALETTE)+256*sizeof(PALETTEENTRY)]; + LPLOGPALETTE pal = (LPLOGPALETTE) palbuf; + int i, r, g, b; + + /* Load system palette */ + pal->palVersion = 0x300; + pal->palNumEntries = 256; + GetSystemPaletteEntries(dib->dc, 0, 256, pal->palPalEntry); + + if (strcmp(mode, "L") == 0) { + + /* Greyscale DIB. Fill all 236 slots with a greyscale ramp + * (this is usually overkill on Windows since VGA only offers + * 6 bits greyscale resolution). Ignore the slots already + * allocated by Windows */ + + i = 10; + for (r = 0; r < 236; r++) { + pal->palPalEntry[i].peRed = + pal->palPalEntry[i].peGreen = + pal->palPalEntry[i].peBlue = i; + i++; + } + + dib->palette = CreatePalette(pal); + + } else if (strcmp(mode, "RGB") == 0) { + +#ifdef CUBE216 + + /* Colour DIB. Create a 6x6x6 colour cube (216 entries) and + * add 20 extra greylevels for best result with greyscale + * images. */ + + i = 10; + for (r = 0; r < 256; r += 51) + for (g = 0; g < 256; g += 51) + for (b = 0; b < 256; b += 51) { + pal->palPalEntry[i].peRed = r; + pal->palPalEntry[i].peGreen = g; + pal->palPalEntry[i].peBlue = b; + i++; + } + for (r = 1; r < 22-1; r++) { + /* Black and white are already provided by the cube. */ + pal->palPalEntry[i].peRed = + pal->palPalEntry[i].peGreen = + pal->palPalEntry[i].peBlue = r * 255 / (22-1); + i++; + } + +#else + + /* Colour DIB. Alternate palette. */ + + i = 10; + for (r = 0; r < 256; r += 37) + for (g = 0; g < 256; g += 32) + for (b = 0; b < 256; b += 64) { + pal->palPalEntry[i].peRed = r; + pal->palPalEntry[i].peGreen = g; + pal->palPalEntry[i].peBlue = b; + i++; + } + +#endif + +#if 0 + { + /* DEBUG: dump palette to file */ + FILE *err = fopen("dib.pal", "w"); + for (i = 0; i < 256; i++) + fprintf(err, "%d: %d/%d/%d\n", i, + pal->palPalEntry[i].peRed, + pal->palPalEntry[i].peGreen, + pal->palPalEntry[i].peBlue); + fclose(err); + } +#endif + + dib->palette = CreatePalette(pal); + + } + + } + + return dib; +} + +void +ImagingPasteDIB(ImagingDIB dib, Imaging im, int xy[4]) +{ + /* Paste image data into a bitmap */ + + /* FIXME: check size! */ + + int y; + for (y = 0; y < im->ysize; y++) + dib->pack(dib->bits + dib->linesize*(dib->ysize-(xy[1]+y)-1) + + xy[0]*dib->pixelsize, im->image[y], im->xsize); + +} + +void +ImagingExposeDIB(ImagingDIB dib, int dc) +{ + /* Copy bitmap to display */ + + if (dib->palette != 0) + SelectPalette((HDC) dc, dib->palette, FALSE); + BitBlt((HDC) dc, 0, 0, dib->xsize, dib->ysize, dib->dc, 0, 0, SRCCOPY); +} + +void +ImagingDrawDIB(ImagingDIB dib, int dc, int dst[4], int src[4]) +{ + /* Copy bitmap to printer/display */ + + if (GetDeviceCaps((HDC) dc, RASTERCAPS) & RC_STRETCHDIB) { + /* stretchdib (printers) */ + StretchDIBits((HDC) dc, dst[0], dst[1], dst[2]-dst[0], dst[3]-dst[1], + src[0], src[1], src[2]-src[0], src[3]-src[1], dib->bits, + dib->info, DIB_RGB_COLORS, SRCCOPY); + } else { + /* stretchblt (displays) */ + if (dib->palette != 0) + SelectPalette((HDC) dc, dib->palette, FALSE); + StretchBlt((HDC) dc, dst[0], dst[1], dst[2]-dst[0], dst[3]-dst[1], + dib->dc, src[0], src[1], src[2]-src[0], src[3]-src[1], + SRCCOPY); + } +} + +int +ImagingQueryPaletteDIB(ImagingDIB dib, int dc) +{ + /* Install bitmap palette */ + + int n; + + if (dib->palette != 0) { + + /* Realize associated palette */ + HPALETTE now = SelectPalette((HDC) dc, dib->palette, FALSE); + n = RealizePalette((HDC) dc); + + /* Restore palette */ + SelectPalette((HDC) dc, now, FALSE); + + } else + n = 0; + + return n; /* number of colours that was changed */ +} + +void +ImagingDeleteDIB(ImagingDIB dib) +{ + /* Clean up */ + + if (dib->palette) + DeleteObject(dib->palette); + if (dib->bitmap) { + SelectObject(dib->dc, dib->old_bitmap); + DeleteObject(dib->bitmap); + } + if (dib->dc) + DeleteDC(dib->dc); + free(dib->info); +} + +#endif /* WIN32 */ diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c new file mode 100755 index 00000000000..bdf17e18aa6 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c @@ -0,0 +1,1167 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * a simple drawing package for the Imaging library + * + * history: + * 1996-04-13 fl Created. + * 1996-04-30 fl Added transforms and polygon support. + * 1996-08-12 fl Added filled polygons. + * 1996-11-05 fl Fixed float/int confusion in polygon filler + * 1997-07-04 fl Support 32-bit images (C++ would have been nice) + * 1998-09-09 fl Eliminated qsort casts; improved rectangle clipping + * 1998-09-10 fl Fixed fill rectangle to include lower edge (!) + * 1998-12-29 fl Added arc, chord, and pieslice primitives + * 1999-01-10 fl Added some level 2 ("arrow") stuff (experimental) + * 1999-02-06 fl Added bitmap primitive + * 1999-07-26 fl Eliminated a compiler warning + * 1999-07-31 fl Pass ink as void* instead of int + * 2002-12-10 fl Added experimental RGBA-on-RGB drawing + * 2004-09-04 fl Support simple wide lines (no joins) + * 2005-05-25 fl Fixed line width calculation + * + * Copyright (c) 1996-2006 by Fredrik Lundh + * Copyright (c) 1997-2006 by Secret Labs AB. + * + * See the README file for information on usage and redistribution. + */ + +/* FIXME: support fill/outline attribute for all filled shapes */ +/* FIXME: support zero-winding fill */ +/* FIXME: add drawing context, support affine transforms */ +/* FIXME: support clip window (and mask?) */ + +#include "Imaging.h" + +#include + +#define CEIL(v) (int) ceil(v) +#define FLOOR(v) ((v) >= 0.0 ? (int) (v) : (int) floor(v)) + +#define INK8(ink) (*(UINT8*)ink) +#define INK32(ink) (*(INT32*)ink) + +/* like (a * b + 127) / 255), but much faster on most platforms */ +#define MULDIV255(a, b, tmp)\ + (tmp = (a) * (b) + 128, ((((tmp) >> 8) + (tmp)) >> 8)) + +#define BLEND(mask, in1, in2, tmp1, tmp2)\ + (MULDIV255(in1, 255 - mask, tmp1) + MULDIV255(in2, mask, tmp2)) + +/* -------------------------------------------------------------------- */ +/* Primitives */ +/* -------------------------------------------------------------------- */ + +typedef struct { + /* edge descriptor for polygon engine */ + int d; + int x0, y0; + int xmin, ymin, xmax, ymax; + float dx; +} Edge; + +static inline void +point8(Imaging im, int x, int y, int ink) +{ + if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize) + im->image8[y][x] = (UINT8) ink; +} + +static inline void +point32(Imaging im, int x, int y, int ink) +{ + if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize) + im->image32[y][x] = ink; +} + +static inline void +point32rgba(Imaging im, int x, int y, int ink) +{ + unsigned int tmp1, tmp2; + + if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize) { + UINT8* out = (UINT8*) im->image[y]+x*4; + UINT8* in = (UINT8*) &ink; + out[0] = BLEND(in[3], out[0], in[0], tmp1, tmp2); + out[1] = BLEND(in[3], out[1], in[1], tmp1, tmp2); + out[2] = BLEND(in[3], out[2], in[2], tmp1, tmp2); + } +} + +static inline void +hline8(Imaging im, int x0, int y0, int x1, int ink) +{ + int tmp; + + if (y0 >= 0 && y0 < im->ysize) { + if (x0 > x1) + tmp = x0, x0 = x1, x1 = tmp; + if (x0 < 0) + x0 = 0; + else if (x0 >= im->xsize) + return; + if (x1 < 0) + return; + else if (x1 >= im->xsize) + x1 = im->xsize-1; + if (x0 <= x1) + memset(im->image8[y0] + x0, (UINT8) ink, x1 - x0 + 1); + } +} + +static inline void +hline32(Imaging im, int x0, int y0, int x1, int ink) +{ + int tmp; + INT32* p; + + if (y0 >= 0 && y0 < im->ysize) { + if (x0 > x1) + tmp = x0, x0 = x1, x1 = tmp; + if (x0 < 0) + x0 = 0; + else if (x0 >= im->xsize) + return; + if (x1 < 0) + return; + else if (x1 >= im->xsize) + x1 = im->xsize-1; + p = im->image32[y0]; + while (x0 <= x1) + p[x0++] = ink; + } +} + +static inline void +hline32rgba(Imaging im, int x0, int y0, int x1, int ink) +{ + int tmp; + unsigned int tmp1, tmp2; + + if (y0 >= 0 && y0 < im->ysize) { + if (x0 > x1) + tmp = x0, x0 = x1, x1 = tmp; + if (x0 < 0) + x0 = 0; + else if (x0 >= im->xsize) + return; + if (x1 < 0) + return; + else if (x1 >= im->xsize) + x1 = im->xsize-1; + if (x0 <= x1) { + UINT8* out = (UINT8*) im->image[y0]+x0*4; + UINT8* in = (UINT8*) &ink; + while (x0 <= x1) { + out[0] = BLEND(in[3], out[0], in[0], tmp1, tmp2); + out[1] = BLEND(in[3], out[1], in[1], tmp1, tmp2); + out[2] = BLEND(in[3], out[2], in[2], tmp1, tmp2); + x0++; out += 4; + } + } + } +} + +static inline void +line8(Imaging im, int x0, int y0, int x1, int y1, int ink) +{ + int i, n, e; + int dx, dy; + int xs, ys; + + /* normalize coordinates */ + dx = x1-x0; + if (dx < 0) + dx = -dx, xs = -1; + else + xs = 1; + dy = y1-y0; + if (dy < 0) + dy = -dy, ys = -1; + else + ys = 1; + + n = (dx > dy) ? dx : dy; + + if (dx == 0) + + /* vertical */ + for (i = 0; i < dy; i++) { + point8(im, x0, y0, ink); + y0 += ys; + } + + else if (dy == 0) + + /* horizontal */ + for (i = 0; i < dx; i++) { + point8(im, x0, y0, ink); + x0 += xs; + } + + else if (dx > dy) { + + /* bresenham, horizontal slope */ + n = dx; + dy += dy; + e = dy - dx; + dx += dx; + + for (i = 0; i < n; i++) { + point8(im, x0, y0, ink); + if (e >= 0) { + y0 += ys; + e -= dx; + } + e += dy; + x0 += xs; + } + + } else { + + /* bresenham, vertical slope */ + n = dy; + dx += dx; + e = dx - dy; + dy += dy; + + for (i = 0; i < n; i++) { + point8(im, x0, y0, ink); + if (e >= 0) { + x0 += xs; + e -= dy; + } + e += dx; + y0 += ys; + } + + } +} + +static inline void +line32(Imaging im, int x0, int y0, int x1, int y1, int ink) +{ + int i, n, e; + int dx, dy; + int xs, ys; + + /* normalize coordinates */ + dx = x1-x0; + if (dx < 0) + dx = -dx, xs = -1; + else + xs = 1; + dy = y1-y0; + if (dy < 0) + dy = -dy, ys = -1; + else + ys = 1; + + n = (dx > dy) ? dx : dy; + + if (dx == 0) + + /* vertical */ + for (i = 0; i < dy; i++) { + point32(im, x0, y0, ink); + y0 += ys; + } + + else if (dy == 0) + + /* horizontal */ + for (i = 0; i < dx; i++) { + point32(im, x0, y0, ink); + x0 += xs; + } + + else if (dx > dy) { + + /* bresenham, horizontal slope */ + n = dx; + dy += dy; + e = dy - dx; + dx += dx; + + for (i = 0; i < n; i++) { + point32(im, x0, y0, ink); + if (e >= 0) { + y0 += ys; + e -= dx; + } + e += dy; + x0 += xs; + } + + } else { + + /* bresenham, vertical slope */ + n = dy; + dx += dx; + e = dx - dy; + dy += dy; + + for (i = 0; i < n; i++) { + point32(im, x0, y0, ink); + if (e >= 0) { + x0 += xs; + e -= dy; + } + e += dx; + y0 += ys; + } + + } +} + +static inline void +line32rgba(Imaging im, int x0, int y0, int x1, int y1, int ink) +{ + int i, n, e; + int dx, dy; + int xs, ys; + + /* normalize coordinates */ + dx = x1-x0; + if (dx < 0) + dx = -dx, xs = -1; + else + xs = 1; + dy = y1-y0; + if (dy < 0) + dy = -dy, ys = -1; + else + ys = 1; + + n = (dx > dy) ? dx : dy; + + if (dx == 0) + + /* vertical */ + for (i = 0; i < dy; i++) { + point32rgba(im, x0, y0, ink); + y0 += ys; + } + + else if (dy == 0) + + /* horizontal */ + for (i = 0; i < dx; i++) { + point32rgba(im, x0, y0, ink); + x0 += xs; + } + + else if (dx > dy) { + + /* bresenham, horizontal slope */ + n = dx; + dy += dy; + e = dy - dx; + dx += dx; + + for (i = 0; i < n; i++) { + point32rgba(im, x0, y0, ink); + if (e >= 0) { + y0 += ys; + e -= dx; + } + e += dy; + x0 += xs; + } + + } else { + + /* bresenham, vertical slope */ + n = dy; + dx += dx; + e = dx - dy; + dy += dy; + + for (i = 0; i < n; i++) { + point32rgba(im, x0, y0, ink); + if (e >= 0) { + x0 += xs; + e -= dy; + } + e += dx; + y0 += ys; + } + + } +} + +static int +x_cmp(const void *x0, const void *x1) +{ + float diff = *((float*)x0) - *((float*)x1); + if (diff < 0) + return -1; + else if (diff > 0) + return 1; + else + return 0; +} + +static inline int +polygon8(Imaging im, int n, Edge *e, int ink, int eofill) +{ + int i, j; + float *xx; + int ymin, ymax; + float y; + + if (n <= 0) + return 0; + + /* Find upper and lower polygon boundary (within image) */ + + ymin = e[0].ymin; + ymax = e[0].ymax; + for (i = 1; i < n; i++) { + if (e[i].ymin < ymin) ymin = e[i].ymin; + if (e[i].ymax > ymax) ymax = e[i].ymax; + } + + if (ymin < 0) + ymin = 0; + if (ymax >= im->ysize) + ymax = im->ysize-1; + + /* Process polygon edges */ + + xx = malloc(n * sizeof(float)); + if (!xx) + return -1; + + for (;ymin <= ymax; ymin++) { + y = ymin+0.5F; + for (i = j = 0; i < n; i++) + if (y >= e[i].ymin && y <= e[i].ymax) { + if (e[i].d == 0) + hline8(im, e[i].xmin, ymin, e[i].xmax, ink); + else + xx[j++] = (y-e[i].y0) * e[i].dx + e[i].x0; + } + if (j == 2) { + if (xx[0] < xx[1]) + hline8(im, CEIL(xx[0]-0.5), ymin, FLOOR(xx[1]+0.5), ink); + else + hline8(im, CEIL(xx[1]-0.5), ymin, FLOOR(xx[0]+0.5), ink); + } else { + qsort(xx, j, sizeof(float), x_cmp); + for (i = 0; i < j-1 ; i += 2) + hline8(im, CEIL(xx[i]-0.5), ymin, FLOOR(xx[i+1]+0.5), ink); + } + } + + free(xx); + + return 0; +} + +static inline int +polygon32(Imaging im, int n, Edge *e, int ink, int eofill) +{ + int i, j; + float *xx; + int ymin, ymax; + float y; + + if (n <= 0) + return 0; + + /* Find upper and lower polygon boundary (within image) */ + + ymin = e[0].ymin; + ymax = e[0].ymax; + for (i = 1; i < n; i++) { + if (e[i].ymin < ymin) ymin = e[i].ymin; + if (e[i].ymax > ymax) ymax = e[i].ymax; + } + + if (ymin < 0) + ymin = 0; + if (ymax >= im->ysize) + ymax = im->ysize-1; + + /* Process polygon edges */ + + xx = malloc(n * sizeof(float)); + if (!xx) + return -1; + + for (;ymin <= ymax; ymin++) { + y = ymin+0.5F; + for (i = j = 0; i < n; i++) { + if (y >= e[i].ymin && y <= e[i].ymax) { + if (e[i].d == 0) + hline32(im, e[i].xmin, ymin, e[i].xmax, ink); + else + xx[j++] = (y-e[i].y0) * e[i].dx + e[i].x0; + } + } + if (j == 2) { + if (xx[0] < xx[1]) + hline32(im, CEIL(xx[0]-0.5), ymin, FLOOR(xx[1]+0.5), ink); + else + hline32(im, CEIL(xx[1]-0.5), ymin, FLOOR(xx[0]+0.5), ink); + } else { + qsort(xx, j, sizeof(float), x_cmp); + for (i = 0; i < j-1 ; i += 2) + hline32(im, CEIL(xx[i]-0.5), ymin, FLOOR(xx[i+1]+0.5), ink); + } + } + + free(xx); + + return 0; +} + +static inline int +polygon32rgba(Imaging im, int n, Edge *e, int ink, int eofill) +{ + int i, j; + float *xx; + int ymin, ymax; + float y; + + if (n <= 0) + return 0; + + /* Find upper and lower polygon boundary (within image) */ + + ymin = e[0].ymin; + ymax = e[0].ymax; + for (i = 1; i < n; i++) { + if (e[i].ymin < ymin) ymin = e[i].ymin; + if (e[i].ymax > ymax) ymax = e[i].ymax; + } + + if (ymin < 0) + ymin = 0; + if (ymax >= im->ysize) + ymax = im->ysize-1; + + /* Process polygon edges */ + + xx = malloc(n * sizeof(float)); + if (!xx) + return -1; + + for (;ymin <= ymax; ymin++) { + y = ymin+0.5F; + for (i = j = 0; i < n; i++) { + if (y >= e[i].ymin && y <= e[i].ymax) { + if (e[i].d == 0) + hline32rgba(im, e[i].xmin, ymin, e[i].xmax, ink); + else + xx[j++] = (y-e[i].y0) * e[i].dx + e[i].x0; + } + } + if (j == 2) { + if (xx[0] < xx[1]) + hline32rgba(im, CEIL(xx[0]-0.5), ymin, FLOOR(xx[1]+0.5), ink); + else + hline32rgba(im, CEIL(xx[1]-0.5), ymin, FLOOR(xx[0]+0.5), ink); + } else { + qsort(xx, j, sizeof(float), x_cmp); + for (i = 0; i < j-1 ; i += 2) + hline32rgba(im, CEIL(xx[i]-0.5), ymin, FLOOR(xx[i+1]+0.5), ink); + } + } + + free(xx); + + return 0; +} + +static inline void +add_edge(Edge *e, int x0, int y0, int x1, int y1) +{ + /* printf("edge %d %d %d %d\n", x0, y0, x1, y1); */ + + if (x0 <= x1) + e->xmin = x0, e->xmax = x1; + else + e->xmin = x1, e->xmax = x0; + + if (y0 <= y1) + e->ymin = y0, e->ymax = y1; + else + e->ymin = y1, e->ymax = y0; + + if (y0 == y1) { + e->d = 0; + e->dx = 0.0; + } else { + e->dx = ((float)(x1-x0)) / (y1-y0); + if (y0 == e->ymin) + e->d = 1; + else + e->d = -1; + } + + e->x0 = x0; + e->y0 = y0; +} + +typedef struct { + void (*point)(Imaging im, int x, int y, int ink); + void (*hline)(Imaging im, int x0, int y0, int x1, int ink); + void (*line)(Imaging im, int x0, int y0, int x1, int y1, int ink); + int (*polygon)(Imaging im, int n, Edge *e, int ink, int eofill); +} DRAW; + +DRAW draw8 = { point8, hline8, line8, polygon8 }; +DRAW draw32 = { point32, hline32, line32, polygon32 }; +DRAW draw32rgba = { point32rgba, hline32rgba, line32rgba, polygon32rgba }; + +/* -------------------------------------------------------------------- */ +/* Interface */ +/* -------------------------------------------------------------------- */ + +#define DRAWINIT()\ + if (im->image8) {\ + draw = &draw8;\ + ink = INK8(ink_);\ + } else {\ + draw = (op) ? &draw32rgba : &draw32; \ + ink = INK32(ink_);\ + } + +int +ImagingDrawPoint(Imaging im, int x0, int y0, const void* ink_, int op) +{ + DRAW* draw; + INT32 ink; + + DRAWINIT(); + + draw->point(im, x0, y0, ink); + + return 0; +} + +int +ImagingDrawLine(Imaging im, int x0, int y0, int x1, int y1, const void* ink_, + int op) +{ + DRAW* draw; + INT32 ink; + + DRAWINIT(); + + draw->line(im, x0, y0, x1, y1, ink); + + return 0; +} + +int +ImagingDrawWideLine(Imaging im, int x0, int y0, int x1, int y1, + const void* ink_, int width, int op) +{ + DRAW* draw; + INT32 ink; + + Edge e[4]; + + int dx, dy; + double d; + + DRAWINIT(); + + if (width <= 1) { + draw->line(im, x0, y0, x1, y1, ink); + return 0; + } + + dx = x1-x0; + dy = y1-y0; + + if (dx == 0 && dy == 0) { + draw->point(im, x0, y0, ink); + return 0; + } + + d = width / sqrt((float) (dx*dx + dy*dy)) / 2.0; + + dx = (int) floor(d * (y1-y0) + 0.5); + dy = (int) floor(d * (x1-x0) + 0.5); + + add_edge(e+0, x0 - dx, y0 + dy, x1 - dx, y1 + dy); + add_edge(e+1, x1 - dx, y1 + dy, x1 + dx, y1 - dy); + add_edge(e+2, x1 + dx, y1 - dy, x0 + dx, y0 - dy); + add_edge(e+3, x0 + dx, y0 - dy, x0 - dx, y0 + dy); + + draw->polygon(im, 4, e, ink, 0); + + return 0; +} + +int +ImagingDrawRectangle(Imaging im, int x0, int y0, int x1, int y1, + const void* ink_, int fill, int op) +{ + int y; + int tmp; + DRAW* draw; + INT32 ink; + + DRAWINIT(); + + if (y0 > y1) + tmp = y0, y0 = y1, y1 = tmp; + + if (fill) { + + if (y0 < 0) + y0 = 0; + else if (y0 >= im->ysize) + return 0; + + if (y1 < 0) + return 0; + else if (y1 > im->ysize) + y1 = im->ysize; + + for (y = y0; y <= y1; y++) + draw->hline(im, x0, y, x1, ink); + + } else { + + /* outline */ + draw->line(im, x0, y0, x1, y0, ink); + draw->line(im, x1, y0, x1, y1, ink); + draw->line(im, x1, y1, x0, y1, ink); + draw->line(im, x0, y1, x0, y0, ink); + + } + + return 0; +} + +int +ImagingDrawPolygon(Imaging im, int count, int* xy, const void* ink_, + int fill, int op) +{ + int i, n; + DRAW* draw; + INT32 ink; + + if (count <= 0) + return 0; + + DRAWINIT(); + + if (fill) { + + /* Build edge list */ + Edge* e = malloc(count * sizeof(Edge)); + if (!e) { + (void) ImagingError_MemoryError(); + return -1; + } + for (i = n = 0; i < count-1; i++) + add_edge(&e[n++], xy[i+i], xy[i+i+1], xy[i+i+2], xy[i+i+3]); + if (xy[i+i] != xy[0] || xy[i+i+1] != xy[1]) + add_edge(&e[n++], xy[i+i], xy[i+i+1], xy[0], xy[1]); + draw->polygon(im, n, e, ink, 0); + free(e); + + } else { + + /* Outline */ + for (i = 0; i < count-1; i++) + draw->line(im, xy[i+i], xy[i+i+1], xy[i+i+2], xy[i+i+3], ink); + draw->line(im, xy[i+i], xy[i+i+1], xy[0], xy[1], ink); + + } + + return 0; +} + +int +ImagingDrawBitmap(Imaging im, int x0, int y0, Imaging bitmap, const void* ink, + int op) +{ + return ImagingFill2( + im, ink, bitmap, + x0, y0, x0 + bitmap->xsize, y0 + bitmap->ysize + ); +} + +/* -------------------------------------------------------------------- */ +/* standard shapes */ + +#define ARC 0 +#define CHORD 1 +#define PIESLICE 2 + +static int +ellipse(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink_, int fill, + int mode, int op) +{ + int i, n; + int cx, cy; + int w, h; + int x = 0, y = 0; + int lx = 0, ly = 0; + int sx = 0, sy = 0; + DRAW* draw; + INT32 ink; + + w = x1 - x0; + h = y1 - y0; + if (w < 0 || h < 0) + return 0; + + DRAWINIT(); + + cx = (x0 + x1) / 2; + cy = (y0 + y1) / 2; + + while (end < start) + end += 360; + + if (mode != ARC && fill) { + + /* Build edge list */ + Edge* e = malloc((end - start + 3) * sizeof(Edge)); + if (!e) { + ImagingError_MemoryError(); + return -1; + } + + n = 0; + + for (i = start; i <= end; i++) { + x = FLOOR((cos(i*M_PI/180) * w/2) + cx + 0.5); + y = FLOOR((sin(i*M_PI/180) * h/2) + cy + 0.5); + if (i != start) + add_edge(&e[n++], lx, ly, x, y); + else + sx = x, sy = y; + lx = x, ly = y; + } + + if (n > 0) { + /* close and draw polygon */ + if (mode == PIESLICE) { + if (x != cx || y != cy) { + add_edge(&e[n++], x, y, cx, cy); + add_edge(&e[n++], cx, cy, sx, sy); + } + } else { + if (x != sx || y != sy) + add_edge(&e[n++], x, y, sx, sy); + } + draw->polygon(im, n, e, ink, 0); + } + + free(e); + + } else { + + for (i = start; i <= end; i++) { + x = FLOOR((cos(i*M_PI/180) * w/2) + cx + 0.5); + y = FLOOR((sin(i*M_PI/180) * h/2) + cy + 0.5); + if (i != start) + draw->line(im, lx, ly, x, y, ink); + else + sx = x, sy = y; + lx = x, ly = y; + } + + if (i != start) { + if (mode == PIESLICE) { + if (x != cx || y != cy) { + draw->line(im, x, y, cx, cy, ink); + draw->line(im, cx, cy, sx, sy, ink); + } + } else if (mode == CHORD) { + if (x != sx || y != sy) + draw->line(im, x, y, sx, sy, ink); + } + } + } + + return 0; +} + +int +ImagingDrawArc(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink, int op) +{ + return ellipse(im, x0, y0, x1, y1, start, end, ink, 0, ARC, op); +} + +int +ImagingDrawChord(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink, int fill, int op) +{ + return ellipse(im, x0, y0, x1, y1, start, end, ink, fill, CHORD, op); +} + +int +ImagingDrawEllipse(Imaging im, int x0, int y0, int x1, int y1, + const void* ink, int fill, int op) +{ + return ellipse(im, x0, y0, x1, y1, 0, 360, ink, fill, CHORD, op); +} + +int +ImagingDrawPieslice(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink, int fill, int op) +{ + return ellipse(im, x0, y0, x1, y1, start, end, ink, fill, PIESLICE, op); +} + +/* -------------------------------------------------------------------- */ + +/* experimental level 2 ("arrow") graphics stuff. this implements + portions of the arrow api on top of the Edge structure. the + semantics are ok, except that "curve" flattens the bezier curves by + itself */ + +#if 1 /* ARROW_GRAPHICS */ + +struct ImagingOutlineInstance { + + float x0, y0; + + float x, y; + + int count; + Edge *edges; + + int size; + +}; + + +ImagingOutline +ImagingOutlineNew(void) +{ + ImagingOutline outline; + + outline = calloc(1, sizeof(struct ImagingOutlineInstance)); + if (!outline) + return (ImagingOutline) ImagingError_MemoryError(); + + outline->edges = NULL; + outline->count = outline->size = 0; + + ImagingOutlineMove(outline, 0, 0); + + return outline; +} + +void +ImagingOutlineDelete(ImagingOutline outline) +{ + if (!outline) + return; + + if (outline->edges) + free(outline->edges); + + free(outline); +} + + +static Edge* +allocate(ImagingOutline outline, int extra) +{ + Edge* e; + + if (outline->count + extra > outline->size) { + /* expand outline buffer */ + outline->size += extra + 25; + if (!outline->edges) + e = malloc(outline->size * sizeof(Edge)); + else + e = realloc(outline->edges, outline->size * sizeof(Edge)); + if (!e) + return NULL; + outline->edges = e; + } + + e = outline->edges + outline->count; + + outline->count += extra; + + return e; +} + +int +ImagingOutlineMove(ImagingOutline outline, float x0, float y0) +{ + outline->x = outline->x0 = x0; + outline->y = outline->y0 = y0; + + return 0; +} + +int +ImagingOutlineLine(ImagingOutline outline, float x1, float y1) +{ + Edge* e; + + e = allocate(outline, 1); + if (!e) + return -1; /* out of memory */ + + add_edge(e, (int) outline->x, (int) outline->y, (int) x1, (int) y1); + + outline->x = x1; + outline->y = y1; + + return 0; +} + +int +ImagingOutlineCurve(ImagingOutline outline, float x1, float y1, + float x2, float y2, float x3, float y3) +{ + Edge* e; + int i; + float xo, yo; + +#define STEPS 32 + + e = allocate(outline, STEPS); + if (!e) + return -1; /* out of memory */ + + xo = outline->x; + yo = outline->y; + + /* flatten the bezier segment */ + + for (i = 1; i <= STEPS; i++) { + + float t = ((float) i) / STEPS; + float t2 = t*t; + float t3 = t2*t; + + float u = 1.0F - t; + float u2 = u*u; + float u3 = u2*u; + + float x = outline->x*u3 + 3*(x1*t*u2 + x2*t2*u) + x3*t3 + 0.5; + float y = outline->y*u3 + 3*(y1*t*u2 + y2*t2*u) + y3*t3 + 0.5; + + add_edge(e++, xo, yo, (int) x, (int) y); + + xo = x, yo = y; + + } + + outline->x = xo; + outline->y = yo; + + return 0; +} + +int +ImagingOutlineCurve2(ImagingOutline outline, float cx, float cy, + float x3, float y3) +{ + /* add bezier curve based on three control points (as + in the Flash file format) */ + + return ImagingOutlineCurve( + outline, + (outline->x + cx + cx)/3, (outline->y + cy + cy)/3, + (cx + cx + x3)/3, (cy + cy + y3)/3, + x3, y3); +} + +int +ImagingOutlineClose(ImagingOutline outline) +{ + if (outline->x == outline->x0 && outline->y == outline->y0) + return 0; + return ImagingOutlineLine(outline, outline->x0, outline->y0); +} + +int +ImagingOutlineTransform(ImagingOutline outline, double a[6]) +{ + Edge *eIn; + Edge *eOut; + int i, n; + int x0, y0, x1, y1; + int X0, Y0, X1, Y1; + + double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; + double a3 = a[3]; double a4 = a[4]; double a5 = a[5]; + + eIn = outline->edges; + n = outline->count; + + /* FIXME: ugly! */ + outline->edges = NULL; + outline->count = outline->size = 0; + + eOut = allocate(outline, n); + if (!eOut) { + outline->edges = eIn; + outline->count = outline->size = n; + ImagingError_MemoryError(); + return -1; + } + + for (i = 0; i < n; i++) { + + x0 = eIn->x0; + y0 = eIn->y0; + + /* FIXME: ouch! */ + if (eIn->x0 == eIn->xmin) + x1 = eIn->xmax; + else + x1 = eIn->xmin; + if (eIn->y0 == eIn->ymin) + y1 = eIn->ymax; + else + y1 = eIn->ymin; + + /* full moon tonight! if this doesn't work, you may need to + upgrade your compiler (make sure you have the right service + pack) */ + + X0 = (int) (a0*x0 + a1*y0 + a2); + Y0 = (int) (a3*x0 + a4*y0 + a5); + X1 = (int) (a0*x1 + a1*y1 + a2); + Y1 = (int) (a3*x1 + a4*y1 + a5); + + add_edge(eOut, X0, Y0, X1, Y1); + + eIn++; + eOut++; + + } + + free(eIn); + + return 0; +} + +int +ImagingDrawOutline(Imaging im, ImagingOutline outline, const void* ink_, + int fill, int op) +{ + DRAW* draw; + INT32 ink; + + DRAWINIT(); + + draw->polygon(im, outline->count, outline->edges, ink, 0); + + return 0; +} + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c new file mode 100755 index 00000000000..1b964ac408f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c @@ -0,0 +1,373 @@ +/* + * The Python Imaging Library + * $Id$ + * + * various special effects and image generators + * + * history: + * 1997-05-21 fl Just for fun + * 1997-06-05 fl Added mandelbrot generator + * 2003-05-24 fl Added perlin_turbulence generator (in progress) + * + * Copyright (c) 1997-2003 by Fredrik Lundh. + * Copyright (c) 1997 by Secret Labs AB. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#include + +Imaging +ImagingEffectMandelbrot(int xsize, int ysize, double extent[4], int quality) +{ + /* Generate a Mandelbrot set covering the given extent */ + + Imaging im; + int x, y, k; + double width, height; + double x1, y1, xi2, yi2, cr, ci, radius; + double dr, di; + + /* Check arguments */ + width = extent[2] - extent[0]; + height = extent[3] - extent[1]; + if (width < 0.0 || height < 0.0 || quality < 2) + return (Imaging) ImagingError_ValueError(NULL); + + im = ImagingNew("L", xsize, ysize); + if (!im) + return NULL; + + dr = width/(xsize-1); + di = height/(ysize-1); + + radius = 100.0; + + for (y = 0; y < ysize; y++) { + UINT8* buf = im->image8[y]; + for (x = 0; x < xsize; x++) { + x1 = y1 = xi2 = yi2 = 0.0; + cr = x*dr + extent[0]; + ci = y*di + extent[1]; + for (k = 1;; k++) { + y1 = 2*x1*y1 + ci; + x1 = xi2 - yi2 + cr; + xi2 = x1*x1; + yi2 = y1*y1; + if ((xi2 + yi2) > radius) { + buf[x] = k*255/quality; + break; + } + if (k > quality) { + buf[x] = 0; + break; + } + } + } + } + return im; +} + +Imaging +ImagingEffectNoise(int xsize, int ysize, float sigma) +{ + /* Generate gaussian noise centered around 128 */ + + Imaging imOut; + int x, y; + int nextok; + double this, next; + + imOut = ImagingNew("L", xsize, ysize); + if (!imOut) + return NULL; + + next = 0.0; + nextok = 0; + + for (y = 0; y < imOut->ysize; y++) { + UINT8* out = imOut->image8[y]; + for (x = 0; x < imOut->xsize; x++) { + if (nextok) { + this = next; + nextok = 0; + } else { + /* after numerical recepies */ + double v1, v2, radius, factor; + do { + v1 = rand()*(2.0/32767.0) - 1.0; + v2 = rand()*(2.0/32767.0) - 1.0; + radius= v1*v1 + v2*v2; + } while (radius >= 1.0); + factor = sqrt(-2.0*log(radius)/radius); + this = factor * v1; + next = factor * v2; + } + out[x] = (unsigned char) (128 + sigma * this); + } + } + + return imOut; +} + +Imaging +ImagingEffectPerlinTurbulence(int xsize, int ysize) +{ + /* Perlin turbulence (In progress) */ + + return NULL; +} + +Imaging +ImagingEffectSpread(Imaging imIn, int distance) +{ + /* Randomly spread pixels in an image */ + + Imaging imOut; + int x, y; + + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + + if (!imOut) + return NULL; + +#define SPREAD(type, image)\ + for (y = 0; y < imIn->ysize; y++)\ + for (x = 0; x < imIn->xsize; x++) {\ + int xx = x + (rand() % distance) - distance/2;\ + int yy = y + (rand() % distance) - distance/2;\ + if (xx >= 0 && xx < imIn->xsize && yy >= 0 && yy < imIn->ysize) {\ + imOut->image[yy][xx] = imIn->image[y][x];\ + imOut->image[y][x] = imIn->image[yy][xx];\ + } else\ + imOut->image[y][x] = imIn->image[y][x];\ + } + + if (imIn->image8) { + SPREAD(UINT8, image8); + } else { + SPREAD(INT32, image32); + } + + ImagingCopyInfo(imOut, imIn); + + return imOut; +} + +/* -------------------------------------------------------------------- */ +/* Taken from the "C" code in the W3C SVG specification. Translated + to C89 by Fredrik Lundh */ + +#if 0 + +/* Produces results in the range [1, 2**31 - 2]. +Algorithm is: r = (a * r) mod m +where a = 16807 and m = 2**31 - 1 = 2147483647 +See [Park & Miller], CACM vol. 31 no. 10 p. 1195, Oct. 1988 +To test: the algorithm should produce the result 1043618065 +as the 10,000th generated number if the original seed is 1. +*/ +#define RAND_m 2147483647 /* 2**31 - 1 */ +#define RAND_a 16807 /* 7**5; primitive root of m */ +#define RAND_q 127773 /* m / a */ +#define RAND_r 2836 /* m % a */ + +static long +perlin_setup_seed(long lSeed) +{ + if (lSeed <= 0) lSeed = -(lSeed % (RAND_m - 1)) + 1; + if (lSeed > RAND_m - 1) lSeed = RAND_m - 1; + return lSeed; +} + +static long +perlin_random(long lSeed) +{ + long result; + result = RAND_a * (lSeed % RAND_q) - RAND_r * (lSeed / RAND_q); + if (result <= 0) result += RAND_m; + return result; +} + +#define BSize 0x100 +#define BM 0xff +#define PerlinN 0x1000 +#define NP 12 /* 2^PerlinN */ +#define NM 0xfff +static int perlin_uLatticeSelector[BSize + BSize + 2]; +static double perlin_fGradient[4][BSize + BSize + 2][2]; +typedef struct +{ + int nWidth; /* How much to subtract to wrap for stitching. */ + int nHeight; + int nWrapX; /* Minimum value to wrap. */ + int nWrapY; +} StitchInfo; + +static void +perlin_init(long lSeed) +{ + double s; + int i, j, k; + lSeed = perlin_setup_seed(lSeed); + for(k = 0; k < 4; k++) + { + for(i = 0; i < BSize; i++) + { + perlin_uLatticeSelector[i] = i; + for (j = 0; j < 2; j++) + perlin_fGradient[k][i][j] = (double)(((lSeed = perlin_random(lSeed)) % (BSize + BSize)) - BSize) / BSize; + s = (double) (sqrt(perlin_fGradient[k][i][0] * perlin_fGradient[k][i][0] + perlin_fGradient[k][i][1] * perlin_fGradient[k][i][1])); + perlin_fGradient[k][i][0] /= s; + perlin_fGradient[k][i][1] /= s; + } + } + while(--i) + { + k = perlin_uLatticeSelector[i]; + perlin_uLatticeSelector[i] = perlin_uLatticeSelector[j = (lSeed = perlin_random(lSeed)) % BSize]; + perlin_uLatticeSelector[j] = k; + } + for(i = 0; i < BSize + 2; i++) + { + perlin_uLatticeSelector[BSize + i] = perlin_uLatticeSelector[i]; + for(k = 0; k < 4; k++) + for(j = 0; j < 2; j++) + perlin_fGradient[k][BSize + i][j] = perlin_fGradient[k][i][j]; + } +} + +#define s_curve(t) ( t * t * (3. - 2. * t) ) +#define lerp(t, a, b) ( a + t * (b - a) ) +static double +perlin_noise2(int nColorChannel, double vec[2], StitchInfo *pStitchInfo) +{ + int bx0, bx1, by0, by1, b00, b10, b01, b11; + double rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v; + register int i, j; + + t = vec[0] + (double) PerlinN; + bx0 = (int)t; + bx1 = bx0+1; + rx0 = t - (int)t; + rx1 = rx0 - 1.0f; + t = vec[1] + (double) PerlinN; + by0 = (int)t; + by1 = by0+1; + ry0 = t - (int)t; + ry1 = ry0 - 1.0f; + + /* If stitching, adjust lattice points accordingly. */ + if(pStitchInfo != NULL) + { + if(bx0 >= pStitchInfo->nWrapX) + bx0 -= pStitchInfo->nWidth; + if(bx1 >= pStitchInfo->nWrapX) + bx1 -= pStitchInfo->nWidth; + if(by0 >= pStitchInfo->nWrapY) + by0 -= pStitchInfo->nHeight; + if(by1 >= pStitchInfo->nWrapY) + by1 -= pStitchInfo->nHeight; + } + + bx0 &= BM; + bx1 &= BM; + by0 &= BM; + by1 &= BM; + + i = perlin_uLatticeSelector[bx0]; + j = perlin_uLatticeSelector[bx1]; + b00 = perlin_uLatticeSelector[i + by0]; + b10 = perlin_uLatticeSelector[j + by0]; + b01 = perlin_uLatticeSelector[i + by1]; + b11 = perlin_uLatticeSelector[j + by1]; + sx = (double) (s_curve(rx0)); + sy = (double) (s_curve(ry0)); + q = perlin_fGradient[nColorChannel][b00]; u = rx0 * q[0] + ry0 * q[1]; + q = perlin_fGradient[nColorChannel][b10]; v = rx1 * q[0] + ry0 * q[1]; + a = lerp(sx, u, v); + q = perlin_fGradient[nColorChannel][b01]; u = rx0 * q[0] + ry1 * q[1]; + q = perlin_fGradient[nColorChannel][b11]; v = rx1 * q[0] + ry1 * q[1]; + b = lerp(sx, u, v); + return lerp(sy, a, b); +} + +double +perlin_turbulence( + int nColorChannel, double *point, double fBaseFreqX, double fBaseFreqY, + int nNumOctaves, int bFractalSum, int bDoStitching, + double fTileX, double fTileY, double fTileWidth, double fTileHeight) +{ + StitchInfo stitch; + StitchInfo *pStitchInfo = NULL; /* Not stitching when NULL. */ + + double fSum = 0.0f; + double vec[2]; + double ratio = 1; + + int nOctave; + + vec[0] = point[0] * fBaseFreqX; + vec[1] = point[1] * fBaseFreqY; + + /* Adjust the base frequencies if necessary for stitching. */ + if(bDoStitching) + { + /* When stitching tiled turbulence, the frequencies must be adjusted */ + /* so that the tile borders will be continuous. */ + if(fBaseFreqX != 0.0) + { + double fLoFreq = (double) (floor(fTileWidth * fBaseFreqX)) / fTileWidth; + double fHiFreq = (double) (ceil(fTileWidth * fBaseFreqX)) / fTileWidth; + if(fBaseFreqX / fLoFreq < fHiFreq / fBaseFreqX) + fBaseFreqX = fLoFreq; + else + fBaseFreqX = fHiFreq; + } + + if(fBaseFreqY != 0.0) + { + double fLoFreq = (double) (floor(fTileHeight * fBaseFreqY)) / fTileHeight; + double fHiFreq = (double) (ceil(fTileHeight * fBaseFreqY)) / fTileHeight; + if(fBaseFreqY / fLoFreq < fHiFreq / fBaseFreqY) + fBaseFreqY = fLoFreq; + else + fBaseFreqY = fHiFreq; + } + + /* Set up initial stitch values. */ + pStitchInfo = &stitch; + stitch.nWidth = (int) (fTileWidth * fBaseFreqX + 0.5f); + stitch.nWrapX = (int) (fTileX * fBaseFreqX + PerlinN + stitch.nWidth); + stitch.nHeight = (int) (fTileHeight * fBaseFreqY + 0.5f); + stitch.nWrapY = (int) (fTileY * fBaseFreqY + PerlinN + stitch.nHeight); + } + + for(nOctave = 0; nOctave < nNumOctaves; nOctave++) + { + if(bFractalSum) + fSum += (double) (perlin_noise2(nColorChannel, vec, pStitchInfo) / ratio); + else + fSum += (double) (fabs(perlin_noise2(nColorChannel, vec, pStitchInfo)) / ratio); + + vec[0] *= 2; + vec[1] *= 2; + ratio *= 2; + + if(pStitchInfo != NULL) + { + /* Update stitch values. Subtracting PerlinN before the multiplication and */ + /* adding it afterward simplifies to subtracting it once. */ + stitch.nWidth *= 2; + stitch.nWrapX = 2 * stitch.nWrapX - PerlinN; + stitch.nHeight *= 2; + stitch.nWrapY = 2 * stitch.nWrapY - PerlinN; + } + } + return fSum; +} + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c new file mode 100755 index 00000000000..704d5a6567d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c @@ -0,0 +1,80 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * encoder for EPS hex data + * + * history: + * 96-04-19 fl created + * 96-06-27 fl don't drop last block of encoded data + * + * notes: + * FIXME: rename to HexEncode.c ?? + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingEpsEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + enum { HEXBYTE=1, NEWLINE }; + const char *hex = "0123456789abcdef"; + + UINT8* ptr = buf; + UINT8* in, i; + + if (!state->state) { + state->state = HEXBYTE; + state->xsize *= im->pixelsize; /* Hack! */ + } + + in = (UINT8*) im->image[state->y]; + + for (;;) { + + if (state->state == NEWLINE) { + if (bytes < 1) + break; + *ptr++ = '\n'; + bytes--; + state->state = HEXBYTE; + } + + if (bytes < 2) + break; + + i = in[state->x++]; + *ptr++ = hex[(i>>4)&15]; + *ptr++ = hex[i&15]; + bytes -= 2; + + /* Skip junk bytes */ + if (im->bands == 3 && (state->x & 3) == 3) + state->x++; + + if (++state->count >= 79/2) { + state->state = NEWLINE; + state->count = 0; + } + + if (state->x >= state->xsize) { + state->x = 0; + if (++state->y >= state->ysize) { + state->errcode = IMAGING_CODEC_END; + break; + } + in = (UINT8*) im->image[state->y]; + } + + } + + return ptr - buf; + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c new file mode 100755 index 00000000000..635435d576c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c @@ -0,0 +1,83 @@ +/* + * The Python Imaging Library + * $Id$ + * + * default exception handling + * + * This module is usually overridden by application code (e.g. + * _imaging.c for PIL's standard Python bindings). If you get + * linking errors, remove this file from your project/library. + * + * history: + * 1995-06-15 fl Created + * 1998-12-29 fl Minor tweaks + * 2003-09-13 fl Added ImagingEnter/LeaveSection() + * + * Copyright (c) 1997-2003 by Secret Labs AB. + * Copyright (c) 1995-2003 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +/* exception state */ + +void * +ImagingError_IOError(void) +{ + fprintf(stderr, "*** exception: file access error\n"); + return NULL; +} + +void * +ImagingError_MemoryError(void) +{ + fprintf(stderr, "*** exception: out of memory\n"); + return NULL; +} + +void * +ImagingError_ModeError(void) +{ + return ImagingError_ValueError("bad image mode"); + return NULL; +} + +void * +ImagingError_Mismatch(void) +{ + return ImagingError_ValueError("images don't match"); + return NULL; +} + +void * +ImagingError_ValueError(const char *message) +{ + if (!message) + message = "exception: bad argument to function"; + fprintf(stderr, "*** %s\n", message); + return NULL; +} + +void +ImagingError_Clear(void) +{ + /* nop */; +} + +/* thread state */ + +void +ImagingSectionEnter(ImagingSectionCookie* cookie) +{ + /* pass */ +} + +void +ImagingSectionLeave(ImagingSectionCookie* cookie) +{ + /* pass */ +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c new file mode 100755 index 00000000000..6f454d1ca5d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c @@ -0,0 +1,193 @@ +/* + * The Python Imaging Library + * $Id$ + * + * built-in image file handling + * + * history: + * 1995-11-26 fl Created, supports PGM/PPM + * 1996-08-07 fl Write "1" images as PGM + * 1999-02-21 fl Don't write non-standard modes + * + * Copyright (c) 1997-99 by Secret Labs AB. + * Copyright (c) 1995-96 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#include + +Imaging +ImagingOpenPPM(const char* infile) +{ + FILE* fp; + int i, c, v; + char* mode; + int x, y, max; + Imaging im; + + if (!infile) + return ImagingError_ValueError(NULL); + + fp = fopen(infile, "rb"); + if (!fp) + return ImagingError_IOError(); + + /* PPM magic */ + if (fgetc(fp) != 'P') + goto error; + switch (fgetc(fp)) { + case '4': /* FIXME: 1-bit images are not yet supported */ + goto error; + case '5': + mode = "L"; + break; + case '6': + mode = "RGB"; + break; + default: + goto error; + } + + i = 0; + c = fgetc(fp); + + x = y = max = 0; + + while (i < 3) { + + /* Ignore optional comment fields */ + while (c == '\n') { + c = fgetc(fp); + if (c == '#') { + do { + c = fgetc(fp); + if (c == EOF) + goto error; + } while (c != '\n'); + c = fgetc(fp); + } + } + + /* Skip forward to next value */ + while (isspace(c)) + c = fgetc(fp); + + /* And parse it */ + v = 0; + while (isdigit(c)) { + v = v * 10 + (c - '0'); + c = fgetc(fp); + } + + if (c == EOF) + goto error; + + switch (i++) { + case 0: + x = v; + break; + case 1: + y = v; + break; + case 2: + max = v; + break; + } + } + + im = ImagingNew(mode, x, y); + if (!im) + return NULL; + + /* if (max != 255) ... FIXME: does anyone ever use this feature? */ + + if (strcmp(im->mode, "L") == 0) { + + /* PPM "L" */ + for (y = 0; y < im->ysize; y++) + if (fread(im->image[y], im->xsize, 1, fp) != 1) + goto error; + + } else { + + /* PPM "RGB" or PyPPM mode */ + for (y = 0; y < im->ysize; y++) + for (x = i = 0; x < im->xsize; x++, i += im->pixelsize) + if (fread(im->image[y]+i, im->bands, 1, fp) != 1) + goto error; + } + + fclose(fp); + + return im; + +error: + fclose(fp); + return ImagingError_IOError(); +} + + +int +ImagingSaveRaw(Imaging im, FILE* fp) +{ + int x, y, i; + + if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) { + + /* @PIL227: FIXME: for mode "1", map != 0 to 255 */ + + /* PGM "L" */ + for (y = 0; y < im->ysize; y++) + fwrite(im->image[y], 1, im->xsize, fp); + + } else { + + /* PPM "RGB" or other internal format */ + for (y = 0; y < im->ysize; y++) + for (x = i = 0; x < im->xsize; x++, i += im->pixelsize) + fwrite(im->image[y]+i, 1, im->bands, fp); + + } + + return 1; +} + + +int +ImagingSavePPM(Imaging im, const char* outfile) +{ + FILE* fp; + + if (!im) { + (void) ImagingError_ValueError(NULL); + return 0; + } + + fp = fopen(outfile, "wb"); + if (!fp) { + (void) ImagingError_IOError(); + return 0; + } + + if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) { + /* Write "PGM" */ + fprintf(fp, "P5\n%d %d\n255\n", im->xsize, im->ysize); + } else if (strcmp(im->mode, "RGB") == 0) { + /* Write "PPM" */ + fprintf(fp, "P6\n%d %d\n255\n", im->xsize, im->ysize); + } else { + (void) ImagingError_ModeError(); + return 0; + } + + ImagingSaveRaw(im, fp); + + fclose(fp); + + return 1; +} + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c new file mode 100755 index 00000000000..ce00e6c157c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c @@ -0,0 +1,101 @@ +/* + * The Python Imaging Library + * $Id$ + * + * fill image with constant pixel value + * + * history: + * 95-11-26 fl moved from Imaging.c + * 96-05-17 fl added radial fill, renamed wedge to linear + * 98-06-23 fl changed ImageFill signature + * + * Copyright (c) Secret Labs AB 1997-98. All rights reserved. + * Copyright (c) Fredrik Lundh 1995-96. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#include "math.h" + +Imaging +ImagingFill(Imaging im, const void* colour) +{ + int x, y; + + if (im->type == IMAGING_TYPE_SPECIAL) { + /* use generic API */ + ImagingAccess access = ImagingAccessNew(im); + if (access) { + for (y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++) + access->put_pixel(im, x, y, colour); + ImagingAccessDelete(im, access); + } else { + /* wipe the image */ + for (y = 0; y < im->ysize; y++) + memset(im->image[y], 0, im->linesize); + } + } else { + INT32 c = 0L; + memcpy(&c, colour, im->pixelsize); + if (im->image32 && c != 0L) { + for (y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++) + im->image32[y][x] = c; + } else { + unsigned char cc = (unsigned char) *(UINT8*) colour; + for (y = 0; y < im->ysize; y++) + memset(im->image[y], cc, im->linesize); + } + } + + return im; +} + +Imaging +ImagingFillLinearGradient(const char *mode) +{ + Imaging im; + int y; + + if (strlen(mode) != 1) + return (Imaging) ImagingError_ModeError(); + + im = ImagingNew(mode, 256, 256); + if (!im) + return NULL; + + for (y = 0; y < 256; y++) + memset(im->image8[y], (unsigned char) y, 256); + + return im; +} + +Imaging +ImagingFillRadialGradient(const char *mode) +{ + Imaging im; + int x, y; + int d; + + if (strlen(mode) != 1) + return (Imaging) ImagingError_ModeError(); + + im = ImagingNew(mode, 256, 256); + if (!im) + return NULL; + + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) { + d = (int) sqrt((double) ((x-128)*(x-128) + (y-128)*(y-128)) * 2.0); + if (d >= 255) + im->image8[y][x] = 255; + else + im->image8[y][x] = d; + } + + return im; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c new file mode 100755 index 00000000000..45c9bf0606f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c @@ -0,0 +1,179 @@ +/* + * The Python Imaging Library + * $Id$ + * + * apply convolution kernel to image + * + * history: + * 1995-11-26 fl Created, supports 3x3 kernels + * 1995-11-27 fl Added 5x5 kernels, copy border + * 1999-07-26 fl Eliminated a few compiler warnings + * 2002-06-09 fl Moved kernel definitions to Python + * 2002-06-11 fl Support floating point kernels + * 2003-09-15 fl Added ImagingExpand helper + * + * Copyright (c) Secret Labs AB 1997-2002. All rights reserved. + * Copyright (c) Fredrik Lundh 1995. + * + * See the README file for information on usage and redistribution. + */ + +/* + * FIXME: Support RGB and RGBA/CMYK modes as well + * FIXME: Expand image border (current version leaves border as is) + * FIXME: Implement image processing gradient filters + */ + +#include "Imaging.h" + +Imaging +ImagingExpand(Imaging imIn, int xmargin, int ymargin, int mode) +{ + Imaging imOut; + int x, y; + + if (xmargin < 0 && ymargin < 0) + return (Imaging) ImagingError_ValueError("bad kernel size"); + + imOut = ImagingNew( + imIn->mode, imIn->xsize+2*xmargin, imIn->ysize+2*ymargin + ); + if (!imOut) + return NULL; + +#define EXPAND_LINE(type, image, yin, yout) {\ + for (x = 0; x < xmargin; x++)\ + imOut->image[yout][x] = imIn->image[yin][0];\ + for (x = 0; x < imIn->xsize; x++)\ + imOut->image[yout][x+xmargin] = imIn->image[yin][x];\ + for (x = 0; x < xmargin; x++)\ + imOut->image[yout][xmargin+imIn->xsize+x] =\ + imIn->image[yin][imIn->xsize-1];\ + } + +#define EXPAND(type, image) {\ + for (y = 0; y < ymargin; y++)\ + EXPAND_LINE(type, image, 0, y);\ + for (y = 0; y < imIn->ysize; y++)\ + EXPAND_LINE(type, image, y, y+ymargin);\ + for (y = 0; y < ymargin; y++)\ + EXPAND_LINE(type, image, imIn->ysize-1, ymargin+imIn->ysize+y);\ + } + + if (imIn->image8) { + EXPAND(UINT8, image8); + } else { + EXPAND(INT32, image32); + } + + ImagingCopyInfo(imOut, imIn); + + return imOut; +} + +Imaging +ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32* kernel, + FLOAT32 offset, FLOAT32 divisor) +{ + Imaging imOut; + int x, y; + FLOAT32 sum; + + if (!im || strcmp(im->mode, "L") != 0) + return (Imaging) ImagingError_ModeError(); + + if (im->xsize < xsize || im->ysize < ysize) + return ImagingCopy(im); + + if ((xsize != 3 && xsize != 5) || xsize != ysize) + return (Imaging) ImagingError_ValueError("bad kernel size"); + + imOut = ImagingNew(im->mode, im->xsize, im->ysize); + if (!imOut) + return NULL; + + /* brute force kernel implementations */ +#define KERNEL3x3(image, kernel, d) ( \ + (int) image[y+1][x-d] * kernel[0] + \ + (int) image[y+1][x] * kernel[1] + \ + (int) image[y+1][x+d] * kernel[2] + \ + (int) image[y][x-d] * kernel[3] + \ + (int) image[y][x] * kernel[4] + \ + (int) image[y][x+d] * kernel[5] + \ + (int) image[y-1][x-d] * kernel[6] + \ + (int) image[y-1][x] * kernel[7] + \ + (int) image[y-1][x+d] * kernel[8]) + +#define KERNEL5x5(image, kernel, d) ( \ + (int) image[y+2][x-d-d] * kernel[0] + \ + (int) image[y+2][x-d] * kernel[1] + \ + (int) image[y+2][x] * kernel[2] + \ + (int) image[y+2][x+d] * kernel[3] + \ + (int) image[y+2][x+d+d] * kernel[4] + \ + (int) image[y+1][x-d-d] * kernel[5] + \ + (int) image[y+1][x-d] * kernel[6] + \ + (int) image[y+1][x] * kernel[7] + \ + (int) image[y+1][x+d] * kernel[8] + \ + (int) image[y+1][x+d+d] * kernel[9] + \ + (int) image[y][x-d-d] * kernel[10] + \ + (int) image[y][x-d] * kernel[11] + \ + (int) image[y][x] * kernel[12] + \ + (int) image[y][x+d] * kernel[13] + \ + (int) image[y][x+d+d] * kernel[14] + \ + (int) image[y-1][x-d-d] * kernel[15] + \ + (int) image[y-1][x-d] * kernel[16] + \ + (int) image[y-1][x] * kernel[17] + \ + (int) image[y-1][x+d] * kernel[18] + \ + (int) image[y-1][x+d+d] * kernel[19] + \ + (int) image[y-2][x-d-d] * kernel[20] + \ + (int) image[y-2][x-d] * kernel[21] + \ + (int) image[y-2][x] * kernel[22] + \ + (int) image[y-2][x+d] * kernel[23] + \ + (int) image[y-2][x+d+d] * kernel[24]) + + if (xsize == 3) { + /* 3x3 kernel. */ + for (x = 0; x < im->xsize; x++) + imOut->image[0][x] = im->image8[0][x]; + for (y = 1; y < im->ysize-1; y++) { + imOut->image[y][0] = im->image8[y][0]; + for (x = 1; x < im->xsize-1; x++) { + sum = KERNEL3x3(im->image8, kernel, 1) / divisor + offset; + if (sum <= 0) + imOut->image8[y][x] = 0; + else if (sum >= 255) + imOut->image8[y][x] = 255; + else + imOut->image8[y][x] = (UINT8) sum; + } + imOut->image8[y][x] = im->image8[y][x]; + } + for (x = 0; x < im->xsize; x++) + imOut->image8[y][x] = im->image8[y][x]; + } else { + /* 5x5 kernel. */ + for (y = 0; y < 2; y++) + for (x = 0; x < im->xsize; x++) + imOut->image8[y][x] = im->image8[y][x]; + for (; y < im->ysize-2; y++) { + for (x = 0; x < 2; x++) + imOut->image8[y][x] = im->image8[y][x]; + for (; x < im->xsize-2; x++) { + sum = KERNEL5x5(im->image8, kernel, 1) / divisor + offset; + if (sum <= 0) + imOut->image8[y][x] = 0; + else if (sum >= 255) + imOut->image8[y][x] = 255; + else + imOut->image8[y][x] = (UINT8) sum; + } + for (; x < im->xsize; x++) + imOut->image8[y][x] = im->image8[y][x]; + } + for (; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++) + imOut->image8[y][x] = im->image8[y][x]; + } + return imOut; +} + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c new file mode 100755 index 00000000000..75eebe86c90 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c @@ -0,0 +1,205 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for Autodesk Animator FLI/FLC animations + * + * history: + * 97-01-03 fl Created + * 97-01-17 fl Added SS2 support (FLC) + * + * Copyright (c) Fredrik Lundh 1997. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +#define I16(ptr)\ + ((ptr)[0] + ((ptr)[1] << 8)) + +#define I32(ptr)\ + ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) + + +int +ImagingFliDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8* ptr; + int framesize; + int c, chunks; + int l, lines; + int i, j, x = 0, y, ymax; + + /* If not even the chunk size is present, we'd better leave */ + + if (bytes < 4) + return 0; + + /* We don't decode anything unless we have a full chunk in the + input buffer (on the other hand, the Python part of the driver + makes sure this is always the case) */ + + ptr = buf; + + framesize = I32(ptr); + if (framesize < I32(ptr)) + return 0; + + /* Make sure this is a frame chunk. The Python driver takes + case of other chunk types. */ + + if (I16(ptr+4) != 0xF1FA) { + state->errcode = IMAGING_CODEC_UNKNOWN; + return -1; + } + + chunks = I16(ptr+6); + ptr += 16; + + /* Process subchunks */ + for (c = 0; c < chunks; c++) { + UINT8 *data = ptr + 6; + switch (I16(ptr+4)) { + case 4: case 11: + /* FLI COLOR chunk */ + break; /* ignored; handled by Python code */ + case 7: + /* FLI SS2 chunk (word delta) */ + lines = I16(data); data += 2; + for (l = y = 0; l < lines && y < state->ysize; l++, y++) { + UINT8* buf = (UINT8*) im->image[y]; + int p, packets; + packets = I16(data); data += 2; + while (packets & 0x8000) { + /* flag word */ + if (packets & 0x4000) { + y += 65536 - packets; /* skip lines */ + if (y >= state->ysize) { + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + buf = (UINT8*) im->image[y]; + } else { + /* store last byte (used if line width is odd) */ + buf[state->xsize-1] = (UINT8) packets; + } + packets = I16(data); data += 2; + } + for (p = x = 0; p < packets; p++) { + x += data[0]; /* pixel skip */ + if (data[1] >= 128) { + i = 256-data[1]; /* run */ + if (x + i + i > state->xsize) + break; + for (j = 0; j < i; j++) { + buf[x++] = data[2]; + buf[x++] = data[3]; + } + data += 2 + 2; + } else { + i = 2 * (int) data[1]; /* chunk */ + if (x + i > state->xsize) + break; + memcpy(buf + x, data + 2, i); + data += 2 + i; + x += i; + } + } + if (p < packets) + break; /* didn't process all packets */ + } + if (l < lines) { + /* didn't process all lines */ + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + break; + case 12: + /* FLI LC chunk (byte delta) */ + y = I16(data); ymax = y + I16(data+2); data += 4; + for (; y < ymax && y < state->ysize; y++) { + UINT8* out = (UINT8*) im->image[y]; + int p, packets = *data++; + for (p = x = 0; p < packets; p++, x += i) { + x += data[0]; /* skip pixels */ + if (data[1] & 0x80) { + i = 256-data[1]; /* run */ + if (x + i > state->xsize) + break; + memset(out + x, data[2], i); + data += 3; + } else { + i = data[1]; /* chunk */ + if (x + i > state->xsize) + break; + memcpy(out + x, data + 2, i); + data += i + 2; + } + } + if (p < packets) + break; /* didn't process all packets */ + } + if (y < ymax) { + /* didn't process all lines */ + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + break; + case 13: + /* FLI BLACK chunk */ + for (y = 0; y < state->ysize; y++) + memset(im->image[y], 0, state->xsize); + break; + case 15: + /* FLI BRUN chunk */ + for (y = 0; y < state->ysize; y++) { + UINT8* out = (UINT8*) im->image[y]; + data += 1; /* ignore packetcount byte */ + for (x = 0; x < state->xsize; x += i) { + if (data[0] & 0x80) { + i = 256 - data[0]; + if (x + i > state->xsize) + break; /* safety first */ + memcpy(out + x, data + 1, i); + data += i + 1; + } else { + i = data[0]; + if (x + i > state->xsize) + break; /* safety first */ + memset(out + x, data[1], i); + data += 2; + } + } + if (x != state->xsize) { + /* didn't unpack whole line */ + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + } + break; + case 16: + /* COPY chunk */ + for (y = 0; y < state->ysize; y++) { + UINT8* buf = (UINT8*) im->image[y]; + memcpy(buf+x, data, state->xsize); + data += state->xsize; + } + break; + case 18: + /* PSTAMP chunk */ + break; /* ignored */ + default: + /* unknown chunk */ + /* printf("unknown FLI/FLC chunk: %d\n", I16(ptr+4)); */ + state->errcode = IMAGING_CODEC_UNKNOWN; + return -1; + } + ptr += I32(ptr); + } + + return -1; /* end of frame */ +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c new file mode 100755 index 00000000000..41f535b562d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c @@ -0,0 +1,959 @@ +/* + * The Python Imaging Library + * $Id$ + * + * the imaging geometry methods + * + * history: + * 1995-06-15 fl Created + * 1996-04-15 fl Changed origin + * 1996-05-18 fl Fixed rotate90/270 for rectangular images + * 1996-05-27 fl Added general purpose transform + * 1996-11-22 fl Don't crash when resizing from outside source image + * 1997-08-09 fl Fixed rounding error in resize + * 1998-09-21 fl Incorporated transformation patches (from Zircon #2) + * 1998-09-22 fl Added bounding box to transform engines + * 1999-02-03 fl Fixed bicubic filtering for RGB images + * 1999-02-16 fl Added fixed-point version of affine transform + * 2001-03-28 fl Fixed transform(EXTENT) for xoffset < 0 + * 2003-03-10 fl Compiler tweaks + * 2004-09-19 fl Fixed bilinear/bicubic filtering of LA images + * + * Copyright (c) 1997-2003 by Secret Labs AB + * Copyright (c) 1995-1997 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +/* Undef if you don't need resampling filters */ +#define WITH_FILTERS + +#define COORD(v) ((v) < 0.0 ? -1 : ((int)(v))) +#define FLOOR(v) ((v) < 0.0 ? ((int)floor(v)) : ((int)(v))) + +/* -------------------------------------------------------------------- */ +/* Transpose operations */ + +Imaging +ImagingFlipLeftRight(Imaging imOut, Imaging imIn) +{ + ImagingSectionCookie cookie; + int x, y, xr; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + if (imIn->xsize != imOut->xsize || imIn->ysize != imOut->ysize) + return (Imaging) ImagingError_Mismatch(); + + ImagingCopyInfo(imOut, imIn); + +#define FLIP_HORIZ(image)\ + for (y = 0; y < imIn->ysize; y++) {\ + xr = imIn->xsize-1;\ + for (x = 0; x < imIn->xsize; x++, xr--)\ + imOut->image[y][x] = imIn->image[y][xr];\ + } + + ImagingSectionEnter(&cookie); + + if (imIn->image8) + FLIP_HORIZ(image8) + else + FLIP_HORIZ(image32) + + ImagingSectionLeave(&cookie); + + return imOut; +} + + +Imaging +ImagingFlipTopBottom(Imaging imOut, Imaging imIn) +{ + ImagingSectionCookie cookie; + int y, yr; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + if (imIn->xsize != imOut->xsize || imIn->ysize != imOut->ysize) + return (Imaging) ImagingError_Mismatch(); + + ImagingCopyInfo(imOut, imIn); + + ImagingSectionEnter(&cookie); + + yr = imIn->ysize-1; + for (y = 0; y < imIn->ysize; y++, yr--) + memcpy(imOut->image[yr], imIn->image[y], imIn->linesize); + + ImagingSectionLeave(&cookie); + + return imOut; +} + + +Imaging +ImagingRotate90(Imaging imOut, Imaging imIn) +{ + ImagingSectionCookie cookie; + int x, y, xr; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + if (imIn->xsize != imOut->ysize || imIn->ysize != imOut->xsize) + return (Imaging) ImagingError_Mismatch(); + + ImagingCopyInfo(imOut, imIn); + +#define ROTATE_90(image)\ + for (y = 0; y < imIn->ysize; y++) {\ + xr = imIn->xsize-1;\ + for (x = 0; x < imIn->xsize; x++, xr--)\ + imOut->image[xr][y] = imIn->image[y][x];\ + } + + ImagingSectionEnter(&cookie); + + if (imIn->image8) + ROTATE_90(image8) + else + ROTATE_90(image32) + + ImagingSectionLeave(&cookie); + + return imOut; +} + + +Imaging +ImagingRotate180(Imaging imOut, Imaging imIn) +{ + ImagingSectionCookie cookie; + int x, y, xr, yr; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + if (imIn->xsize != imOut->xsize || imIn->ysize != imOut->ysize) + return (Imaging) ImagingError_Mismatch(); + + ImagingCopyInfo(imOut, imIn); + + yr = imIn->ysize-1; + +#define ROTATE_180(image)\ + for (y = 0; y < imIn->ysize; y++, yr--) {\ + xr = imIn->xsize-1;\ + for (x = 0; x < imIn->xsize; x++, xr--)\ + imOut->image[y][x] = imIn->image[yr][xr];\ + } + + ImagingSectionEnter(&cookie); + + if (imIn->image8) + ROTATE_180(image8) + else + ROTATE_180(image32) + + ImagingSectionLeave(&cookie); + + return imOut; +} + + +Imaging +ImagingRotate270(Imaging imOut, Imaging imIn) +{ + ImagingSectionCookie cookie; + int x, y, yr; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + if (imIn->xsize != imOut->ysize || imIn->ysize != imOut->xsize) + return (Imaging) ImagingError_Mismatch(); + + ImagingCopyInfo(imOut, imIn); + + yr = imIn->ysize - 1; + +#define ROTATE_270(image)\ + for (y = 0; y < imIn->ysize; y++, yr--)\ + for (x = 0; x < imIn->xsize; x++)\ + imOut->image[x][y] = imIn->image[yr][x]; + + ImagingSectionEnter(&cookie); + + if (imIn->image8) + ROTATE_270(image8) + else + ROTATE_270(image32) + + ImagingSectionLeave(&cookie); + + return imOut; +} + + +/* -------------------------------------------------------------------- */ +/* Transforms */ + +/* transform primitives (ImagingTransformMap) */ + +static int +affine_transform(double* xin, double* yin, int x, int y, void* data) +{ + /* full moon tonight. your compiler will generate bogus code + for simple expressions, unless you reorganize the code, or + install Service Pack 3 */ + + double* a = (double*) data; + double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; + double a3 = a[3]; double a4 = a[4]; double a5 = a[5]; + + xin[0] = a0 + a1*x + a2*y; + yin[0] = a3 + a4*x + a5*y; + + return 1; +} + +static int +perspective_transform(double* xin, double* yin, int x, int y, void* data) +{ + double* a = (double*) data; + double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; + double a3 = a[3]; double a4 = a[4]; double a5 = a[5]; + double a6 = a[6]; double a7 = a[7]; + + xin[0] = (a0 + a1*x + a2*y) / (a6*x + a7*y + 1); + yin[0] = (a3 + a4*x + a5*y) / (a6*x + a7*y + 1); + + return 1; +} + +#if 0 +static int +quadratic_transform(double* xin, double* yin, int x, int y, void* data) +{ + double* a = (double*) data; + + double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; double a3 = a[3]; + double a4 = a[4]; double a5 = a[5]; double a6 = a[6]; double a7 = a[7]; + double a8 = a[8]; double a9 = a[9]; double a10 = a[10]; double a11 = a[11]; + + xin[0] = a0 + a1*x + a2*y + a3*x*x + a4*x*y + a5*y*y; + yin[0] = a6 + a7*x + a8*y + a9*x*x + a10*x*y + a11*y*y; + + return 1; +} +#endif + +static int +quad_transform(double* xin, double* yin, int x, int y, void* data) +{ + /* quad warp: map quadrilateral to rectangle */ + + double* a = (double*) data; + double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; double a3 = a[3]; + double a4 = a[4]; double a5 = a[5]; double a6 = a[6]; double a7 = a[7]; + + xin[0] = a0 + a1*x + a2*y + a3*x*y; + yin[0] = a4 + a5*x + a6*y + a7*x*y; + + return 1; +} + +/* transform filters (ImagingTransformFilter) */ + +#ifdef WITH_FILTERS + +static int +nearest_filter8(void* out, Imaging im, double xin, double yin, void* data) +{ + int x = COORD(xin); + int y = COORD(yin); + if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) + return 0; + ((UINT8*)out)[0] = im->image8[y][x]; + return 1; +} + +static int +nearest_filter16(void* out, Imaging im, double xin, double yin, void* data) +{ + int x = COORD(xin); + int y = COORD(yin); + if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) + return 0; + ((INT16*)out)[0] = ((INT16*)(im->image8[y]))[x]; + return 1; +} + +static int +nearest_filter32(void* out, Imaging im, double xin, double yin, void* data) +{ + int x = COORD(xin); + int y = COORD(yin); + if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) + return 0; + ((INT32*)out)[0] = im->image32[y][x]; + return 1; +} + +#define XCLIP(im, x) ( ((x) < 0) ? 0 : ((x) < im->xsize) ? (x) : im->xsize-1 ) +#define YCLIP(im, y) ( ((y) < 0) ? 0 : ((y) < im->ysize) ? (y) : im->ysize-1 ) + +#define BILINEAR(v, a, b, d)\ + (v = (a) + ( (b) - (a) ) * (d)) + +#define BILINEAR_HEAD(type)\ + int x, y;\ + int x0, x1;\ + double v1, v2;\ + double dx, dy;\ + type* in;\ + if (xin < 0.0 || xin >= im->xsize || yin < 0.0 || yin >= im->ysize)\ + return 0;\ + xin -= 0.5;\ + yin -= 0.5;\ + x = FLOOR(xin);\ + y = FLOOR(yin);\ + dx = xin - x;\ + dy = yin - y; + +#define BILINEAR_BODY(type, image, step, offset) {\ + in = (type*) ((image)[YCLIP(im, y)] + offset);\ + x0 = XCLIP(im, x+0)*step;\ + x1 = XCLIP(im, x+1)*step;\ + BILINEAR(v1, in[x0], in[x1], dx);\ + if (y+1 >= 0 && y+1 < im->ysize) {\ + in = (type*) ((image)[y+1] + offset);\ + BILINEAR(v2, in[x0], in[x1], dx);\ + } else\ + v2 = v1;\ + BILINEAR(v1, v1, v2, dy);\ +} + +static int +bilinear_filter8(void* out, Imaging im, double xin, double yin, void* data) +{ + BILINEAR_HEAD(UINT8); + BILINEAR_BODY(UINT8, im->image8, 1, 0); + ((UINT8*)out)[0] = (UINT8) v1; + return 1; +} + +static int +bilinear_filter32I(void* out, Imaging im, double xin, double yin, void* data) +{ + BILINEAR_HEAD(INT32); + BILINEAR_BODY(INT32, im->image32, 1, 0); + ((INT32*)out)[0] = (INT32) v1; + return 1; +} + +static int +bilinear_filter32F(void* out, Imaging im, double xin, double yin, void* data) +{ + BILINEAR_HEAD(FLOAT32); + BILINEAR_BODY(FLOAT32, im->image32, 1, 0); + ((FLOAT32*)out)[0] = (FLOAT32) v1; + return 1; +} + +static int +bilinear_filter32LA(void* out, Imaging im, double xin, double yin, void* data) +{ + BILINEAR_HEAD(UINT8); + BILINEAR_BODY(UINT8, im->image, 4, 0); + ((UINT8*)out)[0] = (UINT8) v1; + ((UINT8*)out)[1] = (UINT8) v1; + ((UINT8*)out)[2] = (UINT8) v1; + BILINEAR_BODY(UINT8, im->image, 4, 3); + ((UINT8*)out)[3] = (UINT8) v1; + return 1; +} + +static int +bilinear_filter32RGB(void* out, Imaging im, double xin, double yin, void* data) +{ + int b; + BILINEAR_HEAD(UINT8); + for (b = 0; b < im->bands; b++) { + BILINEAR_BODY(UINT8, im->image, 4, b); + ((UINT8*)out)[b] = (UINT8) v1; + } + return 1; +} + +#define BICUBIC(v, v1, v2, v3, v4, d) {\ + double p1 = v2;\ + double p2 = -v1 + v3;\ + double p3 = 2*(v1 - v2) + v3 - v4;\ + double p4 = -v1 + v2 - v3 + v4;\ + v = p1 + (d)*(p2 + (d)*(p3 + (d)*p4));\ +} + +#define BICUBIC_HEAD(type)\ + int x = FLOOR(xin);\ + int y = FLOOR(yin);\ + int x0, x1, x2, x3;\ + double v1, v2, v3, v4;\ + double dx, dy;\ + type* in;\ + if (xin < 0.0 || xin >= im->xsize || yin < 0.0 || yin >= im->ysize)\ + return 0;\ + xin -= 0.5;\ + yin -= 0.5;\ + x = FLOOR(xin);\ + y = FLOOR(yin);\ + dx = xin - x;\ + dy = yin - y;\ + x--; y--; + +#define BICUBIC_BODY(type, image, step, offset) {\ + in = (type*) ((image)[YCLIP(im, y)] + offset);\ + x0 = XCLIP(im, x+0)*step;\ + x1 = XCLIP(im, x+1)*step;\ + x2 = XCLIP(im, x+2)*step;\ + x3 = XCLIP(im, x+3)*step;\ + BICUBIC(v1, in[x0], in[x1], in[x2], in[x3], dx);\ + if (y+1 >= 0 && y+1 < im->ysize) {\ + in = (type*) ((image)[y+1] + offset);\ + BICUBIC(v2, in[x0], in[x1], in[x2], in[x3], dx);\ + } else\ + v2 = v1;\ + if (y+2 >= 0 && y+2 < im->ysize) {\ + in = (type*) ((image)[y+2] + offset);\ + BICUBIC(v3, in[x0], in[x1], in[x2], in[x3], dx);\ + } else\ + v3 = v2;\ + if (y+3 >= 0 && y+3 < im->ysize) {\ + in = (type*) ((image)[y+3] + offset);\ + BICUBIC(v4, in[x0], in[x1], in[x2], in[x3], dx);\ + } else\ + v4 = v3;\ + BICUBIC(v1, v1, v2, v3, v4, dy);\ +} + + +static int +bicubic_filter8(void* out, Imaging im, double xin, double yin, void* data) +{ + BICUBIC_HEAD(UINT8); + BICUBIC_BODY(UINT8, im->image8, 1, 0); + if (v1 <= 0.0) + ((UINT8*)out)[0] = 0; + else if (v1 >= 255.0) + ((UINT8*)out)[0] = 255; + else + ((UINT8*)out)[0] = (UINT8) v1; + return 1; +} + +static int +bicubic_filter32I(void* out, Imaging im, double xin, double yin, void* data) +{ + BICUBIC_HEAD(INT32); + BICUBIC_BODY(INT32, im->image32, 1, 0); + ((INT32*)out)[0] = (INT32) v1; + return 1; +} + +static int +bicubic_filter32F(void* out, Imaging im, double xin, double yin, void* data) +{ + BICUBIC_HEAD(FLOAT32); + BICUBIC_BODY(FLOAT32, im->image32, 1, 0); + ((FLOAT32*)out)[0] = (FLOAT32) v1; + return 1; +} + +static int +bicubic_filter32LA(void* out, Imaging im, double xin, double yin, void* data) +{ + BICUBIC_HEAD(UINT8); + BICUBIC_BODY(UINT8, im->image, 4, 0); + if (v1 <= 0.0) { + ((UINT8*)out)[0] = 0; + ((UINT8*)out)[1] = 0; + ((UINT8*)out)[2] = 0; + } else if (v1 >= 255.0) { + ((UINT8*)out)[0] = 255; + ((UINT8*)out)[1] = 255; + ((UINT8*)out)[2] = 255; + } else { + ((UINT8*)out)[0] = (UINT8) v1; + ((UINT8*)out)[1] = (UINT8) v1; + ((UINT8*)out)[2] = (UINT8) v1; + } + BICUBIC_BODY(UINT8, im->image, 4, 3); + if (v1 <= 0.0) + ((UINT8*)out)[3] = 0; + else if (v1 >= 255.0) + ((UINT8*)out)[3] = 255; + else + ((UINT8*)out)[3] = (UINT8) v1; + return 1; +} + +static int +bicubic_filter32RGB(void* out, Imaging im, double xin, double yin, void* data) +{ + int b; + BICUBIC_HEAD(UINT8); + for (b = 0; b < im->bands; b++) { + BICUBIC_BODY(UINT8, im->image, 4, b); + if (v1 <= 0.0) + ((UINT8*)out)[b] = 0; + else if (v1 >= 255.0) + ((UINT8*)out)[b] = 255; + else + ((UINT8*)out)[b] = (UINT8) v1; + } + return 1; +} + +static ImagingTransformFilter +getfilter(Imaging im, int filterid) +{ + switch (filterid) { + case IMAGING_TRANSFORM_NEAREST: + if (im->image8) + switch (im->type) { + case IMAGING_TYPE_UINT8: + return (ImagingTransformFilter) nearest_filter8; + case IMAGING_TYPE_SPECIAL: + switch (im->pixelsize) { + case 1: + return (ImagingTransformFilter) nearest_filter8; + case 2: + return (ImagingTransformFilter) nearest_filter16; + case 4: + return (ImagingTransformFilter) nearest_filter32; + } + } + else + return (ImagingTransformFilter) nearest_filter32; + break; + case IMAGING_TRANSFORM_BILINEAR: + if (im->image8) + return (ImagingTransformFilter) bilinear_filter8; + else if (im->image32) { + switch (im->type) { + case IMAGING_TYPE_UINT8: + if (im->bands == 2) + return (ImagingTransformFilter) bilinear_filter32LA; + else + return (ImagingTransformFilter) bilinear_filter32RGB; + case IMAGING_TYPE_INT32: + return (ImagingTransformFilter) bilinear_filter32I; + case IMAGING_TYPE_FLOAT32: + return (ImagingTransformFilter) bilinear_filter32F; + } + } + break; + case IMAGING_TRANSFORM_BICUBIC: + if (im->image8) + return (ImagingTransformFilter) bicubic_filter8; + else if (im->image32) { + switch (im->type) { + case IMAGING_TYPE_UINT8: + if (im->bands == 2) + return (ImagingTransformFilter) bicubic_filter32LA; + else + return (ImagingTransformFilter) bicubic_filter32RGB; + case IMAGING_TYPE_INT32: + return (ImagingTransformFilter) bicubic_filter32I; + case IMAGING_TYPE_FLOAT32: + return (ImagingTransformFilter) bicubic_filter32F; + } + } + break; + } + /* no such filter */ + return NULL; +} + +#else +#define getfilter(im, id) NULL +#endif + +/* transformation engines */ + +Imaging +ImagingTransform( + Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, + ImagingTransformMap transform, void* transform_data, + ImagingTransformFilter filter, void* filter_data, + int fill) +{ + /* slow generic transformation. use ImagingTransformAffine or + ImagingScaleAffine where possible. */ + + ImagingSectionCookie cookie; + int x, y; + char *out; + double xx, yy; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + + ImagingCopyInfo(imOut, imIn); + + ImagingSectionEnter(&cookie); + + if (x0 < 0) + x0 = 0; + if (y0 < 0) + y0 = 0; + if (x1 > imOut->xsize) + x1 = imOut->xsize; + if (y1 > imOut->ysize) + y1 = imOut->ysize; + + for (y = y0; y < y1; y++) { + out = imOut->image[y] + x0*imOut->pixelsize; + for (x = x0; x < x1; x++) { + if (!transform(&xx, &yy, x-x0, y-y0, transform_data) || + !filter(out, imIn, xx, yy, filter_data)) { + if (fill) + memset(out, 0, imOut->pixelsize); + } + out += imOut->pixelsize; + } + } + + ImagingSectionLeave(&cookie); + + return imOut; +} + +static Imaging +ImagingScaleAffine(Imaging imOut, Imaging imIn, + int x0, int y0, int x1, int y1, + double a[6], int fill) +{ + /* scale, nearest neighbour resampling */ + + ImagingSectionCookie cookie; + int x, y; + int xin; + double xo, yo; + int xmin, xmax; + int *xintab; + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + + ImagingCopyInfo(imOut, imIn); + + if (x0 < 0) + x0 = 0; + if (y0 < 0) + y0 = 0; + if (x1 > imOut->xsize) + x1 = imOut->xsize; + if (y1 > imOut->ysize) + y1 = imOut->ysize; + + xintab = (int*) malloc(imOut->xsize * sizeof(int)); + if (!xintab) { + ImagingDelete(imOut); + return (Imaging) ImagingError_MemoryError(); + } + + xo = a[0]; + yo = a[3]; + + xmin = x1; + xmax = x0; + + /* Pretabulate horizontal pixel positions */ + for (x = x0; x < x1; x++) { + xin = COORD(xo); + if (xin >= 0 && xin < (int) imIn->xsize) { + xmax = x+1; + if (x < xmin) + xmin = x; + xintab[x] = xin; + } + xo += a[1]; + } + +#define AFFINE_SCALE(pixel, image)\ + for (y = y0; y < y1; y++) {\ + int yi = COORD(yo);\ + pixel *in, *out;\ + out = imOut->image[y];\ + if (fill && x1 > x0)\ + memset(out+x0, 0, (x1-x0)*sizeof(pixel));\ + if (yi >= 0 && yi < imIn->ysize) {\ + in = imIn->image[yi];\ + for (x = xmin; x < xmax; x++)\ + out[x] = in[xintab[x]];\ + }\ + yo += a[5];\ + } + + ImagingSectionEnter(&cookie); + + if (imIn->image8) { + AFFINE_SCALE(UINT8, image8); + } else { + AFFINE_SCALE(INT32, image32); + } + + ImagingSectionLeave(&cookie); + + free(xintab); + + return imOut; +} + +static inline int +check_fixed(double a[6], int x, int y) +{ + return (fabs(a[0] + x*a[1] + y*a[2]) < 32768.0 && + fabs(a[3] + x*a[4] + y*a[5]) < 32768.0); +} + +static inline Imaging +affine_fixed(Imaging imOut, Imaging imIn, + int x0, int y0, int x1, int y1, + double a[6], int filterid, int fill) +{ + /* affine transform, nearest neighbour resampling, fixed point + arithmetics */ + + int x, y; + int xin, yin; + int xsize, ysize; + int xx, yy; + int a0, a1, a2, a3, a4, a5; + + ImagingCopyInfo(imOut, imIn); + + xsize = (int) imIn->xsize; + ysize = (int) imIn->ysize; + +/* use 16.16 fixed point arithmetics */ +#define FIX(v) FLOOR((v)*65536.0 + 0.5) + + a0 = FIX(a[0]); a1 = FIX(a[1]); a2 = FIX(a[2]); + a3 = FIX(a[3]); a4 = FIX(a[4]); a5 = FIX(a[5]); + +#define AFFINE_TRANSFORM_FIXED(pixel, image)\ + for (y = y0; y < y1; y++) {\ + pixel *out;\ + xx = a0;\ + yy = a3;\ + out = imOut->image[y];\ + if (fill && x1 > x0)\ + memset(out+x0, 0, (x1-x0)*sizeof(pixel));\ + for (x = x0; x < x1; x++, out++) {\ + xin = xx >> 16;\ + if (xin >= 0 && xin < xsize) {\ + yin = yy >> 16;\ + if (yin >= 0 && yin < ysize)\ + *out = imIn->image[yin][xin];\ + }\ + xx += a1;\ + yy += a4;\ + }\ + a0 += a2;\ + a3 += a5;\ + } + + if (imIn->image8) + AFFINE_TRANSFORM_FIXED(UINT8, image8) + else + AFFINE_TRANSFORM_FIXED(INT32, image32) + + return imOut; +} + +Imaging +ImagingTransformAffine(Imaging imOut, Imaging imIn, + int x0, int y0, int x1, int y1, + double a[6], int filterid, int fill) +{ + /* affine transform, nearest neighbour resampling, floating point + arithmetics*/ + + ImagingSectionCookie cookie; + int x, y; + int xin, yin; + int xsize, ysize; + double xx, yy; + double xo, yo; + + if (filterid || imIn->type == IMAGING_TYPE_SPECIAL) { + /* Filtered transform */ + ImagingTransformFilter filter = getfilter(imIn, filterid); + if (!filter) + return (Imaging) ImagingError_ValueError("unknown filter"); + return ImagingTransform( + imOut, imIn, + x0, y0, x1, y1, + affine_transform, a, + filter, NULL, fill); + } + + if (a[2] == 0 && a[4] == 0) + /* Scaling */ + return ImagingScaleAffine(imOut, imIn, x0, y0, x1, y1, a, fill); + + if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) + return (Imaging) ImagingError_ModeError(); + + if (x0 < 0) + x0 = 0; + if (y0 < 0) + y0 = 0; + if (x1 > imOut->xsize) + x1 = imOut->xsize; + if (y1 > imOut->ysize) + y1 = imOut->ysize; + + ImagingCopyInfo(imOut, imIn); + + /* translate all four corners to check if they are within the + range that can be represented by the fixed point arithmetics */ + + if (check_fixed(a, 0, 0) && check_fixed(a, x1-x0, y1-y0) && + check_fixed(a, 0, y1-y0) && check_fixed(a, x1-x0, 0)) + return affine_fixed(imOut, imIn, x0, y0, x1, y1, a, filterid, fill); + + /* FIXME: cannot really think of any reasonable case when the + following code is used. maybe we should fall back on the slow + generic transform engine in this case? */ + + xsize = (int) imIn->xsize; + ysize = (int) imIn->ysize; + + xo = a[0]; + yo = a[3]; + +#define AFFINE_TRANSFORM(pixel, image)\ + for (y = y0; y < y1; y++) {\ + pixel *out;\ + xx = xo;\ + yy = yo;\ + out = imOut->image[y];\ + if (fill && x1 > x0)\ + memset(out+x0, 0, (x1-x0)*sizeof(pixel));\ + for (x = x0; x < x1; x++, out++) {\ + xin = COORD(xx);\ + if (xin >= 0 && xin < xsize) {\ + yin = COORD(yy);\ + if (yin >= 0 && yin < ysize)\ + *out = imIn->image[yin][xin];\ + }\ + xx += a[1];\ + yy += a[4];\ + }\ + xo += a[2];\ + yo += a[5];\ + } + + ImagingSectionEnter(&cookie); + + if (imIn->image8) + AFFINE_TRANSFORM(UINT8, image8) + else + AFFINE_TRANSFORM(INT32, image32) + + ImagingSectionLeave(&cookie); + + return imOut; +} + +Imaging +ImagingTransformPerspective(Imaging imOut, Imaging imIn, + int x0, int y0, int x1, int y1, + double a[8], int filterid, int fill) +{ + ImagingTransformFilter filter = getfilter(imIn, filterid); + if (!filter) + return (Imaging) ImagingError_ValueError("bad filter number"); + + return ImagingTransform( + imOut, imIn, + x0, y0, x1, y1, + perspective_transform, a, + filter, NULL, + fill); +} + +Imaging +ImagingTransformQuad(Imaging imOut, Imaging imIn, + int x0, int y0, int x1, int y1, + double a[8], int filterid, int fill) +{ + ImagingTransformFilter filter = getfilter(imIn, filterid); + if (!filter) + return (Imaging) ImagingError_ValueError("bad filter number"); + + return ImagingTransform( + imOut, imIn, + x0, y0, x1, y1, + quad_transform, a, + filter, NULL, + fill); +} + +/* -------------------------------------------------------------------- */ +/* Convenience functions */ + +Imaging +ImagingResize(Imaging imOut, Imaging imIn, int filterid) +{ + double a[6]; + + if (imOut->xsize == imIn->xsize && imOut->ysize == imIn->ysize) + return ImagingCopy2(imOut, imIn); + + memset(a, 0, sizeof a); + a[1] = (double) imIn->xsize / imOut->xsize; + a[5] = (double) imIn->ysize / imOut->ysize; + + if (!filterid && imIn->type != IMAGING_TYPE_SPECIAL) + return ImagingScaleAffine( + imOut, imIn, + 0, 0, imOut->xsize, imOut->ysize, + a, 1); + + return ImagingTransformAffine( + imOut, imIn, + 0, 0, imOut->xsize, imOut->ysize, + a, filterid, 1); +} + +Imaging +ImagingRotate(Imaging imOut, Imaging imIn, double theta, int filterid) +{ + int xsize, ysize; + double sintheta, costheta; + double a[6]; + + /* Setup an affine transform to rotate around the image center */ + theta = -theta * M_PI / 180.0; + sintheta = sin(theta); + costheta = cos(theta); + + xsize = imOut->xsize; + ysize = imOut->ysize; + + a[0] = -costheta * xsize/2 - sintheta * ysize/2 + xsize/2; + a[1] = costheta; + a[2] = sintheta; + a[3] = sintheta * xsize/2 - costheta * ysize/2 + ysize/2; + a[4] = -sintheta; + a[5] = costheta; + + return ImagingTransformAffine( + imOut, imIn, + 0, 0, imOut->xsize, imOut->ysize, + a, filterid, 1); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c new file mode 100755 index 00000000000..d1722fe1488 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c @@ -0,0 +1,316 @@ +/* + * The Python Imaging Library + * $Id$ + * + * helpers to bounding boxes, min/max values, number of colors, etc. + * + * history: + * 1996-07-22 fl Created + * 1996-12-30 fl Added projection stuff + * 1998-07-12 fl Added extrema stuff + * 2004-09-17 fl Added colors stuff + * + * Copyright (c) 1997-2004 by Secret Labs AB. + * Copyright (c) 1996-2004 by Fredrik Lundh. + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingGetBBox(Imaging im, int bbox[4]) +{ + /* Get the bounding box for any non-zero data in the image.*/ + + int x, y; + int has_data; + + /* Initialize bounding box to max values */ + bbox[0] = im->xsize; + bbox[1] = -1; + bbox[2] = bbox[3] = 0; + +#define GETBBOX(image, mask)\ + for (y = 0; y < im->ysize; y++) {\ + has_data = 0;\ + for (x = 0; x < im->xsize; x++)\ + if (im->image[y][x] & mask) {\ + has_data = 1;\ + if (x < bbox[0])\ + bbox[0] = x;\ + if (x >= bbox[2])\ + bbox[2] = x+1;\ + }\ + if (has_data) {\ + if (bbox[1] < 0)\ + bbox[1] = y;\ + bbox[3] = y+1;\ + }\ + } + + if (im->image8) { + GETBBOX(image8, 0xff); + } else { + INT32 mask = 0xffffffff; + if (im->bands == 3) + ((UINT8*) &mask)[3] = 0; + GETBBOX(image32, mask); + } + + /* Check that we got a box */ + if (bbox[1] < 0) + return 0; /* no data */ + + return 1; /* ok */ +} + + +int +ImagingGetProjection(Imaging im, UINT8* xproj, UINT8* yproj) +{ + /* Get projection arrays for non-zero data in the image.*/ + + int x, y; + int has_data; + + /* Initialize projection arrays */ + memset(xproj, 0, im->xsize); + memset(yproj, 0, im->ysize); + +#define GETPROJ(image, mask)\ + for (y = 0; y < im->ysize; y++) {\ + has_data = 0;\ + for (x = 0; x < im->xsize; x++)\ + if (im->image[y][x] & mask) {\ + has_data = 1;\ + xproj[x] = 1;\ + }\ + if (has_data)\ + yproj[y] = 1;\ + } + + if (im->image8) { + GETPROJ(image8, 0xff); + } else { + INT32 mask = 0xffffffff; + if (im->bands == 3) + ((UINT8*) &mask)[3] = 0; + GETPROJ(image32, mask); + } + + return 1; /* ok */ +} + + +int +ImagingGetExtrema(Imaging im, void *extrema) +{ + int x, y; + INT32 imin, imax; + FLOAT32 fmin, fmax; + + if (im->bands != 1) { + (void) ImagingError_ModeError(); + return -1; /* mismatch */ + } + + if (!im->xsize || !im->ysize) + return 0; /* zero size */ + + switch (im->type) { + case IMAGING_TYPE_UINT8: + imin = imax = im->image8[0][0]; + for (y = 0; y < im->ysize; y++) { + UINT8* in = im->image8[y]; + for (x = 0; x < im->xsize; x++) { + if (imin > in[x]) + imin = in[x]; + else if (imax < in[x]) + imax = in[x]; + } + } + ((UINT8*) extrema)[0] = (UINT8) imin; + ((UINT8*) extrema)[1] = (UINT8) imax; + break; + case IMAGING_TYPE_INT32: + imin = imax = im->image32[0][0]; + for (y = 0; y < im->ysize; y++) { + INT32* in = im->image32[y]; + for (x = 0; x < im->xsize; x++) { + if (imin > in[x]) + imin = in[x]; + else if (imax < in[x]) + imax = in[x]; + } + } + ((INT32*) extrema)[0] = imin; + ((INT32*) extrema)[1] = imax; + break; + case IMAGING_TYPE_FLOAT32: + fmin = fmax = ((FLOAT32*) im->image32[0])[0]; + for (y = 0; y < im->ysize; y++) { + FLOAT32* in = (FLOAT32*) im->image32[y]; + for (x = 0; x < im->xsize; x++) { + if (fmin > in[x]) + fmin = in[x]; + else if (fmax < in[x]) + fmax = in[x]; + } + } + ((FLOAT32*) extrema)[0] = fmin; + ((FLOAT32*) extrema)[1] = fmax; + break; + case IMAGING_TYPE_SPECIAL: + if (strcmp(im->mode, "I;16") == 0) { + imin = imax = ((UINT16*) im->image8[0])[0]; + for (y = 0; y < im->ysize; y++) { + UINT16* in = (UINT16 *) im->image[y]; + for (x = 0; x < im->xsize; x++) { + if (imin > in[x]) + imin = in[x]; + else if (imax < in[x]) + imax = in[x]; + } + } + ((UINT16*) extrema)[0] = (UINT16) imin; + ((UINT16*) extrema)[1] = (UINT16) imax; + break; + } + /* FALL THROUGH */ + default: + (void) ImagingError_ModeError(); + return -1; + } + return 1; /* ok */ +} + + +/* static ImagingColorItem* getcolors8(Imaging im, int maxcolors, int* size);*/ +static ImagingColorItem* getcolors32(Imaging im, int maxcolors, int* size); + +ImagingColorItem* +ImagingGetColors(Imaging im, int maxcolors, int* size) +{ + /* FIXME: add support for 8-bit images */ + return getcolors32(im, maxcolors, size); +} + +static ImagingColorItem* +getcolors32(Imaging im, int maxcolors, int* size) +{ + unsigned int h; + unsigned int i, incr; + int colors; + INT32 pixel_mask; + int x, y; + ImagingColorItem* table; + ImagingColorItem* v; + + unsigned int code_size; + unsigned int code_poly; + unsigned int code_mask; + + /* note: the hash algorithm used here is based on the dictionary + code in Python 2.1.3; the exact implementation is borrowed from + Python's Unicode property database (written by yours truly) /F */ + + static int SIZES[] = { + 4,3, 8,3, 16,3, 32,5, 64,3, 128,3, 256,29, 512,17, 1024,9, 2048,5, + 4096,83, 8192,27, 16384,43, 32768,3, 65536,45, 131072,9, 262144,39, + 524288,39, 1048576,9, 2097152,5, 4194304,3, 8388608,33, 16777216,27, + 33554432,9, 67108864,71, 134217728,39, 268435456,9, 536870912,5, + 1073741824,83, 0 + }; + + code_size = code_poly = code_mask = 0; + + for (i = 0; SIZES[i]; i += 2) { + if (SIZES[i] > maxcolors) { + code_size = SIZES[i]; + code_poly = SIZES[i+1]; + code_mask = code_size - 1; + break; + } + } + + /* printf("code_size=%d\n", code_size); */ + /* printf("code_poly=%d\n", code_poly); */ + + if (!code_size) + return ImagingError_MemoryError(); /* just give up */ + + if (!im->image32) + return ImagingError_ModeError(); + + table = calloc(code_size + 1, sizeof(ImagingColorItem)); + if (!table) + return ImagingError_MemoryError(); + + pixel_mask = 0xffffffff; + if (im->bands == 3) + ((UINT8*) &pixel_mask)[3] = 0; + + colors = 0; + + for (y = 0; y < im->ysize; y++) { + INT32* p = im->image32[y]; + for (x = 0; x < im->xsize; x++) { + INT32 pixel = p[x] & pixel_mask; + h = (pixel); /* null hashing */ + i = (~h) & code_mask; + v = &table[i]; + if (!v->count) { + /* add to table */ + if (colors++ == maxcolors) + goto overflow; + v->x = x; v->y = y; + v->pixel = pixel; + v->count = 1; + continue; + } else if (v->pixel == pixel) { + v->count++; + continue; + } + incr = (h ^ (h >> 3)) & code_mask; + if (!incr) + incr = code_mask; + for (;;) { + i = (i + incr) & code_mask; + v = &table[i]; + if (!v->count) { + /* add to table */ + if (colors++ == maxcolors) + goto overflow; + v->x = x; v->y = y; + v->pixel = pixel; + v->count = 1; + break; + } else if (v->pixel == pixel) { + v->count++; + break; + } + incr = incr << 1; + if (incr > code_mask) + incr = incr ^ code_poly; + } + } + } + +overflow: + + /* pack the table */ + for (x = y = 0; x < (int) code_size; x++) + if (table[x].count) { + if (x != y) + table[y] = table[x]; + y++; + } + table[y].count = 0; /* mark end of table */ + + *size = colors; + + return table; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h new file mode 100755 index 00000000000..85d428b0d2d --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h @@ -0,0 +1,109 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * Declarations for a fast, suspendable GIF decoder. + * + * Copyright (c) Fredrik Lundh 1995-96. + */ + + +/* Max size for a LZW code word. */ + +#define GIFBITS 12 + +#define GIFTABLE (1< +#include /* memcpy() */ + +#include "Gif.h" + + +#define NEWLINE(state, context) {\ + state->x = 0;\ + state->y += context->step;\ + while (state->y >= state->ysize)\ + switch (context->interlace) {\ + case 1:\ + context->repeat = state->y = 4;\ + context->interlace = 2;\ + break;\ + case 2:\ + context->step = 4;\ + context->repeat = state->y = 2;\ + context->interlace = 3;\ + break;\ + case 3:\ + context->step = 2;\ + context->repeat = state->y = 1;\ + context->interlace = 0;\ + break;\ + default:\ + return -1;\ + }\ + if (state->y < state->ysize)\ + out = im->image8[state->y + state->yoff] + state->xoff;\ +} + + +int +ImagingGifDecode(Imaging im, ImagingCodecState state, UINT8* buffer, int bytes) +{ + UINT8* p; + UINT8* out; + int c, i; + int thiscode; + GIFDECODERSTATE *context = (GIFDECODERSTATE*) state->context; + + UINT8 *ptr = buffer; + + if (!state->state) { + + /* Initialise state */ + if (context->bits < 0 || context->bits > 8) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + + /* Clear code */ + context->clear = 1 << context->bits; + + /* End code */ + context->end = context->clear + 1; + + /* Interlace */ + if (context->interlace) { + context->interlace = 1; + context->step = context->repeat = 8; + } else + context->step = 1; + + state->state = 1; + } + + out = im->image8[state->y + state->yoff] + state->xoff + state->x; + + for (;;) { + + if (state->state == 1) { + + /* First free entry in table */ + context->next = context->clear + 2; + + /* Initial code size */ + context->codesize = context->bits + 1; + context->codemask = (1 << context->codesize) - 1; + + /* Buffer pointer. We fill the buffer from right, which + allows us to return all of it in one operation. */ + context->bufferindex = GIFBUFFER; + + state->state = 2; + } + + if (context->bufferindex < GIFBUFFER) { + + /* Return whole buffer in one chunk */ + i = GIFBUFFER - context->bufferindex; + p = &context->buffer[context->bufferindex]; + + context->bufferindex = GIFBUFFER; + + } else { + + /* Get current symbol */ + + while (context->bitcount < context->codesize) { + + if (context->blocksize > 0) { + + /* Read next byte */ + c = *ptr++; bytes--; + + context->blocksize--; + + /* New bits are shifted in from from the left. */ + context->bitbuffer |= (INT32) c << context->bitcount; + context->bitcount += 8; + + } else { + + /* New GIF block */ + + /* We don't start decoding unless we have a full block */ + if (bytes < 1) + return ptr - buffer; + c = *ptr; + if (bytes < c+1) + return ptr - buffer; + + context->blocksize = c; + + ptr++; bytes--; + + } + } + + /* Extract current symbol from bit buffer. */ + c = (int) context->bitbuffer & context->codemask; + + /* Adjust buffer */ + context->bitbuffer >>= context->codesize; + context->bitcount -= context->codesize; + + /* If c is less than "clear", it's a data byte. Otherwise, + it's either clear/end or a code symbol which should be + expanded. */ + + if (c == context->clear) { + if (state->state != 2) + state->state = 1; + continue; + } + + if (c == context->end) + break; + + i = 1; + p = &context->lastdata; + + if (state->state == 2) { + + /* First valid symbol after clear; use as is */ + if (c > context->clear) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + context->lastdata = context->lastcode = c; + state->state = 3; + + } else { + + thiscode = c; + + if (c > context->next) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + if (c == context->next) { + + /* c == next is allowed. not sure why. */ + + if (context->bufferindex <= 0) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + context->buffer[--context->bufferindex] = + context->lastdata; + + c = context->lastcode; + + } + + while (c >= context->clear) { + + /* Copy data string to buffer (beginning from right) */ + + if (context->bufferindex <= 0 || c >= GIFTABLE) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + context->buffer[--context->bufferindex] = + context->data[c]; + + c = context->link[c]; + } + + context->lastdata = c; + + if (context->next < GIFTABLE) { + + /* We'll only add this symbol if we have room + for it (take advise, Netscape!) */ + context->data[context->next] = c; + context->link[context->next] = context->lastcode; + + if (context->next == context->codemask && + context->codesize < GIFBITS) { + + /* Expand code size */ + context->codesize++; + context->codemask = (1 << context->codesize) - 1; + } + + context->next++; + + } + + context->lastcode = thiscode; + + } + } + + /* Copy the bytes into the image */ + if (state->y >= state->ysize) { + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + /* To squeeze some extra pixels out of this loop, we test for + some common cases and handle them separately. */ + + /* FIXME: should we handle the transparency index in here??? */ + + if (i == 1) { + if (state->x < state->xsize-1) { + /* Single pixel, not at the end of the line. */ + *out++ = p[0]; + state->x++; + continue; + } + } else if (state->x + i <= state->xsize) { + /* This string fits into current line. */ + memcpy(out, p, i); + out += i; + state->x += i; + if (state->x == state->xsize) { + NEWLINE(state, context); + } + continue; + } + + /* No shortcut, copy pixel by pixel */ + for (c = 0; c < i; c++) { + *out++ = p[c]; + if (++state->x >= state->xsize) { + NEWLINE(state, context); + } + } + } + + return ptr - buffer; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c new file mode 100755 index 00000000000..f4d07598fce --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c @@ -0,0 +1,319 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * encoder for uncompressed GIF data + * + * history: + * 97-01-05 fl created (writes uncompressed data) + * 97-08-27 fl fixed off-by-one error in buffer size test + * 98-07-09 fl added interlace write support + * 99-02-07 fl rewritten, now uses a run-length encoding strategy + * 99-02-08 fl improved run-length encoding for long runs + * + * Copyright (c) Secret Labs AB 1997-99. + * Copyright (c) Fredrik Lundh 1997. + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +#include "Gif.h" + +/* codes from 0 to 255 are literals */ +#define CLEAR_CODE 256 +#define EOF_CODE 257 +#define FIRST_CODE 258 +#define LAST_CODE 511 + +enum { INIT, ENCODE, ENCODE_EOF, FLUSH, EXIT }; + +/* to make things a little less complicated, we use a simple output + queue to hold completed blocks. the following inlined function + adds a byte to the current block. it allocates a new block if + necessary. */ + +static inline int +emit(GIFENCODERSTATE *context, int byte) +{ + /* write a byte to the output buffer */ + + if (!context->block || context->block->size == 255) { + GIFENCODERBLOCK* block; + + /* no room in the current block (or no current block); + allocate a new one */ + + /* add current block to end of flush queue */ + if (context->block) { + block = context->flush; + while (block && block->next) + block = block->next; + if (block) + block->next = context->block; + else + context->flush = context->block; + } + + /* get a new block */ + if (context->free) { + block = context->free; + context->free = NULL; + } else { + block = malloc(sizeof(GIFENCODERBLOCK)); + if (!block) + return 0; + } + + block->size = 0; + block->next = NULL; + + context->block = block; + + } + + /* write new byte to block */ + context->block->data[context->block->size++] = byte; + + return 1; +} + +/* write a code word to the current block. this is a macro to make + sure it's inlined on all platforms */ + +#define EMIT(code) {\ + context->bitbuffer |= ((INT32) (code)) << context->bitcount;\ + context->bitcount += 9;\ + while (context->bitcount >= 8) {\ + if (!emit(context, (UINT8) context->bitbuffer)) {\ + state->errcode = IMAGING_CODEC_MEMORY;\ + return 0;\ + }\ + context->bitbuffer >>= 8;\ + context->bitcount -= 8;\ + }\ +} + +/* write a run. we use a combination of literals and combinations of + literals. this can give quite decent compression for images with + long stretches of identical pixels. but remember: if you want + really good compression, use another file format. */ + +#define EMIT_RUN(label) {\ +label:\ + while (context->count > 0) {\ + int run = 2;\ + EMIT(context->last);\ + context->count--;\ + if (state->count++ == LAST_CODE) {\ + EMIT(CLEAR_CODE);\ + state->count = FIRST_CODE;\ + goto label;\ + }\ + while (context->count >= run) {\ + EMIT(state->count - 1);\ + context->count -= run;\ + run++;\ + if (state->count++ == LAST_CODE) {\ + EMIT(CLEAR_CODE);\ + state->count = FIRST_CODE;\ + goto label;\ + }\ + }\ + if (context->count > 1) {\ + EMIT(state->count - 1 - (run - context->count));\ + context->count = 0;\ + if (state->count++ == LAST_CODE) {\ + EMIT(CLEAR_CODE);\ + state->count = FIRST_CODE;\ + }\ + break;\ + }\ + }\ +} + +int +ImagingGifEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8* ptr; + int this; + + GIFENCODERBLOCK* block; + GIFENCODERSTATE *context = (GIFENCODERSTATE*) state->context; + + if (!state->state) { + + /* place a clear code in the output buffer */ + context->bitbuffer = CLEAR_CODE; + context->bitcount = 9; + + state->count = FIRST_CODE; + + if (context->interlace) { + context->interlace = 1; + context->step = 8; + } else + context->step = 1; + + context->last = -1; + + /* sanity check */ + if (state->xsize <= 0 || state->ysize <= 0) + state->state = ENCODE_EOF; + + } + + ptr = buf; + + for (;;) + + switch (state->state) { + + case INIT: + case ENCODE: + + /* identify and store a run of pixels */ + + if (state->x == 0 || state->x >= state->xsize) { + + if (!context->interlace && state->y >= state->ysize) { + state->state = ENCODE_EOF; + break; + } + + if (context->flush) { + state->state = FLUSH; + break; + } + + /* get another line of data */ + state->shuffle( + state->buffer, + (UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->xsize + ); + + state->x = 0; + + if (state->state == INIT) { + /* preload the run-length buffer and get going */ + context->last = state->buffer[0]; + context->count = state->x = 1; + state->state = ENCODE; + } + + /* step forward, according to the interlace settings */ + state->y += context->step; + while (context->interlace && state->y >= state->ysize) + switch (context->interlace) { + case 1: + state->y = 4; + context->interlace = 2; + break; + case 2: + context->step = 4; + state->y = 2; + context->interlace = 3; + break; + case 3: + context->step = 2; + state->y = 1; + context->interlace = 0; + break; + default: + /* just make sure we don't loop forever */ + context->interlace = 0; + } + + } + + this = state->buffer[state->x++]; + + if (this == context->last) + context->count++; + else { + EMIT_RUN(label1); + context->last = this; + context->count = 1; + } + break; + + + case ENCODE_EOF: + + /* write the final run */ + EMIT_RUN(label2); + + /* write an end of image marker */ + EMIT(EOF_CODE); + + /* empty the bit buffer */ + while (context->bitcount > 0) { + if (!emit(context, (UINT8) context->bitbuffer)) { + state->errcode = IMAGING_CODEC_MEMORY; + return 0; + } + context->bitbuffer >>= 8; + context->bitcount -= 8; + } + + /* flush the last block, and exit */ + if (context->block) { + GIFENCODERBLOCK* block; + block = context->flush; + while (block && block->next) + block = block->next; + if (block) + block->next = context->block; + else + context->flush = context->block; + context->block = NULL; + } + + state->state = EXIT; + + /* fall through... */ + + case EXIT: + case FLUSH: + + while (context->flush) { + + /* get a block from the flush queue */ + block = context->flush; + + if (block->size > 0) { + + /* make sure it fits into the output buffer */ + if (bytes < block->size+1) + return ptr - buf; + + ptr[0] = block->size; + memcpy(ptr+1, block->data, block->size); + + ptr += block->size+1; + bytes -= block->size+1; + + } + + context->flush = block->next; + + if (context->free) + free(context->free); + context->free = block; + + } + + if (state->state == EXIT) { + /* this was the last block! */ + if (context->free) + free(context->free); + state->errcode = IMAGING_CODEC_END; + return ptr - buf; + } + + state->state = ENCODE; + break; + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c new file mode 100755 index 00000000000..14f5241dc5e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c @@ -0,0 +1,67 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for hex encoded image data + * + * history: + * 96-05-16 fl Created + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#define HEX(v) ((v >= '0' && v <= '9') ? v - '0' :\ + (v >= 'a' && v <= 'f') ? v - 'a' + 10 :\ + (v >= 'A' && v <= 'F') ? v - 'A' + 10 : -1) + +int +ImagingHexDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8* ptr; + int a, b; + + ptr = buf; + + for (;;) { + + if (bytes < 2) + return ptr - buf; + + a = HEX(ptr[0]); + b = HEX(ptr[1]); + + if (a < 0 || b < 0) { + + ptr++; + bytes--; + + } else { + + ptr += 2; + bytes -= 2; + + state->buffer[state->x] = (a<<4) + b; + + if (++state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y], state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + } + + } + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c new file mode 100755 index 00000000000..513c844756e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c @@ -0,0 +1,169 @@ +/* + * The Python Imaging Library + * $Id$ + * + * histogram support + * + * history: + * 1995-06-15 fl Created. + * 1996-04-05 fl Fixed histogram for multiband images. + * 1997-02-23 fl Added mask support + * 1998-07-01 fl Added basic 32-bit float/integer support + * + * Copyright (c) 1997-2003 by Secret Labs AB. + * Copyright (c) 1995-2003 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +/* HISTOGRAM */ +/* -------------------------------------------------------------------- + * Take a histogram of an image. Returns a histogram object containing + * 256 slots per band in the input image. + */ + +void +ImagingHistogramDelete(ImagingHistogram h) +{ + if (h->histogram) + free(h->histogram); + free(h); +} + +ImagingHistogram +ImagingHistogramNew(Imaging im) +{ + ImagingHistogram h; + + /* Create histogram descriptor */ + h = calloc(1, sizeof(struct ImagingHistogramInstance)); + strcpy(h->mode, im->mode); + h->bands = im->bands; + h->histogram = calloc(im->pixelsize, 256 * sizeof(long)); + + return h; +} + +ImagingHistogram +ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) +{ + ImagingSectionCookie cookie; + int x, y, i; + ImagingHistogram h; + INT32 imin, imax; + FLOAT32 fmin, fmax, scale; + + if (!im) + return ImagingError_ModeError(); + + if (imMask) { + /* Validate mask */ + if (im->xsize != imMask->xsize || im->ysize != imMask->ysize) + return ImagingError_Mismatch(); + if (strcmp(imMask->mode, "1") != 0 && strcmp(imMask->mode, "L") != 0) + return ImagingError_ValueError("bad transparency mask"); + } + + h = ImagingHistogramNew(im); + + if (imMask) { + /* mask */ + if (im->image8) { + ImagingSectionEnter(&cookie); + for (y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++) + if (imMask->image8[y][x] != 0) + h->histogram[im->image8[y][x]]++; + ImagingSectionLeave(&cookie); + } else { /* yes, we need the braces. C isn't Python! */ + if (im->type != IMAGING_TYPE_UINT8) + return ImagingError_ModeError(); + ImagingSectionEnter(&cookie); + for (y = 0; y < im->ysize; y++) { + UINT8* in = (UINT8*) im->image32[y]; + for (x = 0; x < im->xsize; x++) + if (imMask->image8[y][x] != 0) { + h->histogram[(*in++)]++; + h->histogram[(*in++)+256]++; + h->histogram[(*in++)+512]++; + h->histogram[(*in++)+768]++; + } else + in += 4; + } + ImagingSectionLeave(&cookie); + } + } else { + /* mask not given; process pixels in image */ + if (im->image8) { + ImagingSectionEnter(&cookie); + for (y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++) + h->histogram[im->image8[y][x]]++; + ImagingSectionLeave(&cookie); + } else { + switch (im->type) { + case IMAGING_TYPE_UINT8: + ImagingSectionEnter(&cookie); + for (y = 0; y < im->ysize; y++) { + UINT8* in = (UINT8*) im->image[y]; + for (x = 0; x < im->xsize; x++) { + h->histogram[(*in++)]++; + h->histogram[(*in++)+256]++; + h->histogram[(*in++)+512]++; + h->histogram[(*in++)+768]++; + } + } + ImagingSectionLeave(&cookie); + break; + case IMAGING_TYPE_INT32: + if (!minmax) + return ImagingError_ValueError("min/max not given"); + if (!im->xsize || !im->ysize) + break; + imin = ((INT32*) minmax)[0]; + imax = ((INT32*) minmax)[1]; + if (imin >= imax) + break; + ImagingSectionEnter(&cookie); + scale = 255.0F / (imax - imin); + for (y = 0; y < im->ysize; y++) { + INT32* in = im->image32[y]; + for (x = 0; x < im->xsize; x++) { + i = (int) (((*in++)-imin)*scale); + if (i >= 0 && i < 256) + h->histogram[i]++; + } + } + ImagingSectionLeave(&cookie); + break; + case IMAGING_TYPE_FLOAT32: + if (!minmax) + return ImagingError_ValueError("min/max not given"); + if (!im->xsize || !im->ysize) + break; + fmin = ((FLOAT32*) minmax)[0]; + fmax = ((FLOAT32*) minmax)[1]; + if (fmin >= fmax) + break; + ImagingSectionEnter(&cookie); + scale = 255.0F / (fmax - fmin); + for (y = 0; y < im->ysize; y++) { + FLOAT32* in = (FLOAT32*) im->image32[y]; + for (x = 0; x < im->xsize; x++) { + i = (int) (((*in++)-fmin)*scale); + if (i >= 0 && i < 256) + h->histogram[i]++; + } + } + ImagingSectionLeave(&cookie); + break; + } + } + } + + return h; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h new file mode 100755 index 00000000000..2effd387044 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h @@ -0,0 +1,64 @@ +/* + * The Python Imaging Library + * $Id$ + * + * Windows DIB specifics + * + * Copyright (c) Secret Labs AB 1997-98. + * Copyright (c) Fredrik Lundh 1996. + * + * See the README file for information on usage and redistribution. + */ + +#ifdef WIN32 + +#if (defined(_MSC_VER) && _MSC_VER >= 1200) || (defined __GNUC__) +/* already defined in basetsd.h */ +#undef INT32 +#undef INT64 +#undef UINT32 +#endif + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +struct ImagingDIBInstance { + /* Windows interface */ + HDC dc; + HBITMAP bitmap; + HGDIOBJ old_bitmap; + BITMAPINFO *info; + UINT8 *bits; + HPALETTE palette; + /* Used by cut and paste */ + char mode[4]; + int xsize, ysize; + int pixelsize; + int linesize; + ImagingShuffler pack; + ImagingShuffler unpack; +}; + +typedef struct ImagingDIBInstance* ImagingDIB; + +extern char* ImagingGetModeDIB(int size_out[2]); + +extern ImagingDIB ImagingNewDIB(const char *mode, int xsize, int ysize); + +extern void ImagingDeleteDIB(ImagingDIB im); + +extern void ImagingDrawDIB(ImagingDIB dib, int dc, int dst[4], int src[4]); +extern void ImagingExposeDIB(ImagingDIB dib, int dc); + +extern int ImagingQueryPaletteDIB(ImagingDIB dib, int dc); + +extern void ImagingPasteDIB(ImagingDIB dib, Imaging im, int xy[4]); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h new file mode 100755 index 00000000000..4ffd6fdef9e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h @@ -0,0 +1,72 @@ +/* + * The Python Imaging Library + * $Id$ + * + * platform declarations for the imaging core library + * + * Copyright (c) Fredrik Lundh 1995-2003. + */ + +#include "Python.h" + +/* Check that we have an ANSI compliant compiler */ +#ifndef HAVE_PROTOTYPES +#error Sorry, this library requires support for ANSI prototypes. +#endif +#ifndef STDC_HEADERS +#error Sorry, this library requires ANSI header files. +#endif + +#if defined(_MSC_VER) +#ifndef WIN32 +#define WIN32 +#endif +/* VC++ 4.0 is a bit annoying when it comes to precision issues (like + claiming that "float a = 0.0;" would lead to loss of precision). I + don't like to see warnings from my code, but since I still want to + keep it readable, I simply switch off a few warnings instead of adding + the tons of casts that VC++ seem to require. This code is compiled + with numerous other compilers as well, so any real errors are likely + to be catched anyway. */ +#pragma warning(disable: 4244) /* conversion from 'float' to 'int' */ +#endif + +#if defined(_MSC_VER) +#define inline __inline +#elif !defined(USE_INLINE) +#define inline +#endif + +#if SIZEOF_SHORT == 2 +#define INT16 short +#elif SIZEOF_INT == 2 +#define INT16 int +#else +#define INT16 short /* most things works just fine anyway... */ +#endif + +#if SIZEOF_SHORT == 4 +#define INT32 short +#elif SIZEOF_INT == 4 +#define INT32 int +#elif SIZEOF_LONG == 4 +#define INT32 long +#else +#error Cannot find required 32-bit integer type +#endif + +#if SIZEOF_LONG == 8 +#define INT64 long +#elif SIZEOF_LONG_LONG == 8 +#define INT64 long +#endif + +/* assume IEEE; tweak if necessary (patches are welcome) */ +#define FLOAT32 float +#define FLOAT64 double + +#define INT8 signed char +#define UINT8 unsigned char + +#define UINT16 unsigned INT16 +#define UINT32 unsigned INT32 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h new file mode 100755 index 00000000000..4609376adda --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h @@ -0,0 +1,497 @@ +/* + * The Python Imaging Library + * $Id$ + * + * declarations for the imaging core library + * + * Copyright (c) 1997-2005 by Secret Labs AB + * Copyright (c) 1995-2005 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + + +#include "ImPlatform.h" + + +#if defined(__cplusplus) +extern "C" { +#endif + + +#ifndef M_PI +#define M_PI 3.14159265359 +#endif + + +/* -------------------------------------------------------------------- */ + +/* + * Image data organization: + * + * mode bytes byte order + * ------------------------------- + * 1 1 1 + * L 1 L + * P 1 P + * I 4 I (32-bit integer, native byte order) + * F 4 F (32-bit IEEE float, native byte order) + * RGB 4 R, G, B, - + * RGBA 4 R, G, B, A + * CMYK 4 C, M, Y, K + * YCbCr 4 Y, Cb, Cr, - + * + * experimental modes (incomplete): + * LA 4 L, -, -, A + * PA 4 P, -, -, A + * I;16 2 I (16-bit integer, native byte order) + * + * "P" is an 8-bit palette mode, which should be mapped through the + * palette member to get an output image. Check palette->mode to + * find the corresponding "real" mode. + * + * For information on how to access Imaging objects from your own C + * extensions, see http://www.effbot.org/zone/pil-extending.htm + */ + +/* Handles */ + +typedef struct ImagingMemoryInstance* Imaging; + +typedef struct ImagingAccessInstance* ImagingAccess; +typedef struct ImagingHistogramInstance* ImagingHistogram; +typedef struct ImagingOutlineInstance* ImagingOutline; +typedef struct ImagingPaletteInstance* ImagingPalette; + +/* handle magics (used with PyCObject). */ +#define IMAGING_MAGIC "PIL Imaging" + +/* pixel types */ +#define IMAGING_TYPE_UINT8 0 +#define IMAGING_TYPE_INT32 1 +#define IMAGING_TYPE_FLOAT32 2 +#define IMAGING_TYPE_SPECIAL 3 /* check mode for details */ + +struct ImagingMemoryInstance { + + /* Format */ + char mode[4+1]; /* Band names ("1", "L", "P", "RGB", "RGBA", "CMYK") */ + int type; /* Data type (IMAGING_TYPE_*) */ + int depth; /* Depth (ignored in this version) */ + int bands; /* Number of bands (1, 2, 3, or 4) */ + int xsize; /* Image dimension. */ + int ysize; + + /* Colour palette (for "P" images only) */ + ImagingPalette palette; + + /* Data pointers */ + UINT8 **image8; /* Set for 8-bit images (pixelsize=1). */ + INT32 **image32; /* Set for 32-bit images (pixelsize=4). */ + + /* Internals */ + char **image; /* Actual raster data. */ + char *block; /* Set if data is allocated in a single block. */ + + int pixelsize; /* Size of a pixel, in bytes (1, 2 or 4) */ + int linesize; /* Size of a line, in bytes (xsize * pixelsize) */ + + /* Virtual methods */ + void (*destroy)(Imaging im); +}; + + +#define IMAGING_PIXEL_1(im,x,y) ((im)->image8[(y)][(x)]) +#define IMAGING_PIXEL_L(im,x,y) ((im)->image8[(y)][(x)]) +#define IMAGING_PIXEL_LA(im,x,y) ((im)->image[(y)][(x)*4]) +#define IMAGING_PIXEL_P(im,x,y) ((im)->image8[(y)][(x)]) +#define IMAGING_PIXEL_PA(im,x,y) ((im)->image[(y)][(x)*4]) +#define IMAGING_PIXEL_I(im,x,y) ((im)->image32[(y)][(x)]) +#define IMAGING_PIXEL_F(im,x,y) (((FLOAT32*)(im)->image32[y])[x]) +#define IMAGING_PIXEL_RGB(im,x,y) ((im)->image[(y)][(x)*4]) +#define IMAGING_PIXEL_RGBA(im,x,y) ((im)->image[(y)][(x)*4]) +#define IMAGING_PIXEL_CMYK(im,x,y) ((im)->image[(y)][(x)*4]) +#define IMAGING_PIXEL_YCbCr(im,x,y) ((im)->image[(y)][(x)*4]) + +#define IMAGING_PIXEL_UINT8(im,x,y) ((im)->image8[(y)][(x)]) +#define IMAGING_PIXEL_INT32(im,x,y) ((im)->image32[(y)][(x)]) +#define IMAGING_PIXEL_FLOAT32(im,x,y) (((FLOAT32*)(im)->image32[y])[x]) + +struct ImagingAccessInstance { + const char* mode; + void* (*line)(Imaging im, int x, int y); + void (*get_pixel)(Imaging im, int x, int y, void* pixel); + void (*put_pixel)(Imaging im, int x, int y, const void* pixel); +}; + +struct ImagingHistogramInstance { + + /* Format */ + char mode[4+1]; /* Band names (of corresponding source image) */ + int bands; /* Number of bands (1, 3, or 4) */ + + /* Data */ + long *histogram; /* Histogram (bands*256 longs) */ + +}; + + +struct ImagingPaletteInstance { + + /* Format */ + char mode[4+1]; /* Band names */ + + /* Data */ + UINT8 palette[1024];/* Palette data (same format as image data) */ + + INT16* cache; /* Palette cache (used for predefined palettes) */ + int keep_cache; /* This palette will be reused; keep cache */ + +}; + + +/* Objects */ +/* ------- */ + +extern int ImagingNewCount; + +extern Imaging ImagingNew(const char* mode, int xsize, int ysize); +extern Imaging ImagingNew2(const char* mode, Imaging imOut, Imaging imIn); +extern void ImagingDelete(Imaging im); + +extern Imaging ImagingNewBlock(const char* mode, int xsize, int ysize); +extern Imaging ImagingNewArray(const char* mode, int xsize, int ysize); +extern Imaging ImagingNewMap(const char* filename, int readonly, + const char* mode, int xsize, int ysize); + +extern Imaging ImagingNewPrologue(const char *mode, + unsigned xsize, unsigned ysize); +extern Imaging ImagingNewPrologueSubtype(const char *mode, + unsigned xsize, unsigned ysize, + int structure_size); +extern Imaging ImagingNewEpilogue(Imaging im); + +extern void ImagingCopyInfo(Imaging destination, Imaging source); + +extern void ImagingHistogramDelete(ImagingHistogram histogram); + +extern void ImagingAccessInit(void); +extern ImagingAccess ImagingAccessNew(Imaging im); +extern void _ImagingAccessDelete(Imaging im, ImagingAccess access); +#define ImagingAccessDelete(im, access) /* nop, for now */ +/*#define ImagingAccessDelete(im, access) \ + ((access)->dynamic ? _ImagingAccessDelete((im), (access)), 0 : 0)) */ + +extern ImagingPalette ImagingPaletteNew(const char *mode); +extern ImagingPalette ImagingPaletteNewBrowser(void); +extern ImagingPalette ImagingPaletteDuplicate(ImagingPalette palette); +extern void ImagingPaletteDelete(ImagingPalette palette); + +extern int ImagingPaletteCachePrepare(ImagingPalette palette); +extern void ImagingPaletteCacheUpdate(ImagingPalette palette, + int r, int g, int b); +extern void ImagingPaletteCacheDelete(ImagingPalette palette); + +#define ImagingPaletteCache(p, r, g, b)\ + p->cache[(r>>2) + (g>>2)*64 + (b>>2)*64*64] + +extern Imaging ImagingQuantize(Imaging im, int colours, int mode, int kmeans); + +/* Threading */ +/* --------- */ + +typedef void* ImagingSectionCookie; + +extern void ImagingSectionEnter(ImagingSectionCookie* cookie); +extern void ImagingSectionLeave(ImagingSectionCookie* cookie); + +/* Exceptions */ +/* ---------- */ + +extern void* ImagingError_IOError(void); +extern void* ImagingError_MemoryError(void); +extern void* ImagingError_ModeError(void); /* maps to ValueError by default */ +extern void* ImagingError_Mismatch(void); /* maps to ValueError by default */ +extern void* ImagingError_ValueError(const char* message); +extern void ImagingError_Clear(void); + +/* Transform callbacks */ +/* ------------------- */ + +/* standard transforms */ +#define IMAGING_TRANSFORM_AFFINE 0 +#define IMAGING_TRANSFORM_PERSPECTIVE 2 +#define IMAGING_TRANSFORM_QUAD 3 + + +/* standard filters */ +#define IMAGING_TRANSFORM_NEAREST 0 +#define IMAGING_TRANSFORM_ANTIALIAS 1 +#define IMAGING_TRANSFORM_BILINEAR 2 +#define IMAGING_TRANSFORM_BICUBIC 3 + +typedef int (*ImagingTransformMap)(double* X, double* Y, + int x, int y, void* data); +typedef int (*ImagingTransformFilter)(void* out, Imaging im, + double x, double y, + void* data); + +/* Image Manipulation Methods */ +/* -------------------------- */ + +extern Imaging ImagingBlend(Imaging imIn1, Imaging imIn2, float alpha); +extern Imaging ImagingCopy(Imaging im); +extern Imaging ImagingConvert(Imaging im, const char* mode, ImagingPalette palette, int dither); +extern Imaging ImagingConvertInPlace(Imaging im, const char* mode); +extern Imaging ImagingConvertMatrix(Imaging im, const char *mode, float m[]); +extern Imaging ImagingCrop(Imaging im, int x0, int y0, int x1, int y1); +extern Imaging ImagingExpand(Imaging im, int x, int y, int mode); +extern Imaging ImagingFill(Imaging im, const void* ink); +extern int ImagingFill2( + Imaging into, const void* ink, Imaging mask, + int x0, int y0, int x1, int y1); +extern Imaging ImagingFillBand(Imaging im, int band, int color); +extern Imaging ImagingFillLinearGradient(const char* mode); +extern Imaging ImagingFillRadialGradient(const char* mode); +extern Imaging ImagingFilter( + Imaging im, int xsize, int ysize, const FLOAT32* kernel, + FLOAT32 offset, FLOAT32 divisor); +extern Imaging ImagingFlipLeftRight(Imaging imOut, Imaging imIn); +extern Imaging ImagingFlipTopBottom(Imaging imOut, Imaging imIn); +extern Imaging ImagingGaussianBlur(Imaging im, Imaging imOut, float radius); +extern Imaging ImagingGetBand(Imaging im, int band); +extern int ImagingGetBBox(Imaging im, int bbox[4]); +typedef struct { int x, y; INT32 count; INT32 pixel; } ImagingColorItem; +extern ImagingColorItem* ImagingGetColors(Imaging im, int maxcolors, + int *colors); +extern int ImagingGetExtrema(Imaging im, void *extrema); +extern int ImagingGetProjection(Imaging im, UINT8* xproj, UINT8* yproj); +extern ImagingHistogram ImagingGetHistogram( + Imaging im, Imaging mask, void *extrema); +extern Imaging ImagingModeFilter(Imaging im, int size); +extern Imaging ImagingNegative(Imaging im); +extern Imaging ImagingOffset(Imaging im, int xoffset, int yoffset); +extern int ImagingPaste( + Imaging into, Imaging im, Imaging mask, + int x0, int y0, int x1, int y1); +extern Imaging ImagingPoint( + Imaging im, const char* tablemode, const void* table); +extern Imaging ImagingPointTransform( + Imaging imIn, double scale, double offset); +extern Imaging ImagingPutBand(Imaging im, Imaging imIn, int band); +extern Imaging ImagingRankFilter(Imaging im, int size, int rank); +extern Imaging ImagingResize(Imaging imOut, Imaging imIn, int filter); +extern Imaging ImagingRotate( + Imaging imOut, Imaging imIn, double theta, int filter); +extern Imaging ImagingRotate90(Imaging imOut, Imaging imIn); +extern Imaging ImagingRotate180(Imaging imOut, Imaging imIn); +extern Imaging ImagingRotate270(Imaging imOut, Imaging imIn); +extern Imaging ImagingStretch(Imaging imOut, Imaging imIn, int filter); +extern Imaging ImagingTransformPerspective( + Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, + double a[8], int filter, int fill); +extern Imaging ImagingTransformAffine( + Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, + double a[6], int filter, int fill); +extern Imaging ImagingTransformQuad( + Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, + double a[8], int filter, int fill); +extern Imaging ImagingTransform( + Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, + ImagingTransformMap transform, void* transform_data, + ImagingTransformFilter filter, void* filter_data, + int fill); +extern Imaging ImagingUnsharpMask( + Imaging im, Imaging imOut, float radius, int percent, int threshold); + +extern Imaging ImagingCopy2(Imaging imOut, Imaging imIn); +extern Imaging ImagingConvert2(Imaging imOut, Imaging imIn); + +/* Channel operations */ +/* any mode, except "F" */ +extern Imaging ImagingChopLighter(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopDarker(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopDifference(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopMultiply(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopScreen(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopAdd( + Imaging imIn1, Imaging imIn2, float scale, int offset); +extern Imaging ImagingChopSubtract( + Imaging imIn1, Imaging imIn2, float scale, int offset); +extern Imaging ImagingChopAddModulo(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopSubtractModulo(Imaging imIn1, Imaging imIn2); + +/* "1" images only */ +extern Imaging ImagingChopAnd(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopOr(Imaging imIn1, Imaging imIn2); +extern Imaging ImagingChopXor(Imaging imIn1, Imaging imIn2); + +/* Image measurement */ +extern void ImagingCrack(Imaging im, int x0, int y0); + +/* Graphics */ +struct ImagingAffineMatrixInstance { + float a[9]; +}; + +typedef struct ImagingAffineMatrixInstance *ImagingAffineMatrix; + +extern int ImagingDrawArc(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink, int op); +extern int ImagingDrawBitmap(Imaging im, int x0, int y0, Imaging bitmap, + const void* ink, int op); +extern int ImagingDrawChord(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink, int fill, + int op); +extern int ImagingDrawEllipse(Imaging im, int x0, int y0, int x1, int y1, + const void* ink, int fill, int op); +extern int ImagingDrawLine(Imaging im, int x0, int y0, int x1, int y1, + const void* ink, int op); +extern int ImagingDrawWideLine(Imaging im, int x0, int y0, int x1, int y1, + const void* ink, int width, int op); +extern int ImagingDrawPieslice(Imaging im, int x0, int y0, int x1, int y1, + int start, int end, const void* ink, int fill, + int op); +extern int ImagingDrawPoint(Imaging im, int x, int y, const void* ink, int op); +extern int ImagingDrawPolygon(Imaging im, int points, int *xy, + const void* ink, int fill, int op); +extern int ImagingDrawRectangle(Imaging im, int x0, int y0, int x1, int y1, + const void* ink, int fill, int op); + +/* Level 2 graphics (WORK IN PROGRESS) */ +extern ImagingOutline ImagingOutlineNew(void); +extern void ImagingOutlineDelete(ImagingOutline outline); + +extern int ImagingDrawOutline(Imaging im, ImagingOutline outline, + const void* ink, int fill, int op); + +extern int ImagingOutlineMove(ImagingOutline outline, float x, float y); +extern int ImagingOutlineLine(ImagingOutline outline, float x, float y); +extern int ImagingOutlineCurve(ImagingOutline outline, float x1, float y1, + float x2, float y2, float x3, float y3); +extern int ImagingOutlineTransform(ImagingOutline outline, double a[6]); + +extern int ImagingOutlineClose(ImagingOutline outline); + +/* Special effects */ +extern Imaging ImagingEffectSpread(Imaging imIn, int distance); +extern Imaging ImagingEffectNoise(int xsize, int ysize, float sigma); +extern Imaging ImagingEffectMandelbrot(int xsize, int ysize, + double extent[4], int quality); + +/* Obsolete */ +extern int ImagingToString(Imaging im, int orientation, char *buffer); +extern int ImagingFromString(Imaging im, int orientation, char *buffer); + + +/* File I/O */ +/* -------- */ + +/* Built-in drivers */ +extern Imaging ImagingOpenPPM(const char* filename); +extern int ImagingSavePPM(Imaging im, const char* filename); + +/* Utility functions */ +extern UINT32 ImagingCRC32(UINT32 crc, UINT8* buffer, int bytes); + +/* Codecs */ +typedef struct ImagingCodecStateInstance *ImagingCodecState; +typedef int (*ImagingCodec)(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); + +extern int ImagingBitDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingEpsEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingFliDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingGifDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingGifEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingHexDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +#ifdef HAVE_LIBJPEG +extern int ImagingJpegDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingJpegEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +#endif +extern int ImagingLzwDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +#ifdef HAVE_LIBMPEG +extern int ImagingMpegDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +#endif +extern int ImagingMspDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingPackbitsDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingPcdDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingPcxDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingPcxEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingRawDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingRawEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingSunRleDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingTgaRleDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingXbmDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingXbmEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +#ifdef HAVE_LIBZ +extern int ImagingZipDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +extern int ImagingZipEncode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); +#endif + +typedef void (*ImagingShuffler)(UINT8* out, const UINT8* in, int pixels); + +/* Public shufflers */ +extern void ImagingPackRGB(UINT8* out, const UINT8* in, int pixels); +extern void ImagingPackBGR(UINT8* out, const UINT8* in, int pixels); +extern void ImagingUnpackRGB(UINT8* out, const UINT8* in, int pixels); +extern void ImagingUnpackBGR(UINT8* out, const UINT8* in, int pixels); +extern void ImagingUnpackYCC(UINT8* out, const UINT8* in, int pixels); +extern void ImagingUnpackYCCA(UINT8* out, const UINT8* in, int pixels); +extern void ImagingUnpackYCbCr(UINT8* out, const UINT8* in, int pixels); + +extern void ImagingConvertRGB2YCbCr(UINT8* out, const UINT8* in, int pixels); +extern void ImagingConvertYCbCr2RGB(UINT8* out, const UINT8* in, int pixels); + +extern ImagingShuffler ImagingFindUnpacker(const char* mode, + const char* rawmode, int* bits_out); +extern ImagingShuffler ImagingFindPacker(const char* mode, + const char* rawmode, int* bits_out); + +struct ImagingCodecStateInstance { + int count; + int state; + int errcode; + int x, y; + int ystep; + int xsize, ysize, xoff, yoff; + ImagingShuffler shuffle; + int bits, bytes; + UINT8 *buffer; + void *context; +}; + +/* Errcodes */ +#define IMAGING_CODEC_END 1 +#define IMAGING_CODEC_OVERRUN -1 +#define IMAGING_CODEC_BROKEN -2 +#define IMAGING_CODEC_UNKNOWN -3 +#define IMAGING_CODEC_CONFIG -8 +#define IMAGING_CODEC_MEMORY -9 + +#if defined(__cplusplus) +} +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h new file mode 100755 index 00000000000..d39165f3cfd --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h @@ -0,0 +1,104 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * declarations for the IJG JPEG codec interface. + * + * Copyright (c) 1995-2001 by Secret Labs AB + * Copyright (c) 1995-1996 by Fredrik Lundh + */ + +#include "jpeglib.h" + +#include + + +typedef struct { + struct jpeg_error_mgr pub; /* "public" fields */ + jmp_buf setjmp_buffer; /* for return to caller */ +} JPEGERROR; + + +/* -------------------------------------------------------------------- */ +/* Decoder */ + +typedef struct { + struct jpeg_source_mgr pub; + int skip; +} JPEGSOURCE; + +typedef struct { + + /* CONFIGURATION */ + + /* Jpeg file mode (empty if not known) */ + char jpegmode[8+1]; + + /* Converter output mode (input to the shuffler). If empty, + convert conversions are disabled */ + char rawmode[8+1]; + + /* If set, trade quality for speed */ + int draft; + + /* Scale factor (1, 2, 4, 8) */ + int scale; + + /* PRIVATE CONTEXT (set by decoder) */ + + struct jpeg_decompress_struct cinfo; + + JPEGERROR error; + + JPEGSOURCE source; + +} JPEGSTATE; + + +/* -------------------------------------------------------------------- */ +/* Encoder */ + +typedef struct { + struct jpeg_destination_mgr pub; + /* might add something some other day */ +} JPEGDESTINATION; + +typedef struct { + + /* CONFIGURATION */ + + /* Quality (1-100, 0 means default) */ + int quality; + + /* Progressive mode */ + int progressive; + + /* Smoothing factor (1-100, 0 means none) */ + int smooth; + + /* Optimize Huffman tables (slow) */ + int optimize; + + /* Stream type (0=full, 1=tables only, 2=image only) */ + int streamtype; + + /* DPI setting (0=square pixels, otherwide DPI) */ + int xdpi, ydpi; + + /* Chroma Subsampling (-1=default, 0=none, 1=medium, 2=high) */ + int subsampling; + + /* Extra data (to be injected after header) */ + char* extra; int extra_size; + + /* PRIVATE CONTEXT (set by encoder) */ + + struct jpeg_compress_struct cinfo; + + JPEGERROR error; + + JPEGDESTINATION destination; + + int extra_offset; + +} JPEGENCODERSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c new file mode 100755 index 00000000000..11b2767ba2f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c @@ -0,0 +1,267 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for JPEG image data. + * + * history: + * 1996-05-02 fl Created + * 1996-05-05 fl Handle small JPEG files correctly + * 1996-05-28 fl Added "draft mode" support + * 1997-01-25 fl Added colour conversion override + * 1998-01-31 fl Adapted to libjpeg 6a + * 1998-07-12 fl Extended YCbCr support + * 1998-12-29 fl Added new state to handle suspension in multipass modes + * 2000-10-12 fl Suppress warnings + * 2000-12-04 fl Suppress errors beyond end of image data + * + * Copyright (c) 1998-2000 Secret Labs AB + * Copyright (c) 1996-2000 Fredrik Lundh + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + +#ifdef HAVE_LIBJPEG + +#undef HAVE_PROTOTYPES +#undef HAVE_STDLIB_H +#undef HAVE_STDDEF_H +#undef UINT8 +#undef UINT16 +#undef UINT32 +#undef INT16 +#undef INT32 + +#include "Jpeg.h" + + +/* -------------------------------------------------------------------- */ +/* Suspending input handler */ +/* -------------------------------------------------------------------- */ + +METHODDEF(void) +stub(j_decompress_ptr cinfo) +{ + /* empty */ +} + +METHODDEF(boolean) +fill_input_buffer(j_decompress_ptr cinfo) +{ + /* Suspension */ + return FALSE; +} + +METHODDEF(void) +skip_input_data(j_decompress_ptr cinfo, long num_bytes) +{ + JPEGSOURCE* source = (JPEGSOURCE*) cinfo->src; + + if (num_bytes > (long) source->pub.bytes_in_buffer) { + /* We need to skip more data than we have in the buffer. + This will force the JPEG library to suspend decoding. */ + source->skip = num_bytes - source->pub.bytes_in_buffer; + source->pub.next_input_byte += source->pub.bytes_in_buffer; + source->pub.bytes_in_buffer = 0; + } else { + /* Skip portion of the buffer */ + source->pub.bytes_in_buffer -= num_bytes; + source->pub.next_input_byte += num_bytes; + source->skip = 0; + } +} + + +GLOBAL(void) +jpeg_buffer_src(j_decompress_ptr cinfo, JPEGSOURCE* source) +{ + cinfo->src = (void*) source; + + /* Prepare for suspending reader */ + source->pub.init_source = stub; + source->pub.fill_input_buffer = fill_input_buffer; + source->pub.skip_input_data = skip_input_data; + source->pub.resync_to_restart = jpeg_resync_to_restart; + source->pub.term_source = stub; + source->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ + + source->skip = 0; +} + + +/* -------------------------------------------------------------------- */ +/* Error handler */ +/* -------------------------------------------------------------------- */ + +METHODDEF(void) +error(j_common_ptr cinfo) +{ + JPEGERROR* error; + error = (JPEGERROR*) cinfo->err; + longjmp(error->setjmp_buffer, 1); +} + +METHODDEF(void) +output(j_common_ptr cinfo) +{ + /* nothing */ +} + +/* -------------------------------------------------------------------- */ +/* Decoder */ +/* -------------------------------------------------------------------- */ + +int +ImagingJpegDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + JPEGSTATE* context = (JPEGSTATE*) state->context; + int ok; + + if (setjmp(context->error.setjmp_buffer)) { + /* JPEG error handler */ + jpeg_destroy_decompress(&context->cinfo); + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + if (!state->state) { + + /* Setup decompression context */ + context->cinfo.err = jpeg_std_error(&context->error.pub); + context->error.pub.error_exit = error; + context->error.pub.output_message = output; + jpeg_create_decompress(&context->cinfo); + jpeg_buffer_src(&context->cinfo, &context->source); + + /* Ready to decode */ + state->state = 1; + + } + + /* Load the source buffer */ + context->source.pub.next_input_byte = buf; + context->source.pub.bytes_in_buffer = bytes; + + if (context->source.skip > 0) { + skip_input_data(&context->cinfo, context->source.skip); + if (context->source.skip > 0) + return context->source.pub.next_input_byte - buf; + } + + switch (state->state) { + + case 1: + + /* Read JPEG header, until we find an image body. */ + do { + + /* Note that we cannot return unless we have decoded + as much data as possible. */ + ok = jpeg_read_header(&context->cinfo, FALSE); + + } while (ok == JPEG_HEADER_TABLES_ONLY); + + if (ok == JPEG_SUSPENDED) + break; + + /* Decoder settings */ + + /* jpegmode indicates whats in the file; if not set, we'll + trust the decoder */ + if (strcmp(context->jpegmode, "L") == 0) + context->cinfo.jpeg_color_space = JCS_GRAYSCALE; + else if (strcmp(context->jpegmode, "RGB") == 0) + context->cinfo.jpeg_color_space = JCS_RGB; + else if (strcmp(context->jpegmode, "CMYK") == 0) + context->cinfo.jpeg_color_space = JCS_CMYK; + else if (strcmp(context->jpegmode, "YCbCr") == 0) + context->cinfo.jpeg_color_space = JCS_YCbCr; + else if (strcmp(context->jpegmode, "YCbCrK") == 0) { + context->cinfo.jpeg_color_space = JCS_YCCK; + } + + /* rawmode indicates what we want from the decoder. if not + set, conversions are disabled */ + if (strcmp(context->rawmode, "L") == 0) + context->cinfo.out_color_space = JCS_GRAYSCALE; + else if (strcmp(context->rawmode, "RGB") == 0) + context->cinfo.out_color_space = JCS_RGB; + else if (strcmp(context->rawmode, "CMYK") == 0 || + strcmp(context->rawmode, "CMYK;I") == 0) + context->cinfo.out_color_space = JCS_CMYK; + else if (strcmp(context->rawmode, "YCbCr") == 0) + context->cinfo.out_color_space = JCS_YCbCr; + else if (strcmp(context->rawmode, "YCbCrK") == 0) + context->cinfo.out_color_space = JCS_YCCK; + else { + /* Disable decoder conversions */ + context->cinfo.jpeg_color_space = JCS_UNKNOWN; + context->cinfo.out_color_space = JCS_UNKNOWN; + } + + if (context->scale > 1) { + context->cinfo.scale_num = 1; + context->cinfo.scale_denom = context->scale; + } + if (context->draft) { + context->cinfo.do_fancy_upsampling = FALSE; + context->cinfo.dct_method = JDCT_FASTEST; + } + + state->state++; + /* fall through */ + + case 2: + + /* Set things up for decompression (this processes the entire + file if necessary to return data line by line) */ + if (!jpeg_start_decompress(&context->cinfo)) + break; + + state->state++; + /* fall through */ + + case 3: + + /* Decompress a single line of data */ + ok = 1; + while (state->y < state->ysize) { + ok = jpeg_read_scanlines(&context->cinfo, &state->buffer, 1); + if (ok != 1) + break; + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + state->y++; + } + if (ok != 1) + break; + state->state++; + /* fall through */ + + case 4: + + /* Finish decompression */ + if (!jpeg_finish_decompress(&context->cinfo)) { + /* FIXME: add strictness mode test */ + if (state->y < state->ysize) + break; + } + + /* Clean up */ + jpeg_destroy_decompress(&context->cinfo); + /* if (jerr.pub.num_warnings) return BROKEN; */ + return -1; + + } + + /* Return number of bytes consumed */ + return context->source.pub.next_input_byte - buf; + +} + +#endif + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c new file mode 100755 index 00000000000..1e2191a69b0 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c @@ -0,0 +1,284 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * coder for JPEG data + * + * history: + * 1996-05-06 fl created + * 1996-07-16 fl don't drop last block of encoded data + * 1996-12-30 fl added quality and progressive settings + * 1997-01-08 fl added streamtype settings + * 1998-01-31 fl adapted to libjpeg 6a + * 1998-07-12 fl added YCbCr support + * 2001-04-16 fl added DPI write support + * + * Copyright (c) 1997-2001 by Secret Labs AB + * Copyright (c) 1995-1997 by Fredrik Lundh + * + * See the README file for details on usage and redistribution. + */ + + +#include "Imaging.h" + +#ifdef HAVE_LIBJPEG + +#undef HAVE_PROTOTYPES +#undef HAVE_STDLIB_H +#undef HAVE_STDDEF_H +#undef UINT8 +#undef UINT16 +#undef UINT32 +#undef INT16 +#undef INT32 + +#include "Jpeg.h" + +/* -------------------------------------------------------------------- */ +/* Suspending output handler */ +/* -------------------------------------------------------------------- */ + +METHODDEF(void) +stub(j_compress_ptr cinfo) +{ + /* empty */ +} + +METHODDEF(boolean) +empty_output_buffer (j_compress_ptr cinfo) +{ + /* Suspension */ + return FALSE; +} + +GLOBAL(void) +jpeg_buffer_dest(j_compress_ptr cinfo, JPEGDESTINATION* destination) +{ + cinfo->dest = (void*) destination; + + destination->pub.init_destination = stub; + destination->pub.empty_output_buffer = empty_output_buffer; + destination->pub.term_destination = stub; +} + + +/* -------------------------------------------------------------------- */ +/* Error handler */ +/* -------------------------------------------------------------------- */ + +METHODDEF(void) +error(j_common_ptr cinfo) +{ + JPEGERROR* error; + error = (JPEGERROR*) cinfo->err; + (*cinfo->err->output_message) (cinfo); + longjmp(error->setjmp_buffer, 1); +} + + +/* -------------------------------------------------------------------- */ +/* Encoder */ +/* -------------------------------------------------------------------- */ + +int +ImagingJpegEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + JPEGENCODERSTATE* context = (JPEGENCODERSTATE*) state->context; + int ok; + + if (setjmp(context->error.setjmp_buffer)) { + /* JPEG error handler */ + jpeg_destroy_compress(&context->cinfo); + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + if (!state->state) { + + /* Setup compression context (very similar to the decoder) */ + context->cinfo.err = jpeg_std_error(&context->error.pub); + context->error.pub.error_exit = error; + jpeg_create_compress(&context->cinfo); + jpeg_buffer_dest(&context->cinfo, &context->destination); + + context->extra_offset = 0; + + /* Ready to encode */ + state->state = 1; + + } + + /* Load the destination buffer */ + context->destination.pub.next_output_byte = buf; + context->destination.pub.free_in_buffer = bytes; + + switch (state->state) { + + case 1: + + context->cinfo.image_width = state->xsize; + context->cinfo.image_height = state->ysize; + + switch (state->bits) { + case 8: + context->cinfo.input_components = 1; + context->cinfo.in_color_space = JCS_GRAYSCALE; + break; + case 24: + context->cinfo.input_components = 3; + if (strcmp(im->mode, "YCbCr") == 0) + context->cinfo.in_color_space = JCS_YCbCr; + else + context->cinfo.in_color_space = JCS_RGB; + break; + case 32: + context->cinfo.input_components = 4; + context->cinfo.in_color_space = JCS_CMYK; + break; + default: + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + + /* Compressor configuration */ + jpeg_set_defaults(&context->cinfo); + if (context->quality > 0) + jpeg_set_quality(&context->cinfo, context->quality, 1); + + /* Set subsampling options */ + switch (context->subsampling) + { + case 0: /* 1x1 1x1 1x1 (4:4:4) : None */ + { + context->cinfo.comp_info[0].h_samp_factor = 1; + context->cinfo.comp_info[0].v_samp_factor = 1; + context->cinfo.comp_info[1].h_samp_factor = 1; + context->cinfo.comp_info[1].v_samp_factor = 1; + context->cinfo.comp_info[2].h_samp_factor = 1; + context->cinfo.comp_info[2].v_samp_factor = 1; + break; + } + case 1: /* 2x1, 1x1, 1x1 (4:2:2) : Medium */ + { + context->cinfo.comp_info[0].h_samp_factor = 2; + context->cinfo.comp_info[0].v_samp_factor = 1; + context->cinfo.comp_info[1].h_samp_factor = 1; + context->cinfo.comp_info[1].v_samp_factor = 1; + context->cinfo.comp_info[2].h_samp_factor = 1; + context->cinfo.comp_info[2].v_samp_factor = 1; + break; + } + case 2: /* 2x2, 1x1, 1x1 (4:1:1) : High */ + { + context->cinfo.comp_info[0].h_samp_factor = 2; + context->cinfo.comp_info[0].v_samp_factor = 2; + context->cinfo.comp_info[1].h_samp_factor = 1; + context->cinfo.comp_info[1].v_samp_factor = 1; + context->cinfo.comp_info[2].h_samp_factor = 1; + context->cinfo.comp_info[2].v_samp_factor = 1; + break; + } + default: + { + /* Use the lib's default */ + break; + } + } + if (context->progressive) + jpeg_simple_progression(&context->cinfo); + context->cinfo.smoothing_factor = context->smooth; + context->cinfo.optimize_coding = (boolean) context->optimize; + if (context->xdpi > 0 && context->ydpi > 0) { + context->cinfo.density_unit = 1; /* dots per inch */ + context->cinfo.X_density = context->xdpi; + context->cinfo.Y_density = context->ydpi; + } + switch (context->streamtype) { + case 1: + /* tables only -- not yet implemented */ + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + case 2: + /* image only */ + jpeg_suppress_tables(&context->cinfo, TRUE); + jpeg_start_compress(&context->cinfo, FALSE); + /* suppress extra section */ + context->extra_offset = context->extra_size; + break; + default: + /* interchange stream */ + jpeg_start_compress(&context->cinfo, TRUE); + break; + } + state->state++; + /* fall through */ + + case 2: + + if (context->extra) { + /* copy extra buffer to output buffer */ + unsigned int n = context->extra_size - context->extra_offset; + if (n > context->destination.pub.free_in_buffer) + n = context->destination.pub.free_in_buffer; + memcpy(context->destination.pub.next_output_byte, + context->extra + context->extra_offset, n); + context->destination.pub.next_output_byte += n; + context->destination.pub.free_in_buffer -= n; + context->extra_offset += n; + if (context->extra_offset >= context->extra_size) + state->state++; + else + break; + } else + state->state++; + + case 3: + + ok = 1; + while (state->y < state->ysize) { + state->shuffle(state->buffer, + (UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->xsize); + ok = jpeg_write_scanlines(&context->cinfo, &state->buffer, 1); + if (ok != 1) + break; + state->y++; + } + + if (ok != 1) + break; + state->state++; + /* fall through */ + + case 4: + + /* Finish compression */ + if (context->destination.pub.free_in_buffer < 100) + break; + jpeg_finish_compress(&context->cinfo); + + /* Clean up */ + if (context->extra) + free(context->extra); + jpeg_destroy_compress(&context->cinfo); + /* if (jerr.pub.num_warnings) return BROKEN; */ + state->errcode = IMAGING_CODEC_END; + break; + + } + + /* Return number of bytes in output buffer */ + return context->destination.pub.next_output_byte - buf; + +} + +const char* +ImagingJpegVersion(void) +{ + static char version[20]; + sprintf(version, "%d.%d", JPEG_LIB_VERSION / 10, JPEG_LIB_VERSION % 10); + return version; +} + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h new file mode 100755 index 00000000000..7d087ac4779 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h @@ -0,0 +1,52 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * declarations for the TIFF LZW decoder. + * + * Copyright (c) Fredrik Lundh 1995-96. + */ + + +/* Max size for LZW code words */ + +#define LZWBITS 12 + +#define LZWTABLE (1< +#include /* memcpy() */ + +#include "Lzw.h" + + +int +ImagingLzwDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8* p; + int c, i; + int thiscode; + LZWSTATE* context = (LZWSTATE*) state->context; + + unsigned char *ptr = buf; + + if (!state->state) { + + /* Clear code */ + context->clear = 1 << 8; + + /* End code */ + context->end = context->clear + 1; + + state->state = 1; + } + + for (;;) { + + if (state->state == 1) { + + /* First free entry in table */ + context->next = context->clear + 2; + + /* Initial code size */ + context->codesize = 8 + 1; + context->codemask = (1 << context->codesize) - 1; + + /* Buffer pointer. We fill the buffer from right, which + allows us to return all of it in one operation. */ + context->bufferindex = LZWBUFFER; + + state->state = 2; + } + + if (context->bufferindex < LZWBUFFER) { + + /* Return whole buffer in one chunk */ + i = LZWBUFFER - context->bufferindex; + p = &context->buffer[context->bufferindex]; + + context->bufferindex = LZWBUFFER; + + } else { + + /* Get current symbol */ + while (context->bitcount < context->codesize) { + + if (bytes < 1) + return ptr - buf;; + + /* Read next byte */ + c = *ptr++; bytes--; + + /* New bits are shifted in from from the right. */ + context->bitbuffer = (context->bitbuffer << 8) | c; + context->bitcount += 8; + + } + + /* Extract current symbol from bit buffer. */ + c = (context->bitbuffer >> (context->bitcount - + context->codesize)) + & context->codemask; + + /* Adjust buffer */ + context->bitcount -= context->codesize; + + /* If c is less than clear, it's a data byte. Otherwise, + it's either clear/end or a code symbol which should be + expanded. */ + + if (c == context->clear) { + if (state->state != 2) + state->state = 1; + continue; + } + + if (c == context->end) + break; + + i = 1; + p = &context->lastdata; + + if (state->state == 2) { + + /* First valid symbol after clear; use as is */ + if (c > context->clear) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + context->lastdata = context->lastcode = c; + state->state = 3; + + } else { + + thiscode = c; + + if (c > context->next) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + if (c == context->next) { + + /* c == next is allowed, by some strange reason */ + if (context->bufferindex <= 0) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + context->buffer[--context->bufferindex] = context->lastdata; + c = context->lastcode; + } + + while (c >= context->clear) { + + /* Copy data string to buffer (beginning from right) */ + + if (context->bufferindex <= 0 || c >= LZWTABLE) { + state->errcode = IMAGING_CODEC_BROKEN; + return -1; + } + + context->buffer[--context->bufferindex] = + context->data[c]; + c = context->link[c]; + } + + context->lastdata = c; + + if (context->next < LZWTABLE) { + + /* While we still have room for it, add this + symbol to the table. */ + context->data[context->next] = c; + context->link[context->next] = context->lastcode; + + context->next++; + + if (context->next == context->codemask && + context->codesize < LZWBITS) { + + /* Expand code size */ + context->codesize++; + context->codemask = (1 << context->codesize) - 1; + + } + } + context->lastcode = thiscode; + } + } + + /* Update the output image */ + for (c = 0; c < i; c++) { + + state->buffer[state->x] = p[c]; + + if (++state->x >= state->bytes) { + + int x, bpp; + + /* Apply filter */ + switch (context->filter) { + case 2: + /* Horizontal differing ("prior") */ + bpp = (state->bits + 7) / 8; + for (x = bpp; x < state->bytes; x++) + state->buffer[x] += state->buffer[x-bpp]; + } + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) + /* End of file (errcode = 0) */ + return -1; + } + } + } + + return ptr - buf; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c new file mode 100755 index 00000000000..5d2f031cf3c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c @@ -0,0 +1,74 @@ +/* + * The Python Imaging Library + * $Id$ + * + * colour and luminance matrix transforms + * + * history: + * 1996-05-18 fl: created (brute force implementation) + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +#define CLIPF(v) ((v <= 0.0) ? 0 : (v >= 255.0F) ? 255 : (UINT8) v) + + +Imaging +ImagingConvertMatrix(Imaging im, const char *mode, float m[]) +{ + Imaging imOut; + int x, y; + + /* Assume there's enough data in the buffer */ + if (!im) + return (Imaging) ImagingError_ModeError(); + + if (strcmp(mode, "L") == 0 && im->bands == 3) { + + imOut = ImagingNew("L", im->xsize, im->ysize); + if (!imOut) + return NULL; + + for (y = 0; y < im->ysize; y++) { + UINT8* in = (UINT8*) im->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + + for (x = 0; x < im->xsize; x++) { + float v = m[0]*in[0] + m[1]*in[1] + m[2]*in[2] + m[3] + 0.5; + out[x] = CLIPF(v); + in += 4; + } + } + + } else if (strlen(mode) == 3 && im->bands == 3) { + + imOut = ImagingNew(mode, im->xsize, im->ysize); + if (!imOut) + return NULL; + + for (y = 0; y < im->ysize; y++) { + UINT8* in = (UINT8*) im->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + + for (x = 0; x < im->xsize; x++) { + float v0 = m[0]*in[0] + m[1]*in[1] + m[2]*in[2] + m[3] + 0.5; + float v1 = m[4]*in[0] + m[5]*in[1] + m[6]*in[2] + m[7] + 0.5; + float v2 = m[8]*in[0] + m[9]*in[1] + m[10]*in[2] + m[11] + 0.5; + out[0] = CLIPF(v0); + out[1] = CLIPF(v1); + out[2] = CLIPF(v2); + in += 4; out += 4; + } + } + } else + return (Imaging) ImagingError_ModeError(); + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c new file mode 100755 index 00000000000..ad11d87d4a3 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c @@ -0,0 +1,78 @@ +/* + * The Python Imaging Library + * $Id$ + * + * mode filter + * + * history: + * 2002-06-08 fl Created (based on code from IFUNC95) + * 2004-10-05 fl Rewritten; use a simpler brute-force algorithm + * + * Copyright (c) Secret Labs AB 2002-2004. All rights reserved. + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +Imaging +ImagingModeFilter(Imaging im, int size) +{ + Imaging imOut; + int x, y, i; + int xx, yy; + int maxcount; + UINT8 maxpixel; + int histogram[256]; + + if (!im || im->bands != 1 || im->type != IMAGING_TYPE_UINT8) + return (Imaging) ImagingError_ModeError(); + + imOut = ImagingNew(im->mode, im->xsize, im->ysize); + if (!imOut) + return NULL; + + size = size / 2; + + for (y = 0; y < imOut->ysize; y++) { + UINT8* out = &IMAGING_PIXEL_L(imOut, 0, y); + for (x = 0; x < imOut->xsize; x++) { + + /* calculate histogram over current area */ + + /* FIXME: brute force! to improve, update the histogram + incrementally. may also add a "frequent list", like in + the old implementation, but I'm not sure that's worth + the added complexity... */ + + memset(histogram, 0, sizeof(histogram)); + for (yy = y - size; yy <= y + size; yy++) + if (yy >= 0 && yy < imOut->ysize) { + UINT8* in = &IMAGING_PIXEL_L(im, 0, yy); + for (xx = x - size; xx <= x + size; xx++) + if (xx >= 0 && xx < imOut->xsize) + histogram[in[xx]]++; + } + + /* find most frequent pixel value in this region */ + maxpixel = 0; + maxcount = histogram[maxpixel]; + for (i = 1; i < 256; i++) + if (histogram[i] > maxcount) { + maxcount = histogram[i]; + maxpixel = (UINT8) i; + } + + if (maxcount > 2) + out[x] = maxpixel; + else + out[x] = IMAGING_PIXEL_L(im, x, y); + + } + + } + + ImagingCopyInfo(imOut, im); + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c new file mode 100755 index 00000000000..b611098d874 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c @@ -0,0 +1,91 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for MSP version 2 data. + * + * history: + * 97-01-03 fl Created + * + * Copyright (c) Fredrik Lundh 1997. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingMspDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + int n; + UINT8* ptr; + + ptr = buf; + + for (;;) { + + if (bytes < 1) + return ptr - buf; + + if (ptr[0] == 0) { + + /* Run (3 bytes block) */ + if (bytes < 3) + break; + + n = ptr[1]; + + if (state->x + n > state->bytes) { + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + memset(state->buffer + state->x, ptr[2], n); + + ptr += 3; + bytes -= 3; + + } else { + + /* Literal (1+n bytes block) */ + n = ptr[0]; + + if (bytes < 1 + n) + break; + + if (state->x + n > state->bytes) { + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + memcpy(state->buffer + state->x, ptr + 1, n); + + ptr += 1 + n; + bytes -= 1 + n; + + } + + state->x += n; + + if (state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + } + + } + + return ptr - buf; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c new file mode 100755 index 00000000000..eaa790768f0 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c @@ -0,0 +1,42 @@ +/* + * The Python Imaging Library + * $Id$ + * + * negate image + * + * to do: + * FIXME: Maybe this should be implemented using ImagingPoint() + * + * history: + * 95-11-27 fl: Created + * + * Copyright (c) Fredrik Lundh 1995. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +Imaging +ImagingNegative(Imaging im) +{ + Imaging imOut; + int x, y; + + if (!im) + return (Imaging) ImagingError_ModeError(); + + imOut = ImagingNew(im->mode, im->xsize, im->ysize); + if (!imOut) + return NULL; + + for (y = 0; y < im->ysize; y++) + for (x = 0; x < im->linesize; x++) + imOut->image[y][x] = ~im->image[y][x]; + + return imOut; +} + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c new file mode 100755 index 00000000000..f6d6e510e5c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c @@ -0,0 +1,61 @@ +/* + * The Python Imaging Library + * $Id$ + * + * offset an image in x and y directions + * + * history: + * 96-07-22 fl: Created + * 98-11-01 cgw@pgt.com: Fixed negative-array index bug + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +Imaging +ImagingOffset(Imaging im, int xoffset, int yoffset) +{ + int x, y; + Imaging imOut; + + if (!im) + return (Imaging) ImagingError_ModeError(); + + imOut = ImagingNew(im->mode, im->xsize, im->ysize); + if (!imOut) + return NULL; + + ImagingCopyInfo(imOut, im); + + /* make offsets positive to avoid negative coordinates */ + xoffset %= im->xsize; + xoffset = im->xsize - xoffset; + if (xoffset < 0) + xoffset += im->xsize; + + yoffset %= im->ysize; + yoffset = im->ysize - yoffset; + if (yoffset < 0) + yoffset += im->ysize; + +#define OFFSET(image)\ + for (y = 0; y < im->ysize; y++)\ + for (x = 0; x < im->xsize; x++) {\ + int yi = (y + yoffset) % im->ysize;\ + int xi = (x + xoffset) % im->xsize;\ + imOut->image[y][x] = im->image[yi][xi];\ + } + + if (im->image8) + OFFSET(image8) + else + OFFSET(image32) + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c new file mode 100755 index 00000000000..478de74996c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c @@ -0,0 +1,566 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * code to pack raw data + * + * history: + * 1996-04-30 fl Created + * 1996-05-12 fl Published a few RGB packers + * 1996-11-01 fl More RGB packers (Tk booster stuff) + * 1996-12-30 fl Added P;1, P;2 and P;4 packers + * 1997-06-02 fl Added F (F;32NF) packer + * 1997-08-28 fl Added 1 as L packer + * 1998-02-08 fl Added I packer + * 1998-03-09 fl Added mode field, RGBA/RGBX as RGB packers + * 1998-07-01 fl Added YCbCr support + * 1998-07-12 fl Added I 16 packer + * 1999-02-03 fl Added BGR packers + * 2003-09-26 fl Added LA/PA packers + * 2006-06-22 fl Added CMYK;I packer + * + * Copyright (c) 1997-2006 by Secret Labs AB. + * Copyright (c) 1996-1997 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#define R 0 +#define G 1 +#define B 2 +#define X 3 +#define A 3 + +#define C 0 +#define M 1 +#define Y 2 +#define K 3 + +/* byte swapping macros */ + +#define C16N\ + (out[0]=tmp[0], out[1]=tmp[1]); +#define C16S\ + (out[1]=tmp[0], out[0]=tmp[1]); +#define C32N\ + (out[0]=tmp[0], out[1]=tmp[1], out[2]=tmp[2], out[3]=tmp[3]); +#define C32S\ + (out[3]=tmp[0], out[2]=tmp[1], out[1]=tmp[2], out[0]=tmp[3]); +#define C64N\ + (out[0]=tmp[0], out[1]=tmp[1], out[2]=tmp[2], out[3]=tmp[3],\ + out[4]=tmp[4], out[5]=tmp[5], out[6]=tmp[6], out[7]=tmp[7]); +#define C64S\ + (out[7]=tmp[0], out[6]=tmp[1], out[5]=tmp[2], out[4]=tmp[3],\ + out[3]=tmp[4], out[2]=tmp[5], out[1]=tmp[6], out[0]=tmp[7]); + +#ifdef WORDS_BIGENDIAN +#define C16B C16N +#define C16L C16S +#define C32B C32N +#define C32L C32S +#define C64B C64N +#define C64L C64S +#else +#define C16B C16S +#define C16L C16N +#define C32B C32S +#define C32L C32N +#define C64B C64S +#define C64L C64N +#endif + +static void +pack1(UINT8* out, const UINT8* in, int pixels) +{ + int i, m, b; + /* bilevel (black is 0) */ + b = 0; m = 128; + for (i = 0; i < pixels; i++) { + if (in[i] != 0) + b |= m; + m >>= 1; + if (m == 0) { + *out++ = b; + b = 0; m = 128; + } + } + if (m != 128) + *out++ = b; +} + +static void +pack1I(UINT8* out, const UINT8* in, int pixels) +{ + int i, m, b; + /* bilevel (black is 1) */ + b = 0; m = 128; + for (i = 0; i < pixels; i++) { + if (in[i] == 0) + b |= m; + m >>= 1; + if (m == 0) { + *out++ = b; + b = 0; m = 128; + } + } + if (m != 128) + *out++ = b; +} + +static void +pack1R(UINT8* out, const UINT8* in, int pixels) +{ + int i, m, b; + /* bilevel, lsb first (black is 0) */ + b = 0; m = 1; + for (i = 0; i < pixels; i++) { + if (in[i] != 0) + b |= m; + m <<= 1; + if (m == 256){ + *out++ = b; + b = 0; m = 1; + } + } + if (m != 1) + *out++ = b; +} + +static void +pack1IR(UINT8* out, const UINT8* in, int pixels) +{ + int i, m, b; + /* bilevel, lsb first (black is 1) */ + b = 0; m = 1; + for (i = 0; i < pixels; i++) { + if (in[i] == 0) + b |= m; + m <<= 1; + if (m == 256){ + *out++ = b; + b = 0; m = 1; + } + } + if (m != 1) + *out++ = b; +} + +static void +pack1L(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* bilevel, stored as bytes */ + for (i = 0; i < pixels; i++) + out[i] = (in[i] != 0) ? 255 : 0; +} + +static void +packP4(UINT8* out, const UINT8* in, int pixels) +{ + while (pixels >= 2) { + *out++ = (in[0] << 4) | + (in[1] & 15); + in += 2; pixels -= 2; + } + + if (pixels) + out[0] = (in[0] << 4); +} + +static void +packP2(UINT8* out, const UINT8* in, int pixels) +{ + while (pixels >= 4) { + *out++ = (in[0] << 6) | + ((in[1] & 3) << 4) | + ((in[2] & 3) << 2) | + (in[3] & 3); + in += 4; pixels -= 4; + } + + switch (pixels) { + case 3: + out[0] = (in[0] << 6) | + ((in[1] & 3) << 4) | + ((in[2] & 3) << 2); + break; + case 2: + out[0] = (in[0] << 6) | + ((in[1] & 3) << 4); + case 1: + out[0] = (in[0] << 6); + } +} + +static void +packLA(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* LA, pixel interleaved */ + for (i = 0; i < pixels; i++) { + out[0] = in[R]; + out[1] = in[A]; + out += 2; in += 4; + } +} + +static void +packLAL(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* LA, line interleaved */ + for (i = 0; i < pixels; i++) { + out[i] = in[R]; + out[i+pixels] = in[A]; + in += 4; + } +} + +void +ImagingPackRGB(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB triplets */ + for (i = 0; i < pixels; i++) { + out[0] = in[R]; + out[1] = in[G]; + out[2] = in[B]; + out += 3; in += 4; + } +} + +void +ImagingPackXRGB(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* XRGB, triplets with left padding */ + for (i = 0; i < pixels; i++) { + out[0] = 0; + out[1] = in[R]; + out[2] = in[G]; + out[3] = in[B]; + out += 4; in += 4; + } +} + +void +ImagingPackBGR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, reversed bytes */ + for (i = 0; i < pixels; i++) { + out[0] = in[B]; + out[1] = in[G]; + out[2] = in[R]; + out += 3; in += 4; + } +} + +void +ImagingPackBGRX(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* BGRX, reversed bytes with right padding */ + for (i = 0; i < pixels; i++) { + out[0] = in[B]; + out[1] = in[G]; + out[2] = in[R]; + out[3] = 0; + out += 4; in += 4; + } +} + +void +ImagingPackXBGR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* XBGR, reversed bytes with left padding */ + for (i = 0; i < pixels; i++) { + out[0] = 0; + out[1] = in[B]; + out[2] = in[G]; + out[3] = in[R]; + out += 4; in += 4; + } +} + +void +ImagingPackBGRA(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* BGRX, reversed bytes with right padding */ + for (i = 0; i < pixels; i++) { + out[0] = in[B]; + out[1] = in[G]; + out[2] = in[R]; + out[3] = in[A]; + out += 4; in += 4; + } +} + +void +ImagingPackABGR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* XBGR, reversed bytes with left padding */ + for (i = 0; i < pixels; i++) { + out[0] = in[A]; + out[1] = in[B]; + out[2] = in[G]; + out[3] = in[R]; + out += 4; in += 4; + } +} + +static void +packRGBL(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, line interleaved */ + for (i = 0; i < pixels; i++) { + out[i] = in[R]; + out[i+pixels] = in[G]; + out[i+pixels+pixels] = in[B]; + in += 4; + } +} + +static void +packRGBXL(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGBX, line interleaved */ + for (i = 0; i < pixels; i++) { + out[i] = in[R]; + out[i+pixels] = in[G]; + out[i+pixels+pixels] = in[B]; + out[i+pixels+pixels+pixels] = in[X]; + in += 4; + } +} + +static void +packI16B(UINT8* out, const UINT8* in_, int pixels) +{ + int i; + INT32* in = (INT32*) in_; + UINT16 tmp_; + UINT8* tmp = (UINT8*) &tmp_; + for (i = 0; i < pixels; i++) { + if (in[0] <= 0) + tmp_ = 0; + else if (in[0] > 65535) + tmp_ = 65535; + else + tmp_ = in[0]; + C16B; + out += 2; in++; + } +} + +static void +packI32S(UINT8* out, const UINT8* in, int pixels) +{ + int i; + UINT8* tmp = (UINT8*) in; + for (i = 0; i < pixels; i++) { + C32L; + out += 4; tmp += 4; + } +} + +static void +copy1(UINT8* out, const UINT8* in, int pixels) +{ + /* L, P */ + memcpy(out, in, pixels); +} + +static void +copy2(UINT8* out, const UINT8* in, int pixels) +{ + /* I;16, etc */ + memcpy(out, in, pixels*2); +} + +static void +copy3(UINT8* out, const UINT8* in, int pixels) +{ + /* BGR;24, etc */ + memcpy(out, in, pixels*3); +} + +static void +copy4(UINT8* out, const UINT8* in, int pixels) +{ + /* RGBA, CMYK quadruples */ + memcpy(out, in, 4*pixels); +} + +static void +copy4I(UINT8* out, const UINT8* in, int pixels) +{ + /* RGBA, CMYK quadruples, inverted */ + int i; + for (i = 0; i < pixels*4; i++) + out[i] = ~in[i]; +} + +static void +band0(UINT8* out, const UINT8* in, int pixels) +{ + int i; + for (i = 0; i < pixels; i++, in += 4) + out[i] = in[0]; +} + +static void +band1(UINT8* out, const UINT8* in, int pixels) +{ + int i; + for (i = 0; i < pixels; i++, in += 4) + out[i] = in[1]; +} + +static void +band2(UINT8* out, const UINT8* in, int pixels) +{ + int i; + for (i = 0; i < pixels; i++, in += 4) + out[i] = in[2]; +} + +static void +band3(UINT8* out, const UINT8* in, int pixels) +{ + int i; + for (i = 0; i < pixels; i++, in += 4) + out[i] = in[3]; +} + +static struct { + const char* mode; + const char* rawmode; + int bits; + ImagingShuffler pack; +} packers[] = { + + /* bilevel */ + {"1", "1", 1, pack1}, + {"1", "1;I", 1, pack1I}, + {"1", "1;R", 1, pack1R}, + {"1", "1;IR", 1, pack1IR}, + {"1", "L", 8, pack1L}, + + /* greyscale */ + {"L", "L", 8, copy1}, + + /* greyscale w. alpha */ + {"LA", "LA", 16, packLA}, + {"LA", "LA;L", 16, packLAL}, + + /* palette */ + {"P", "P;1", 1, pack1}, + {"P", "P;2", 2, packP2}, + {"P", "P;4", 4, packP4}, + {"P", "P", 8, copy1}, + + /* palette w. alpha */ + {"PA", "PA", 16, packLA}, + {"PA", "PA;L", 16, packLAL}, + + /* true colour */ + {"RGB", "RGB", 24, ImagingPackRGB}, + {"RGB", "RGBX", 32, copy4}, + {"RGB", "XRGB", 32, ImagingPackXRGB}, + {"RGB", "BGR", 24, ImagingPackBGR}, + {"RGB", "BGRX", 32, ImagingPackBGRX}, + {"RGB", "XBGR", 32, ImagingPackXBGR}, + {"RGB", "RGB;L", 24, packRGBL}, + {"RGB", "R", 8, band0}, + {"RGB", "G", 8, band1}, + {"RGB", "B", 8, band2}, + + /* true colour w. alpha */ + {"RGBA", "RGBA", 32, copy4}, + {"RGBA", "RGBA;L", 32, packRGBXL}, + {"RGBA", "RGB", 24, ImagingPackRGB}, + {"RGBA", "BGR", 24, ImagingPackBGR}, + {"RGBA", "BGRA", 32, ImagingPackBGRA}, + {"RGBA", "ABGR", 32, ImagingPackABGR}, + {"RGBA", "R", 8, band0}, + {"RGBA", "G", 8, band1}, + {"RGBA", "B", 8, band2}, + {"RGBA", "A", 8, band3}, + + /* true colour w. padding */ + {"RGBX", "RGBX", 32, copy4}, + {"RGBX", "RGBX;L", 32, packRGBXL}, + {"RGBX", "RGB", 32, ImagingPackRGB}, + {"RGBX", "BGR", 32, ImagingPackBGR}, + {"RGBX", "BGRX", 32, ImagingPackBGRX}, + {"RGBX", "XBGR", 32, ImagingPackXBGR}, + {"RGBX", "R", 8, band0}, + {"RGBX", "G", 8, band1}, + {"RGBX", "B", 8, band2}, + {"RGBX", "X", 8, band3}, + + /* colour separation */ + {"CMYK", "CMYK", 32, copy4}, + {"CMYK", "CMYK;I", 32, copy4I}, + {"CMYK", "CMYK;L", 32, packRGBXL}, + {"CMYK", "C", 8, band0}, + {"CMYK", "M", 8, band1}, + {"CMYK", "Y", 8, band2}, + {"CMYK", "K", 8, band3}, + + /* video (YCbCr) */ + {"YCbCr", "YCbCr", 24, ImagingPackRGB}, + {"YCbCr", "YCbCr;L", 24, packRGBL}, + {"YCbCr", "YCbCrX", 32, copy4}, + {"YCbCr", "YCbCrK", 32, copy4}, + {"YCbCr", "Y", 8, band0}, + {"YCbCr", "Cb", 8, band1}, + {"YCbCr", "Cr", 8, band2}, + + /* integer */ + {"I", "I", 32, copy4}, + {"I", "I;16B", 16, packI16B}, + {"I", "I;32S", 32, packI32S}, + {"I", "I;32NS", 32, copy4}, + + /* floating point */ + {"F", "F", 32, copy4}, + {"F", "F;32F", 32, packI32S}, + {"F", "F;32NF", 32, copy4}, + + /* storage modes */ + {"I;16", "I;16", 16, copy2}, + {"I;16B", "I;16B", 16, copy2}, + {"I;16L", "I;16L", 16, copy2}, + {"BGR;15", "BGR;15", 16, copy2}, + {"BGR;16", "BGR;16", 16, copy2}, + {"BGR;24", "BGR;24", 24, copy3}, + + {NULL} /* sentinel */ +}; + + +ImagingShuffler +ImagingFindPacker(const char* mode, const char* rawmode, int* bits_out) +{ + int i; + + /* find a suitable pixel packer */ + for (i = 0; packers[i].rawmode; i++) + if (strcmp(packers[i].mode, mode) == 0 && + strcmp(packers[i].rawmode, rawmode) == 0) { + if (bits_out) + *bits_out = packers[i].bits; + return packers[i].pack; + } + return NULL; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c new file mode 100755 index 00000000000..aea8f04e301 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c @@ -0,0 +1,92 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for PackBits image data. + * + * history: + * 96-04-19 fl Created + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +int +ImagingPackbitsDecode(Imaging im, ImagingCodecState state, + UINT8* buf, int bytes) +{ + UINT8 n; + UINT8* ptr; + int i; + + ptr = buf; + + for (;;) { + + if (bytes < 1) + return ptr - buf; + + if (ptr[0] & 0x80) { + + if (ptr[0] == 0x80) { + /* Nop */ + ptr++; bytes--; + continue; + } + + /* Run */ + if (bytes < 2) + return ptr - buf; + + for (n = 257 - ptr[0]; n > 0; n--) { + if (state->x >= state->bytes) { + /* state->errcode = IMAGING_CODEC_OVERRUN; */ + break; + } + state->buffer[state->x++] = ptr[1]; + } + + ptr += 2; bytes -= 2; + + } else { + + /* Literal */ + n = ptr[0]+2; + + if (bytes < n) + return ptr - buf; + + for (i = 1; i < n; i++) { + if (state->x >= state->bytes) { + /* state->errcode = IMAGING_CODEC_OVERRUN; */ + break; + } + state->buffer[state->x++] = ptr[i]; + } + + ptr += n; bytes -= n; + + } + + if (state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + } + + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c new file mode 100755 index 00000000000..bd4f4f1d637 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c @@ -0,0 +1,316 @@ +/* + * The Python Imaging Library + * $Id$ + * + * imaging palette object + * + * history: + * 1996-05-05 fl Added to library + * 1996-05-27 fl Added colour mapping stuff + * 1997-05-12 fl Support RGBA palettes + * 2005-02-09 fl Removed grayscale entries from web palette + * + * Copyright (c) Secret Labs AB 1997-2005. All rights reserved. + * Copyright (c) Fredrik Lundh 1995-1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#include + + +ImagingPalette +ImagingPaletteNew(const char* mode) +{ + /* Create a palette object */ + + int i; + ImagingPalette palette; + + if (strcmp(mode, "RGB") && strcmp(mode, "RGBA")) + return (ImagingPalette) ImagingError_ModeError(); + + palette = calloc(1, sizeof(struct ImagingPaletteInstance)); + if (!palette) + return (ImagingPalette) ImagingError_MemoryError(); + + strcpy(palette->mode, mode); + + /* Initialize to ramp */ + for (i = 0; i < 256; i++) { + palette->palette[i*4+0] = + palette->palette[i*4+1] = + palette->palette[i*4+2] = (UINT8) i; + palette->palette[i*4+3] = 255; /* opaque */ + } + + return palette; +} + +ImagingPalette +ImagingPaletteNewBrowser(void) +{ + /* Create a standard "browser" palette object */ + + int i, r, g, b; + ImagingPalette palette; + + palette = ImagingPaletteNew("RGB"); + if (!palette) + return NULL; + + /* Blank out unused entries */ + /* FIXME: Add 10-level windows palette here? */ + + for (i = 0; i < 10; i++) { + palette->palette[i*4+0] = + palette->palette[i*4+1] = + palette->palette[i*4+2] = 0; + } + + /* Simple 6x6x6 colour cube */ + + for (b = 0; b < 256; b += 51) + for (g = 0; g < 256; g += 51) + for (r = 0; r < 256; r += 51) { + palette->palette[i*4+0] = r; + palette->palette[i*4+1] = g; + palette->palette[i*4+2] = b; + i++; + } + + /* Blank out unused entries */ + /* FIXME: add 30-level greyscale wedge here? */ + + for (; i < 256; i++) { + palette->palette[i*4+0] = + palette->palette[i*4+1] = + palette->palette[i*4+2] = 0; + } + + return palette; +} + +ImagingPalette +ImagingPaletteDuplicate(ImagingPalette palette) +{ + /* Duplicate palette descriptor */ + + ImagingPalette new_palette; + + if (!palette) + return NULL; + + new_palette = malloc(sizeof(struct ImagingPaletteInstance)); + if (!new_palette) + return (ImagingPalette) ImagingError_MemoryError(); + + memcpy(new_palette, palette, sizeof(struct ImagingPaletteInstance)); + + /* Don't share the cache */ + new_palette->cache = NULL; + + return new_palette; +} + +void +ImagingPaletteDelete(ImagingPalette palette) +{ + /* Destroy palette object */ + + if (palette) { + if (palette->cache) + free(palette->cache); + free(palette); + } +} + + +/* -------------------------------------------------------------------- */ +/* Colour mapping */ +/* -------------------------------------------------------------------- */ + +/* This code is used to map RGB triplets to palette indices, using + a palette index cache. */ + +/* + * This implementation is loosely based on the corresponding code in + * the IJG JPEG library by Thomas G. Lane. Original algorithms by + * Paul Heckbert and Spencer W. Thomas. + * + * The IJG JPEG library is copyright (C) 1991-1995, Thomas G. Lane. */ + +#define DIST(a, b, s) (a - b) * (a - b) * s + +/* Colour weights (no scaling, for now) */ +#define RSCALE 1 +#define GSCALE 1 +#define BSCALE 1 + +/* Calculated scaled distances */ +#define RDIST(a, b) DIST(a, b, RSCALE*RSCALE) +#define GDIST(a, b) DIST(a, b, GSCALE*GSCALE) +#define BDIST(a, b) DIST(a, b, BSCALE*BSCALE) + +/* Incremental steps */ +#define RSTEP (4 * RSCALE) +#define GSTEP (4 * GSCALE) +#define BSTEP (4 * BSCALE) + +#define BOX 8 + +#define BOXVOLUME BOX*BOX*BOX + +void +ImagingPaletteCacheUpdate(ImagingPalette palette, int r, int g, int b) +{ + int i, j; + unsigned int dmin[256], dmax; + int r0, g0, b0; + int r1, g1, b1; + int rc, gc, bc; + unsigned int d[BOXVOLUME]; + UINT8 c[BOXVOLUME]; + + /* Get box boundaries for the given (r,g,b)-triplet. Each box + covers eight cache slots (32 colour values, that is). */ + + r0 = r & 0xe0; r1 = r0 + 0x1f; rc = (r0 + r1) / 2; + g0 = g & 0xe0; g1 = g0 + 0x1f; gc = (g0 + g1) / 2; + b0 = b & 0xe0; b1 = b0 + 0x1f; bc = (b0 + b1) / 2; + + /* Step 1 -- Select relevant palette entries (after Heckbert) */ + + /* For each palette entry, calculate the min and max distances to + * any position in the box given by the colour we're looking for. */ + + dmax = (unsigned int) ~0; + + for (i = 0; i < 256; i++) { + + int r, g, b; + unsigned int tmin, tmax; + + /* Find min and max distances to any point in the box */ + r = palette->palette[i*4+0]; + tmin = (r < r0) ? RDIST(r, r1) : (r > r1) ? RDIST(r, r0) : 0; + tmax = (r <= rc) ? RDIST(r, r1) : RDIST(r, r0); + + g = palette->palette[i*4+1]; + tmin += (g < g0) ? GDIST(g, g1) : (g > g1) ? GDIST(g, g0) : 0; + tmax += (g <= gc) ? GDIST(g, g1) : GDIST(g, g0); + + b = palette->palette[i*4+2]; + tmin += (b < b0) ? BDIST(b, b1) : (b > b1) ? BDIST(b, b0) : 0; + tmax += (b <= bc) ? BDIST(b, b1) : BDIST(b, b0); + + dmin[i] = tmin; + if (tmax < dmax) + dmax = tmax; /* keep the smallest max distance only */ + + } + + /* Step 2 -- Incrementally update cache slot (after Thomas) */ + + /* Find the box containing the nearest palette entry, and update + * all slots in that box. We only check boxes for which the min + * distance is less than or equal the smallest max distance */ + + for (i = 0; i < BOXVOLUME; i++) + d[i] = (unsigned int) ~0; + + for (i = 0; i < 256; i++) + + if (dmin[i] <= dmax) { + + int rd, gd, bd; + int ri, gi, bi; + int rx, gx, bx; + + ri = (r0 - palette->palette[i*4+0]) * RSCALE; + gi = (g0 - palette->palette[i*4+1]) * GSCALE; + bi = (b0 - palette->palette[i*4+2]) * BSCALE; + + rd = ri*ri + gi*gi + bi*bi; + + ri = ri * (2 * RSTEP) + RSTEP * RSTEP; + gi = gi * (2 * GSTEP) + GSTEP * GSTEP; + bi = bi * (2 * BSTEP) + BSTEP * BSTEP; + + rx = ri; + for (r = j = 0; r < BOX; r++) { + gd = rd; gx = gi; + for (g = 0; g < BOX; g++) { + bd = gd; bx = bi; + for (b = 0; b < BOX; b++) { + if ((unsigned int) bd < d[j]) { + d[j] = bd; + c[j] = (UINT8) i; + } + bd += bx; + bx += 2 * BSTEP * BSTEP; + j++; + } + gd += gx; + gx += 2 * GSTEP * GSTEP; + } + rd += rx; + rx += 2 * RSTEP * RSTEP; + } + } + + /* Step 3 -- Update cache */ + + /* The c array now contains the closest match for each + * cache slot in the box. Update the cache. */ + + j = 0; + for (r = r0; r < r1; r+=4) + for (g = g0; g < g1; g+=4) + for (b = b0; b < b1; b+=4) + ImagingPaletteCache(palette, r, g, b) = c[j++]; +} + + +int +ImagingPaletteCachePrepare(ImagingPalette palette) +{ + /* Add a colour cache to a palette */ + + int i; + int entries = 64*64*64; + + if (palette->cache == NULL) { + + /* The cache is 512k. It might be a good idea to break it + up into a pointer array (e.g. an 8-bit image?) */ + + palette->cache = (INT16*) malloc(entries * sizeof(INT16)); + if (!palette->cache) { + (void) ImagingError_MemoryError(); + return -1; + } + + /* Mark all entries as empty */ + for (i = 0; i < entries; i++) + palette->cache[i] = 0x100; + + } + + return 0; +} + + +void +ImagingPaletteCacheDelete(ImagingPalette palette) +{ + /* Release the colour cache, if any */ + + if (palette && palette->cache) { + free(palette->cache); + palette->cache = NULL; + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c new file mode 100755 index 00000000000..b89dd640453 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c @@ -0,0 +1,555 @@ +/* + * The Python Imaging Library + * $Id$ + * + * paste image on another image + * + * history: + * 96-03-27 fl Created + * 96-07-16 fl Support "1", "L" and "RGBA" masks + * 96-08-16 fl Merged with opaque paste + * 97-01-17 fl Faster blending, added support for RGBa images + * 97-08-27 fl Faster masking for 32-bit images + * 98-02-02 fl Fixed MULDIV255 macro for gcc + * 99-02-02 fl Added "RGBa" mask support + * 99-02-06 fl Rewritten. Added support for masked fill operations. + * 99-12-08 fl Fixed matte fill. + * + * Copyright (c) Fredrik Lundh 1996-97. + * Copyright (c) Secret Labs AB 1997-99. + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +/* like (a * b + 127) / 255), but much faster on most platforms */ +#define MULDIV255NEW(a, b, tmp)\ + (tmp = (a) * (b) + 128, ((((tmp) >> 8) + (tmp)) >> 8)) + +#define MULDIV255OLD(a, b, tmp)\ + (((a) * (b) + 127) / 255) + +#define MULDIV255 MULDIV255NEW + +#define BLEND(mask, in1, in2, tmp1, tmp2)\ + (MULDIV255(in1, 255 - mask, tmp1) + MULDIV255(in2, mask, tmp2)) + +#define PREBLEND(mask, in1, in2, tmp1)\ + (MULDIV255(in1, 255 - mask, tmp1) + in2) + +static inline void +paste(Imaging imOut, Imaging imIn, int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* paste opaque region */ + + int y; + + dx *= pixelsize; + sx *= pixelsize; + + xsize *= pixelsize; + + for (y = 0; y < ysize; y++) + memcpy(imOut->image[y+dy]+dx, imIn->image[y+sy]+sx, xsize); +} + +static inline void +paste_mask_1(Imaging imOut, Imaging imIn, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* paste with mode "1" mask */ + + int x, y; + + if (imOut->image8) { + + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* in = imIn->image8[y+sy]+sx; + UINT8* mask = imMask->image8[y+sy]+sx; + for (x = 0; x < xsize; x++) { + if (*mask++) + *out = *in; + out++, in++; + } + } + + } else { + + for (y = 0; y < ysize; y++) { + INT32* out = imOut->image32[y+dy]+dx; + INT32* in = imIn->image32[y+sy]+sx; + UINT8* mask = imMask->image8[y+sy]+sx; + for (x = 0; x < xsize; x++) { + if (*mask++) + *out = *in; + out++, in++; + } + } + } +} + +static inline void +paste_mask_L(Imaging imOut, Imaging imIn, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* paste with mode "L" matte */ + + int x, y, i; + unsigned int tmp1, tmp2; + + if (imOut->image8) { + + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* in = imIn->image8[y+sy]+sx; + UINT8* mask = imMask->image8[y+sy]+sx; + for (x = 0; x < xsize; x++) { + *out = BLEND(*mask, *out, *in, tmp1, tmp2); + out++, in++, mask++; + } + } + + } else { + + for (y = 0; y < ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; + UINT8* in = (UINT8*) imIn->image[y+sy]+sx*pixelsize; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; + for (x = 0; x < xsize; x++) { + for (i = 0; i < pixelsize; i++) { + *out = BLEND(*mask, *out, *in, tmp1, tmp2); + out++, in++; + } + mask++; + } + } + } +} + +static inline void +paste_mask_RGBA(Imaging imOut, Imaging imIn, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* paste with mode "RGBA" matte */ + + int x, y, i; + unsigned int tmp1, tmp2; + + if (imOut->image8) { + + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* in = imIn->image8[y+sy]+sx; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; + for (x = 0; x < xsize; x++) { + *out = BLEND(*mask, *out, *in, tmp1, tmp2); + out++, in++, mask += 4; + } + } + + } else { + + for (y = 0; y < ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; + UINT8* in = (UINT8*) imIn->image[y+sy]+sx*pixelsize; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; + for (x = 0; x < xsize; x++) { + for (i = 0; i < pixelsize; i++) { + *out = BLEND(*mask, *out, *in, tmp1, tmp2); + out++, in++; + } + mask += 4; + } + } + } +} + + +static inline void +paste_mask_RGBa(Imaging imOut, Imaging imIn, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* paste with mode "RGBa" matte */ + + int x, y, i; + unsigned int tmp1; + + if (imOut->image8) { + + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* in = imIn->image8[y+sy]+sx; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; + for (x = 0; x < xsize; x++) { + *out = PREBLEND(*mask, *out, *in, tmp1); + out++, in++, mask += 4; + } + } + + } else { + + for (y = 0; y < ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; + UINT8* in = (UINT8*) imIn->image[y+sy]+sx*pixelsize; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; + for (x = 0; x < xsize; x++) { + for (i = 0; i < pixelsize; i++) { + *out = PREBLEND(*mask, *out, *in, tmp1); + out++, in++; + } + mask += 4; + } + } + } +} + +int +ImagingPaste(Imaging imOut, Imaging imIn, Imaging imMask, + int dx0, int dy0, int dx1, int dy1) +{ + int xsize, ysize; + int pixelsize; + int sx0, sy0; + ImagingSectionCookie cookie; + + if (!imOut || !imIn) { + (void) ImagingError_ModeError(); + return -1; + } + + pixelsize = imOut->pixelsize; + + xsize = dx1 - dx0; + ysize = dy1 - dy0; + + if (xsize != imIn->xsize || ysize != imIn->ysize || + pixelsize != imIn->pixelsize) { + (void) ImagingError_Mismatch(); + return -1; + } + + if (imMask && (xsize != imMask->xsize || ysize != imMask->ysize)) { + (void) ImagingError_Mismatch(); + return -1; + } + + /* Determine which region to copy */ + sx0 = sy0 = 0; + if (dx0 < 0) + xsize += dx0, sx0 = -dx0, dx0 = 0; + if (dx0 + xsize > imOut->xsize) + xsize = imOut->xsize - dx0; + if (dy0 < 0) + ysize += dy0, sy0 = -dy0, dy0 = 0; + if (dy0 + ysize > imOut->ysize) + ysize = imOut->ysize - dy0; + + if (xsize <= 0 || ysize <= 0) + return 0; + + if (!imMask) { + ImagingSectionEnter(&cookie); + paste(imOut, imIn, dx0, dy0, sx0, sy0, xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "1") == 0) { + ImagingSectionEnter(&cookie); + paste_mask_1(imOut, imIn, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "L") == 0) { + ImagingSectionEnter(&cookie); + paste_mask_L(imOut, imIn, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "RGBA") == 0) { + ImagingSectionEnter(&cookie); + paste_mask_RGBA(imOut, imIn, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "RGBa") == 0) { + ImagingSectionEnter(&cookie); + paste_mask_RGBa(imOut, imIn, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else { + (void) ImagingError_ValueError("bad transparency mask"); + return -1; + } + + return 0; +} + +static inline void +fill(Imaging imOut, const void* ink_, int dx, int dy, + int xsize, int ysize, int pixelsize) +{ + /* fill opaque region */ + + int x, y; + UINT8 ink8 = 0; + INT32 ink32 = 0L; + + memcpy(&ink32, ink_, pixelsize); + memcpy(&ink8, ink_, sizeof(ink8)); + + if (imOut->image8 || ink32 == 0L) { + + dx *= pixelsize; + xsize *= pixelsize; + for (y = 0; y < ysize; y++) + memset(imOut->image[y+dy]+dx, ink8, xsize); + + } else { + + for (y = 0; y < ysize; y++) { + INT32* out = imOut->image32[y+dy]+dx; + for (x = 0; x < xsize; x++) + out[x] = ink32; + } + + } +} + +static inline void +fill_mask_1(Imaging imOut, const void* ink_, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* fill with mode "1" mask */ + + int x, y; + UINT8 ink8 = 0; + INT32 ink32 = 0L; + + memcpy(&ink32, ink_, pixelsize); + memcpy(&ink8, ink_, sizeof(ink8)); + + if (imOut->image8) { + + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* mask = imMask->image8[y+sy]+sx; + for (x = 0; x < xsize; x++) { + if (*mask++) + *out = ink8; + out++; + } + } + + } else { + + for (y = 0; y < ysize; y++) { + INT32* out = imOut->image32[y+dy]+dx; + UINT8* mask = imMask->image8[y+sy]+sx; + for (x = 0; x < xsize; x++) { + if (*mask++) + *out = ink32; + out++; + } + } + } +} + +static inline void +fill_mask_L(Imaging imOut, const UINT8* ink, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* fill with mode "L" matte */ + + int x, y, i; + unsigned int tmp1, tmp2; + + if (imOut->image8) { + + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* mask = imMask->image8[y+sy]+sx; + for (x = 0; x < xsize; x++) { + *out = BLEND(*mask, *out, ink[0], tmp1, tmp2); + out++, mask++; + } + } + + } else { + + for (y = 0; y < ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; + for (x = 0; x < xsize; x++) { + for (i = 0; i < pixelsize; i++) { + *out = BLEND(*mask, *out, ink[i], tmp1, tmp2); + out++; + } + mask++; + } + } + } +} + +static inline void +fill_mask_RGBA(Imaging imOut, const UINT8* ink, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* fill with mode "RGBA" matte */ + + int x, y, i; + unsigned int tmp1, tmp2; + + if (imOut->image8) { + + sx = sx*4+3; + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; + for (x = 0; x < xsize; x++) { + *out = BLEND(*mask, *out, ink[0], tmp1, tmp2); + out++, mask += 4; + } + } + + } else { + + dx *= pixelsize; + sx = sx*4 + 3; + for (y = 0; y < ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y+dy]+dx; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; + for (x = 0; x < xsize; x++) { + for (i = 0; i < pixelsize; i++) { + *out = BLEND(*mask, *out, ink[i], tmp1, tmp2); + out++; + } + mask += 4; + } + } + } +} + +static inline void +fill_mask_RGBa(Imaging imOut, const UINT8* ink, Imaging imMask, + int dx, int dy, int sx, int sy, + int xsize, int ysize, int pixelsize) +{ + /* fill with mode "RGBa" matte */ + + int x, y, i; + unsigned int tmp1; + + if (imOut->image8) { + + sx = sx*4 + 3; + for (y = 0; y < ysize; y++) { + UINT8* out = imOut->image8[y+dy]+dx; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; + for (x = 0; x < xsize; x++) { + *out = PREBLEND(*mask, *out, ink[0], tmp1); + out++, mask += 4; + } + } + + } else { + + dx *= pixelsize; + sx = sx*4 + 3; + for (y = 0; y < ysize; y++) { + UINT8* out = (UINT8*) imOut->image[y+dy]+dx; + UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; + for (x = 0; x < xsize; x++) { + for (i = 0; i < pixelsize; i++) { + *out = PREBLEND(*mask, *out, ink[i], tmp1); + out++; + } + mask += 4; + } + } + } +} + +int +ImagingFill2(Imaging imOut, const void* ink, Imaging imMask, + int dx0, int dy0, int dx1, int dy1) +{ + ImagingSectionCookie cookie; + int xsize, ysize; + int pixelsize; + int sx0, sy0; + + if (!imOut || !ink) { + (void) ImagingError_ModeError(); + return -1; + } + + pixelsize = imOut->pixelsize; + + xsize = dx1 - dx0; + ysize = dy1 - dy0; + + if (imMask && (xsize != imMask->xsize || ysize != imMask->ysize)) { + (void) ImagingError_Mismatch(); + return -1; + } + + /* Determine which region to fill */ + sx0 = sy0 = 0; + if (dx0 < 0) + xsize += dx0, sx0 = -dx0, dx0 = 0; + if (dx0 + xsize > imOut->xsize) + xsize = imOut->xsize - dx0; + if (dy0 < 0) + ysize += dy0, sy0 = -dy0, dy0 = 0; + if (dy0 + ysize > imOut->ysize) + ysize = imOut->ysize - dy0; + + if (xsize <= 0 || ysize <= 0) + return 0; + + if (!imMask) { + ImagingSectionEnter(&cookie); + fill(imOut, ink, dx0, dy0, xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "1") == 0) { + ImagingSectionEnter(&cookie); + fill_mask_1(imOut, ink, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "L") == 0) { + ImagingSectionEnter(&cookie); + fill_mask_L(imOut, ink, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "RGBA") == 0) { + ImagingSectionEnter(&cookie); + fill_mask_RGBA(imOut, ink, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else if (strcmp(imMask->mode, "RGBa") == 0) { + ImagingSectionEnter(&cookie); + fill_mask_RGBa(imOut, ink, imMask, dx0, dy0, sx0, sy0, + xsize, ysize, pixelsize); + ImagingSectionLeave(&cookie); + + } else { + (void) ImagingError_ValueError("bad transparency mask"); + return -1; + } + + return 0; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c new file mode 100755 index 00000000000..b6898e301d1 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c @@ -0,0 +1,78 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for uncompressed PCD image data. + * + * history: + * 96-05-10 fl Created + * 96-05-18 fl New tables + * 97-01-25 fl Use PhotoYCC unpacker + * + * notes: + * This driver supports uncompressed PCD modes only + * (resolutions up to 768x512). + * + * Copyright (c) Fredrik Lundh 1996-97. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + int x; + int chunk; + UINT8* out; + UINT8* ptr; + + ptr = buf; + + chunk = 3 * state->xsize; + + for (;;) { + + /* We need data for two full lines before we can do anything */ + if (bytes < chunk) + return ptr - buf; + + /* Unpack first line */ + out = state->buffer; + for (x = 0; x < state->xsize; x++) { + out[0] = ptr[x]; + out[1] = ptr[(x+4*state->xsize)/2]; + out[2] = ptr[(x+5*state->xsize)/2]; + out += 4; + } + + state->shuffle((UINT8*) im->image[state->y], + state->buffer, state->xsize); + + if (++state->y >= state->ysize) + return -1; /* This can hardly happen */ + + /* Unpack second line */ + out = state->buffer; + for (x = 0; x < state->xsize; x++) { + out[0] = ptr[x+state->xsize]; + out[1] = ptr[(x+4*state->xsize)/2]; + out[2] = ptr[(x+5*state->xsize)/2]; + out += 4; + } + + state->shuffle((UINT8*) im->image[state->y], + state->buffer, state->xsize); + + if (++state->y >= state->ysize) + return -1; + + ptr += chunk; + bytes -= chunk; + + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c new file mode 100755 index 00000000000..ab82b23adcc --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c @@ -0,0 +1,75 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for PCX image data. + * + * history: + * 95-09-14 fl Created + * + * Copyright (c) Fredrik Lundh 1995. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +int +ImagingPcxDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8 n; + UINT8* ptr; + + ptr = buf; + + for (;;) { + + if (bytes < 1) + return ptr - buf; + + if ((*ptr & 0xC0) == 0xC0) { + + /* Run */ + if (bytes < 2) + return ptr - buf; + + n = ptr[0] & 0x3F; + + while (n > 0) { + if (state->x >= state->bytes) { + state->errcode = IMAGING_CODEC_OVERRUN; + break; + } + state->buffer[state->x++] = ptr[1]; + n--; + } + + ptr += 2; bytes -= 2; + + } else { + + /* Literal */ + state->buffer[state->x++] = ptr[0]; + ptr++; bytes--; + + } + + if (state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + } + + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c new file mode 100755 index 00000000000..87d59946388 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c @@ -0,0 +1,148 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * encoder for PCX data + * + * history: + * 99-02-07 fl created + * + * Copyright (c) Fredrik Lundh 1999. + * Copyright (c) Secret Labs AB 1999. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +enum { INIT, FETCH, ENCODE }; + +/* we're reusing "ystep" to store the last value */ +#define LAST ystep + +int +ImagingPcxEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8* ptr; + int this; + + ptr = buf; + + if (!state->state) { + + /* sanity check */ + if (state->xsize <= 0 || state->ysize <= 0) { + state->errcode = IMAGING_CODEC_END; + return 0; + } + + state->bytes = (state->xsize*state->bits + 7) / 8; + state->state = FETCH; + + } + + for (;;) + + switch (state->state) { + case FETCH: + + /* get a line of data */ + if (state->y >= state->ysize) { + state->errcode = IMAGING_CODEC_END; + return ptr - buf; + } + + state->shuffle(state->buffer, + (UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->xsize); + + state->y++; + + state->count = 1; + state->LAST = state->buffer[0]; + + state->x = 1; + + state->state = ENCODE; + /* fall through */ + + case ENCODE: + + /* compress this line */ + + /* when we arrive here, "count" contains the number of + bytes having the value of "LAST" that we've already + seen */ + + while (state->x < state->bytes) { + + if (state->count == 63) { + + /* this run is full; flush it */ + if (bytes < 2) + return ptr - buf; + *ptr++ = 0xff; + *ptr++ = state->LAST; + bytes -= 2; + + state->count = 0; + + } + + this = state->buffer[state->x]; + + if (this == state->LAST) { + + /* extend the current run */ + state->x++; + state->count++; + + } else { + + /* start a new run */ + if (state->count == 1 && (state->LAST < 0xc0)) { + if (bytes < 1) + return ptr - buf; + *ptr++ = state->LAST; + bytes--; + } else { + if (state->count > 0) { + if (bytes < 2) + return ptr - buf; + *ptr++ = 0xc0 | state->count; + *ptr++ = state->LAST; + bytes -= 2; + } + } + + state->LAST = this; + state->count = 1; + + state->x++; + + } + } + + /* end of line; flush the current run */ + if (state->count == 1 && (state->LAST < 0xc0)) { + if (bytes < 1) + return ptr - buf; + *ptr++ = state->LAST; + bytes--; + } else { + if (state->count > 0) { + if (bytes < 2) + return ptr - buf; + *ptr++ = 0xc0 | state->count; + *ptr++ = state->LAST; + bytes -= 2; + } + } + + /* read next line */ + state->state = FETCH; + break; + + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c new file mode 100755 index 00000000000..2593dca57ec --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c @@ -0,0 +1,263 @@ +/* + * The Python Imaging Library + * $Id$ + * + * point (pixel) translation + * + * history: + * 1995-11-27 fl Created + * 1996-03-31 fl Fixed colour support + * 1996-08-13 fl Support 8-bit to "1" thresholding + * 1997-05-31 fl Added floating point transform + * 1998-07-02 fl Added integer point transform + * 1998-07-17 fl Support L to anything lookup + * 2004-12-18 fl Refactored; added I to L lookup + * + * Copyright (c) 1997-2004 by Secret Labs AB. + * Copyright (c) 1995-2004 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +typedef struct { + const void* table; +} im_point_context; + +static void +im_point_8_8(Imaging imOut, Imaging imIn, im_point_context* context) +{ + int x, y; + /* 8-bit source, 8-bit destination */ + UINT8* table = (UINT8*) context->table; + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = imIn->image8[y]; + UINT8* out = imOut->image8[y]; + for (x = 0; x < imIn->xsize; x++) + out[x] = table[in[x]]; + } +} + +static void +im_point_2x8_2x8(Imaging imOut, Imaging imIn, im_point_context* context) +{ + int x, y; + /* 2x8-bit source, 2x8-bit destination */ + UINT8* table = (UINT8*) context->table; + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + for (x = 0; x < imIn->xsize; x++) { + out[0] = table[in[0]]; + out[3] = table[in[3]+256]; + in += 4; out += 4; + } + } +} + +static void +im_point_3x8_3x8(Imaging imOut, Imaging imIn, im_point_context* context) +{ + int x, y; + /* 3x8-bit source, 3x8-bit destination */ + UINT8* table = (UINT8*) context->table; + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + for (x = 0; x < imIn->xsize; x++) { + out[0] = table[in[0]]; + out[1] = table[in[1]+256]; + out[2] = table[in[2]+512]; + in += 4; out += 4; + } + } +} + +static void +im_point_4x8_4x8(Imaging imOut, Imaging imIn, im_point_context* context) +{ + int x, y; + /* 4x8-bit source, 4x8-bit destination */ + UINT8* table = (UINT8*) context->table; + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = (UINT8*) imIn->image[y]; + UINT8* out = (UINT8*) imOut->image[y]; + for (x = 0; x < imIn->xsize; x++) { + out[0] = table[in[0]]; + out[1] = table[in[1]+256]; + out[2] = table[in[2]+512]; + out[3] = table[in[3]+768]; + in += 4; out += 4; + } + } +} + +static void +im_point_8_32(Imaging imOut, Imaging imIn, im_point_context* context) +{ + int x, y; + /* 8-bit source, 32-bit destination */ + INT32* table = (INT32*) context->table; + for (y = 0; y < imIn->ysize; y++) { + UINT8* in = imIn->image8[y]; + INT32* out = imOut->image32[y]; + for (x = 0; x < imIn->xsize; x++) + out[x] = table[in[x]]; + } +} + +static void +im_point_32_8(Imaging imOut, Imaging imIn, im_point_context* context) +{ + int x, y; + /* 32-bit source, 8-bit destination */ + UINT8* table = (UINT8*) context->table; + for (y = 0; y < imIn->ysize; y++) { + INT32* in = imIn->image32[y]; + UINT8* out = imOut->image8[y]; + for (x = 0; x < imIn->xsize; x++) { + int v = in[x]; + if (v < 0) + v = 0; + else if (v > 65535) + v = 65535; + out[x] = table[v]; + } + } +} + +Imaging +ImagingPoint(Imaging imIn, const char* mode, const void* table) +{ + /* lookup table transform */ + + ImagingSectionCookie cookie; + Imaging imOut; + im_point_context context; + void (*point)(Imaging imIn, Imaging imOut, im_point_context* context); + + if (!imIn) + return (Imaging) ImagingError_ModeError(); + + if (!mode) + mode = imIn->mode; + + if (imIn->type != IMAGING_TYPE_UINT8) { + if (imIn->type != IMAGING_TYPE_INT32 || strcmp(mode, "L") != 0) + goto mode_mismatch; + } else if (!imIn->image8 && strcmp(imIn->mode, mode) != 0) + goto mode_mismatch; + + imOut = ImagingNew(mode, imIn->xsize, imIn->ysize); + if (!imOut) + return NULL; + + /* find appropriate handler */ + if (imIn->type == IMAGING_TYPE_UINT8) { + if (imIn->bands == imOut->bands && imIn->type == imOut->type) { + switch (imIn->bands) { + case 1: + point = im_point_8_8; + break; + case 2: + point = im_point_2x8_2x8; + break; + case 3: + point = im_point_3x8_3x8; + break; + case 4: + point = im_point_4x8_4x8; + break; + default: + /* this cannot really happen */ + point = im_point_8_8; + break; + } + } else + point = im_point_8_32; + } else + point = im_point_32_8; + + ImagingCopyInfo(imOut, imIn); + + ImagingSectionEnter(&cookie); + + context.table = table; + point(imOut, imIn, &context); + + ImagingSectionLeave(&cookie); + + return imOut; + + mode_mismatch: + return (Imaging) ImagingError_ValueError( + "point operation not supported for this mode" + ); +} + + +Imaging +ImagingPointTransform(Imaging imIn, double scale, double offset) +{ + /* scale/offset transform */ + + ImagingSectionCookie cookie; + Imaging imOut; + int x, y; + + if (!imIn || (strcmp(imIn->mode, "I") != 0 && + strcmp(imIn->mode, "I;16") != 0 && + strcmp(imIn->mode, "F") != 0)) + return (Imaging) ImagingError_ModeError(); + + imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); + if (!imOut) + return NULL; + + ImagingCopyInfo(imOut, imIn); + + switch (imIn->type) { + case IMAGING_TYPE_INT32: + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + INT32* in = imIn->image32[y]; + INT32* out = imOut->image32[y]; + /* FIXME: add clipping? */ + for (x = 0; x < imIn->xsize; x++) + out[x] = in[x] * scale + offset; + } + ImagingSectionLeave(&cookie); + break; + case IMAGING_TYPE_FLOAT32: + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + FLOAT32* in = (FLOAT32*) imIn->image32[y]; + FLOAT32* out = (FLOAT32*) imOut->image32[y]; + for (x = 0; x < imIn->xsize; x++) + out[x] = in[x] * scale + offset; + } + ImagingSectionLeave(&cookie); + break; + case IMAGING_TYPE_SPECIAL: + if (strcmp(imIn->mode,"I;16") == 0) { + ImagingSectionEnter(&cookie); + for (y = 0; y < imIn->ysize; y++) { + UINT16* in = (UINT16 *)imIn->image[y]; + UINT16* out = (UINT16 *)imOut->image[y]; + /* FIXME: add clipping? */ + for (x = 0; x < imIn->xsize; x++) + out[x] = in[x] * scale + offset; + } + ImagingSectionLeave(&cookie); + break; + } + /* FALL THROUGH */ + default: + ImagingDelete(imOut); + return (Imaging) ImagingError_ValueError("internal error"); + } + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c new file mode 100755 index 00000000000..1b76a6a0fab --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c @@ -0,0 +1,1610 @@ +/* + * The Python Imaging Library + * $Id$ + * + * image quantizer + * + * history: + * 1998-09-10 tjs Contributed + * 1998-12-29 fl Added to PIL 1.0b1 + * 2004-02-21 fl Fixed bogus free() on quantization error + * 2005-02-07 fl Limit number of colors to 256 + * + * Written by Toby J Sargeant . + * + * Copyright (c) 1998 by Toby J Sargeant + * Copyright (c) 1998-2004 by Secret Labs AB. All rights reserved. + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +#include +#include +#include +#include + +#include "Quant.h" + +#include "QuantDefines.h" +#include "QuantHash.h" +#include "QuantHeap.h" + +#define NO_OUTPUT + +typedef struct { + unsigned long scale; +} PixelHashData; + +typedef struct _PixelList { + struct _PixelList *next[3],*prev[3]; + Pixel p; + unsigned int flag:1; + int count; +} PixelList; + +typedef struct _BoxNode { + struct _BoxNode *l,*r; + PixelList *head[3],*tail[3]; + int axis; + int volume; + unsigned long pixelCount; +} BoxNode; + +#define _SQR(x) ((x)*(x)) +#define _DISTSQR(p1,p2) \ + _SQR((int)((p1)->c.r)-(int)((p2)->c.r))+ \ + _SQR((int)((p1)->c.g)-(int)((p2)->c.g))+ \ + _SQR((int)((p1)->c.b)-(int)((p2)->c.b)) + +#define MAX_HASH_ENTRIES 65536 + +#define PIXEL_HASH(r,g,b) \ + (((unsigned int)(r) )*463 ^ \ + ((unsigned int)(g)<< 8)*10069 ^ \ + ((unsigned int)(b)<<16)*64997) + +#define PIXEL_UNSCALE(p,q,s) \ + ((q)->c.r=(p)->c.r<<(s)), \ + ((q)->c.g=(p)->c.g<<(s)), \ + ((q)->c.b=(p)->c.b<<(s)) + +#define PIXEL_SCALE(p,q,s)\ + ((q)->c.r=(p)->c.r>>(s)), \ + ((q)->c.g=(p)->c.g>>(s)), \ + ((q)->c.b=(p)->c.b>>(s)) + +static unsigned long +unshifted_pixel_hash(const HashTable h, const void *p) +{ + Pixel *pixel=(Pixel *)&p; + unsigned long hash=PIXEL_HASH(pixel->c.r, + pixel->c.g, + pixel->c.b); + return hash; +} + +static int +unshifted_pixel_cmp(const HashTable h, const void *a, const void *b) +{ + Pixel *pixel1=(Pixel *)&a; + Pixel *pixel2=(Pixel *)&b; + if (pixel1->c.r==pixel2->c.r) { + if (pixel1->c.g==pixel2->c.g) { + if (pixel1->c.b==pixel2->c.b) { + return 0; + } else { + return (int)(pixel1->c.b)-(int)(pixel2->c.b); + } + } else { + return (int)(pixel1->c.g)-(int)(pixel2->c.g); + } + } else { + return (int)(pixel1->c.r)-(int)(pixel2->c.r); + } +} + +static unsigned long +pixel_hash(const HashTable h,const void *p) +{ + PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); + Pixel *pixel=(Pixel *)&p; + unsigned long hash=PIXEL_HASH(pixel->c.r>>d->scale, + pixel->c.g>>d->scale, + pixel->c.b>>d->scale); + return hash; +} + +static int +pixel_cmp(const HashTable h,const void *a,const void *b) +{ + PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); + Pixel *pixel1=(Pixel *)&a; + Pixel *pixel2=(Pixel *)&b; + unsigned long A,B; + A=PIXEL_HASH(pixel1->c.r>>d->scale, + pixel1->c.g>>d->scale, + pixel1->c.b>>d->scale); + B=PIXEL_HASH(pixel2->c.r>>d->scale, + pixel2->c.g>>d->scale, + pixel2->c.b>>d->scale); + return (A==B)?0:((Ascale=0; + timer=timer3=clock(); + for (i=0;iMAX_HASH_ENTRIES) { + d->scale++; +#ifndef NO_OUTPUT + printf ("rehashing - new scale: %d\n",(int)d->scale); +#endif + timer2=clock(); + hashtable_rehash_compute(hash,rehash_collide); + timer2=clock()-timer2; +#ifndef NO_OUTPUT + printf ("rehash took %f sec\n",timer2/(double)CLOCKS_PER_SEC); +#endif + timer+=timer2; + } + } +#ifndef NO_OUTPUT + printf ("inserts took %f sec\n",(clock()-timer)/(double)CLOCKS_PER_SEC); +#endif +#ifndef NO_OUTPUT + printf ("total %f sec\n",(clock()-timer3)/(double)CLOCKS_PER_SEC); +#endif + return hash; +} + +static void +destroy_pixel_hash(HashTable hash) +{ + PixelHashData *d=(PixelHashData *)hashtable_get_user_data(hash); + if (d) free(d); + hashtable_free(hash); +} + + +/* 1. hash quantized pixels. */ +/* 2. create R,G,B lists of sorted quantized pixels. */ +/* 3. median cut. */ +/* 4. build hash table from median cut boxes. */ +/* 5. for each pixel, compute entry in hash table, and hence median cut box. */ +/* 6. compute median cut box pixel averages. */ +/* 7. map each pixel to nearest average. */ + +static int +compute_box_volume(BoxNode *b) +{ + unsigned char rl,rh,gl,gh,bl,bh; + if (b->volume>=0) return b->volume; + if (!b->head[0]) { + b->volume=0; + } else { + rh=b->head[0]->p.c.r; + rl=b->tail[0]->p.c.r; + gh=b->head[1]->p.c.g; + gl=b->tail[1]->p.c.g; + bh=b->head[2]->p.c.b; + bl=b->tail[2]->p.c.b; + b->volume=(rh-rl+1)*(gh-gl+1)*(bh-bl+1); + } + return b->volume; +} + +static void +hash_to_list(HashTable h, const void *key, const void *val, void *u) +{ + PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); + PixelList **pl=(PixelList **)u; + PixelList *p; + Pixel *pixel=(Pixel *)&key; + int i; + Pixel q; + int count=*(int *)&val; + + PIXEL_SCALE(pixel,&q,d->scale); + + p=malloc(sizeof(PixelList)); + if (!p) return; + + p->flag=0; + p->p=q; + p->count=count; + for (i=0;i<3;i++) { + p->next[i]=pl[i]; + p->prev[i]=NULL; + if (pl[i]) pl[i]->prev[i]=p; + pl[i]=p; + } +} + +static PixelList * +mergesort_pixels(PixelList *head, int i) +{ + PixelList *c,*t,*a,*b,*p; + if (!head||!head->next[i]) { + if (head) { + head->next[i]=NULL; + head->prev[i]=NULL; + } + return head; + } + for (c=t=head;c&&t;c=c->next[i],t=(t->next[i])?t->next[i]->next[i]:NULL); + if (c) { + if (c->prev[i]) c->prev[i]->next[i]=NULL; + c->prev[i]=NULL; + } + a=mergesort_pixels(head,i); + b=mergesort_pixels(c,i); + head=NULL; + p=NULL; + while (a&&b) { + if (a->p.a.v[i]>b->p.a.v[i]) { + c=a; + a=a->next[i]; + } else { + c=b; + b=b->next[i]; + } + c->prev[i]=p; + c->next[i]=NULL; + if (p) p->next[i]=c; + p=c; + if (!head) head=c; + } + if (a) { + c->next[i]=a; + a->prev[i]=c; + } else if (b) { + c->next[i]=b; + b->prev[i]=c; + } + return head; +} + +#if defined(TEST_MERGESORT) || defined(TEST_SORTED) +static int +test_sorted(PixelList *pl[3]) +{ + int i,n,l; + PixelList *t; + + for(i=0;i<3;i++) { + n=0; + l=256; + for (t=pl[i];t;t=t->next[i]) { + if (lp.a.v[i]) return 0; + l=t->p.a.v[i]; + } + } + return 1; +} +#endif + +static int +box_heap_cmp(const Heap h, const void *A, const void *B) +{ + BoxNode *a=(BoxNode *)A; + BoxNode *b=(BoxNode *)B; + return (int)a->pixelCount-(int)b->pixelCount; +} + +#define LUMINANCE(p) (77*(p)->c.r+150*(p)->c.g+29*(p)->c.b) + +static int +splitlists(PixelList *h[3], + PixelList *t[3], + PixelList *nh[2][3], + PixelList *nt[2][3], + unsigned long nCount[2], + int axis, + unsigned long pixelCount) +{ + unsigned long left; + + PixelList *l,*r,*c,*n; + int i; + int nRight,nLeft; + int splitColourVal; + +#ifdef TEST_SPLIT + { + PixelList *_prevTest,*_nextTest; + int _i,_nextCount[3],_prevCount[3]; + for (_i=0;_i<3;_i++) { + for (_nextCount[_i]=0,_nextTest=h[_i];_nextTest&&_nextTest->next[_i];_nextTest=_nextTest->next[_i],_nextCount[_i]++); + for (_prevCount[_i]=0,_prevTest=t[_i];_prevTest&&_prevTest->prev[_i];_prevTest=_prevTest->prev[_i],_prevCount[_i]++); + if (_nextTest!=t[_i]) { + printf ("next-list of axis %d does not end at tail\n",_i); + exit(1); + } + if (_prevTest!=h[_i]) { + printf ("prev-list of axis %d does not end at head\n",_i); + exit(1); + } + for (;_nextTest&&_nextTest->prev[_i];_nextTest=_nextTest->prev[_i]); + for (;_prevTest&&_prevTest->next[_i];_prevTest=_prevTest->next[_i]); + if (_nextTest!=h[_i]) { + printf ("next-list of axis %d does not loop back to head\n",_i); + exit(1); + } + if (_prevTest!=t[_i]) { + printf ("prev-list of axis %d does not loop back to tail\n",_i); + exit(1); + } + } + for (_i=1;_i<3;_i++) { + if (_prevCount[_i]!=_prevCount[_i-1] || + _nextCount[_i]!=_nextCount[_i-1] || + _prevCount[_i]!=_nextCount[_i]) { + printf ("{%d %d %d} {%d %d %d}\n", + _prevCount[0], + _prevCount[1], + _prevCount[2], + _nextCount[0], + _nextCount[1], + _nextCount[2]); + exit(1); + } + } + } +#endif + nCount[0]=nCount[1]=0; + nLeft=nRight=0; + for (left=0,c=h[axis];c;) { + left=left+c->count; + nCount[0]+=c->count; + c->flag=0; + nLeft++; + c=c->next[axis]; + if (left*2>pixelCount) { + break; + } + } + if (c) { + splitColourVal=c->prev[axis]->p.a.v[axis]; + for (;c;c=c->next[axis]) { + if (splitColourVal!=c->p.a.v[axis]) { + break; + } + c->flag=0; + nLeft++; + nCount[0]+=c->count; + } + } + for (;c;c=c->next[axis]) { + c->flag=1; + nRight++; + nCount[1]+=c->count; + } + if (!nRight) { + for (c=t[axis],splitColourVal=t[axis]->p.a.v[axis];c;c=c->prev[axis]) { + if (splitColourVal!=c->p.a.v[axis]) { + break; + } + c->flag=1; + nRight++; + nLeft--; + nCount[0]-=c->count; + nCount[1]+=c->count; + } + } +#ifndef NO_OUTPUT + if (!nLeft) { + for (c=h[axis];c;c=c->next[axis]) { + printf ("[%d %d %d]\n",c->p.c.r,c->p.c.g,c->p.c.b); + } + printf ("warning... trivial split\n"); + } +#endif + + for (i=0;i<3;i++) { + l=r=NULL; + nh[0][i]=nt[0][i]=NULL; + nh[1][i]=nt[1][i]=NULL; + for (c=h[i];c;c=n) { + n=c->next[i]; + if (c->flag) { /* move pixel to right list*/ + if (r) r->next[i]=c; else nh[1][i]=c; + c->prev[i]=r; + r=c; + } else { /* move pixel to left list */ + if (l) l->next[i]=c; else nh[0][i]=c; + c->prev[i]=l; + l=c; + } + } + if (l) l->next[i]=NULL; + if (r) r->next[i]=NULL; + nt[0][i]=l; + nt[1][i]=r; + } + return 1; +} + +static int +split(BoxNode *node) +{ + unsigned char rl,rh,gl,gh,bl,bh; + int f[3]; + int best,axis; + int i; + PixelList *heads[2][3]; + PixelList *tails[2][3]; + unsigned long newCounts[2]; + BoxNode *left,*right; + + rh=node->head[0]->p.c.r; + rl=node->tail[0]->p.c.r; + gh=node->head[1]->p.c.g; + gl=node->tail[1]->p.c.g; + bh=node->head[2]->p.c.b; + bl=node->tail[2]->p.c.b; +#ifdef TEST_SPLIT + printf ("splitting node [%d %d %d] [%d %d %d] ",rl,gl,bl,rh,gh,bh); +#endif + f[0]=(rh-rl)*77; + f[1]=(gh-gl)*150; + f[2]=(bh-bl)*29; + + best=f[0]; + axis=0; + for (i=1;i<3;i++) { + if (besttail[_i]->next[_i]) { + printf ("tail is not tail\n"); + printf ("node->tail[%d]->next[%d]=%p\n",_i,_i,node->tail[_i]->next[_i]); + } + if (node->head[_i]->prev[_i]) { + printf ("head is not head\n"); + printf ("node->head[%d]->prev[%d]=%p\n",_i,_i,node->head[_i]->prev[_i]); + } + } + + for (_i=0;_i<3;_i++) { + for (_nextCount[_i]=0,_nextTest=node->head[_i];_nextTest&&_nextTest->next[_i];_nextTest=_nextTest->next[_i],_nextCount[_i]++); + for (_prevCount[_i]=0,_prevTest=node->tail[_i];_prevTest&&_prevTest->prev[_i];_prevTest=_prevTest->prev[_i],_prevCount[_i]++); + if (_nextTest!=node->tail[_i]) { + printf ("next-list of axis %d does not end at tail\n",_i); + } + if (_prevTest!=node->head[_i]) { + printf ("prev-list of axis %d does not end at head\n",_i); + } + for (;_nextTest&&_nextTest->prev[_i];_nextTest=_nextTest->prev[_i]); + for (;_prevTest&&_prevTest->next[_i];_prevTest=_prevTest->next[_i]); + if (_nextTest!=node->head[_i]) { + printf ("next-list of axis %d does not loop back to head\n",_i); + } + if (_prevTest!=node->tail[_i]) { + printf ("prev-list of axis %d does not loop back to tail\n",_i); + } + } + for (_i=1;_i<3;_i++) { + if (_prevCount[_i]!=_prevCount[_i-1] || + _nextCount[_i]!=_nextCount[_i-1] || + _prevCount[_i]!=_nextCount[_i]) { + printf ("{%d %d %d} {%d %d %d}\n", + _prevCount[0], + _prevCount[1], + _prevCount[2], + _nextCount[0], + _nextCount[1], + _nextCount[2]); + } + } + } +#endif + node->axis=axis; + if (!splitlists(node->head, + node->tail, + heads, + tails, + newCounts, + axis, + node->pixelCount)) { +#ifndef NO_OUTPUT + printf ("list split failed.\n"); +#endif + return 0; + } +#ifdef TEST_SPLIT + if (!test_sorted(heads[0])) { + printf ("bug in split"); + exit(1); + } + if (!test_sorted(heads[1])) { + printf ("bug in split"); + exit(1); + } +#endif + left=malloc(sizeof(BoxNode)); + right=malloc(sizeof(BoxNode)); + if (!left||!right) { + return 0; + } + for(i=0;i<3;i++) { + left->head[i]=heads[0][i]; + left->tail[i]=tails[0][i]; + right->head[i]=heads[1][i]; + right->tail[i]=tails[1][i]; + node->head[i]=NULL; + node->tail[i]=NULL; + } +#ifdef TEST_SPLIT + if (left->head[0]) { + rh=left->head[0]->p.c.r; + rl=left->tail[0]->p.c.r; + gh=left->head[1]->p.c.g; + gl=left->tail[1]->p.c.g; + bh=left->head[2]->p.c.b; + bl=left->tail[2]->p.c.b; + printf (" left node [%3d %3d %3d] [%3d %3d %3d]\n",rl,gl,bl,rh,gh,bh); + } + if (right->head[0]) { + rh=right->head[0]->p.c.r; + rl=right->tail[0]->p.c.r; + gh=right->head[1]->p.c.g; + gl=right->tail[1]->p.c.g; + bh=right->head[2]->p.c.b; + bl=right->tail[2]->p.c.b; + printf (" right node [%3d %3d %3d] [%3d %3d %3d]\n",rl,gl,bl,rh,gh,bh); + } +#endif + left->l=left->r=NULL; + right->l=right->r=NULL; + left->axis=right->axis=-1; + left->volume=right->volume=-1; + left->pixelCount=newCounts[0]; + right->pixelCount=newCounts[1]; + node->l=left; + node->r=right; + return 1; +} + +static BoxNode * +median_cut(PixelList *hl[3], + unsigned long imPixelCount, + int nPixels) +{ + PixelList *tl[3]; + int i; + BoxNode *root; + Heap h; + BoxNode *thisNode; + + h=ImagingQuantHeapNew(box_heap_cmp); + root=malloc(sizeof(BoxNode)); + if (!root) { ImagingQuantHeapFree(h); return NULL; } + for(i=0;i<3;i++) { + for (tl[i]=hl[i];tl[i]&&tl[i]->next[i];tl[i]=tl[i]->next[i]); + root->head[i]=hl[i]; + root->tail[i]=tl[i]; + } + root->l=root->r=NULL; + root->axis=-1; + root->volume=-1; + root->pixelCount=imPixelCount; + + ImagingQuantHeapAdd(h,(void *)root); + while (--nPixels) { + do { + if (!ImagingQuantHeapRemove(h,(void **)&thisNode)) { + goto done; + } + } while (compute_box_volume(thisNode)==1); + if (!split(thisNode)) { +#ifndef NO_OUTPUT + printf ("Oops, split failed...\n"); +#endif + exit (1); + } + ImagingQuantHeapAdd(h,(void *)(thisNode->l)); + ImagingQuantHeapAdd(h,(void *)(thisNode->r)); + } +done: + ImagingQuantHeapFree(h); + return root; +} + +static void +free_box_tree(BoxNode *n) +{ + PixelList *p,*pp; + if (n->l) free_box_tree(n->l); + if (n->r) free_box_tree(n->r); + for (p=n->head[0];p;p=pp) { + pp=p->next[0]; + free(p); + } + free(n); +} + +#ifdef TEST_SPLIT_INTEGRITY +static int +checkContained(BoxNode *n,Pixel *pp) +{ + if (n->l&&n->r) { + return checkContained(n->l,pp)+checkContained(n->r,pp); + } + if (n->l||n->r) { +#ifndef NO_OUTPUT + printf ("box tree is dead\n"); +#endif + return 0; + } + if ( + pp->c.r<=n->head[0]->p.c.r && + pp->c.r>=n->tail[0]->p.c.r && + pp->c.g<=n->head[1]->p.c.g && + pp->c.g>=n->tail[1]->p.c.g && + pp->c.b<=n->head[2]->p.c.b && + pp->c.b>=n->tail[2]->p.c.b) { + return 1; + } + return 0; +} +#endif + +static int +annotate_hash_table(BoxNode *n,HashTable h,unsigned long *box) +{ + PixelList *p; + PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); + Pixel q; + if (n->l&&n->r) { + return annotate_hash_table(n->l,h,box) && annotate_hash_table(n->r,h,box); + } + if (n->l||n->r) { +#ifndef NO_OUTPUT + printf ("box tree is dead\n"); +#endif + return 0; + } + for (p=n->head[0];p;p=p->next[0]) { + PIXEL_UNSCALE(&(p->p),&q,d->scale); + if (!hashtable_insert(h,(void *)q.v,(void *)*box)) { +#ifndef NO_OUTPUT + printf ("hashtable insert failed\n"); +#endif + return 0; + } + } + if (n->head[0]) (*box)++; + return 1; +} + +static int +_sort_ulong_ptr_keys(const void *a, const void *b) +{ + unsigned long A=**(unsigned long **)a; + unsigned long B=**(unsigned long **)b; + return (A==B)?0:((A*(skRow[k]));k--) { + skRow[k]=skRow[k-1]; + } + if (k!=j) skRow[k]=skElt; + } + } + return 1; +} + +static int +build_distance_tables(unsigned long *avgDist, + unsigned long **avgDistSortKey, + Pixel *p, + unsigned long nEntries) +{ + unsigned long i,j; + + for (i=0;i1) { + printf ("pixel in two boxes\n"); + for(i=0;i<3;i++) free (avg[i]); + free(count); + return 0; + } +#endif + if (!hashtable_lookup(medianBoxHash,(void *)pixelData[i].v,(void **)&paletteEntry)) { +#ifndef NO_OUTPUT + printf ("pixel lookup failed\n"); +#endif + for(i=0;i<3;i++) free (avg[i]); + free(count); + return 0; + } + if (paletteEntry>=nPaletteEntries) { +#ifndef NO_OUTPUT + printf ("panic - paletteEntry>=nPaletteEntries (%d>=%d)\n",(int)paletteEntry,(int)nPaletteEntries); +#endif + for(i=0;i<3;i++) free (avg[i]); + free(count); + return 0; + } + avg[0][paletteEntry]+=pixelData[i].c.r; + avg[1][paletteEntry]+=pixelData[i].c.g; + avg[2][paletteEntry]+=pixelData[i].c.b; + count[paletteEntry]++; + } + p=malloc(sizeof(Pixel)*nPaletteEntries); + if (!p) { + for(i=0;i<3;i++) free (avg[i]); + free(count); + return 0; + } + for (i=0;i=nPaletteEntries) { +#ifndef NO_OUTPUT + printf ("scream\n"); +#endif + return 0; + } + avg[0][qp[i]]+=pixelData[i].c.r; + avg[1][qp[i]]+=pixelData[i].c.g; + avg[2][qp[i]]+=pixelData[i].c.b; + count[qp[i]]++; + } + for (i=0;i + { + unsigned long bestmatch,bestdist,dist; + HashTable h2; + printf ("nearest neighbour search (full search)..."); fflush(stdout); timer=clock(); + h2=hashtable_new(unshifted_pixel_hash,unshifted_pixel_cmp); + for (i=0;inew),pixel); + if (data->secondPixel || newDistdata->furthestDistance) { + data->furthestDistance=oldDist; + data->furthest.v=pixel->v; + } +} + +int +quantize2(Pixel *pixelData, + unsigned long nPixels, + unsigned long nQuantPixels, + Pixel **palette, + unsigned long *paletteLength, + unsigned long **quantizedPixels, + int kmeans) +{ + HashTable h; + unsigned long i; + unsigned long mean[3]; + Pixel *p; + DistanceData data; + + unsigned long *qp; + unsigned long *avgDist; + unsigned long **avgDistSortKey; + + p=malloc(sizeof(Pixel)*nQuantPixels); + if (!p) return 0; + mean[0]=mean[1]=mean[2]=0; + h=hashtable_new(unshifted_pixel_hash,unshifted_pixel_cmp); + for (i=0;i 256) + /* FIXME: for colors > 256, consider returning an RGB image + instead (see @PIL205) */ + return (Imaging) ImagingError_ValueError("bad number of colors"); + + if (strcmp(im->mode, "L") != 0 && strcmp(im->mode, "P") != 0 && + strcmp(im->mode, "RGB")) + return ImagingError_ModeError(); + + p = malloc(sizeof(Pixel) * im->xsize * im->ysize); + if (!p) + return ImagingError_MemoryError(); + + /* collect statistics */ + + /* FIXME: maybe we could load the hash tables directly from the + image data? */ + + if (!strcmp(im->mode, "L")) { + /* greyscale */ + + /* FIXME: converting a "L" image to "P" with 256 colors + should be done by a simple copy... */ + + for (i = y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++, i++) + p[i].c.r = p[i].c.g = p[i].c.b = im->image8[y][x]; + + } else if (!strcmp(im->mode, "P")) { + /* palette */ + + pp = im->palette->palette; + + for (i = y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++, i++) { + v = im->image8[y][x]; + p[i].c.r = pp[v*4+0]; + p[i].c.g = pp[v*4+1]; + p[i].c.b = pp[v*4+2]; + } + + } else if (!strcmp(im->mode, "RGB")) { + /* true colour */ + + for (i = y = 0; y < im->ysize; y++) + for (x = 0; x < im->xsize; x++, i++) + p[i].v = im->image32[y][x]; + + } else { + free(p); + return (Imaging) ImagingError_ValueError("internal error"); + } + + switch (mode) { + case 0: + /* median cut */ + result = quantize( + p, + im->xsize*im->ysize, + colors, + &palette, + &paletteLength, + &newData, + kmeans + ); + break; + case 1: + /* maximum coverage */ + result = quantize2( + p, + im->xsize*im->ysize, + colors, + &palette, + &paletteLength, + &newData, + kmeans + ); + break; + default: + result = 0; + break; + } + + free(p); + + if (result) { + + imOut = ImagingNew("P", im->xsize, im->ysize); + + for (i = y = 0; y < im->ysize; y++) + for (x=0; x < im->xsize; x++) + imOut->image8[y][x] = (unsigned char) newData[i++]; + + free(newData); + + pp = imOut->palette->palette; + + for (i = j = 0; i < (int) paletteLength; i++) { + *pp++ = palette[i].c.r; + *pp++ = palette[i].c.g; + *pp++ = palette[i].c.b; + *pp++ = 255; + } + for (; i < 256; i++) { + *pp++ = 0; + *pp++ = 0; + *pp++ = 0; + *pp++ = 255; + } + + free(palette); + + return imOut; + + } else { + + return (Imaging) ImagingError_ValueError("quantization error"); + + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h new file mode 100755 index 00000000000..0de485a1a1a --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h @@ -0,0 +1,40 @@ +/* + * The Python Imaging Library + * $Id$ + * + * image quantizer + * + * Written by Toby J Sargeant . + * + * See the README file for information on usage and redistribution. + */ + +#ifndef __QUANT_H__ +#define __QUANT_H__ + +typedef union { + struct { + unsigned char r,g,b,a; + } c; + struct { + unsigned char v[4]; + } a; + unsigned long v; +} Pixel; + +int quantize(Pixel *, + unsigned long, + unsigned long, + Pixel **, + unsigned long *, + unsigned long **, + int); + +int quantize2(Pixel *, + unsigned long, + unsigned long, + Pixel **, + unsigned long *, + unsigned long **, + int); +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h new file mode 100755 index 00000000000..5b080104e1a --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h @@ -0,0 +1,25 @@ +/* + * The Python Imaging Library + * $Id$ + * + * image quantizer + * + * Written by Toby J Sargeant . + * + * See the README file for information on usage and redistribution. + */ + +#ifndef __DEFINES_H__ +#define __DEFINES_H__ + +#if 0 + +void *newMalloc(size_t,const char *,const char *,int); +void newFree(void *,const char *,const char *,int); +void print_malloc_stats(); +#define malloc(x) newMalloc(x,__FILE__,__FUNCTION__,__LINE__) +#define free(x) newFree(x,__FILE__,__FUNCTION__,__LINE__) + +#endif + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c new file mode 100755 index 00000000000..e6438402dd7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c @@ -0,0 +1,477 @@ +/* + * The Python Imaging Library + * $Id$ + * + * hash tables used by the image quantizer + * + * history: + * 98-09-10 tjs Contributed + * 98-12-29 fl Added to PIL 1.0b1 + * + * Written by Toby J Sargeant . + * + * Copyright (c) 1998 by Toby J Sargeant + * Copyright (c) 1998 by Secret Labs AB + * + * See the README file for information on usage and redistribution. + */ + +#include +#include +#include +#include + +#include "QuantHash.h" +#include "QuantDefines.h" + +typedef struct _IntHashNode { + struct _IntHashNode *next; + void *key,*value; +} IntHashNode; + +typedef struct _IntHashTable { + IntHashNode **table; + unsigned long length; + unsigned long count; + HashFunc hashFunc; + HashCmpFunc cmpFunc; + DestroyFunc keyDestroyFunc; + DestroyFunc valDestroyFunc; + void *userData; +} IntHashTable; + +#define MIN_LENGTH 11 +#define RESIZE_FACTOR 3 + +static int _hashtable_insert_node(IntHashTable *,IntHashNode *,int,int,CollisionFunc); +#if 0 +static int _hashtable_test(IntHashTable *); +#endif + +HashTable hashtable_new(HashFunc hf,HashCmpFunc cf) { + IntHashTable *h; + h=malloc(sizeof(IntHashTable)); + if (!h) { return NULL; } + h->hashFunc=hf; + h->cmpFunc=cf; + h->keyDestroyFunc=NULL; + h->valDestroyFunc=NULL; + h->length=MIN_LENGTH; + h->count=0; + h->userData=NULL; + h->table=malloc(sizeof(IntHashNode *)*h->length); + if (!h->table) { free(h); return NULL; } + memset (h->table,0,sizeof(IntHashNode *)*h->length); + return (HashTable)h; +} + +static void _hashtable_destroy(HashTable H,const void *key,const void *val,void *u) { + IntHashTable *h=(IntHashTable *)H; + if (h->keyDestroyFunc&&key) { + h->keyDestroyFunc((HashTable)h,(void *)key); + } + if (h->valDestroyFunc&&val) { + h->valDestroyFunc((HashTable)h,(void *)val); + } +} + +static unsigned long _findPrime(unsigned long start,int dir) { + static int unit[]={0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0}; + unsigned long t; + while (start>1) { + if (!unit[start&0x0f]) { + start+=dir; + continue; + } + for (t=2;t=sqrt((double)start)) { + break; + } + start+=dir; + } + return start; +} + +static void _hashtable_rehash(IntHashTable *h, + CollisionFunc cf, + unsigned long newSize) { + IntHashNode **oldTable=h->table; + unsigned long i; + IntHashNode *n,*nn; + unsigned long oldSize; + oldSize=h->length; + h->table=malloc(sizeof(IntHashNode *)*newSize); + if (!h->table) { + h->table=oldTable; + return; + } + h->length=newSize; + h->count=0; + memset (h->table,0,sizeof(IntHashNode *)*h->length); + for (i=0;inext; + _hashtable_insert_node(h,n,0,0,cf); + } + } + free(oldTable); +} + +static void _hashtable_resize(IntHashTable *h) { + unsigned long newSize; + unsigned long oldSize; + oldSize=h->length; + newSize=oldSize; + if (h->count*RESIZE_FACTORlength) { + newSize=_findPrime(h->length/2-1,-1); + } else if (h->length*RESIZE_FACTORcount) { + newSize=_findPrime(h->length*2+1,+1); + } + if (newSizelength;i++) { + for (n=h->table[i];n&&n->next;n=n->next) { + j=h->cmpFunc((HashTable)h,n->key,n->next->key); + printf ("%c",j?(j<0?'-':'+'):'='); + } + printf ("\n"); + } + return 0; +} +#endif + +static int _hashtable_insert_node(IntHashTable *h,IntHashNode *node,int resize,int update,CollisionFunc cf) { + unsigned long hash=h->hashFunc((HashTable)h,node->key)%h->length; + IntHashNode **n,*nv; + int i; + + for (n=&(h->table[hash]);*n;n=&((*n)->next)) { + nv=*n; + i=h->cmpFunc((HashTable)h,nv->key,node->key); + if (!i) { + if (cf) { + nv->key=node->key; + cf((HashTable)h,&(nv->key),&(nv->value),node->key,node->value); + free(node); + return 1; + } else { + if (h->valDestroyFunc) { + h->valDestroyFunc((HashTable)h,nv->value); + } + if (h->keyDestroyFunc) { + h->keyDestroyFunc((HashTable)h,nv->key); + } + nv->key=node->key; + nv->value=node->value; + free(node); + return 1; + } + } else if (i>0) { + break; + } + } + if (!update) { + node->next=*n; + *n=node; + h->count++; + if (resize) _hashtable_resize(h); + return 1; + } else { + return 0; + } +} + +static int _hashtable_insert(IntHashTable *h,void *key,void *val,int resize,int update) { + IntHashNode **n,*nv; + IntHashNode *t; + int i; + unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; + + for (n=&(h->table[hash]);*n;n=&((*n)->next)) { + nv=*n; + i=h->cmpFunc((HashTable)h,nv->key,key); + if (!i) { + if (h->valDestroyFunc) { h->valDestroyFunc((HashTable)h,nv->value); } + nv->value=val; + return 1; + } else if (i>0) { + break; + } + } + if (!update) { + t=malloc(sizeof(IntHashNode)); + if (!t) return 0; + t->next=*n; + *n=t; + t->key=key; + t->value=val; + h->count++; + if (resize) _hashtable_resize(h); + return 1; + } else { + return 0; + } +} + +static int _hashtable_lookup_or_insert(IntHashTable *h,void *key,void **retVal,void *newVal,int resize) { + IntHashNode **n,*nv; + IntHashNode *t; + int i; + unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; + + for (n=&(h->table[hash]);*n;n=&((*n)->next)) { + nv=*n; + i=h->cmpFunc((HashTable)h,nv->key,key); + if (!i) { + *retVal=nv->value; + return 1; + } else if (i>0) { + break; + } + } + t=malloc(sizeof(IntHashNode)); + if (!t) return 0; + t->next=*n; + *n=t; + t->key=key; + t->value=newVal; + *retVal=newVal; + h->count++; + if (resize) _hashtable_resize(h); + return 1; +} + +int hashtable_insert_or_update_computed(HashTable H, + void *key, + ComputeFunc newFunc, + ComputeFunc existsFunc) { + IntHashTable *h=(IntHashTable *)H; + IntHashNode **n,*nv; + IntHashNode *t; + int i; + unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; + + for (n=&(h->table[hash]);*n;n=&((*n)->next)) { + nv=*n; + i=h->cmpFunc((HashTable)h,nv->key,key); + if (!i) { + void *old=nv->value; + if (existsFunc) { + existsFunc(H,nv->key,&(nv->value)); + if (nv->value!=old) { + if (h->valDestroyFunc) { + h->valDestroyFunc((HashTable)h,old); + } + } + } else { + return 0; + } + return 1; + } else if (i>0) { + break; + } + } + t=malloc(sizeof(IntHashNode)); + if (!t) return 0; + t->key=key; + t->next=*n; + *n=t; + if (newFunc) { + newFunc(H,t->key,&(t->value)); + } else { + free(t); + return 0; + } + h->count++; + _hashtable_resize(h); + return 1; +} + +int hashtable_update(HashTable H,void *key,void *val) { + IntHashTable *h=(IntHashTable *)H; + return _hashtable_insert(h,key,val,1,0); +} + +int hashtable_insert(HashTable H,void *key,void *val) { + IntHashTable *h=(IntHashTable *)H; + return _hashtable_insert(h,key,val,1,0); +} + +void hashtable_foreach_update(HashTable H,IteratorUpdateFunc i,void *u) { + IntHashTable *h=(IntHashTable *)H; + IntHashNode *n; + unsigned long x; + + if (h->table) { + for (x=0;xlength;x++) { + for (n=h->table[x];n;n=n->next) { + i((HashTable)h,n->key,(void **)&(n->value),u); + } + } + } +} + +void hashtable_foreach(HashTable H,IteratorFunc i,void *u) { + IntHashTable *h=(IntHashTable *)H; + IntHashNode *n; + unsigned long x; + + if (h->table) { + for (x=0;xlength;x++) { + for (n=h->table[x];n;n=n->next) { + i((HashTable)h,n->key,n->value,u); + } + } + } +} + +void hashtable_free(HashTable H) { + IntHashTable *h=(IntHashTable *)H; + IntHashNode *n,*nn; + unsigned long i; + + if (h->table) { + if (h->keyDestroyFunc || h->keyDestroyFunc) { + hashtable_foreach(H,_hashtable_destroy,NULL); + } + for (i=0;ilength;i++) { + for (n=h->table[i];n;n=nn) { + nn=n->next; + free(n); + } + } + free(h->table); + } + free(h); +} + +DestroyFunc hashtable_set_value_destroy_func(HashTable H,DestroyFunc d) { + IntHashTable *h=(IntHashTable *)H; + DestroyFunc r=h->valDestroyFunc; + h->valDestroyFunc=d; + return r; +} + +DestroyFunc hashtable_set_key_destroy_func(HashTable H,DestroyFunc d) { + IntHashTable *h=(IntHashTable *)H; + DestroyFunc r=h->keyDestroyFunc; + h->keyDestroyFunc=d; + return r; +} + +static int _hashtable_remove(IntHashTable *h, + const void *key, + void **keyRet, + void **valRet, + int resize) { + unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; + IntHashNode *n,*p; + int i; + + for (p=NULL,n=h->table[hash];n;p=n,n=n->next) { + i=h->cmpFunc((HashTable)h,n->key,key); + if (!i) { + if (p) p=n->next; else h->table[hash]=n->next; + *keyRet=n->key; + *valRet=n->value; + free(n); + h->count++; + return 1; + } else if (i>0) { + break; + } + } + return 0; +} + +static int _hashtable_delete(IntHashTable *h,const void *key,int resize) { + unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; + IntHashNode *n,*p; + int i; + + for (p=NULL,n=h->table[hash];n;p=n,n=n->next) { + i=h->cmpFunc((HashTable)h,n->key,key); + if (!i) { + if (p) p=n->next; else h->table[hash]=n->next; + if (h->valDestroyFunc) { h->valDestroyFunc((HashTable)h,n->value); } + if (h->keyDestroyFunc) { h->keyDestroyFunc((HashTable)h,n->key); } + free(n); + h->count++; + return 1; + } else if (i>0) { + break; + } + } + return 0; +} + +int hashtable_remove(HashTable H,const void *key,void **keyRet,void **valRet) { + IntHashTable *h=(IntHashTable *)H; + return _hashtable_remove(h,key,keyRet,valRet,1); +} + +int hashtable_delete(HashTable H,const void *key) { + IntHashTable *h=(IntHashTable *)H; + return _hashtable_delete(h,key,1); +} + +void hashtable_rehash_compute(HashTable H,CollisionFunc cf) { + IntHashTable *h=(IntHashTable *)H; + _hashtable_rehash(h,cf,h->length); +} + +void hashtable_rehash(HashTable H) { + IntHashTable *h=(IntHashTable *)H; + _hashtable_rehash(h,NULL,h->length); +} + +int hashtable_lookup_or_insert(HashTable H,void *key,void **valp,void *val) { + IntHashTable *h=(IntHashTable *)H; + return _hashtable_lookup_or_insert(h,key,valp,val,1); +} + +int hashtable_lookup(const HashTable H,const void *key,void **valp) { + IntHashTable *h=(IntHashTable *)H; + unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; + IntHashNode *n; + int i; + + for (n=h->table[hash];n;n=n->next) { + i=h->cmpFunc((HashTable)h,n->key,key); + if (!i) { + *valp=n->value; + return 1; + } else if (i>0) { + break; + } + } + return 0; +} + +unsigned long hashtable_get_count(const HashTable H) { + IntHashTable *h=(IntHashTable *)H; + return h->count; +} + +void *hashtable_get_user_data(const HashTable H) { + IntHashTable *h=(IntHashTable *)H; + return h->userData; +} + +void *hashtable_set_user_data(HashTable H,void *data) { + IntHashTable *h=(IntHashTable *)H; + void *r=h->userData; + h->userData=data; + return r; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h new file mode 100755 index 00000000000..b98b56eaa4c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h @@ -0,0 +1,36 @@ +/* + * The Python Imaging Library + * $Id$ + * + * image quantizer + * + * Written by Toby J Sargeant . + * + * See the README file for information on usage and redistribution. + */ + +#ifndef __HASH_H__ +#define __HASH_H__ + +#include "QuantTypes.h" + +HashTable hashtable_new(HashFunc,HashCmpFunc); +void hashtable_free(HashTable); +void hashtable_foreach(HashTable,IteratorFunc,void *); +void hashtable_foreach_update(HashTable,IteratorUpdateFunc,void *); +int hashtable_insert(HashTable,void *,void *); +int hashtable_update(HashTable,void *,void *); +int hashtable_lookup(const HashTable,const void *,void **); +int hashtable_lookup_or_insert(HashTable,void *,void **,void *); +int hashtable_insert_or_update_computed(HashTable,void *,ComputeFunc,ComputeFunc); +int hashtable_delete(HashTable,const void *); +int hashtable_remove(HashTable,const void *,void **,void **); +void *hashtable_set_user_data(HashTable,void *); +void *hashtable_get_user_data(const HashTable); +DestroyFunc hashtable_set_key_destroy_func(HashTable,DestroyFunc); +DestroyFunc hashtable_set_value_destroy_func(HashTable,DestroyFunc); +unsigned long hashtable_get_count(const HashTable); +void hashtable_rehash(HashTable); +void hashtable_rehash_compute(HashTable,CollisionFunc); + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c new file mode 100755 index 00000000000..9332a5cd71f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c @@ -0,0 +1,150 @@ +/* + * The Python Imaging Library + * $Id$ + * + * heap data type used by the image quantizer + * + * history: + * 98-09-10 tjs Contributed + * 98-12-29 fl Added to PIL 1.0b1 + * + * Written by Toby J Sargeant . + * + * Copyright (c) 1998 by Toby J Sargeant + * Copyright (c) 1998 by Secret Labs AB + * + * See the README file for information on usage and redistribution. + */ + +#include +#include +#include +#include + +#include "QuantHash.h" +#include "QuantDefines.h" + +typedef struct { + void **heap; + int heapsize; + int heapcount; + HeapCmpFunc cf; +} IntHeap; + +#define INITIAL_SIZE 256 + +#define DEBUG + +#ifdef DEBUG +static int _heap_test(Heap); +#endif + +void ImagingQuantHeapFree(Heap H) { + IntHeap *h=(IntHeap *)H; + free(h->heap); + free(h); +} + +static int _heap_grow(IntHeap *h,int newsize) { + void *newheap; + if (!newsize) newsize=h->heapsize<<1; + if (newsizeheapsize) return 0; + newheap=malloc(sizeof(void *)*newsize); + if (!newheap) return 0; + memcpy(newheap,h->heap,sizeof(void *)*h->heapsize); + free(h->heap); + h->heap=newheap; + h->heapsize=newsize; + return 1; +} + +#ifdef DEBUG +static int _heap_test(Heap H) { + IntHeap *h=(IntHeap *)H; + int k; + for (k=1;k*2<=h->heapcount;k++) { + if (h->cf(H,h->heap[k],h->heap[k*2])<0) { + printf ("heap is bad\n"); + return 0; + } + if (k*2+1<=h->heapcount && h->cf(H,h->heap[k],h->heap[k*2+1])<0) { + printf ("heap is bad\n"); + return 0; + } + } + return 1; +} +#endif + +int ImagingQuantHeapRemove(Heap H,void **r) { + IntHeap *h=(IntHeap *)H; + int k,l; + void *v; + + if (!h->heapcount) { + return 0; + } + *r=h->heap[1]; + v=h->heap[h->heapcount--]; + for (k=1;k*2<=h->heapcount;k=l) { + l=k*2; + if (lheapcount) { + if (h->cf(H,h->heap[l],h->heap[l+1])<0) { + l++; + } + } + if (h->cf(H,v,h->heap[l])>0) { + break; + } + h->heap[k]=h->heap[l]; + } + h->heap[k]=v; +#ifdef DEBUG + if (!_heap_test(H)) { printf ("oops - heap_remove messed up the heap\n"); exit(1); } +#endif + return 1; +} + +int ImagingQuantHeapAdd(Heap H,void *val) { + IntHeap *h=(IntHeap *)H; + int k; + if (h->heapcount==h->heapsize-1) { + _heap_grow(h,0); + } + k=++h->heapcount; + while (k!=1) { + if (h->cf(H,val,h->heap[k/2])<=0) { + break; + } + h->heap[k]=h->heap[k/2]; + k>>=1; + } + h->heap[k]=val; +#ifdef DEBUG + if (!_heap_test(H)) { printf ("oops - heap_add messed up the heap\n"); exit(1); } +#endif + return 1; +} + +int ImagingQuantHeapTop(Heap H,void **r) { + IntHeap *h=(IntHeap *)H; + if (!h->heapcount) { + return 0; + } + *r=h->heap[1]; + return 1; +} + +Heap *ImagingQuantHeapNew(HeapCmpFunc cf) { + IntHeap *h; + + h=malloc(sizeof(IntHeap)); + if (!h) return NULL; + h->heapsize=INITIAL_SIZE; + h->heap=malloc(sizeof(void *)*h->heapsize); + if (!h->heap) { free(h); return NULL; } + h->heapcount=0; + h->cf=cf; + return (Heap)h; +} + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h new file mode 100755 index 00000000000..5a213c42ab8 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h @@ -0,0 +1,23 @@ +/* + * The Python Imaging Library + * $Id$ + * + * image quantizer + * + * Written by Toby J Sargeant . + * + * See the README file for information on usage and redistribution. + */ + +#ifndef __HEAP_H__ +#define __HEAP_H__ + +#include "QuantTypes.h" + +void ImagingQuantHeapFree(Heap); +int ImagingQuantHeapRemove(Heap,void **); +int ImagingQuantHeapAdd(Heap,void *); +int ImagingQuantHeapTop(Heap,void **); +Heap *ImagingQuantHeapNew(HeapCmpFunc); + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h new file mode 100755 index 00000000000..308b51c1324 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h @@ -0,0 +1,28 @@ +/* + * The Python Imaging Library + * $Id$ + * + * image quantizer + * + * Written by Toby J Sargeant . + * + * See the README file for information on usage and redistribution. + */ + +#ifndef __TYPES_H__ +#define __TYPES_H__ + +typedef void *HashTable; +typedef void *Heap; + +typedef unsigned long (*HashFunc)(const HashTable,const void *); +typedef int (*HashCmpFunc)(const HashTable,const void *,const void *); +typedef void (*IteratorFunc)(const HashTable,const void *,const void *,void *); +typedef void (*IteratorUpdateFunc)(const HashTable,const void *,void **,void *); +typedef void (*DestroyFunc)(const HashTable,void *); +typedef void (*ComputeFunc)(const HashTable,const void *,void **); +typedef void (*CollisionFunc)(const HashTable,void **,void **,void *,void *); + +typedef int (*HeapCmpFunc)(const Heap,const void *,const void *); + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c new file mode 100755 index 00000000000..84090f7510e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c @@ -0,0 +1,105 @@ +/* + * The Python Imaging Library + * $Id$ + * + * min, max, median filters + * + * history: + * 2002-06-08 fl Created + * + * Copyright (c) Secret Labs AB 2002. All rights reserved. + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + +/* Fast rank algorithm (due to Wirth), based on public domain code + by Nicolas Devillard, available at http://ndevilla.free.fr */ + +#define SWAP(type,a,b) { register type t=(a);(a)=(b);(b)=t; } + +#define MakeRankFunction(type)\ +static type Rank##type(type a[], int n, int k)\ +{\ + register int i, j, l, m;\ + register type x;\ + l = 0; m = n-1;\ + while (l < m) {\ + x = a[k];\ + i = l;\ + j = m;\ + do {\ + while (a[i] < x) i++;\ + while (x < a[j]) j--;\ + if (i <= j) {\ + SWAP(type, a[i], a[j]);\ + i++; j--;\ + }\ + } while (i <= j);\ + if (j < k) l = i;\ + if (k < i) m = j;\ + }\ + return a[k];\ +} + +MakeRankFunction(UINT8) +MakeRankFunction(INT32) +MakeRankFunction(FLOAT32) + +Imaging +ImagingRankFilter(Imaging im, int size, int rank) +{ + Imaging imOut = NULL; + int x, y; + int i, margin, size2; + + if (!im || im->bands != 1 || im->type == IMAGING_TYPE_SPECIAL) + return (Imaging) ImagingError_ModeError(); + + if (!(size & 1)) + return (Imaging) ImagingError_ValueError("bad filter size"); + + size2 = size * size; + margin = (size-1) / 2; + + if (rank < 0 || rank >= size2) + return (Imaging) ImagingError_ValueError("bad rank value"); + + imOut = ImagingNew(im->mode, im->xsize - 2*margin, im->ysize - 2*margin); + if (!imOut) + return NULL; + +#define RANK_BODY(type) do {\ + type* buf = malloc(size2 * sizeof(type));\ + if (!buf)\ + goto nomemory;\ + for (y = 0; y < imOut->ysize; y++)\ + for (x = 0; x < imOut->xsize; x++) {\ + for (i = 0; i < size; i++)\ + memcpy(buf + i*size, &IMAGING_PIXEL_##type(im, x, y+i),\ + size * sizeof(type));\ + IMAGING_PIXEL_##type(imOut, x, y) = Rank##type(buf, size2, rank);\ + }\ +} while (0) + + if (im->image8) + RANK_BODY(UINT8); + else if (im->type == IMAGING_TYPE_INT32) + RANK_BODY(INT32); + else if (im->type == IMAGING_TYPE_FLOAT32) + RANK_BODY(FLOAT32); + else { + /* safety net (we shouldn't end up here) */ + ImagingDelete(imOut); + return (Imaging) ImagingError_ModeError(); + } + + ImagingCopyInfo(imOut, im); + + return imOut; + +nomemory: + ImagingDelete(imOut); + return (Imaging) ImagingError_MemoryError(); +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h new file mode 100755 index 00000000000..4d28fa54665 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h @@ -0,0 +1,15 @@ +/* Raw.h */ + +typedef struct { + + /* CONFIGURATION */ + + /* Distance between lines (0=no padding) */ + int stride; + + /* PRIVATE (initialized by decoder) */ + + /* Padding between lines */ + int skip; + +} RAWSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c new file mode 100755 index 00000000000..5aadb2b44d7 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c @@ -0,0 +1,89 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for raw (uncompressed) image data + * + * history: + * 96-03-07 fl rewritten + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#include "Raw.h" + + +int +ImagingRawDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + enum { LINE = 1, SKIP }; + RAWSTATE* rawstate = state->context; + + UINT8* ptr; + + if (state->state == 0) { + + /* Initialize context variables */ + + /* get size of image data and padding */ + state->bytes = (state->xsize * state->bits + 7) / 8; + rawstate->skip = (rawstate->stride) ? + rawstate->stride - state->bytes : 0; + + /* check image orientation */ + if (state->ystep < 0) { + state->y = state->ysize-1; + state->ystep = -1; + } else + state->ystep = 1; + + state->state = LINE; + + } + + ptr = buf; + + for (;;) { + + if (state->state == SKIP) { + + /* Skip padding between lines */ + + if (bytes < rawstate->skip) + return ptr - buf; + + ptr += rawstate->skip; + bytes -= rawstate->skip; + + state->state = LINE; + + } + + if (bytes < state->bytes) + return ptr - buf; + + /* Unpack data */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, ptr, state->xsize); + + ptr += state->bytes; + bytes -= state->bytes; + + state->y += state->ystep; + + if (state->y < 0 || state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + + state->state = SKIP; + + } + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c new file mode 100755 index 00000000000..a3b74b8cffc --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c @@ -0,0 +1,89 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * coder for raw data + * + * FIXME: This encoder will fail if the buffer is not large enough to + * hold one full line of data. There's a workaround for this problem + * in ImageFile.py, but it should be solved here instead. + * + * history: + * 96-04-30 fl created + * 97-01-03 fl fixed padding + * + * Copyright (c) Fredrik Lundh 1996-97. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. */ + + +#include "Imaging.h" + +int +ImagingRawEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + UINT8* ptr; + + if (!state->state) { + + /* The "count" field holds the stride, if specified. Fix + things up so "bytes" is the full size, and "count" the + packed size */ + + if (state->count > 0) { + int bytes = state->count; + + /* stride must not be less than real size */ + if (state->count < state->bytes) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + state->count = state->bytes; + state->bytes = bytes; + } else + state->count = state->bytes; + + /* The "ystep" field specifies the orientation */ + + if (state->ystep < 0) { + state->y = state->ysize-1; + state->ystep = -1; + } else + state->ystep = 1; + + state->state = 1; + + } + + if (bytes < state->bytes) { + state->errcode = IMAGING_CODEC_CONFIG; + return 0; + } + + ptr = buf; + + while (bytes >= state->bytes) { + + state->shuffle(ptr, (UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->xsize); + + if (state->bytes > state->count) + /* zero-pad the buffer, if necessary */ + memset(ptr + state->count, 0, state->bytes - state->count); + + ptr += state->bytes; + bytes -= state->bytes; + + state->y += state->ystep; + + if (state->y < 0 || state->y >= state->ysize) { + state->errcode = IMAGING_CODEC_END; + break; + } + + } + + return ptr - buf; + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c new file mode 100755 index 00000000000..76a66c2a5b1 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c @@ -0,0 +1,413 @@ +/* + * The Python Imaging Library + * $Id$ + * + * imaging storage object + * + * This baseline implementation is designed to efficiently handle + * large images, provided they fit into the available memory. + * + * history: + * 1995-06-15 fl Created + * 1995-09-12 fl Updated API, compiles silently under ANSI C++ + * 1995-11-26 fl Compiles silently under Borland 4.5 as well + * 1996-05-05 fl Correctly test status from Prologue + * 1997-05-12 fl Increased THRESHOLD (to speed up Tk interface) + * 1997-05-30 fl Added support for floating point images + * 1997-11-17 fl Added support for "RGBX" images + * 1998-01-11 fl Added support for integer images + * 1998-03-05 fl Exported Prologue/Epilogue functions + * 1998-07-01 fl Added basic "YCrCb" support + * 1998-07-03 fl Attach palette in prologue for "P" images + * 1998-07-09 hk Don't report MemoryError on zero-size images + * 1998-07-12 fl Change "YCrCb" to "YCbCr" (!) + * 1998-10-26 fl Added "I;16" and "I;16B" storage modes (experimental) + * 1998-12-29 fl Fixed allocation bug caused by previous fix + * 1999-02-03 fl Added "RGBa" and "BGR" modes (experimental) + * 2001-04-22 fl Fixed potential memory leak in ImagingCopyInfo + * 2003-09-26 fl Added "LA" and "PA" modes (experimental) + * 2005-10-02 fl Added image counter + * + * Copyright (c) 1998-2005 by Secret Labs AB + * Copyright (c) 1995-2005 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int ImagingNewCount = 0; + +/* -------------------------------------------------------------------- + * Standard image object. + */ + +Imaging +ImagingNewPrologueSubtype(const char *mode, unsigned xsize, unsigned ysize, + int size) +{ + Imaging im; + ImagingSectionCookie cookie; + + im = (Imaging) calloc(1, size); + if (!im) + return (Imaging) ImagingError_MemoryError(); + + /* Setup image descriptor */ + im->xsize = xsize; + im->ysize = ysize; + + im->type = IMAGING_TYPE_UINT8; + + if (strcmp(mode, "1") == 0) { + /* 1-bit images */ + im->bands = im->pixelsize = 1; + im->linesize = xsize; + + } else if (strcmp(mode, "P") == 0) { + /* 8-bit palette mapped images */ + im->bands = im->pixelsize = 1; + im->linesize = xsize; + im->palette = ImagingPaletteNew("RGB"); + + } else if (strcmp(mode, "PA") == 0) { + /* 8-bit palette with alpha */ + im->bands = 2; + im->pixelsize = 4; /* store in image32 memory */ + im->linesize = xsize * 4; + im->palette = ImagingPaletteNew("RGB"); + + } else if (strcmp(mode, "L") == 0) { + /* 8-bit greyscale (luminance) images */ + im->bands = im->pixelsize = 1; + im->linesize = xsize; + + } else if (strcmp(mode, "LA") == 0) { + /* 8-bit greyscale (luminance) with alpha */ + im->bands = 2; + im->pixelsize = 4; /* store in image32 memory */ + im->linesize = xsize * 4; + + } else if (strcmp(mode, "F") == 0) { + /* 32-bit floating point images */ + im->bands = 1; + im->pixelsize = 4; + im->linesize = xsize * 4; + im->type = IMAGING_TYPE_FLOAT32; + + } else if (strcmp(mode, "I") == 0) { + /* 32-bit integer images */ + im->bands = 1; + im->pixelsize = 4; + im->linesize = xsize * 4; + im->type = IMAGING_TYPE_INT32; + + } else if (strcmp(mode, "I;16") == 0 || strcmp(mode, "I;16L") == 0 || strcmp(mode, "I;16B") == 0) { + /* EXPERIMENTAL */ + /* 16-bit raw integer images */ + im->bands = 1; + im->pixelsize = 2; + im->linesize = xsize * 2; + im->type = IMAGING_TYPE_SPECIAL; + + } else if (strcmp(mode, "RGB") == 0) { + /* 24-bit true colour images */ + im->bands = 3; + im->pixelsize = 4; + im->linesize = xsize * 4; + + } else if (strcmp(mode, "BGR;15") == 0) { + /* EXPERIMENTAL */ + /* 15-bit true colour */ + im->bands = 1; + im->pixelsize = 2; + im->linesize = (xsize*2 + 3) & -4; + im->type = IMAGING_TYPE_SPECIAL; + + } else if (strcmp(mode, "BGR;16") == 0) { + /* EXPERIMENTAL */ + /* 16-bit reversed true colour */ + im->bands = 1; + im->pixelsize = 2; + im->linesize = (xsize*2 + 3) & -4; + im->type = IMAGING_TYPE_SPECIAL; + + } else if (strcmp(mode, "BGR;24") == 0) { + /* EXPERIMENTAL */ + /* 24-bit reversed true colour */ + im->bands = 1; + im->pixelsize = 3; + im->linesize = (xsize*3 + 3) & -4; + im->type = IMAGING_TYPE_SPECIAL; + + } else if (strcmp(mode, "BGR;32") == 0) { + /* EXPERIMENTAL */ + /* 32-bit reversed true colour */ + im->bands = 1; + im->pixelsize = 4; + im->linesize = (xsize*4 + 3) & -4; + im->type = IMAGING_TYPE_SPECIAL; + + } else if (strcmp(mode, "RGBX") == 0) { + /* 32-bit true colour images with padding */ + im->bands = im->pixelsize = 4; + im->linesize = xsize * 4; + + } else if (strcmp(mode, "RGBA") == 0) { + /* 32-bit true colour images with alpha */ + im->bands = im->pixelsize = 4; + im->linesize = xsize * 4; + + } else if (strcmp(mode, "RGBa") == 0) { + /* EXPERIMENTAL */ + /* 32-bit true colour images with premultiplied alpha */ + im->bands = im->pixelsize = 4; + im->linesize = xsize * 4; + + } else if (strcmp(mode, "CMYK") == 0) { + /* 32-bit colour separation */ + im->bands = im->pixelsize = 4; + im->linesize = xsize * 4; + + } else if (strcmp(mode, "YCbCr") == 0) { + /* 24-bit video format */ + im->bands = 3; + im->pixelsize = 4; + im->linesize = xsize * 4; + + } else { + free(im); + return (Imaging) ImagingError_ValueError("unrecognized mode"); + } + + /* Setup image descriptor */ + strcpy(im->mode, mode); + + ImagingSectionEnter(&cookie); + + /* Pointer array (allocate at least one line, to avoid MemoryError + exceptions on platforms where calloc(0, x) returns NULL) */ + im->image = (char **) calloc((ysize > 0) ? ysize : 1, sizeof(void *)); + + ImagingSectionLeave(&cookie); + + if (!im->image) { + free(im); + return (Imaging) ImagingError_MemoryError(); + } + + ImagingNewCount++; + + return im; +} + +Imaging +ImagingNewPrologue(const char *mode, unsigned xsize, unsigned ysize) +{ + return ImagingNewPrologueSubtype( + mode, xsize, ysize, sizeof(struct ImagingMemoryInstance) + ); +} + +Imaging +ImagingNewEpilogue(Imaging im) +{ + /* If the raster data allocator didn't setup a destructor, + assume that it couldn't allocate the required amount of + memory. */ + if (!im->destroy) + return (Imaging) ImagingError_MemoryError(); + + /* Initialize alias pointers to pixel data. */ + switch (im->pixelsize) { + case 1: case 2: case 3: + im->image8 = (UINT8 **) im->image; + break; + case 4: + im->image32 = (INT32 **) im->image; + break; + } + + return im; +} + +void +ImagingDelete(Imaging im) +{ + if (!im) + return; + + if (im->palette) + ImagingPaletteDelete(im->palette); + + if (im->destroy) + im->destroy(im); + + if (im->image) + free(im->image); + + free(im); +} + + +/* Array Storage Type */ +/* ------------------ */ +/* Allocate image as an array of line buffers. */ + +static void +ImagingDestroyArray(Imaging im) +{ + int y; + + if (im->image) + for (y = 0; y < im->ysize; y++) + if (im->image[y]) + free(im->image[y]); +} + +Imaging +ImagingNewArray(const char *mode, int xsize, int ysize) +{ + Imaging im; + ImagingSectionCookie cookie; + + int y; + char* p; + + im = ImagingNewPrologue(mode, xsize, ysize); + if (!im) + return NULL; + + ImagingSectionEnter(&cookie); + + /* Allocate image as an array of lines */ + for (y = 0; y < im->ysize; y++) { + p = (char *) malloc(im->linesize); + if (!p) { + ImagingDestroyArray(im); + break; + } + im->image[y] = p; + } + + ImagingSectionLeave(&cookie); + + if (y == im->ysize) + im->destroy = ImagingDestroyArray; + + return ImagingNewEpilogue(im); +} + + +/* Block Storage Type */ +/* ------------------ */ +/* Allocate image as a single block. */ + +static void +ImagingDestroyBlock(Imaging im) +{ + if (im->block) + free(im->block); +} + +Imaging +ImagingNewBlock(const char *mode, int xsize, int ysize) +{ + Imaging im; + int y, i; + int bytes; + + im = ImagingNewPrologue(mode, xsize, ysize); + if (!im) + return NULL; + + /* Use a single block */ + bytes = im->ysize * im->linesize; + if (bytes <= 0) + /* some platforms return NULL for malloc(0); this fix + prevents MemoryError on zero-sized images on such + platforms */ + bytes = 1; + im->block = (char *) malloc(bytes); + + if (im->block) { + + for (y = i = 0; y < im->ysize; y++) { + im->image[y] = im->block + i; + i += im->linesize; + } + + im->destroy = ImagingDestroyBlock; + + } + + return ImagingNewEpilogue(im); +} + +/* -------------------------------------------------------------------- + * Create a new, internally allocated, image. + */ +#if defined(IMAGING_SMALL_MODEL) +#define THRESHOLD 16384L +#else +#define THRESHOLD (2048*2048*4L) +#endif + +Imaging +ImagingNew(const char* mode, int xsize, int ysize) +{ + int bytes; + Imaging im; + + if (strlen(mode) == 1) { + if (mode[0] == 'F' || mode[0] == 'I') + bytes = 4; + else + bytes = 1; + } else + bytes = strlen(mode); /* close enough */ + + if ((long) xsize * ysize * bytes <= THRESHOLD) { + im = ImagingNewBlock(mode, xsize, ysize); + if (im) + return im; + /* assume memory error; try allocating in array mode instead */ + ImagingError_Clear(); + } + + return ImagingNewArray(mode, xsize, ysize); +} + +Imaging +ImagingNew2(const char* mode, Imaging imOut, Imaging imIn) +{ + /* allocate or validate output image */ + + if (imOut) { + /* make sure images match */ + if (strcmp(imOut->mode, mode) != 0 + || imOut->xsize != imIn->xsize + || imOut->ysize != imIn->ysize) { + return ImagingError_Mismatch(); + } + } else { + /* create new image */ + imOut = ImagingNew(mode, imIn->xsize, imIn->ysize); + if (!imOut) + return NULL; + } + + return imOut; +} + +void +ImagingCopyInfo(Imaging destination, Imaging source) +{ + if (source->palette) { + if (destination->palette) + ImagingPaletteDelete(destination->palette); + destination->palette = ImagingPaletteDuplicate(source->palette); + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c new file mode 100755 index 00000000000..bf34d93821f --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c @@ -0,0 +1,112 @@ +/* + * THIS IS WORK IN PROGRESS + * + * The Python Imaging Library. + * $Id$ + * + * decoder for SUN RLE data. + * + * history: + * 97-01-04 fl Created + * + * Copyright (c) Fredrik Lundh 1997. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingSunRleDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + int n; + UINT8* ptr; + + ptr = buf; + + for (;;) { + + if (bytes < 1) + return ptr - buf; + + if (ptr[0] == 0x80) { + + if (bytes < 2) + break; + + n = ptr[1]; + + if (n == 0) { + + /* Literal 0x80 (2 bytes) */ + n = 1; + + state->buffer[state->x] = 0x80; + + ptr += 2; + bytes -= 2; + + } else { + + /* Run (3 bytes) */ + if (bytes < 3) + break; + + if (state->x + n > state->bytes) { + /* FIXME: is this correct? */ + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + memset(state->buffer + state->x, ptr[2], n); + + ptr += 3; + bytes -= 3; + + } + + } else { + + /* Literal (1+n bytes block) */ + n = ptr[0]; + + if (bytes < 1 + n) + break; + + if (state->x + n > state->bytes) { + /* FIXME: is this correct? */ + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + memcpy(state->buffer + state->x, ptr + 1, n); + + ptr += 1 + n; + bytes -= 1 + n; + + } + + state->x += n; + + if (state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + } + + } + + return ptr - buf; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c new file mode 100755 index 00000000000..cad6bc3bcfe --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c @@ -0,0 +1,118 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for Targa RLE data. + * + * history: + * 97-01-04 fl created + * 98-09-11 fl don't one byte per pixel; take orientation into account + * + * Copyright (c) Fredrik Lundh 1997. + * Copyright (c) Secret Labs AB 1997-98. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingTgaRleDecode(Imaging im, ImagingCodecState state, + UINT8* buf, int bytes) +{ + int n, depth; + UINT8* ptr; + + ptr = buf; + + if (state->state == 0) { + + /* check image orientation */ + if (state->ystep < 0) { + state->y = state->ysize-1; + state->ystep = -1; + } else + state->ystep = 1; + + state->state = 1; + + } + + depth = state->count; + + for (;;) { + + if (bytes < 1) + return ptr - buf; + + if (ptr[0] & 0x80) { + + /* Run (1 + pixelsize bytes) */ + + if (bytes < 1 + depth) + break; + + n = depth * ((ptr[0] & 0x7f) + 1); + + if (state->x + n > state->bytes) { + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + if (depth == 1) + memset(state->buffer + state->x, ptr[1], n); + else { + int i; + for (i = 0; i < n; i += depth) + memcpy(state->buffer + state->x + i, ptr+1, depth); + } + + ptr += 1 + depth; + bytes -= 1 + depth; + + } else { + + /* Literal (1+n+1 bytes block) */ + n = depth * (ptr[0] + 1); + + if (bytes < 1 + n) + break; + + if (state->x + n > state->bytes) { + state->errcode = IMAGING_CODEC_OVERRUN; + return -1; + } + + memcpy(state->buffer + state->x, ptr + 1, n); + + ptr += 1 + n; + bytes -= 1 + n; + + } + + state->x += n; + + if (state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->buffer, + state->xsize); + + state->x = 0; + + state->y += state->ystep; + + if (state->y < 0 || state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + + } + + } + + return ptr - buf; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c new file mode 100755 index 00000000000..90a76feb341 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c @@ -0,0 +1,1028 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * code to unpack raw data from various file formats + * + * history: + * 1996-03-07 fl Created (from various decoders) + * 1996-04-19 fl Added band unpackers + * 1996-05-12 fl Published RGB unpackers + * 1996-05-27 fl Added nibble unpacker + * 1996-12-10 fl Added complete set of PNG unpackers + * 1996-12-29 fl Set alpha byte in RGB unpackers + * 1997-01-05 fl Added remaining TGA unpackers + * 1997-01-18 fl Added inverting band unpackers + * 1997-01-25 fl Added FlashPix unpackers + * 1997-05-31 fl Added floating point unpackers + * 1998-02-08 fl Added I unpacker + * 1998-07-01 fl Added YCbCr unpacker + * 1998-07-02 fl Added full set of integer unpackers + * 1998-12-29 fl Added mode field, I;16 unpackers + * 1998-12-30 fl Added RGBX modes + * 1999-02-04 fl Fixed I;16 unpackers + * 2003-05-13 fl Added L/RGB reversed unpackers + * 2003-09-26 fl Added LA/PA and RGBa->RGB unpackers + * + * Copyright (c) 1997-2003 by Secret Labs AB. + * Copyright (c) 1996-1997 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + +#include "Imaging.h" + + +#define R 0 +#define G 1 +#define B 2 +#define X 3 + +#define A 3 + +#define C 0 +#define M 1 +#define Y 2 +#define K 3 + +#define CLIP(x) ((x) <= 0 ? 0 : (x) < 256 ? (x) : 255) + +/* byte-swapping macros */ + +#define C16N\ + (tmp[0]=in[0], tmp[1]=in[1]); +#define C16S\ + (tmp[1]=in[0], tmp[0]=in[1]); +#define C32N\ + (tmp[0]=in[0], tmp[1]=in[1], tmp[2]=in[2], tmp[3]=in[3]); +#define C32S\ + (tmp[3]=in[0], tmp[2]=in[1], tmp[1]=in[2], tmp[0]=in[3]); +#define C64N\ + (tmp[0]=in[0], tmp[1]=in[1], tmp[2]=in[2], tmp[3]=in[3],\ + tmp[4]=in[4], tmp[5]=in[5], tmp[6]=in[6], tmp[7]=in[7]); +#define C64S\ + (tmp[7]=in[0], tmp[6]=in[1], tmp[5]=in[2], tmp[4]=in[3],\ + tmp[3]=in[4], tmp[2]=in[5], tmp[1]=in[6], tmp[0]=in[7]); + +#ifdef WORDS_BIGENDIAN +#define C16B C16N +#define C16L C16S +#define C32B C32N +#define C32L C32S +#define C64B C64N +#define C64L C64S +#else +#define C16B C16S +#define C16L C16N +#define C32B C32S +#define C32L C32N +#define C64B C64S +#define C64L C64N +#endif + +/* bit-swapping */ + +static UINT8 BITFLIP[] = { + 0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, + 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, + 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, + 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, + 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, + 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, + 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, + 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, + 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, + 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, + 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, + 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, + 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, + 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, + 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, + 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, + 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, + 255 +}; + +/* Unpack to "1" image */ + +static void +unpack1(UINT8* out, const UINT8* in, int pixels) +{ + /* bits (msb first, white is non-zero) */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 7: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 6: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 5: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 4: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 3: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 2: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; + case 1: *out++ = (byte & 128) ? 255 : 0; + } + pixels -= 8; + } +} + +static void +unpack1I(UINT8* out, const UINT8* in, int pixels) +{ + /* bits (msb first, white is zero) */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 7: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 6: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 5: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 4: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 3: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 2: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; + case 1: *out++ = (byte & 128) ? 0 : 255; + } + pixels -= 8; + } +} + +static void +unpack1R(UINT8* out, const UINT8* in, int pixels) +{ + /* bits (lsb first, white is non-zero) */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 7: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 6: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 5: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 4: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 3: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 2: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; + case 1: *out++ = (byte & 1) ? 255 : 0; + } + pixels -= 8; + } +} + +static void +unpack1IR(UINT8* out, const UINT8* in, int pixels) +{ + /* bits (lsb first, white is zero) */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 7: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 6: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 5: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 4: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 3: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 2: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; + case 1: *out++ = (byte & 1) ? 0 : 255; + } + pixels -= 8; + } +} + + +/* Unpack to "L" image */ + +static void +unpackL2(UINT8* out, const UINT8* in, int pixels) +{ + /* nibbles */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = ((byte >> 6) & 3) * 255 / 3; byte <<= 2; + case 3: *out++ = ((byte >> 6) & 3) * 255 / 3; byte <<= 2; + case 2: *out++ = ((byte >> 6) & 3) * 255 / 3; byte <<= 2; + case 1: *out++ = ((byte >> 6) & 3) * 255 / 3; + } + pixels -= 4; + } +} + +static void +unpackL4(UINT8* out, const UINT8* in, int pixels) +{ + /* nibbles */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = ((byte >> 4) & 15) * 255 / 15; byte <<= 4; + case 1: *out++ = ((byte >> 4) & 15) * 255 / 15; + } + pixels -= 2; + } +} + +static void +unpackLA(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* LA, pixel interleaved */ + for (i = 0; i < pixels; i++) { + out[R] = out[G] = out[B] = in[0]; + out[A] = in[1]; + in += 2; out += 4; + } +} + +static void +unpackLAL(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* LA, line interleaved */ + for (i = 0; i < pixels; i++) { + out[R] = out[G] = out[B] = in[i]; + out[A] = in[i+pixels]; + out += 4; + } +} + +static void +unpackLI(UINT8* out, const UINT8* in, int pixels) +{ + /* negative */ + int i; + for (i = 0; i < pixels; i++) + out[i] = ~in[i]; +} + +static void +unpackLR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, bit reversed */ + for (i = 0; i < pixels; i++) { + out[i] = BITFLIP[in[i]]; + } +} + +static void +unpackL16(UINT8* out, const UINT8* in, int pixels) +{ + /* int16 (upper byte, little endian) */ + int i; + for (i = 0; i < pixels; i++) { + out[i] = in[1]; + in += 2; + } +} + +static void +unpackL16B(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* int16 (upper byte, big endian) */ + for (i = 0; i < pixels; i++) { + out[i] = in[0]; + in += 2; + } +} + + +/* Unpack to "P" image */ + +static void +unpackP1(UINT8* out, const UINT8* in, int pixels) +{ + /* bits */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte >> 7) & 1; byte <<= 1; + case 7: *out++ = (byte >> 7) & 1; byte <<= 1; + case 6: *out++ = (byte >> 7) & 1; byte <<= 1; + case 5: *out++ = (byte >> 7) & 1; byte <<= 1; + case 4: *out++ = (byte >> 7) & 1; byte <<= 1; + case 3: *out++ = (byte >> 7) & 1; byte <<= 1; + case 2: *out++ = (byte >> 7) & 1; byte <<= 1; + case 1: *out++ = (byte >> 7) & 1; + } + pixels -= 8; + } +} + +static void +unpackP2(UINT8* out, const UINT8* in, int pixels) +{ + /* bit pairs */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte >> 6) & 3; byte <<= 2; + case 3: *out++ = (byte >> 6) & 3; byte <<= 2; + case 2: *out++ = (byte >> 6) & 3; byte <<= 2; + case 1: *out++ = (byte >> 6) & 3; + } + pixels -= 4; + } +} + +static void +unpackP4(UINT8* out, const UINT8* in, int pixels) +{ + /* nibbles */ + while (pixels > 0) { + UINT8 byte = *in++; + switch (pixels) { + default: *out++ = (byte >> 4) & 15; byte <<= 4; + case 1: *out++ = (byte >> 4) & 15; + } + pixels -= 2; + } +} + +static void +unpackP2L(UINT8* out, const UINT8* in, int pixels) +{ + int i, j, m, s; + /* bit layers */ + m = 128; + s = (pixels+7)/8; + for (i = j = 0; i < pixels; i++) { + out[i] = ((in[j] & m) ? 1 : 0) + ((in[j + s] & m) ? 2 : 0); + if ((m >>= 1) == 0) { + m = 128; + j++; + } + } +} + +static void +unpackP4L(UINT8* out, const UINT8* in, int pixels) +{ + int i, j, m, s; + /* bit layers (trust the optimizer ;-) */ + m = 128; + s = (pixels+7)/8; + for (i = j = 0; i < pixels; i++) { + out[i] = ((in[j] & m) ? 1 : 0) + ((in[j + s] & m) ? 2 : 0) + + ((in[j + 2*s] & m) ? 4 : 0) + ((in[j + 3*s] & m) ? 8 : 0); + if ((m >>= 1) == 0) { + m = 128; + j++; + } + } +} + +/* Unpack to "RGB" image */ + +void +ImagingUnpackRGB(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB triplets */ + for (i = 0; i < pixels; i++) { + out[R] = in[0]; + out[G] = in[1]; + out[B] = in[2]; + out[A] = 255; + out += 4; in += 3; + } +} + +void +unpackRGB16B(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* 16-bit RGB triplets, big-endian order */ + for (i = 0; i < pixels; i++) { + out[R] = in[0]; + out[G] = in[2]; + out[B] = in[4]; + out[A] = 255; + out += 4; in += 6; + } +} + +static void +unpackRGBL(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, line interleaved */ + for (i = 0; i < pixels; i++) { + out[R] = in[i]; + out[G] = in[i+pixels]; + out[B] = in[i+pixels+pixels]; + out[A] = 255; + out += 4; + } +} + +static void +unpackRGBR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, bit reversed */ + for (i = 0; i < pixels; i++) { + out[R] = BITFLIP[in[0]]; + out[G] = BITFLIP[in[1]]; + out[B] = BITFLIP[in[2]]; + out[A] = 255; + out += 4; in += 3; + } +} + +void +ImagingUnpackBGR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, reversed bytes */ + for (i = 0; i < pixels; i++) { + out[R] = in[2]; + out[G] = in[1]; + out[B] = in[0]; + out[A] = 255; + out += 4; in += 3; + } +} + +void +ImagingUnpackBGR15(UINT8* out, const UINT8* in, int pixels) +{ + int i, pixel; + /* RGB, reversed bytes, 5 bits per pixel */ + for (i = 0; i < pixels; i++) { + pixel = in[0] + (in[1] << 8); + out[B] = (pixel & 31) * 255 / 31; + out[G] = ((pixel>>5) & 31) * 255 / 31; + out[R] = ((pixel>>10) & 31) * 255 / 31; + out[A] = 255; + out += 4; in += 2; + } +} + +void +ImagingUnpackBGR16(UINT8* out, const UINT8* in, int pixels) +{ + int i, pixel; + /* RGB, reversed bytes, 5/6/5 bits per pixel */ + for (i = 0; i < pixels; i++) { + pixel = in[0] + (in[1] << 8); + out[B] = (pixel & 31) * 255 / 31; + out[G] = ((pixel>>5) & 63) * 255 / 63; + out[R] = ((pixel>>11) & 31) * 255 / 31; + out[A] = 255; + out += 4; in += 2; + } +} + +static void +ImagingUnpackBGRX(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, reversed bytes with padding */ + for (i = 0; i < pixels; i++) { + out[R] = in[2]; + out[G] = in[1]; + out[B] = in[0]; + out[A] = 255; + out += 4; in += 4; + } +} + +static void +ImagingUnpackXRGB(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, leading pad */ + for (i = 0; i < pixels; i++) { + out[R] = in[1]; + out[G] = in[2]; + out[B] = in[3]; + out[A] = 255; + out += 4; in += 4; + } +} + +static void +ImagingUnpackXBGR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGB, reversed bytes, leading pad */ + for (i = 0; i < pixels; i++) { + out[R] = in[3]; + out[G] = in[2]; + out[B] = in[1]; + out[A] = 255; + out += 4; in += 4; + } +} + +/* Unpack to "RGBA" image */ + +static void +unpackRGBALA(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* greyscale with alpha */ + for (i = 0; i < pixels; i++) { + out[R] = out[G] = out[B] = in[0]; + out[A] = in[1]; + out += 4; in += 2; + } +} + +static void +unpackRGBALA16B(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* 16-bit greyscale with alpha, big-endian */ + for (i = 0; i < pixels; i++) { + out[R] = out[G] = out[B] = in[0]; + out[A] = in[2]; + out += 4; in += 4; + } +} + +static void +unpackRGBa(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* premultiplied RGBA */ + for (i = 0; i < pixels; i++) { + int a = in[3]; + if (!a) + out[R] = out[G] = out[B] = out[A] = 0; + else { + out[R] = CLIP(in[0] * 255 / a); + out[G] = CLIP(in[1] * 255 / a); + out[B] = CLIP(in[2] * 255 / a); + out[A] = a; + } + out += 4; in += 4; + } +} + +static void +unpackRGBAI(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGBA, inverted RGB bytes (FlashPix) */ + for (i = 0; i < pixels; i++) { + out[R] = ~in[0]; + out[G] = ~in[1]; + out[B] = ~in[2]; + out[A] = in[3]; + out += 4; in += 4; + } +} + +static void +unpackRGBAL(UINT8* out, const UINT8* in, int pixels) +{ + int i; + + /* RGBA, line interleaved */ + for (i = 0; i < pixels; i++) { + out[R] = in[i]; + out[G] = in[i+pixels]; + out[B] = in[i+pixels+pixels]; + out[A] = in[i+pixels+pixels+pixels]; + out += 4; + } +} + +void +unpackRGBA16B(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* 16-bit RGBA, big-endian order */ + for (i = 0; i < pixels; i++) { + out[R] = in[0]; + out[G] = in[2]; + out[B] = in[4]; + out[A] = in[6]; + out += 4; in += 8; + } +} + +static void +unpackARGB(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGBA, leading pad */ + for (i = 0; i < pixels; i++) { + out[R] = in[1]; + out[G] = in[2]; + out[B] = in[3]; + out[A] = in[0]; + out += 4; in += 4; + } +} + +static void +unpackABGR(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGBA, reversed bytes */ + for (i = 0; i < pixels; i++) { + out[R] = in[3]; + out[G] = in[2]; + out[B] = in[1]; + out[A] = in[0]; + out += 4; in += 4; + } +} + +static void +unpackBGRA(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* RGBA, reversed bytes */ + for (i = 0; i < pixels; i++) { + out[R] = in[2]; + out[G] = in[1]; + out[B] = in[0]; + out[A] = in[3]; + out += 4; in += 4; + } +} + + +/* Unpack to "CMYK" image */ + +static void +unpackCMYKI(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* CMYK, inverted bytes (Photoshop 2.5) */ + for (i = 0; i < pixels; i++) { + out[C] = ~in[0]; + out[M] = ~in[1]; + out[Y] = ~in[2]; + out[K] = ~in[3]; + out += 4; in += 4; + } +} + +static void +copy1(UINT8* out, const UINT8* in, int pixels) +{ + /* L, P */ + memcpy(out, in, pixels); +} + +static void +copy2(UINT8* out, const UINT8* in, int pixels) +{ + /* I;16 */ + memcpy(out, in, pixels*2); +} + +static void +copy4(UINT8* out, const UINT8* in, int pixels) +{ + /* RGBA, CMYK quadruples */ + memcpy(out, in, 4 * pixels); +} + + +/* Unpack to "I" and "F" images */ + +#define UNPACK_RAW(NAME, GET, INTYPE, OUTTYPE)\ +static void NAME(UINT8* out_, const UINT8* in, int pixels)\ +{\ + int i;\ + OUTTYPE* out = (OUTTYPE*) out_;\ + for (i = 0; i < pixels; i++, in += sizeof(INTYPE))\ + out[i] = (OUTTYPE) ((INTYPE) GET);\ +} + +#define UNPACK(NAME, COPY, INTYPE, OUTTYPE)\ +static void NAME(UINT8* out_, const UINT8* in, int pixels)\ +{\ + int i;\ + OUTTYPE* out = (OUTTYPE*) out_;\ + INTYPE tmp_;\ + UINT8* tmp = (UINT8*) &tmp_;\ + for (i = 0; i < pixels; i++, in += sizeof(INTYPE)) {\ + COPY;\ + out[i] = (OUTTYPE) tmp_;\ + }\ +} + +UNPACK_RAW(unpackI8, in[0], UINT8, INT32) +UNPACK_RAW(unpackI8S, in[0], INT8, INT32) +UNPACK(unpackI16, C16L, UINT16, INT32) +UNPACK(unpackI16S, C16L, INT16, INT32) +UNPACK(unpackI16B, C16B, UINT16, INT32) +UNPACK(unpackI16BS, C16B, INT16, INT32) +UNPACK(unpackI16N, C16N, UINT16, INT32) +UNPACK(unpackI16NS, C16N, INT16, INT32) +UNPACK(unpackI32, C32L, UINT32, INT32) +UNPACK(unpackI32S, C32L, INT32, INT32) +UNPACK(unpackI32B, C32B, UINT32, INT32) +UNPACK(unpackI32BS, C32B, INT32, INT32) +UNPACK(unpackI32N, C32N, UINT32, INT32) +UNPACK(unpackI32NS, C32N, INT32, INT32) + +UNPACK_RAW(unpackF8, in[0], UINT8, FLOAT32) +UNPACK_RAW(unpackF8S, in[0], INT8, FLOAT32) +UNPACK(unpackF16, C16L, UINT16, FLOAT32) +UNPACK(unpackF16S, C16L, INT16, FLOAT32) +UNPACK(unpackF16B, C16B, UINT16, FLOAT32) +UNPACK(unpackF16BS, C16B, INT16, FLOAT32) +UNPACK(unpackF16N, C16N, UINT16, FLOAT32) +UNPACK(unpackF16NS, C16N, INT16, FLOAT32) +UNPACK(unpackF32, C32L, UINT32, FLOAT32) +UNPACK(unpackF32S, C32L, INT32, FLOAT32) +UNPACK(unpackF32B, C32B, UINT32, FLOAT32) +UNPACK(unpackF32BS, C32B, INT32, FLOAT32) +UNPACK(unpackF32N, C32N, UINT32, FLOAT32) +UNPACK(unpackF32NS, C32N, INT32, FLOAT32) +UNPACK(unpackF32F, C32L, FLOAT32, FLOAT32) +UNPACK(unpackF32BF, C32B, FLOAT32, FLOAT32) +UNPACK(unpackF32NF, C32N, FLOAT32, FLOAT32) +#ifdef FLOAT64 +UNPACK(unpackF64F, C64L, FLOAT64, FLOAT32) +UNPACK(unpackF64BF, C64B, FLOAT64, FLOAT32) +UNPACK(unpackF64NF, C64N, FLOAT64, FLOAT32) +#endif + + +/* Misc. unpackers */ + +static void +band0(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* band 0 only */ + for (i = 0; i < pixels; i++) { + out[0] = in[i]; + out += 4; + } +} + +static void +band1(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* band 1 only */ + for (i = 0; i < pixels; i++) { + out[1] = in[i]; + out += 4; + } +} + +static void +band2(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* band 2 only */ + for (i = 0; i < pixels; i++) { + out[2] = in[i]; + out += 4; + } +} + +static void +band3(UINT8* out, const UINT8* in, int pixels) +{ + /* band 3 only */ + int i; + for (i = 0; i < pixels; i++) { + out[3] = in[i]; + out += 4; + } +} + +static void +band0I(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* band 0 only */ + for (i = 0; i < pixels; i++) { + out[0] = ~in[i]; + out += 4; + } +} + +static void +band1I(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* band 1 only */ + for (i = 0; i < pixels; i++) { + out[1] = ~in[i]; + out += 4; + } +} + +static void +band2I(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* band 2 only */ + for (i = 0; i < pixels; i++) { + out[2] = ~in[i]; + out += 4; + } +} + +static void +band3I(UINT8* out, const UINT8* in, int pixels) +{ + /* band 3 only */ + int i; + for (i = 0; i < pixels; i++) { + out[3] = ~in[i]; + out += 4; + } +} + +static struct { + const char* mode; + const char* rawmode; + int bits; + ImagingShuffler unpack; +} unpackers[] = { + + /* raw mode syntax is ";" where "bits" defaults + depending on mode (1 for "1", 8 for "P" and "L", etc), and + "flags" should be given in alphabetical order. if both bits + and flags have their default values, the ; should be left out */ + + /* flags: "I" inverted data; "R" reversed bit order; "B" big + endian byte order (default is little endian); "L" line + interleave, "S" signed, "F" floating point */ + + /* bilevel */ + {"1", "1", 1, unpack1}, + {"1", "1;I", 1, unpack1I}, + {"1", "1;R", 1, unpack1R}, + {"1", "1;IR", 1, unpack1IR}, + + /* greyscale */ + {"L", "L;2", 2, unpackL2}, + {"L", "L;4", 4, unpackL4}, + {"L", "L", 8, copy1}, + {"L", "L;I", 8, unpackLI}, + {"L", "L;R", 8, unpackLR}, + {"L", "L;16", 16, unpackL16}, + {"L", "L;16B", 16, unpackL16B}, + + /* greyscale w. alpha */ + {"LA", "LA", 16, unpackLA}, + {"LA", "LA;L", 16, unpackLAL}, + + /* palette */ + {"P", "P;1", 1, unpackP1}, + {"P", "P;2", 2, unpackP2}, + {"P", "P;2L", 2, unpackP2L}, + {"P", "P;4", 4, unpackP4}, + {"P", "P;4L", 4, unpackP4L}, + {"P", "P", 8, copy1}, + {"P", "P;R", 8, unpackLR}, + + /* palette w. alpha */ + {"PA", "PA", 16, unpackLA}, + {"PA", "PA;L", 16, unpackLAL}, + + /* true colour */ + {"RGB", "RGB", 24, ImagingUnpackRGB}, + {"RGB", "RGB;L", 24, unpackRGBL}, + {"RGB", "RGB;R", 24, unpackRGBR}, + {"RGB", "RGB;16B", 48, unpackRGB16B}, + {"RGB", "BGR", 24, ImagingUnpackBGR}, + {"RGB", "BGR;15", 16, ImagingUnpackBGR15}, + {"RGB", "BGR;16", 16, ImagingUnpackBGR16}, + {"RGB", "BGR;5", 16, ImagingUnpackBGR15}, /* compat */ + {"RGB", "RGBX", 32, copy4}, + {"RGB", "RGBX;L", 32, unpackRGBAL}, + {"RGB", "BGRX", 32, ImagingUnpackBGRX}, + {"RGB", "XRGB", 24, ImagingUnpackXRGB}, + {"RGB", "XBGR", 32, ImagingUnpackXBGR}, + {"RGB", "YCC;P", 24, ImagingUnpackYCC}, + {"RGB", "R", 8, band0}, + {"RGB", "G", 8, band1}, + {"RGB", "B", 8, band2}, + + /* true colour w. alpha */ + {"RGBA", "LA", 16, unpackRGBALA}, + {"RGBA", "LA;16B", 32, unpackRGBALA16B}, + {"RGBA", "RGBA", 32, copy4}, + {"RGBA", "RGBa", 32, unpackRGBa}, + {"RGBA", "RGBA;I", 32, unpackRGBAI}, + {"RGBA", "RGBA;L", 32, unpackRGBAL}, + {"RGBA", "RGBA;16B", 64, unpackRGBA16B}, + {"RGBA", "BGRA", 32, unpackBGRA}, + {"RGBA", "ARGB", 32, unpackARGB}, + {"RGBA", "ABGR", 32, unpackABGR}, + {"RGBA", "YCCA;P", 32, ImagingUnpackYCCA}, + {"RGBA", "R", 8, band0}, + {"RGBA", "G", 8, band1}, + {"RGBA", "B", 8, band2}, + {"RGBA", "A", 8, band3}, + + /* true colour w. padding */ + {"RGBX", "RGB", 24, ImagingUnpackRGB}, + {"RGBX", "RGB;L", 24, unpackRGBL}, + {"RGBX", "RGB;16B", 48, unpackRGB16B}, + {"RGBX", "BGR", 24, ImagingUnpackBGR}, + {"RGBX", "BGR;15", 16, ImagingUnpackBGR15}, + {"RGB", "BGR;16", 16, ImagingUnpackBGR16}, + {"RGBX", "BGR;5", 16, ImagingUnpackBGR15}, /* compat */ + {"RGBX", "RGBX", 32, copy4}, + {"RGBX", "RGBX;L", 32, unpackRGBAL}, + {"RGBX", "BGRX", 32, ImagingUnpackBGRX}, + {"RGBX", "XRGB", 24, ImagingUnpackXRGB}, + {"RGBX", "XBGR", 32, ImagingUnpackXBGR}, + {"RGBX", "YCC;P", 24, ImagingUnpackYCC}, + {"RGBX", "R", 8, band0}, + {"RGBX", "G", 8, band1}, + {"RGBX", "B", 8, band2}, + {"RGBX", "X", 8, band3}, + + /* colour separation */ + {"CMYK", "CMYK", 32, copy4}, + {"CMYK", "CMYK;I", 32, unpackCMYKI}, + {"CMYK", "CMYK;L", 32, unpackRGBAL}, + {"CMYK", "C", 8, band0}, + {"CMYK", "M", 8, band1}, + {"CMYK", "Y", 8, band2}, + {"CMYK", "K", 8, band3}, + {"CMYK", "C;I", 8, band0I}, + {"CMYK", "M;I", 8, band1I}, + {"CMYK", "Y;I", 8, band2I}, + {"CMYK", "K;I", 8, band3I}, + + /* video (YCbCr) */ + {"YCbCr", "YCbCr", 24, ImagingUnpackRGB}, + {"YCbCr", "YCbCr;L", 24, unpackRGBL}, + {"YCbCr", "YCbCrX", 32, copy4}, + {"YCbCr", "YCbCrK", 32, copy4}, + + /* integer variations */ + {"I", "I", 32, copy4}, + {"I", "I;8", 8, unpackI8}, + {"I", "I;8S", 8, unpackI8S}, + {"I", "I;16", 16, unpackI16}, + {"I", "I;16S", 16, unpackI16S}, + {"I", "I;16B", 16, unpackI16B}, + {"I", "I;16BS", 16, unpackI16BS}, + {"I", "I;16N", 16, unpackI16N}, + {"I", "I;16NS", 16, unpackI16NS}, + {"I", "I;32", 32, unpackI32}, + {"I", "I;32S", 32, unpackI32S}, + {"I", "I;32B", 32, unpackI32B}, + {"I", "I;32BS", 32, unpackI32BS}, + {"I", "I;32N", 32, unpackI32N}, + {"I", "I;32NS", 32, unpackI32NS}, + + /* floating point variations */ + {"F", "F", 32, copy4}, + {"F", "F;8", 8, unpackF8}, + {"F", "F;8S", 8, unpackF8S}, + {"F", "F;16", 16, unpackF16}, + {"F", "F;16S", 16, unpackF16S}, + {"F", "F;16B", 16, unpackF16B}, + {"F", "F;16BS", 16, unpackF16BS}, + {"F", "F;16N", 16, unpackF16N}, + {"F", "F;16NS", 16, unpackF16NS}, + {"F", "F;32", 32, unpackF32}, + {"F", "F;32S", 32, unpackF32S}, + {"F", "F;32B", 32, unpackF32B}, + {"F", "F;32BS", 32, unpackF32BS}, + {"F", "F;32N", 32, unpackF32N}, + {"F", "F;32NS", 32, unpackF32NS}, + {"F", "F;32F", 32, unpackF32F}, + {"F", "F;32BF", 32, unpackF32BF}, + {"F", "F;32NF", 32, unpackF32NF}, +#ifdef FLOAT64 + {"F", "F;64F", 64, unpackF64F}, + {"F", "F;64BF", 64, unpackF64BF}, + {"F", "F;64NF", 64, unpackF64NF}, +#endif + + /* storage modes */ + {"I;16", "I;16", 16, copy2}, + {"I;16B", "I;16B", 16, copy2}, + {"I;16L", "I;16L", 16, copy2}, + + {NULL} /* sentinel */ +}; + + +ImagingShuffler +ImagingFindUnpacker(const char* mode, const char* rawmode, int* bits_out) +{ + int i; + + /* find a suitable pixel unpacker */ + for (i = 0; unpackers[i].rawmode; i++) + if (strcmp(unpackers[i].mode, mode) == 0 && + strcmp(unpackers[i].rawmode, rawmode) == 0) { + if (bits_out) + *bits_out = unpackers[i].bits; + return unpackers[i].unpack; + } + + /* FIXME: configure a general unpacker based on the type codes... */ + + return NULL; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c new file mode 100755 index 00000000000..19da1f65443 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c @@ -0,0 +1,162 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * code to convert and unpack PhotoYCC data + * + * history: + * 97-01-25 fl Moved from PcdDecode.c + * + * Copyright (c) Fredrik Lundh 1996-97. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +/* Tables generated by pcdtables.py, based on transforms taken from + the "Colour Space Conversions FAQ" by Roberts/Ford. */ + +static INT16 L[] = { 0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16, 18, +19, 20, 22, 23, 24, 26, 27, 29, 30, 31, 33, 34, 35, 37, 38, 39, 41, +42, 43, 45, 46, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 62, 64, +65, 67, 68, 69, 71, 72, 73, 75, 76, 77, 79, 80, 82, 83, 84, 86, 87, +88, 90, 91, 92, 94, 95, 96, 98, 99, 101, 102, 103, 105, 106, 107, 109, +110, 111, 113, 114, 115, 117, 118, 120, 121, 122, 124, 125, 126, 128, +129, 130, 132, 133, 134, 136, 137, 139, 140, 141, 143, 144, 145, 147, +148, 149, 151, 152, 153, 155, 156, 158, 159, 160, 162, 163, 164, 166, +167, 168, 170, 171, 173, 174, 175, 177, 178, 179, 181, 182, 183, 185, +186, 187, 189, 190, 192, 193, 194, 196, 197, 198, 200, 201, 202, 204, +205, 206, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 223, +224, 225, 227, 228, 230, 231, 232, 234, 235, 236, 238, 239, 240, 242, +243, 245, 246, 247, 249, 250, 251, 253, 254, 255, 257, 258, 259, 261, +262, 264, 265, 266, 268, 269, 270, 272, 273, 274, 276, 277, 278, 280, +281, 283, 284, 285, 287, 288, 289, 291, 292, 293, 295, 296, 297, 299, +300, 302, 303, 304, 306, 307, 308, 310, 311, 312, 314, 315, 317, 318, +319, 321, 322, 323, 325, 326, 327, 329, 330, 331, 333, 334, 336, 337, +338, 340, 341, 342, 344, 345, 346 }; + +static INT16 CB[] = { -345, -343, -341, -338, -336, -334, -332, -329, +-327, -325, -323, -321, -318, -316, -314, -312, -310, -307, -305, +-303, -301, -298, -296, -294, -292, -290, -287, -285, -283, -281, +-278, -276, -274, -272, -270, -267, -265, -263, -261, -258, -256, +-254, -252, -250, -247, -245, -243, -241, -239, -236, -234, -232, +-230, -227, -225, -223, -221, -219, -216, -214, -212, -210, -207, +-205, -203, -201, -199, -196, -194, -192, -190, -188, -185, -183, +-181, -179, -176, -174, -172, -170, -168, -165, -163, -161, -159, +-156, -154, -152, -150, -148, -145, -143, -141, -139, -137, -134, +-132, -130, -128, -125, -123, -121, -119, -117, -114, -112, -110, +-108, -105, -103, -101, -99, -97, -94, -92, -90, -88, -85, -83, -81, +-79, -77, -74, -72, -70, -68, -66, -63, -61, -59, -57, -54, -52, -50, +-48, -46, -43, -41, -39, -37, -34, -32, -30, -28, -26, -23, -21, -19, +-17, -15, -12, -10, -8, -6, -3, -1, 0, 2, 4, 7, 9, 11, 13, 16, 18, 20, +22, 24, 27, 29, 31, 33, 35, 38, 40, 42, 44, 47, 49, 51, 53, 55, 58, +60, 62, 64, 67, 69, 71, 73, 75, 78, 80, 82, 84, 86, 89, 91, 93, 95, +98, 100, 102, 104, 106, 109, 111, 113, 115, 118, 120, 122, 124, 126, +129, 131, 133, 135, 138, 140, 142, 144, 146, 149, 151, 153, 155, 157, +160, 162, 164, 166, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, +191, 193, 195, 197, 200, 202, 204, 206, 208, 211, 213, 215, 217, 220 }; + +static INT16 GB[] = { 67, 67, 66, 66, 65, 65, 65, 64, 64, 63, 63, 62, +62, 62, 61, 61, 60, 60, 59, 59, 59, 58, 58, 57, 57, 56, 56, 56, 55, +55, 54, 54, 53, 53, 52, 52, 52, 51, 51, 50, 50, 49, 49, 49, 48, 48, +47, 47, 46, 46, 46, 45, 45, 44, 44, 43, 43, 43, 42, 42, 41, 41, 40, +40, 40, 39, 39, 38, 38, 37, 37, 37, 36, 36, 35, 35, 34, 34, 34, 33, +33, 32, 32, 31, 31, 31, 30, 30, 29, 29, 28, 28, 28, 27, 27, 26, 26, +25, 25, 25, 24, 24, 23, 23, 22, 22, 22, 21, 21, 20, 20, 19, 19, 19, +18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, +11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, +1, 1, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -3, -3, -4, -4, -5, -5, -5, +-6, -6, -7, -7, -8, -8, -8, -9, -9, -10, -10, -11, -11, -11, -12, -12, +-13, -13, -14, -14, -14, -15, -15, -16, -16, -17, -17, -18, -18, -18, +-19, -19, -20, -20, -21, -21, -21, -22, -22, -23, -23, -24, -24, -24, +-25, -25, -26, -26, -27, -27, -27, -28, -28, -29, -29, -30, -30, -30, +-31, -31, -32, -32, -33, -33, -33, -34, -34, -35, -35, -36, -36, -36, +-37, -37, -38, -38, -39, -39, -39, -40, -40, -41, -41, -42 }; + +static INT16 CR[] = { -249, -247, -245, -243, -241, -239, -238, -236, +-234, -232, -230, -229, -227, -225, -223, -221, -219, -218, -216, +-214, -212, -210, -208, -207, -205, -203, -201, -199, -198, -196, +-194, -192, -190, -188, -187, -185, -183, -181, -179, -178, -176, +-174, -172, -170, -168, -167, -165, -163, -161, -159, -157, -156, +-154, -152, -150, -148, -147, -145, -143, -141, -139, -137, -136, +-134, -132, -130, -128, -127, -125, -123, -121, -119, -117, -116, +-114, -112, -110, -108, -106, -105, -103, -101, -99, -97, -96, -94, +-92, -90, -88, -86, -85, -83, -81, -79, -77, -76, -74, -72, -70, -68, +-66, -65, -63, -61, -59, -57, -55, -54, -52, -50, -48, -46, -45, -43, +-41, -39, -37, -35, -34, -32, -30, -28, -26, -25, -23, -21, -19, -17, +-15, -14, -12, -10, -8, -6, -4, -3, -1, 0, 2, 4, 5, 7, 9, 11, 13, 15, +16, 18, 20, 22, 24, 26, 27, 29, 31, 33, 35, 36, 38, 40, 42, 44, 46, +47, 49, 51, 53, 55, 56, 58, 60, 62, 64, 66, 67, 69, 71, 73, 75, 77, +78, 80, 82, 84, 86, 87, 89, 91, 93, 95, 97, 98, 100, 102, 104, 106, +107, 109, 111, 113, 115, 117, 118, 120, 122, 124, 126, 128, 129, 131, +133, 135, 137, 138, 140, 142, 144, 146, 148, 149, 151, 153, 155, 157, +158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 179, 180, 182, +184, 186, 188, 189, 191, 193, 195, 197, 199, 200, 202, 204, 206, 208, +209, 211, 213, 215 }; + +static INT16 GR[] = { 127, 126, 125, 124, 123, 122, 121, 121, 120, 119, +118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 108, 107, 106, +105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 95, 94, 93, 92, 91, +90, 89, 88, 87, 86, 85, 84, 83, 83, 82, 81, 80, 79, 78, 77, 76, 75, +74, 73, 72, 71, 70, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, +58, 57, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 45, 44, +43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 28, +27, 26, 25, 24, 23, 22, 21, 20, 19, 19, 18, 17, 16, 15, 14, 13, 12, +11, 10, 9, 8, 7, 6, 6, 5, 4, 3, 2, 1, 0, 0, -1, -2, -3, -4, -5, -5, +-6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -18, -19, +-20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -31, -32, +-33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -44, -45, +-46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -56, -57, -58, +-59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -69, -70, -71, +-72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -82, -83, -84, +-85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -94, -95, -96, -97, +-98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -107, -108 }; + +#define R 0 +#define G 1 +#define B 2 +#define A 3 + +#define YCC2RGB(rgb, y, cb, cr) {\ + int l = L[y];\ + int r = l + CR[cr];\ + int g = l + GR[cr] + GB[cb];\ + int b = l + CB[cb];\ + rgb[0] = (r <= 0) ? 0 : (r >= 255) ? 255 : r;\ + rgb[1] = (g <= 0) ? 0 : (g >= 255) ? 255 : g;\ + rgb[2] = (b <= 0) ? 0 : (b >= 255) ? 255 : b;\ +} + +void +ImagingUnpackYCC(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* PhotoYCC triplets */ + for (i = 0; i < pixels; i++) { + YCC2RGB(out, in[0], in[1], in[2]); + out[A] = 255; + out += 4; in += 3; + } +} + +void +ImagingUnpackYCCA(UINT8* out, const UINT8* in, int pixels) +{ + int i; + /* PhotoYCC triplets plus premultiplied alpha */ + for (i = 0; i < pixels; i++) { + /* Divide by alpha */ + UINT8 rgb[3]; + rgb[0] = (in[3] == 0) ? 0 : (((int) in[0] * 255) / in[3]); + rgb[1] = (in[3] == 0) ? 0 : (((int) in[1] * 255) / in[3]); + rgb[2] = (in[3] == 0) ? 0 : (((int) in[2] * 255) / in[3]); + /* Convert non-multiplied data to RGB */ + YCC2RGB(out, rgb[0], rgb[1], rgb[2]); + out[A] = in[3]; + out += 4; in += 4; + } +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c new file mode 100755 index 00000000000..2318262450e --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c @@ -0,0 +1,398 @@ +/* PILusm, a gaussian blur and unsharp masking library for PIL + By Kevin Cazabon, copyright 2003 + kevin_cazabon@hotmail.com + kevin@cazabon.com */ + +/* Originally released under LGPL. Graciously donated to PIL + for distribution under the standard PIL license in 2009." */ + +#include "Python.h" +#include "Imaging.h" + +#define PILUSMVERSION "0.6.1" + +/* version history + +0.6.1 converted to C and added to PIL 1.1.7 + +0.6.0 fixed/improved float radius support (oops!) + now that radius can be a float (properly), changed radius value to + be an actual radius (instead of diameter). So, you should get + similar results from PIL_usm as from other paint programs when + using the SAME values (no doubling of radius required any more). + Be careful, this may "break" software if you had it set for 2x + or 5x the radius as was recommended with earlier versions. + made PILusm thread-friendly (release GIL before lengthly operations, + and re-acquire it before returning to Python). This makes a huge + difference with multi-threaded applications on dual-processor + or "Hyperthreading"-enabled systems (Pentium4, Xeon, etc.) + +0.5.0 added support for float radius values! + +0.4.0 tweaked gaussian curve calculation to be closer to consistent shape + across a wide range of radius values + +0.3.0 changed deviation calculation in gausian algorithm to be dynamic + _gblur now adds 1 to the user-supplied radius before using it so + that a value of "0" returns the original image instead of a + black one. + fixed handling of alpha channel in RGBX, RGBA images + improved speed of gblur by reducing unnecessary checks and assignments + +0.2.0 fixed L-mode image support + +0.1.0 initial release + +*/ + +static inline UINT8 clip(double in) +{ + if (in >= 255.0) + return (UINT8) 255; + if (in <= 0.0) + return (UINT8) 0; + return (UINT8) in; +} + +static Imaging +gblur(Imaging im, Imaging imOut, float floatRadius, int channels, int padding) +{ + ImagingSectionCookie cookie; + + float *maskData = NULL; + int y = 0; + int x = 0; + float z = 0; + float sum = 0.0; + float dev = 0.0; + + float *buffer = NULL; + + int *line = NULL; + UINT8 *line8 = NULL; + + int pix = 0; + float newPixel[4]; + int channel = 0; + int offset = 0; + INT32 newPixelFinals; + + int radius = 0; + float remainder = 0.0; + + int i; + + /* Do the gaussian blur */ + + /* For a symmetrical gaussian blur, instead of doing a radius*radius + matrix lookup, you get the EXACT same results by doing a radius*1 + transform, followed by a 1*radius transform. This reduces the + number of lookups exponentially (10 lookups per pixel for a + radius of 5 instead of 25 lookups). So, we blur the lines first, + then we blur the resulting columns. */ + + /* first, round radius off to the next higher integer and hold the + remainder this is used so we can support float radius values + properly. */ + + remainder = floatRadius - ((int) floatRadius); + floatRadius = ceil(floatRadius); + + /* Next, double the radius and offset by 2.0... that way "0" returns + the original image instead of a black one. We multiply it by 2.0 + so that it is a true "radius", not a diameter (the results match + other paint programs closer that way too). */ + radius = (int) ((floatRadius * 2.0) + 2.0); + + /* create the maskData for the gaussian curve */ + maskData = malloc(radius * sizeof(float)); + /* FIXME: error checking */ + for (x = 0; x < radius; x++) { + z = ((float) (x + 2) / ((float) radius)); + dev = 0.5 + (((float) (radius * radius)) * 0.001); + /* you can adjust this factor to change the shape/center-weighting + of the gaussian */ + maskData[x] = (float) pow((1.0 / sqrt(2.0 * 3.14159265359 * dev)), + ((-(z - 1.0) * -(x - 1.0)) / + (2.0 * dev))); + } + + /* if there's any remainder, multiply the first/last values in + MaskData it. this allows us to support float radius values. */ + if (remainder > 0.0) { + maskData[0] *= remainder; + maskData[radius - 1] *= remainder; + } + + for (x = 0; x < radius; x++) { + /* this is done separately now due to the correction for float + radius values above */ + sum += maskData[x]; + } + + for (i = 0; i < radius; i++) { + maskData[i] *= (1.0 / sum); + /* printf("%f\n", maskData[i]); */ + } + + /* create a temporary memory buffer for the data for the first pass + memset the buffer to 0 so we can use it directly with += */ + + /* don't bother about alpha/padding */ + buffer = calloc((size_t) (im->xsize * im->ysize * channels), + sizeof(float)); + if (buffer == NULL) + return ImagingError_MemoryError(); + + /* be nice to other threads while you go off to lala land */ + ImagingSectionEnter(&cookie); + + /* memset(buffer, 0, sizeof(buffer)); */ + + newPixel[0] = newPixel[1] = newPixel[2] = newPixel[3] = 0; + + /* perform a blur on each line, and place in the temporary storage buffer */ + for (y = 0; y < im->ysize; y++) { + if (channels == 1 && im->image8 != NULL) { + line8 = (UINT8 *) im->image8[y]; + } else { + line = im->image32[y]; + } + for (x = 0; x < im->xsize; x++) { + newPixel[0] = newPixel[1] = newPixel[2] = newPixel[3] = 0; + /* for each neighbor pixel, factor in its value/weighting to the + current pixel */ + for (pix = 0; pix < radius; pix++) { + /* figure the offset of this neighbor pixel */ + offset = + (int) ((-((float) radius / 2.0) + (float) pix) + 0.5); + if (x + offset < 0) + offset = -x; + else if (x + offset >= im->xsize) + offset = im->xsize - x - 1; + + /* add (neighbor pixel value * maskData[pix]) to the current + pixel value */ + if (channels == 1) { + buffer[(y * im->xsize) + x] += + ((float) ((UINT8 *) & line8[x + offset])[0]) * + (maskData[pix]); + } else { + for (channel = 0; channel < channels; channel++) { + buffer[(y * im->xsize * channels) + + (x * channels) + channel] += + ((float) ((UINT8 *) & line[x + offset]) + [channel]) * (maskData[pix]); + } + } + } + } + } + + /* perform a blur on each column in the buffer, and place in the + output image */ + for (x = 0; x < im->xsize; x++) { + for (y = 0; y < im->ysize; y++) { + newPixel[0] = newPixel[1] = newPixel[2] = newPixel[3] = 0; + /* for each neighbor pixel, factor in its value/weighting to the + current pixel */ + for (pix = 0; pix < radius; pix++) { + /* figure the offset of this neighbor pixel */ + offset = + (int) (-((float) radius / 2.0) + (float) pix + 0.5); + if (y + offset < 0) + offset = -y; + else if (y + offset >= im->ysize) + offset = im->ysize - y - 1; + /* add (neighbor pixel value * maskData[pix]) to the current + pixel value */ + for (channel = 0; channel < channels; channel++) { + newPixel[channel] += + (buffer + [((y + offset) * im->xsize * channels) + + (x * channels) + channel]) * (maskData[pix]); + } + } + /* if the image is RGBX or RGBA, copy the 4th channel data to + newPixel, so it gets put in imOut */ + if (strcmp(im->mode, "RGBX") == 0 + || strcmp(im->mode, "RGBA") == 0) { + newPixel[3] = (float) ((UINT8 *) & line[x + offset])[3]; + } + + /* pack the channels into an INT32 so we can put them back in + the PIL image */ + newPixelFinals = 0; + if (channels == 1) { + newPixelFinals = clip(newPixel[0]); + } else { + /* for RGB, the fourth channel isn't used anyways, so just + pack a 0 in there, this saves checking the mode for each + pixel. */ + /* this doesn't work on little-endian machines... fix it! */ + newPixelFinals = + clip(newPixel[0]) | clip(newPixel[1]) << 8 | + clip(newPixel[2]) << 16 | clip(newPixel[3]) << 24; + } + /* set the resulting pixel in imOut */ + if (channels == 1) { + imOut->image8[y][x] = (UINT8) newPixelFinals; + } else { + imOut->image32[y][x] = newPixelFinals; + } + } + } + + /* free the buffer */ + free(buffer); + + /* get the GIL back so Python knows who you are */ + ImagingSectionLeave(&cookie); + + return imOut; +} + +Imaging ImagingGaussianBlur(Imaging im, Imaging imOut, float radius) +{ + int channels = 0; + int padding = 0; + + if (strcmp(im->mode, "RGB") == 0) { + channels = 3; + padding = 1; + } else if (strcmp(im->mode, "RGBA") == 0) { + channels = 3; + padding = 1; + } else if (strcmp(im->mode, "RGBX") == 0) { + channels = 3; + padding = 1; + } else if (strcmp(im->mode, "CMYK") == 0) { + channels = 4; + padding = 0; + } else if (strcmp(im->mode, "L") == 0) { + channels = 1; + padding = 0; + } else + return ImagingError_ModeError(); + + return gblur(im, imOut, radius, channels, padding); +} + +Imaging +ImagingUnsharpMask(Imaging im, Imaging imOut, float radius, int percent, + int threshold) +{ + ImagingSectionCookie cookie; + + Imaging result; + int channel = 0; + int channels = 0; + int padding = 0; + + int x = 0; + int y = 0; + + int *lineIn = NULL; + int *lineOut = NULL; + UINT8 *lineIn8 = NULL; + UINT8 *lineOut8 = NULL; + + int diff = 0; + + INT32 newPixel = 0; + + if (strcmp(im->mode, "RGB") == 0) { + channels = 3; + padding = 1; + } else if (strcmp(im->mode, "RGBA") == 0) { + channels = 3; + padding = 1; + } else if (strcmp(im->mode, "RGBX") == 0) { + channels = 3; + padding = 1; + } else if (strcmp(im->mode, "CMYK") == 0) { + channels = 4; + padding = 0; + } else if (strcmp(im->mode, "L") == 0) { + channels = 1; + padding = 0; + } else + return ImagingError_ModeError(); + + /* first, do a gaussian blur on the image, putting results in imOut + temporarily */ + result = gblur(im, imOut, radius, channels, padding); + if (!result) + return NULL; + + /* now, go through each pixel, compare "normal" pixel to blurred + pixel. if the difference is more than threshold values, apply + the OPPOSITE correction to the amount of blur, multiplied by + percent. */ + + ImagingSectionEnter(&cookie); + + for (y = 0; y < im->ysize; y++) { + if (channels == 1) { + lineIn8 = im->image8[y]; + lineOut8 = imOut->image8[y]; + } else { + lineIn = im->image32[y]; + lineOut = imOut->image32[y]; + } + for (x = 0; x < im->xsize; x++) { + newPixel = 0; + /* compare in/out pixels, apply sharpening */ + if (channels == 1) { + diff = + ((UINT8 *) & lineIn8[x])[0] - + ((UINT8 *) & lineOut8[x])[0]; + if (abs(diff) > threshold) { + /* add the diff*percent to the original pixel */ + imOut->image8[y][x] = + clip((((UINT8 *) & lineIn8[x])[0]) + + (diff * ((float) percent) / 100.0)); + } else { + /* newPixel is the same as imIn */ + imOut->image8[y][x] = ((UINT8 *) & lineIn8[x])[0]; + } + } + + else { + for (channel = 0; channel < channels; channel++) { + diff = (int) ((((UINT8 *) & lineIn[x])[channel]) - + (((UINT8 *) & lineOut[x])[channel])); + if (abs(diff) > threshold) { + /* add the diff*percent to the original pixel + this may not work for little-endian systems, fix it! */ + newPixel = + newPixel | + clip((float) (((UINT8 *) & lineIn[x])[channel]) + + + (diff * + (((float) percent / + 100.0)))) << (channel * 8); + } else { + /* newPixel is the same as imIn + this may not work for little-endian systems, fix it! */ + newPixel = + newPixel | ((UINT8 *) & lineIn[x])[channel] << + (channel * 8); + } + } + if (strcmp(im->mode, "RGBX") == 0 + || strcmp(im->mode, "RGBA") == 0) { + /* preserve the alpha channel + this may not work for little-endian systems, fix it! */ + newPixel = + newPixel | ((UINT8 *) & lineIn[x])[channel] << 24; + } + imOut->image32[y][x] = newPixel; + } + } + } + + ImagingSectionLeave(&cookie); + + return imOut; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c new file mode 100755 index 00000000000..8a203841bef --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c @@ -0,0 +1,81 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for XBM hex image data + * + * history: + * 96-04-13 fl Created + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#define HEX(v) ((v >= '0' && v <= '9') ? v - '0' :\ + (v >= 'a' && v <= 'f') ? v - 'a' + 10 :\ + (v >= 'A' && v <= 'F') ? v - 'A' + 10 : 0) + +int +ImagingXbmDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + enum { BYTE = 1, SKIP }; + + UINT8* ptr; + + if (!state->state) + state->state = SKIP; + + ptr = buf; + + for (;;) { + + if (state->state == SKIP) { + + /* Skip forward until next 'x' */ + + while (bytes > 0) { + if (*ptr == 'x') + break; + ptr++; + bytes--; + } + + if (bytes == 0) + return ptr - buf; + + state->state = BYTE; + + } + + if (bytes < 3) + return ptr - buf; + + state->buffer[state->x] = (HEX(ptr[1])<<4) + HEX(ptr[2]); + + if (++state->x >= state->bytes) { + + /* Got a full line, unpack it */ + state->shuffle((UINT8*) im->image[state->y], state->buffer, + state->xsize); + + state->x = 0; + + if (++state->y >= state->ysize) { + /* End of file (errcode = 0) */ + return -1; + } + } + + ptr += 3; + bytes -= 3; + + state->state = SKIP; + + } + +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c new file mode 100755 index 00000000000..e066fd6b583 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c @@ -0,0 +1,106 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * encoder for Xbm data + * + * history: + * 96-11-01 fl created + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + + +int +ImagingXbmEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + const char *hex = "0123456789abcdef"; + + UINT8* ptr = buf; + int i, n; + + if (!state->state) { + + /* 8 pixels are stored in no more than 6 bytes */ + state->bytes = 6*(state->xsize+7)/8; + + state->state = 1; + + } + + if (bytes < state->bytes) { + state->errcode = IMAGING_CODEC_MEMORY; + return 0; + } + + ptr = buf; + + while (bytes >= state->bytes) { + + state->shuffle(state->buffer, + (UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, state->xsize); + + if (state->y < state->ysize-1) { + + /* any line but the last */ + for (n = 0; n < state->xsize; n += 8) { + + i = state->buffer[n/8]; + + *ptr++ = '0'; + *ptr++ = 'x'; + *ptr++ = hex[(i>>4)&15]; + *ptr++ = hex[i&15]; + *ptr++ = ','; + bytes -= 5; + + if (++state->count >= 79/5) { + *ptr++ = '\n'; + bytes--; + state->count = 0; + } + + } + + state->y++; + + } else { + + /* last line */ + for (n = 0; n < state->xsize; n += 8) { + + i = state->buffer[n/8]; + + *ptr++ = '0'; + *ptr++ = 'x'; + *ptr++ = hex[(i>>4)&15]; + *ptr++ = hex[i&15]; + + if (n < state->xsize-8) { + *ptr++ = ','; + if (++state->count >= 79/5) { + *ptr++ = '\n'; + bytes--; + state->count = 0; + } + } else + *ptr++ = '\n'; + + bytes -= 5; + + } + + state->errcode = IMAGING_CODEC_END; + break; + } + } + + return ptr - buf; +} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h new file mode 100755 index 00000000000..d961407e31b --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h @@ -0,0 +1,57 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * declarations for the ZIP codecs + * + * Copyright (c) Fredrik Lundh 1996. + */ + + +#include "zlib.h" + + +/* modes */ +#define ZIP_PNG 0 /* continuous, filtered image data */ +#define ZIP_PNG_PALETTE 1 /* non-continuous data, disable filtering */ +#define ZIP_TIFF_PREDICTOR 2 /* TIFF, with predictor */ +#define ZIP_TIFF 3 /* TIFF, without predictor */ + + +typedef struct { + + /* CONFIGURATION */ + + /* Codec mode */ + int mode; + + /* Optimize (max compression) SLOW!!! */ + int optimize; + + /* Predefined dictionary (experimental) */ + char* dictionary; + int dictionary_size; + + /* PRIVATE CONTEXT (set by decoder/encoder) */ + + z_stream z_stream; /* (de)compression stream */ + + UINT8* previous; /* previous line (allocated) */ + + int last_output; /* # bytes last output by inflate */ + + /* Compressor specific stuff */ + UINT8* prior; /* filter storage (allocated) */ + UINT8* up; + UINT8* average; + UINT8* paeth; + + UINT8* output; /* output data */ + + int prefix; /* size of filter prefix (0 for TIFF data) */ + + int interlaced; /* is the image interlaced? (PNG) */ + + int pass; /* current pass of the interlaced image (PNG) */ + +} ZIPSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c new file mode 100755 index 00000000000..08cdc718964 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c @@ -0,0 +1,271 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * decoder for ZIP (deflated) image data. + * + * history: + * 1996-12-14 fl Created (for PNG) + * 1997-01-15 fl Prepared to read TIFF/ZIP + * 2001-11-19 fl PNG incomplete read patch (from Bernhard Herzog) + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997-2001. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#ifdef HAVE_LIBZ + +#include "Zip.h" + +static const int OFFSET[] = { 7, 3, 3, 1, 1, 0, 0 }; +static const int STARTING_COL[] = { 0, 4, 0, 2, 0, 1, 0 }; +static const int STARTING_ROW[] = { 0, 0, 4, 0, 2, 0, 1 }; +static const int COL_INCREMENT[] = { 8, 8, 4, 4, 2, 2, 1 }; +static const int ROW_INCREMENT[] = { 8, 8, 8, 4, 4, 2, 2 }; + +/* Get the length in bytes of a scanline in the pass specified, + * for interlaced images */ +static int get_row_len(ImagingCodecState state, int pass) +{ + int row_len = (state->xsize + OFFSET[pass]) / COL_INCREMENT[pass]; + return ((row_len * state->bits) + 7) / 8; +} + +/* -------------------------------------------------------------------- */ +/* Decoder */ +/* -------------------------------------------------------------------- */ + +int +ImagingZipDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + ZIPSTATE* context = (ZIPSTATE*) state->context; + int err; + int n; + UINT8* ptr; + int i, bpp; + int row_len; + + if (!state->state) { + + /* Initialization */ + if (context->mode == ZIP_PNG || context->mode == ZIP_PNG_PALETTE) + context->prefix = 1; /* PNG */ + + /* Expand standard buffer to make room for the (optional) filter + prefix, and allocate a buffer to hold the previous line */ + free(state->buffer); + state->buffer = (UINT8*) malloc(state->bytes+1); + context->previous = (UINT8*) malloc(state->bytes+1); + if (!state->buffer || !context->previous) { + state->errcode = IMAGING_CODEC_MEMORY; + return -1; + } + + context->last_output = 0; + + /* Initialize to black */ + memset(context->previous, 0, state->bytes+1); + + /* Setup decompression context */ + context->z_stream.zalloc = (alloc_func) NULL; + context->z_stream.zfree = (free_func) NULL; + context->z_stream.opaque = (voidpf) NULL; + + err = inflateInit(&context->z_stream); + if (err < 0) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + + if (context->interlaced) { + context->pass = 0; + state->y = STARTING_ROW[context->pass]; + } + + /* Ready to decode */ + state->state = 1; + + } + + if (context->interlaced) { + row_len = get_row_len(state, context->pass); + } else { + row_len = state->bytes; + } + + /* Setup the source buffer */ + context->z_stream.next_in = buf; + context->z_stream.avail_in = bytes; + + /* Decompress what we've got this far */ + while (context->z_stream.avail_in > 0) { + + context->z_stream.next_out = state->buffer + context->last_output; + context->z_stream.avail_out = + row_len + context->prefix - context->last_output; + + err = inflate(&context->z_stream, Z_NO_FLUSH); + + if (err < 0) { + /* Something went wrong inside the compression library */ + if (err == Z_DATA_ERROR) + state->errcode = IMAGING_CODEC_BROKEN; + else if (err == Z_MEM_ERROR) + state->errcode = IMAGING_CODEC_MEMORY; + else + state->errcode = IMAGING_CODEC_CONFIG; + free(context->previous); + inflateEnd(&context->z_stream); + return -1; + } + + n = row_len + context->prefix - context->z_stream.avail_out; + + if (n < row_len + context->prefix) { + context->last_output = n; + break; /* need more input data */ + } + + /* Apply predictor */ + switch (context->mode) { + case ZIP_PNG: + switch (state->buffer[0]) { + case 0: + break; + case 1: + /* prior */ + bpp = (state->bits + 7) / 8; + for (i = bpp+1; i <= row_len; i++) + state->buffer[i] += state->buffer[i-bpp]; + break; + case 2: + /* up */ + for (i = 1; i <= row_len; i++) + state->buffer[i] += context->previous[i]; + break; + case 3: + /* average */ + bpp = (state->bits + 7) / 8; + for (i = 1; i <= bpp; i++) + state->buffer[i] += context->previous[i]/2; + for (; i <= row_len; i++) + state->buffer[i] += + (state->buffer[i-bpp] + context->previous[i])/2; + break; + case 4: + /* paeth filtering */ + bpp = (state->bits + 7) / 8; + for (i = 1; i <= bpp; i++) + state->buffer[i] += context->previous[i]; + for (; i <= row_len; i++) { + int a, b, c; + int pa, pb, pc; + + /* fetch pixels */ + a = state->buffer[i-bpp]; + b = context->previous[i]; + c = context->previous[i-bpp]; + + /* distances to surrounding pixels */ + pa = abs(b - c); + pb = abs(a - c); + pc = abs(a + b - 2*c); + + /* pick predictor with the shortest distance */ + state->buffer[i] += + (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c; + + } + break; + default: + state->errcode = IMAGING_CODEC_UNKNOWN; + free(context->previous); + inflateEnd(&context->z_stream); + return -1; + } + break; + case ZIP_TIFF_PREDICTOR: + bpp = (state->bits + 7) / 8; + for (i = bpp+1; i <= row_len; i++) + state->buffer[i] += state->buffer[i-bpp]; + break; + } + + /* Stuff data into the image */ + if (context->interlaced) { + int col = STARTING_COL[context->pass]; + if (state->bits >= 8) { + /* Stuff pixels in their correct location, one by one */ + for (i = 0; i < row_len; i += ((state->bits + 7) / 8)) { + state->shuffle((UINT8*) im->image[state->y] + + col * im->pixelsize, + state->buffer + context->prefix + i, 1); + col += COL_INCREMENT[context->pass]; + } + } else { + /* Handle case with more than a pixel in each byte */ + int row_bits = ((state->xsize + OFFSET[context->pass]) + / COL_INCREMENT[context->pass]) * state->bits; + for (i = 0; i < row_bits; i += state->bits) { + UINT8 byte = *(state->buffer + context->prefix + (i / 8)); + byte <<= (i % 8); + state->shuffle((UINT8*) im->image[state->y] + + col * im->pixelsize, &byte, 1); + col += COL_INCREMENT[context->pass]; + } + } + /* Find next valid scanline */ + state->y += ROW_INCREMENT[context->pass]; + while (state->y >= state->ysize || row_len <= 0) { + context->pass++; + if (context->pass == 7) { + /* Force exit below */ + state->y = state->ysize; + break; + } + state->y = STARTING_ROW[context->pass]; + row_len = get_row_len(state, context->pass); + /* Since we're moving to the "first" line, the previous line + * should be black to make filters work corectly */ + memset(state->buffer, 0, state->bytes+1); + } + } else { + state->shuffle((UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, + state->buffer + context->prefix, + state->xsize); + state->y++; + } + + /* all inflate output has been consumed */ + context->last_output = 0; + + if (state->y >= state->ysize || err == Z_STREAM_END) { + + /* The image and the data should end simultaneously */ + /* if (state->y < state->ysize || err != Z_STREAM_END) + state->errcode = IMAGING_CODEC_BROKEN; */ + + free(context->previous); + inflateEnd(&context->z_stream); + return -1; /* end of file (errcode=0) */ + + } + + /* Swap buffer pointers */ + ptr = state->buffer; + state->buffer = context->previous; + context->previous = ptr; + + } + + return bytes; /* consumed all of it */ + +} + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c new file mode 100755 index 00000000000..19b2b778783 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c @@ -0,0 +1,341 @@ +/* + * The Python Imaging Library. + * $Id$ + * + * coder for ZIP (deflated) image data + * + * History: + * 96-12-29 fl created + * 96-12-30 fl adaptive filter selection, encoder tuning + * + * Copyright (c) Fredrik Lundh 1996. + * Copyright (c) Secret Labs AB 1997. + * + * See the README file for information on usage and redistribution. + */ + + +#include "Imaging.h" + +#ifdef HAVE_LIBZ + +#include "Zip.h" + +int +ImagingZipEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) +{ + ZIPSTATE* context = (ZIPSTATE*) state->context; + int err; + UINT8* ptr; + int i, bpp, s, sum; + ImagingSectionCookie cookie; + + if (!state->state) { + + /* Initialization */ + + /* Valid modes are ZIP_PNG, ZIP_PNG_PALETTE, and ZIP_TIFF */ + + /* Expand standard buffer to make room for the filter selector, + and allocate filter buffers */ + free(state->buffer); + state->buffer = (UINT8*) malloc(state->bytes+1); + context->previous = (UINT8*) malloc(state->bytes+1); + context->prior = (UINT8*) malloc(state->bytes+1); + context->up = (UINT8*) malloc(state->bytes+1); + context->average = (UINT8*) malloc(state->bytes+1); + context->paeth = (UINT8*) malloc(state->bytes+1); + if (!state->buffer || !context->previous || !context->prior || + !context->up || !context->average || !context->paeth) { + free(context->paeth); + free(context->average); + free(context->up); + free(context->prior); + free(context->previous); + state->errcode = IMAGING_CODEC_MEMORY; + return -1; + } + + /* Initalise filter buffers */ + state->buffer[0] = 0; + context->prior[0] = 1; + context->up[0] = 2; + context->average[0] = 3; + context->paeth[0] = 4; + + /* Initialise previous buffer to black */ + memset(context->previous, 0, state->bytes+1); + + /* Setup compression context */ + context->z_stream.zalloc = (alloc_func)0; + context->z_stream.zfree = (free_func)0; + context->z_stream.opaque = (voidpf)0; + context->z_stream.next_in = 0; + context->z_stream.avail_in = 0; + + err = deflateInit2(&context->z_stream, + /* compression level */ + (context->optimize) ? Z_BEST_COMPRESSION + : Z_DEFAULT_COMPRESSION, + /* compression method */ + Z_DEFLATED, + /* compression memory resources */ + 15, 9, + /* compression strategy (image data are filtered)*/ + (context->mode == ZIP_PNG) ? Z_FILTERED + : Z_DEFAULT_STRATEGY); + if (err < 0) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + + if (context->dictionary && context->dictionary_size > 0) { + err = deflateSetDictionary(&context->z_stream, (unsigned char *)context->dictionary, + context->dictionary_size); + if (err < 0) { + state->errcode = IMAGING_CODEC_CONFIG; + return -1; + } + } + + /* Ready to decode */ + state->state = 1; + + } + + /* Setup the destination buffer */ + context->z_stream.next_out = buf; + context->z_stream.avail_out = bytes; + if (context->z_stream.next_in && context->z_stream.avail_in > 0) { + /* We have some data from previous round, deflate it first */ + err = deflate(&context->z_stream, Z_NO_FLUSH); + + if (err < 0) { + /* Something went wrong inside the compression library */ + if (err == Z_DATA_ERROR) + state->errcode = IMAGING_CODEC_BROKEN; + else if (err == Z_MEM_ERROR) + state->errcode = IMAGING_CODEC_MEMORY; + else + state->errcode = IMAGING_CODEC_CONFIG; + free(context->paeth); + free(context->average); + free(context->up); + free(context->prior); + free(context->previous); + deflateEnd(&context->z_stream); + return -1; + } + } + + ImagingSectionEnter(&cookie); + for (;;) { + + switch (state->state) { + + case 1: + + /* Compress image data */ + while (context->z_stream.avail_out > 0) { + + if (state->y >= state->ysize) { + /* End of image; now flush compressor buffers */ + state->state = 2; + break; + + } + + /* Stuff image data into the compressor */ + state->shuffle(state->buffer+1, + (UINT8*) im->image[state->y + state->yoff] + + state->xoff * im->pixelsize, + state->xsize); + + state->y++; + + context->output = state->buffer; + + if (context->mode == ZIP_PNG) { + + /* Filter the image data. For each line, select + the filter that gives the least total distance + from zero for the filtered data (taken from + LIBPNG) */ + + bpp = (state->bits + 7) / 8; + + /* 0. No filter */ + for (i = 1, sum = 0; i <= state->bytes; i++) { + UINT8 v = state->buffer[i]; + sum += (v < 128) ? v : 256 - v; + } + + /* 2. Up. We'll test this first to save time when + an image line is identical to the one above. */ + if (sum > 0) { + for (i = 1, s = 0; i <= state->bytes; i++) { + UINT8 v = state->buffer[i] - context->previous[i]; + context->up[i] = v; + s += (v < 128) ? v : 256 - v; + } + if (s < sum) { + context->output = context->up; + sum = s; /* 0 if line was duplicated */ + } + } + + /* 1. Prior */ + if (sum > 0) { + for (i = 1, s = 0; i <= bpp; i++) { + UINT8 v = state->buffer[i]; + context->prior[i] = v; + s += (v < 128) ? v : 256 - v; + } + for (; i <= state->bytes; i++) { + UINT8 v = state->buffer[i] - state->buffer[i-bpp]; + context->prior[i] = v; + s += (v < 128) ? v : 256 - v; + } + if (s < sum) { + context->output = context->prior; + sum = s; /* 0 if line is solid */ + } + } + + /* 3. Average (not very common in real-life images, + so its only used with the optimize option) */ + if (context->optimize && sum > 0) { + for (i = 1, s = 0; i <= bpp; i++) { + UINT8 v = state->buffer[i] - context->previous[i]/2; + context->average[i] = v; + s += (v < 128) ? v : 256 - v; + } + for (; i <= state->bytes; i++) { + UINT8 v = state->buffer[i] - + (state->buffer[i-bpp] + context->previous[i])/2; + context->average[i] = v; + s += (v < 128) ? v : 256 - v; + } + if (s < sum) { + context->output = context->average; + sum = s; + } + } + + /* 4. Paeth */ + if (sum > 0) { + for (i = 1, s = 0; i <= bpp; i++) { + UINT8 v = state->buffer[i] - context->previous[i]; + context->paeth[i] = v; + s += (v < 128) ? v : 256 - v; + } + for (; i <= state->bytes; i++) { + UINT8 v; + int a, b, c; + int pa, pb, pc; + + /* fetch pixels */ + a = state->buffer[i-bpp]; + b = context->previous[i]; + c = context->previous[i-bpp]; + + /* distances to surrounding pixels */ + pa = abs(b - c); + pb = abs(a - c); + pc = abs(a + b - 2*c); + + /* pick predictor with the shortest distance */ + v = state->buffer[i] - + ((pa <= pb && pa <= pc) ? a : + (pb <= pc) ? b : c); + context->paeth[i] = v; + s += (v < 128) ? v : 256 - v; + } + if (s < sum) { + context->output = context->paeth; + sum = s; + } + } + } + + /* Compress this line */ + context->z_stream.next_in = context->output; + context->z_stream.avail_in = state->bytes+1; + + err = deflate(&context->z_stream, Z_NO_FLUSH); + + if (err < 0) { + /* Something went wrong inside the compression library */ + if (err == Z_DATA_ERROR) + state->errcode = IMAGING_CODEC_BROKEN; + else if (err == Z_MEM_ERROR) + state->errcode = IMAGING_CODEC_MEMORY; + else + state->errcode = IMAGING_CODEC_CONFIG; + free(context->paeth); + free(context->average); + free(context->up); + free(context->prior); + free(context->previous); + deflateEnd(&context->z_stream); + ImagingSectionLeave(&cookie); + return -1; + } + + /* Swap buffer pointers */ + ptr = state->buffer; + state->buffer = context->previous; + context->previous = ptr; + + } + + if (context->z_stream.avail_out == 0) + break; /* Buffer full */ + + case 2: + + /* End of image data; flush compressor buffers */ + + while (context->z_stream.avail_out > 0) { + + err = deflate(&context->z_stream, Z_FINISH); + + if (err == Z_STREAM_END) { + + free(context->paeth); + free(context->average); + free(context->up); + free(context->prior); + free(context->previous); + + deflateEnd(&context->z_stream); + + state->errcode = IMAGING_CODEC_END; + + break; + } + + if (context->z_stream.avail_out == 0) + break; /* Buffer full */ + + } + + } + ImagingSectionLeave(&cookie); + return bytes - context->z_stream.avail_out; + + } + + /* Should never ever arrive here... */ + state->errcode = IMAGING_CODEC_CONFIG; + ImagingSectionLeave(&cookie); + return -1; +} + +const char* +ImagingZipVersion(void) +{ + return ZLIB_VERSION; +} + +#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/map.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/map.c new file mode 100755 index 00000000000..f15b8200f8a --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/map.c @@ -0,0 +1,379 @@ +/* + * The Python Imaging Library. + * + * standard memory mapping interface for the Imaging library + * + * history: + * 1998-03-05 fl added Win32 read mapping + * 1999-02-06 fl added "I;16" support + * 2003-04-21 fl added PyImaging_MapBuffer primitive + * + * Copyright (c) 1998-2003 by Secret Labs AB. + * Copyright (c) 2003 by Fredrik Lundh. + * + * See the README file for information on usage and redistribution. + */ + +/* + * FIXME: should move the memory mapping primitives into libImaging! + */ + +#include "Python.h" + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#include "Imaging.h" + +#ifdef WIN32 +#define WIN32_LEAN_AND_MEAN +#undef INT32 +#undef INT64 +#undef UINT32 +#include "windows.h" +#endif + +/* compatibility wrappers (defined in _imaging.c) */ +extern int PyImaging_CheckBuffer(PyObject* buffer); +extern int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr); + +/* -------------------------------------------------------------------- */ +/* Standard mapper */ + +typedef struct { + PyObject_HEAD + char* base; + int size; + int offset; +#ifdef WIN32 + HANDLE hFile; + HANDLE hMap; +#endif +} ImagingMapperObject; + +staticforward PyTypeObject ImagingMapperType; + +ImagingMapperObject* +PyImaging_MapperNew(const char* filename, int readonly) +{ + ImagingMapperObject *mapper; + + ImagingMapperType.ob_type = &PyType_Type; + + mapper = PyObject_New(ImagingMapperObject, &ImagingMapperType); + if (mapper == NULL) + return NULL; + + mapper->base = NULL; + mapper->size = mapper->offset = 0; + +#ifdef WIN32 + mapper->hFile = (HANDLE)-1; + mapper->hMap = (HANDLE)-1; + + /* FIXME: currently supports readonly mappings only */ + mapper->hFile = CreateFile( + filename, + GENERIC_READ, + FILE_SHARE_READ, + NULL, OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); + if (mapper->hFile == (HANDLE)-1) { + PyErr_SetString(PyExc_IOError, "cannot open file"); + PyObject_Del(mapper); + return NULL; + } + + mapper->hMap = CreateFileMapping( + mapper->hFile, NULL, + PAGE_READONLY, + 0, 0, NULL); + if (mapper->hMap == (HANDLE)-1) { + CloseHandle(mapper->hFile); + PyErr_SetString(PyExc_IOError, "cannot map file"); + PyObject_Del(mapper); + return NULL; + } + + mapper->base = (char*) MapViewOfFile( + mapper->hMap, + FILE_MAP_READ, + 0, 0, 0); + + mapper->size = GetFileSize(mapper->hFile, 0); +#endif + + return mapper; +} + +static void +mapping_dealloc(ImagingMapperObject* mapper) +{ +#ifdef WIN32 + if (mapper->base != 0) + UnmapViewOfFile(mapper->base); + if (mapper->hMap != (HANDLE)-1) + CloseHandle(mapper->hMap); + if (mapper->hFile != (HANDLE)-1) + CloseHandle(mapper->hFile); + mapper->base = 0; + mapper->hMap = mapper->hFile = (HANDLE)-1; +#endif + PyObject_Del(mapper); +} + +/* -------------------------------------------------------------------- */ +/* standard file operations */ + +static PyObject* +mapping_read(ImagingMapperObject* mapper, PyObject* args) +{ + PyObject* buf; + + int size = -1; + if (!PyArg_ParseTuple(args, "|i", &size)) + return NULL; + + /* check size */ + if (size < 0 || mapper->offset + size > mapper->size) + size = mapper->size - mapper->offset; + if (size < 0) + size = 0; + + buf = PyString_FromStringAndSize(NULL, size); + if (!buf) + return NULL; + + if (size > 0) { + memcpy(PyString_AsString(buf), mapper->base + mapper->offset, size); + mapper->offset += size; + } + + return buf; +} + +static PyObject* +mapping_seek(ImagingMapperObject* mapper, PyObject* args) +{ + int offset; + int whence = 0; + if (!PyArg_ParseTuple(args, "i|i", &offset, &whence)) + return NULL; + + switch (whence) { + case 0: /* SEEK_SET */ + mapper->offset = offset; + break; + case 1: /* SEEK_CUR */ + mapper->offset += offset; + break; + case 2: /* SEEK_END */ + mapper->offset = mapper->size + offset; + break; + default: + /* FIXME: raise ValueError? */ + break; + } + + Py_INCREF(Py_None); + return Py_None; +} + +/* -------------------------------------------------------------------- */ +/* map entire image */ + +extern PyObject*PyImagingNew(Imaging im); + +static void +ImagingDestroyMap(Imaging im) +{ + return; /* nothing to do! */ +} + +static PyObject* +mapping_readimage(ImagingMapperObject* mapper, PyObject* args) +{ + int y, size; + Imaging im; + + char* mode; + int xsize; + int ysize; + int stride; + int orientation; + if (!PyArg_ParseTuple(args, "s(ii)ii", &mode, &xsize, &ysize, + &stride, &orientation)) + return NULL; + + if (stride <= 0) { + /* FIXME: maybe we should call ImagingNewPrologue instead */ + if (!strcmp(mode, "L") || !strcmp(mode, "P")) + stride = xsize; + else if (!strcmp(mode, "I;16") || !strcmp(mode, "I;16B")) + stride = xsize * 2; + else + stride = xsize * 4; + } + + size = ysize * stride; + + if (mapper->offset + size > mapper->size) { + PyErr_SetString(PyExc_IOError, "image file truncated"); + return NULL; + } + + im = ImagingNewPrologue(mode, xsize, ysize); + if (!im) + return NULL; + + /* setup file pointers */ + if (orientation > 0) + for (y = 0; y < ysize; y++) + im->image[y] = mapper->base + mapper->offset + y * stride; + else + for (y = 0; y < ysize; y++) + im->image[ysize-y-1] = mapper->base + mapper->offset + y * stride; + + im->destroy = ImagingDestroyMap; + + if (!ImagingNewEpilogue(im)) + return NULL; + + mapper->offset += size; + + return PyImagingNew(im); +} + +static struct PyMethodDef methods[] = { + /* standard file interface */ + {"read", (PyCFunction)mapping_read, 1}, + {"seek", (PyCFunction)mapping_seek, 1}, + /* extensions */ + {"readimage", (PyCFunction)mapping_readimage, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +mapping_getattr(ImagingMapperObject* self, char* name) +{ + return Py_FindMethod(methods, (PyObject*) self, name); +} + +statichere PyTypeObject ImagingMapperType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "ImagingMapper", /*tp_name*/ + sizeof(ImagingMapperObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)mapping_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)mapping_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_hash*/ +}; + +PyObject* +PyImaging_Mapper(PyObject* self, PyObject* args) +{ + char* filename; + if (!PyArg_ParseTuple(args, "s", &filename)) + return NULL; + + return (PyObject*) PyImaging_MapperNew(filename, 1); +} + +/* -------------------------------------------------------------------- */ +/* Buffer mapper */ + +typedef struct ImagingBufferInstance { + struct ImagingMemoryInstance im; + PyObject* target; +} ImagingBufferInstance; + +static void +mapping_destroy_buffer(Imaging im) +{ + ImagingBufferInstance* buffer = (ImagingBufferInstance*) im; + + Py_XDECREF(buffer->target); +} + +PyObject* +PyImaging_MapBuffer(PyObject* self, PyObject* args) +{ + int y, size; + Imaging im; + char* ptr; + int bytes; + + PyObject* target; + char* mode; + char* codec; + PyObject* bbox; + int offset; + int xsize, ysize; + int stride; + int ystep; + + if (!PyArg_ParseTuple(args, "O(ii)sOi(sii)", &target, &xsize, &ysize, + &codec, &bbox, &offset, &mode, &stride, &ystep)) + return NULL; + + if (!PyImaging_CheckBuffer(target)) { + PyErr_SetString(PyExc_TypeError, "expected string or buffer"); + return NULL; + } + + if (stride <= 0) { + if (!strcmp(mode, "L") || !strcmp(mode, "P")) + stride = xsize; + else if (!strncmp(mode, "I;16", 4)) + stride = xsize * 2; + else + stride = xsize * 4; + } + + size = ysize * stride; + + /* check buffer size */ + bytes = PyImaging_ReadBuffer(target, (const void**) &ptr); + if (bytes < 0) { + PyErr_SetString(PyExc_ValueError, "buffer has negative size"); + return NULL; + } + if (offset + size > bytes) { + PyErr_SetString(PyExc_ValueError, "buffer is not large enough"); + return NULL; + } + + im = ImagingNewPrologueSubtype( + mode, xsize, ysize, sizeof(ImagingBufferInstance) + ); + if (!im) + return NULL; + + /* setup file pointers */ + if (ystep > 0) + for (y = 0; y < ysize; y++) + im->image[y] = ptr + offset + y * stride; + else + for (y = 0; y < ysize; y++) + im->image[ysize-y-1] = ptr + offset + y * stride; + + im->destroy = mapping_destroy_buffer; + + Py_INCREF(target); + ((ImagingBufferInstance*) im)->target = target; + + if (!ImagingNewEpilogue(im)) + return NULL; + + return PyImagingNew(im); +} + diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c new file mode 100755 index 00000000000..6bb2ebb547c --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c @@ -0,0 +1,179 @@ +/* + * THIS IS WORK IN PROGRESS. + * + * The Python Imaging Library. + * + * "arrow" outline stuff. the contents of this module + * will be merged with the path module and the rest of + * the arrow graphics package, but not before PIL 1.1. + * use at your own risk. + * + * history: + * 99-01-10 fl Added to PIL (experimental) + * + * Copyright (c) Secret Labs AB 1999. + * Copyright (c) Fredrik Lundh 1999. + * + * See the README file for information on usage and redistribution. + */ + +#include "Python.h" + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#include "Imaging.h" + + +/* -------------------------------------------------------------------- */ +/* Class */ + +typedef struct { + PyObject_HEAD + ImagingOutline outline; +} OutlineObject; + +staticforward PyTypeObject OutlineType; + +#define PyOutline_Check(op) ((op)->ob_type == &OutlineType) + +static OutlineObject* +_outline_new(void) +{ + OutlineObject *self; + + self = PyObject_New(OutlineObject, &OutlineType); + if (self == NULL) + return NULL; + + self->outline = ImagingOutlineNew(); + + return self; +} + +static void +_outline_dealloc(OutlineObject* self) +{ + ImagingOutlineDelete(self->outline); + PyObject_Del(self); +} + +ImagingOutline +PyOutline_AsOutline(PyObject* outline) +{ + if (PyOutline_Check(outline)) + return ((OutlineObject*) outline)->outline; + + return NULL; +} + + +/* -------------------------------------------------------------------- */ +/* Factories */ + +PyObject* +PyOutline_Create(PyObject* self, PyObject* args) +{ + if (!PyArg_ParseTuple(args, ":outline")) + return NULL; + + return (PyObject*) _outline_new(); +} + + +/* -------------------------------------------------------------------- */ +/* Methods */ + +static PyObject* +_outline_move(OutlineObject* self, PyObject* args) +{ + float x0, y0; + if (!PyArg_ParseTuple(args, "ff", &x0, &y0)) + return NULL; + + ImagingOutlineMove(self->outline, x0, y0); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_outline_line(OutlineObject* self, PyObject* args) +{ + float x1, y1; + if (!PyArg_ParseTuple(args, "ff", &x1, &y1)) + return NULL; + + ImagingOutlineLine(self->outline, x1, y1); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_outline_curve(OutlineObject* self, PyObject* args) +{ + float x1, y1, x2, y2, x3, y3; + if (!PyArg_ParseTuple(args, "ffffff", &x1, &y1, &x2, &y2, &x3, &y3)) + return NULL; + + ImagingOutlineCurve(self->outline, x1, y1, x2, y2, x3, y3); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_outline_close(OutlineObject* self, PyObject* args) +{ + if (!PyArg_ParseTuple(args, ":close")) + return NULL; + + ImagingOutlineClose(self->outline); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject* +_outline_transform(OutlineObject* self, PyObject* args) +{ + double a[6]; + if (!PyArg_ParseTuple(args, "(dddddd)", a+0, a+1, a+2, a+3, a+4, a+5)) + return NULL; + + ImagingOutlineTransform(self->outline, a); + + Py_INCREF(Py_None); + return Py_None; +} + +static struct PyMethodDef _outline_methods[] = { + {"line", (PyCFunction)_outline_line, 1}, + {"curve", (PyCFunction)_outline_curve, 1}, + {"move", (PyCFunction)_outline_move, 1}, + {"close", (PyCFunction)_outline_close, 1}, + {"transform", (PyCFunction)_outline_transform, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +_outline_getattr(OutlineObject* self, char* name) +{ + return Py_FindMethod(_outline_methods, (PyObject*) self, name); +} + +statichere PyTypeObject OutlineType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "Outline", /*tp_name*/ + sizeof(OutlineObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)_outline_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)_outline_getattr, /*tp_getattr*/ + 0 /*tp_setattr*/ +}; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/path.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/path.c new file mode 100755 index 00000000000..f083b971d04 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/path.c @@ -0,0 +1,587 @@ +/* + * The Python Imaging Library. + * + * 2D path utilities + * + * history: + * 1996-11-04 fl Added to PIL (incomplete) + * 1996-11-05 fl Added sequence semantics + * 1997-02-28 fl Fixed getbbox + * 1997-06-12 fl Added id attribute + * 1997-06-14 fl Added slicing and setitem + * 1998-12-29 fl Improved sequence handling (from Richard Jones) + * 1999-01-10 fl Fixed IndexError test for 1.5 (from Fred Drake) + * 2000-10-12 fl Added special cases for tuples and lists + * 2002-10-27 fl Added clipping boilerplate + * 2004-09-19 fl Added tolist(flat) variant + * 2005-05-06 fl Added buffer interface support to path constructor + * + * notes: + * FIXME: fill in remaining slots in the sequence api + * + * Copyright (c) 1997-2005 by Secret Labs AB + * Copyright (c) 1997-2005 by Fredrik Lundh + * + * See the README file for information on usage and redistribution. + */ + + +#include "Python.h" + +#include + +#if PY_VERSION_HEX < 0x01060000 +#define PyObject_New PyObject_NEW +#define PyObject_Del PyMem_DEL +#endif + +#if PY_VERSION_HEX < 0x02050000 +#define Py_ssize_t int +#define lenfunc inquiry +#define ssizeargfunc intargfunc +#define ssizessizeargfunc intintargfunc +#define ssizeobjargproc intobjargproc +#define ssizessizeobjargproc intintobjargproc +#endif + +/* compatibility wrappers (defined in _imaging.c) */ +extern int PyImaging_CheckBuffer(PyObject* buffer); +extern int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr); + +/* -------------------------------------------------------------------- */ +/* Class */ +/* -------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + Py_ssize_t count; + double *xy; + int index; /* temporary use, e.g. in decimate */ +} PyPathObject; + +staticforward PyTypeObject PyPathType; + +static double* +alloc_array(int count) +{ + double* xy; + if (count < 0) { + PyErr_NoMemory(); + return NULL; + } + xy = malloc(2 * count * sizeof(double) + 1); + if (!xy) + PyErr_NoMemory(); + return xy; +} + +static PyPathObject* +path_new(Py_ssize_t count, double* xy, int duplicate) +{ + PyPathObject *path; + + if (duplicate) { + /* duplicate path */ + double* p = alloc_array(count); + if (!p) + return NULL; + memcpy(p, xy, count * 2 * sizeof(double)); + xy = p; + } + + path = PyObject_New(PyPathObject, &PyPathType); + if (path == NULL) + return NULL; + + path->count = count; + path->xy = xy; + + return path; +} + +static void +path_dealloc(PyPathObject* path) +{ + free(path->xy); + PyObject_Del(path); +} + +/* -------------------------------------------------------------------- */ +/* Helpers */ +/* -------------------------------------------------------------------- */ + +#define PyPath_Check(op) ((op)->ob_type == &PyPathType) + +int +PyPath_Flatten(PyObject* data, double **pxy) +{ + int i, j, n; + double *xy; + + if (PyPath_Check(data)) { + /* This was another path object. */ + PyPathObject *path = (PyPathObject*) data; + xy = alloc_array(path->count); + if (!xy) + return -1; + memcpy(xy, path->xy, 2 * path->count * sizeof(double)); + *pxy = xy; + return path->count; + } + + if (PyImaging_CheckBuffer(data)) { + /* Assume the buffer contains floats */ + float* ptr; + int n = PyImaging_ReadBuffer(data, (const void**) &ptr); + n /= 2 * sizeof(float); + xy = alloc_array(n); + if (!xy) + return -1; + for (i = 0; i < n+n; i++) + xy[i] = ptr[i]; + *pxy = xy; + return n; + } + + if (!PySequence_Check(data)) { + PyErr_SetString(PyExc_TypeError, "argument must be sequence"); + return -1; + } + + j = 0; + n = PyObject_Length(data); + /* Just in case __len__ breaks (or doesn't exist) */ + if (PyErr_Occurred()) + return -1; + + /* Allocate for worst case */ + xy = alloc_array(n); + if (!xy) + return -1; + + /* Copy table to path array */ + if (PyList_Check(data)) { + for (i = 0; i < n; i++) { + double x, y; + PyObject *op = PyList_GET_ITEM(data, i); + if (PyFloat_Check(op)) + xy[j++] = PyFloat_AS_DOUBLE(op); + else if (PyInt_Check(op)) + xy[j++] = (float) PyInt_AS_LONG(op); + else if (PyNumber_Check(op)) + xy[j++] = PyFloat_AsDouble(op); + else if (PyArg_ParseTuple(op, "dd", &x, &y)) { + xy[j++] = x; + xy[j++] = y; + } else { + free(xy); + return -1; + } + } + } else if (PyTuple_Check(data)) { + for (i = 0; i < n; i++) { + double x, y; + PyObject *op = PyTuple_GET_ITEM(data, i); + if (PyFloat_Check(op)) + xy[j++] = PyFloat_AS_DOUBLE(op); + else if (PyInt_Check(op)) + xy[j++] = (float) PyInt_AS_LONG(op); + else if (PyNumber_Check(op)) + xy[j++] = PyFloat_AsDouble(op); + else if (PyArg_ParseTuple(op, "dd", &x, &y)) { + xy[j++] = x; + xy[j++] = y; + } else { + free(xy); + return -1; + } + } + } else { + for (i = 0; i < n; i++) { + double x, y; + PyObject *op = PySequence_GetItem(data, i); + if (!op) { + /* treat IndexError as end of sequence */ + if (PyErr_Occurred() && + PyErr_ExceptionMatches(PyExc_IndexError)) { + PyErr_Clear(); + break; + } else { + free(xy); + return -1; + } + } + if (PyFloat_Check(op)) + xy[j++] = PyFloat_AS_DOUBLE(op); + else if (PyInt_Check(op)) + xy[j++] = (float) PyInt_AS_LONG(op); + else if (PyNumber_Check(op)) + xy[j++] = PyFloat_AsDouble(op); + else if (PyArg_ParseTuple(op, "dd", &x, &y)) { + xy[j++] = x; + xy[j++] = y; + } else { + Py_DECREF(op); + free(xy); + return -1; + } + Py_DECREF(op); + } + } + + if (j & 1) { + PyErr_SetString(PyExc_ValueError, "wrong number of coordinates"); + free(xy); + return -1; + } + + *pxy = xy; + return j/2; +} + + +/* -------------------------------------------------------------------- */ +/* Factories */ +/* -------------------------------------------------------------------- */ + +PyObject* +PyPath_Create(PyObject* self, PyObject* args) +{ + PyObject* data; + Py_ssize_t count; + double *xy; + + if (PyArg_ParseTuple(args, "i:Path", &count)) { + + /* number of vertices */ + xy = alloc_array(count); + if (!xy) + return NULL; + + } else { + + /* sequence or other path */ + PyErr_Clear(); + if (!PyArg_ParseTuple(args, "O", &data)) + return NULL; + + count = PyPath_Flatten(data, &xy); + if (count < 0) + return NULL; + } + + return (PyObject*) path_new(count, xy, 0); +} + + +/* -------------------------------------------------------------------- */ +/* Methods */ +/* -------------------------------------------------------------------- */ + +static PyObject* +path_compact(PyPathObject* self, PyObject* args) +{ + /* Simple-minded method to shorten path. A point is removed if + the city block distance to the previous point is less than the + given distance */ + int i, j; + double *xy; + + double cityblock = 2.0; + + if (!PyArg_ParseTuple(args, "|d:compact", &cityblock)) + return NULL; + + xy = self->xy; + + /* remove bogus vertices */ + for (i = j = 1; i < self->count; i++) { + if (fabs(xy[j+j-2]-xy[i+i]) + fabs(xy[j+j-1]-xy[i+i+1]) >= cityblock) { + xy[j+j] = xy[i+i]; + xy[j+j+1] = xy[i+i+1]; + j++; + } + } + + i = self->count - j; + self->count = j; + + /* shrink coordinate array */ + self->xy = realloc(self->xy, 2 * self->count * sizeof(double)); + + return Py_BuildValue("i", i); /* number of removed vertices */ +} + +static PyObject* +path_clip_polygon(PyPathObject* self, PyObject* args) +{ + /* Clip path representing a single polygon */ + PyErr_SetString(PyExc_RuntimeError, "not yet implemented"); + return NULL; +} + +static PyObject* +path_clip_polyline(PyPathObject* self, PyObject* args) +{ + /* Clip path representing a single polyline (outline) */ + PyErr_SetString(PyExc_RuntimeError, "not yet implemented"); + return NULL; +} + +static PyObject* +path_getbbox(PyPathObject* self, PyObject* args) +{ + /* Find bounding box */ + int i; + double *xy; + double x0, y0, x1, y1; + + if (!PyArg_ParseTuple(args, ":getbbox")) + return NULL; + + xy = self->xy; + + x0 = x1 = xy[0]; + y0 = y1 = xy[1]; + + for (i = 1; i < self->count; i++) { + if (xy[i+i] < x0) + x0 = xy[i+i]; + if (xy[i+i] > x1) + x1 = xy[i+i]; + if (xy[i+i+1] < y0) + y0 = xy[i+i+1]; + if (xy[i+i+1] > y1) + y1 = xy[i+i+1]; + } + + return Py_BuildValue("dddd", x0, y0, x1, y1); +} + +static PyObject* +path_getitem(PyPathObject* self, int i) +{ + if (i < 0 || i >= self->count) { + PyErr_SetString(PyExc_IndexError, "path index out of range"); + return NULL; + } + + return Py_BuildValue("dd", self->xy[i+i], self->xy[i+i+1]); +} + +static PyObject* +path_getslice(PyPathObject* self, Py_ssize_t ilow, Py_ssize_t ihigh) +{ + /* adjust arguments */ + if (ilow < 0) + ilow = 0; + else if (ilow >= self->count) + ilow = self->count; + if (ihigh < 0) + ihigh = 0; + if (ihigh < ilow) + ihigh = ilow; + else if (ihigh > self->count) + ihigh = self->count; + + return (PyObject*) path_new(ihigh - ilow, self->xy + ilow * 2, 1); +} + +static Py_ssize_t +path_len(PyPathObject* self) +{ + return self->count; +} + +static PyObject* +path_map(PyPathObject* self, PyObject* args) +{ + /* Map coordinate set through function */ + int i; + double *xy; + PyObject* function; + + if (!PyArg_ParseTuple(args, "O:map", &function)) + return NULL; + + xy = self->xy; + + /* apply function to coordinate set */ + for (i = 0; i < self->count; i++) { + double x = xy[i+i]; + double y = xy[i+i+1]; + PyObject* item = PyObject_CallFunction(function, "dd", x, y); + if (!item || !PyArg_ParseTuple(item, "dd", &x, &y)) { + Py_XDECREF(item); + return NULL; + } + xy[i+i] = x; + xy[i+i+1] = y; + Py_DECREF(item); + } + + Py_INCREF(Py_None); + return Py_None; +} + +static int +path_setitem(PyPathObject* self, int i, PyObject* op) +{ + double* xy; + + if (i < 0 || i >= self->count) { + PyErr_SetString(PyExc_IndexError, + "path assignment index out of range"); + return -1; + } + + if (op == NULL) { + PyErr_SetString(PyExc_TypeError, + "cannot delete from path"); + return -1; + } + + xy = &self->xy[i+i]; + + if (!PyArg_ParseTuple(op, "dd", &xy[0], &xy[1])) + return -1; + + return 0; +} + +static PyObject* +path_tolist(PyPathObject* self, PyObject* args) +{ + PyObject *list; + int i; + + int flat = 0; + if (!PyArg_ParseTuple(args, "|i:tolist", &flat)) + return NULL; + + if (flat) { + list = PyList_New(self->count*2); + for (i = 0; i < self->count*2; i++) { + PyObject* item; + item = PyFloat_FromDouble(self->xy[i]); + if (!item) + goto error; + PyList_SetItem(list, i, item); + } + } else { + list = PyList_New(self->count); + for (i = 0; i < self->count; i++) { + PyObject* item; + item = Py_BuildValue("dd", self->xy[i+i], self->xy[i+i+1]); + if (!item) + goto error; + PyList_SetItem(list, i, item); + } + } + + return list; + +error: + Py_DECREF(list); + return NULL; +} + +static PyObject* +path_transform(PyPathObject* self, PyObject* args) +{ + /* Apply affine transform to coordinate set */ + int i; + double *xy; + double a, b, c, d, e, f; + + double wrap = 0.0; + + if (!PyArg_ParseTuple(args, "(dddddd)|d:transform", + &a, &b, &c, &d, &e, &f, + &wrap)) + return NULL; + + xy = self->xy; + + /* transform the coordinate set */ + if (b == 0.0 && d == 0.0) + /* scaling */ + for (i = 0; i < self->count; i++) { + xy[i+i] = a*xy[i+i]+c; + xy[i+i+1] = e*xy[i+i+1]+f; + } + else + /* affine transform */ + for (i = 0; i < self->count; i++) { + double x = xy[i+i]; + double y = xy[i+i+1]; + xy[i+i] = a*x+b*y+c; + xy[i+i+1] = d*x+e*y+f; + } + + /* special treatment of geographical map data */ + if (wrap != 0.0) + for (i = 0; i < self->count; i++) + xy[i+i] = fmod(xy[i+i], wrap); + + Py_INCREF(Py_None); + return Py_None; +} + +static struct PyMethodDef methods[] = { + {"getbbox", (PyCFunction)path_getbbox, 1}, + {"tolist", (PyCFunction)path_tolist, 1}, + {"clip_polygon", (PyCFunction)path_clip_polygon, 1}, + {"clip_polyline", (PyCFunction)path_clip_polyline, 1}, + {"compact", (PyCFunction)path_compact, 1}, + {"map", (PyCFunction)path_map, 1}, + {"transform", (PyCFunction)path_transform, 1}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject* +path_getattr(PyPathObject* self, char* name) +{ + PyObject* res; + + res = Py_FindMethod(methods, (PyObject*) self, name); + if (res) + return res; + + PyErr_Clear(); + + if (strcmp(name, "id") == 0) + return Py_BuildValue("l", (long) self->xy); + + PyErr_SetString(PyExc_AttributeError, name); + return NULL; +} + +static PySequenceMethods path_as_sequence = { + (lenfunc)path_len, /*sq_length*/ + (binaryfunc)0, /*sq_concat*/ + (ssizeargfunc)0, /*sq_repeat*/ + (ssizeargfunc)path_getitem, /*sq_item*/ + (ssizessizeargfunc)path_getslice, /*sq_slice*/ + (ssizeobjargproc)path_setitem, /*sq_ass_item*/ + (ssizessizeobjargproc)0, /*sq_ass_slice*/ +}; + +statichere PyTypeObject PyPathType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "Path", /*tp_name*/ + sizeof(PyPathObject), /*tp_size*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)path_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)path_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number */ + &path_as_sequence, /*tp_as_sequence */ + 0, /*tp_as_mapping */ + 0, /*tp_hash*/ +}; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py new file mode 100755 index 00000000000..22bbe433bf6 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py @@ -0,0 +1,202 @@ +# minimal sanity check + +ROOT = "." + +import os, sys +sys.path.insert(0, ROOT) + +from PIL import Image +from PIL import ImageDraw +from PIL import ImageFilter +from PIL import ImageMath + +try: + Image.core.ping +except ImportError, v: + print "***", v + sys.exit() +except AttributeError: + pass + +def _info(im): + im.load() + return im.format, im.mode, im.size + +def testimage(): + """ + PIL lets you create in-memory images with various pixel types: + + >>> im = Image.new("1", (128, 128)) # monochrome + >>> _info(im) + (None, '1', (128, 128)) + >>> _info(Image.new("L", (128, 128))) # grayscale (luminance) + (None, 'L', (128, 128)) + >>> _info(Image.new("P", (128, 128))) # palette + (None, 'P', (128, 128)) + >>> _info(Image.new("RGB", (128, 128))) # truecolor + (None, 'RGB', (128, 128)) + >>> _info(Image.new("I", (128, 128))) # 32-bit integer + (None, 'I', (128, 128)) + >>> _info(Image.new("F", (128, 128))) # 32-bit floating point + (None, 'F', (128, 128)) + + Or open existing files: + + >>> im = Image.open(os.path.join(ROOT, "Images/lena.gif")) + >>> _info(im) + ('GIF', 'P', (128, 128)) + >>> _info(Image.open(os.path.join(ROOT, "Images/lena.ppm"))) + ('PPM', 'RGB', (128, 128)) + >>> try: + ... _info(Image.open(os.path.join(ROOT, "Images/lena.jpg"))) + ... except IOError, v: + ... print v + ('JPEG', 'RGB', (128, 128)) + + PIL doesn't actually load the image data until it's needed, + or you call the "load" method: + + >>> im = Image.open(os.path.join(ROOT, "Images/lena.ppm")) + >>> print im.im # internal image attribute + None + >>> a = im.load() + >>> type(im.im) + + + You can apply many different operations on images. Most + operations return a new image: + + >>> im = Image.open(os.path.join(ROOT, "Images/lena.ppm")) + >>> _info(im.convert("L")) + (None, 'L', (128, 128)) + >>> _info(im.copy()) + (None, 'RGB', (128, 128)) + >>> _info(im.crop((32, 32, 96, 96))) + (None, 'RGB', (64, 64)) + >>> _info(im.filter(ImageFilter.BLUR)) + (None, 'RGB', (128, 128)) + >>> im.getbands() + ('R', 'G', 'B') + >>> im.getbbox() + (0, 0, 128, 128) + >>> len(im.getdata()) + 16384 + >>> im.getextrema() + ((61, 255), (26, 234), (44, 223)) + >>> im.getpixel((0, 0)) + (223, 162, 133) + >>> len(im.getprojection()) + 2 + >>> len(im.histogram()) + 768 + >>> _info(im.point(range(256)*3)) + (None, 'RGB', (128, 128)) + >>> _info(im.resize((64, 64))) + (None, 'RGB', (64, 64)) + >>> _info(im.rotate(45)) + (None, 'RGB', (128, 128)) + >>> map(_info, im.split()) + [(None, 'L', (128, 128)), (None, 'L', (128, 128)), (None, 'L', (128, 128))] + >>> len(im.convert("1").tobitmap()) + 10456 + >>> len(im.tostring()) + 49152 + >>> _info(im.transform((512, 512), Image.AFFINE, (1,0,0,0,1,0))) + (None, 'RGB', (512, 512)) + >>> _info(im.transform((512, 512), Image.EXTENT, (32,32,96,96))) + (None, 'RGB', (512, 512)) + + The ImageDraw module lets you draw stuff in raster images: + + >>> im = Image.new("L", (128, 128), 64) + >>> d = ImageDraw.ImageDraw(im) + >>> d.line((0, 0, 128, 128), fill=128) + >>> d.line((0, 128, 128, 0), fill=128) + >>> im.getextrema() + (64, 128) + + In 1.1.4, you can specify colors in a number of ways: + + >>> xy = 0, 0, 128, 128 + >>> im = Image.new("RGB", (128, 128), 0) + >>> d = ImageDraw.ImageDraw(im) + >>> d.rectangle(xy, "#f00") + >>> im.getpixel((0, 0)) + (255, 0, 0) + >>> d.rectangle(xy, "#ff0000") + >>> im.getpixel((0, 0)) + (255, 0, 0) + >>> d.rectangle(xy, "rgb(255,0,0)") + >>> im.getpixel((0, 0)) + (255, 0, 0) + >>> d.rectangle(xy, "rgb(100%,0%,0%)") + >>> im.getpixel((0, 0)) + (255, 0, 0) + >>> d.rectangle(xy, "hsl(0, 100%, 50%)") + >>> im.getpixel((0, 0)) + (255, 0, 0) + >>> d.rectangle(xy, "red") + >>> im.getpixel((0, 0)) + (255, 0, 0) + + In 1.1.6, you can use the ImageMath module to do image + calculations. + + >>> im = ImageMath.eval("float(im + 20)", im=im.convert("L")) + >>> im.mode, im.size + ('F', (128, 128)) + + PIL can do many other things, but I'll leave that for another + day. If you're curious, check the handbook, available from: + + http://www.pythonware.com + + Cheers /F + """ + + +def check_module(feature, module): + try: + __import__("PIL." + module) + except ImportError: + print "***", feature, "support not installed" + else: + print "---", feature, "support ok" + +def check_codec(feature, codec): + if codec + "_encoder" not in dir(Image.core): + print "***", feature, "support not installed" + else: + print "---", feature, "support ok" + + +if __name__ == "__main__": + # check build sanity + + exit_status = 0 + + print "-"*68 + print "PIL", Image.VERSION, "TEST SUMMARY " + print "-"*68 + print "Python modules loaded from", os.path.dirname(Image.__file__) + print "Binary modules loaded from", os.path.dirname(Image.core.__file__) + print "-"*68 + check_module("PIL CORE", "_imaging") + check_module("TKINTER", "_imagingtk") + check_codec("JPEG", "jpeg") + check_codec("ZLIB (PNG/ZIP)", "zip") + check_module("FREETYPE2", "_imagingft") + check_module("LITTLECMS", "_imagingcms") + print "-"*68 + + # use doctest to make sure the test program behaves as documented! + import doctest, selftest + print "Running selftest:" + status = doctest.testmod(selftest) + if status[0]: + print "*** %s tests of %d failed." % status + exit_status = 1 + else: + print "--- %s tests passed." % status[1] + + sys.exit(exit_status) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py new file mode 100755 index 00000000000..a76954e0313 --- /dev/null +++ b/tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py @@ -0,0 +1,487 @@ +#!/usr/bin/env python +# +# Setup script for PIL 1.1.5 and later +# +# Usage: python setup.py install +# + +import glob, os, re, struct, string, sys + +# make it possible to run the setup script from another directory +try: + os.chdir(os.path.dirname(sys.argv[0])) +except OSError: + pass + +def libinclude(root): + # map root to (root/lib, root/include) + return os.path.join(root, "lib"), os.path.join(root, "include") + +# -------------------------------------------------------------------- +# Library pointers. +# +# Use None to look for the libraries in well-known library locations. +# Use a string to specify a single directory, for both the library and +# the include files. Use a tuple to specify separate directories: +# (libpath, includepath). Examples: +# +# JPEG_ROOT = "/home/libraries/jpeg-6b" +# TIFF_ROOT = "/opt/tiff/lib", "/opt/tiff/include" +# +# If you have "lib" and "include" directories under a common parent, +# you can use the "libinclude" helper: +# +# TIFF_ROOT = libinclude("/opt/tiff") + +TCL_ROOT = None +JPEG_ROOT = None +ZLIB_ROOT = libinclude(os.path.abspath("../zlib")) +TIFF_ROOT = None +FREETYPE_ROOT = None +LCMS_ROOT = None + +# FIXME: add mechanism to explicitly *disable* the use of a library + +# -------------------------------------------------------------------- +# Identification + +NAME = "PIL" +DESCRIPTION = "Python Imaging Library" +AUTHOR = "Secret Labs AB (PythonWare)", "info@pythonware.com" +HOMEPAGE = "http://www.pythonware.com/products/pil" +DOWNLOAD_URL = "http://effbot.org/downloads/%s-%s.tar.gz" # name, version + +# -------------------------------------------------------------------- +# Core library + +IMAGING = [ + "decode", "encode", "map", "display", "outline", "path", + ] + +LIBIMAGING = [ + "Access", "Antialias", "Bands", "BitDecode", "Blend", "Chops", + "Convert", "ConvertYCbCr", "Copy", "Crc32", "Crop", "Dib", "Draw", + "Effects", "EpsEncode", "File", "Fill", "Filter", "FliDecode", + "Geometry", "GetBBox", "GifDecode", "GifEncode", "HexDecode", + "Histo", "JpegDecode", "JpegEncode", "LzwDecode", "Matrix", + "ModeFilter", "MspDecode", "Negative", "Offset", "Pack", + "PackDecode", "Palette", "Paste", "Quant", "QuantHash", + "QuantHeap", "PcdDecode", "PcxDecode", "PcxEncode", "Point", + "RankFilter", "RawDecode", "RawEncode", "Storage", "SunRleDecode", + "TgaRleDecode", "Unpack", "UnpackYCC", "UnsharpMask", "XbmDecode", + "XbmEncode", "ZipDecode", "ZipEncode" + ] + +# -------------------------------------------------------------------- +# Override settings + +try: + from setup_site import * +except ImportError: + pass + +# -------------------------------------------------------------------- + +from distutils import sysconfig +from distutils.core import Extension, setup +from distutils.command.build_ext import build_ext + +try: + import _tkinter +except ImportError: + _tkinter = None + +def add_directory(path, dir, where=None): + if dir and os.path.isdir(dir) and dir not in path: + if where is None: + path.append(dir) + else: + path.insert(where, dir) + +def find_include_file(self, include): + for directory in self.compiler.include_dirs: + if os.path.isfile(os.path.join(directory, include)): + return 1 + return 0 + +def find_library_file(self, library): + return self.compiler.find_library_file(self.compiler.library_dirs, library) + +def find_version(filename): + for line in open(filename).readlines(): + m = re.search("VERSION\s*=\s*\"([^\"]+)\"", line) + if m: + return m.group(1) + return None + +VERSION = find_version("PIL/Image.py") + +class pil_build_ext(build_ext): + + def build_extensions(self): + + global TCL_ROOT + + library_dirs = [] + include_dirs = [] + + add_directory(include_dirs, "libImaging") + + # + # add platform directories + + if sys.platform == "cygwin": + # pythonX.Y.dll.a is in the /usr/lib/pythonX.Y/config directory + add_directory(library_dirs, os.path.join( + "/usr/lib", "python%s" % sys.version[:3], "config" + )) + + elif sys.platform == "darwin": + # attempt to make sure we pick freetype2 over other versions + add_directory(include_dirs, "/sw/include/freetype2") + add_directory(include_dirs, "/sw/lib/freetype2/include") + # fink installation directories + add_directory(library_dirs, "/sw/lib") + add_directory(include_dirs, "/sw/include") + # darwin ports installation directories + add_directory(library_dirs, "/opt/local/lib") + add_directory(include_dirs, "/opt/local/include") + + add_directory(library_dirs, "/usr/local/lib") + # FIXME: check /opt/stuff directories here? + + prefix = sysconfig.get_config_var("prefix") + if prefix: + add_directory(library_dirs, os.path.join(prefix, "lib")) + add_directory(include_dirs, os.path.join(prefix, "include")) + + # + # locate tkinter libraries + + if _tkinter: + TCL_VERSION = _tkinter.TCL_VERSION[:3] + + if _tkinter and not TCL_ROOT: + # we have Tkinter but the TCL_ROOT variable was not set; + # try to locate appropriate Tcl/Tk libraries + PYVERSION = sys.version[0] + sys.version[2] + TCLVERSION = TCL_VERSION[0] + TCL_VERSION[2] + roots = [ + # common installation directories, mostly for Windows + # (for Unix-style platforms, we'll check in well-known + # locations later) + os.path.join("/py" + PYVERSION, "Tcl"), + os.path.join("/python" + PYVERSION, "Tcl"), + "/Tcl", "/Tcl" + TCLVERSION, "/Tcl" + TCL_VERSION, + os.path.join(os.environ.get("ProgramFiles", ""), "Tcl"), + ] + for TCL_ROOT in roots: + TCL_ROOT = os.path.abspath(TCL_ROOT) + if os.path.isfile(os.path.join(TCL_ROOT, "include", "tk.h")): + # FIXME: use distutils logging (?) + print "--- using Tcl/Tk libraries at", TCL_ROOT + print "--- using Tcl/Tk version", TCL_VERSION + TCL_ROOT = libinclude(TCL_ROOT) + break + else: + TCL_ROOT = None + + # + # add configured kits + + for root in (TCL_ROOT, JPEG_ROOT, TCL_ROOT, TIFF_ROOT, ZLIB_ROOT, + FREETYPE_ROOT, LCMS_ROOT): + if isinstance(root, type(())): + lib_root, include_root = root + else: + lib_root = include_root = root + add_directory(library_dirs, lib_root) + add_directory(include_dirs, include_root) + + # + # add standard directories + + # look for tcl specific subdirectory (e.g debian) + if _tkinter: + tcl_dir = "/usr/include/tcl" + TCL_VERSION + if os.path.isfile(os.path.join(tcl_dir, "tk.h")): + add_directory(include_dirs, tcl_dir) + + # standard locations + add_directory(library_dirs, "/usr/local/lib") + add_directory(include_dirs, "/usr/local/include") + + add_directory(library_dirs, "/usr/lib") + add_directory(include_dirs, "/usr/include") + + # + # insert new dirs *before* default libs, to avoid conflicts + # between Python PYD stub libs and real libraries + + self.compiler.library_dirs = library_dirs + self.compiler.library_dirs + self.compiler.include_dirs = include_dirs + self.compiler.include_dirs + + # + # look for available libraries + + class feature: + zlib = jpeg = tiff = freetype = tcl = tk = lcms = None + feature = feature() + + if find_include_file(self, "zlib.h"): + if find_library_file(self, "z"): + feature.zlib = "z" + elif sys.platform == "win32" and find_library_file(self, "zdll"): + feature.zlib = "zdll" # alternative name + + if find_include_file(self, "jpeglib.h"): + if find_library_file(self, "jpeg"): + feature.jpeg = "jpeg" + elif sys.platform == "win32" and find_library_file(self, "libjpeg"): + feature.jpeg = "libjpeg" # alternative name + + if find_library_file(self, "tiff"): + feature.tiff = "tiff" + + if find_library_file(self, "freetype"): + # look for freetype2 include files + freetype_version = 0 + for dir in self.compiler.include_dirs: + if os.path.isfile(os.path.join(dir, "ft2build.h")): + freetype_version = 21 + dir = os.path.join(dir, "freetype2") + break + dir = os.path.join(dir, "freetype2") + if os.path.isfile(os.path.join(dir, "ft2build.h")): + freetype_version = 21 + break + if os.path.isdir(os.path.join(dir, "freetype")): + freetype_version = 20 + break + if freetype_version: + feature.freetype = "freetype" + feature.freetype_version = freetype_version + if dir: + add_directory(self.compiler.include_dirs, dir, 0) + + if find_include_file(self, "lcms.h"): + if find_library_file(self, "lcms"): + feature.lcms = "lcms" + + if _tkinter and find_include_file(self, "tk.h"): + # the library names may vary somewhat (e.g. tcl84 or tcl8.4) + version = TCL_VERSION[0] + TCL_VERSION[2] + if find_library_file(self, "tcl" + version): + feature.tcl = "tcl" + version + elif find_library_file(self, "tcl" + TCL_VERSION): + feature.tcl = "tcl" + TCL_VERSION + if find_library_file(self, "tk" + version): + feature.tk = "tk" + version + elif find_library_file(self, "tk" + TCL_VERSION): + feature.tk = "tk" + TCL_VERSION + + # + # core library + + files = ["_imaging.c"] + for file in IMAGING: + files.append(file + ".c") + for file in LIBIMAGING: + files.append(os.path.join("libImaging", file + ".c")) + + libs = [] + defs = [] + if feature.jpeg: + libs.append(feature.jpeg) + defs.append(("HAVE_LIBJPEG", None)) + if feature.zlib: + libs.append(feature.zlib) + defs.append(("HAVE_LIBZ", None)) + if sys.platform == "win32": + libs.extend(["kernel32", "user32", "gdi32"]) + if struct.unpack("h", "\0\1")[0] == 1: + defs.append(("WORDS_BIGENDIAN", None)) + + exts = [(Extension( + "_imaging", files, libraries=libs, define_macros=defs + ))] + + # + # additional libraries + + if feature.freetype: + defs = [] + if feature.freetype_version == 20: + defs.append(("USE_FREETYPE_2_0", None)) + exts.append(Extension( + "_imagingft", ["_imagingft.c"], libraries=["freetype"], + define_macros=defs + )) + + if os.path.isfile("_imagingtiff.c") and feature.tiff: + exts.append(Extension( + "_imagingtiff", ["_imagingtiff.c"], libraries=["tiff"] + )) + + if os.path.isfile("_imagingcms.c") and feature.lcms: + extra = [] + if sys.platform == "win32": + extra.extend(["user32", "gdi32"]) + exts.append(Extension( + "_imagingcms", ["_imagingcms.c"], libraries=["lcms"] + extra + )) + + if sys.platform == "darwin": + # locate Tcl/Tk frameworks + frameworks = [] + framework_roots = [ + "/Library/Frameworks", + "/System/Library/Frameworks" + ] + for root in framework_roots: + if (os.path.exists(os.path.join(root, "Tcl.framework")) and + os.path.exists(os.path.join(root, "Tk.framework"))): + print "--- using frameworks at", root + frameworks = ["-framework", "Tcl", "-framework", "Tk"] + dir = os.path.join(root, "Tcl.framework", "Headers") + add_directory(self.compiler.include_dirs, dir, 0) + dir = os.path.join(root, "Tk.framework", "Headers") + add_directory(self.compiler.include_dirs, dir, 1) + break + if frameworks: + exts.append(Extension( + "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], + extra_compile_args=frameworks, extra_link_args=frameworks + )) + feature.tcl = feature.tk = 1 # mark as present + elif feature.tcl and feature.tk: + exts.append(Extension( + "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], + libraries=[feature.tcl, feature.tk] + )) + + if os.path.isfile("_imagingmath.c"): + exts.append(Extension("_imagingmath", ["_imagingmath.c"])) + + self.extensions[:] = exts + + build_ext.build_extensions(self) + + # + # sanity and security checks + + unsafe_zlib = None + + if feature.zlib: + unsafe_zlib = self.check_zlib_version(self.compiler.include_dirs) + + self.summary_report(feature, unsafe_zlib) + + def summary_report(self, feature, unsafe_zlib): + + print "-" * 68 + print "PIL", VERSION, "SETUP SUMMARY" + print "-" * 68 + print "version ", VERSION + v = string.split(sys.version, "[") + print "platform ", sys.platform, string.strip(v[0]) + for v in v[1:]: + print " ", string.strip("[" + v) + print "-" * 68 + + options = [ + (feature.tcl and feature.tk, "TKINTER"), + (feature.jpeg, "JPEG"), + (feature.zlib, "ZLIB (PNG/ZIP)"), + # (feature.tiff, "experimental TIFF G3/G4 read"), + (feature.freetype, "FREETYPE2"), + (feature.lcms, "LITTLECMS"), + ] + + all = 1 + for option in options: + if option[0]: + print "---", option[1], "support available" + else: + print "***", option[1], "support not available", + if option[1] == "TKINTER" and _tkinter: + version = _tkinter.TCL_VERSION + print "(Tcl/Tk %s libraries needed)" % version, + print + all = 0 + + if feature.zlib and unsafe_zlib: + print + print "*** Warning: zlib", unsafe_zlib, + print "may contain a security vulnerability." + print "*** Consider upgrading to zlib 1.2.3 or newer." + print "*** See: http://www.kb.cert.org/vuls/id/238678" + print " http://www.kb.cert.org/vuls/id/680620" + print " http://www.gzip.org/zlib/advisory-2002-03-11.txt" + print + + print "-" * 68 + + if not all: + print "To add a missing option, make sure you have the required" + print "library, and set the corresponding ROOT variable in the" + print "setup.py script." + print + + print "To check the build, run the selftest.py script." + + def check_zlib_version(self, include_dirs): + # look for unsafe versions of zlib + for dir in include_dirs: + zlibfile = os.path.join(dir, "zlib.h") + if os.path.isfile(zlibfile): + break + else: + return + for line in open(zlibfile).readlines(): + m = re.match('#define\s+ZLIB_VERSION\s+"([^"]*)"', line) + if not m: + continue + if m.group(1) < "1.2.3": + return m.group(1) + +# +# build! + +if __name__ == "__main__": + + try: + # add necessary to distutils (for backwards compatibility) + from distutils.dist import DistributionMetadata + DistributionMetadata.classifiers = None + DistributionMetadata.download_url = None + DistributionMetadata.platforms = None + except: + pass + + setup( + author=AUTHOR[0], author_email=AUTHOR[1], + classifiers=[ + "Development Status :: 6 - Mature", + "Topic :: Multimedia :: Graphics", + "Topic :: Multimedia :: Graphics :: Capture :: Digital Camera", + "Topic :: Multimedia :: Graphics :: Capture :: Scanners", + "Topic :: Multimedia :: Graphics :: Capture :: Screen Capture", + "Topic :: Multimedia :: Graphics :: Graphics Conversion", + "Topic :: Multimedia :: Graphics :: Viewers", + ], + cmdclass = {"build_ext": pil_build_ext}, + description=DESCRIPTION, + download_url=DOWNLOAD_URL % (NAME, VERSION), + ext_modules = [Extension("_imaging", ["_imaging.c"])], # dummy + extra_path = "PIL", + license="Python (MIT style)", + long_description=DESCRIPTION, + name=NAME, + package_dir={"": "PIL"}, + packages=[""], + platforms="Python 1.5.2 and later.", + scripts = glob.glob("Scripts/pil*.py"), + url=HOMEPAGE, + version=VERSION, + ) diff --git a/tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt b/tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt new file mode 100755 index 00000000000..12c009018c3 --- /dev/null +++ b/tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt @@ -0,0 +1,397 @@ + + Frequently Asked Questions about ZLIB1.DLL + + +This document describes the design, the rationale, and the usage +of the official DLL build of zlib, named ZLIB1.DLL. If you have +general questions about zlib, you should see the file "FAQ" found +in the zlib distribution, or at the following location: + http://www.gzip.org/zlib/zlib_faq.html + + + 1. What is ZLIB1.DLL, and how can I get it? + + - ZLIB1.DLL is the official build of zlib as a DLL. + (Please remark the character '1' in the name.) + + Pointers to a precompiled ZLIB1.DLL can be found in the zlib + web site at: + http://www.zlib.net/ + + Applications that link to ZLIB1.DLL can rely on the following + specification: + + * The exported symbols are exclusively defined in the source + files "zlib.h" and "zlib.def", found in an official zlib + source distribution. + * The symbols are exported by name, not by ordinal. + * The exported names are undecorated. + * The calling convention of functions is "C" (CDECL). + * The ZLIB1.DLL binary is linked to MSVCRT.DLL. + + The archive in which ZLIB1.DLL is bundled contains compiled + test programs that must run with a valid build of ZLIB1.DLL. + It is recommended to download the prebuilt DLL from the zlib + web site, instead of building it yourself, to avoid potential + incompatibilities that could be introduced by your compiler + and build settings. If you do build the DLL yourself, please + make sure that it complies with all the above requirements, + and it runs with the precompiled test programs, bundled with + the original ZLIB1.DLL distribution. + + If, for any reason, you need to build an incompatible DLL, + please use a different file name. + + + 2. Why did you change the name of the DLL to ZLIB1.DLL? + What happened to the old ZLIB.DLL? + + - The old ZLIB.DLL, built from zlib-1.1.4 or earlier, required + compilation settings that were incompatible to those used by + a static build. The DLL settings were supposed to be enabled + by defining the macro ZLIB_DLL, before including "zlib.h". + Incorrect handling of this macro was silently accepted at + build time, resulting in two major problems: + + * ZLIB_DLL was missing from the old makefile. When building + the DLL, not all people added it to the build options. In + consequence, incompatible incarnations of ZLIB.DLL started + to circulate around the net. + + * When switching from using the static library to using the + DLL, applications had to define the ZLIB_DLL macro and + to recompile all the sources that contained calls to zlib + functions. Failure to do so resulted in creating binaries + that were unable to run with the official ZLIB.DLL build. + + The only possible solution that we could foresee was to make + a binary-incompatible change in the DLL interface, in order to + remove the dependency on the ZLIB_DLL macro, and to release + the new DLL under a different name. + + We chose the name ZLIB1.DLL, where '1' indicates the major + zlib version number. We hope that we will not have to break + the binary compatibility again, at least not as long as the + zlib-1.x series will last. + + There is still a ZLIB_DLL macro, that can trigger a more + efficient build and use of the DLL, but compatibility no + longer dependents on it. + + + 3. Can I build ZLIB.DLL from the new zlib sources, and replace + an old ZLIB.DLL, that was built from zlib-1.1.4 or earlier? + + - In principle, you can do it by assigning calling convention + keywords to the macros ZEXPORT and ZEXPORTVA. In practice, + it depends on what you mean by "an old ZLIB.DLL", because the + old DLL exists in several mutually-incompatible versions. + You have to find out first what kind of calling convention is + being used in your particular ZLIB.DLL build, and to use the + same one in the new build. If you don't know what this is all + about, you might be better off if you would just leave the old + DLL intact. + + + 4. Can I compile my application using the new zlib interface, and + link it to an old ZLIB.DLL, that was built from zlib-1.1.4 or + earlier? + + - The official answer is "no"; the real answer depends again on + what kind of ZLIB.DLL you have. Even if you are lucky, this + course of action is unreliable. + + If you rebuild your application and you intend to use a newer + version of zlib (post- 1.1.4), it is strongly recommended to + link it to the new ZLIB1.DLL. + + + 5. Why are the zlib symbols exported by name, and not by ordinal? + + - Although exporting symbols by ordinal is a little faster, it + is risky. Any single glitch in the maintenance or use of the + DEF file that contains the ordinals can result in incompatible + builds and frustrating crashes. Simply put, the benefits of + exporting symbols by ordinal do not justify the risks. + + Technically, it should be possible to maintain ordinals in + the DEF file, and still export the symbols by name. Ordinals + exist in every DLL, and even if the dynamic linking performed + at the DLL startup is searching for names, ordinals serve as + hints, for a faster name lookup. However, if the DEF file + contains ordinals, the Microsoft linker automatically builds + an implib that will cause the executables linked to it to use + those ordinals, and not the names. It is interesting to + notice that the GNU linker for Win32 does not suffer from this + problem. + + It is possible to avoid the DEF file if the exported symbols + are accompanied by a "__declspec(dllexport)" attribute in the + source files. You can do this in zlib by predefining the + ZLIB_DLL macro. + + + 6. I see that the ZLIB1.DLL functions use the "C" (CDECL) calling + convention. Why not use the STDCALL convention? + STDCALL is the standard convention in Win32, and I need it in + my Visual Basic project! + + (For readability, we use CDECL to refer to the convention + triggered by the "__cdecl" keyword, STDCALL to refer to + the convention triggered by "__stdcall", and FASTCALL to + refer to the convention triggered by "__fastcall".) + + - Most of the native Windows API functions (without varargs) use + indeed the WINAPI convention (which translates to STDCALL in + Win32), but the standard C functions use CDECL. If a user + application is intrinsically tied to the Windows API (e.g. + it calls native Windows API functions such as CreateFile()), + sometimes it makes sense to decorate its own functions with + WINAPI. But if ANSI C or POSIX portability is a goal (e.g. + it calls standard C functions such as fopen()), it is not a + sound decision to request the inclusion of , or to + use non-ANSI constructs, for the sole purpose to make the user + functions STDCALL-able. + + The functionality offered by zlib is not in the category of + "Windows functionality", but is more like "C functionality". + + Technically, STDCALL is not bad; in fact, it is slightly + faster than CDECL, and it works with variable-argument + functions, just like CDECL. It is unfortunate that, in spite + of using STDCALL in the Windows API, it is not the default + convention used by the C compilers that run under Windows. + The roots of the problem reside deep inside the unsafety of + the K&R-style function prototypes, where the argument types + are not specified; but that is another story for another day. + + The remaining fact is that CDECL is the default convention. + Even if an explicit convention is hard-coded into the function + prototypes inside C headers, problems may appear. The + necessity to expose the convention in users' callbacks is one + of these problems. + + The calling convention issues are also important when using + zlib in other programming languages. Some of them, like Ada + (GNAT) and Fortran (GNU G77), have C bindings implemented + initially on Unix, and relying on the C calling convention. + On the other hand, the pre- .NET versions of Microsoft Visual + Basic require STDCALL, while Borland Delphi prefers, although + it does not require, FASTCALL. + + In fairness to all possible uses of zlib outside the C + programming language, we choose the default "C" convention. + Anyone interested in different bindings or conventions is + encouraged to maintain specialized projects. The "contrib/" + directory from the zlib distribution already holds a couple + of foreign bindings, such as Ada, C++, and Delphi. + + + 7. I need a DLL for my Visual Basic project. What can I do? + + - Define the ZLIB_WINAPI macro before including "zlib.h", when + building both the DLL and the user application (except that + you don't need to define anything when using the DLL in Visual + Basic). The ZLIB_WINAPI macro will switch on the WINAPI + (STDCALL) convention. The name of this DLL must be different + than the official ZLIB1.DLL. + + Gilles Vollant has contributed a build named ZLIBWAPI.DLL, + with the ZLIB_WINAPI macro turned on, and with the minizip + functionality built in. For more information, please read + the notes inside "contrib/vstudio/readme.txt", found in the + zlib distribution. + + + 8. I need to use zlib in my Microsoft .NET project. What can I + do? + + - Henrik Ravn has contributed a .NET wrapper around zlib. Look + into contrib/dotzlib/, inside the zlib distribution. + + + 9. If my application uses ZLIB1.DLL, should I link it to + MSVCRT.DLL? Why? + + - It is not required, but it is recommended to link your + application to MSVCRT.DLL, if it uses ZLIB1.DLL. + + The executables (.EXE, .DLL, etc.) that are involved in the + same process and are using the C run-time library (i.e. they + are calling standard C functions), must link to the same + library. There are several libraries in the Win32 system: + CRTDLL.DLL, MSVCRT.DLL, the static C libraries, etc. + Since ZLIB1.DLL is linked to MSVCRT.DLL, the executables that + depend on it should also be linked to MSVCRT.DLL. + + +10. Why are you saying that ZLIB1.DLL and my application should + be linked to the same C run-time (CRT) library? I linked my + application and my DLLs to different C libraries (e.g. my + application to a static library, and my DLLs to MSVCRT.DLL), + and everything works fine. + + - If a user library invokes only pure Win32 API (accessible via + and the related headers), its DLL build will work + in any context. But if this library invokes standard C API, + things get more complicated. + + There is a single Win32 library in a Win32 system. Every + function in this library resides in a single DLL module, that + is safe to call from anywhere. On the other hand, there are + multiple versions of the C library, and each of them has its + own separate internal state. Standalone executables and user + DLLs that call standard C functions must link to a C run-time + (CRT) library, be it static or shared (DLL). Intermixing + occurs when an executable (not necessarily standalone) and a + DLL are linked to different CRTs, and both are running in the + same process. + + Intermixing multiple CRTs is possible, as long as their + internal states are kept intact. The Microsoft Knowledge Base + articles KB94248 "HOWTO: Use the C Run-Time" and KB140584 + "HOWTO: Link with the Correct C Run-Time (CRT) Library" + mention the potential problems raised by intermixing. + + If intermixing works for you, it's because your application + and DLLs are avoiding the corruption of each of the CRTs' + internal states, maybe by careful design, or maybe by fortune. + + Also note that linking ZLIB1.DLL to non-Microsoft CRTs, such + as those provided by Borland, raises similar problems. + + +11. Why are you linking ZLIB1.DLL to MSVCRT.DLL? + + - MSVCRT.DLL exists on every Windows 95 with a new service pack + installed, or with Microsoft Internet Explorer 4 or later, and + on all other Windows 4.x or later (Windows 98, Windows NT 4, + or later). It is freely distributable; if not present in the + system, it can be downloaded from Microsoft or from other + software provider for free. + + The fact that MSVCRT.DLL does not exist on a virgin Windows 95 + is not so problematic. Windows 95 is scarcely found nowadays, + Microsoft ended its support a long time ago, and many recent + applications from various vendors, including Microsoft, do not + even run on it. Furthermore, no serious user should run + Windows 95 without a proper update installed. + + +12. Why are you not linking ZLIB1.DLL to + <> ? + + - We considered and abandoned the following alternatives: + + * Linking ZLIB1.DLL to a static C library (LIBC.LIB, or + LIBCMT.LIB) is not a good option. People are using the DLL + mainly to save disk space. If you are linking your program + to a static C library, you may as well consider linking zlib + in statically, too. + + * Linking ZLIB1.DLL to CRTDLL.DLL looks appealing, because + CRTDLL.DLL is present on every Win32 installation. + Unfortunately, it has a series of problems: it does not + work properly with Microsoft's C++ libraries, it does not + provide support for 64-bit file offsets, (and so on...), + and Microsoft discontinued its support a long time ago. + + * Linking ZLIB1.DLL to MSVCR70.DLL or MSVCR71.DLL, supplied + with the Microsoft .NET platform, and Visual C++ 7.0/7.1, + raises problems related to the status of ZLIB1.DLL as a + system component. According to the Microsoft Knowledge Base + article KB326922 "INFO: Redistribution of the Shared C + Runtime Component in Visual C++ .NET", MSVCR70.DLL and + MSVCR71.DLL are not supposed to function as system DLLs, + because they may clash with MSVCRT.DLL. Instead, the + application's installer is supposed to put these DLLs + (if needed) in the application's private directory. + If ZLIB1.DLL depends on a non-system runtime, it cannot + function as a redistributable system component. + + * Linking ZLIB1.DLL to non-Microsoft runtimes, such as + Borland's, or Cygwin's, raises problems related to the + reliable presence of these runtimes on Win32 systems. + It's easier to let the DLL build of zlib up to the people + who distribute these runtimes, and who may proceed as + explained in the answer to Question 14. + + +13. If ZLIB1.DLL cannot be linked to MSVCR70.DLL or MSVCR71.DLL, + how can I build/use ZLIB1.DLL in Microsoft Visual C++ 7.0 + (Visual Studio .NET) or newer? + + - Due to the problems explained in the Microsoft Knowledge Base + article KB326922 (see the previous answer), the C runtime that + comes with the VC7 environment is no longer considered a + system component. That is, it should not be assumed that this + runtime exists, or may be installed in a system directory. + Since ZLIB1.DLL is supposed to be a system component, it may + not depend on a non-system component. + + In order to link ZLIB1.DLL and your application to MSVCRT.DLL + in VC7, you need the library of Visual C++ 6.0 or older. If + you don't have this library at hand, it's probably best not to + use ZLIB1.DLL. + + We are hoping that, in the future, Microsoft will provide a + way to build applications linked to a proper system runtime, + from the Visual C++ environment. Until then, you have a + couple of alternatives, such as linking zlib in statically. + If your application requires dynamic linking, you may proceed + as explained in the answer to Question 14. + + +14. I need to link my own DLL build to a CRT different than + MSVCRT.DLL. What can I do? + + - Feel free to rebuild the DLL from the zlib sources, and link + it the way you want. You should, however, clearly state that + your build is unofficial. You should give it a different file + name, and/or install it in a private directory that can be + accessed by your application only, and is not visible to the + others (i.e. it's neither in the PATH, nor in the SYSTEM or + SYSTEM32 directories). Otherwise, your build may clash with + applications that link to the official build. + + For example, in Cygwin, zlib is linked to the Cygwin runtime + CYGWIN1.DLL, and it is distributed under the name CYGZ.DLL. + + +15. May I include additional pieces of code that I find useful, + link them in ZLIB1.DLL, and export them? + + - No. A legitimate build of ZLIB1.DLL must not include code + that does not originate from the official zlib source code. + But you can make your own private DLL build, under a different + file name, as suggested in the previous answer. + + For example, zlib is a part of the VCL library, distributed + with Borland Delphi and C++ Builder. The DLL build of VCL + is a redistributable file, named VCLxx.DLL. + + +16. May I remove some functionality out of ZLIB1.DLL, by enabling + macros like NO_GZCOMPRESS or NO_GZIP at compile time? + + - No. A legitimate build of ZLIB1.DLL must provide the complete + zlib functionality, as implemented in the official zlib source + code. But you can make your own private DLL build, under a + different file name, as suggested in the previous answer. + + +17. I made my own ZLIB1.DLL build. Can I test it for compliance? + + - We prefer that you download the official DLL from the zlib + web site. If you need something peculiar from this DLL, you + can send your suggestion to the zlib mailing list. + + However, in case you do rebuild the DLL yourself, you can run + it with the test programs found in the DLL distribution. + Running these test programs is not a guarantee of compliance, + but a failure can imply a detected problem. + +** + +This document is written and maintained by +Cosmin Truta diff --git a/tools/HitboxExpander/third_party/zlib/README.txt b/tools/HitboxExpander/third_party/zlib/README.txt new file mode 100755 index 00000000000..34a13b344e7 --- /dev/null +++ b/tools/HitboxExpander/third_party/zlib/README.txt @@ -0,0 +1,60 @@ + +What's here +=========== + The official ZLIB1.DLL + + +Source +====== + zlib version 1.2.8 + available at http://www.gzip.org/zlib/ + + +Specification and rationale +=========================== + See the accompanying DLL_FAQ.txt + + +Usage +===== + See the accompanying USAGE.txt + + +Build info +========== + Contributed by Jan Nijtmans. + + Compiler: + i686-w64-mingw32-gcc (GCC) 4.5.3 + Library: + mingw64-i686-runtime/headers: 3.0b_svn5747-1 + Build commands: + i686-w64-mingw32-gcc -c -DASMV contrib/asm686/match.S + i686-w64-mingw32-gcc -c -DASMINF -I. -O3 contrib/inflate86/inffas86.c + make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- LOC="-mms-bitfields -DASMV -DASMINF" OBJA="inffas86.o match.o" + Finally, from VS commandline (VS2005 or higher): + lib -machine:X86 -name:zlib1.dll -def:zlib.def -out:zdll.lib + +Copyright notice +================ + Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + diff --git a/tools/HitboxExpander/third_party/zlib/USAGE.txt b/tools/HitboxExpander/third_party/zlib/USAGE.txt new file mode 100755 index 00000000000..48e594ee572 --- /dev/null +++ b/tools/HitboxExpander/third_party/zlib/USAGE.txt @@ -0,0 +1,89 @@ + +Installing ZLIB1.DLL +==================== + Copy ZLIB1.DLL to the SYSTEM or the SYSTEM32 directory. + + +Using ZLIB1.DLL with Microsoft Visual C++ +========================================= + 1. Install the supplied header files "zlib.h" and "zconf.h" + into a directory found in the INCLUDE path list. + + 2. Install the supplied library file "zdll.lib" into a + directory found in the LIB path list. + + 3. Add "zdll.lib" to your project. + + +Using ZLIB1.DLL with gcc/MinGW +============================== + 1. Install the supplied header files "zlib.h" and "zconf.h" + into the INCLUDE directory. + + 2. Copy the supplied library file "zdll.lib" to "libzdll.a": + cp lib/zdll.lib lib/libzdll.a + + OR + + 2' Build the import library from the supplied "zlib.def": + dlltool -D zlib1.dll -d lib/zlib.def -l lib/libzdll.a + + 3. Install "libzdll.a" into the LIB directory. + + 4. Add "libzdll.a" to your project, or use the -lzdll option. + + +Using ZLIB1.DLL with gcc/Cygwin +=============================== + ZLIB1.DLL is not designed to work with Cygwin. The Cygwin + system has its own DLL build of zlib, named CYGZ.DLL. + + +Using ZLIB1.DLL with Borland C++ +================================ + 1. Install the supplied header files "zlib.h" and "zconf.h" + into a directory found in the INCLUDE path list. + + 2. Build the import library using the IMPLIB tool: + implib -a -c -f lib\zdllbor.lib zlib1.dll + + OR + + 2' Convert the supplied library file "zdll.lib" to OMF format, + using the COFF2OMF tool: + coff2omf lib\zdll.lib lib\zdllbor.lib + + 3. Install "zdllbor.lib" into a directory found in the LIB path + list. + + 4. Add "zdllbor.lib" to your project. + + Notes: + - The modules that are linked with "zdllbor.lib" must be compiled + using a 4-byte alignment (option -a): + bcc32 -a -c myprog.c + bcc32 myprog.obj zdllbor.lib + - If you wish, you may use "zlib1.lib" instead of "zdllbor.lib". + + +Rebuilding ZLIB1.DLL +==================== + Depending on your build environment, use the appropriate + makefile from the win32/ directory, found in the zlib source + distribution. + + Your custom build has to comply with the requirements stated + in DLL_FAQ.txt, including (but not limited to) the following: + - It must be built from an unaltered zlib source distribution. + - It must be linked to MSVCRT.DLL. + - The macros that compile out certain portions of the zlib + code (such as NO_GZCOMPRESS, NO_GZIP) must not be enabled. + - The ZLIB_WINAPI macro must not be enabled. + + Furthermore, it has to run successfully with the test suite + found in this package. + + It is recommended, however, to use the supplied ZLIB1.DLL, + instead of rebuilding it yourself. You should rebuild it + only if you have a special reason. + diff --git a/tools/HitboxExpander/third_party/zlib/include/zconf.h b/tools/HitboxExpander/third_party/zlib/include/zconf.h new file mode 100755 index 00000000000..9987a775530 --- /dev/null +++ b/tools/HitboxExpander/third_party/zlib/include/zconf.h @@ -0,0 +1,511 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2013 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzvprintf z_gzvprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateGetDictionary z_inflateGetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/tools/HitboxExpander/third_party/zlib/include/zlib.h b/tools/HitboxExpander/third_party/zlib/include/zlib.h new file mode 100755 index 00000000000..3e0c7672ac5 --- /dev/null +++ b/tools/HitboxExpander/third_party/zlib/include/zlib.h @@ -0,0 +1,1768 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.8, April 28th, 2013 + + Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.8" +#define ZLIB_VERNUM 0x1280 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 8 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, + z_const unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, + const char *format, + va_list va)); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/tools/HitboxExpander/third_party/zlib/lib/zdll.lib b/tools/HitboxExpander/third_party/zlib/lib/zdll.lib new file mode 100755 index 0000000000000000000000000000000000000000..669b186cc5a5cfb531800a670b7abb32bfffae3b GIT binary patch literal 15256 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 literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/zlib/lib/zlib.def b/tools/HitboxExpander/third_party/zlib/lib/zlib.def new file mode 100755 index 00000000000..face655183a --- /dev/null +++ b/tools/HitboxExpander/third_party/zlib/lib/zlib.def @@ -0,0 +1,86 @@ +; zlib data compression library +EXPORTS +; basic functions + zlibVersion + deflate + deflateEnd + inflate + inflateEnd +; advanced functions + deflateSetDictionary + deflateCopy + deflateReset + deflateParams + deflateTune + deflateBound + deflatePending + deflatePrime + deflateSetHeader + inflateSetDictionary + inflateGetDictionary + inflateSync + inflateCopy + inflateReset + inflateReset2 + inflatePrime + inflateMark + inflateGetHeader + inflateBack + inflateBackEnd + zlibCompileFlags +; utility functions + compress + compress2 + compressBound + uncompress + gzopen + gzdopen + gzbuffer + gzsetparams + gzread + gzwrite + gzprintf + gzvprintf + gzputs + gzgets + gzputc + gzgetc + gzungetc + gzflush + gzseek + gzrewind + gztell + gzoffset + gzeof + gzdirect + gzclose + gzclose_r + gzclose_w + gzerror + gzclearerr +; large file functions + gzopen64 + gzseek64 + gztell64 + gzoffset64 + adler32_combine64 + crc32_combine64 +; checksum functions + adler32 + crc32 + adler32_combine + crc32_combine +; various hacks, don't look :) + deflateInit_ + deflateInit2_ + inflateInit_ + inflateInit2_ + inflateBackInit_ + gzgetc_ + zError + inflateSyncPoint + get_crc_table + inflateUndermine + inflateResetKeep + deflateResetKeep + gzopen_w diff --git a/tools/HitboxExpander/third_party/zlib/test/example_d.exe b/tools/HitboxExpander/third_party/zlib/test/example_d.exe new file mode 100755 index 0000000000000000000000000000000000000000..1061952b844918126d263ef1c730546bb4a50107 GIT binary patch literal 38912 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 VBe!Cl8y)|Dbm~97__rzWzXAHFG=%^F literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/zlib/test/minigzip_d.exe b/tools/HitboxExpander/third_party/zlib/test/minigzip_d.exe new file mode 100755 index 0000000000000000000000000000000000000000..e829976d93fec59cc5cc38d4f7af40a6f6b87637 GIT binary patch literal 35840 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 PuYUfY(X0RWTk*dDdX5d7 literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/zlib/zlib1.dll b/tools/HitboxExpander/third_party/zlib/zlib1.dll new file mode 100755 index 0000000000000000000000000000000000000000..9ea38d5cf3e0ddbeaccc0122ce3cdb6c3741a3e1 GIT binary patch literal 107520 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

    |MhCkB4mr`;oB! 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 Date: Tue, 3 Dec 2013 23:25:44 +0200 Subject: [PATCH 083/315] Changed bitflag 'or' to boolean | != || --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 53baea581e7..a745cc1f7f0 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -14,7 +14,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds if(istype(loc, /mob/living)) affected_mob = loc - if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest) | affected_mob.status_flags & XENO_HOST) //If our Victim is augmented in the chest, No Babby - RR + if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest) || affected_mob.status_flags & XENO_HOST) //If our Victim is augmented in the chest, No Babby - RR del(src) return affected_mob.status_flags |= XENO_HOST From c65a71b22d9c75e255987d67513b74fe707512a8 Mon Sep 17 00:00:00 2001 From: Cem Kocagil Date: Tue, 3 Dec 2013 23:26:46 +0200 Subject: [PATCH 084/315] Zip the HitboxExpander libraries --- tools/HitboxExpander/.gitignore | 4 +- tools/HitboxExpander/README | 10 + .../third_party/Imaging-1.1.7.zip | Bin 0 -> 952676 bytes .../third_party/Imaging-1.1.7/BUILDME | 11 - .../third_party/Imaging-1.1.7/CHANGES | 1767 --------- .../third_party/Imaging-1.1.7/CONTENTS | 299 -- .../third_party/Imaging-1.1.7/Docs/effbot.css | 118 - .../third_party/Imaging-1.1.7/Docs/index.html | 103 - .../Imaging-1.1.7/Images/courB08.bdf | 2676 -------------- .../Imaging-1.1.7/Images/courB08.pbm | Bin 1273 -> 0 bytes .../Imaging-1.1.7/Images/courB08.pil | Bin 5143 -> 0 bytes .../third_party/Imaging-1.1.7/Images/lena.gif | Bin 16336 -> 0 bytes .../third_party/Imaging-1.1.7/Images/lena.jpg | Bin 4788 -> 0 bytes .../third_party/Imaging-1.1.7/Images/lena.png | Bin 37723 -> 0 bytes .../third_party/Imaging-1.1.7/Images/lena.ppm | 4 - .../third_party/Imaging-1.1.7/MANIFEST | 279 -- .../third_party/Imaging-1.1.7/PIL.pth | 1 - .../Imaging-1.1.7/PIL/ArgImagePlugin.py | 504 --- .../Imaging-1.1.7/PIL/BdfFontFile.py | 133 - .../Imaging-1.1.7/PIL/BmpImagePlugin.py | 251 -- .../Imaging-1.1.7/PIL/BufrStubImagePlugin.py | 68 - .../Imaging-1.1.7/PIL/ContainerIO.py | 116 - .../Imaging-1.1.7/PIL/CurImagePlugin.py | 88 - .../Imaging-1.1.7/PIL/DcxImagePlugin.py | 78 - .../Imaging-1.1.7/PIL/EpsImagePlugin.py | 349 -- .../third_party/Imaging-1.1.7/PIL/ExifTags.py | 157 - .../Imaging-1.1.7/PIL/FitsStubImagePlugin.py | 73 - .../Imaging-1.1.7/PIL/FliImagePlugin.py | 142 - .../third_party/Imaging-1.1.7/PIL/FontFile.py | 146 - .../Imaging-1.1.7/PIL/FpxImagePlugin.py | 224 -- .../Imaging-1.1.7/PIL/GbrImagePlugin.py | 70 - .../Imaging-1.1.7/PIL/GdImageFile.py | 85 - .../Imaging-1.1.7/PIL/GifImagePlugin.py | 407 -- .../Imaging-1.1.7/PIL/GimpGradientFile.py | 124 - .../Imaging-1.1.7/PIL/GimpPaletteFile.py | 61 - .../Imaging-1.1.7/PIL/GribStubImagePlugin.py | 68 - .../Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py | 70 - .../Imaging-1.1.7/PIL/IcnsImagePlugin.py | 211 -- .../Imaging-1.1.7/PIL/IcoImagePlugin.py | 86 - .../Imaging-1.1.7/PIL/ImImagePlugin.py | 336 -- .../third_party/Imaging-1.1.7/PIL/Image.py | 2127 ----------- .../Imaging-1.1.7/PIL/ImageChops.py | 302 -- .../third_party/Imaging-1.1.7/PIL/ImageCms.py | 786 ---- .../Imaging-1.1.7/PIL/ImageColor.py | 263 -- .../Imaging-1.1.7/PIL/ImageDraw.py | 378 -- .../Imaging-1.1.7/PIL/ImageDraw2.py | 105 - .../Imaging-1.1.7/PIL/ImageEnhance.py | 90 - .../Imaging-1.1.7/PIL/ImageFile.py | 528 --- .../Imaging-1.1.7/PIL/ImageFileIO.py | 39 - .../Imaging-1.1.7/PIL/ImageFilter.py | 289 -- .../Imaging-1.1.7/PIL/ImageFont.py | 390 -- .../third_party/Imaging-1.1.7/PIL/ImageGL.py | 28 - .../Imaging-1.1.7/PIL/ImageGrab.py | 71 - .../Imaging-1.1.7/PIL/ImageMath.py | 207 -- .../Imaging-1.1.7/PIL/ImageMode.py | 50 - .../third_party/Imaging-1.1.7/PIL/ImageOps.py | 439 --- .../Imaging-1.1.7/PIL/ImagePalette.py | 184 - .../Imaging-1.1.7/PIL/ImagePath.py | 71 - .../third_party/Imaging-1.1.7/PIL/ImageQt.py | 84 - .../Imaging-1.1.7/PIL/ImageSequence.py | 38 - .../Imaging-1.1.7/PIL/ImageShow.py | 163 - .../Imaging-1.1.7/PIL/ImageStat.py | 164 - .../third_party/Imaging-1.1.7/PIL/ImageTk.py | 296 -- .../Imaging-1.1.7/PIL/ImageTransform.py | 95 - .../third_party/Imaging-1.1.7/PIL/ImageWin.py | 215 -- .../Imaging-1.1.7/PIL/ImtImagePlugin.py | 93 - .../Imaging-1.1.7/PIL/IptcImagePlugin.py | 288 -- .../Imaging-1.1.7/PIL/JpegImagePlugin.py | 492 --- .../Imaging-1.1.7/PIL/McIdasImagePlugin.py | 70 - .../Imaging-1.1.7/PIL/MicImagePlugin.py | 95 - .../Imaging-1.1.7/PIL/MpegImagePlugin.py | 82 - .../Imaging-1.1.7/PIL/MspImagePlugin.py | 103 - .../Imaging-1.1.7/PIL/OleFileIO.py | 528 --- .../third_party/Imaging-1.1.7/PIL/PSDraw.py | 199 - .../Imaging-1.1.7/PIL/PaletteFile.py | 55 - .../Imaging-1.1.7/PIL/PalmImagePlugin.py | 225 -- .../Imaging-1.1.7/PIL/PcdImagePlugin.py | 76 - .../Imaging-1.1.7/PIL/PcfFontFile.py | 256 -- .../Imaging-1.1.7/PIL/PcxImagePlugin.py | 167 - .../Imaging-1.1.7/PIL/PdfImagePlugin.py | 211 -- .../Imaging-1.1.7/PIL/PixarImagePlugin.py | 71 - .../Imaging-1.1.7/PIL/PngImagePlugin.py | 620 ---- .../Imaging-1.1.7/PIL/PpmImagePlugin.py | 131 - .../Imaging-1.1.7/PIL/PsdImagePlugin.py | 291 -- .../Imaging-1.1.7/PIL/SgiImagePlugin.py | 92 - .../Imaging-1.1.7/PIL/SpiderImagePlugin.py | 294 -- .../Imaging-1.1.7/PIL/SunImagePlugin.py | 86 - .../third_party/Imaging-1.1.7/PIL/TarIO.py | 57 - .../Imaging-1.1.7/PIL/TgaImagePlugin.py | 201 - .../Imaging-1.1.7/PIL/TiffImagePlugin.py | 860 ----- .../third_party/Imaging-1.1.7/PIL/TiffTags.py | 209 -- .../Imaging-1.1.7/PIL/WalImageFile.py | 126 - .../Imaging-1.1.7/PIL/WmfImagePlugin.py | 167 - .../Imaging-1.1.7/PIL/XVThumbImagePlugin.py | 73 - .../Imaging-1.1.7/PIL/XbmImagePlugin.py | 94 - .../Imaging-1.1.7/PIL/XpmImagePlugin.py | 129 - .../third_party/Imaging-1.1.7/PIL/__init__.py | 12 - .../Imaging-1.1.7/PIL/_imaging.pyd | Bin 193536 -> 0 bytes .../Imaging-1.1.7/PIL/_imagingmath.pyd | Bin 14848 -> 0 bytes .../third_party/Imaging-1.1.7/README | 300 -- .../third_party/Imaging-1.1.7/Sane/CHANGES | 34 - .../third_party/Imaging-1.1.7/Sane/README | 22 - .../third_party/Imaging-1.1.7/Sane/_sane.c | 1325 ------- .../Imaging-1.1.7/Sane/demo_numarray.py | 39 - .../Imaging-1.1.7/Sane/demo_pil.py | 33 - .../third_party/Imaging-1.1.7/Sane/sane.py | 289 -- .../Imaging-1.1.7/Sane/sanedoc.txt | 294 -- .../third_party/Imaging-1.1.7/Sane/setup.py | 24 - .../third_party/Imaging-1.1.7/Scripts/README | 83 - .../Imaging-1.1.7/Scripts/enhancer.py | 53 - .../Imaging-1.1.7/Scripts/explode.py | 107 - .../Imaging-1.1.7/Scripts/gifmaker.py | 135 - .../Imaging-1.1.7/Scripts/painter.py | 72 - .../Imaging-1.1.7/Scripts/pilconvert.py | 96 - .../Imaging-1.1.7/Scripts/pildriver.py | 524 --- .../Imaging-1.1.7/Scripts/pilfile.py | 94 - .../Imaging-1.1.7/Scripts/pilfont.py | 54 - .../Imaging-1.1.7/Scripts/pilprint.py | 93 - .../Imaging-1.1.7/Scripts/player.py | 121 - .../Imaging-1.1.7/Scripts/thresholder.py | 68 - .../Imaging-1.1.7/Scripts/viewer.py | 46 - .../third_party/Imaging-1.1.7/Tk/booster.txt | 108 - .../third_party/Imaging-1.1.7/Tk/install.txt | 41 - .../Imaging-1.1.7/Tk/pilbitmap.txt | 149 - .../third_party/Imaging-1.1.7/Tk/tkImaging.c | 265 -- .../third_party/Imaging-1.1.7/_imaging.c | 3281 ----------------- .../third_party/Imaging-1.1.7/_imagingcms.c | 608 --- .../third_party/Imaging-1.1.7/_imagingft.c | 502 --- .../third_party/Imaging-1.1.7/_imagingmath.c | 284 -- .../third_party/Imaging-1.1.7/_imagingtk.c | 70 - .../build/temp.win32-2.7/Release/_imaging.exp | Bin 670 -> 0 bytes .../build/temp.win32-2.7/Release/_imaging.lib | Bin 1736 -> 0 bytes .../temp.win32-2.7/Release/_imagingmath.exp | Bin 690 -> 0 bytes .../temp.win32-2.7/Release/_imagingmath.lib | Bin 1882 -> 0 bytes .../third_party/Imaging-1.1.7/decode.c | 689 ---- .../third_party/Imaging-1.1.7/display.c | 836 ----- .../third_party/Imaging-1.1.7/doctest.py | 1111 ------ .../third_party/Imaging-1.1.7/encode.c | 540 --- .../Imaging-1.1.7/libImaging/Access.c | 255 -- .../Imaging-1.1.7/libImaging/Antialias.c | 307 -- .../Imaging-1.1.7/libImaging/Bands.c | 129 - .../Imaging-1.1.7/libImaging/Bit.h | 30 - .../Imaging-1.1.7/libImaging/BitDecode.c | 138 - .../Imaging-1.1.7/libImaging/Blend.c | 79 - .../Imaging-1.1.7/libImaging/Chops.c | 148 - .../Imaging-1.1.7/libImaging/Convert.c | 1132 ------ .../Imaging-1.1.7/libImaging/ConvertYCbCr.c | 387 -- .../Imaging-1.1.7/libImaging/Copy.c | 58 - .../Imaging-1.1.7/libImaging/Crc32.c | 87 - .../Imaging-1.1.7/libImaging/Crop.c | 61 - .../Imaging-1.1.7/libImaging/Dib.c | 311 -- .../Imaging-1.1.7/libImaging/Draw.c | 1167 ------ .../Imaging-1.1.7/libImaging/Effects.c | 373 -- .../Imaging-1.1.7/libImaging/EpsEncode.c | 80 - .../Imaging-1.1.7/libImaging/Except.c | 83 - .../Imaging-1.1.7/libImaging/File.c | 193 - .../Imaging-1.1.7/libImaging/Fill.c | 101 - .../Imaging-1.1.7/libImaging/Filter.c | 179 - .../Imaging-1.1.7/libImaging/FliDecode.c | 205 - .../Imaging-1.1.7/libImaging/Geometry.c | 959 ----- .../Imaging-1.1.7/libImaging/GetBBox.c | 316 -- .../Imaging-1.1.7/libImaging/Gif.h | 109 - .../Imaging-1.1.7/libImaging/GifDecode.c | 297 -- .../Imaging-1.1.7/libImaging/GifEncode.c | 319 -- .../Imaging-1.1.7/libImaging/HexDecode.c | 67 - .../Imaging-1.1.7/libImaging/Histo.c | 169 - .../Imaging-1.1.7/libImaging/ImDib.h | 64 - .../Imaging-1.1.7/libImaging/ImPlatform.h | 72 - .../Imaging-1.1.7/libImaging/Imaging.h | 497 --- .../Imaging-1.1.7/libImaging/Jpeg.h | 104 - .../Imaging-1.1.7/libImaging/JpegDecode.c | 267 -- .../Imaging-1.1.7/libImaging/JpegEncode.c | 284 -- .../Imaging-1.1.7/libImaging/Lzw.h | 52 - .../Imaging-1.1.7/libImaging/LzwDecode.c | 230 -- .../Imaging-1.1.7/libImaging/Matrix.c | 74 - .../Imaging-1.1.7/libImaging/ModeFilter.c | 78 - .../Imaging-1.1.7/libImaging/MspDecode.c | 91 - .../Imaging-1.1.7/libImaging/Negative.c | 42 - .../Imaging-1.1.7/libImaging/Offset.c | 61 - .../Imaging-1.1.7/libImaging/Pack.c | 566 --- .../Imaging-1.1.7/libImaging/PackDecode.c | 92 - .../Imaging-1.1.7/libImaging/Palette.c | 316 -- .../Imaging-1.1.7/libImaging/Paste.c | 555 --- .../Imaging-1.1.7/libImaging/PcdDecode.c | 78 - .../Imaging-1.1.7/libImaging/PcxDecode.c | 75 - .../Imaging-1.1.7/libImaging/PcxEncode.c | 148 - .../Imaging-1.1.7/libImaging/Point.c | 263 -- .../Imaging-1.1.7/libImaging/Quant.c | 1610 -------- .../Imaging-1.1.7/libImaging/Quant.h | 40 - .../Imaging-1.1.7/libImaging/QuantDefines.h | 25 - .../Imaging-1.1.7/libImaging/QuantHash.c | 477 --- .../Imaging-1.1.7/libImaging/QuantHash.h | 36 - .../Imaging-1.1.7/libImaging/QuantHeap.c | 150 - .../Imaging-1.1.7/libImaging/QuantHeap.h | 23 - .../Imaging-1.1.7/libImaging/QuantTypes.h | 28 - .../Imaging-1.1.7/libImaging/RankFilter.c | 105 - .../Imaging-1.1.7/libImaging/Raw.h | 15 - .../Imaging-1.1.7/libImaging/RawDecode.c | 89 - .../Imaging-1.1.7/libImaging/RawEncode.c | 89 - .../Imaging-1.1.7/libImaging/Storage.c | 413 --- .../Imaging-1.1.7/libImaging/SunRleDecode.c | 112 - .../Imaging-1.1.7/libImaging/TgaRleDecode.c | 118 - .../Imaging-1.1.7/libImaging/Unpack.c | 1028 ------ .../Imaging-1.1.7/libImaging/UnpackYCC.c | 162 - .../Imaging-1.1.7/libImaging/UnsharpMask.c | 398 -- .../Imaging-1.1.7/libImaging/XbmDecode.c | 81 - .../Imaging-1.1.7/libImaging/XbmEncode.c | 106 - .../Imaging-1.1.7/libImaging/Zip.h | 57 - .../Imaging-1.1.7/libImaging/ZipDecode.c | 271 -- .../Imaging-1.1.7/libImaging/ZipEncode.c | 341 -- .../third_party/Imaging-1.1.7/map.c | 379 -- .../third_party/Imaging-1.1.7/outline.c | 179 - .../third_party/Imaging-1.1.7/path.c | 587 --- .../third_party/Imaging-1.1.7/selftest.py | 202 - .../third_party/Imaging-1.1.7/setup.py | 487 --- tools/HitboxExpander/third_party/zlib.zip | Bin 0 -> 141415 bytes .../third_party/zlib/DLL_FAQ.txt | 397 -- .../third_party/zlib/README.txt | 60 - .../HitboxExpander/third_party/zlib/USAGE.txt | 89 - .../third_party/zlib/include/zconf.h | 511 --- .../third_party/zlib/include/zlib.h | 1768 --------- .../third_party/zlib/lib/zdll.lib | Bin 15256 -> 0 bytes .../third_party/zlib/lib/zlib.def | 86 - .../third_party/zlib/test/example_d.exe | Bin 38912 -> 0 bytes .../third_party/zlib/test/minigzip_d.exe | Bin 35840 -> 0 bytes .../HitboxExpander/third_party/zlib/zlib1.dll | Bin 107520 -> 0 bytes 226 files changed, 12 insertions(+), 57619 deletions(-) create mode 100755 tools/HitboxExpander/README create mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7.zip delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pbm delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pil delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.gif delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.jpg delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.png delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.ppm delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/MANIFEST delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL.pth delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ArgImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imaging.pyd delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imagingmath.pyd delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/README delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.exp delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.lib delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.exp delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.lib delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/decode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/display.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/LzwDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/map.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/path.c delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py delete mode 100755 tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py create mode 100755 tools/HitboxExpander/third_party/zlib.zip delete mode 100755 tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt delete mode 100755 tools/HitboxExpander/third_party/zlib/README.txt delete mode 100755 tools/HitboxExpander/third_party/zlib/USAGE.txt delete mode 100755 tools/HitboxExpander/third_party/zlib/include/zconf.h delete mode 100755 tools/HitboxExpander/third_party/zlib/include/zlib.h delete mode 100755 tools/HitboxExpander/third_party/zlib/lib/zdll.lib delete mode 100755 tools/HitboxExpander/third_party/zlib/lib/zlib.def delete mode 100755 tools/HitboxExpander/third_party/zlib/test/example_d.exe delete mode 100755 tools/HitboxExpander/third_party/zlib/test/minigzip_d.exe delete mode 100755 tools/HitboxExpander/third_party/zlib/zlib1.dll diff --git a/tools/HitboxExpander/.gitignore b/tools/HitboxExpander/.gitignore index 8e987a0b84b..ec7f5fd7c18 100644 --- a/tools/HitboxExpander/.gitignore +++ b/tools/HitboxExpander/.gitignore @@ -1,3 +1,3 @@ -*.obj -pythondoc-PIL.*.html +Imaging-1.1.7/ +zlib/ diff --git a/tools/HitboxExpander/README b/tools/HitboxExpander/README new file mode 100755 index 00000000000..df9cb5babb0 --- /dev/null +++ b/tools/HitboxExpander/README @@ -0,0 +1,10 @@ +Setup: Unzip the zip files in third_party/ so that you have the directories +third_party/Imaging-1.1.7/ and third_party/zlib/. + +Usage: python hitbox_expander.py + +This tool expands the hitbox of the given image by 1 pixel. +Works by changing some of the fully-transparent pixels to alpha=1 black pixels. +Naked human eye usually cannot notice the difference. + +No space carps or corgis have been used or injured in the production of this tool. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7.zip b/tools/HitboxExpander/third_party/Imaging-1.1.7.zip new file mode 100755 index 0000000000000000000000000000000000000000..a9af836b11ab3576d5a2e810f47a1fd43ad0ceae GIT binary patch literal 952676 zcmZs?b8Ie7&^BC~r?zdoJ+*ae+qP}nI<;-vcJI2qPi?#Xe$SgPdGjRiCadI{oquMo z%+Bm8$$~?`f&5RCYzq(0U95a@(}k3-5Wdg+%t zqX%d$@(5RAtpfdw>a82G?-Def54|P-42q(O0Lw9=Cb`|iCsw$q7Z*u?z7!rIV*92K zDPa4HK$4wocWJ-;A$`hv04*=UmXz65q_y?)5)vfl9>{Z;-S6J z`=(BRS!dSUW&U&=gxlBn_`H&F*?9oceB3{GF6)H4GWkhht^NNMAkB{ z?{Wgh;SD*ruZoz>nzZWAE?E42)yF1z%4as5@^Z7cP3N}iktBS!l6j3Br<+FX#A`1< z*UsEtCCxbvZaIRNR6i@}Z;D?O%M#xzD8VnAc6<_o+DZhWwUq1}xDhZNenIPf3&yrT zLMfeSIizCNgfO1hbQhDt(E=E?N2)!YWc^F-{E6&@p;;^&P$sGVSR9QA3rEaPQGUYx zk{+;dr@{VEHpW>!C&AKi2jQ*1!+oWWY*aHzsop@RpWIUs<=vW=m)bcgn=^P!Aq^23 zQ0MG+LwErbxAr9BpLYx&93X2x0c`tZqFS($i~h_N@R=Nbz5Nqv%Gox2$Ck_MB$C@- z&Ej+agg%TNhfJHFb3Kl{yB^+WTN*g_m&Y7!4t2aT-??4RDs+ zQ~Zn=Z@fY5bPY!Jx-GjF_&h`SY!nJGuf}_Oh~mmomNET>a>MlA2M{P7)1KN=b?2BBT};cg_s`}Fg@kx_HZ41(@_lY@AEir z23g}`h?MIEEPE<+63K@^vm%+t&X?mznV-%O$N-&iK@tY`PkbEwZ{%r;k#re#teHh7 zL6_#y^ZO~#ZtO4jywKK*(ZQbEyqLp0_-Es9dMM^r3Y1UxtrUd8Wje)d509|rLVkzT z#nevZ1nUywOZcmbdLNHi!lv5vQp%Po# zOmlliV;lu!+CE5RG5ON3sVAcz_Im^K-kaYZv$nS%CFVke{QV2(Q*wY^2U^i`4u+rG zkAgnmJ71rkSV!k&TzDaI$vHIq_s0ca2cO@s&U07t^EgNb<_{;09=_jYFQ)-_V@$Ei zTGs+l-=_ILX3_%8$%da|9C!C&upk0=Gx?bUyo{^=X2BPrz`=cdj544}*Ab$Mnp|+a)1I{0eeg(|rtx*jaIcFI1em^tCd{ zu`=-Z1r;k%&fv=to)Sid@M3aw28)hW23Pt|1IUA45m7mJ%@etZ3F`udaHXwqgXpJb z4j^9(ZyN6V!}Y(Zuu~sio##^(Vs|r^MSG#|Y3Z4;Q0Zl+?UKJ?vnX}NdYc>68rDucP)6 z{7PK7z%{bOVo`lfit-+EECH%f^$OVP7qiFgwMBOLCv_mrF$UEaR9yV(l~8{YCa}$_ zSy!4v|1ANZs0a3^B;V>uml^8$cbm89v*v+O5Dvq@GfE}^%-mSshqxZiX&`vKYE&4O zD==lTs%oH-@euoVS@Jz%i$t&@@bHiOzDLM+Rs;!lcL<~<6?))8N&YAXx+>?ETZ>4` z!P;~S$!5k=ku-(qT6U^PBWUK(F@4EaG51IGUq-%eD4{N>Hq&{LX*a4zVj!U{2_&9JCXjJrr#?RtP5PaSRdobqW+VzQVU3#Z^212*lV z0^KNow`2hC%r2^Uv$%~JcoK#8QSz!n@;)5!hFTsamf{zYT$DFmpB$lBlX#~@vks{! ztgzW}d6CUX4B`h-B(&bI6VRcGshM0TmHhCR8>`Tcg`;Zb{h)37atw4b7!g#|)EVRE zd<*c5Z<>b<&Cxv;tST5RVyuixvXfEstRRz)JH^nyQPXD#OXTJB?}UYNwHLv5!WlPeAZ>4~L? z@w7sd74i8s@IUn{dRG++3v{ZiqH&^r!4*11l;GK{ir9n+-hmZchim?wi~;nKI!kWC zlrL&^!rxI99+l~`Z^cdS_6&UDAjWgr+WsN(b0}_V%snSNIIW!$`Twc5jKsGbwU5Lb z%|~(jil%n&>)6TfM{xtfox@FUJ5KUX`bwI_LqksSAXW39|1eZ+B}WPzpIzTyKXV{r85H|--1~7 z3k%2VkyCLykGNu$X%i}sR*P@|4@!v-2HFi>mmG_d#{S)J9A=X#JAN=FAQshiFuq*X-rG6u zCjfiE5;osmTFNc-^AM_~9=n`@rKpq)T_lbiShMGqSx-V^Th)=l;wkFZ<~hD`ZvG9SG<*u$nkZa zJGy+@53<}ArnZOv`*PRb(fZe^n20(#s-JiHP(hh)K8C;Hl5+-#7WTVWx7#)v$H;y^ zODO3tm;p_w+OUAq`xFed(~3La$it#T&Hscq%rI)rPDjXPYX8;iA|j|&`DrbNxnnUN z4*lNdNd55PrH)(NoQp>H&9`O7;6PlVPa)zSZOK)lCT6oWII+rJO0UsBNtX~a6-CYV zRW326q^QTqL3%u+9^&0Se4kT-j4>FdErUX+EwmRZv1-vXoM&fGT7-xxmCv&qp(h-Y zR9%Wz3OeZ$h`X}9_b#oBddQ|UD7FKbX)CapQa_@X_+Qfe$pM-!7WtNtx93}{D)`Y) zX$aC3H5!_8nXa4Rmnvfd$+w&*3Y&sp3F4gZ;&~ImJu_=g8$juO|32Zzea~g>ub7=V zW7r+upVivR5X8TttKy0N!q?{(;UBqhYmufEzyYL&u@+n7SJPzsc-hUl32Jo8%Mi;% zghMjIP`EpBY7=$8Bv)siGtF+~hJ(BiKo9ZH3N0oZx*d4Z^$-3J5dbH-|vIi@P7hQAa|r4e%;z7oj!8l0%`GiNwo zR&UA62FI9N!>uFaH*cA3Q4wxdk`7OzyOW7iTCFh;v=R}E?bNyTNxBwJAiH*^As{5VF*jE(yM0?QGLbD_8ikD}#q-)XC zAL_|W8^taD)5{z1+%1)gruOmn80i|MtCi$63%Nl$UPmu?~h zxUc-I)AVh{37+BE0rk>m<7-(UZxOzUJi6Lrnc`@US8~AC29jKt{MyHu>|-2QHfO+F z=N%KyhlNr@OD#nrx~|GG%s8w4YaLu`A?AyA89K@#tc41((haWON?A>++0fkBZQ?Ye zx5jIlArpHZ+{#n)a%cY)ROmXmR>DYNHfbjhl{Sehj)}L#dwjU8?m9rgT%FbFr3boc zwtHD=ev*!oX&M!Hhq%*M2XYlU(I_b1RYZ9S_N<#`b`hl}o{nqtB%MdOc6=kD68E%6|1^D(>T-Bhf)mSOxxZ7;1i>qP%!AL^ap^0OhDgU318tPveJy+Ps3y~_y z$TANxpk^EGvDU`xdtG&1l~gag8XM3}KX+6mq$wc6_0QaQy}UP*_m3wm6hx#+n-J`hF%7_T)TjEdlH==(Dp_)*TB!o0H>jw<&obhqoN$zS3 z)t4)e7$c4Rg?8u?WxA%}_$nH_$3oGvgKZSlz0e$Q$;6ud4Egg}t5wCoDxIxD(C{bM zXR~j}K>ROF*T!A-IUyc!)IuBXA^d0g2I=C9=zk|UPK>@GG9W-e-u~2D%km`khdjW%R6K255OzayS4_Wdd1ob+1J#TYg$xz*yCA8RH5KrYY z9Y<&tzbW50A`_$-QHYoz9zJcR=SVsX1zi?He0K=EJ=D>bKYdGCB(VRmhaE` z#Z=4Xg#E$Qxn2gvY&Rmh1~y`N$rCbY+$hdaf16Mne7AdK!w1Gd_Bj;`I*^$Wl}KUj z^7lBM__`CaKF+P0cQ|;U2<9=+$CIz!EwOPGoJFtgbQfz6I62p}neAAIf4J3iKifdq zK`^~DGz%BJZWqK!fyEr;+|H0^>BY~IWchb5elIJZgXck#V7KfVN`;O4;07D=2FOJJ zZZ!%VpyD@H^64_29Cn2C?>o!%7Lz;P|JdRj80N3u1~#8Uk2$TJNyvyOD`GnS`yA}g zlXAv8gVHW1Krk_!J7feJ=>;kQ$bWSyp}T2js+t=L&QYS=3sYAN2b0$_EZe8jq9fa; zDv;$1R(iRh!2^Bm58W4K-#pJ5!Ve;&b(&!K3vi5l&lhU2bm?hcR3AI38Q|>-kUsx( z_eUHy)P|AZS{{Deer%d`v{VCNU}*f|h^1v&Z)`@6^4BQf!=QV}Rnki5ru9}qn_a!i z+xk7_y+<<`M-!5{<^=0@FSy)%PqtUN$PsHw>)!OEy_WB!dakJ8Su~B%2$z%!(6?Bt z#R;-j7irD4=&pY+ccGe;$zJ-bX>f`85$zutBBAMNb$yEu|DH+lw3@{5l1-y#vdN55 zlEjN4e&8&B)$TW?2~#B*<6huBX|#s`a`cMgjH|`^+sAig#*iag0s?8zy;LD<8J8kH z!WcfJqL$L_VcvP`Isv=*yFdKMh*1c2TheAf(EppppuR5LR3Je>u+abCG-hRcm2qRE zZiYSH|MKJ-|A5MwlOD;64HwB^sZ7z+2EGqte~s*mf~POd?s zZyxz7-rD!!tt&C$Db}tb0RC-rWX%^q`$M}jki3w<@*bxGK0S=B+FCztH5>Hy&H2zv zVa=tCSaav6l3oR+O_p8(wT9Cczh*zxw#P zAX62TF#KvJR}oa_8~^v>uMDDZdIC)qMpMShzyY&^|0VK6FW>7M&rO*h;raCYMMV(P zXXg2)lp1(>uYo30xs`!_B~@G7>tXf<0+{ImCpL=~=m-Cd4sjz(-4uDy{jVT0DSK|A;EiD}H_E`2`qilZ#h zPm7>9+$MkHq$}Y+j9N>%*Rj%YE$oS~I1u>lR_lMoYQDp^;%H|?q?X#c$QjB}_mP2X zpK`Y)_Cb6vt2%rY`Pua9o_GcOaQyYW@QgVRW8I-hI`-dn^;#w1+8UtBv5l(o40EMv zIXvzW>(2kU-VAJED)!5-2rtVdY>%Zg*dy&Hu$7q4}P0ldjg#eqNkMSb!P z&5C3H147>aSedNCX@|SljmyrE0L?#yc-(6%*RisygKs#0?;DljxNHG|Y_+@(Sgkb) z48U>ZgIInliV!(6tNMK^~uSqx14dJ_J9Q70Vr{ze3#oUA+o2`C7Z=>Z+CiFTa8_N-?kSLCuP zlI~(YS~Wy~4fYN78EtN(2qF*mr+&qru(n4>JHJUjwLtjOf^vO8r1s@Z=h>P}Gg z?(t|F+%DsX;@;blK%-hq1*mc=Bfbg#kIi>lW4nlS5{@QUgd>CrJdjQkRFbq0b-i3- zUey_SSiOMbDZ3XuyQI=lRgol!_#b^t^T~u4|L1&(RN+pF(<;Lq7W_%o#9E{~t3F}9 zF}{kJ7ic$}o3JL{xfQdTgw5Fv?SIo9yT?DKAJtq8zVgo?_ zHwDA~W;fLk1OZtP0s%q(zvVJpGkYUO3oCOBk0^tgsGpyY%n$1_m#WG#m5gjD`SO<; zSGfo|=wxOBR@AZ>(w-AbTvaF|6w2hL4X0~jxrk6^9#MCyu(dIyrkt;hzW%S?@4)qk zJKvu8lZUL#)B(hKQBd?(JP?RFBLcV6(duD&r^STxbbQ@TTN8%7F9 z7j3B5U4(0+>q3-jvrF*hyDdA!O;X>$VXw{IrP46}?6;TKarpLaiA!>9`&ArtlM0o# z2F{9^2iM8xQpe4W&uN#Z)BN|ncwdskwI22s<(k8UPmPc#C6&LyYJTI%7v95anWzr( z<ptIA8tk z>*;+tke(d*mcqn)^H=<%Eg%1E1xcTKtIVDeogSZ0-`7a*d02E)c$QZs!oR3lzVol~ zbWhJSnt&T!TfXS@pD!;(I<__O2W0yloeT=W4t`)Z6oLIZ!o>?gYPvn$`jG^^Z~gkC z8Y6@3etYDSxNKbULLLpwZ%Xu6nRyd6F_$0Ht`9XSwHSWV5?b=$7EY_{QSe(9C^h zt1oi{h`I5YWYqV+|JQb)q^9*%wifR;b&nwZaQ!~HyJKlK$4M>;{OBqJapHN3I5Y)r& zy^XNasK@-`eBVEqy$JERc~mo%dz`q)FwNg|J2i3mXxkn#pAF-jeOpVDwLUzw!BlN$ z#C)zQ%~PA!u5R~`!D^dwZ!Lr8ZO3#?ud|%hS*u>eq(ny~O8oX*<*bWG<`rp(s)RvZV&^*A49#VPd$eh#?+3Pw}3RSmO z^-wljdV0)en%hxTeO4;(q|O95%kaEioN*X6=9Rk=DW>uFZL_+YUSw~?zGS@U3M?g` z<8D^dIHVn~|3goxT+iLrC^$#k>!R>@ZEDls#fACQ`1!#E8De*gSV-NFbb^n|#T8m_ z`X!jz4|Bx|cALk|WbQnwDnTrKJfNd4ydN+Kb?t;Uq4MQUHk9{%d4+x<$8^A$G3_o8 z?!Cf`>GKG3WAmjjo<1?QL4ntMzH@y11`m!U5+kC{A5-(!G*|GuXJ5VF-gKooZ2i8$ zN!Pu{-a_+F0%r*{fXMX9t=nl9qP&KKVyR%m_Tu&R%J2EOB%lw+-6wCW)I1gXkXqXF z##mxuNv)6oS{qFbx_{uM7JvPEO_hIkvfkH!%_ah#2OPbGD5j>tZ%VcyIzEd3_&(Ex z7e>Q?XZ)w0Vjo?e2(I(kzJy(p40L3?Ox!mB5ceZWI zqchgE^5wy$oM2SZ0~ftnkcH||AeOGbxGar>{+49U_-&hkAU(agW|1l_^>0`~L2%IZ z!>>EW`rjXN2eC^uQo71P+X^)mSc0_mZ^sK44J142IO@K}^;t>Senwgn^64#;3D~`0 z$DYmTQ(7~z?frHefWNUWw@MxqWkmKkzN6Iii_?~wM6pR7PiGK+PzFCCySLkY?%&#e z^N^IXc9lf2PykV@X! zTNDV37~J?waExG4DZKX`V1^{z@8|O_d5CE9mD4qFtrZlJ@Bh6f5Bv3X#Ns!RAK{D>SGbhRj-^JKL!r2Z^1>&`R9+u|*>i~OQWp{T_z|x-l#-2xf%l7zW%|1~$ zbh+yDx#v2fHN`7}?$1NK-A`jWA0T$_t=oieaE$vj@$x_cp{3g3&gr?C=~o;*<8eUw z0X&wZ12Bt9frtSz$7|{jkwBkup`F4axl5;xb2^$JJ3TIBvkUGa^#P%l z|9wRvEZbFw%LnYU!Zzmkhy7^k%<)A)Z{>`SZvNd}f82)5t9dv7#pV6c0pirn`(wn+ zZsHCH!VG@x<=(qrjDIapBc~T@Nz&%#9qv4)!-okL&t(7N~-s-$~!*stc|9z7E)$yG>?J}EmKt`>nT6Sj!Xq-lQiuT4ADn z)=1$|Dof=K2$xrK>7E%vqfMJx(%Ot5=pA#;lP9xQBH zR0{w>T?4*ZxJ5RA>aH4vMQFBd=a2@U&B5XvLbZ)v_vSTLBu6cI1MdKI^da$c06?H2 z55j_o+ZpTnsYmOtf^Oc#APC=RsyNhJUJNY&t`QK;h9s8mSGtcJ=T%EE@`j&;x{mU_ z+xh;4-)>?E#87&4q0l|S8EL$So+%ML>6?%|MUqxysjnaRbVAx8s05G*tYR>I=-s%8 z9^za&5@s;0E5ksswPnQRbP9M$-l5mfHGFPg&yFb)rEIacjQfO>w#}DG!*e*2(9*zQPr7zH!+1fn}5_9h6w`YB{?zh_vw#wyL$gTy(FwAd45xO8T;& z1cr`EO6+q`CSJ3zihfJ}3dg78epvX?H+?McM4bk>Yt$9)W0ttvsj$_0plAl11XOY#@@9H z96Y_}jjPyqEtBE;fbMOMa{3M zmC-n1qr2vUV#v~9r+W6hL-~1SZ%h2$%T;a=`>ki+-wsiaF zZxx(RKN7a74g*kfjaW6S>asPVyLWu^fh=$+=hcP)g?IWrE7O}LAzSCSD~%iX@SrA{ zddisFTKW)El#YNrhQTi`PV68`)7c@CGtu`sN|Q0FKqaH0gfV5V%NW+2V>d^3P`X20 zh7}o>Mh)vQEG*1y>#7%E=AV@;J2l1<^XD~cwjCbKq-hV|9B$1`a&5mEUM)E}ae~1S<$|jt?X1{MOx|4*+KSVGa?WZLlw8cQ9Y`8mNqEeNuq2k!R~Y}i<= z{l%Xm$ZJuJjAT3CE>GO7ug3J(bOWXMMSz*n7Hx2b-@`ypBBCQl^+C){3oTljLiLEf zR(b9+FzHNXwij`}^0JEf=NO^Q=o=TRxgUE;q@)&dd>h)Xd$O$5V-Ly=dYYUWwJ*OQXBTr68Oy7$3 zT#&~PU;DCGC!`Tg%|@e@(iWoVxsCRvX*Tn9%f}HsrlXyqd9MZI^sEDL3b%$)<>Pec z2NfPQ@YWO0hC5@7MiUV-xo9x8XyP0D;Xs9Yc}+tLn0gGmvU2mh_;N*velsWijIG?x zsD)HKtZK9XxUFEqyRFexiNQ&UNya=T<`HVQkobq2pXtn)TZDS!b(}K5=93(&PYzfD z`?mUIcl`w(6@t#h`F3NP2+td)QD%%0ceNt~Ou#k`&TwSsN`=6`N2Bz(l24v!YS3iC zV@JTIorRt`{h!y0Z7)$d0RaxVIDZ)$#-KpaV-qp4!8@Sz@Kp#iCW6%I`>zTt-zFmsY2rPd8X>L@^eD=p{Ks#d5R zlTKC0T)v-@Th^VbJn%QEMOH+^*OP1(!wXzABk(*`OKxVM-8G@!T0su)kP5FpZ1s0I z4AXT37f`c3Zc88NDM9myC3emN^m+dJwED9je91)&*8rzkH~bG73>5cruR2P#c{N&X zp#^Y`70`gYfkqW>8ee|4o^F5{MM&7u;sL|>vd7ES4bSrH@KAOAIq^99E+GlYeKM?p z0_qmLX{K=wZ2x8B4`Oz0?#c!2Xfy+e{`9e&1yyQF^nZrx4&Cg~mufGa>|SzOum8ZM z-!DriR#>9Oar}cn#5v3Crnpea{w#pvSf z23z{BNXxop$hblGiriz>xJ0Z#|gjU7ikoi=nVs4;aGA|Xb`qfm^D z=spMmW#CQ>)MFP{cW}9TZwFf6+x^qGz+y9&zQHY%KdSld2g(HdpLXrrZ`7Fqs?UGD znIdQDqn5_;b2&mmdi1O#M{R030acg+LXrV;QDe8hc%uJBREOspxCnjji$7-J1@V+k zYbfo6-kFK9AG!W5&q{PaP0AqAm`*Hv;V8=v@&|i!TjbSIh&;EDa7>^-f|!!*~k0Nr*yV?wf<(D&qU!OZ#;bAiRU_gc!E z7#``~N(8i&yOzWJK=d^?bA}ZZoG_t)yR-a}eH*4w86RWJ$BjNKDD9 z#m&-AubgPEn9@tpBa0c8uJAyXAUSCCo6(USkXJdeUVGAJjt%nEB4HX^nllZgMccP8 z7@t$AJ>DQ!VL`7^`=>W^8se?MuX#Trj^p0@&2Gu<4rC+1^C)K?o#u_!8y0 z#+Z`!0G-=ZPR`A^w!Y&y6`;6vyMkj_<7QV`eplnO9?@=clll3VatBx)oI?)ajW^b=Y*W z2djn|O1jxv%=+BidhUrwm@~lV7lLom|INutrE%woEGu-e>-G^x=PkcoL?1a&GLVLK z^R~s!v7IjK0dJtAzlGyu9D}R)kA{|_w>QQDKGtgGtO}~=OmagYD7h<(ngPh#)I0aJ zK&l?t4)(jc5;W)CbCWNWfM)nHuEgq>Rzks)N^pr7P};4l6Td^vf_juZ(J!(-M|)Z| zVUUZGl1}p(UHBQ!ZU zIV+gM3ZFZm#nLVQ<~YddzfPAa@4YxzZHIO{BM@28a7$ION`>7lg*!TN-vcpk{T?l*-%i>&u`1>Mc3#N)Bg%9aXs z?J|{}@NaPQWMBloG^w1&NoE?zwi8$9Z`r`JH%6Fz57YL?liIMFf-5phI-daDJx((7 zOYA^c|E_at*pBO)54SNH4wm<3ZG-)JpG32eht{Y5iX!eY^7!>KpOd|^H@;ILxZa<{ zACb-W#8Jj|w@Jf^w-zI`cU!(mh2bGXsWuCWBsE~jkz7u5p(8b9TP>p$dSM|}Kj!PO z)^J+tn0$i z+OI1KyMaZ|H>`CmakgB z=pjQk?kQ4Dt_cyFc_r4#)`t!G%rnUmRu|Lm*obWv){`@FiosNc+_Va3N~l1IESfgo z{*h^>{Sb9DZ5`Ms%BEP|eefv>aluxn7hioL$eE+Oy4el-Q1JC@rF=)SsF%cYWLy-^ zzG8MPBCfEGkJ`2Ir;ur8+iD+z|0Uv%f#)n7DO6(;_8z?OdD*xlYY4b&oLb6k{uFcn z)ZjKI{xlVT+IV%d_|Hjl)L*0i&hZ4hq%;H7F-wP%ubini#R9S4vNLL%QkP5I&&r@UW+AAmcre3HyFp=(Z^Gb}@ZYR|_fh_}?SS z&DBvdNq-z`qq=U~E_cZX`BbCgGpJ(~q-DaVZWWvIJ-J2~B61PeC@*VQ$)FBD&kx?p zAdP-{h3+Mel7>feFNp)t)Jf>YERO4u(J$Yb$B6l>#X{R^5D0hvy;9fNC2nlPPD!6i z-Oy*0e(Bf^eS!0LJKaPkeUZ0Rq)E9?u!l4Xi{MTFrh<5bLGq0d$={zo>R{i`3!k;A zCnTg@oyUHu(Pd4BEHyy6cW$Vc0|BGES6^kx{>k$?*c5IMa1B`Jn}@E=(thhpsosGLgIG##p( zhK@a{_Q=%5r^CMywxITFEjZnGljTqS_`KIL7Ae10ZGB~gq^3S|v5T~V60mQ!IPPk; z>Tt+^c949Z6f+i!W8g8lpHO))CrVLhS~Lg#wn}g*U}=NYd84t$C5xx%`IuL891LHl zGJu1v=_EyeU;hq3H<_gtZR9M+ry(@wu)5SRu1J(GEy4r)j2ehlv{k{e&|YL!&*&4Axn ze39J^39|!s6+LU=@!F%*K8~>e@CtSLyf^#79?Kq~Y9WZt7tLOs6a=bUbNoYf@NmZ| zBi!cD>;CTPr%oz)pZOeumDHQ0OXEocAQ|N;4defL5jkOcwyF#j7t9VTHZzab#f+=v zb4kRfFztF|v5oV#OG)(!`d7QFOxMO~NT&Dt84Y)WKmJJ+)oR3$*mR*}9I9rgvP`hB zYA9orW0lHx_??%=2Kn84O&d^}dv5gGZc}1)1U41*Z#osD0j&6E;$m{O=PL_gYb@(| zYGoy`r3aT07T@gTa3 zo?&hWKT}S9O`Y(rE|t?zRb(u%iki92YBZ!^nN<}5lWap-TtnA8)K3bWf7z^Z$LX>Rsc>pk-1yK zad9ogI!S6%bAgC?kS&d_d6d=W;aks~OcN!br3ZVe|bV2R^`LAF!M{1b&Slg;sPlu#j?8SM(;@OD4u}Say6w!!Giw5+W zItnEa;l2%@qisboBCfcb!erT><7 zvoqX>=oh^PI=jo7a5zh`Gq$HpN#Xv1_*-;_jzpb3u7;r#2m{-b6f=H`?r(Xe^MjN_ zqC2?aYS%_MyhO9J-(^;&T~C8QLs9=M`C&fWVbpQ0(?gaF^1Vs+lGkNvBq9*cU8SVP zU2; z%z$FWe5WEN*D!#btlQ_8iQi5;B9x&SMR4F^92Io(6LowYI}FiEg|wj&b7sX!+8Fk5 zl0?xv4f0u*;hY^rxnY6VBJ?>}!-5*^Ke+ywl4H!Er0Ct&*)bl#!$ofXARP_H(CtvA z5~K`)x)N+;X!8)s$@^|OT~;dGwP93k1Zli?qAlw9r>8@LKIw_CYEORgwf2uh0?CwW z=>gf3*w02hc9NU%xMxbo>&&WlPx}gqH#w4o2WJ#1CpP*idI6=WK?p0=sB>lyD4zp? z$cfZZQ#AE67W-rOXmJVD@VSzYnx)F65)m$-k;lW%aC~m7w`UM0QEBb8`gA&IH&)N9+Z+oh9xE%8kM*lgjZje8H|^ee9)R_$<6aq@HAI? zS?Ka5vsGFYMm@%QJDEm zC05sOKoVN1@6&w#2_ND!}mBh{2VhG z)Zz2M!yS4>uIdAgjc8sqbiqVRgj*&;no!aqo>-ke_gsWl0(x$L%{&@Icw2j%QZ3PR zlVov7KNpd_4LD-HMzrQAD11E^iWbXVg^I_6u4e>VUGD2Qc5+sHhjE!|3ooSy8m6$L z!66!n1XPbUFifT*TNio^*)`wq@?p?>`CIwYV(j+EiFyqn{%zpvx*8^SM)pZjX|v%t z)8JO3lm@nl22QMFCo17X5BRMiercdM@@B(K=lYi@FnT61!`-K(vT;H4f+`+4ZhTxd zsza{8dgzjaSGPo6y-pa5r7$b}|0C-h0z^@^B-nP}wr$(CZQHhO+qP}nwr$&JNI@mn=M2$`eOF<$houS2Wm4DfKZH(LxNt5puKSbY~S08-9nq0Jka)}`&# z+W}#KsBGA6%5p|W1XwOF$Wv@lC$Oz8TvaF=Px*NY1S#_y#3Ix*yJBFbm1f$1*goqhJgWr(4a#p{B612CvXg6V>lOZi z3ACVuLRFVHdlgXRL?=!ZDQD0x{`v!JknPRq6ChbU!mwuc({2^nIyY=Um6^bSEu3Ey zQieu10;Gb7myFP9ZKJJ*!jeS8eHpeZ2qGqG50Kw_xQvXVi=P|SdC5s40=(~$kL7$@ zI*#Jwa-z!n_ji@m z4+W^&634n>AWm!$DXW4%qTPILNJdczd4A^^&8C#2$8gTI7;sk|m78CDiIpgw|H4NfFFW4YG4EtRqJ%Psc*XGZG+R=rM zf>00Lcq8~PdR32Z-5O|zSmYy1=Hf9?zD(L!F7qIB4vX`k z-8BSWGWlB!w@@oNnY_AdzBN6f`Xn~N=iwiA{3W#LQrvpB1cBj^&9pXB~=V$~xN)rwBaJ7Q?F-c7aiG%o3b?8 zhFJKvTBh-7kOaK~xcmS=(ap{{owMOu`%!_T1#FelRtIJFUA_`~kZR3+AOUI@;a__! zel&W|#>g$JtFnY^r03&2j zn6=9yjt8fq&s1l|PmBHmS3~I(C0EIaMjI!rGCy(${sY0~GjsBF*4#=}j|ElZn%{U? zo@qt$xpdalVL7Kktl;hIRsXQM0`I+Y<0vm0Shgjgzn8i|n(B}J;eSLO?iT5n78 z`b`j;exNAQN37Bn>Y^*xQ;~$Mnw&4tI1^CB+;fhOAj>LC12ov(Iml9BT)gN_ ztDq$mW6@mtU}6YccpPT?p6dH~KTImn zGDs75WQ((x+D$oUHvMvSs)f0Wqv>Q%oS()(Q;+ZL}?@jZQu591HWA?x^mbPa!m zzkpw}@o8=Qe(%~I1>-IK6i$B?+xKRF=BJh>HBm~V&Y6U~SeY32OFn!fceCl-(5m$R zYN{1E0YSF1JXdjM!frRK3tj@iJokZO|KLrc>*IjF3{&IaqQ`u!d$U=)$XDzhinb7T z^VGM_@AnVLDc`Eg{fuuKi2_8tOesnv~Rvu!6Fvunm z_bzoLf8|ePC|u`(i1OZzNxx~?5o|DNw#NBwP zPVt!L{6EZNs_ieoPUO-ER=oH@d9!eus^6qqzSKBFh$)r*Mz=RzJVSl1Fnq-cue>k2 zj5NSlZHKG1y9dgpJ5L0q?f`#n5W4GNzZh&Ie>2s6U@eBao+hkaq=RI~)N#vz@+yI%*zaZhwimx!WON2aE4-K0f{5gMU z4cA;v-A2aw?}MP;bp3w&A?7{>=zum){@zbJCxni7v)?LG@`f!G^ZfXU#mTyecF%5s zad5ug?(OgX>lYcu9XrYji=5nEMriYuCV8Anhjh+ye|fs19<)s00{+GrJ=eUzRK2Y8 z7OrlWh(tuc3DGYAVN-n;-m==dQW^D2b--4`PM^gha@(;6#0T*eQ0>z3c7cZZyy0+( zUqLnBgkMUSEsNP)?e85>n*ks9rzJjugQs46yJ|wODCPn$C=A0eIl{yU99-(OOg05I z1)Ap8rBo6ItwTe+s`Wj^)=XKW17e3D@e>UUMd1&xML&H`7L$nYG(*2dlsS&NB#7+y zDYH9{nVS7&d3Ksp>YbMeRHL+7B*;Jsf)GTbjEaM!H(O_$H7?aJC|c!AODJgYTnmG- zYb^rXdm&2+C7NG>*OFh~WInrl5AN$RU8_kZxaO${S;rlD7=6&EXK*i$f9LvTpB*Q9 zLE+&%n$$;a(#Ll!wHD(AW^=XMwSv;kcP&BuF2-*Sc-uluyoN7+c1wYcp1w6H3`(eV z9j?wryz4JGz=ZmUExfrp9E{U=l5p*%9Wmn)^}APE$HFA1eWV>{hQxm3eaGeU zv6PU#e_Sph;l$xP=rF@QMjJ2;)xvg9Ffq^v3><0UO}8c?!{g97(oc~hZ2rE6;9ziH zD@qHPe=sa}Mkrt{NjNplAxaZpwE`v@J#SJRwYF+-RVPEGiCAiJE!^D5Jwow|qTRcE z3Nx8t_m_P<`e@ArJJRGPf{k122;Gk;;jW&EG|sEOi4uIV^Azmap4~?yNtv*pg;(H) zi6>qAaW7lMYq6<@FNKjqlVikkzp1*~97Z9Wy_7A}0(*A1At!i!1!6Pfgk;77SCvBb zGlouDI@)CO(_QW1-U^$@L0e}#kAr*VNE>RQtK&zNMbKP_bpW8IA9C#K$0PdjuP3Ey zTJOO~H_!>5!;gMQEr89iGWedkZgpb?0V?!kk=j8)MT3l21zXHEfdF}>loABjj`8US zNb^$~WdK5*4CyMhF;S)VZxR@GO#!dcQ| zxlZ5RMgz zWVhPr+d_`!mf5sEI^I`ooX;ZCe{A0-EVov3&)W4W_XvY{niYiorn++A3L(E+FEj_S z6?AQ|8sCL((nhK@_9Ii)z^34{{#7Ba>xvqLf`GDSdc63oGE|fLZQ*TlZUw+odHyj> zT3FPbsQ^4uOAz1FJoHMt+7N5{&z;{Pp5ZRV11lg>a$J&_z&w|=S&$g^rI$hwg?RzS zmB*;-dH!%B;5EtZNqyo+a`N&&InBVsLzbgF7tKvJ!R+5}@%LO)O<0KIepKyJK5VF6 z@7$GXm&s=$>CEyc9a=2l(;DZKeRh|iEm5YrxB{q$5Uuj79UH0b zA5&pU%)FX22oS&(a|z`xjn~bPbNr!s{}Rt7kP55iSrplazH(q8K)9{015_w<{i%?2 z2Dio+lJ3Zz!3GW+5mM(*k425PcqK{+gf0qAik@hnK$NscoHf_tJUZ`yl0ZbfPtAz@ z)}Ra8Qo$J^gMx`ZRahw^g|jSO<`vzI{;cW|pQ{rg@J|Wi_xZjqpQQL&yexakRijLB?pZ<) z8ubdqhJXRJOmPXQ@{$DvYaA1QYv+0Aln_2oxn3ip?9*a@pbmU!_Zd6S#el-u52ysS zd$GlKX!}t-y@_331YZYyiKPPhX~*>n~&t#|r!|f6 z!pP%xC~C?g+}h}lOoRIVY(v0MR5O?xy2^TvWU}K{ge>h~+7VBi#ci6J1C18#xGh6? zVXp|~F=zlRpnTPRb&DUAJHsQ(0N8{6$R04{7L__J#Ef+2ndzWQ{Jen)zl)d0c(8`g zP4J#pi6?K;X0zIzdm5au{tE+NnS#n3P7B%G4FkYxym@X03N!Al9FlR$@$+IFDrAepw+H$YGRUC&}%^!U=yMr593H0{`idsQgAcl*U>MclRA*LXl?y|7LRaI zo3yus&qRl)FopN=2(J1!s2jHKcXbUbmm^qz z5P&nPlX#V3t)mwQmg1J8jim0SE+{m+I zYUK(6+$WzDu55F={RR2gl5b#!T`8`|wb%67b3k}8+nTyQeAO6D8XAe)zy@Yd=t90S z#K)@7GsQTvKme+4t7|yH1tbc=KcxO`D0=)g@g+KQ6xRk)cyK|uRvZU(yZj<^a|tw= z4WF_nR=pVEj^}m5etZWx3b)U94+l4cCVb_f&xUpd%rc}7xacf^rzso zT3493{8b4+dqvl}tC6=jBh^P9T7UnCeqR3z*nCklAvNl-+rk8!EVjTa5c;G?OV&NS zi37J?y}Q5-i*l1@U}HKhMQjjsPt!+n1Co~46wz6D^PLFlyjR{Oe25$2w67!~CUse~ z6DOH_>q9Ko=3yJ4Xd6b^`Z$mGp(hM_c93XXfBs1bF{m&!PA9*!rR2Lo5xOD2ZgStC zeW`fsC zQmqsA$)j8krtpBG;Nt_D1s<3l{Euq1kN++^`nNyNdz*1E7&Fz7gfA}Ej;%(;6pXZS z5b7>#`p#F3uVv(9@HM%_X!h^Y*k5Nffc1yVHigj8dTiQ;I}C5?qk@A!_CYPSrp7nm zNL?<;^dhW>w%4>Ap*nHQ(zWSTF?|@%yA-^8bHM)rMi1a2PoCZFwI7{*e9`19K#Y}guo7fo z^7c`3QgidaPr+LZl^tIV9aic2)z+xHss^0N^bXT3lY0<>4f>ywDG_gJ`{U8Y1H*wI zZAGXSE1%3QyWvoliwp;9mG~M%k=d?(iriD`>zzriZ0J$Rd3;D9*++}ewk%To&;ao8 ze*EUt&m*3W3bM>a_pF_+y_HLYk^bKp?=f?Y^Yp-_DQl72OcHe~BL-dAkOq%BL8!@s zRujj%sBZ-Z+2%KFuc0szd8@R!YQr<)6Gv)nm7ra#dG^*x?=bf<*&hQjKPi*0u`{aU zB=7$IDBCc(AK-e$r$K4}V}794DRh*#Dk}E~vQE6PlkXC+&bh}QczRov-3PAM8M{uv zi`|)ks%CXS;mvC+;4&5XU| z=uN0y970F`FT|$3Sr_F)F2~|+Q`kCiY%OtDT}H3q%+o-lh9V(t#5D2I z<`CgD4`Fi7SGwpA!T3~=gc!D+(OrLDkZ{wf0ff8ViL_qRndgup(9o`iKHE?eJ>AJn z>PL;n8)54@be|aKq2P-+eA{%Cor_(2z>nx_!Vn$}9RLLOYv7xBo|=(L_y8Zz*qT!SGCE?2 z?CC%sXLLACNFb?L|I+e5JFw%mNB8cpSli;F{rh99(L_%GH+h+$Btet3^t%XlB@*9q zCzjVGdc9UP(X@=hTc=vH-je*(+`np*<->9|w|FmU2RQDvYqG1DEI(uZ6Y%YRmSGw3 z2bd53_BuGB2(?3zI*JkbyP^KV;0-^1M12{D!wlJe*-gKb-Q8Hn+z;b(PeWw_lr3*mrqVd3Vx0KO@%7HR z@8KM)etDw{`F2s0@QD&`dgyCoyGGUM@a=2HHInjQnTxnixXK%A@6LVO>+SRV1z?yW zmL7Ku*ZzG$cr<>*0&mpFkp{Qm-P}M4mh{Z89r8IOja!Bk2|r}qWf;E29v>WaBL&d& zbWKrKz9$*Mwyq`$xstp#Q~KycOy3?xa`ig=dU90ljx&3oh9Kw8tU8DM&@ZNcjrg9H zXX*Wr0+<=ZedBQf2^a|NZz$mMFLK##2gmVZrzz`x3IQ;;!-K~Y{ke+)-KCPTE&03k z|N*k0`Kj6( z1PqRE@ZIP_%KN}(yKRF&Z7(X1QWzfstp$FHO*)!&v@-KY6qQevlb7IM-=DxIzzaVD zEz&V#i2PuOfq(h?9|pbZHlT>+KaElIf9HQ0bW3})oD~)2WxF=;dpwThLkRNy=;3^b zAZH?c{EF~nfBkqN@tJuDa&mDgw=?=+d>o)eU~vv-CT9t^?%zF^!&B{Sr`|8eJF~hM zjjzKF%$`h8+j5EuNghoW0vg))a5ZuD`#ciiT%Y=R1Hu1VTeZMMg(>P!g1vy?{t800sm|NCpZ>3=E2kz1p=sUVbRjt_f0nG1)Q; z7(=&Wv~TnT0l*|W8`F8r^;398fe%H+oz9u@VedQMGhkX<0|W&I2S|w!vPj8E%1X;k z&Q4DVpP;l-(^FJ&DJrYxq^789;?UFS>QVu2Dct#KOKYB0%8Aeonu*!hMnXa!glgol#47?O-tp zzg48T^qzYbovL-N!91w2iKU#Md3=0U6*8FKM`-rH0hEEgNKP~(ZxpxhPwwc}kX06` z$eLIKKkOx4*Q*Oqu5|HTnzO)b3o1?Dy4wggsHFz-K*rQvGtLeF&X)rpUM(By^cof^ zh8Eo8r(IXUQdRY7rj6aLokFHm7tZFncA(;#E9i(l#wsYcE0NX58YspM)kqsMtz-y9 z3~|g}I0f29Q^K_IxjKL>=bC64laiIrjWhFG@)B&`orlgZX=#p`!XtkZc2$*lJ;gen z6=!vHCEc?#xgM#oH-Nh+h<5e-7~gB>M%hkkv;sM?UgFp-KRucv6afY<*IwI_oe3A{ zwF=rAS;Y^=JLfy!U^xKhefMCoFt2|*+uDS9l0K~Cx6~iTeC|GTO~(!aaZfoKbHfGzeR7(!jYv1vI*Ul*f*Q;;0AEEA(_U!^F?j2fIhDg-q>-cQIUs_JF%e@Ae@tBl!X z@w>@xz}4T{Efwta=epL~Xi2G8DE2w1tT`a2U-P#s{WK_<9VgXfptpne>;dT1=*}27 zkCJTN)dm+)pm146(nOW{YW%T3?k7;cpH*;*adrM;yal62P;aXZ=?whYY8qdSb>k9r zK{7qgT9wW}?(NPXII0NJRDKT1!X6}MS+=M#k8GhdEu zudz67)||q((K!4q+*gk6?q^IPwE(%Kfj`?N;s5?j-=5Lc9k)FDiAM2BOf)wL!OTD< zVwd-$2jSYlr*ZyeP>C$5B{DL2z|S_4hT%T)#4UXwu+IFZBhgs>dR7SBn9*V1B9n6C z4(shZ9Oy8-HU{@tKa#yQrjz_M51xcPDZHWBH;JAXS{1;%f|iHHeg4y-x%u5;ElO6x{U z3gSBA_gA^eIX$$?C?BVWaT$E>B)N@<61rw>S!>-ghxnINs`vAiE7sN{=8;Da81~^S zRe)1}cJwIn8%?a0z5xy+OKFQ8{L^d1vsj7oBv)crVQSP9G-pM-_Z;!KumSlS(F#93 zkCXxJL?#3K4om5{I-9WXq&d7^-4RG8(^0kdCFjBjiCTGA_z6~Jcjs-nR`L1EWx_#9 z-lO)*&EqJUs9v5#yy666A&Eqx$NJLmFERTFVbS8}oVi*-RXYmwi)?dmj_*FSpy%~A zX52^>m8s^Cn8KqL*q|85*97!Wbtml&8^mE`KSJdb{gC_2W`D9U3}Zwqwkw3*y)nb1 z=EBkt(OVAlO&jNh9y#aFk=vf)1$6Z{cG8i7M@G5*0c)aN+^s=&MVut}pE!lt=3^C~ zz^n&KP&fA*j_^KDK7GNIbS_OrF{kg~j$Fl=S4Ep|7;fsef<)ENG4AHWCP7nbl`I0< zka_(fw~tjn--xq>_UOfW%bff4=+)QKBhV7qfpQi;@+1m{9;v~EVJ|`NN-(`E(&UH^ zEhnd-Zc8y~OUE#UcxH*s1;hDC-S4@$SA;1cvnHIfFt5v+=8?nS=L`lhZSMiQCusMy zKx-xfrU<=wDZ4!<(%HwOy9%%S`7EMF8jxAMKerPIpXck zwT$xE>t#qk$d7u+7W25ylR5RJjwk>f;h|9`cRgpMf9K=3>XCHgk^M@MB4Sw~@w*F` ztvjts>+_bE$g{+;(Z<&1tf{g@un-43nhdHpps4ygG^7{kPRxhqP{yKp8hUAdv_5$J zdvW62%Txsr)FtN|1dN`K?l!oJ1(+E2Kk$@CUmPYhNn&j?)wJof*L_TG$`v}w$~_I% zX{S}tyf}*`yJ9-7qJ**rT0gpB-q=jYJYvm5HR$ zN1;4tbUCt+5i_#p8HG8$ob1BsZSP4KLqw+>(XNG_)1sS04ZTL+bXZE6Bx*xyMGe)A zo?ktP^$&KhXLE8UyjvTMM3q%!Qe0Wm@1UNb-v)_v$IHWV5cik7g-$hdmnG=pNN0+631KO+rI&ed>M#^_Ci^ zCrWyUe}Rt*%2=Wytldc6))bC6^M?34Hr-5nv5C2DMHOVkroL>}q`d<5gdKbP>z#7A zb?fB8SRAJuvo<&*Q@t7Xn4};Y?MN*(cSwYpSzM00N6~)J^~EQon6U!0+v0tSuCFk3 zI%GVBK=l>0;z;MsLNiEUNqS2$(-(&O79{_jon%NkG##z=RsTiq3W*WdMhQpw9DJl<#FRZ7`dt9}94x&bs-us23o4*#Qk5)=QBk#bhRi2zMt&bnzJ< zFDnyj@)4nj(L$j7-k>Os37VAizhb$e>pEZ^{H>k{`^nsYI(3}R#tvv&bnY@;EW{@+ z+m#&D&sW@OCM8v?pf)j|3q$XXK+&!Xx0mCaFYp_}nLQ85a}`dIK1{6Tb+w1t*f=TN zRzS(rDI|(v(}K1^NuHAbkR3T$i1l7Z)!c&BtY8)P))rz(RE-IYurBl&rF@ErUi7#< zliLaL-J4gF)}Dp)q)YaLU!)Lb=}23Ty1&e9H!1gaJ3eckpu^A3F>d1*eY|~fAdsbZS%Jt`8Mc=S9*w}E!mrah+Zxr> zN=Um3^E~e_yt29Inz${fpE(R^Gpz9rLOSwH=#Kt&SH$K=XJe8-ty;byzM~5sH6*X8 zoAo124EiC0ko)(mvti(Blg&e7|QL*%P5X1{S11uG@R`bLmPX;7zW=y0|&0b zfTt~YpjcI&@%nh%^uj;(QuyW7t5HYw)4}|Bd_)u6bAC1HIL0yaSgg?0!NI_6nrA&n z-^@p*mkAjHJGeHL}@weQc5dkLIYbe&_3*CFaNu##yAX zs67HRKftBPT_p}P?~Y-5jDaY%+g((U5?5x@71I`f7PFHieqNhncGoE&9v^mBcL4np zQB_u$WROMl?$g%B&K<@T{eCWjFm&$*Y=(@UJ=Eg!U#>4_x{pi$_o=XgoWT!u`gVEc zMV(G4QiRXP@}l|TZls4qbHZ^`wk_w_NW_eH#BN%VNkc~6y!%Gc>9Tm8~;N&iO?%L5=BTSo=u>ns_kw}QT)^aFw6Cf`nm99$*z-re{MmJP0zbE zk&yynH7uUCL9Q5d!hPcq#+-rovFifE-FC_{^S-!6t8L3Z`Nr^|Xj z->c6XQP=AtL0?CJ^^LUD5y(Emuf^bK}k9pw0s2P z8#Vj$j!AsxX$554h1c18y8SJ4!d%T$A2oLN&Mktsi?kBRwBi-W5*XtAqT(~Z>>KA2 zg5JH{goiORi`d8Yo6HHC-|N3n$#h$kIvs4Qr>Z(Z9!cXB|uE(T1rht5!tDZu#xE znP~RPj(+A<#k#XIv%Ku<0|c(L*5-Y4!==_`2DP1=eKMxH&K*bP{{|qb@}cWweeLmk zOd;E94^Qc;j3(31Gf6FAJPm2{4b6`Z^q0^zO-4{<7ekVMq9sethHAw{hp6$qm&FX# z>-^_rt4?fZcL)yll7t`#a)nB}kKTSLKi5N}y{+{&C?{z|oO4&I^XgK@f+k$>ndf6A zYk6BcKa-o)iQ#Ajyb5E+wO=@JR|YW#M`R2$y`5umpf2rp8=DC)7NT&}x@$ao#~(@) zEK&hn?C*jsw`tHA%q0mJ87)z2;K-#*1KM$U1MAh(fCPq~8VNa_i1$>#*sgETZ#+|4 z%+Q_R##)8p^~`7GUeVjcc~G;Tnw3*nPDTuWs(={Xz*kmW|1sgglazg~hBES>5w%UX z$JMfE)+9WYdJw2WD+|uknOY7~OJYnfgQ-m0Yeii#D7nt*Bx5+XbR%ADgI)CH zO_Y8_xea>v3`b4inzCR@eA-d;Vs18`(Zu+8Asv`GxnooY>g}%y;C+r z?|vit!XfEHv+1riOzpJz?5%`{gJ-5&GkCjCUTtp20!UEyjRrn!GW@v~JW z^|@VNS?~Lw$r7|>33Ph`0DxA~|DP<`+nPyx8@c0XFTF&_c^fjT8f~@OY`HG3x7x6_ zVzSt7tIHT|{g)3s>aM;JzW)QWGc>Gbs(Xk~PDtPn><|8PB^D+Zmp|s^0s8g%@B8&m zUGAO%089`o77AA8ax@nyJrjza%kzET^32{CJ2O{LL{rCrb~*j4Jy#f#_dB}vg@o71 z+27I($kn#Iwp5$|NDsw95+OCFwX}P8Fmvstr3^dIUDHo4i zT=>}F?j}%5&$wuYUs7&PPN9&lMM)XQlr9x74GaV-H&D3?m6D>IkW7^MbjcM?g`jZR zNs}*x_(j2v&%nRrFO-&+rMBG+`?{V>t-1d)t-KZXjx%-u1dx*k1Cs&+AnpOC$64*I zi)Fm*aP4`|c8S6VK|jW*zPj`aH^>$REfe7xX2oW^?(^+2;{==s9uXZ@fVx_fNK+$NRE;ifsqgq zz0uT+iK6hj5ak?(Yxkc>hj;+%6xVLFyh10!MKo>pPn=Ps2AHfC+KhB7!WqY@Pntud zM1v9mNtgf?5d_NBN3#@mn)DE0&>%B104@hG=@UQ%S5`SltkDs`WrL7DVZ-WWj(yg( zC!Cm7Gp8#{jM=Cu$#AiT#CC5PtW8d!(4@@Z{OMHDR)0M^Su4sjz}MF0((pO}`2Kkl zNdhY-2<9(bS-pN0(GwVtsKY}|*m9I6FXzdYvGN2twe}?=#D3Vd77nTxmc36pgxJvU zbNCS!@hfm_u_(QHw(aDV4V3U0gwe3 z0h0jLKW)M4{6okto4i0ky%^m-Ya{t!CDGMt60zkws4bEVy-WXS^gdY8>q$mvtMpZ( z=C)j6a|3jGKAw<-&+D@b>t#6f^U|T^>KpKZhCriG_%OCSx|J{Z8nFJYTUW`i=Vm9@ z3v>`L;0Mm6k`o__3^YOhHc!wa#^;9)za(mX6%f4rAT8%~#SQo4Zy=I9W&v5K=lf6{ z(vO&s&%`TK)1f4`kSyvp6Rb<9qsaaRc6%Smb9pj7vOgva+j;GnN* zymV3`3L-$Tk_%2Am7K!NNg(YGTXr}%Kser$6#)&^53W3GlLW3J7~jxszFb{j4R8=2ru`4z-&Qm_OjOv`fBcalqL9Q! zH8!z%@CdU;TR#D_Z;P0KKp`x5>~A)-be|7`%z2ouB%XON+~Uy*xtl^< zUKsfV)YkREBIv%A2xc%Uk3*1eZZ<+3gYUlkqEEwD=KT=2<&$Mi-%5w~@AT$p{QT%8 zVS|pB@YDM5_q{JSKXa6ruQ(jv^5Kh#yQ&H<|Dym76-A-l91VLN0MxQu5dHTZ6xT!?fl;cvMYOG+hl#xM>a zg&b3Wc=qHU0W0H;t*O3NBi2X(Lp7OD#5LWwfhnK;L~pXSpMTdJ2MA3%C^|2XVNfx1 z<2&B9ApFc(P<${9{0-SZcLoRui2m4U{f^~HevYDllUz$pTRF*^ z3SCHj`wkzRxT6n17J%>t@>%=N`$@BHIttUQkcf-~jGFa`g)LZ7jMeyIHG!aapO#Z>u9y~=qazOzm`EGQKtw3+ z%{$nrh$^gzcTr9r{F3}25lvVgJKOR$TBQEzkls1VXne_{JV0CyxoG&HYv~0h`u}Ql zfDn=c4_$;YF|05?P#FIc{~cDX_-9EBhH9huz-1=N)HEk@4i;+xI3yFNq?enE23uMV zGd)cYD0&XvrN5RT&(ZqYi)f^hYOGAM*kHQf<(HkLEv&uu(|Q*^4762I%^gu7f8bJ3 zP8cY^)(U*l#o6Uu;yj|5qA#`=@Z_+~VqBLZh5h1av+9ic%EJp3JBBL37wEv9#{b;Y z=uWsOloCIinE2VLD%_c!@&I5n4rWoe2s6&KBl9Fw)9C+9=m8_f#Ez7bJv@7s$j<5< z(fjp;oDX?ajO{Qy&MQe)5Ec$;MV3@*PjSMVv1=*X(6qiACMU!VNZ>J9wxYsNKbM$X z+@zkn|E@NzRv76hJ7+KwM1=MbA(SSb9+SjHXAEtqoR(CWg=d-eubv9gUz~!vQtdgc z(|3E{UtT;!*2pMx-CM-6KtHCu6m@l>!3;L_>Z zR?T(yajzQOQ3((UXZ3Y#;X3&h;!QL%T5VF^iF8>4`ECn8l?tpK(CmBcRi=b-r=26ZqWR)*9Vb?rw0~P!~?G%0}k2m5(x9rEnIA!eM za8(yzBM>5-N>gYSR^qSurd=?GGe{O;msi<&;DzyW$Vv?J^Qn#>qXVVE65Jnm`l={2 z71#x4>t_!m#ER#eS5zh&-40hAtmS+$cC|2F;nrv#->*uOikx@tHd)%%LG+M-ys?oO zNKg`h1|CfMT*EX6TXBii4nh+WU}6NF9neS~5v*(qna$#S8I^>kMMZqer{|RpCi>OHPm`1g>YH8 zYLJD~cd$OcyHnH`km&6_|2uLveI#>g{avVgJf6l@-Kk>AyiRUf_l6lng5fRB{J0s{ zd5!M61^58KJTik#at(y2NEJ}e62W`r=^ z^*}c$3!S}wrF;V+Xd^1=E@CdxD6FxBPC9V$FI7+jLB9S)6aqurHz6I5?`Q~=SBlfe zXT_;(73?b6D{n3I$7%>PF;`R9e}DF6C0JTQM?ra@nEn&tCymZ>b9i&w($N!Cn1q~Y zGqSI(tdg?bXfKLxb^EK6ODK9knUcAFlNs8#eq)_tX@wL)unz$ zR16r}o8Wh75~hQX8rMq7HzM?&l`CTZ~xl>~8n5AN}4XY>Z z<|cc-RJ1lXFD;&(UR~Y{bW;)8w9QEmyFsO1IcXA#LP@3kxzMkJ(kcwb2OkD4r$a9a zBE>W{OzwN4+&~hkM$re0u=i=c@SD>E6xXKt`kuVVYe9 zh_W@3AO@949zG;9-K143FJ`53v||Nye62(Yi6ZQed_Q#%sZITnd`kHG-KgwT#czO8 zp6^#s);zHmMu>>N007@*xaJL9aMD}Gh_iF+D@@7gC zos!nd;snh97KN3QyQple@$6Vu4a=6<1~h%!x&HpbWyy8B|8C^fXMuD+c=dJDPq?k` zlv#*1g^9}Fam2=1)c?$Wj2q|&+OVzVex)%rV(2{XOXkx@?Oh4qFCZPx@G&y0FgrY{ zm_LS{5&M2qqX&eFeS2PZ*I3C`#kRIAoy~=zN8WUQANv{_LPWMapLYHP)3nD}^Cb_$ z2w>(@f8&gk5OvHZy$&)6ZmHp{{_L}HW+PM@H!U3QkR0`YLo>R{7$PKsnA zIXoGiY(a50DqvmMQPg(8|Czjehzng1-_T4O8>zGmy;LUcR&(ms=FaZMW@i|dBJs_k z?TCIulz#N2RHkHW1M3Fl>NQJ*Fo78h4;_XKN14O9AD0nkM@Q61Etfz}iwM^P1AWG; zY-?PTH9Wmewcc}=^>D5;efovx{*0vZZ~Afxc*PUPV304E5Lj({m@7(Z*m-=<*Fcg4 z-}n93ww3+1$U8S+GCf^RFtGoOl?;>W_%2}dHM|hu20lqcj}KA6B2k^FcBDOBk|lS( zxtjvg(hJuhOkTZaxm@326{YMI8cg3u)blN~{#ni7ZU*Pf3>w!I+73mFZ*c;a2L$+ss74ZoVXGPJ-Ps zVe4$j#sKLCfiPgSH(_*iadWogjs3BFvh zwRGJ-_yHDabXPY-mc766!Qr|4JAkqy&HKjFhHOD!spFf1fae7W9o&Ex(ZUU^hav@{ zso7*0D9|?{>K6s&?dS@_0C&^4*fY_22SsAp$5Y+H~P3;;gYUdy_l$UXS^akyIIRX-0wXqEctr<^Pw zBwffhS|k3LWfJ9;-J+{f+2meR^k9@I)cs~g()n7Odov;3l|wO+@sjIm({&rGyNjy- zv0tw!6xKIskVcRu$9ANEFQ=QPPJHr?vV7jo&yec74&#o@=j7d^qw%5hf5;PY zs){|@i&CcyV!ZEX1Xn$)*V+956zWal3rtN%Ea#rx zl;qGg(aS`PA0jkIM-@Nkn&`;^BXErEVGJ~ylMrOyv|t-oXPTXXp%LzAG+diX$JZfH zMAfxUKH^;X=$0ry*N*r<05L$$zb@G@#bzq5JM=bYdiTsvxCL!=d)3i_zypq_btxV9 z{%$>8!z4EWtO-1uNqn?VkWUun1|23&eL2$S0(pc02lyu(MsCW7ov&V*vo_5-yK!&l zZ#%!k*RqikKuQPb)-MBU)?$o+ire;}k@`H+hC~99{nUqx& z<&PkchVhC|gW;$ih$n6!s;G?o2N^@89j1a>J>y&q>sHK$+Ly(hpRUDDI25guF{WZl zOc!h zX3VB-F-?r7Z9U-lx{GYiBnbb@C(Mc}5oXIgtn`(2udUVwdtBnL)4?u-*kXnqotX(f ztG4?22K;S0c#oa5FJ(#?_n+g6j6qOyZ4koWYmnVG+)UhBs%EFLRH})H1mOxuqj1Rp zc%#IRK`UxqduuP@H%)%{UykqJ&s$GA>o01fIwm?lIBUeXk=kH|QwC$4v#I`q>U zs*Tq_{!1OxEFSqGMs%_KvmqybaY{;Gihu$`xS=FUBe#e+zCy-K(;Uz!!3QO++#s&L z(*@tbj#bh`{XJ4C6=??UUd>fV!p|V0amW6FVo*N}I?MeK+4h#k&=KHsc07n_1Yz(` z$^!Sjx)9|`Y`=bl)v>^U z?%^LapwqMXH=nLTFuyA%5q3y(AV=9j?<;x1(<5<$(4tRz*kQ%*!+IUom?yh9NT z8x((#L)tVN##L9Nq#Y><1OrG{($cK|QcLm%rznwkfjjN3bw9rp9)}54Dr6@-algvc3j-76k6t&dZ@!06y#`(qP8D5);w{4s? zCO_SrObpKN9at~MC*$Oj0tKDoEMmGnn4Uaxncf72TVQnU{7=p{x5>mP#Ex?a{kD~z zG9ghT-jBVX-tQZh~H}agK zWLJ%&Lj4PsZD!A3&q(?=S%Nb(Q-y$3? z{6REDGdanTC8~%SNJYKb_o0kfL?q3KVgY)N^$iqFDEFc@05Faa6}j|JTG3~6DTBds z>kMI|P59!Cvd%OsgD45Y1w#V96r%)WP7Q@BTdSpGVT`3@Lco=T)Lwywf+T^W1fbbs zK?i(r?@Jd)=wSP`uJD(-lRUzF_9||Fg|>;4m4+NYHPdpV=B1<(F)ejz25GrqeDSWg z^+ouSvLx(l+G>pxzpab=^0G6y$}NFbhI)ro?Jsx9b8?P>;Mzc8vdNK`U}Pl5OJ7k( zZ43>LY`3OgN0O0N$1<7UIPv`dK~~np-*LTI*E8FECJx3BR*|saD|q_Tm-UWGVNfut z9#!%*nckw>nQ_wL=k=+5{y1n83{EKXk7N9zk2uWTM)*6!_x{+A;x*6RbY-O6=u8O- zl*CrPs1rHDWgW6#In0QI3ChNWRnF5|Lqj=htyZgyt4b(8?VT|8pjGIFb6&8kK@@WH zuC>T5OIevHC@7JVR7}v_i%S6z`ziN^u1e~kOz==gQ-)Sgj&7aURrtI8{EcSczEWvp zmA0o;-NTJnL^pn|n7rH=T^>&Qd4IB=tG6^-elz@XZLz4QTj?m=>gAm`W5D0fUYDhL zk_)~=OSa^RLQHbOc9_E$H1HC>)|Guz=b{XR3tbKGR0r?-UtD+;AecZQ%Qjn2OS7}& z5u-|=Ll8d3uE)I659J?<0VK*$B!y(C<&Ss*_HrnwrTNxTvyXp14587biGo0UBF33Q@UX@>1@JW*o#)Xp6%35uh%FrP!fH=L@d`5&^s?qR%VQRP&g^&w zQ~qb8uLt{n&+KpD+}3({aq=cH%CPc*IH1%NW3Ehsg1x52Mqef`IJG z4jx;lF~jo)oQwPGgAm>U#D_SpWvXWwUf+!Xlagm&HY0$EoZu)=JlY5-bR&t9u*3`0 zWmztpwo66}L)a>cKhn+|$B0xQPBi{Q>(k2qF-$%Z!9*&wA zUA@2bt*86H^%|L9hr~tp*JNcZN=MjE22`Sxs&0W$K-5NH`n7xuwCfw zDZjfTA>{0U1_~sVCz>{nj#kDfcdhS&f3_uKXSl4IQZbGEPhn;KrOD_a4`=ZoOUy$V zBv2y}M8uF-1tPj3nA5_8shj|OF{A)+vTe$tnzIeR_-~Zg80Jx#Ppr-{h|qfCUjxBD zKW+`SPpl1;DM>PttZ&$Ym=vwI(af~immd7|cM^!yXR3(b5Q& zsnFL~Z5$KS+Ulw-^l+u5R=X}Me=%%o4CjJPqXX^)k|^+lF&5ziY!ngHel8KB{OpM1NhfuULfZ{;We#!MLAvHMwTz`b5uOeEJcSM5DEpyuwNfel&&(RRJ ziEXEuKv3txcNWj zT7+($->)rFfH4PJfRCO6`$diM6~U$w5Ptq(YI7>Cd|Zc-LM=A0D5)yymvVh-6)t^&ed(SjlnrkR zADww{z@YWBXsatCcf@831AOP|;AI=|;mFm~l^ZQWEJ6=uh+3C5W+gE$D7i%b#}Rq{ zrjyuKc06AzS`8%$iYh2F>H?Jr|5JhREjs#X9KFrX=aLBQPw{+vPs;6v@ERH#65Qzk zQBgxkRAJO0yu^2#Sm#ONSx`j|AkP>e`YIgfCf#SodqM41v@oxdA(RVUX- zHZ@j~A5fV{4He|3iJTPW5l$|(am3FkFk~bC9^RRihDhx>s&PnFU(%~z9>LC2v&B##ggbG3JDysrYd!*qm25OU#!bL@}Go2 zfbGnUm9Cr3`st_ygp@$=ND`vs6iHr*RaP%q4^~MfIBv2v$n2Z9v-8uEuh&QhH%dlm z7kok`l)wV0Nmx_Igt7v%kqR)hIUK5QA7iM55HO0cR-lm%IJ{McdGpsd^w_N9zt=%GyE)#!o7on~QhVAvsQ+!-;;*%}zJaOMyG9rxm?EpPm7;a{ zqAQb}=v)lBL<9;LqEt6aETuYcb&%`vZ2xfgYTzb7URqVr&cqRlkfcFRoR$0dSDx8_ zNTwl3+~Rk>l(&?Fb@Y+2VhQ{emFvz+uq0Mp$*01_IkI1U@zIZ%TRS=ND2t#3YBUl` zR3IucGzv=q4g#Ang(wL%0vZboyvV?Jaj3-aA*U|W5crN-Ln*CphzXr_^BEB=CAH2ZSfaT(t=4QP3#W*7iLoxf+ltLj6D1rn`bPM)P@7CHc zgH8Rmt^*Z9UXU(SzbM2olUN`U6ty znv*GOF8IwdY>WBXk3z6Uq%odfMvt%mmPgrg)`Nlwp==-SUpFYi%rzw8=~mFa12@0q z%AgAa?N28?&B^4j-tS(0TZP%YweR5Ol>Lb zX$iaP)l5;&@W{;C#f@`pDKL?|4*A_4ag5NB7~i>$}iQe zWw25Z+X>_S%=~omK?x*gAKC`Ut&+8JmF!~Bu6%rG<>$ggH6a-|RR=8!SQC?M=k$<( z>t>?@;gK*-j)wq9G&B022v!zRD!*;DB3Q$X2i=L{`M*djcTMBDpd0Aryf0Q5CWDh^81_jT()S zSxj#EE!y;f(V1hz=I@*&w>NVi&P|Dt^oNQ08>?>L?w;Nn2X|fP;#Etqg{ejtQKvs> z>-~1W5cM5hoYeX|Tzab>AZ_F9_wA!2@46N|VwGD7xrrUK8pYC65=8(1#))eaf8qfO z-NErmlFe<6%z`o=42l-Ke2*Wj`wD206UiEiJ2Tp$4zl3vGT18oP{T>D>SjIYgCN=^ z`Jz%7Aruti`gpzh*$mz6ezSUN#Q${J2JMWNL~ofPF)pI23N;Z(1j@+F{LIl}myMmp zG=jbNr-~>m0vgRVQi#yQR>C8K z0*H(yc5UHW+k(g1?xyTIYMGU_Pab9ltLiTDw|W(7A9^V#e|VTp+e~-v36U+x<;KjL zFDK0DW>l+Es5Roy3q<{h+uNJp_#^J3oN#Bv>fk6ZE&IddIz2TJQ&5!L&ogf@h02nYD7v%N&N>~`!AbLeJYnDgQvo!%O zdz0%lw&|Kd;n%X2YLrexF$P0QMGj#rel?nH(=0J#5!FoW*>w^z67|KLsf|ET0eJcq zZ%PV>5`vX7L|miQ7IOG#`GL_Zmp@{_g8Q1$Yj0P_)cpD|qrZO$s6v>os|v;BjiDbm@sAs-W>3gNFd>MYaqh`x z!eKz_eaoWz^o~_2FpL@kA`&dI+jPlB z5w_h3I4wZT`2@{eOdv5>14A)a#p6HO-4>3G+H~~8SU!xqp-dm^VOdqQriIeZk3B2U z8F+4(opRS)MO6%xj2sZVKqnzpf}jQONXu}Jpu?*9^9x7^>BtGE*(%ISGEU=YS1exCxoYc1|@Qo=&(>V@tcugN021kWa5%ej8|5ML=FegXlN zlsdaQJI7&AB6T<`yQMvl zk3d0bSrRp^wOd>2h+-a%;KDLlXVrUn`@@ERhbtVR@BVhyjQKln_eERwhI^O4KdixM@7bTG!*SxPHq-539ghuvV6Lv9F*x|P;cJPV zBah~pZ0GMX&x-uY@Svu{)rOY*N zYo(F@Mk6742ATldb@`_cL~W+HH2z?PidxIVUt5StObYYN&HNE0U^5MAik4J*Nh1mLd&UnO^)fn6wj?c|D9$jgGqzI@9i7&w*&qSUBiU`k(``7Smuz-aBIfSxh6#nE% zh!4S6hzV{Hb)!LCwt=Ch5doVb0V%X@uUTv@!Y%^HU&K5cXGY+t4u18ne&JO~AFPQy zUHy9e4smkolSZS1I?Hp~Fu5QbXlHwcBS8m9K@b6?6jY*>wvA5@KT1em+Cz!kAa=1@ zvJ~Z_CcXNm3f|{G%11B#oX~Xm5nqb&s4B;Om)<1=8$UN^Bc33{^2nUm;MvxZ_d}nB zHQ;X9^S=8G2 zBkepzR-Slk(T+EY!Z&3~&C}Qnum_5$pJgTFYyNU+>ipu_+2g}{bN9q3R+MuhN3ras zZ`<0{E}&V*UVK%mczjFirGq|#U3+(HE-l=-rIErc0q(jD#tbMJV%p6VLpK6R3C%JC z2ELuWbP|qw<;hSr(avkT&>Q3#kY6}a^z!pV2&ZnpTtu-j6Cj3R!P@Eh2m>gu{Dp0B z3COe++DV;&kMRFE*ZvfThh1qkXXH{Zl&!?aB3y7ijal( zS(&Eh)9n#Uz2A0TKfY|g5;BC@!(zf5UiX=KyE8Ox9Vwh|Y zO`27I1HW^5Ol<0A9EnoqN*x)_ihJY;Q(6jAk%s^Wzpnf|{T#fJ`*yM8NwGM%=hxlC z@%T!eN|SP}YFfL*Mf|I7gZ~P*}d~ zLE}dvWbc8RO=c40RM4EEAyqLTK>UTK&ZIUc?wYk0N-e#~zMkWg0{099hC>U^u+qY* zd*{fuw%dj!$?u!~hn8_u?#NG9OX9!MGLk+-kC-Wt06?hir!}y$5KZuZ_2jxXB@M2G z-hbsX-QzJ*W-iVs`l478GaA!OGZP)+3Pwm#9^3%|+6#y- z=gH*DT}WO}O4QgF!}fJ&oS>2#XlnRW7=CpxTA!Wc$A~xVJ-^M=4;JrnriBKvNRRZy zU${~yzA9Uh9=JURyI#&m7ggwQArBV3T`!#V!iLMs&)C~v(AU$mw~e3OyMXG{Y%p3f zJ|}C|ctT@SLrFqnhT#GnAvvN~IHg{5(q|4(ZeMH;uHFNA>QbD$v~5_YSwg3NyLD)$ zC97Vl4YW^C<_^)9=W3U>6IipEOjf~~gZdMM?DYDC7N9|~;35^Zk8BbDn+57l$bVA= z2euU?Kkba7dbgHD4jflsVMPCD2lIwcgIgAd6e)o50 zImqG43^%FXB)X{?{U|RGBiEc92;v7#(>2SZj=I=o>?vaVNm7B8+~V^+DOnpc8^u%6 z`Ms5mxcIFFXH6z-;}A)*;=UBuXDIRW@uzcGD{+3G#YY&Wv02R0of2C2@Yx9WD44sG z`yBK9xqS5O-U~Ejbj$us05?83Gcda|Aak)u_x)L4tS(*4NDJ3MC;DGGp z_l~@(J83p@^{dC-<3<;sHgw2RV-(iL zBFUD<>^D(X51kOAfPPI7QGj0}7$5@S^*__CYR-oIx4&y)_qH{AOqBw|xrO`$Y|;@P zhTB=zA&I$1VL^xn;V4Bx8LU-3229Ben2cyCbBautUalMxVCA+cBz|>#`2gkeuS5BD zkMvXn?0`2jqEgv;D#@c)jP0zd)qStHemj2?*+Mvl94&KgDz#&L4=N{MDXWgD@U!$8 z^q~L4j?+^Y9Ze0W{d2felC1K%^f_?Lp*iTroQ4`Pc26p4GCz;!$};D@rs(UU&xu^0 z1cwLyxo{nOOBSVSucn!QPn~ov8`m~A=Fw(R;7PURI-zgxmzo0{p#`1ATZWEH`>ux= zpBS!shMsy;^@lYfmYhQ9i+#V>L*-80?`pjpX{<(R^9os2l>Z{5}pqaG2?ZzFXnBaw|{S(R7? zMMbFQtt>{w65BYRoTo<<7Dmx+q)Q{%e$_N90xDpX03!X2;n=1KMi_e7H9zLQh?Fj* zwx|OQ{L%aQ5?qK^KrdL)`OINmthqH*p7CO!4%UVq6J|M;W z|F+IMnLRi?^Fwz_K1kQtVZ%=!bxJaO8g$Gkv+7>{q|oOl@bgIYNyR;hz(8M*7wKYV zS|K$l+84G$h7O0+KA6EY@K6WB5Rp8M1eM5=O54ZBrETksl8SF@1t@G?_$9#+C1ha9 z+{cHpUEGmdi8uEZPG7YYWgXskcKav7#)dsQ`={u7l1uH7U0jvpUg$)S;Sx4HCLQh% zKr_+~?Cw7e^{404LnvVfe7I!JQ{}2NxUMRa3F``zpz^@Oqipu0-6GPSc4r`}XB2g! zq*A!S(%H#bOiy-b5nZ8f?M^%>g#d`%7jVCKaS&|-R^GSYs<$}S)_A(G?$itNlBqt&JdVtnm(Taq zZI$M@wyimB%*oY4Q~3K@rc4}J-}T?f-#@fI`x6=!AV3(J#iWb}fQy(-Hf82SwC@`A zDkAhft{jzmxbY}agJ@b>d$S6@;m^0NUonJ|q5D$?^PbB%4YELxg~U*LcF-e*=sh85wXT?68@qkxVCZ z$Q$L1g6}CNK1y@934yDWlzJ7IwNcHe_0eSbEl$&12GOK*@t*k} zH~bgOU^F%G4LPxICx%pTl6ZyZDmc0hkH$4qC#}TwaM(n*{BV@qoMolXL zc3&L$j%D9+nWbmWPpUO1bM^izj;f>6G?sj3dF}jMSBft_A3x8&5aQ?4g?Rg^K-=x zy{rm1CeTW|jsu?uZN6R!1b@MiDC=|%ZdSIx%&N&KPi7Xu`jDsyNd_!X3?%}PXl;-y zUjNqzZL|Nwi?D;+91}aVj-TU2z&lh-ef3TfB`s85UPRT9>E@zSX7j-Y)EVr zVu*;$#KLeTJlf|Q$fidYgZB>&^l$$86x5}>t;-)N(tF^`Q%F5PkZJ~N|ZG&)1UMDQW_9QSsW#Jx`t=Bgu`A9FwOa`BN- zQzM2n#6txRDvpGMPyjgOoHutqw z^EXJJ4<^36U*vnyni>JVH<8e|xw0s3`e~U* zSz3aAa<_V;-D*}6p)sQ%mR6%5RJNS4H7W35@N($G-i1lxzTsUN2(qPB>1>836{Qum zlerGoDeq~bztP5D!bOCMGl3Ce%+(h|xyVNb)pf|VZs21^>nxoa=ptd8NF}8@CXy*r z?R2^cGalOV;x1XMQVHQn1EpN_PzI_Y_MzA-0L25QP$d9d!H@rDY^FJK3g7-pf-al3 zW?T5?k>C;08q{7^var746~a=9j|dVnXGKLtFcT`}=Y}qVR?jQuQ7+j{S&EAnQ}?m- ztQNszn&kCN#4j)v>-%7t=y+rw7Mm!-K}3czmF6kRGdE#xJHD)~@U5lUxaoN(0g@K; zOe+xOwx6X??ULhX7#u!8AjH92Cq}q$bZlB(E_c`LpAhl|Nf*&RdOv=gx$Cuc>rT>; z9~5m|zU`^soHlzyW_ji-XpLDnA8#2Is3WDY0NvhsZ@aP1abAv9J zv;2BD6Xjx$%~hXXttB+YwVLDLU?x!oM+7hnX#C$jF5R&|)rszRv5C~Ih!PS|piWKy z`oZ8>3Qwx!)E|(Mkzq+h)H0u47ftc?(syWVEVH$Rb2leFTB%mbVNp5r+r{a;9#aaZ ziYaSmQVW16&Scanh^T^--kJ0G4#tSp$M4_;pCUGtvawm)1#5y~xh<5^e>Wt94O_p4 z9Y-X;Fdy@D@8-pycgGMbNnXBK|ATX?i4nnoLSaLmW{O>Ve^hAoi5PqSOtUgsXqq&v)QIMHy-)ZPt)MFZP$`^xOcEL1PXWn^RlA<^M{8cJ zWab-jBVIyh_U%%tIo7pWiq$@OpF=e3mxX`lT{ts~W7Gzl7wga5OuE?uMgl;yDGG8Q zig}F0&Vs_fESUh%lK&gl{EyJJ$+WEzQW=*Tic0<ihYVLZ^Aio&6}BKXcxp$ z>GAjcxNO(2N?9MbsbQ5Bd!<-U@kMo1FNw4$&9EX!U@AAvlQj-Km0>glb%a{0O@VuZeMLy|I9sKzguW! zIXR|=tPCG65Ybc_Mm?ovMe3=#M32u;J1+aNd4p%`=rHwXNx$`?Skpks@zW<~2 zTskcY{oAL1JXlU&V|LB9^ny2;0-ZJTEJ1SFMi+BB0ixmAYrUPqCV&(49m6TL?(_niqLcQTnL4FoggS z33jA=MH`D;5COfE+AWDJhGpyXczf{s_SF%Wr9`wYrm{krgT-L9Ys0f_)0_VnIvMFB zUOBDC!Smg)o8*-#z<#%?Tle5%7YL zNWc4j^Og3SBLZSW@IllNe}~7mF$_V8;nr)Q);B2ADE`!;baV0g%Iu#%MQ53!lUgc6 zEDC}&!uAGoH|aSzi;s;RT{&lpaapLEhj~)l=V=UI0Pi2J;$J}gzdc%SlqmAuyV5E;p}Vddd*uYxXvV%L_eYtd1xm2dEeH3W|xu%5YAnI)QOC6N^$q`UiAG-No04fOVT zd^n!GoX;O#{d%-?`~jb(PZO!BT#zGY@X$#mtTrvZJbdI+CI~GQGA9JvU4!YOjH?8} z9TmYhgVxJ1{*A7W4Bk*Up{|&JlcIjlsXRZ-$d16Dm|<67BRv9A6i@O|(M>mH5LnSDc;4F(_STDWuX48kiFZ1^tcP zTn;PidSsP4<7Bqo)U8wpMau@Cw(zc346m+kuj@$M0lB;pD`uK(OCV{+RV@*&7(2sQ z7%5EYPiU?fCmLO}5We|m(Q}1Az1r~}UAV8UoT^pM-%KPkiHSLmv&=m39o1`Wt>xdF zjov7E3go{>J2S`YiB2nYQ_XckpmaUldsi3CABC$|`wJnArY%#d{oxM6CPg^_O;wEWQ z+poy~+SWf8M)fn3$snT~BnCp%NUahYmVYeM6^q>Z3oJ!Ngy63uNG8U&EcaQ%U4ez; zJeOmI{%^Gua^PiwwY*>-<%$Q<;9yj+1AQCa-EdT7$Rf?k($Z8R-y5MozZ3cRc>NhP zq)N5ZT4tn{yzqHFpbyeH94_{zCq{=C?@YM~6(nG${N%0b*Tf7IqnPRTt=*ixRi)6# zew=t*oI8XU`%}xLs{S(9s@C9IZF0BKpir;17~C=aq2Mm+QXe;6)U@F9J5a?m#%L#1 z9}P3oSy^7$5Iu!i8=e^H6QcCCMaTDE^ALd8L2e`|rWi_b;=`wH>sqnPlzyi!vt03A z9OThhK}kRZad5<5h6_Oss!7Ze`;1$jPHB$vG`0acaRTVyL`e0oh*t!K9=x}dV$h0<*q<6D{s;gO7#R7nGB94V=Y>)UJ5zc$jW4AbUjkoSDqBHTGnI<^EFqb8O&_ zj$|5p@6LSz3Ah$=pjQ?j5%L|Fk`TA&ioBa|W*jKR@SO&7=YTv!>C2ss!DkiI&Ed=A zC$pp)WpGox^s$=d_+>3`ACI>uHoi|e6l2D`{?rqv&Ytg=o&vZV0Yq(u-{fuhKc?rz z>esYpEW|o3VFt#GcsaS>J$)YZM$zCBVwTiDv36FC(@wObLl0m>=n6IAgc%LG&{{KV zOa1n#!ts2muPHf2FA{&6UPZ4H;ffy z#S^4bL$xne78~M>K*IiqZ(U*<;15;aOG{_yH2|~WU z^{vem$Yyt&pr+!l8mRVK?SdW5U*{rcN3eyk!2-6P^7lBmiP(Tg+T)VaTpw}Fr49C1C6q3pIU7KiHi20%pjnJzT;ajf5&!f%^=sdsbwSv#4zO|yGK<}#IL)& zYs-L?Y?7&xQEHV3v0q^R4T=7Vpo7VjRtOd8LRKbeYRi~5&uE51o_wYB-Vi0xy^-%h zma3S;q2l0`wdxk!d&ZRUj_e;_oO_dJ6hq};&5=c<3Hg58Sfc1_V*Jpo!l5GyF)VGK zfyY2(Vt|#Va#=rUtJvWPpFJ5r_P&0bzYu8US(~i)6u50_omx$> z$9|M?wF5JSfrwXkiU3fUQJPtrnH2*64g3jk%mpD#7!~wAh!af~5Rn2$8U#zU-SI2O zWeiGq_urlDoWCRPzaxz4au)XEnBSC@EmSgJ#gr!Oi7c1-n(ul^fYiir%$8_kFOrq4 zK#bw75u6!==*lk79j`nrK@?!0-^Xk>!o!ilTz%zI!Qd}#swxon@uf!$iRB0@L}?4U zHegqHY`_y$GSQhueLU~ENtY>q3d=Z+B?mHgM*kbt0-?V91M)P3HO=tiZy(ZBDR?^D zHT#xcQ1Kd%&)aPC{K?j$Lptq}eILp5;xR0izL!nU@(Eco5^@N>i!F_ppWB`fUWL_2 z($ zv?eZ&bn<}tOo1%VtM+1aBT3XWstzLJzB00?6vcCM)OTM@Hb4MnZ-OpJ7=e`}0-=8> zVj#f^Tv`PMH#}ulkr8r)zA7Ntez31Y`f9@G6M@J!n zE7aQu6o?Of)3SkLl@4HlVvz#TYEdrGRa~P=g~KmFP~VU>_9D4mUmj8)G9b^fE(V?> zJZtG8g`c!NJQ-qN^qtYxJNUg{*E%xCabWo{z}@E8+Yi}PmzU>@A8f_iWipb5uoiFh zEDQMSCx?$w8sg(Ze%d0Mch8ZdM+VKFx^s+7Gc<=a1P zR2Sf{?soHzpK|}EyIX)Ey(Ugpcw|IsPD{^_KqOy2mC3j0HrTo{X60t#F%uzfyX<|z zE0ck-ZeU`1QB({DO_G2 z?aUIFtUM}`<2?AN)B8C2-!EF1#;PjM-@}K#tnqB!DdXb0@~FT-sp|p zL{-qv&!#}8UBDo(diki7WC${N)%PSaaA6lUwFBTo__VWo%SIE-;L?PSUwvmhP`qDW zJ|2@kKbKH_bG@UtbJ?x>efE3yQaw+eEX9#5DnPtAkt7;WU~zY}aN?!|HBr;o_uM<` zw7xNQHej^ax^}NI%6dInKH9Q+ey{$}WRe-S;jzTAG(F95JtAGG>Y6hk9HdHZ_GMkd zXxp2fI0q;diWQON95y{aXfnY3GX`ad!MaM4F}DMC2dpUp8i%gdO1o)A7DJ|y7A>al z3|bf)wC8zw$eOOBjGA=d9Ypl?GM{XeHmreBWHu8{R3(oXFI{?p%vBsBUl})ym^i11 zvWWJdvz|9sN*Y24UGSs6?)aF=r8rUrVSsb{tMi#OiYvJ%#4_Bb*sXREP)P|gwSu_J z#8|`4Ej4?@rW@u$$(pACy$Fh;4H}?r^%l>Cf=v>{6atDW(Y)L(boBhr6)O?^Rr5yx zay$pF&!TqE;>u3}&X_NwO*+}1M8N;T^FkOra&r4(cj)1zLv;0~D27m4?H za|BAlf`T0zP?995Vp3|Xl$F}Ejycg~^W5D0_y`+UuGh0Z$fS?Augux?y33#B_`fXA zo=xe=D$m^5t~J_yVwRRfwc|LVAJ}&WL0U;8klJXbrhd5iFC9O;#3MgMe2x`olWBG6 zSvH^gL%{Ff_BlVNCIvE4;EikM$x94g0l?fh>^(Zu&m9xY8=@M@4spUmOt%@9+j=J{-`TfE*!794MG_m||X&9P=0_+|Q9UM0y(0AJ8 z_ZHlfR;4}^iIobigfOrUM_{ovqc|~8X|N0pjeRdX;2sbHUfQ1iVIwjm6CCbh>^l4!EHQy(=5nAMgYqWc$D+0fk z1?tX+C}013(kXXEdQcEs{4-0kStGlh?fj~Gq&DQmf(ObilUTlR3C3w?gr^c!7Iv3; z?w4IL)k`M+=^fv8043lW^;r3b0V42G;0^PwN?S3ltTZ~QTq@3tT$_H-lMO+fq5kIT z)+>9jXFEg#w`mRhsE#9JivRrlbNu{g*&#YhNrP-e$JyaWf2d}**P%g*1e7c`%Zlg> z8GYF%#6M@)mDIq9DdC-hBpSg^v(y4FRb8&I!3m3!D`VBG-n#Q@RWl6|WR#nVW^^r(LQ}w2!|4aO@WR! zZBm-jlE(BK|FY~CiJyNiUVg5F-NoPMxylS^u!yOj2bJ15a;Cn-$;)q*6G~GFf8Spe zE7V|6h^JfOIuIoh|`&?e&l;eArtBng@PSF+A*6l61_D%xY6@#%0Ejz)LfB* z>89@Rt`i70{KIOZhAwEPN%e3sUw=P^NSNusspmMhfjGoG3GzgAu0k43h^Rd&NMs)- zc)<5w4pirsz-z!9RhlAAMTHhKfZ-)8RX*Rk1YBViM+;hFKEX|`4@LbXjBnex1Rn69 zenNiWYT?n`kVzgCHm+rm0+M`F5uW`=kVJFj{$M$J=ta*3n^khNVl4%_^(^+d#r~3Bcg*Y{(azAF^+`bm?q3Ko5AOfG7yl_8D)%H3+TsC*L`MJ2& zwkQ{D>gR_aSZu_)cWrq6QI6PoNY6c%7B;M%vh&R=vJ}bbjcwSsKJ!Nh-fi=iHP3L! zNDmy##&i{6Ex-#K=2}u+^m8&754J3^) zWU90n9&^$g)1<8EBGKb>UV~e2IbAj-oXsN0i~tHHKx90=a42cbYgk$-Jcfx2+o&;g zk2Yp}B39e45-x-3t00A8VFsmi$>KjAq?$YRCw6}?Mr@YETG`oJMhU95CF{w|JRvDPRKa^h%874{(<7%HFRJN9#kikrT&vhO7!+4y zfDWE(FnOBZ7O=J=Oe&FSh8YOolBo)u*}hRGkjdJ_6bR1@5+Eyl% zeIPY^@n+tn;mNiQw{UUTw^Mhrx$1iNb6l~1nl^m8MzJ}1!(-PA%mH>FI5Q@1WWiVF z>T3d}z`*__;>+=Ij4DtNo2G{@!2JvBb`MiUUZf!w0;}pr{er!k+6}J;il}6gX^%dZ z7z%p~F(=pgs8cc!X}4mD;p`go`h8&wbOW`_MMtuz)lwuf#Bi+y45eU1*bmm2 z*ze;1b1wcNj1WSguotG>pUE+q0|=1DjK9b_9Wj_>gdC`MwTDt8MkJ965@EgM1*)p_ zSWS)a3)#h#J~Z+xa+?4E^Z`=Qn6MUzkGp!zXajn5$N@7_I}3;TndOK0KOj*=dt={G zIrVt_{Jz6tI24fR%5Gpr&8MUv%}Wr#-Zxe0SmDe zGfw@ITK$&IVR89Ey1F{8MptqXO{Oe3RtT^BXTrVHe#)$e2;zd9rNt%f16g!p$lHeD z=}+R6s^GsO|6YU;Bf)<>b2qq0rwIHEP7o3F3E?@0Xi;uNk}C8NnNsQ1 z2z91&CGL(e;=9L2qZS*xVPP zBns}1TOS*CVbj{ST;7o(8zu_hs@15nu12B)v!~2Goas%N^e>5#a&8D8{ae7mO^F~( z0hvE98D_5f;)fa!J{1tfTo>kN-Q{=ToHjAE5*qMc|Q zxMZ}jgtAZifw92PxBjKKPb?4)qD25&K&8KTy7)(K4==Mx9-*n1y4r-A9@4#!RMPFs zTlLs4uX}D>{B$$&SXEo}FQdn{r|2NdSO9`0b||q-DK>ad-Pu?$&~8n0iUt9~)SN28 z&Oxpq5Yw!sX4y1k?@5?a)K;AhWmrmr8lr-4^yuu2T@HWLX?`K^K=W30yszTXLP|-Q z`yOKF#opud#<_UiXf3^zC9zQF+#TP{1tkYN2?^5wQcLf@QCTilDf+5596xF-JQj3q zr#b}o9y)9?dgD=Uv22nL`pY)1IKZfc2 zvF)I0@Yz@Ic5k;YEwA3MShM#Bb1Txjr?J%3?&f~oywFTE`u7ozUQONN2FfQ#7*BjP z8lXg;PLayql3bt(NB8-3MrxIeDJ2kKN-H5x^jQ11|;ZsMA-!# zT~U{+wk%XNEE&ffJu6kUK!4R2H^C*}ALsc7*00h1So&4`MPA;F!-x7QD&Db0a%k}N#}>J^jCM=fLQ+Ts zia-zrvBBoKnfpC0yDrCDe}6a2#Z3@U`22-Ha2i{ic?8o?+M<_|9iS27?7)cU=cm9f z{U&Qcl5iIswz=!uOR2Hj_TZF6mMbqIIeWtAV(8JvQD0mr|Iy!+`0Gx4#dh&v^l|sq zwvVj7p1y12WuRc|q7S6hv?4kresZ~Ugo2Vjareu^+c`^h_xOCM6GEaf7hGgg4qJ3` zOw%R;!8+A`iGYzfBt`jA5Hr_>J*G&NW}L18FIKHmzec@sx*cc=5?6|JiHnF6U$$=x zor%0WY!@@tMGk19od@V&3950f^39C#+h*ecDwcLR=?^9glmdS-qx)}v1L_jQf6tr| zeE+wb{KqdsKPF63S4VV0m$YS0w6C<#eepSVWsbzxTPn6Y7vOh8sc+Ltq|D!OuvQ)s z4rr&fe0|Za@Sy{ZN2)kUmLlE2RRh@qB9JP+HS#HE)$7zQZGY`+>43=N7w9cFnEz9U zOcZ+LPCZxmyi`joZ;lIAZOLSrQ|S_;pG#7fynD5oUGfer$`9g^6?)!;Eb0Xa`ffWn z=1euxvFb0-1lhVjZRl>HR>q3QEK!Z*Z&jj!V35W%!tfPn339)Rpdzd5TKO5->YG}1 zYStvA!m)-Y!U+Q|)qg@z(l*J)xDmLVq<7?!i)nMup;QHA4n%T5cY}-%3d&n3670LI z#%q+S(?e&`Q%gZmi;pnR#I8?IV~hg*RK4{J*rX1zk>?$8l7+U!;nG>fQ|4H6FzLLzwB1lbXNs4gpjUg z1z$^1KeLuScrY3sH|7ly8d zVWAk5ip1B;g%5GjsD4o{m^~OV!mA(Ms1CUl2ME@D1C0JMiV07vxE~vl)8f%Vtbd zuw1`9TwcH8vaN}N!id+3c8}I=eH7kC_4DCSa>eh60PIb!zP_j=;Kha@RYnl$S2ENg z%fcb22BxF|rPYTw?=#B|{rILQ=O%oM71r#Txg-0#CP~ySr;e{na3YWQ{NHg9Cl>7) zN=$V^)C^?ElGCd{SDLlW*FB9l?gWJ-czz9dyLm;n3;js4y5L-OQ#(2lE)AJOK<#fK zqN5DBh8P2f4S9n42c~j=*H0r?UTapl?sJjs`!Y1BbM4HtEML`7<@=-7jBerRqx1uF zArT@MFfB`3-1v3Tg}aBkp7}2NzVW=E#WPWa{A`t@diyBz?;DzDE1tEiRaYvXmr4p@ zN;`OR?s$ET`o<_b@5+iBJ8H7^;M0?*c80g6 zX@6n={PwcrSV7h;zd5b*ezP}EA-{^{|D+0XPbJ}Sg^r4CQ|E)L3j@u>$xylrfHRS!0#hXaN@Ft}k0%-_eX*K?C%iq%Of9V4 za$n_50w);w4)d?^{k>`q3iGhw@TVFOZ$Kl5COwu+{OSvEj&MbHge4maE!aljf(ROy zh9HLeMGQpoKRu@%?);8Z_9*de(TiLnSlKK}r%1{!){FANEIg&gLt?%0D-d>Y-#L?P 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Ⓣ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%0DU zPg|p+?>EM-Y*Joe_Y7Tu88g}&e;-T4_VEmp<44p!iOXtqN@*Y-mj~ZWb=E-a!pdI_ z<=bP?!`EUD#CivN4^J>>j7DdC!p3yx`me#<@%In+9v+H!48jKg@PrV29^5fFG#&=9 zlfcu6Qjgb>bbcVMJ206{!rjgj(z+e^y!$+Dyq(=r@Ttjk{#X+j7No~kPNvXmJud)X zI)aPMrQ2foW7sC+&xCEqe#@`E%rl2!dkms`!3HN*0jaPFkY2!Z zG9@bX#To;hiWbI~+X~-kvK7I?UlcLzMz=OqkY-HZ?JTw7RVjmf<+qc`hWfg|tA%(Y zwy@eQvv0v{o@Ihe1uj7Kmm*mbKv9LE&PVM znZmlgX5SOBv;z7R%CC~?5lP;R!Crt_1G#Eoz9#o!Ot7*z?#Bmr1UkhyesyDQSV6q{ zG@xt36GUf|&D!)ogop{LHgo@Jz-f~(K%$(;g5LWm-ix$_#R4m>8g4Y_NES4kqzywl z>Sz<}r7Z&!p2Wc?5=iLcJK?_?8~R|iHWx!vYFLRiV%SWEhX?EjBBqUGn$yLmOKlcs z81M{4#XyHxj_r)iK~%9rjs8K#hsYS)$=j?PeHvqbMY-YMBBwkLfC==RY9s#M`p2Z5|C8~Z7w z0$Kr19mA!{Ay+waslKzg6arR|Dg9S*sZWqg^%c~@a^Oo(3@fKZrL$Ff+{L=$yNDt? zVXC0h-5y}Mh9AIV4O?wxg+B&5oCxDxiXe)hjioqeXQv3!+1WHeWVb8Uks`s@ISF2( z@FARWIbEV&lPCj*72B_zHo@)}zERN?QnOl~rJ(0m8K5o95b7&hgY{}#i zox~yH+Os)SBE^}u#&+O&L0M`5Ekbs7DGQ5J5yu}7 zd7<+h{RMSECG+8tVrrg6A-r#loUL`C?}TBUe_}A{6Cx|M3gI9tL!G_Cz}9kxo6W?h z$Ye|0EOguVNNw41T^I&3(2i)&M&t&2QFMBV#c5z-qll3Ze;v;v`!N{R~OF%;=P*$bZlXX#EDS?7D^S z(bY9{;*d-YoPkvI@giVuD9OsqY=NoTUD=rXEFgBUL`wmR432h~%*J59Z&pE>x#jB~ z_Mi#)`*IjPFLc=>tlBErgQ!D^pNES$W{Ur=RD9v)-XlRGILWeo)Z89 zjb^N2`$B3uyf+Lz1<$)O+eZ=WcToF`ut96*+>=g4{;asJst)!^p&#SRLZfrP6j@J4 zDSD5yTKJcYDrcuLqoO}vaHTg4kf+RXOBOql6xFgNY0L%8s7=yxz#8uPG~ zZ+NMdi?Nk|@=_~PWqW3YO_D22UI@S$cUx7%?@us`}DsM*DtM``>A5)-N zgn5zg@z;}=u$6k9&sg6*OFxWOGCj#Uy2mzo3m%O-dz$_cIB9J@!jA2K$9^pEkU(y z^%fm3(PNAh3Nhz1un$2j-2cv`71qQ>Y=t%Yj{c$#!z-+T5}O`AI44W%-v(SZLLnV{ z$P6snm(9LuWhburI52E&xm0SK45Vnhp=V80zdsTFrWJN?llcRJgN1DJ{`aprVb?i& z!@%B4jLzr-R_BKgPGlvfxF&JC^Vo_>Y=tRa`snGzjhH5GPFx#YVew5laqyxMwD9gn zS@x2!k3R*EugZ!|c;?&OzY~fI>;W4I2(ye#e3UgC;+8GRSq3)C0J2fj6(CG$;ma)J z%C9+RS(>)=U-0RL?+6e(Of!F+7HITvoqH)pAefms<4C@xa%C!N_>WZaK{M_xuyp2-BWg zdD%BWl0vORF0_R!9)Jm8Aaqsb0I%rM*U>)^2liwtsE1W)Aug1zJeasPR+Y^PpGKyh z^E6(UHarCrqrIide$qZ9wP`^_k?b)HzJq>WN{Vr`K$NheC}EBDk|1#izoNhftPX?; zGYAvrQ0etar~#6!&b>`-6j~c5?o33%S#NGy*8ppa8p9fv>K4EXgZ=PzGSHGocell@ ztU8-S=xxlfRdp*NZJ;o4hnQ@SA(E!+BjWW^n`pLopbUv2<`B);4n#~<5AbEJ_@Rjd zu`aD9k*D;PpWc%RTdGm2Y?N*ezza>qmLNeD6_fhFmDltrtp!VLwlXJRzrH+4Yg;_C zVe~u@Q{L$B(3YxXl0WUK8p}_R?4F0VA%^}xRlz5 zXn$mEHC@y?{r3G*Ti=6%)V4p^w>qm!yk3)-y7n{V?oIdxJThduzO2}}GOuZ;%Xy!< z>B+jqqnwqXK64a)8%F-+_^tRq;z!(v!nBzI!S~SkRIz@U&``g4QD?2=y@GqpEk4Cx zao}N?Co{8Yi)(n6m1NUW3^Q7MmYIG}e(B(UE#F`tv0?i$`^ktX!F0)$+BEi#ryL#j z4p=NF;B=UB2O&BEr-Cj-N3KNZz}@nidS^NBF*p6Nj*J%;b&eBnUPZW&tYx`%UseP8 z&4U#J@6azW^I2P68(0lEmvKxjA&#?^a1ODY))dZecFZo@KaPl3No@vL;WW~wo-J$F ztXXqnNZ1$sY$EH3%2x}#0YXLt1Z;pn4VXy{D9dZwhL=){F#xL*@L2y4-B(1T;j{Vw z==Ll>{dw*A#f7xz-!j@`!uD)MgzY=F(a&CK(~eQC+YueQTG&Cti#>W?jr`5%M*iD) zjfC~BRx#iNb_We)c%&y|1K&dvk~-qX#|!+>x}R`Oi>*4)oQH?{R#uq}TLSdb#Vnhd z_&mNFo=-LKF4QrwllEbIC+?TSdy5vleqd+cA?J~}VrxAB*wbh_)L z%E5$&dSVWZ=9XIK&Z}1JrGS&={f@3=1OF=goyyY;zXRdDuf+z7{D*4_C5_Lpra7TDF9?%R}{ulN_$@1F$q`$b1zVgliCuKF|h zccTvx*g4EifbnhyF>#RefioLG%4u21JbATLBZjncWn;ywVOl;3G7c;Jh2uTI;CjFy z>gdZiNz#ux9R2yzr5|-V_MbR31G+#Dn<{eeA!nxI)JY&OHP!U|uY{+Nc?w3;N{)R|a)Z60>O2S^r8+c`mu zIp7;z|6fo1OX{C`gGoBi`q2mo9fzsWFbr&OYnE$WyKmwag_PPu+TuC>qv`ur2B_x- zw9}ycty5ga_gj#uAJXm#Wv&#n5U7!tCp zNT+F?Tmqob2k#^0R6b6H%Fi5qRdnyGO z$69qIg=*JKz5) z=2E|Z`D}Pn+Z=&+QJ@2|ze7OP{Bx9BfqD=Vy@^SRw1M%7-SBVa$lZOoA-X$hhkb-_ zP-@G+C%J;+Xn&&BNI&fu*%6vrOt|hD?a~f?iWr0aEtRQN))?s0CG<)K8>P1S0N*uo zcQ3-1+Ah1h9jmwp&{D77)I}rI zm0Ei=a=$LJaO8sFmuW*2L!zUrOqYa;0^Q;~|4UF;Y8t5Rss7irCp?kYGS}b5TZA+= zFyYy6^Q*_a5=SyHBJ#+n5zlF~yRVKE{s^n9mD(1YXg3C;Mp~Udj4wI{1wMrWpYQ@|Mo2kMg|UR1_Y=r_621(dmG`r=@(x4ZGw|i~ zS$Rh&@0`rcr=?&i$tuo~<^rHM`-#t|GFV;>NVP!Z0Kz~Z{JUVM1(cSG$^$fvH-Ze+ zNWg$iveiAZ<}JXhZ_V5A_mtFTUK)LC!cyU2dqP+$^g$B*h1aFwsc2$>wA<6Lc&r1h zO!(C)_?hFq5a-Cqnzv8CG7KDH=`{zj8l^&jF7%zdzK*l&Q|r1`o!`Y|`$pz;WCxcF zxuLK?Gyd=OoofDUHUBtvcM5BxB4hchO3!zy^S>77j}GULHqw}c_8D%H+RBo5_u`mH zZI|EOPLy`8`Qy@tvO=z8E6gL84hWlO>o)WkFq%L9Z}C;<`?pklJuuiSVGouoZ8{Nn ze+@ejJ*pS*PiU&tcAxgF)Jmx3KHb^Lx>mOks>FVUs^|HCkE>}0zE`XGrdOY-$NNHV zWT(LXhg3Ax{5NH^5Asn9F+a5tAF!1gwUvkJJ4dZI(uQXg*YX}O8^*Lihd}ycVB%-~ zN_&J4rMAiT4}-^7;{qtrdbV~1|2FH`o)FZ#VuWuv_DF5F*!Ki`DdWX!PjZn|Sup{h z70L6+ml~7~ae)+kAc?AYU%O%9&VC2F#Lx!R` z{!i*VIlLNjPI|qv-m}So(}XSnCaFkuX;7Zl12RSP{cqHFo*n;*__N8;kGD{7^#a>u z!@xN0Crct0;+*{&&KTzaPwX$1J^^;uUo;GitiR|qvX?g+oP*6qdyoBN%qh-~FVUU` z1Q(xWZ#7{v=hb5TeImz9j{R7gV=D|B&!kZB*3-e1A(4fD;Tf%3%xhL@H9ks7DBqPY z3&l07bm#b_U$aUW_Y?GKd?D~n;~YQ3YJu6>>?ha(tbUyA#c?wizy@NRvu4=Wj&4^| z&FD5&OKsCpRHmt8oYRlTPzzz9S#$C~z>pUu)32xfFX37+9nq88ZVm$( zp)i4<4EQzCFlv4%^zm=h<097|06*`&($!X|#{Tvt-{Yj30a(vAbgpX*x;EcNy|p zTH-9eQ28#S{kJOeDAV1cS(8kzp11{n5{5gHtNAeq{Did8VST7rOGbnMV}JcP^1R|o zxTQehHEhb-lN{n!f{46eHRlEJ!}di#(}#?}I#8q7B`)y4mLc+G%Hre@H1aUjAI*=-PASSNrGk%>L;r(!wOw!I*t`uJtsPANWWsE~V$lpRvDD z_Zu`ViRFmOVCd5F{&@KdlGeYx`G`-PsYN|^->|jZLYcgXnG+ZyB=f3=CmqJy}u>3O@#UaSYJS`PYir< zbyHfs+K@*JvUQ+aH_yLCmBIP^a~!9c2krDA0@k!V##J*0Xk<-97b%VKmfS@R^jn?(CMP=Z^Gt2bDL8iOPUVZBwK+(+?tsAEczj*4a8m9&wSVc32VB zQs?8wV6vqI;ic!mXm~XdO{5~C8UKC?0$t!gSYOxBnSo!)h2kf*c?2#V0*{>MKd2z7 zxc=3r^lB!zx6&hjI+9F!Js$aGiXdbewcd@Ff4h?ZN{Ir^r}L8+^FXsj1H9aCZ2ajT zbVhk)KDVQ&>)fi}gdX6|>u|`?3v%caQ4i~8A8s{3x%0nYR~>BkPkwRD-!#Ud8-P5v z8nM>y3%Z{-`NbnxJOSji)kMWF%wOu1;BnteFS=g`7{5grW`eRfF z)TQEipn&(zq6 zHUB*?ZQGRJ>HNTdd!WUr^-GQG@atvU$RZ#yLEg2Egj9pG+iz+N;kVz9Dv8q_oh4O! z+>KA*=bcw6wn@N&E1YlmzR%`bD&@btsL|BQ-+Pe^e8Mv=R9Oi*yOYBX0$9*uZu!zi zv=Nw}%}iU}c*`kq!(hIgx5%uPplk)=>%XsLiO6BLsiBTjs|TK=Ca$Sb;Y zxvj=GsaF05)h8|{CrFAvzlGAeIx?d$6)i(AM;OQiRoHsy>mulf%c|u@4n@Atp_;tr zck(eDyamR;T`}k<3jz>>GzpP?YtXC3Yz>=*;;2RFdMfai6v+cNJ~cWb3Lnuv`#6ZgBYX!+dvG?( zD0EZCLLD;yXi^kD3nn2a3e8EL^A(=cB(=@f37wSNqKlpqg?O+Za`r>cQ#|L3lyiUd zGhOtpEY=+z)(Ly@X;1W|j$a*RYxN=uQ0{GL>V#I1OACyCW3|^)DeJb88CW4ueXE8} zBrDLub23^@O0V#!9bzlULKCDmH;5}m6YZa&pI-Zi_88j}$$LOJ5U$07c@gnz!ZG0h znOZ_G=Hc}YybI4>ixjRF4hqM@wP*oW7!kiA3=0P#OCg@2g)z(ih-I;`Qy31J!|i2(?V_{A)btEC51Z;p^7go(J$Iw!(sBx_0&SX{%cmpGAv4S`K8FgF zDfR9P^vXKbiE&mu3N!LA+tw#(r9WSP<-U@wKRtiZ0P<@t=nf8txVqNe z_!537osnikwqUZ>pBRe>tD@4}TRVJ>?BF8?~?<3=VM* z%9bkmjhoQOmpkq<(hZ%rv^2NSV5r*4^0qR=Hl#8~Kg{}Gs2Z;(Sy7+%C=NYHPk^Ki zgnWA!)NI4~K2eC$oHW3YUlu(n3OmNtfT7{k+LIW!NcuVLx^9u$+U-4TU&Jt5h)2Xp z;fB+=0}^`B7zwAJ5Eps?wG!M@AQsNOP5*(yDW1rcg)NUW43r1&PH4w^C;E1prqysy zobvG-p`qxn2_q7a?fFU0L^fhe3m-=cHat!(?R6Z7Uz}TJZ08mYnXs7xouZ;I^a4GX z>9}V7p7s^OUf7Z;o1ndX3v`qTxCuHcM5FIrEgV(41N&n4Ir{>q+d2DV2>aun)3`Ge zdW4}c8pJNQ+Rip7vN`$oLK$#yIDxaV=-GT7@!Wu>v! zEf;3d5(;oSx3%Mp*?pc6q;+pYmv4LZ!pdyIGCf$PN0I-|6JImqK97x_%GxUVItl=5 zM65wBbZy(kA!59k3vB;Sd8izO#HKw9y9=))8SInR1<>H|I7^;)+x$1P|NP@05RLOJ z;G0$!$y+TPXHR?$>lKa%`}~h5rbG;@nI*CrQh>|Y+_jB+p>2&@KE})T=!u;kWxpNK zHZ>65BxJhfUrx&qGU*Fvz^iV^5Hha>j)kU@AX1_kvFSN?6-kx`lq}!o1s2}GT|{?t z@UTwTR?6T1DAiG8^-JWB5+5olu#HA8d<_v^@v8o5vs_$7%VQd>?g@J-;IlJttDR=-7OlwL8+({IxmL$Gp4uZZ8( zw*eJ)($|;ptEpE1JfuV+-*+*euv2Qg8a~(Q|4J{fSiY-=K9SnKDjb5`-_`$FXN(SK z1>`j$7t{+-qbIY3LxG_+(NkHW`jOC-kW0&t(30p7BX}pBx}fLnQT}Gt_U#(gzQ{so zod=rdjodw|eNNsyv`G7YvURQ&n$oOq#|9KO>tBWDRbcZBetid~<@xnpfcxWrn0eqj*z0)Yx2Gxs226Va#@kaZyD!md$j!Lib{(*IR}SBC+1cD2U>`Q- z$&)sD%os*$#kaI5Qs9=XN`C4(K7G;B(MyKOE!J_iL0|vY=xva`p-QgLD4Jof1yj0| zTf)|l=WmAe?QZ!?<7H9IHlP<#v{d|9zGklG4wmfB*DQ&Cy(5MS2!=#0hA9ZhmW z{o)gQJI}IrReYptp!4+dB0#d9;=h`?D)_ZkI!7-_YpCe6ccO!~S`5OOloYe`;CsG0 zPpzCZqD)4PWrO`IaS5^jfO`dt_a;ddx)`%TLX zo|g@jfcJMMyljML6ncXFK53cWLvdijLh@jErl|O>CQ~NVJFa~f1@~I^N1IVZ)zYpD z5qg(zHD6Hv!mXAI%5SJ!`zoS0^k24Q(&J@!;Pv%odC7yS!P^v=7fP0D$kLb%Pv|F8 z47*T_HhVJUA~oX;kdeIvTRB*ud&By0xfm{ozlLzRFTyA47L$@ZI zf~Xn7t3>88RI{JjkdngRM4!Z4wd54N+`zU+%C)LKst8(flHG^{W{*Zp+sSUoWmp<^ zPhl8qwY!+CDU+|G)5|Qt@~SExYn%e#@GD>{t}WLjljM(nzOizd27`L%QV348H_Sq> z$cb0kI%-P9W471kw=`AgjJ^q5j%?H#nFl&CH|)w`Sy(UnX$OP@9oc~vn>Osy`)_o#N9O24#Ur8O zWJudptks}?o8LJaVpFObH53*G_BN&DBOV%jBhl~hvg^Dr68*lOqF?WeM8B^S{l19w z>*a*H)ru6;dA>0xgJ-a}FC+K*gn%2J>032|Mw^^ggthaL-)h@+Vfr}RmdSi0eaE(U zk%t#+Lt1Ef5gp}!NNaE6;jP)bE<`z4It>NPXjHo-%ji-sBg~^aH z5G@L{i)&9(uO1C_Sl50=kFh}KwQEn&V>^#fFs+b>gC)~Ug?>8u`H%s*_`~LwZ>07A zY^I6LMSjlaX{1f_ZEohW+Pm$u#46^=DVH|6vV|zdK~44%i+|YMw7b5pVR6bIw~3!C zwEHH5a0WwFj$NC@=3AM^k_so~=CMV*Je(BQ$yf8!A}{c;dxpdW8c;;vQLax=hJsNhrf07Y0uj@mSKM>!EZ zRCo}>Z%wPA*J_H$r7+%<1KMpheX9E@dt~qo@sh@`+Wz__CBZyA*uD z#a;G^$!n2+r2Op%`&M2<{!A-P%`^Cc?8-}=#pdRV*=#El*S4aoI)kqBeDd2MKT7an z!^VvKQmC8T(qb7YvQ3H80245TojdX~Q}d0`S=Zymw~i(uQj&D`tiFPItoCS;8%0>Fn~B?ms9UxyqN_sn z4Pyi#wZ8eO`erIJtJxWa`u4IY+X12iii;CK*l4x|dskYqz8z5CoFwzum}#3cy4qmx zi4>xL2TSqCe@ItT$vx2~rI4g0O@+bv5Dbn^o05&q9;j$CJI10Y6|+4U1e;vCn-Y_p zB`~_Lqu|slh0yT?TVZnUfr{rRol)rrFJej+-c6I*e70*a4p6n!w#0T_M0`ZrG>EgP zR%$ycwH=T)y)SJ#K&szBVhwP+z|l4KkzzD?L2XUiTx}33U{JACgJ-rI2Mzz|c82t$ za_HC&%mbfyz#pWMoxnC}wBkfZX$pZ?gb)ucL_rshka z^b}{Mxp@*>WM!5ghQzCcPZ#))P+=IbhDhNg_8N@21yQjesHgemY`m9YLtwN&C3t=n zUM<3_Q{Vw1VUSm|9rgP@n^kxXI>zSTO;tn+HLM%t7t169-`nyH0u33IHjWR~a1~4k zJwmesB_ed8I|C{|zx_Y-_ifnU*J??3nN4?{kFT7Ly=?+ajM&>3u|^yAcDU&;8e#uz z|Df94w__h2)hI=w%hUZcroU~_l5pXlgip)U{e9Qj{rz)AwTS)AGWvVE^ZP13)rikM z9G}v^XwK2&JIC+wVgk<32(r%&w*ugf-{(8evQA0$KiQ<%ySL%h>Q(v^F;qV$(Dkb| zH4r`+h&}KvjtX4*hAw)bF8>WU2=8!e%Vu#L27u_6kDN><0gddytH!x#pv3$AhLjo> zbE8WR%v~uzkGY%h)@~{{^s_sXGl>n@V-b@E>ZN{e;<0{g)W6u#2*QmZzDJjDjIbBO z=9}%%ZvfFM3{dm`#=A8~1MuPz(l{?Pmu1n7_l%%DDgV$Iuf*UD9+x&85$NQMEi^`8^MQv)NCDaK zloJ@ywp<%%&yRSLtbEwHvpEY=vCH*N_}U^;o_6aT|C_=7Rk+K|)^MWCX0>`&VlF7P zJYCLy*Tw}DYviv&4CtKc(#q-iIp_m6pD*wC3R{ z+}pPNZ&Z_Be#))Y#3vrU7IVQTb}Z!r2){lIUxWQp=sm20+9^feglA_LtmZwei+!l9 z<`=OYc-R+tRf~EFDfAK+m}7E&2u;2}>Fknz@O!c_pJ%ckb9pM+94k60*;^&=b5o0l z7`oq?crI*TaC2-E3$)azbD+Cx0Y~@iSo=J^a}l6>%XsJ-urVkOm=t^syabz_iSh|D z0jf2@2gDkrb1S+^>8X^jP_TZT$7s)O%sr_wE)y{ZSUv{QC`r*^nmYx;i{Lkg{KR05a`Cpk4%?ZPU z2ajiR09+cKFfXJZcmXLq58?iL*epZ*eMdiX0`j0!hyzuwBY`qMj-C#2`srz91)%*U zDl2%Xsb8nEf%^jw0UKD%=A33FpMc1F7xU{;;9W$5F36uGd*X2D@e9bh-+)1LVx*A= zRH>6*Y*bI)UqR}<5~bcp*(?(Xy$NHyedeKW9gEEo50${w|M_XyFT>Q&lY-yoQ~wl9 z{S8`L-*V#GcyW5_zl2l2Sd4Y3{<^gOiSp(OttN2=uykeq&r{|RDdaqVc- zKb<=Y_1{-;)CcE|LVcNdHtsLZP2pZR2KSuL!(CEvpZGbrqxIHk+~b@ZZrB=QRW3Y^$QR|uC!ODLs?jzRvZ2sID_YGt}rGZ&uISeAG*=s`r?gb? zP*GYUxRoS=EASYLgn}wS%3WPqCC~ei&LtCQmykDlCEuc~q^~?R7v`B_H&wc;)uF(+Lp*CV z_}0$TCZ0WF8BD3aUx~J^@W!4zMg^VVOBB^VmNit?Ci18RG+CJkNK@ zpUq0ErrP71&eq%7NouE7Pf!ttE~@ls>B2sQ z%xLMQU41Kje2Is2$4wWAVEnxj67aW*RqHF=gbt42+E<^U;Ntuvq2i0cZ?ZN2+X-3xVb$ctT zlYMAe34%WwYZQ9iR1nSm&>R=d95JWI?NM?rft-O?%gH{_>-M-QP>@-vAk%)2ZkJht z$5&6J$auz1vU!5ZLlHu3QrlFFcuhS7b2afLYBVOL=8T2<3AHphSwxaNwJu*S)lwaZi zW+}>9)Q4rG{Y#0Vy0$X8w_4@DX24AC4`^_tKIwQb*x!;Hc~H+1#Mc0J7UERJJi`(+5Sjh|@;NeFu7Raw;<@zczlZayi9r=KBUzXLQ)R*lYHk@K%Eno$(yu zOCr}gPZw!3Ljw*=DX?HI27o3md_|zyM&Y1SLtRQkJA(rTcdoe2)Jg2ZDE>a9tMsz7)`DH4_z#u{stOx z0mG|FOjiVf|1RQ!z?fuTq(2LUj$Ge&kPulH&I@wSzEl3i3F52BaC4xh!iY=DzjD{e@@g{c)1w25uRubf z0xBC8S>%$LplT?q=zTw%4#<GfMCmos|Q(=yMZeK z+RAb? zsn;9|8z9dZ1wvUCEoycHFK@&G*2YFMiAZtd9C_fgFRWkp1@%8Y3WSG8pM|xB&Xn)t zfpN3kWEDg9CE_TDG;BV`tPoyv_OyJJ%{N6#^QVVhW|$~$5b-WbF}B3yN*c&eFK$x9}k=jN<3P z+iCl6VF%eT>y*nsCJ)tCv|Kw7pV5FN9qsWtOv&uXhWHal^NNw=sOdH2cZqtaGB9Rseua_=FWJTz8Zb2)yB)n;WCAiU1GBYx=aHT zFkT8N*>VPA12J?JaQNaaTq$qjzT6M@q@QCu=sBvyYO!)Btdv7}rX1FIXAFeXSTFtN z$94`z2X_M+Jj>vY_#R*_cxe@8FG%K`=|stWKKiH4gUq`I(PKj4;LiAt!CuUBA7@Nu zhQVF&-oZ|#cqu&X0AQ*5litpi^I$c*MAc44Rl%I*@8Y00>f5m!+-EiZ_dD>Iw0o74MfNF zY1?`wzK{WEB90ct7RApkkLH5Ikc~dfy7Oposqkii^Kl)7{h=p4q1qRG0-+6i@L&$Q*r44vC5xLKV zj(S;{$h-!&0I$@bt}NTx0g`tac`ZzcbSb6G=C1+=S8(6uPkaO2VqlVeZ3BL=h| zdsTk+Yg!G=m0pCDj_WBu{x#a1Vi_|V9#!H2r38y*4xnsw(wWkCm^54YzH_UxpE58Fn{Dv$1R;vtsXBD zArRZ)J2Bd@737@0H;xP(LcRUEIv8-S`I{iI8kEZGOsM8xU#_LIOOQT1-o_<>uYAkj zaZ6$dQw-)*v{+QvqOW8#Z0}H$;^;lxL^dfH2p37g4DU$UR+LmvlYi!R(zoFeWMM0a z_CA}rz^~_L+{BbCr~uMXG={;a^A8`v2|;u+%ScwEkSF`F1}4^FloLUOibdgXQLGaR z^#U2~gx`+X8zj&9ZUBn;T6{#{-GxU|`o$?hNPf#W7@>*J6Y)9EI_|#^u99z(#iO9p>=Y>`rK9!zL4L^r zGV{fI5fTU=@-H1ELZcgRql-d<#O4`Q|2Njd6M7Kna+|duDr|+6Q0Y}k^orvIRQU}p zXb9d{v^b$P>uuJu7#G zUGP1{UpeY~(TzX!7vmOp7Iiagb>ZWch0uWJ+k$;79Zs*g z`6gCoMW4w?mPJ-3ZfrGN6f$H{>PB*?Tw-OWXIsT7A@S10WfasrO)@jk}TA5@J0i}XqVT6}FOd~JX)GdvYGY^GENUmE~qK%2kd%f#ox z;?sz)Erl=S{v9(s9X32U7GH9e>yfX0lPvZ#9Gj;7-RT3XL=EZX6wkW;soljQ*~!ez zl{OWd!^LJ+X~c^WIUCV;4dmDPrv;K)X+7Eqb!AO0$t_ zLp8Bh!{MU!<@%M-wr!ZA16Q6tAZ(O;H!rjNnj2qecDgWdK^5p*KPezip?8d*r7mqjjI_kiN-BR!< zprE|UxB8}*OTn0yG}`7hxU7&>Q4?Bwqt=b`v17P;<15+w1V$$NZvqH(U>z8_#&1!f z15a76#fT-7{qK5}qLACy$FAIqSS0sz`9h-7^om=T4?T|l<*Vc`0ybhE)X!KE7&AN~?1T-AmB+iM z?YK~%JIi^msR>nu)*`y2?lL!R8?TCVnvyc~vyVnbJNW0ee@5@t5cR=%-^X6Pb^Wdj z@cZvu0ByY2+_DPfM+Y#WV0+7rs{NRmx7p3a-&YFV%d|kyhsm1SB(&ttL?;=srWiEY z+_b%+zK#sI7V`iNEjLh{xf?ON>Je5Mi*41F2=x<}dchAAU$v z3ne8Kro4?C$IPx^(mz>V47u=bQ0LYsE~o=mZGG~B^3UG-#|z2tm+*Fz$5dI>xS0e* zS*Ie3Q4;3E+Sd3}evN|%b~XZ+O~N)MMI(j=>YuUxH^~k<(4rT-et)e;J{(SYboS-L zVp5NTfMW_HdWAZk^9=54uP3<=K2ZM;H_0>);&sT*)xrCS=-rctj<5||s+MUgW9{UFp{K;F7(GESHu-@0%%NEkIumHQika%sjXAF4))|Xw)N6A7tUAooS^eS~Xrk9aP7Nt)3EB>1F|?F2 zI*v=5`jz<;ajlUywF{lNEhA~WT^0a8Iq!O{hF_*MP&~=}E^$gSF^Sc}^X(yVifio% zVgCvdkrub?-Qx97k^g56i!u6$vY!pSOIKB_!Q`sxu!pf}nlEW=NAdLg?{kS3_9~rp zhd2k@osGonF+~iGl@akFw?{sGP?Pf8U=8;B^{`Mu?DD6Yxw`CghSlMLs$Y8pmbyCP+EOK@?B^>PqE>p|&%x?z0u(v2=xZUY8HT{!{ zemUbayVulOaeY#F9kEq1b~g?3i=t+%*uOE*V%De*`=t%fadG8uno2$tu5Z00WYQyg?{M_4Lh?a%yJ0*W-y%R?84Cmvt+^p7>_(e$p{FQh zDgcORC~Sm{YK~Y0D5DUFsF25x{-|i&JUUna`dy2OWkW_%Oj_S9RgbLK_d*UAbJTsfEAuy z6=6eS)R3ET{*ITQy`E|kZw?lOChaRBzYK`;`YLFHr&{hmz=MX>p-U1Z6eN$A>1G$I z8PN9w)n!raYdto037T@}T+c2E*90}#_eVMMH%AOF(}-c;LOvJ)8{LxvQpmwuIXU5+ zsdxhoGhizY(cxMSK>u3Geizp#Ug{E|hs}hFvN5Pl%_FDjP)2wyToWPBIZ$sOp5XyJ zA}4s1f|cAAOYUg0I!(=qi2to%hp~@LXN}i&oW4Nzo|=I;odtz+9w}1l91OIWQl(mE zMnv9ZV7q+1#`39#=iETFNcV{>VetlPLZAbQDF@BFu@iQuI|0kzYeRzcn1~ejraJ&B z2(k$Wi^3H@!ntc!5ZbMfsY#@+EhTM$naK2Nr8j6OF?`;J*GD(mzLEHcjk*^G^%5aU z^tn8!p=RUwD%Bhq)$Umt?H&a}0iX~#%lSREJV!TP%e#oMzQ#OeZ1wUVoo0(|!akq? zp@y7|n0_d{#^Oj36_L|LVZ+lT*8*PybarqJKm}5=om2AEzm1_}MgOhvQ)yjtf=07- z?}c1>l!7}aVBkFy@ml8|Y5gDZy$n5b_&lr4Zq+c;^C2B8Gi~FAI;0J^;C*e9`0 zH3B&g;#>TX65v_f+y(o}M2Q+EEHgQou(LW;pX8wSB!^l4q-sx0ahPZQAV0Ojb4Z+l zVW6SoO3IykrS&^ep$?rUZidpWq7KSI7Ung(<~To+)-%#naz!O@z%rAxA%M2gsCame z&9mYd8lF=JQKn^{2!eS{j^1Ejiv{>M44UZ?=7-EvS>B@|)6MV^T?4#R6d2Yu#n=LK zV2I3RoKY!qTsL~?BY8oxM9ZK6(`8cIC3L&#s?eo80p6sxDlMi|YgvP78*abthn$C` z4NG;LES6`9Y)O`0I7+^LasYw9F>tdp zLFA}JmWy=^MzI$B!b-D-fs~CSY2wU77KC+-tss9)1%=}wUW8pzs-~kan9Od8%`P7` zVQhTDRE(N1vDxm-cZ?uW1dwYo!7R+2K}*!e-TC=5C~N!~lr`QAx=Nivwm2SIEulMn zwu~7RkaakRe$I`~Oir(<*+P>kOPx$tLGBVrZ<0wL?==?%j-p3uqIO`e=sZWAU(Paf z^Y!YynejQZ24k@vV%rxhQ_U;i@KQ3(it*2o{_XT8Kk%;A<2VkIcAnVG4YsVfyUkVn z?1|Ag^}>#|CqMg8gBP5k<=sX4GdxBp<%N6`(H|e=s}^kv6zR z*h;AWW>G1T0XwoXD^fc3bYOUj^w^amT2-#eb!d%AThIhQiUXVI5xwI*AsXn`kx3)E z(u2wA+%9eSPl3EAmXfQeeCINY6uFr$;WR+G+wh(_E5^`r(YN)&ATMt`(WzMjjhWBo zA9yQ*w=ZvjO^L?dDaho;5dnQf+BqzZr4kd_3Ug=)x*#UlDnt&=zlF{fOwK`R!w<+f zR1!XHT>u$})|_0kB5y11eeAm=E7A=_^(@8*$trS+&NYht!=}>ArrS;7ifHkWC zxO&r<(DNXvzh|MWLajp=)9br|c@KGXJaBmde3Bw~L8PG$kLSZBdS!Ic``Sdr4%)4Y zz6E;;q6i_*eV`SgMI8p{HR!m$8_i3cZUENKcUUw4hK&Hkal8y$L#}*$FnnFysa*oy z^Jl|%;aF>#c3t}_HtL?m(AWtRFLp{Sgs)+Re>|g`|n<2%V*VQGEpkeu41OG%QRK;o*9aw;9*PC zz|axiHTfj?78Mi&5WK6+<>wkGI47H#)>01Wvl^g)`_0YYf;zB&;k9+*x^}6pebu!u zQWwP{IS%LD=GAvpM;2%+g#%S`^$ex;S8EfNNKP((z1oel$&H_jW+)w~Bcs<(0esVM z;g1wt&u1w0Rgn`Aqn%#j7Mxv<{(^5>VDEU8%_75=dfG!J@D@VNIMPxG+9~NtgI}JPRJ4`WNFC1p5BAfr$6G{V$>UhKck{A#ulcNV|aQ2$+ke-=M1k|Rq|i@N0Ml+1KWk;s0*%+Sc2H1jjSwB@neS(;SA=gO8MU|*J{wKS|A}h zA2c@&EGDl`@+18tDbH#^NJAgNJN#TUPJ8~P^kB}Q2U7+;tmsndA$DjaiKpv^g85co zEexHsAw;SL6HA^wepVVk5~eNAkZJlk#_xxRGRNhqA2_CNTPiikf`cIIYiFU+q>oL|>v%r86>FifX8HknyoROZ+mm}74SK>QamI&xE2 zViqc)i*P&MFZ7eX_=bong8fKJXiR2j-3e)P0GXn|Md7)CnUC*i6j@urGOxMY&8^ktiDQOQR{er3P~YJt>^kj z)&jh+;fG`4 z?d9JSGzq~Q@y3B7eQXDsa8R(L*p9*IfSGjB z@m?~7>m*aS>Ermj8x3!uD0iSJUxgY+6OZWNE(8$Yad-lmJwQ!6(>3jcJ;#RwX2`LN z*SB-5DV-{CML>0bVqm$ExA-X4F0hvnV2AZ;bZXlN{V@g&Nr?Owy(Sb9S&WF4vI`` zTgA%|;gD82AySQrKBqqM^XmJjk?Olat?x@v-<4ROnb)_Ji7T+erQx$`JXd{B7(b`J z2aV@$pAAJZ@p-H+JZ}2}?-~KDr8c(D<5dis{-7l_zK!`&)a5Zul$*=!2k;Fo==k0f zGB;u7X0vM7l*;%W%t+>&)rXJ9ci?R+Al0|XSSByttCWA}8h(>8jt1o4=l%}m-%4bC zo;QG&jqfKeinq&8KoVN$#SXC;p7C(|qpP6@xb1nqQgnGn(Zs}fR9*}ThrVMoD%N(U z!J~BDwl^_}^*Fnmgvf#<`>vHWMKrs=to?2fh4t= zFbYe7{WEf64<90KEnQXbJ%k=&`c~fH1Sa2XW2He6GG|F`qSlUTI?Rlnls&iuyK1l_ zku?yHx5sfpj@psZaMjbO4MyuQG!|^s4XrTDp~>)O!5cCI@dgT% zMK1o0XT?VwZ+t_aGrr5mj_;y#jBoLUkM9qs@ImUnm7lY zW6Sb3GciQ2%z0KHjOk7q*-jYQL-8oE)T5k($@>jtjcIMDSEgazxPyn|Wx#1(9otvy zQHJ0um$?_RHZn z{yrMaB4yBciI@b1=GI?i^XY|&#CzXl@OV)yz@3L;>KMoH37ZRBoNDjtWB!l9|TE9DI))6HH>;ogYANmnGTa zY*rWu9;c~v5vc`_!H4_M7ReYX#!GNU8qB`L#WbfnV6yE^Xy*V6d;xgokL^e>n0 zA+f#6KBwQ6rpA{z7qOp40Wpv6 ziJW<$FUeZ(*<^Z;QuG%SiA>QzKby#O!$gHl4NP_D{mLNyk&7`cbA>Vyts4=Cg8 z${6Q*80Ub{9RO~nX~w~xf;%2OP2UFtTZx95Mi-5?kqqn5%@CB`lhDovdfW&E98!W- z(1@Fe3G+pvedUeFot-XP^Zy_U-AKJsn;}G_j)7TtcBEhvQ83gHdlQD-Rz^dfCSMwG zB4K{21w}(O6VV#j=3Hfz)?byxm^=e<;8R?fLoeM(0FHK8NHRT>r^g?!I#@H;liv%9 zcQji6bBK7=f!-hxCFG?j;bF{NXI7(yrZRq87`vY2rbr_H9P59Uvi?t?am~j?L6PtN zJVBA~_=;lY5`a=ThJ`&!;nvZGC&oME2PcpefG6t41?7WBmDR;Km>9dR%tBqA8CGpt zTlx}`bEH|%4&sIV#Kedvi7|8{3$!%v--EAv;Oh`x>4&fPBEjWG8gwK|^urP~2tezT zkp%+fN8w@*kj#f5T)^PNyf^81WI{2U$@Zi6A>ji$l{;#earz7I**_45V(5I(Lf#In zn98^TfF)9{g^kw^;uBFKG;6ST>A#h}Hg@!i_L?2_DTNPoiIy&qm61Q03iJ<+sV;+0^>K zs&UsjYTTvNxJ#`u&@Qa}chqn<-$enBu$hLnQ0GNZ$7J-N26J%=)Gx7<_Rs9Y!U&EW z`^4hDt|GKVwXn4O)k+`fuG>27o*8l z0Oipp(|KUR=hfqc&sC>8S;C@VZ(B^p|G-T{MwPi|6WmOx1VD^8pB` z=XZ4%JfAytd`h0sDlDF^mJo~oyEa2UG@s4lLrT$?v^1O5f>HSoT7|`@X0x(;GoCe< zZReWHx$0cb9d9n@t8+R3{N^$%?h{S`4KbyK66HqPZF3_IHO`a5iFlkm=3cF;}6vk z{Bz9Vf1~OelsSAswe9+x+Qyx~-=_InN0;gO{AJ=(%=9>N43_sCGi=S6yL7z_=dX~A z?Z(-wrqO;G@6oAqH&>av`I&Q9nYz2iOx>NSsf#^ftf9V6*?KJ=XJUQce)%Ul zWxw2PI!lgUtsApnUXGdlW|YZC&955W1@D)?og|AW`Nty~Mc!8g_I7z4CgJ?T{jx=! zU)QAOSGH1g$%rN;>C-vz#W2UpsIYRW$uc)%jv-d5dDg{U;KBa6LfJo~QGcZxv2t=xNsU6y0NO30voq{sOV(`8Yc5KhZY+GZt$7AACu^n*{9-kYS zP|mOLijNO=#Koruj}ps;o!jG(7oTF{b98TPsY1DiGq#%=}1t`v;jDHyv|7-+Evq+U#8KJ-)^hpi{p0?0!XL0l3c2ZF32L|G=#&;tr>pe`5bL5l(r=?i zG`4;49iV5V?H%y@=3oa>c6|Ez>3?iUpPB2$FS3Z9^I08UT^+5~31kt$l&0wUzO3=- zd12Pr^`a<6&*kTk|4wtF>^`N?a}oS2=lY*hn$KM?7Ai&8pCa_sf>HTlDww%mAb_*h z4270wWwX4HqF0cdr(i{R4YC)(iZB5*D zOG=rJUus>soUmAmS^-0VSC)r-9+B7znaiQ_r=Xc{K$8bC5FvZR9!HSS+$KtL>EJ^Kz#-g=4+6iQWGgB8Oij<1jKK0X z1mKEbNqb+AK}3W!5)sQW6|Du7Wrlta;ebPhNYl?H;~lZT$KE1lqAW9qzeD-Z*}&U) z{S!|x;_s_wS5wirU?9E}z07qL=`@K2ifnj@%Z5h&J*3B=8|Au0E?EO&uYqI;b4Zm9 z%RvMz2dS{U6`nEr2kJ43Ld818zt&{bV+;eCtxRG^n6_XUM%ol*A3N9Ni~<4oVEYmi zW+QH#V>Ybbw>JvZeokI z3Z3PubOwa=T?}vPEHT4QhuRbZ@?NqTH7Q#JKFp+7DScMJDPr%iN9jgKF6*$DX4Kkl z?}WVv#u>=9@95|9M6NoT?0 zyHd4|uF$uc*UEa>AIYE>2jMyGd(1Z9}KG+3v6JKtW zJx>=bN~+-W&%v(vZlLJhz`=JxksUzW9jg1x%g`K%b~8mnYRh9Av*p1fG@hwgNTxFZ zVHeV#Ctsy&q`_R=^AzHqCm;4a`579mT!Ne_o7p$3Ib4uVcWv4QESZPb)?De44UW#3gK&$$1P|!X5yR`=D}M_3|Swt+L`7KqP=gPh_!# zc5cL_ORnQ4FQ)RqI3@x%gxTPsmqzLVgBM$WJMj@|C^R9_8vTpmC#gbe5bAwO-rH_Irkx1LER8wL(7Cizx9G_xRgpch~f{FQ4z=_N3v zk=8}vBR7)Y;VYXh1<|0Upxo-q+H&74t+6w((gvBxWT{*a1$>vx_D!1Ye`w1y74UUS z(QNoz;5Pap`vOYvP$8=Z0Bm$B0DN;t6~1GO^&6P?zB^KdHy2UDOttX!P$1arvjk2G z{wb^|x7;_i+@}x7I-lfd@7%KacB+g1TCtX~{+ZFW85*m(xT_Jgt8wDvYv+B5RtiqW z3zS~@zn-B;$9Znq@RyM!n}^q9gT1RJch905SC9aV0w%f6(ayXkR%dn|YMBtOHM2v^ zYc8m@vWg zyy#l)PS#ps*Bxy4UCZX-<}{bp8Y*$?y~Kvc6&1iWt31itYzkcHHwT(?p{LQwe0gr= zGL1(rJVu9htX40q$Ss@e{|O+8XroH)vm_u>q@qXRy(8!*QvT|nN0dOZ+;@ijS4bG` zMCZkK|~pn#`Z&i@6$$VUeTpEhTq z7MXoo01Tm7gy%dqldg;wI)_`(U05L-W^>I2Fty01c9GC7w2$(Y4MLm$vTC{GClrZX z-tngqC0wVu6EH6w5Xe2!Of!2Q9hk)5cb;f=^2M^)mksO9?DsLM%E~LrH&C&u*%Y}~ z>xA81Gdk$UIcy4x&kxMhy9PU)Cz`fnMC^gMdmttsd42>B`tr~n!YaIt`dc3SBj33M zWR=K5_n|rT%iJnBA691!t5u4~qT7&jAbWiVvUn4+(#Gyt@YW= zhfA_u#Xu@x2Fhl|Yv#o2?DM{#uYkbwu4892l*N_CF*PiLds z%=vi3F5e5Z3mxrov$$OHQ|Ob4hcA}Dt$2_y1FqbqG9HD--w&r(3%}|@^8RA(zuZy<8?e$phzj;qXNcM0n51xNJ@d3RKT1nU^`cV!2~aG2^FxW3YgAS;J=ju zZyv=0*{K57a}{V(3T%b~Xk<<20_Z=(EUnv$UQ}==9r<_U^+_Ph3NpUONGDBnozlee z9`Q{_+IMbmsk3i)N5q?uD5n!xgLAp9v>E-5mV(TcWUoa}8bP+W9-a0#U&A`1!yr1Y zoB^{Ux7i2-S%}t9r9n-rK^vNamoJ1SkYIq3xaRmfkiBa8Atl~ev1#!>vofj5rS%Qm zRZ%{tNLwdI93%9l?$2c4Z_C90N(KMB?AwXqMa2KXHq;(HyA9{j0vlamHH5;WS`g?G z=lI*dpbd-1v|)@sP4Pc9&!#TPux?7h1F)M2tkw(Cx?Oa-VjY+X;~Z}vILhZ&=|i^; z%(SXL@$4wl&9kstvm2J#>PlF*C?G+lw@PlJ*ihD#H!KWP)F-XG8^M0Wx;M7!Z=V8d zPcN)J<=WflD{D`eZe4H2+T-YTMy24bSjKO3e%L%A3@hV@1@lbJ0=gG2F%`@*!xBEr z%u39x*#ZmCgzzj2L$_M)Dmnb5hQevGo$_B#@kmwezHhOE_F5BbHrq$4Kz`s+=pntV zYMDm~IU4g}%KF)JP9JnW|W)+(Eg_Y9yFu3wi()SUEcLLzmC6 zf<^G4ZHX=0t(-a7HL%yN z#obdrtUU1!Rv5zlp05b-BL8Gv(gq|_d)L4r_dq;ixD9=fRm!n{DzFNH1eGIaJR8VX zodr7m=4KxNA;SQw3=55(bL%pEbjfF1M7JLl0c4}4C? zbp1o=mmGFw{J1GDR$OGtz*TS72k~d*n z<9$#Oy>cJDFt_AgA5&E+``%3WM?O;E>vseEw|@79@Q<7gfB6{rJaUW=q!%8ex0E&D znF6{!EOo~G(^(n1GVo7@O~=|th%G=b1YXVST$YPLlaZS4|2z3HbVF8jOMVE%AE<62 zk`^9LxXh4Jif#>qz5XwwryieWnU;*|-PM(q0J!`Um1h!QZDj;yBzHA3G59>292VP@ z&%4I@*G1wj^&GzV7@cIOPO~fIBX7g#{)HdtFT4%AoDGMb2@FIPYv&7UCbDr@{DY#pN1?GM+;?jnT4KC*j zbJOMq09P#5*GWHXU)&jZ$S9y)s((^fsqJzKW=VCo%yqOok_9EEmO{47#+Ls@6I>D; zufj$xAWan>3?_XNI?5Yc<6lPA$m3CSA7DtK?q!;4S@RZMC&6$@mAGCVBWHYOy5Cks zchRH`ztkxH58EAm=o{q*wLi#Ni)Kw>w#KI?_Y5JEnOwU3BiQE?yTk%5-9qY4`{ROr zMWDrqyRuZn;gR2YyF-P4QwqKf;Rl<7{nIyGM#{*`z zKiCd~BX4B40pc)mTdwE#kEJ&8X6N1(wDL4MV{}>u*%Kn(<1fZjnx+9@)${z_WatuF zs9jvI7`PBlY_*MD&StQW0sJjY2Kn@I1^!ivKN+#rd8`FBj9CC)$6_3)OhEexXn3Kx zIGkHQ8mJW4q91E?@Qgl@F|5~ZC_u~XYDZsSM3mOQjnZh>>FE19S7fd}Vxpi_al8{# zJgn|~Cc!g+F(#(NgDSRPJP_l_96FUaol)YnTH^Gm5~oL%(5eOWgs3rbd0eYzH$Zmn zX!v3Vd{Kojj)E_$B?3|7d?|PfcQ$Eq9%#OeV2D3V!w`R{zz~0!34@XeMv3!4Q!nT{Vovo#o4{`vD}g1TjAogE_k?R+5Emm+wgi`~8!7wmFcE+{>V=HvdI@13vT}NR7k{(3yxl|>huV&!V@Dpqd09cwL1DykzP=5k~SRBsQ#+R zt$g8A*I?Y2gD3i~d7bTuz9}-FRxk7fkNeSok&%7G-A4Irxzf7dX()=KDLg$~DTY@W zx{LMLi-{Els|@}uSNMK?;@{bc==*}>#5JG#b?j5&fC5zL39Qm0D%z)_)C&^~1Ce0BHF7i9F7w&C%yL9_$D1FwA;j z|BEPG<^0HZ8M{9GRd%-+{+`J0)`!2RXRxAu&rlNRHo9O2I6rRs8=f;Z2z~Y4rF-=n z-t3&Z@Z?bnlA*+zWO9@|fNB-=D~wL}1FJ<1dk~Lm4E_o>1$LdcZbMMc9jkLFOf>7< ze(7Z`;F6nOy^ zVq!=rGt>%Ycnp$V&>;G+XY*|^i^3c7iy-fmVzz((TjBYZZdaZLNW{KB?6G#2kt!vEk<}vsHP^%P7wm1px{Xqs4x`-74$sGHr2CK1 zz)f-)15tf=zA0fxHDTbSR$70JKwXFhB5tj7hqQhwq$Gi0XNO(rzbhB-Yq~5=zhWNa z_4OvUlXYC*UC+WZ0D#s>sb} zt{kV!*7P-g|1%GxN&h=!xdVGeiY$RgXnbDlPjmBgVYyv$bH4P#I#)h?gi_6Wcr78_ z+LP47rJ;2sJG@B#yK>9u7>UTu??xkP)X z?`!aHhP_h?R-?mQmmcXV++YmX8^ZI�^`><*!RGVse?W+eO2WkhY`~sD#VFyhf+j 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

    >9O~wI*=_mjv_y*@r<@av3c> z-;EWq*VX3FnlR&;6V06kp#hBcf~k~BOn8CZ8!xwTM}un%(Wt#r(_U8_b&Zc8%cji3 zARNykG~38afV&j$qzZpBww?Ox#f*%o6QOKl#~&{_Z!zQNYNJ_gKG)@ooOnh&5YCx< z{`xph);=Xp0)`ze6RQB2xzVeoOO^ph8i{Us1A_t(iR3~IBo*4CXn zQ&0>Wp>;x@xpd+M)HQC0mVGg>tefBZmff`LX6g8lE%xLX765&egv*2^Az8*$IcpP~ z6}bMy$&ehCM(HOSxZZ^G+QO>ASZNd+nqwhtDg2vB(qzt6o1LlFiyKAk68QNs&C#pp zsED3p`Gb+uL+#hq>A>}*P}Z+PV63i&>pN`H%D}+ z4-X&c-0oOcyBM9FW;ksQ;G#6)KlqSu-%^YA*Y@qO+k0o<_PXcS9gA6%b)pj|089{W z&d3Mn%3%R9V3@P?lQghT9BzN`dK#Jf;$F5tT9Sj*Ls#dSCeFaRxgGTE-gOUzQ6|yb z3ApYu3b3`?J0DmVIIkB5)T|KktC&2j_|L1=~CS4d1u zLVm}Gm^@ZCM%qJA74+*4Z(!JFx7F*2PNY(=kUDuJkF8QEPNL;FfhpMIL42cMwAj-) z4B~_#^&w=4ICiGc@kl0#%@mA3e<7!(!jMY%01T-=*|aQOg)F3EX4^OcTpqKv^+u5s zt%=XSK{pfz&79FOjmS%@-C-?=9nKiw4E{j{FMtOh(~|TdeLOgk3zISD@J=?)#^)B( zG74c)p+sn&)K16(l7bHw3?s;H5JL!=$&3P?IS~b``c5>3Km&u*sQ@?`9^FsYm9a93 z0iTt5bn@IJ2c&xP!aO@WF;j)58i%DR<>ofz>X{|AnjXl8zcK$A9sz7=X$$CmsmX;U z-qDfChO(&>Vq}Ifv^YKG^o1qmr@ywM$R5&Um|(hu0Jc_RyL)Zn>`Ea!vz4JBFrasP zb)`BUOQk)imzTlUAbbcE)H7yf!68HWvDkX(Q%2fCV(L%qiW)*-sbc;4>w~l~tooSM zbg=B2XM!x@9Gf7S6U^oeN*xk=|Dv!80r!rW!7BH_)Z;k&R=R#n8L@^u5@m&;#vobs zm**g~_WWe|JQKvZ0Zs@^))tSyYfM|^$op@PNO)|R;}xt77=$Pd36C;TCa!fzzX zW+Ard>0VD8;Lr!fX-{OelJvo6{dGH<+I=UA>CJNC({|v#r|Sm@tJvV{^7R2FNW5=e zT&@V|D;e+F`hom%0eTJBaYE-Eo&hbPONAUro%f`6fOdgt%q;LNtzxRM%6KC$QvRr> z@%JdIRQV1md4^2o6!5BpKt4qC=%B@GrmH-0KrR=t5o(mgb9@Ytw6YhR%9%MDa%`Z6 zKn#o^@Ls(*GgO3u&M9yUVoWcbwZ#Ukl_&L6%oae9Weh_|SRu;3(ymCZdWI>*Y-!eG zR1_PHD45UgBQDrOutIDo0u{{HxNMu0Fp$!ahTo9sKoG-Vp=_pICPMcMeaWyekn`jy zJ8`C5mJjXs7SvAfvMVXaeXf70sE3CB(9|EEf7!Nj8MS>}qjSC=%xJC4WoA|w4Ztm# z@j_K!2sObOS7ReB%cXqCwYFzbkvhxQzX)@c5u1f$Z9)5|!}Hme_(TYPw%v<2GXC~~XG~TiyoKUMZj;~QJxj-F18swB_N|rSV~s}!)rbUPwYp2rvhX@f}KDum->m*%6B5q z_ncxT6DiVZf`?s=;BAYulbyBL0b`ik_N>U!DVLBlKN(xJ;1jEiW zI@U$|_Ua~Qom{o?R3=QZ4$FmlcAoMMoR{ekC2+;3lO#nFfDK(csmYrS6-o6p3wUf1WXx__qMqT&PiG65 zK5aQ+2~y24DjfdcxyfvwfyFC=2H2^;u70*Mf`a2Mp1Xc@{3TVDVcGCJ6aSV~0LU|p ziuk2ssd|PWtVv1HYUajNE(Q>&m$dqES1xo$Wr;`iZv8H1%}&V9OE*vk_lKX1bKA@~C7!Sj9ouGEw%vKS$KRNHfv+2&6C zRps2>0P279e&Grz48=1q7ydyy|L=G@$4D2xYceYfn@i6W@P-&RuzDS9psdd9r%E<8 z<=bh|YqvjTE0NZu?2Jn*CU(J2L49*ds+$GL4jSe@DMH^U{O|5h$k`b=*?*IwOD7~! zuJWJfLw-Nwbki5Il$o#QY>XEgVya&TVaQ^H0a-XcO`x*#ATlVw4P)wse0nGX+N_}V zST(Zt;?P}mCMA4~UpuLB*v!tAc>+(Qo~W7S(EMtld%}`snc27%$_=b%_b#lh0c}|+ zSxU~1V%w+HW@M#QtE*Mvj3Z=l28OMktu_zPQUTI_s50`D7=o-hdaOZ&tgun|5JP(w zH}o}Ik{Y_2GgJ~TTANcrewcbDuxE{&QOY&bqJWohG1xlC&fS6K$tbLMg3 z)Lb!;;A`SUScbXftIzB87qsW9RY*XTD0dZtAm3=dDjt@;55D6Ty#u|#oylFX1$A@W zp*2>_90vFJ&)yeuK<1{o^KBH@w&z0$(<$q4MBfH&<}pi>Gv zD=?uaFvoiua|Ct(&b%Qh=IjMG9>PsJrS%twdiErgN7eSdwYm3EX!Z`BzQMf@J(uro zUF!ILxOph19fEbjfbuul8~ekex2gIz`U6d7q1&MoUdqqeW2{{p`MsR(z+l&Mez6S3 zc!Aa=+Qz#=K3F%G_Q&=BHVnhZikPTg)fCJWo!h7Kle6NP&{sSW_elKq%46xVwRv1X zh&pIYlA;p>{zein0Z0R@$q|jy^NN_gbF?pDQMnBb-GG&i7tj?>Q+xFfG&c6HiUZ#< zp8K$cF-*0ePj4c}GVb}Uha?)$7Y4t(Q08}+%VvJ_r6&SD#^#C^)a>cj_5zA)v1{En zzooy;&N#G+o&qu1-Rj*^vLW9uq&EFKWn>tils8Wr`s*$%H}b`k9b@lIo4Ko!Vdc_2 zc~zfc#wiJI+t@Muigj+_Ucqucf|L?YI6SiJ>-Qesz#px74r2G?w3JgUqFlXGa4t;H zH5%KtZQFKsY}>Y-C$??w9ouR;dg#YwqOY0P5uv8_p5IsWl8Bfew{5L zD^-$cUETx%Z|<&Y$X;RX3N=fO@J}1QXbM2}ne>hvD1t4@tqw~eU?g(!hnmDN-$W0I z(;2|>BITY}Yq3gx!1wcZ`g*>2Dr&}*=GSU_stywDU}a&=rtCSf@cTTpNr@g6(4W=o zgyR0^{HG9pXRl2-+MIWtMi_vjeRsUmEd zSj_88t+cKTnx9r2F3N2KLI^9-j&FyD_1Kp~^sl6AThFm2!8pFh+pWVLclN9xCDG2b z^kyTy>+dd}97Df0;YAuK(dGOWaFc9slN@kM{N~n!AHMlNMmrZ?W-LO?L)O<6Qg6hL z@n4`%@b*sU*!Y-2&7sL_`GxpTU7FD&)1A~%H{k=mDSdgJq{SkTN)rqn=F3J0z9hl! z=yXxtS+BsOy^4Uj8JOuCoskEp|E=1itFS{#1p@*ig7-hFJ^wE=yn~6mHIvzlwu9UL zIO_N8pR6M~rU@*ZTVJQ%b)`nBgI^IL;GPFH-SCuks5Gc($q-RZ7oX4Wb8&{aj%pJX zbZMfCk4wx;U)B|4nJ1jCO2>9mRI)ut{%q^o^lL`R#oY+?ETFVt3}~IX^<(3sF>Ao4 zD=3kC5{kQajx|RNXp?);n@w(R?s(10g+8hTX&4`vY)p21$$ZU=uEC#h>&R>UF$=Cn z|J)w$>HEFF_9H{;Fj5=t%^9!73GoI+F|XDHz;g*aw{;Q&I-40YY3#(ju2k8}9Zuf9 z_4wud7e4N_zaQhwEY1OXUQX|Ksw@FETJW_2aUdx=(=^_KY#5tEy2>;=(h+$Awsxb)#3(#t&~qk+=xSSlZgWa|9WLa@F$l@{=D!wo;xwYBjnAsP$Afm6`)K zY&>`UB(KL$qHZa_V^Qn}z=^0pd@OR)@p;xO+G1EAR8KU}zisuV^vYBUAzjh$xQGu;|@i01)95fnejQ zE4uD^bodpEVO{#@iM_Oo(QV``9xcChz#z|Zn<+}UrAA~(p( z=eF?Nf}!nyTBbiddI)e4p$@Tgn#`oupnHcX`daw^_QL#(Fzj&}>wzTwtZ4ON`Bn#g z%BMhzO_t~l__-AOAEJA+xt%V2fr&sbH`@ zknXpi=7GCzlmp6}!-SOzm~x3*@9Dp`<(sV^o-EtY9T&qqX_9! za=0aIZhBk~Rr(&2DCyaLCKaRj)L9p%#?d3Np3W+k3#yHnNQ1|z@oN%pAhD2ZXD{pk z6p3z1IAh^z7%qNf$OeEqL|eBsXi#r0ALz@F(O3)&Pso4j+R{*j(%KSOhsh7Lo!m`ww^;Cz#k4BO(zI zfGGV3t z9TIHxCR`6VPKs!L@F6Gs`lRQ<#(Y{Q?)v!D_jZ8oM+@M7h5$gdYe7VAR9&uV^6%YqsF><^l0R>`s_)t~fDGd=2AR8d5Ipg2xYL8TF|0)@Td{($D~I%gzpum|v$X5Tn*ZX`LOmTJ zk97(BOI06~V~}N<-!5w$YP2+saoF>ps%1ajVULAaK+k`R+yC`S>Oq75Ykl*Mg#-!I z&|Q}Y_iGI#Av@GcC&)!hJJ6sU+krUp))@DhgK`bjDCcpQJ@9 ziNlU~BpHc9zi)8?m+`F?iQuK1R*`18oB#>MrZl54Sq>Q|SqAkMTT{FE9eyoW-;LHq zUxAdfgi z{NKmBkeEHcsI`x^Xh$lPZ$oQ*{;PadWln#+FV2+q>KI-4o#&=aQnc(Ei>p}Mu& z0he3z?0)f!I1&2KKjfXBF!j6u;70?~7^t))9z0Fh|6ydvSGvf) z2orh;D)jj*6qA|Eh=)#=QW6+LSKL@K(NlFWgl45F&Dy;<###fv;VS6dA#D`>-zH-Y zP_a+rzZ1PoGeLrqZPD6ds1NH67V;0lM!w)FN@|o(VG=hX) zj5zXvqy&vC-x--XB7!L3h4o~^#jxpzH1V|+`AI_&#B1Vu_4ZT?6tU=?ypkfzFA8TA?)jL``{H^Au&IY zA#_#@il@Gic3?4|TZyj}Ih%{#;h3-)UkD+66okjuhRgZC6fWm07#<0FG3R6V+kh}0 zGuMdG)|;$Y=K?Kyi`aGILs-_=WvrWDn1bi6HdQl=ja5#aXX$!W-fRR&i9SENF-v6X z=os6ATLOws)h`QSDL9%FwvBe=Gr#QYuaj4KvgcVUBI34da&LsA@A~$%`X@ixEm#+q zv21)PT5i-2q^>IJxZ6FF8VZJl^ad=q{*M&aADu#yxxbYfa3|GzxjtSg`7_kWns&3^{{pNVP6Do7|w z8vMt}F~ouq{_+`9dR1gfKD$q{UR*@-n@sg07LiI(LABxAcZm;X2tVQDIw6yc-U(O! z?$Z2gpf&Y862O8~vUru^@(9*B_O0iX2L%QJZA| zw)e^eA~rmm6$!+6-`wM=s=VH9KBens8~0zzj!U*E2HTcC?hQ4$bvP1ZN45q3jn!pM z$5PBeFZifxC_gsJUWmH?GB#A!i<&SC)9W|)DWHrU7b32N6ntP|oUFr@2$GLEWnspC z{Hn>?71!Zv=a4H9s^E~(`O3iZIubOQm%E!BRrB#U)0dxOH7z7E9Osdq|aGV;Vs;! z`?83rBv|}xPpHvg@65Nb5i0MDU&=Ey(^%+2F3GhQrDy9L?!G%6({LRtrRHGttsh}i z#>exxAhWRs5SO6qqWB)lrYn}9zgJ9FxOMIE&{}_FVg<{wQ6ZhPb?*#yht5?TpdHBC;6x+kl9)#mh#=io7unmP3c=|5<`AB$v7gs%M?WLLduZcr>)Lhh;m`&jcK#UtO-Yn@G z1z1G0lYWxl`wa@AW)3ePJY_26Smq(1Hwf4}wL_c+!BeN&^3&TW*@(w8jCYEpRj zhJOFX&w*kT36Liy@ON)bt%uSp)NC54U=x0HO@9~jl`BRlm zhi3}*2s`GGJU^cKxQ>>$t2WB-p^v3kD96{(lFfsA^h(>MRO2(bBxKIyB1nt>?yQv9 zTOm7V$-^B)54io~l&PW1(Z7&AlM1=;_Hoe5&1SE7la+*4-7cF$q=}CvGqE*(s;kF~0cN`rg7aW!t z{#{?jHCy(OVQnHz+4hNt8tZfMPci)4`M3SGc14#xPm$v;U0BHVG`p&)ykjb5B~;n| zE$^;ad2H{FcVy8S*JP?GCI45dbqlwj?XClJX@Ry=JgYCXT>fc-QsAQ)kWB#@j6I*Zb{SHu{l~K-Sd6%I;1R$zbfQrp)yq1L?{6ClKdKG8 z2zC03vG5TWNyelFL)lMVk;z^uGss`Euri~vOyO2?Xr9AxhpA?U#yD7N!>~|?RI4F6 zwRAGG?_^(yM1`(P$B?h2FwTy?k8^7ZkvM3V*vQ8fA)1DCG7K6R|NQT|Kf%}QYzZ7u z=OwDn3Z9%XmO#H=*7~ZV2_6V;L(l+#AV_JC(JX|*OYxtXg1$`Xg;7L`V}abeSBPAQ ze!()*$eK4z=f-t_o&!pitBI`%?4flM`v*f^F>V;2HvhtrTEl(D^MYcpvFVG2$Xpt< zDf$;_Wv0VrtSd{TNQY+S$+M`oNCvolEn+rra&N;E)aUR=w(lEKS~%w6%rD=_S)|YX z&IT^*jcAOk{CIk}M*47`g+h_5LEm44DpPWS$dPd}zIzh}AX@d z>@zRDU`?d|$jud20OuN5293S#a_A@^0fxc@aSQ^M{o3W(m#=vz+C6)Mrk6Db7(@oq3 z?HI!=t<_9Dd`3ZiosC3 z5hd$fXylz;2rqTKJ)2DZl9`H-peR%xMhf9g7mP`384BMqf&1r=e1~|6%IU$8;UO?nuCD6wGz6QMC(6oKvDYYtK|NVs89xi7Ci#X{9wnTxls0s!* z?OM|!4=n)pzv?S_N`M!0XV1?EVe0m}(-gVrRB0+DJO^=u&#{=tqfn1bH~R&KD2Ari znyFJ!LvzVIR|UQuLgXO|pjghb+Dd|Th;7rhjV1?U&c&us^$>+v4i#ytCEa3V1_1jE z5G6Z~HsWu?YOSK}P%X~l^VHPr~RUx zWB_xOeSGw14$$Ha(M@#EgIDc9N=M5sd6~gN$=0u~4LBzI(*SW|p(&$D(oY&Iu?RBI zpv7}6)%`KdJ)BWNm_pI3qIUW}QTa)P_Q0YOzhu5LX8G4kiS;l(4P8QF zY^hRMmYan0)sTVICz!^mf$er#m!jQ|f)=)xs;j1QC@iZOIddMkUdxT?a7=uZl^G}H zQxzQ%O$z0qHp1@Y{Sl#~We3Z8Y~}U&k~mE4oi7{BN96|8J*hO8gO~3LGD6mYLNtX< zEybFF<3pr1-E{9d1|CUV$;02-G$l<({BW+o-5@STNRCIz>8EhS=4sLfNzH8eHP1Br zwe}0nDx3}68!AYt;S^AMlh57Erzugj@`cdRQ$Rdfb>%0~X5g_~AVnWdRFrfOXvjiY zoV}CMUavxk4N+Oscoq4Nx05RWk^B1JJ+Up3vLSzc9IDp$19 zNOPEYhxpGsUQYRaRjD2xSMeIrgZN#_9K&ZM%<2jI$VPGg@SFg#(2@InIJ1ZrWKdXybf{U|q|dQ= zK^;|xpu0VVM(V;l$L@N=SgAXo)p2z7p+ufsjpF+{MC{|+yXi?>nd(eQx>9J~-V-5g zG-&QOOPn#CWf9<#n*s5Irb0GVq$nv~H+_ndcveHrYDwM4-Qaf(;2kAzW$4fiaVlJs z1w3RoI5uMnyJ@9KM)p?0Cx}T7=Dmru`j!L5uy>luYe?9rMj-&VJ}1sTnmRj4>p`{} z$ZHaU2n|hJNB5@vs=WO9dy!WsAj!;KNue-kH=IvoFLjOT+D#kq7F8_zx_vSPHuUU&ro>#zqEYp}Awi{MA-Y(CO0t0_eTf-)FS_d@ExKn%d zOmxBIFD!4~gz(^r8tE)p@B~w`h<1+gwl2yNcUC3I$OyLsN~+FaSu<&`=->u3@XMEA z$blq}y3<3}gG$(Z#i^D^qR@@1no`}(B;p(eDi+f%@on(`XgpubuGht1BO*FRT4k_n zyC!R6Yt>VSE(WZ^v@JH$9*^aBmj7UDHOQQT1rAKCrwWHU0k z*$^j7fZ|m*k5s}V(4wkb>?^K~78MI+bzo2T6WvJ{vSpkf>>7q+P|X-a|J!Dy1#57h zi~fiDMM4jz{ID!Gs^pSf&{4|IZ)kRMbwQhPu)1v`oDrD1h)MhXBmqs6Im^}0Cludv z23$;EJqKs4sXS-8vt`uJ=wepmce~|OwsL?>hjRHAx{If5?N8qMdhpiZs15NRR&NNI zHWQw}L0Fq}!!gKEu;wE?i_6)h_p;0Qd~?@b1n-BlQs!wrHvq~5cP z^-BA%l{0afSA2A0ko?&vyd1CX7n4i%Jo4;w;TH^8XGBmbKfFD#Wr>cbIQW!KD5Mvi ziBHO~mQx`dXXC$59$|Lqcv#jQ%E8gviv|h%8wRcOCg{8p9JO_T<@XxrQv9@zdsp~G zqIKj<2kOk1%jk^!XX32r+))=CWb}PqeEwK1&&M{fUT!n?Xlhn`c@~(6aSaspv?@(J z{ju&!=%ohJOSp$v*$S6Ss&kO>-s2K!sr&O*kx@4UgP4ZmxZ|}Ac7(nlHd!nV?s%sD z4JzYNYlJ#H)3=+%Sp|wna0;;JOIhhPx8QfeRPR~Qg5Y=ie`sYw1jw` zZC##PEYD3ns8QBB^05K1VhQ3>1gaKzVFuP1Vcp?dCJ*DY*tb{sKaVqCk5_s|)pL0_ zK>LZVbrEmEB*oo1)mpih6B@`8@B!%6$D%0V0nvmP)Y|0ME`=?*tC3)^A2Pk@2g_D% zp=y`|r_#b@0ftPQ1wYsX?$0sT@07M9NipGj#No2zWZ#Vv;x9l(@)=V$nZyFo$dxfO z>?^cgx%|E?rgx+p0ZcAY!(9TQ>2}s^NYf3(CTc8aB&z8WWhs%3@(3aSCf_>k&UMCF zxeK937h(@9CA4zud+_F^!#)=?V0-?ESy2zsNB*&ijJ`|OD93})r6&yt6p;;H{(U58 z5U$NHg${#4!Z^8-XZ9ORpkqV}@yt0Hfe&%|liWkHz4Na;aQtcmM~0L{?bCYUU-WRY zM2~4%#vA%In6udan=>XzUa&Ji^ntim#JOB?;8-QxJGgwskTQT!n~IFrlhK9o$ajAT z8W=o-y&_U1?a~n@X>q;)el*PGzj!;;g@QsWGc+DWN7;s3dJ&;LpJ$O6Hk@;T!H@>#! z)HvwX3Nb`vTAwfr0WgPbYMBj_K_d!f)|7IeLfUdkMIJFL9PB{Cv*40kdT(B;KuMd! z!N24hAtJh~!u3-7-jZ%X7ntO6v?V#8Zdr4$MBwPn&bKu%07GK|ka-67L=vs7BNOI@ zIN{j2^iJREFI~K@a`kx)|EEOxq!+jp0& zJ7gsruBHLwfWBZi6nHF}neVWBS7>UN9h2+w^r=%H7i%F#UZy;iRU$q zrbIOR=VeUv@saq_8rUR`H31PMc8ZIB{?u-`wIuzm%M?_MeKsR3`NF(TJzO=M8QK;) zw|Z$m4o)L`78a+93`R-MY;re)_AGv%&L-u=R-TY6MLIf;^_=Kjb*-M!6=OX$i@ z(U}EaBzUUmoR}g6JVq(ZJfrfXK%;3INW_UFKpK;2W?{Oeq>p?aOM8wV7XhP~rNN$O zFf|LFfeIgK2Nfb4%S9sfL~6c@sw^%a_?d^COL9Qt4R^R05w4ffXH8FW#D;XoM{BV9A@1V9Zoj#5x4!9@^GxDFn<_x!7jb9gQ;L zO^liT`W=hwPJ8Wkdve3x@3W;>J_D^kF;yNqle;wRVPUYf%7u`&g_6#h+ko_ts)WdC zo-#dMpE3@^)o+>(GS;!X*^_iA#8NH#MRz+C0c8L%zA>Zj;-1IDnhNs8G=|RSf}F+H zX-<=~Ikh1VVi9x|#UA;yqm}}KG@ z!vt|4j4g#ez09Eo@h5y@FB?@u{>!M|Kk7eLl^L2qLY$F5)E^3Y_k!epL2DGfd~fan z9&mj{H9|2jVxdXqaZx2SMbv(KDxUkOBW<;-80m& zv&2CiGso?7BKx`^FBuFmGe=ru(@_$54fj$h7+kEW*kd7Q7h-#Dp~vdcdKW7B3L$~= z#hm<`5=1U=h<4)nz03fV{kE`_3P`Z9P{2()U@)3VZk4QL4~-OEXMV5SMn!OYp%%Qz z{+#p%2rK(E`RC_V!|w|KnUa5#$J@v|l`o)yTv+LB5EU~E5hhH5G2z<}SMs&y6p7SF zLZMBmGgEOs$AhtNtV~QzyGeL6pr>09oHKY=b4?lgZB}5r8VQEWU$7d#S!~VWeHE4! z&hEBmzsBN5r`;Z3b9A?2y;L-M!&AVmNL^DkZ^R%4QoRO33P$=vq@1bqNgRx#vEjWU zL$WD89kIj!`sWWDAJWyY7}I@B=R=8=8qE_yWJjo-_f4`da6<`Mkh32o95oEElKAj5 z)wekNIhY-^uMYvKxN~xnZa=5>!HVf5lNL6TqImm(@c!znW#X!G^_}_*Z91qo29SL= zTH}QX?*9g2e8Df!9KmkRj(oDBeS z;=jS7<=dbywQDER4yW`?Ma%rkd{{X9JWrM;2Jc1yfBipa7CyqJnp5ozwiMCvg{T8# z-e9V!Qa3eRtja*zN}&@1xqceKmHv}Xv;LaE06`;Dgc5!TzVwydngE9-ZcIcpI!{I1 z6f~x1sZcQ;r}(@>gbK1Zn~DYxxS{+sciqLTFF3u^$8ziG;4d+eXZs5B%7`E}t4n~#fa+ zv-@NAcmDzBC2liln^*Q{wha+5-vLWy^TO)|7r+C|mp%ULTLwkA>&{$d@Ic2pq9E2~ zT;TzPLk=yNbPr1dX&RI{%1f!J^_C?!Y)4@Ewl&#qixgZ4Z#r^X;@B(Asr>AT>iwu)rp$iA-~?G;GRPE(QH- zx}eJb4t_9@1?~w0QkUuMGk6F6FAH%et(=e70`eorMKZ&KzWTyp?HDWWa`5zG;CEQe zx-}a~X`@mtN3V}=MM);VEJta*0`6vkn{F4nyEbGA03L!H=restzwt}^U(}{5fi>Kc ziDE*Qw}Pp2D@CJ-n5~$cbO!_= zJrOVq`#muzm}2LF^C=arWx{^@T*It6JD#q)ax7-Qxl*Vac3QDVe;+0(I5ef_2_<0g zjs^t+k9Nf;k7(}6WkmXv8KO3{JgUhI0!!sPrG`R=Z&kO=zGp0aTE|Fr7LDlu)K=>1pi69f&reO8k$YgK_vZx%QANJx{$Y@(Osy2 zNb7<^sL{yjM!xJ?an>Y-j_wc#_C zg{BsHcCjKaTpM4nohQuksdq_(m&asSt`NNg~5ddpqN422)M zZv~5vC10q>9*6TpWfu<*zCl62a8N>|UWvd3&#<1T;G{KN{mI8f8U-nZ(kzzk$Q6w= zS7`9zG2#(Mpn!VnD`zHBvOr>5N>7bu0(AYB^FQIWw;F4i=K|m{t68Q?5+f=eCk%O= zAG(LpGxs>Dr%M||vUq#Qa%!FhpLl|)M-)@ik^a9Y+}me~xP8`h3plncmZ9J`_c!ZF zIYya-%-x6c++rg^Uouau(ObG|+jSo_$T9cuuMT6a&B*pVTTM3-M5!@o?vye?|J8Do z(dzX~lKp5E45YfL$*^DIDYb@8gD1B=W1_R&in(XB zqD!Jm3)MB==1+3Ku*9rJVgbs@7y6dci)D85KY-o)4XSeNoU#b)afCovtl$L%-kXV) zKe=l3IEU8B-n=09OGG~qj$~<5?5hi}Y_miHJq;4rN`;y66%SJOU-@c*E&IdZt_nQF z;sN6@w+&H$42SHljoqKvzeChPqSQwBCOv7hNlsMVS=zZhx*$qr8Yy1ikj|P(pkzn^ zX0cMkK2l7g8BrRF$3UTBr5cL;!;F~qbW!t`o^Xt`-M?r9Q(}|LLAsW2!=}edUSqwt zvQ2sVNlX1v^{CX(T(ymqJI@0bV>0*GK~82bMa%_y7*e-bft7kRFC?owzky9q8){x` zi${aD(~DT#P7V!54?5z7td$;c7Qm$xsvyXbly`g|-q+}zA+OJXbj52&wt+Qw1f$}L zpEzZ}>a5v?IqF3bP@<#b961I_xG)e;qOvsiKgj>t#+|12_51a)m2zGZx?VA)EON7- zw7Kwr&rP?GtOW&#QQiw(0UaHSxPduvSyeMm>K27$>DB9|Uhe~I3XVCtbGPQ&8^I%; zkl$o!F4fvyc|fyhi=RhoNh0SZF}Rdku8nHi9$sYkU9_UVD6JU>Mc`tI0&m=Q`SZ)@ zR+6h)?l41YO*z&j`@bj6)8|6OdZ75TWzWOcW#$DT*HUV^@5OSLBt!U4*~KU-3lG@7 zwn-?_{RMhkpSoGo{^8x#-Hrc6`S-u6#Z$Lqi$5rKa*Zvmg&7ULbJf#W$)as{#Ittf zo}zFh$e!vYBpJCGuYP6%0tvod4IKE{4$Bw6rGf@Jst*#Q9!m!*eAoe^jQhulHmw(iSs{96SWd9=|*53|?geb9wrFDAqZ4F<5z& zUwx;fFpbC?1tkn-M*yef1Z*Dok(hAh;uFMS=#9ys7oNog@1u(be)|SX!KO36C>BpN zi*%u89}6Fv`K%LEnktyak&*7w$Cr9dq{FkZM>Lgj=8Bus8D*gmOGx`hr<}KMso`* zCk~&w%Rr;O)hGEwam+ey54AS)G3f`e<*w10E!IB1^P-ZW8mo{vvQ_X*??+avPPX^) z`Apnb|E#TqF7s5X25wxk!sT`?nV5E8W#45tl#PitW6@My^Lapl7 zA;onC64hdCC@Q=^uM_}ko=@3J*qI2S1W1Me%?)BLN;0A1jeisme4fWWvmv9U(pv<1 z2Ey#<2_FD6SWF*;^EJ-2)so-RM&(#YUzvZskoFyE#gSillinXJieDelA6<#)SbPx{8t!Sr&9}W5YOqZct zd-n%36MFJLl9(OU+8TL}nUPjGrWKvWYCcg=FSxwIqufLgW2LUxnAzeIS zAzFl1m&k>^6X$QY7b)t3AEs5!4S&m!Sj7F4SEOi3x%d9EheWLt3t4(+ES|%&+x%U# z^01{lM2`ux8Tck~%Y%tn$0??7hpH@L@0hN&qwbir{Vjv$wtYJ05aL6WjFn!VUUMpQ zK+}`^T$>^oHn={R0ytbz-1soaN@rRAmr3PsLS3ji)!xa^*96J+Sz}n-L?@5>n`N|; z`kRZ|AZ*=ZEA(@XUaEXnvvWw9KcweZQZz3RA4O0i*+gI7WYM22#|F9yqYJ7GCDa&_@e?!Zy#e{f3QvI# z|Ba8NKWd27FD#Zi%7TbT8I7cJ-px&bPu<>vkr%}8Psk`P4V_hk;rYl~W#>Bd&F6)*&ldMjv1j^w*_g3xIZ*7oGcBVnp!F8jX%ifIz=~{uRLUcnTq}kG) ze_FwC*Uj5;Jo^7^7dotSBK?l+5}Hg$bY&w*C!|@CBB8qgVS@)!mpz{1C2XRMeRu}M z`UM^S{jFe=^;^R9wxms07K9`4B~sFVECyYNdF+bTa(rn;fEp&735QTZFS9_DhTcV< zPj>wYQ##xulNe(0YliZq-kN$KgXGLZTY3Wr9+Dy%AutJwi8yOq?yeiINx5U1{^|l8 zTZ@BJPV{4r5*or-;qDer2ldG3SI?_$H&Tlu?#(xGlM7NJKbKNF(EA^1a3X52+UoC! z%YtI9w1SO_dWrv>hM6SK<(OCu&8`|CuI8)2zYq|lBHbj5I^$x#@)>7VlIMi>p-{9G z1k}~sC&HwS!KVdla|_zi9p3%NO}~<)^AgxB5M}F;V}s|^rLz1X9Ac}3bxik%h`p^e z9?h~dEIhEk62$eQPu>m8Bj~glzeX6e1W|7u!^*BjxT%`GN|ry?mjky`pB=!F_GDWF zX&Wid%td3sCP}*PJ&y?n+@)Q8ns8 z-raIB&+%bdUqX}}Ty4K+)-+F_;c+V@9TJlK9!l#8X&=PIrpf-iUCKdx6%Rrg`h=^W zfN^t)#L1xs_6mzckM?Gz7VpDXcFFb((<1ao=c*d$Om1Sp9p@+LrZU59)tUICq4uFA zr6Q=ro1Sy-^D1g8!diF@c_5!LERt43B93<5as;UVB8~|;=r_hui{i5lo6(efzM$h2 zB3Mq5Oy>zvv`J7;-kz@{tR;}{7TkiBn-CnfPyGGI2w+k-&VSGumm!5#i}`AH1fJrx zv7QrxxW*q-b5Y=?Y`6O%Wf%5~PQoQwDBR~HQen|Z5A~_I_V$m^ZqRG(CZ9A;Xn(xnLuQEz zP(u#7WDNe%!--j2L|T@S!3Q6;_j=;RZX^lHi>2`CJ~jr7IwfMByW$9HMt3OhXQ3%O z9K?QC_LN@qU01G_`{0+Y&B;B;JIIw*ufz;xZDpa(vT_Vxi10n^Ny^_oB2{gwi%1|R z86H2)mhSu{wI=if2&#w%frB9!*sZ|W~m-SbV5m#Z1@x4nY&$hwf}+ILzm zB$PbPPN(9um707=K4FZ7LU_4louJGGFSGdf_?bHOWR?4H5baMgWRJGFWzd;8K~JwS zRxj^&tw8;2#2@FeM5mePQ_#ysMhOOH(*YjI6Ixe1qybpEv(*NM`dxs96OJ|2>02on zt#6Q<%XLz`@2_;=W|SzX-4i3VE)Gmcwa8*@+3PwUY0tFV=sDj~FP0=MapDwg40acp z;+*qPErk(@AAr0f7cDjas#=Q6t82Vth`~;hqRmhiB0G_N6dp;3ptH`3aW4iNL?hC9_TOn)6?DE}?m#cR2>yOnu2&D| zDR6jr*!f$p&HNU^aZ9%1MMqISW{2Qov-?lm%X8$6nb|{*y@I?gsaR^* z$0VthHz7N5J?EIAWTMly3eI*?AKM3jW_jhFoDk7}({ohN$k|Ev*c>dfzD!5dJm&(6 z-tza~`~+mJN>eW1tBP};pi^F@lY;r1X4NUac^ZSmfMt2ODA1GaW>9$u=q}V*_-(Ph zeYKNbKhBNQ-iHJ5`~4d4S%1bL3I<1Zn%_SAa`qr&+53cLLhss!oBnIXy6Jo*PTbq? zzssTQTATR9n1&{v;`2#h$v^vF+cB<-SDSYm#FYNyz5Ul`Lf#*6ps!ueo_`019uh7< zrg$S$TLO3$Ytf|Zy6)~k3g3Tn=yYcy(k*h+gz>uboW4VY|LdOO@8^BwN&2GbmyQoKGS-oos+&azYDUfILD{3iYIA_+$XV+x2m;j{8C} z*?ve>+_21Q!_Y;=^AKaC!M{$yrHIAAQ!h42lQ&9=#1#y}Z>kL9CniKH-PyDKJ@6~D zarw2?xX!vVd848KJ7dW7ug7SC9>UUD2;LK9TK-yXy>_?Q^poPC;KDc|t zzFH_Fyhs8*XBWPCtY!x^1EYQBXoX$3sOA8ekm1dxG&QzSx>*EdTzCE)SlHTanFVRJ znMO@SQAbW{^hS0I$(@V6;D>_S3KJP}^d(2#B^pIjEq2o)Z8GHJm z&$@K{6t60KYRU7)v`|!jrZGL-fogpq8Q!4akLUf<`9USVLo#@uZy|>7XSv7-$zT0Q z5xuQ1Ri)x3n*y)I3{5uT(W5-W!%gmG((h+Q{l42o=)hPa|3}W5jdJ7<$4Ewv9sGv` z!GMiR2!wP(5ix+-9;h8`nLbEPNV_iZk6Vivvp9eAdNw^%6PvLeO(sV-I2$&_(oL1V z5G<;Y!0;J&g;rg*?hNAs8gBnueGrKlkpicknJqj%jp6s^^z*74d&Hj!ow~mXUjnxM|q`z_^z{*51rrnd2YlO7$$e^YB>l7uSN>& zUd|(qq-|MVd&EjS2tz95e1LIfJMmq;L-16FuX+-`0}_q zm>HtwF33;Sl;))(2jm_NiL#!Y*$@S}eSrY?0ywLlQc4J6aV`K;>~K-c=7M`~Tq6Y& z)b_=Cm}1;7P)c05C2;kzJr-*<-~#UKkpGk+lbmII#_zH28y88AZ(4+27?@CTOi{_k z_iCaNZB6J&7WWkiUuq*KB_^lCtq!!N#1supr)k3!MAcii=m>Zi&-WvWK4xTq(6#ZB zsu^Y9Knv+vd`$pvt!BA;aB>L1Y}*IV6Wj9KLSxOnf^p&#r{t%L%5C;RwNe%`AXanq zs9T>jRpz+kxYI>v1-0Ezwv{S1{)Fv443fMaz;Hu2N(imAmaPr4)NreaLohH*0X@8^ zi!(lcw6;2FEUY*1oToggG5@Q~fb>8InM1}axAmGtq__A~Ykbd?{s6}dC$CCuGdi&g zOmjYeYvI^I7Ejh-4r8&LQW~g&|8$PI+tcb+;JQShX1OgBARol3pY_BpmbW!+jQG@8 zNTf0wzIQ4(QOJp|$j}6u$s&pMZn|MzjySNGs>oa}qV1qLc1@3meD}KNj6=t;*qOv$ z3>*cOT}csPI7}#|c>S9rYD4uU;r!H~vjNr2a~Z0hlhN8L0g4WOffS;Y zSi>fh>(|^YyoLC{q)k4LU}p-vsves+IvD2-d!P>C!mTws{ym)#zbFy2^M+)ee;&d( zZMLkIIsdY`erab}HK z(KnaM`d}IU_I{w6`pIA$JD^V^Z^CO3D?^trisXDYCg)Tjv`V7jKV~&+qNROZk@C)| z4z!L#ck(+6uFd)78FKDo)~?yMV>1*zx;EhQG1Ir<+3)SW+Pl8GpWn7PUGS?t_mtQ- z^TCZH0KY|TM3zPJw3l8VkI-2oe{HEuZa*jeKT5NfwO{!r%ox|@`+nAdVIwz!&f>oc zaJ52$MfpW9Cs0@07JJ0w27gz{L{09>YbdOTi{Y!zE|8hAxj*i~7E8 z=iYi!FY~{ymP1w)SvPcag0c;I4Y$hn{$EBT6J7lSOxBl;M%WavZ{xCJeU18Uk;8s~ z0AAuEt4Soey%IWd$qYSm(AT;0YU%OXgzE1zD};{wz{W-l=YVpg|Syv23eJaO4Z#Hr5?hnnWk{p$E~LIiR6y_w~W) z>FDwVT2_FwEJ%w^xzl4dza8U*(nod1Yh-^aeJ?%qSX=981AsjBOyvL>$uP~AwEa?0 zKw+WJ>`-feK#gouv^WoE!wP9=a)K`@85$|>h=N#Yo^xW9$0^OfsGkZZk%OR*&lFT= z-YyIL1QkLy#&^Roq}lUh1sxr=M=!F#HO{2(+XbXxo*6mU$En6x;>{)9mh?)SW40OapX%&U;*&Dj> zqMzTBOqq;HSk)fXsBe{;iO18~{xZu^a7VTEm_9Q29yNGWGyj*?+*E6EYa(JX4AYo& z>^l+a(I;WzjtwE0I8Ab)KV4qNTPs}#_&!z|+Q0l)i*q8ogi9-gB@K~Us*2Q*0hf`_9Icd+DhN3p6{V*qYF!DRr-Jd3M52T9bJf#>P?q#L$2NSvJU#)7J!ZJ}n-C-ZM+$PdBvpYG)UJD? zpeGa4?E!jNrRNB8z&>aOYy9CoojDEe$)_**cl z(@2{#9cdc@UyyEd_7|~}qxm@EizG~mhB(3oAd%bs#1Yu0Tw)o0rz8mJO!~pV zQGviJbG%}5D`lf~vMx=RA+opGtf{T~bn~<{l%ba-f-gqpb?)3^CET|AL-t$MjS8R5x$V0{;ngCxg0i3*lZ+x3%Ars%9eGEEH@|E%p7g)>C`+gG2IXFJJLOt)kTcdRgr-*1ku!dxkP9}1BcT!&izJs-nj;`n%Mzy+;!0?JJ-L$YGLtAOk zi{vp|tQPbo%^#PzevxMPS!+38xR`^s-ICSfEecpLmuSBpS_dv9{J7Q}#&NCke_44< zPX~NwmWFH0{yb=vg|fIs1F38d49Ul0S1?H=sm&tI@1%-=L|9x^8WMkWh`uEGwA1oA z;bKrM-@2JQf=6+w8#vXg0st0)te+i^+`Z0IP-1R}D{zcO3znZ$6V}jfi5D2{Ewi*H zj{S`43zNTIW|c+sH$>alJrf%xW?MBKa6efws8z-6gPs3<@uZ_}~7ql)P{`tT1oL>2#|G5~j7v#H@7&lBcfX;53 zFWk{B*c$YAKP9nY^q90*tyI))d)ivI(k633WYOP09~^rhPi=WJ42E;{nM6tbQHnQ% zjhQjEV$_Lr{3H#NQ4hhVNbxXSi-0c`02MLBLRuRH<^#PEF=}?%krGlRc^i!>)4e#k zejl{KX!Z2tNSf%GGM0|BwlHR1e#f}nVClLLv=y0-di#(2eP2z*X@tEW9)IY!^g^*o zvA6=4-yrchMYhx5qcd~S;@}VF)@rS7b&gb5E4R|hXRb1C*`VO5w4!g}0TGYpQa(Dc zf9%cKfdfkVYKxACviopVguW-=rHD@mwujA?b{$6UsRMfO{gU7+;Lc^SCT9L}G(OT~ zfmVyDUi=HT?r6;auEb}l$e2 z3Tj#;I~vqV?RA53br9cvT90n``E?}?C4b_|0fIeFzaORACt>%Rp}M=nSM)bgqBNS3 z09K$0VL~@4Yk~^oxI}>kmID{;iIQ3y6*1)Y=DsWe^9M=YfVO8`B6x^z zA*VS)u(20T|CWN!(&;clcVaHSqz&x~Up-%Y0TAK!NY%Dk_WJ#}^8(hA>$w-`a0Y9( zp;1(yPHXW8Gn`!!F0KEKY09Qs)jg;$iT2YF2F(P8!fp)9mN33wELNwrL_CKkP{K?g zA1zF>$6Bw`d>DQ?AMKo;9}VEq74|l|=p)sQs|9jA2imu<-rdFmSZOh*3OG~;b7iO~ z_E7JQumpXL%Pr{w1_auzwKzAp;4=x_vEl=R_2*jpsH5NFZNhcfxE{r8RmdfZ*KoZY z))xh#$Rww}X)cN9dYv+CJu}oL86&pryve%Sc1Y=6urcGT2=Xpj><1O;#N#W_trhV<|kz6?Z1BA@2?$4H_9J4kYd|xnA6&e4%gcNTegB*duShd z8U-jM2IH=E6a~Uat24N|FopJFbbV{W)~sz$Cn=}CAIHFEOvGPjicFW?+#L?lhz6Nr zK^vQ{m*!Nw;SN#dd}LgcU)|*~``EI)RR)9=FZCWX$&s|2HJj4SSWt!Z=uwdBhU9lg z>Avt%2|hXfPWwJ2+}%lfb(l|#9YcvZ3SDviQragxwi3Vam4Ly?;T_60-Em!Kcg7 z<=NZl;^3F)@YBh`2UNegzM=1;qmRcYfe79EBO>&#uXi_#Q1R6pd6_FjGXY%)u^TLu z>VzF<1mh-Uq=>%bY^F}ZRFz6}?^iCe!N9+xQ)eCGR#&w+vDOh>(u+7xsos@M<(T+o zT+J%z{e} z){1eO`ds7np6Rh~8R-=2{|X^k+(yc2iBsA4aK~b>OJ@)O*0{Gp=E0^sYu{{<11jZG zF6%%NU0_0QR)rmxDpbXL+6UqA3P>;q+bdSDYp-92F^?a7Z8_B|xnvANt#W7>Fyy<( z)EndUoweT3@xbvX>v}OxNm0m1PFp2>>7_C~TE5=sf*-bfAi3|kRtfa#ynLE&(^<&4|E&7A$S#|$ToG|sVsJ0k z(5DpMEVcH`(sH_eULsB5&srGr&*4HGfV|l_4EpU|e!M(E28_RuyJnr9fBfb6`sQSG zd3f^aEb8e?fJ~l^D#!>LRKU3XaG?O(;+7W(WRc3Hc6_MDvJurj%020Ikh?q@vS;IErluSNy{QcF?_&Ik-$5OrE)=#0pj<+938P< zxl>!|DUUPQp%=pP+lXY?$wjj zQ3?4Oq4Uo(BCXwAdyg+(xf?_LSv|9)%cJZ$K+Z$aQ#O}MYdO}f)I|`7ZUsvZ%s%Th z39U8hB%aVh#;z8^^=fn$Po7Ijy~|hoKHo2> zRGK3YOtS}scux8dub=8t{F?;8bzM03gow0NwY$+TTvo}zp^gLi^>N!tn8-bBbx5qRz2o-+4B(HL=L&d@`}F zeCw$9*9eDm<2NZ#+aZs3ETQAhu{HqwT%#3sMr6o<{g+lGY~-2F*H&LqAsCX|PDNFi zERegV;k$RFlK?=CPasn4t0W(>3xV#EXu1t#`AxOfQ%pmU3GBIt@Rh=n$HU`n?AlaW z-$E8qEcI{7W%8Rq4zi*N;0~?;V#S)dqFo(MtBW#n@mDdqu3{DE=9-b)l^#q%oxiXQD#KD7Us+{bNY7l~_tsTm6vsE`P&t_n>2Rv9Mt_Smg_QVeewK%BzErmvt~ z3?DdjU59B|eA?O_@i1A0{?rA+YsWws*W9M<=y3StK(Aj&DL~({3NjE6{4s!<@o90Y zm6IP1w1a&S^ssQ4;9l=`y9npWHS(RarVb`cOi6*;_Zh9fI`9^dzHo9cxLld8f4?58TLKm!9wncs+t=aP(J3x3YmXox0!5#&yTz9| z3qy2a8oiX&q`8AVt59k8G-8hWhdk^*>^{R$M?u?4SMkvgP^I^2!by}t7jTjNtEgF)Nt*I*w*Y0A3&|^jX^_*eSl$X^7imMUDrB zilz#DZPqKNr_=Gat$?40ke3+)wfQO`6qlA6w!|=xSsMYajLedSf_kQ1ccH=49skzw zQCP57G?|P&|Gl<4=#)U>3H?7Nw1L%OsEyR=@Qt*C#Aw%5%A z(vLnJ{PL2{ZBW7jfj9V0N)#p_4mMIeAud2KZ{Q@Y-6P4ZdsbmgE28~eEm*?R5L)3d z=3*_emXBjm%gzLK=#n8#IsmjDOTOX8_o@M{8_pa9YmGe6Q9<}I6y}&IRd<8O_e2Q} z^^+KmNt679mI<^N)4*W^MFJ&lghp}YA!EEnq#G8iU9(Jm6$>tKN>qU!1(o#9l0nV= zG$~1oMf92uk059*O-YORx4_$?Jyt0(8?H-W$7fPO@6+mcS_~#}5?qFS2 zsmGHlzk^QZ=qy|(`n_>26WKS3hiMl-U0c4$)z1809CB~GCqYOJNNTd2OZ)g9@dtn+ ztaFf~f!zp#|E)pH+vFLKRh}?S!W*^@**p0XzhhppeKC7CQAZN)==T}y5 zsixg+dM`E0-UY2iYRd*eap6?cNlxwFE57%bbBt9wT0V}JaM%EoBf{MuzYa<|a~bwd zK^L#VH>KoW^!mXbGh=HZ52Vb9TpDJ?f4aEV#+{afL%b{rig*dHziyIdh<`b0bs($h z6LD_SF33r=*dl0@PL#J|r(do0igZu3r1#QsOJ8-_HFoL5$z2@K_vc`3(laT6*O}QW zsg|w;Y~qs3WlcDHjakXSAu+6nBiEXeGRGw`ssQsC-`wpGgO(wX`4}q_xs`4eiBG)o z1s?{s6U?Fo$wEq$2;G}I3H6~wkJdSLuNSc7?%M@9PB)XBtAQn4>gDQ5dE*sp=>4F3 zGFOYSg-~2O8T)1siQ^Y$Ja@JnL!qePDrb5nR&33F1fwRhK=E153JgjvtOXQqJ{(+K zjV?zw(Z%QMo9OT)y7+iJIvt%HyFB9H?Z~R-TI3$KF9mnA5SU*Zl+iLV{RA5E@N41; z=Su~@^&|+XRz)zrs89{FP1TIKXRCy8`1{r^3|Z348mN>KXk2J=i9!gJyoDvs1Snvle85y0QjAVPmNa#tl=Gtg+tg>~+Pllw!_27X`PJfVttf zf$Fq8$a7s*Lsp?ARZ4lbv{jt8~ugVUy?wy-u||Z)YIp zr4Ak2a@OAScR_YHD8OZSTT>L1tKKyP6p^9OwGc&^>Nxs(@X2DmzUcw4Y|9Uso&yWCgZ|LQ(xK;=oFVE>%;)-EIuI( zsBJV>_%2-oSz^CkNyBHmqUPACX9_nIZ18dRd7l!uS1gmcg1`o^m}Lt)+i;^RV~ycrb!Y)Z z#XLPfYK3L4q(Fe6*Oy8P89ZKK z&R%vyIm{V(#Qi)_OnA(6+fnrc_)&p!{%)+P`C+hm+z}x$9GduQhiz3KouMrgKFE9L z?8R&v-Lew!E;^vK9@C~elHu_d+{-n9;xg3+&88=+;1E?=o)FXpW--EmS)-C7!Mq>7 z+{R{B%<94hX8d14mC*ZJM{muFO)UN1Wh)~Za;uG;8T+KFYoW#Z-H(P4fNIah{)$o$ z;4EL&w{Z(eE;V5%Br0y1#|Z^zGm~drJ7?NP+jWwAThSoa8aZPvo)y7D|ig3I-s6HJl003ZD#LG2NtHb)s z1*!f-`(gZ(r=vDD|>*F{p_l+-`xx%umQ;a2qnfT0y4+K@!W&BF!RZf)<|z3hXe zD$VS4NMx>XD*ei74N-B92?!o$y|C|;3Q}l7dP(+d~GTbL`7AJ0R_#j>yoh} znReo1^F6Z<;-&@RSxT>OP$`5c8ok0f$V2OMd^KM6Kwpqda*wPvYd>ZCh(Q_98hFwo zt2lLMWKK^hq;1R^-k_I2IB#t88e&o4)%|ql{gPTckhEO-b%N}JjV?s-DX?m7rvJVm z!7AmKHQ7T{TvkoDUeNyng*I%p#men)D;zRNYkZ+5N|@;=;}6}ystLQs1>SB7##H6_ z#R~}K@cE`S_x85;c6UhtV#tjR5&rtRJ*41YUg&=n(H0g8C-lvigBtCejC$&0j9$zL;1Xj!n)QBoli%oz*}4HJxb zQ)Ls`uhNR6Lyy>!Lm>%;PH=3pV42)vBFLOJH-6E(Jo(a(u9rDWYU|Nt>DBDR4`2rD z=#vr;PJ^*Aj;!#Dzg?UI5+Z6zBphQ8DCpoIOzl}$xacme>;(t9(}+T2Ov=MZry3#= zx?d@4M`nHKEsfzbv!x zp1MvPfUn(VaI2gRb_#Z_&3{_&!+3G2`}t(b4&7m}ot6gs;svXh^2RRSNHm^KxZ1h( z^%isXHz0vPd`Q|v_Kuzsw&E{n!~#hRzocMnxK!i(uIvPH#@<)$-_F#TN?y&b0NktYx5_>T(9nK}-|{+AnWz*SBaVrp-;Yz$KF* zbIw_w+#?hw3H(g5tvYS2uR8F#cBPUWCIooXyj)@r2ayzu;#?bN8*ypfPMO!BBDBs- z*p|2OxUM`jg#R()USTy!ReIhK|Ht3Mbh_GEuEslyV*Wo{!i)WTPa!r+savrb>_)Xb zKHuRT4q|poIrk=K0&|NY=_Uk0LyGdsmp^q$){3E%L>R^wOG}4@L1nA~ddo+;MWef1 z&2Ry8C&08g^4{~HY#Z0qR?XwWwKH%TpzCOgAoa^vmF%b~AsLb;jcF0DybFt&p<7Z* zAJeMH1FeHuxp2ZAzYS^v1udB5m7`7`TF0{E8`|b%Fe!6V1ud6UW#dxu^f#)P>Fue8 zHp~@`p*1TxaQwo)N=ZdnEyO^_RpRT^0bBm!Hk@ArqvC!{CcLo*;JqM8g%T6sqhBsg zeWzl*$(^ zhGvHsrySFCv@WVfd4l&s@iEeqxIuLgvekpaCqzOZH)WaA`-E9UEK2wh=gIiwDcu>J ze!e`4dg6hT-Bu%2FsnXZ%vtk-rTl%B&zE*_F~|5?eu|@Z^F@aN)fez-@vcs}?}*yD zn^}2?DCIBq0>I3d&1e}^?$C}LvXzfSdHK^^df9afhd>L7tt_Tq7KD-+?;wa3F7IPi zds->_Bu!%v*!ZK3#|?*Nx@!l)BvO^*!`j(fT6-{Xg!gjL26*^to>tQ?EKhKX2y^~4 z(93)d0(-(#=(xTOZK$Y}FsQ9{C9YgwfB=x=R-heaR^>RrVradE9ASE1i@kQzyRFBw zOM#Oti!n4re1J@HWq4T+402TETfGx~uR<^pa8EwY76YXrI#RqLG$zWDiRaW_XU%Gp z{uAFr1+SI7?Uxwdkkzej3Zq8hUL?Kvh$He7IB{G2-xUPYV-G@oZ^bpVpDU=5&mq0C zq^7ChtgV-4tIh;pw}&(MKq`KKvAenBvU9$D?^-GIFuj*iNFlp0M-b3-PDdUUE?z$f zQAJu&O|z1uCQ1SjuGP1;iZ6^1^tF8COtp*o(1h^JcIAau8aqwo@0`K_XV8-Zd#zxk z!n{}$57LN2OJV$aT-)qhnylQoVN;Jr+#wTCt($ph}Yb|ETTCxdomC zWH(e~R$;&qO5F&$b*!%XQIV5T`Y z^AG{>O^U#GpjC|>mI~9=~f0;T6>-K zQe5AyWTpMC*NXHEq@GMr6DSPc!n#dbg-JQr!%9D)%Dxs@Dz?Kx!y&<@v@{?(!^v$M zDv7legYOp-v$F_oL*%^UIW2ovFsXanOgOdde^OP+li}Y`A*`=N|L^~?UUg4gW1-8< z8RLFB9L3a34HMewVAOnv#?#!c8 zocH^Lhn!KjXF(-)bY*PnmZ%FXJXI+1lN=?K@JWPzY5re9emk_-zo4A#wAvTHdZ6`OKf0i7#Wtm`);EGlfB@H%;M;s{te*XMan)eZ!C$JvWj{kyOK-G zW%8>>0A+P6NG(>Ml%pV)-0~vhvF)Ih;zmxcuC4GZqilTscE&*g$IyvMHVz45`O>E1 z^#fdmpeb-Hbx-sf{Pzc5WHBe~0FRD7^0!ByKUwK_5kWOOQ(PEDAm5D-RsSJ25!4FS zPVViLa+C-Ypn-30Z)gLfJh~`o6{uw|o6`3T4*G+-T;QvtV_N`LU0fMuH-_MwaK&(#1@~*N;SOQ^6W^0kL z&}Hi^D;yX?^(F)c25iT-5gv@*-w+7gh)fdS-brx_*3W31porRr>kCrp#tX6UZjtv1 zOy*fO3o6B66o2=>?h3lrfbRJIVn^Ncq{0MPTxB6kWha?#&xKT?*yED_+>od5;FUe4 z>wci2`Ti-&udMB`-W`VUxhIO+2hS9%4op(PP)nzTQ01vxI!_x45B=6zs1iB}h=d_F zvKT$E&Vkkvt^1pwy;dpLw3qK&&$_Ll!z>KlTGpx}-mQpnq*-p-{+G;eX%^LL(i=YY zA0B06M}@I_Op0Ndv<&OUF0$@OX)q)!k?)5sU&WBKUSm-r>{u!us7J+bX=CM zZ?PPUAm&!L@Kb)9aI0pNv@%!EvmFz?XS#)J(lVoK64eVLI zzvU5?QWe~QDv0O4xpN)0;>yOMz%UH#hR7oVzUtbw8vBlAmxY;b{d5@6w zar6q9*JR81_ThE%I9^P?e3@TfkDeZ1W|O27SiY<$FYDwQSUkSWr;}v;DH(pBKld8Z z)a>Oz9=nmMFjSi+*v4{^wV`XQVrl!|%ilo>!!b*JXjKtY2vu7S3BK(KH*oF=JrP}E zm=cNLF)bLU8d0o|^28y*W0p~^2N}q?VWeWjgNKCYK2%Yj!)R0r>B$-i{!W!a;m=Vz zQa*(|dWgz?`|3kN!lapR7%1`qlSxs~%y^z|a>%IkJlvF3)JrNaG1M~@Gb(Co)X_)H za3~Hid}7)N7%hlV%#*edImLSPLbt@Qch6HUi^6VUn5{^*^O1@gLw!(tkzm~OX6LP% z;afGsw8c+88wW3%9>n#Z=ex!8(V?D5|5zDstntkOPcJU3LDY@GQ zb>A~*T2`c6pX*-b5PMVEQ@sZagM|TtS*?L+?XiKbfCYs9%0loOjC(5w+ps8pOSbB!IwQDf*yvsNEDH8hcp8AF|DFr+;i6L-v>m3|c zgzMAA4x(?+%0ri>!KgGDf*aF-;6*mi3AQH|3~PN6XkBCFdRckaC{iUX!iLJ46qI@o zmK9pwS2eoE`?HsjGgR7DXzogVMSmmq$|y zo{Q|4#w0oB=eC)?yz7R7+P*ys$^pL=%IO-YptkR*LUPAqh2)Os3d&m(77{|PESS@` zX+e4HggQnpBzK%$P~Ne6L2cjrh2@SJj7jL${h%JOi=iCIKZbG~Lm8IyyH@4daz?4n z9yCsRGM`b>(*Y8tY)xpCIBE{NHZ@k;_|`aWV`QV0*4f7C8mk+nT*gjRYi%RN*6T(o zuP!%E-MHH*rM0_px~u<4@oxl8VN=#btu)gk?@%MNC+yE?SEw?q0aqwwj} zL&|$fxa;ME`o6gj%j1pH>OSk?+y{bk_ks{i;CIcYbA<@X^?l=*M4b`Nts^MExrPKY z`uCEM{CrUfs`@vVpxn92#OR|;XYaBT6xVlk!nqCw<@c>7;KFoDx#lF9V$#?&R%Mqj zYCCtX4$T#N?|&-QfrWDm>>}qQs}7Qi@&5Prr+(^(igGg8vI2}tzJ=qm2IK$8?adox zVy}k3{xL}N!iQv9dlBmnAmOzA`9m+({sf{Iy#A!2AGQD385@{`>4Qx}Iv?*})i+J# zv=$q_uZdFR2vghb-e9*g;dcHKre{Y9PB}fu%K4zMMRwY1vh%DIdp9*6RFNZ0-WmOX zi76G;rKs{VzVh|%!R+QY-{06UJ79Fr$XqaUryK#SjtTE6;1=b{0~q|0|XQR z0ssgAN4A4Q+h!V|S_}XHh(G`U2mk;8WMyM-WMwX6?OXkG+Bg&bIs6qWok=l;1k!6S zJuaQe2Whz@DHG^5?K|%<#+JcXV|)B@gkJN%zq|UdC2&%bOQC(|n3mX*cD34l^k^mQ z-6|=ODj7^D>CKZ#;FHeO9J~IQblp*8M)Mu0#ujm6`nDO_#HLnY(}=i!LLL9d{J*atMBa-$0LNC1%FYSI8iVqLzhcW13UHTj+Hn6 zsos3foA=W&45Ea@=_sOOH}GRHgTypJS*l6AQwGl2d#Ne| z0MgyaoZ(+$M&on}x>3V|#rvvXb5TvCYIVT zNA7r%kcwq+pP@D~nv*`YBASq{If}{Q(N1CO=UMC1h}x0+iF8xnp2!K_r<6_Ni}vBk zSsNS&zCt{>K73EPZ{c4W12CAAL5YiYk5a5dHM^zKZk3#NF3;M(kg55JDU2xz5p?Fr zqmNjd$F6UADGayFDQ9O=#zKemJ`De8U-Ua~&xdc?m*iK{xN0;TFB!`g8x)R;X($}toC3!*j^Gq+eFc%7r z+=MB?(bpf~gI?Oj2u`Pgza>7r?4i_`l6gqMVTiocO32?Og6tq&_Xa?~N`U1_rOI(= zR3yQ>)0!mvW2mtD2~uo~-?h@#79sCC=Y##KAln+#GMXneHd;)p=yXX%$H!&H5~_IH zyw8?qW0e52e`=MkWs4I&S$J)$R6-rD1>l|GvelapV8py~K>{nX_J!K2rQTeW4@CvQ zuY$t@hEC{Jf@EWq{#Gs4G!Ws#h!5hgz_m$L$U@)CVrbM(FdAZ<$N|~r_78=v*j}z^ z2ilyd6!l&s+soQTEMVSMGF1oU{9U(el(v9P(#U6bqB{g6EE0UBmjWzKh$n0TD+w&c zm2FX3f5ibo8a0CM37m>vV;H&WrFB~PM(Rc@6<3p2q+tMPw`8*eQbC_q4Pu$7s?w}! zp=p)2P{kur#$-8~fE5?2odNajC>ovzXKaq@Y4t8-#N+p+$3(`$+Z zcr=zn(YULXu^`+dl4=a|X)K(`K-HTcM&n`6jAA-SLyuNaU5%9E$7Ps#k_5Mf2BUC# zajg)cZ0uqTO8h{_;@pzTrEWd8;L@Yi_3S@PFQt{T>z1YYwMD$qC}JGXJPJXfQN9(( z$?q^0R~6|yQVl|*wH$=fP^RVgi$Y!+gvATN4GT~nu`3{+IsCr@E|@okXRaFH<2im^ zHSwyc&r^}S#FHR}#4}7so*Pfp%?&aq*dAMv8^X3m<)<5Q@b*i^g^z(~2txQm%eK+9 zZM1EB-dw^2(>Z0_zU+JE@vK*OS_mk8-lNkpoUsK(kALogK4=m-J$f6r0|fElYg~+O z1jmu>ZRW=VLB~v2{nZuYXzW#7x3a3aQZ?sQIeDro0>{B1H55@^G*^mbM_@x;Z!0S1 zSb-9(lYGu<^1tFpzI<8G`jn`qydt>V8~Kn_fq9{txvplusD{-uxA9d5Jl}_WnoX|u zl{I9u7AgXmBxM!{%k=#q;o*Q?PYP=rsfl2Rb@~UHMl^lnyN(g_0yk?-Tgdx!Zr}$Tx`H*f-OZ_ zUvf#;gbZzcUS7R*r~FQ7NK9xAk`(h!+$TtbRZCL=bSBR*_{2#GPk&pBl|6=f~)hum-$;x^;oDbh$73zEf8$8 z>=VfLr|c^J&woKPkK^BE-Xm}mC_X+-eG9j9hFC&tqoW@L&=!WGYrk(>S-NcNl#5bo|vYikA)b(vX(ux=+vr{NA zga#(7c!?bYePwgNoVBHGjvyADK}96XjT&yycB_!CBbs51TV-8KxrX&gIK=L;UL?dt zV>N2LsZ=GkLy?<6iYLK0{ERYko78+WAX?()m5Jhi`AoG z53|COlKP+gVCG{dY>?^_Qg3QpxsWWzd^}*f98f_c#`6cl8R}eZu<7@}hb2dy0jV(G z+2YX8$m8`b4p8z;H&4-y+(bDZ$k~lkPjRAqD-wm{av-)ekP-0jeqI!sHd!cgT+bss z#g#>|JN6ff=5YcG;Q?v3R@l^h!CV%1659$i;Scl<-`L^8Y|%d3*gfXF*k$onh-V#< zH4ViqD4&)M@<`^GDjdrQoDT&^3UpKR6t;jXR#5EbQs>DW3tR zRXERNT-aaHq>@=tHE!5XiyZ4fA)=L}7=8{AMt2Zm2s>avyMq)1;Q_;J6qrAWVMJGPCfUV5W`ns+juCPX7+C+Sg$*$>kQUw*I6%%YmCi)SM^MbDir-S zK3*o{Ov|bi+Z7axJ9@pQ_nnY0pa9aGwbauUw3HGLa zxy}jphF+~@f@ul*DpM&|CX&qSZv)dq@h-O0wkO#}MB4@!_><_}z@52zBe?2*e7{ay z4P3|Rex7X%TRh)R7%o<#Zs6`^#PK8=wA>4Nf-J%F_hQL!hr}!}8O=%?Z%;0{JNd;% zKz!EktrNs&arh&oiZ=tL+$^)Ndtf9R`$huYgMq+?EM8-mVy`^Di})AtK=ws}+*9gMGfGQMyW zvxwK*PrX;m>melHSzez-?Jh^yau~Or5X*3AGiALKp#SciTy)!OoCE#Tzwqe4>EL>> zt9pAQ02{nMTr$lKvyS~wkA!ng|0I2c2z_ViV-}z+HM zOMRKGM!{)?)iLEY9)=h{mCxu9`i5k z^XBIc9!X`;LSBM}NMrApmvUe>a-wNlIN^b2fq?UO*yV%cPm%M|XELJ4H z+BY(KT}6ci68qb_gP?>P`+FBU{vS|F0|XQR0ssgAN4A4QLn&+FpcMcBFHryh2><{9 zWNCA7Y+-pWW7RzSbK*vmKQDj9gj9Tz7kdG3l5g#7QW)el6$~7(A^CD!Dj^L)!S6$-rGi zR z@w)Zq&39+bZ_ip6Wa$wy=j}+Ze=X6fQ0*3j>NpPI3@wi)3FWwRQ2$V%1e4}EaPpwv zpEcj)5jv6eK*GpfyNUaWB3QfGY#~_ddj(8L<6UGerglWBPqbwetciIKPh$4u+}1_& zHtSrw+yj1qLK;cT z7bV#Nm!KD+rc8mZZ+jaDRW07wmgg-j`=g#=dIQK5OxX1}iJ;A^B;XfhO~Gs&NgWzo zoV8vnZRU438BHd;(DfeHseyEZa2vVzD|l<`Tvte&EVg7yf%Sw8K+>dheO?Lu-5EAP z=$nW-k^7MhHomixW;>;nfRU1k(dpe8Wa)a8EQ5%+KKx%>i3=7Ff1B94rvyzJkhs{h z#RlIYnpd@2?Q1S9O6q)+oUiKma7o6$nZFp5X@4{{Z;fBc52X3nY&E}Y!l(ANLzk|P z18cPSPiiOTkUl6k#=H#CqaNJc(Y4t#2DPuL@3>2qy09lk{?#ct`vM>AAfT!kj4!b3 z&`DsD%=^QOcAk@-yI_1I+mIp%NNr;$v-N z)N6m_7*!FGQ{h^G9>Pd(_%^3pt*U8*oRrztuNWFIAT34pmJHty272uU*!(8)*K>~}h4NVzJV<=oU>$aV}1_9gfJDsM>urLdfFGENEBO!^oG@n`sHC@rk$ zK2G@qLs&VsBD?Xn6WyC*D~joC6M9rb@CK>7bxXph8#0|zuu~Q8sp$kY*MSsXt z0awGomx>cO#lu~F#To2N^b~HKIQjkchwMI%?CgH8Bs3R3I{z=E(qPT1KS1bZv%$Vv z{Hx8sF7~wocCZzGwfI+?e_ia=Ko0~|DSt+iVK_n)^f94P7AB3i;>zsA;z}E*ULy$g ztFrQHW@yF9k!C6hyX%y92^NHz3Lm$r2H~>#0o(?Bx5Rf_d|%*q^8iJU{>*e7gy3$r zs1f+zV*lIhe_0(2@0z*EvY41~Qp)bSQkVFSGyKC_-V*>*dH_9p2_(*bWDf93ZF3>p zv_zYWObWcsmbX#mI!4Wut;Str55LU7{jUv;wx)<^zt9LqGMiYD*^$nR-SB7rV?WODqW3hc#KZ#g%gw?1Yt(f}W# z0A>xuaER%x>Dmsr1;!R`0)1pX;v9SlWywVHNK4(Pj7y2TUM>2RKQ1-%1~kVnJH9go zNolE^ss!;It)+-^BUYqLnDJo}-GeMjq|?9SRK>gaM;#+Q9Q5OD_h#eUm;hQprN5Z! zEc|Pb)>A_O@zA#f#viMIEcPhDv8O6nZk8&6=iaK#m_ILpv!^Op>Yz%X=^GV1H>UFN z*(WO<~9gy&D&ID?4$q*+D@jl2zr2nzvRvvrfXRGSZ>;kS3q?WLj!c3Q7{kpVS*;d>Z z+QyYn?O+{RQIY3}h60f6{V?E_6|cmA%A9|e6$m-aUH_t;S-mj&y@^oud~uadZ8U zs{GH984s47WCi&U#nQCMMy~s_yUv(EtgyC3V$L6RM-u}*jWHp15Ya4o;cPa>7Sk<06llczxv(!rF8AhET9Z0l#k;X*`79!9 zPYEEa9{_ve9x>{NJ)VQnY4{t``?N5-6 z2CmJRlXur2?N#>rVG);<<5RigjyKu6weQ1X(@!PJ;}_ok{18 zcn}X*>vH_go0^CQOhTQQd5fak#_+EAEO8T0IRA;!ox!O0DM%xL5LYQYFep>0Z7Rh+ zbrOJZPOjs!COAg%Ro0%nPd+8iU}z7hf1j*0?5{Ea75E=XQ>`&@vjMMUW)HI%~;T5-s^PYsoJ~OMb&!s%4CZSA9f9cwu*wQz=~xhtT028yWi!Te!o14Cuh7lA1kqbu6mF`r zQlR$DafZKH3m&yfUj+uiU6ig8R>j4g?#Q+`QA8b0&zB3Okn@cXEJ)`B@V5o+*@l=y z;`XkDes1WFWJCzw8TJMSSy{g074jc`hil%DVOoiGRj%i3Jk=Vo;U^j`f|#-uHuNVB zU2N`=;VY1!=aB`4cI)61bpV_!Hy~Szjbb7^F#hkUXpBBt#HeZCJ21>Ha{mxzPLkHsSd3*6|H1c(h$L-3{uzxR|>v31JD&U z)smmwRFf`GKe&m#k~|jKV_mbr47xWa59%%}m%3BB^%SsvRSCI(tmfm@P9hK`9zX%0 zjzxcS5c-?r&>O?sJ7d?Gj09%Z=4ShoQOH`YCm69Q|)KCdCENz)a&2GMEl0k|HB8; z9QzIy_6IDbCQoV<%mYN8PNz+K5EW{CURC3L4y(olS-fRAPC5mpTcneK;F`_@u{X&X zG(KYsv#k22b^!M@)5p*YA|4mZ=UorNvn8z|Ac)`N*SduTg#Gx=4 zPG1iK`(yT+?T>EC7!wi~dxPf#KvzKsOf$qw7HYD6msGXp z)Raqx#eZYAWyMVRs5YN%`MxvnM(?M_{MNv|=whpS?kV}U-A<(<3T>GAtSuM17=(Ot zVQ$N?OkhoxXXLhKb9qGNggf5GW}GGZMzd zY*^};yj4mF)yeXBJ6nN+cc#EIJq5RhH`oDM`JNRs{KPE5$-RGRH8o;~3Gi0RA+1Cy zCBB#@WD}}nnM)F~h~Wje3hYiyScllkOvn#P2}dQfKhZ|o7Mq-5uz<(ysNtj>8ZTdF zcA!jgvRTgn>5hIYw>vw#Qm2w7@P_Q;0^j-hxnxSBVS2jEJ(~9asj#D{O08n2^~*s3 zM#+q%St#bFr-cgnt}080R8?R(-L9Y{mUJ?93Uhab5il2^5HhC^R;X4vl#OzqEYF-! zJe5Xy3r#_!&iUnRUpV6)U2>ksQDAeP)6pY`jTkSv(F^*5$N0)Ta^jCngq|cYi*MldYHQi({dKdu5~FcoosmawDW>TMkv@ ziEDcA`eO_I4KHGcu_7X6n{2jJ$py(Sxls6H z5a<7bbXW)eCgJcQ^8Z;n=^(EVPqr_cja9Y}TfQ@VXQu-YGuNI8hPf&hQ42N{=W@JK zxJKBnLx@mD^Us~VS=Op2#JLpWO!hE`z z2}+}5iJ7ufp&aC2h-R%WpR|2XYx*i_@^(x?{50b<2&vt^T`EQkQ>;QK?4g$-;ORZ8u4RY7{*?@2y z(#p~MN!QR?dX=QRnE;~Ep08CPtDOU#$?bLkB#2EKkSX>*~{D*X%ue@JHyge z=zMS%`*}7Rm$#FuJ4}>q6OdgzB@GQYvWyiXm$n=2AQ*4{Gp2}r?6s^0+8V7r*m_9 zJDLwile^9!YNsRjv+~nV4^2v>H8?7P;19X`uy=Tv$m+fQX z>Ee!Q&G-cA{U8X!=get$(|2SY-+x{%Vn;z*qdYlbu8>Ct+6my0_J~1!Zr{u-viul} z*ebMQRJiNjf<(UJ_0wl0_KY)hU$y`&b{4VUX^E)sP_d$rR(#(XGf+a<2*BTKJq)c+ zbuD}u==$%?519fdcM4vcE)Hor^LgSi4DA--~OBFXOiafCvMgeO#* z_^*X$RPbus()VpOQx6c}4s?_?`x)3vbV3ld+ogbw%siD zmij9UznrX-mAx_iRb_8@R|>r6DQx_Ye(>OPWMZ+aOhYjMCF}VL-yU(Q9nCiF(SfsU zdhCJE(1nu){|7etXFmi`ahOFlp~7*KUjKSZ3l$7J&3eF=etBM8Oh47Jkl4?b+YVB~reDKb|2ZeWx#O#=I)5a#^0 zKQm08N#zs_=DAfI07HR2mo@YwL|>5KGlc*8fMY=K9QVfC#H)1C`jB%$%+Nn~EJ!^? z!q0oCf??iDkzDcER`n^E{Na((FPO-^C?E&EvW=o(KYxb({cli90|XQR0ssgAN4A4Q zJPT#(bt?b>l#BoX3IG5AWN%}1Wpi{caCy{QZFk!?mj2FPfiQcI`|{iuAWzlXGHo)g z(sEvFTdP}LSyL8jfAV7TJbJ3$>r5wBr>ZVhz0zvk%rY~_@H{bvI(R<*IVr}6`}+qY z44!S&waL{xU4x1m)Fz*lh5qkVnd`~C%!iW*gR*j-WGXLHvoQ0d#$xseuZhNZ|8RWp zjapTt48)ZbO*tx3Ue zV#mgQuNtdWQmakbRI0oyRAubV_o^t>T~bv^QE&KRU6r}98sl~Gx!gR7qBxGXBr_hX zL@lZ$*LP)gqZVKf%oL_rDt({i>r7h(kzly3E4;PX?ZxH$w%>8`X zs*v2XssO)CqtbO#6`sa~{)a(>w?n3pnz}Bd$Y9|qO_@&B@v(}hQ&RJE8VetesVKT$ z=_2f&%))IUv5=9SS7u#L3`{A?!n^5XX8` zuV9gHC+iKZY^=H~i#>?LSZsWQ;TS-SGzI8`gTgPS7KzF1h?cxt8Ay7b2saUZ=xA36uw5eoB1qT4nwfKXr)3T|f!QE;D#n$w!tLjHJ)3R-OR)&O@zMQ{229j>4h~QzTggmNYF3s_UkviSad=9tst{_#Q>HNTO0*Ga0fMvL>vPKtn+bBVIJI7PIl$HhG?4 zjwSzM4HqdG{H<&t!h-w*HVHM(O3U`42_Dv%PI8akhvS2okwvU=q~KKW#g&I)0 z&Df78O2L&hxB(2XmS_pmEp%-+c9K-fTiOYf64Cx3)|6 z8LUPhUZ0=7Rc=ShGc-M&g35F{p{Ip^VvHgk zFPdV`KufF_GTh8-jK58?M%w|lrtjx^U5hN??5t~8!fjG(1`*4&Pan{pXHXDWKK&}n zOc&%IQa)esY|;g&>w9Bs%W{iJY*nM<5gC5oz#nFs>>2B@1A!dFs4nVigFvw+4Gu)4 zLtcSQED2Ij=VYzHWpeoZh>W<8>6Jgj91T8>I-C)QsUJord>oura zQE7+=O8vmxz412kMDO~z95N&%M^sY4~uH`BpLA$`Iky#&OH6q6$2B*e~3P#$Ck$w@rT zH&e2)c*tC(rM48NI8Wipylaa3Ok)6epxmk+M)h5(T6#7RoSMRb{dfrBcwC*Yl42<# z)$O5!l2OQW;5Cl@xHbG1X$b-slqw((D(c^pD^E z$0uU=ldU$Q%@^TOBE6VX7YjvNqjH!zS8~_$!HDw6F=dcoI zy|7O~C4wHGR#-*3@0?Dd$KodlVtI-?g+ z1nmyqNh*Wne)zZ=2qCAfPFzmKX(oACD!E~BS6i0|5kBZM(Pc?vil(;C(;$|}?~c-2 zwknsp0=Vu;Kx~{6pii#%uGIBw3d?7wzh0kTUZ~T{i|ez0T>scd8xB;ci*&obDF_cc z8H9624tEWKaH5{g%k}0NSv7!Ad8G_&DOpCy#5Dy?3R*rP_aM}wMifc|fMw=sxk%*b zp=c94Agdz}*<+}>MGB{pX#=w>WG_~1Hkr?XngIBWVpT?tognd|+>B{B(;*Dw*V!8w6GxD{H=hRw<~3Iy-g145l-R^IAi z$Hluv2$ZNRWZkM?iC|c;dL-p*q@w^N#-oyrA%BqM66JEy)|lk=WRv2Pj| zI%pl!LiU&@GE{VPVV}=)T+~RmlNm%*OZn4esU$&U7v!fMu*r3`)M;BG_|34Pi(W)X z6pq;ztT$qH{u8|V!^y?9y1rD`XIIziM16RD`Q}W$J30LY$PIITXEgR)?m+-I$Y9pK z;BL!6f*d80pEg65$%}VOGVb9lEbjWAUS}?v7PFzKzMLeD%ejNtI&B-Y|~B!rOfauKs+9=YEe|sd^0X@6O2+ zit7_sfc{%kN8)Qc7w4BB7+6139Rb{I0|CLN%O%KyylbdVd6;Xe*<9_%AVsK&{Ci%~ z!{8~wfa@0kQu&d}YCB|EF!-CA(xn=f4TLJBfC)9O-)~Hz6?FrE47{?5a8*u&5?6U| zNUq)bdV;E!A!Edw2%`u}vt$DoZ9pO8U3$w}38+)B&-T{obpftQ zfhzn576IvI&N;`rN)R^Z`bhO!UxcMI?Rdbr)BsZ&iYTt>kTDDtE(@9IO-X5VWmqE3 zdPn^&5p7;(nFMM}(bI3czaG*v>0C91Z>?aZoN@(T4)H|-KgW{*mM4F`{Ph|U|Mct~ zMf@vZ;{~@8kwoSrqDWm69|+0<@a-BqOI>I}Gige+nVat`)R2;%QM1U@R%eR|`@0_n z>>`tX`SK-LK2{$u5UxM9uRb2g!*w7sFa_3Q31(DpcrX0PV9EFgTO&hyiSnA;PY2vC z`;mv7BWb!ntE#d(!bi>r@Pc+hmR(Uw;n$_Ta~jI&L*}Fy9)r)U z6Dqa_cCF{!42Hf(QJ77<3QsQY3Syy5KI)egQM8RH6!+IPd18n%WFPA?Gjj?ylz2&W zLD*R|8UGC9v!jL&@35)umz|dv$qsg&ZU_zqs%94*AHN z%gbNXoAY1J)XAIoXD6?Idjj{nT&YdM=^@}1rS;|sH%M5?+#Ylp(-=D&uZcbGf|3}( z3nA03j;O*cGwK&uPA3QgELn@DBLI#Yd>CP2TD=kjDF=48rdGVMQDv5fDj@DEU?rH* zVB@rqn|oC!GYKC&!@6>Fk7xppvgF?zS67*uXszmz>ncbEDcw!)8M6lQgL>cC&a%-G zP3~55@Igpi++gciGUAMx{KwOX$U`7;|GX@feH5j6;#@WBEgmIf8E6!rxwEV92yKLoPI^ z#&aiVR6Rz4I^CK)KNLG8CeREf1d!y@AK8D$lf4HsP%XH5O=(LQ4xU<$jPjm>=PfuT&@HaD|62aPgl-q70+*2SLuUi9^+G#c;h%v|94MzpX7~ zL!C_UZbY0-bxXU#4zWKh_Qu>$F5tY7U5z~P_unJ$F!3fZn7Pvka zTV_6y98&4b{YBn?+H$9D)c3_bEV>ure|#i}y(JX~S)^S}UWD#LPUjhwE6e-z63q#Tsa zwC}Ye|Mn-Lqp+9S<eaX*J(44UUEh#)bxwI6 zd=B+m?;}kL$TbZe;~gb=ba3dnr1F#+aa0`#PG7igqba%_g69w3I(G2!VE?g?6Haew z{&$ZKq5i&^^CI7TaZow`!!fdZ8g}?_SU3us(u7m)DS!3Ip2EIz%2M;L4!&-*{Z|82 z`Xln~4tGe@*r_{XiN5_y`}yEI(f5SjdY!|@_x=3?E;HPh3EhyP3pe|t{m}uL&;IlA z+oT#Fym;{fuc=w&05kOEN~*Tql*64I&rID>A# zr+g>GaI!5e@L85n+Pk26@2(E{w8GrCGw6pRaOLiTP@<U$+Y2Y@|Jo88 zqE~5M3)Yo_?qGxy|b=KHjw-@B{i>Ww68tA(_HC8KdHLmXr7t&9L zLIffO`K(-;x!V#(~!u4{9 z+UcqyMv|i4%eApN9}?agHaO_hFdhEzUExhAH7Ic*SQy!Pg?F~8dEf%E5eXmAiqm&n`=`F%^hlbyROQ# znR}aINfjG9FyvIZK;@ledwiS6^2rh>Y{sI%U!$Pk_!C4Vpr{>%NS>r(AB-g7M3;DO zY*z{HLKZ@n2~&|+(fMk#PN~h|gtMkhd3v=j%LS?fmI?Q~w#od4Wh zW{Pi$$Q>FIP(wK@U8ae-0bvU6XT&naDbhCpq%&PWrYT*-47Z3C}9}TKATQ@V>bZhd1pWPAl ztbv))rNm@eFc{A^?TWAAgzAhB56U87(mF9DL@30}o2+y|OjSWscZ)7Lt#p~1xFg?= zHYmroUq$Qu_;$ zIQ(u)YVM99A9k?e5Xf+3<-&98`lZK*Z<*GM@y|`s)c|*9EX8R+89etcsnU+$bj5=x zMcsP2GYpn))axYA%OZW^mUzxeZm%u-AchdY=ah7%M5IY%+v^8MN}$=H4;=)tVT91x z^=QXS$QQVWh{4bBiCUr0xV}u`jJ2^;=A{iQiq+Z@LjJOBlBM<>^}~zr1eS$6B|w7Z zE^cxYp1L-z0g}k1h(u1rw_|)7;*K8hj_$GgQybS4|A8;6qO6@xT^dK{YmlURF;dUN zg$`=(+i2=9&0SNs|5)Bmx-X+CyDopnj~^0VMpLWC3;ijUU6uN($TXRi2p@x47p8nftq|13ECJ zE9KSeqp7j-sp8A>9Kou1@Vk9Bq%IELN>6BjQN!URPwM$fCLMm&q{Hr{vwU4| zwx?m%f5e?ZrxN;h40{@e(H^lW*azH{ZR6u7DhtjeHR|=_f@8SsI$XAVFL%=u=@Q7H zDMx+~8VHV!{4uNa7>bhalf?2Z_BU%gy{wVHY)9B4XNUx6a-6hSbcZ9qF054We9}j^ zUtAwHc8k&qptGyZD_!0ZH@7)2W66fCeW0UM>WlJw+K?mZq7t*X#UL##n+!W+zU9g= z(b(rp4|D=5T?KBud2I3>Mt^_ZRJQheW%BN<-(|0%2{5q!;GYa}q`YZO-Lu%58^H!d zV_GAbhPSQlL_I)c<6vZ?Jc_1ty=wq~i+?X-Y44elDg_oMj~-W$9$aD;>KCZ{*FA*R{35~0VOq)k1tqh5p2cb>z`&mfUcpt!;QkUFXE zIGS$`z_QnMm#7oUKsxcCht!M?;t6m2D?a6(bmhtMJx3>Iq&0Hx1GkbB%`fvRcEnN` zcccKu=*!2?pVSiokc#^ZAk@N||4!*A_wNR5kBT7WpF;7U_%rU`e9yS8ANL4x%eh;K z6A6Mj%s%3Wz7|NdpL_b^$(AL)tjcCRIA})~;Un3IJhWe*(uv0n-45WOMtC5nJj5)S zwq)~dD}X&D*l25O2YunlzzOw-VFDt?qfh;&^keqewZOwI3-nfa^gx32Hte1hCR=?t zaJTOMptZ0=WkGd_hppz#L#6N1;p4u?U=TX74|*s)>x4o@&_nL&?ot5-T>j(Zek zk#O;QhyB9S*U+Hu<4V9Vfs__zw$MZ(7Udc77o-$Mee5&7(*?Q^a^$@5)BhX8l&$t0 z*zIB4jUPATKXUT_vzB&yLQgY2(~-B2n2wLQevfSy<)^tMN)5aJI53oBNHI?3Xx5+g z-gW=QUmzbv(q|0yusg({^ukr=11e2Ad*%B~b11tS48vf$$)$PZNZIYdvu5G21<(7kv+N6dFZGRS{G;! z_ecUou_RltB^jdZ*jMC#zn$0a?1Pk?)*o7h+{f&4cXl4XnRR;rilX8l7JZhB+7FrYw+KUjmVe6uil{j5rk4miSv8kADE;?6zNV|JH(bC&iZa` zwI65rTsqh|Ld97nDFncH$C23_3TxWIm>hUi5LRq@Q@AKjkbumZVeH0q?Sa(n9!5n6 z;Aa{>Cp7h-H9>_~&8>W!U(Y&_? zSA28+W1W9}e*ROPfB*W2e}JwEwvzIcKE=l_&w zMTvMwQSA}wha#BA7U+W%9RLMn8HOpHm^q7h&7QWfneF@nL=y}$3!02i?`Qe>8UcTZ zYi$R=9t(^UBdp?9e5b+^jpS=XNYhNWkNv0uu8B~Urt$RNu6xy+W4T^z%2+I-rC{moFEAisVn;mzhe;WAP-$7cW7)K;3eWPp zwKc+MY+2YQZ1QMJxUC_CBP#~FOK{zesb1AeBk-C`Z+U(J)Q`gTijy?PPm~m(lk7tN zfMXP!YwxUS)$=upzz7|QjJKkfW>=T+ns}z>AeQslpIYQaT8@hRD1Z4E7B*ewkiUIT zEhr}GcwOZ;iOLuG1yaTZc!utSuuDDfFrIFPE3nCsgTlMNZ+7Of`A}8Y$?r|#m{&n} zm$Lg&?SZa&MIzTUooT__ot_}O$jS0F!Qg2}arwk!mk!S9Jqi!R960?&bkMkW?yN{0 zw(tiw^OS_Z9raN!NXZHvCnmF})S&202YByI8@=4K{x}abeQD$rWQOqj8lO;a_0pGF$>JphNQ1E(b|_Vw zhoL~BAS`IXfi1pS`}~o=r7L)tx62Jnh};Z#E-8E=FQ+#~JqNG5%YA~`4uGLRDOCHYt+z@$?8$v~Hs83W(`yW7hw;3p~&`GlB z#QZ_oiC=h-EDWX#H1S{!n~$QSd8lC|zKyET*~3HsvHw3T+*xem%60c&prr?`r(hUC zWA6vV7Kx=%RkqxRcL;pXHzPLiP6}%~pyxw=K0%y4K06+c-iZ;6kP>!-e4`$M+XjP8 zQ@MTsqjzy}hhQYI=NK8I=||bZY&MKI&h2VBgLW`@b;(DDS?qPzU^qK5FHUE1F@-pV zZ@R+3m}G=8Wef9oiAox$H2aAVgfvWxr3K%eJ7VGQR|Mk-CzMl3awBb^DrILwenH5w z%S&*Y+9vj%S_JnkC4q`>tfDyW1PY}QUoiJ>Aaq)J5!Ev`I552Vl>)a9&YdOS+J z>~R<^Vm>JtwQVvbM`fmwY)>Oda6B?iLvNJ77=BU$UPVP6?7ZCedOaIQV}tA-jBYjbACt`W;2yr9 z0;ayv?f?Cs|Msfv=#Tzov9>m{JuCHW2p)~G|Inxk(GlwAI3v1ywSaV zyH>+8|N8QU`Hx}PJ??mD22`G?mUM{!K*dbR5*QJ1-cSZ`cuIQ%Q-VPC?-8|b{$)xy z$rLDk5w~yi(YcP2VGjy)FGL?snF8An1#5q*q4om{wLf$anLWZHr%MgH7dIbEdi+~& z%Y-6jVWG5dom6RhI-tRzewKl$FNjK_$5Hn!7^uJH=c&+^e_O^rA4z%ESp5=%UK3tj^JlQ(5)ALZugXcFE%rQ2H`fPC6ojU zk&_#ci0tDI0=Y)C@@S}!*s|%F)>xJ36V{CF7c8leDW#G(3NHC%GEDm}nIbK_GcdSy znpWPMg6};#JLZC3jd3wcdLrN3DkaF%kZ`1=8xG7;^0y})jqTNy<6oH%tgv|YWZ(An zSm_;p2YwkT;+KK7J6wPW@%twN+uq!L9b{NZEg)1dhDGV5vg_CleqhKY^ zS!iPWj>`!g7O+VU^5^+5`7(TX>OIhXhT;#UaVx%KBe)}4qIG#9zY9q7B4Rzd62Y-n zRk@Dqr|O-iYMcPyA1bpW<*kJ+lqQkIG`-e5pmCF_N4w}CYt zD++pooV}ra8LVE8^Yr03g{T@$Zm1L;Fd9IYY!+q^@U>g#FdQVdI+<+e7v?aW@MbBY zNR6~tp*;^CdJF)RU)ue#3Y_KxQ8~pC_AAK&8?YARr}2X`hwXInMQCaBmFJu`J3w>v92Z`mr5==4MF=3^B55JHMQ6XE!SNijrY06*bNo zCrN!oh`DXgdCRqfw7`NiyhY$Rqk~jdR3nFJnM%SOpTb>FeC~>h#iCRzN)%GV`+hSW zEp-w_Su_2pv`YRk1OwVI)n4?B*Z!$jI_9{r6($R``!Qbb#Cb9yxH;ngz`+LX986@( zSOSPp6$nL!;^S}$2jC0LgZ+BP*$62!Lbe|!=>@lss4EfOKrLCf03{1lMgo#-+#ROa zJ|h4nm3d!%4hv_thPHm*AC4U6!7aWsw>LwMyw|@Mi*tWI-|igQ;oKV(DG=Ogv?#l~ zFsR_j8k(9AbAhdk@z60J6rsa`%7M8sgf52uQpI!hxoLC%Spq%LVKVC!C1?FmltkSr zHf*O1n2HTSM!RdnbkOYCM{7t~QIaAwSl<&DcUjvxsJ&Lq+Rc;M{`cy0!K%iTv;VRn zBh*JPZti9Z^WTx-x{JfQc}a5G;Mkg8Ucwn+T0ThdZDqHHJ1Q1BKv;aDOw`!r-nNDS z-QM38=qklzQH%_IX2V>XAD5p#`&ilam2te_-)Lth_ss;aS>QzPZCrbQr`jNOGhKa{ zP4kEPag-lS&E)o;DMD{u@;Kfj4TGwFHEpIlaQm9(aj_TGVJbV*GRj$BmkbHAWe!l< zwaOlg)|7E~*%0p{jGEq)5vmEf8J0tsVCltu){40$Anrbgn}Bd`4p?d}*uO$kjDBk2 zc2DGZ)(_Ib^=3|Q-tQdA4)R<%50Fg)p3Z`pTuln7g$;UNlD+O@HIMGRn%>XNN|u>- zW{Fm@CNgF4_Bk?~t{JIrWf4W(JpTOhO-*YSB5<8T#?cz1!_r0frh#%SWXM^-%J+TU zv4Z9|x{oKW;Y6Q&{&aQN2J`FK_p-7^k_lqD?ud!OwSw!@8n;Q6sTBxfPjxwD!D5Y) z;r;u>_Dg~V7YU5zQY}=oC*3LzF<8m<#!EKZ$aYU*!){MIZw~Ef&;OVfW^@shXru|} zi`=I6GPrT{!Tk%tqkNa9bu~J7rmb+U(N;YsqlfsG?dGP*uQnecYrxD#qn*k zvEf~u2x8N0<~wpcG&{(d(p=dj!J+eCOug-v~C2SX#xgj@~7fZ%oF7Fvj z+TJrv7=&CLek`Js>H!TZ%7U6^HguTLy-nbMOrbd!`Kz&7lyUDnZ_(QK3rAhJ?18Ja zz{7b~B$O#;6UdVmEwwr8mW}74@$DpltDDWRQ;{n_RC^;9NM>0;FhaH?FS5{br7 zXIHe&09+uJfMl~ALa97kyH^S*EZaKwt)NUjO;;E3RKn37d3%etZ?KR2+U&5qHDU_e z$k2oM;&kTR!e2DzL0)15JT&iX(U(l=vM?rk>wgdHkoL#JOCm8AH4ffB4BTv=Pa1^b zdhkCtiUlgx@gO=ha@uxg05T&5L8A4Bx8n;!bae|5WPv->ly&}fSS|8Y?$qj2yCffhQKUJ)K~(lQOkop1zkVUsTcU0Te%sPmfhY-Qmu5%dKuvREzv z!Kh>H2eP5iH3wK0bs)@~G}Uc#q!d_F^=`D6kYM;C^Q^0R>M*s$adyL8uta<*f$8rf zUEY+uqcBjSJCHk`);D;H!a7jWWoW7la%Jns0;bW=gJOv2DRzT-hG!36J zfZ-tnI6Z6tr>Ox94;cXFve>LS368U8JSVg8>02E_8cjS^Hl5Lrpr=8{h@Vz-KuJl< zogyA!I67nLDDP2QJ=kKnHSkJ_t&yH#>B3@_+d=wa^G;e-U7vPgkK|8bkf{5Xmv%k1 zy&s0}Rr=Ob0Vuh5$(*3p=csdo>WO`sUcH{cITKNmS-dCld7>O#O9zaoTl!mq%@N{m zujh|tpw-8WJ^ZFR>d1cCq9t0n==kJCyZK}G26}k+2TdC|chnNp^DG>ZZJLe^WuYEL zwsM)&j;T}AW-rqVW(-0&`DztPdU<9J%Xs#RJ@e(8ikP&-v>k5yjvGqN8d;=hwsuB6 zo9`ma5ae6$BfITDws+YLP18GH>2e{>g~<)`C#;}GZ@{g4ZwH! z8GTc$QKteqxJl>tDq?i@7rqszA}#Z0Fwbs-$wh%482x}nu}TypmSDakID0H;`G~_5H z+i5|MYOJMDz!xo>1*Bl1yb=T(YOg110g2Z3&PV?_`?&0aqy%%ErVe7N4PSt8mCo@W zh%cqL*bXMy{S%<3?KB+-H|6tyA*cCgKu*1s`U-ZMx5G|5$R_S(XL6djR)7=3z?5ck zVn}($is?Jr@Ma`^i9~p7oJ;}Ad7R%6FS7WsT^dGTqE!IA_Y||YTsUc!hbp-qoK?KF8H5TNhHX!bodE zLPM$-+T|EZtA# zm>fYn&skfpl4y-C$4S~*V&*^`$199|Bnd$Kj^PQi`>_%cJgXKLNSSzT>r$xAJAKH9 zbOMU!s4n(`c?!>$oxc}i0^d_K)z*XSs8@g;nX2rmzN^+xL3`Do`rsl`LGP1f94%cd zG4Gr)$`|c z!<4?5b*1SutCV1Ixn@>|{Fv(3Aa# zucj6Z?;hn_ZG-p!zH@2TZF&eFnv5F3@v`Z+v|tUiXE|i<9(ERco*VrNf-WChij}9H zSvKIu{xCirb~!XpWf-5%|33VV=KljwO9KQH00ICA07tfiLtmGm&)5tA0Io9t00;m8 z0A+4tZ)9aIW7Qh{bK1u8XZR~FWX6#Q*dl4uq?B|V8z=NRHe+b(w$srFbQsn8dOE4L zUgQ7$?cRrU0%1EeiCZSIq`Td{+wZ-V_S#L-CetM)<2+qPAsGeEg%@6sV{eu?Nxloy z2*FY(be+T{G@M5+O^6q!G+8)v%E%&0ND34bsxMF_<~xt2QIda)_q|uIUUaRmy1iFq z;S)mMIE=akR&^<-%68`^*w@|OGXZuG1+nK-GWV$y`Z;kJIe7ZCfb2c%KDPwq*v~F5 zfMgt{G)z6mCjkv$bpn`|VxvIFB_3>*GD+c^uGQ;W&jp2j*M<4Fqa(#>1?cPQGD;Y; zY_Wg~E>a=d>*+)Vw4Fxw0=Wq&2;7z6FJS{+>y-{30PtSoT;Y{C$wd|bOC*ids;or) zW(Aci#|Pz9@Yb1n)wP}hwvIYJIM;v>?jVZu#JgCg#F(3cwP%*qBeR@L=sck*Id*1@ z?7yi62K4|20v{#RO}tBToQ3X^Na7Ppx$T?{_YdC>2^S2i$qV6c;G`ZH2mH$z=!<{} z5+DKwm3XrZ=g>U&n$5j7IU1e6AAU;$=aLg-l*FhcXXevK9OkhX&ixET*%Fq%yKLd$ zf{cH$e;S@mMyDtCyWu(cj#$@L&w63Ould-e3ok_HIGz1L=c#={ue68Z&+8C})Q5-n zG_Vhc$IZtybiIYXy7UrUz8rk(E!2L19(lL_)6o9$WHgx`+V4uR@3IhhcXyYs32=Os zcqv8J)EY3>{RBTGxrdqzf+%drpBVd8f?)W!(`+;d`EhhIec6^?+2K@Xc}kht=TzmQYa~V?M!C5p zC1A@n`;|Smi66}``^_5#F%&){X8X-1((vYB#8((K$N3aE7LzL&I8ngYQfoKIxg59U z1el?LY|SI^^y`#)|D$H}FMY=q3Pj2<5ls9Uc`j*7Tv&S@4L7wL&1}>Y8IT>Ze_QSq z;Z^7xRD8pzTfIYe)~QQffd3fKvn0LmgEojXyYz5QIpriGQnsY3T!|Olxf=} za|cNoy-r0n{bmD6Jd$G^S6CASiG#D@k=h$V;shsW!u&8v?33s{Phy6et%#>_!?$=t zsL!arC9C9b6ndBpaqAm6tjcD$q*ApKpf!b*0x_Rw&^2sy3Nny8tIT*oG2Ya8DD3j4 zZ~aUg0Lnx@B!()c>eM$NtxU3INwh$?6H$DI?ZCA8o28YX?^fo;NTL`taVQ1VgnH1>-=p(3Oc0Hn5g3I+7{<9Tne7dC z!rxR9&2XP%B8wz4dEn^hNHJItiYK0rxTI0hD?{Pi)s7;G)IkRq2}2G7L=&#jWViQF zPzlLIbsb$#xy&H7ik~tj?l*IAcnd_v?`8P00_02=|Cz_{Fq_ISsz4C%{EdVdF%ckK z5r8AjJee&J4Ne-Fq>${G1Xe0)&mv9~_uAZQ3<4*mKo5YFcRKBb^4C4X4OmW=EFtvP zsC^x*`*yw9MuD$U+d2gI$hPlWtPfDq-QliXt0d}@E5R;wrX%`T za*|hQub*G%2|!^JO{^C*Ji?*ytt@OOrN5m13jmjm86?P3HkUbr3W~N75(g}}?C9wP zEh`^aXq(P-uR|+OBGTEduWq<#Y2?glTsEiGu%fg$ubJ_oX+$b!#X>22Zw%ZzeUO#6 z5#3O*a#8(mKOf=|{_nLrV>G{|D|Jh5Amz#pZcr2cyE-p>%(Dm|H=KESF`i6Gg{Ufl zBZ#(OA`~_>h=`pM-N(n;U-;=mn&+Uepkwb{_gWtv_HVgN_l>EAK5K4x5$KG38S4(oROh*pesO%9Px@{z-Ber@i z5`9}vfB>bgzF(Ln7L5+_ysIl&eir7yyE}EPu~bVc>9ItHNJG!8y@^GMG0{@cf^bE! z8Je2hA(Ibw5>&Z@;-*_rhQ~`S?=A5}(_NdXAn>RW?2gL6gQUl_r6jzDkQxe!ne30G zdCxw?iqP1)nhd50B|iq7HnOpuh+Pp@Gec8F+Q6g-NZijR85eA9&x9n_0XsAVtUr#{ z@hC<@2nF2lt=tgICUwEH0zO-d_+S1O zh|v);>15b-zY2H?Z(rxc*GQZK@?+%3E=ORr35f*9La!B(8A!pS%fnKRLpa~)w8o+& zwxJT)(*bn|`pz}ajmyy{tZl$ID`v{24IJz_L#%W$_jSv1!{w_;x#5ZV@Pcx4U>2B` zcD-cKjrx3RyCERKp&V%C!iW3NwU~XfWAa4@wL;8E0MsfktzP5Cf_sX;Sw_zDax@Zr z4(BnT^terltap^yVLj$3?6robKH>@O&}i&;{ktM7fTqPC+qDwev8MJqVILO18Z~Zr z8p8ZnL`ZvUEU+8&NC|=5-RQxg7mIM3Y*fGW>?tI9leqNc8E*wibe)h{<-eA8TMtTe zm&!!v61yW{#5K0P;&8vFp+G4?H@RuA>~mTkxo~6wIiz@mfl7%PKSKT>FTxLWfl*JrOm56wRKz3(OrdgTOJY9`7{rnbMP&w@?J9LCi=aM_Ct#Q!Vniq0B058mw(j=EmBbatC)~_?H@$HhBMbMp&BYa^T2IRx=@H2 zoe(G0L53XmZfEFar$`HHvm(hZ>BjlgxitbMrnSBOk?9XQCKGHk;JQ{q-%VaV3Y?#70>{+cXXD|&lvu+0l zm=K>e`TAajlO`c(%F97CGdWbN<@4CQ4-g)P-rihdgj2SlZhuWDPMAT5@Ex!PelWut zk9GAc+-5Ht3OSjjow(2wZO2sgc*tp~{~D3SYz^-tr-Y*DcWq=C7DKmvLrxhGN1Yey z$n&0{WO=z7GW|C{e@efNf{+ zg}~Ukf@yDmM|eK=Z4!N5d4b~61 zA*Qk-Ip}=m50?*$qj(@};=vwS#($w~@E8oFm)u+tM8=ID=d_Nq8pjW<89sOtkl?;&|S%xk-HwLDwf1pdY0FKk?sYMYrMwdyASvj=qZl|`qU5`~Pj8&GH z9f&w&ODWBEcN3>8S~j=2;=9hZsyk z_R@-%Jy^Ief4c#ckLR+Ra+TpI*5+B?6&S@ftoV16k@pOr@Y(3v|6BctHnCMQ{on@(0RN+Yr1@pUMT8ZVqSF2sKX9)L zoptF{+`P-|B%o*5w0a3gJkF$2OR5}S|AQYG9U9=k`LjX76QiSvpFHL6zx=vy#qFEQ z!`(%5JlgMcUzgE+5g+=vKW@P&>w=JATW(s-FtKD&ICYgjLCd_PYZ~v8LMp3@_Q%d1 zQ}-(-9C6AGdbWv#HKh&u^{0ME{5SuMhZ$Q!ttM@m*1qk&pq( zMvUWEVu}kk(+~q!Ql#8UYohpIl>P^3Dq$u_|9S!^DizpM{R5W%0Xxbyjn$~T z4QtaY=^{9WZGeUO7C#!U?j5oqLw1MSM{ZLAJDaXH>2F2L9P;?k2S0G<$}lFK-F^wE zqs3)zunF5`%v-GZSDL>;0|oQ} z1zu(${+RGZkIJWrY_aX8a3q8M&Qq+ombzR6Q*LjakSnAp*XFMWXNU>XRO%xb3?dZ1>|!wV`IPS zW45jXkM{@%>@~T2#K&P~b49isCG+VdM z-0!z6ae~{}-8Qi_HI+P7jkBd3VnZ++0oq?i61K>* z=+YSLu$+H2eTY`Xx1gIyVKQUMbGd zccJ^I-`i_aoMYsbkX1;?V<{9Htodw)Tl5K_C-{&3gaSsAb0a-jPq@Akw#snHMLh=4 znW+>6w1v`Ad5yfZn!`Sm+z(jelLc*&P?@86aLh#t=FClt>}rkFx(MIOTJpQ5u=F!9 zp6nZrii4hk0-$x@rTHSYf7xF%^d80^%#7K8xn&Pa#hOEFb4^@jhJz9JfroLk5-XhQRU5bZ`f_DMxrGN-S;}7aEFhV> z42D}x>&abzYfJUb&pKi(HzoplP`ex6OJ)tK-M0im<3wRljwE3Kjq`NMLQr220Gb!ouDzWyui8smOYs*{zq~~+H z;qCNFur4TZpZvQs-F_4d3)c;AKmw;vO_~2Armaa){d~0AH*$_9RIF$bZqLR=sOHx4 zyxRwlGJHly!CN=!Tsj{-_m*9kLjKP1`l+&V zu;Ne+s@fTSl;Dc_FoZ-iPqPIHhbtLIIb==7oZz|{*FMbe2G<-ix!xsH0zFsJrY64k zZRh=;fK~ElW{D7W4j9lm%@##;De;^rL$)cMJ|+c{QtTI-iv)1(AbSyX8&pCp7zKc= zR!qD&W&-L91%zWSUl*^TIP`UA|98w**QaUuXW8NxWZDE2Vb!%_j+aSqxgoORvg!os z<+{py%c4)g{E}x@0h@C?O#wxuVj-suasP7VK5>>!sHzoQn+kYmXhRHQf=i9&4BEkXPTCQnw@M zR_AUK*$Em6fmRYo>NTf)h+;#8h14tRx9MRW05; z&|IKVa$`K9Np33M2^)UXTC*;{dp@0Bqi&NzkW@%=n_mNiOAK6~uKXEZ)TtqTdfDo~ zfyKZj>*(dc{4G&SM#k+f2wDz;E})WdOY!3+VKOo07fTT5NjxnpXv1EESWt6Nm|D)C zE7#yjDo9^&qhaMM6J7oA%=>VmG^S_Hy7nV#dGp_nzl;WI({E$LQ?3 zjHGL4b1?_LHIF~fn?@0_)^y{Uard475-e%`%Wa)DT8Q{C)(y-K%t@OEaP!7?XW zyI^+_VZr6ULnw{~TtH5rYWG|Ha?iVJ;ZWWWo0hb{Nl&Iy!U(> zHX$+-Vj30QAJ@y^;mgCoBfG0Vept&nl$0I?v$0Yka!l?+O!0s_K)%2T*h?6VS=u!z zLWN56PCy|+|KMdIYg(|Hs`p~tm2t6BxZUPYbRS(I_z070Zyyldn%-PwQ8yy^d9Xm1*s~d)5rs2*g{)YZMfnvLgM6DMB{-;z{c!YYY0; zTNZiaNi%^$YJ=AVn-T|(bOYB^=lxP)~7 zG@L(oj85qX!!Zt*e-H=$iD;?0-y}k#<2OlgaajHk-)$w~^shS*BO3O!26hEL*5SPH z0`f`ha9Q|v8pq&{nPmBklaKP$pYto?#!tzZVh9V0Pb(pdHZkX%=~eu)%sN-bMqoGU z%B{B&UTf+iU520<-urDQpvq;}g0G$ql$eS>py1 zcWNV#5uH26aG7nd8(9G(mC@=5hhu+&_hnN3>(3kJDhES2{-QUaFlzWdtR07k3wMBZC{F84^Sd?!%{p z`*L8E?$@6%l@%M>p%c=`m?!;5b}c&*ss3`_H#wBJq38^{$ImGU9f7cKhbNP=LtvNN zk4-X}@rusx*Zdb?fc@yR*_W@Fj=MxVz7oH1CIpFv&k?#(sy9wwRK~vF7kasI3q77# zll9Vwlu?&!>>!`!T^X~cq2s$JM6?(COkv&u%f-(9@<`6IU$4x6dEt?;^Ek@>1kk?93Jvyk)7%5J?KNxN_L-hBAaJARpoT|wz>yGw2?NfAo zC@Bd*#xx0Lx%2^^CN?{!A<9eLUi|Vxw28KY@ha;WzuCv&G7zK>^k%(cdm?Zry)Xft zS7er*9$`dfn{zY8kQMy(2S)(?qx(R1F#@BnC8|mM04!Z?R%-7$=|-Ev8aV5IZ?3e2PS`z7 zK}~Z1Y%hN1wUAO0Y|A%w5qA6@9L5XSR?uL)F&UO-)W5qt%|yiTZ6pbsZ6?~@^jD?8 zbrWHA;o2mw8~k&BZQvC!_GT%z)S0xF3^8QzK2v;fLRplCG=C{3XViZ|5TCqSSxS# z+X-otIpYSILa*^sZDyEzm1n#ov=c=QP%CIuZ)fck=C)Af&0h59D$(wJK3d*4tFD`5 z092cf9~8u0nBO2t>mI(Q1G3fl1hW(Lj-F;$naSF!)9-%AT4EkhrH6u~i3L;8j@lBk z8V5M#_pif^qtAA?dS|K!v=ZC9yvAy@^$jyi7|j>;#35lxjwyw7CkyP{3JcG{mB3on zrXDvO9w*jp>Blbv$CylhNb|%&X-2!KOM8dOotkNyNXWbg*~U>X48E}Nb8`Jv+hc7O zRSU=O4$V(>3Bb$k6nuTl+2x5Kn3_TkC}>llk1+d00-$4Z^27G3KhS}Ai=_Hn7T48h zpHxt(`(^KH$~J?l3yKQT;v@%zwvL%(S;WN#V>pT0vZzPWMS}nK&w&o zBHeYis2)^xe_2TnD!XD7rx`}{-R@7;XViSZ*`J}zD(!*lEHWV(Dh_C7Wptgp%zyBB zb<+-8K=;QfJl(HuwZck+=J{P);*4fF*+~x-o)u?JMyDx(H73n+3B1X>n8&S{`S+rD0kV0PYFY=nD zGlzO~r;HYkZG#TVhT@l}>5}Cz`~ft%1!;zNTJv$*>f=#~H6Qj>)jLYh^zizv?F@dO znb-Sy3tJk_UcN>SGv=Yg6v_#GhkD|K9-?$G`JF=kAyls_?M_-`K@dMxJp&h5Y{}`p zP@Pb5k06dHC5>C`VB~^|JWhXNZ$KCpj2*?Xgz>5VKSWS^sD(_uQX!N=5y3-5lRnKU zVqS2i+v`rOdi`{9u@<3vLJUk-U!bWxL4Sed{Oq7iQ;-)bV5FjFQV>`vhdAHduhUch z;Xig9h(kaa{C;`jRWxZA_M<`#d|WzK=8JT?M?~q9q^VutC`T}4`a9B!Eid4i^Yiol z{}faMz=_&I`IEu!CH@|eMN<0hZw($wBlP|H!$*Qhx>1yaHc-}DQw4vf>=JdCx*C~6LbJ${6MUP9bjCt+I>tTWChTt?P zqK9GvSIS{bVXrb{&$-M$rp@)GGr&wbVt(;pstw^S*^(juE=v=EO|QGBg&&P8B5kxm zT51yz{l%IJax}>JoH5&&qySZa3OpVuZo=9(bGs}l52ZF{tGK;lbVRhsUB6(J@>}kW zOd`8bAwo?eKV)G;Kwo*OOe|vowV`U;i&x8?CtDB6@*)h{Fv`D5FT0|je93AhlABTT zT+54XjDBDO*PY1Nb(P74OnhbLEf=^cdrpBmJHBMhA3W-;=?j6?1{2SdKM+Pc99yD{ z0{z3ETQ#y>49YP2I&L@`?ngy+n?v`b+i)ZMrnpv^vZ>W;*-~VS)UK~-woZz)uH(B5 zcTyWI;@(-XnT>nYb%EyiSGx3`>vLlMy?0oF?{(1u@#MR;>Q~v?LT$@m(}T$RR#Z|;a}J9q}6AX)fHY@Mu0QEIv4#h`9Ac0 zzwzbtQg9QOXf9vYgLPvqIzRpQoTDoTYLbfwQ{MC5B^V_*$@rUm;e&57rkdce3fiNb zpu_f9WIOXjK=j`+sZKGgsgZrI&s${mcYr@Vt@G2mQ=Myd-N3*1e~aweR(4BG=ql?r z{~9zZBj(dO6w}eMo0P>b8>GvfZ>e@Um8rtg0Y!Z(Q0o0iXre^&EX5d8Zx`m?z*baN zLw54v$LHfYp80TL%_VdM8L-;I;&LSY8&g4>ZUyMYiE$bt$B|zkmn|)2LRY`(M${NS zITdw5IaxdZ#H_hFOBeWJ_H9_2KPFeI9L$l%GzcJbS%EZI(JGatpxaZ$Tgl51rvXsx zTTLM$ubh#i}gw0?leNmxVj6H&P_bKlDJSI_|SfLN3m(MKS}k(IJH+Y^d3c_6yFQxMuU$R2YwQOwIpGEI z>WK8K>FLsl_XyI8kmy@1fx8*}9lwS%hk-*w)9^8fM$j%?H@9**Uv&DiBfxuP+!z6* z5zs(4a6k6hMn3XJ1}yX~;Ks8lqC`F5?~F3Ke*>mbZ=U_CIo&Az=}pX&y%@wZ`~LnC z<=Cf5t7RifeN!Ltkuk_VC+)g;dfW7wCV3}y-qF=$pduyjhO}>ZalVSeu zJebQ}KJR^5>$^*Y?2A#`Ip!h<8^mGHmLgLfYp*0Qs@B1$q^#i~)KiD%TIm-0nnI$VthEV5*}$K9SeysNa^b(mS~?dam=;T$qxzt{YC z_j-aJObzy9!qK-c?A;F(Q-lN3+l<@u(&gP!?#m3%p^3E8%C*gy66`+3k z8}Q}vbo8`$r1|jHY0Hn~aak?MgU+~iHhB^aIe3%4jZJU*trg6Eh}5BV zyL$6*QTO>fMvzg5cQ*GqpLLdDda(PohOabv5-Dc*p53pB_lQU{`4a5h6lGDpM6|sd zz5$*NYm=W-4VPcp7H-9A2Jqt#p%a=13X&Ez6HL46ee{oV+Tlpdi|}kkPVBoGW(_!h zA4cvFGY*70(Gn+H%KhdG?X<1nbwhsa8jmH$z5mm05>YlC{5|$>&Ah(3zgXXyQsifP58p%3=j1ax*TF)vnNfw03{bS@k7iFNRZsc7K>4bxSiF|WvCTw zA>m;!Anv@O6P={IhBKiBeTTVOIiU3U;! zgpHJLR&Iwg^j_6YQdy``mxhO#TrS78Zi}8tbIm3EMs#cZmI(7!arK_~_YGim;Zjs; z0{2&Y;Tq*G;OTlWOQax{9+rTpJS~Dbl~V?d5GLpMnSw|#TA}k0QC5R8)4;)oSaJzL z%@CI|!nGg`2+?!_(@{XbFwXI-7nveml9YfI4FOUR3!8-32q;`NKP@T)90D-Ouu(l+ zoT|hUV}Ip%lX1`DFM}pmGY;tVfz6()ma818V=Y5>@jr#J(Lh3-pkxFg1DuRp7Z)p_ z7~|W6oK6zL5D1HAfuD_k492~Yepjb7QyJ^biede+akqzovg870%%Tk-O#fvq%hd$_ z2lX$g8b=1`u!!e#6<+sM1=01OhYE0Yy_P=^D% zQ9QV;@ffZ%>i0zC>P(| z9=N>??neue*_B%kY!VCv_f_QZlYwV=CP$Xn#m3>Sc$kaAG<9}@s9F~jz}}&rv#I(Z zNx4@M8UA)GkSo6>M|x)d$B*-pcha=hsM3-F-oZc8l&iY^)wKMb)Y%vE{%~EhRGdqn5egiRPAr}VmGMC7&tU-Cq~%1bl_K{{ zts|9iBT4D0&eZ@Nsw9aJt}$z#um&pK3?d8E&RlU5VkKghV?5@t!aFPQ4*!B z@xTpM=%0;2#h_oKKhXIz@yy~gY>cLt5-ne#w)qh6U!!bQ3Zm@enZtSD_#q}Fe7!D* znytE0kZHiVA{={r=0_}?iznogO}n}>Z}5A#zEKXqe_aiiL{Uh_K)86#Rzjslp2>f4 zQMyHH#qNDGMLa`@a5GG1y99^jNwif^|GbLRZF!KRKiVx+*`)qowWrJ5jH{DcWd>qW z-gWd|{(!w+Q-4bxWVSN?fP`CJfqbiuxwAGcaQ!VJ_HX(-O0cqL5!AZot#tPv*2AFu zCJD6`*|YmJ{9NO)aJCaTpa|K%)G?NWa~?K>>L#nJwFn9v08 zw+AA%W4yaR!j*12i*x^udjtpMF@y+5jG+5iS52nmeQC;;*rOgfcy|QP$2IR@^#wI@ zbM}=uIycK$SHna$6*XP0eJNm8$@<@2s-XN50zpJJ70bA}M75p(Ztnx2tQ!K_dl-Q) zIY9HtB6}c&3uNuL(RPSd)a>s-c)_tR>#g>TMiBZi77Osv7A`tW;%9M>ahyu+p}!G#Eo@0 zMaDD$#9pYY+T&v5;YLNuo*w6EesW#D*42JV>(J~QrlNK^R&4qj>Vndgz5rpdGM`oD zyr8zI<%#^h$}bNV=S1T6@KR&7^*G6k8vo(5wz5~cBJ|s0%z~o4;-(Xgav)}2?`-mp zJ4I%JZJMvK}LgNgkF6fwgoH2&yfsT8^z5Y_C*S+N`T@{Zo@5DQUBYd&8^ zV^A_LgEEw>B9An_+`RGb#eS`S`QL zm{u)Cn1qJYwV`>gx=!59om6ZX`G)A;Mwm)JQsPqS6=?LDo8J@aQOXGnEB~{@8EAmI~f{#p_PEEzwOOuQt#!iy8Kt z9w+8Q<}J$x-0wHs%#{?9SjFD=*eLkmCRHcRx_GSUvZ>=6vn%;Hz z0u||HIw2L&Y5s#U9u25_ZAI{GD_7wJGN>2+Xblzmr};J;Wn+BR^E_byo?gFrzsM0+ z)NkKxMqeV{H_0?(^-!gKR>Do&^(37O&!weeAlbxy+@<5-2Sez{uhgo|MD``fk>O{q zu3-^87%p^=NKY%P6pfo`vat_yWpwhwn0Lwzdh_+WwMz7$I_rwNsG64mVZoO}v*9+B z;~(o=y$alO`N;@K4bhVUf3K#_NrA_UIpbWeo6{$Dop*Nyyu9ily$55pip!Gbteu{V zq}f#0vF0p$bvyq3f>l+a7aAsjBA~!bjKg!gnIydH|%XkQ(fqllgW_s>gxYh)X4glcW=nfusq z*;m?kw4yl7drQ&tJ>C_hj8orn`r$9JS9~sTosdFhvsGh|jNpGmgk*gCd=lwk#2;lQKvAuBv#0YFX^h+O&k7T%BGr z$6qjnpg!6ZEt%ka^gE&h-NXTuW+(fq-@@FpTua;k~}C0EPX0-FQ(nbGTtTyqCp0S zp=*%R&+wr$v#DRsU?8hn4dr`kaLxK`Vb8E)0nSCKirKf$s;i{$74J_w8FX75XHWLi z{mgltGE9KIOtHRXE{eoUVGbcmgZ8q(jIk>ZXpxvp<$gQiHY_U%^WVbAI}NRNuF)wI%51v~u4b@Z#{}-!(%-4$`yMnWWO)H)Vk`Nu@ylYQv{^codDKGd?AnqS_Id6sev+SFPl27xZI6?k4fP`7Tur-pjL?r zO_H5&v_Y>yVbI{;cvQ+EjaPq+La<>Q@D+Q6i{-v1PtzUqgm=Ojebh1ETO7?_YV|}B zBWigYr5$HNl!P#Cl?^C4Zn*6bQ>hacFAR-(t0EcUirrKX^|*n)6NOsMBo)l#iM0>Z z9`H+B#pGAn&Mli}7{_G)~?NYbB>=nnlix=dNDrS|g9OAp-3O zA#%EdGB6 zajaXfaya#8lE2V=qCv*AT+Fa$XGp|bVLP`}YlR(?f$B9COMI>L(5CDw#LFSNNmImG zu00+O8U5Ax_lE%o;ez;xa)kV8OaP9-2xxBO;jwa$`w_sbpekh$&1k2vdSxSZzBid<^pU`F>Y(Ma!>7|^ z@MqMoUU7&>gE`MEA7n5Cq}=&jq4hYK7Uz1VB%Mic9%<_!XLU_(v)NOW(~vOx^7(2! zI#H+yklH}jIMzx?c<;;zGc)1-nhD8sazCZi& zVmxl0)Fb_Svg%VnmM4ED~)T{3Qh@x_(M3WfJK@8 zU3uLxU{(7o|Lq08jP4Egu}2*6264-clG6V=Si;*eR6i?5uwnXnYrviwvA(-kkP651 zV5-Iog^nNU$e5!=`wOYffV~TIQwx3=-);TIg989hx4urUy63^r{_=PH>(!1$%PT)2 zuzc45mI4?EZWxGw@x`6t=ORu*g@6g}NXs(~X~1%k69chl!36WRFKfVqs|EW`ym#op zj;%#wHVi&v34{ZR@)_51q5I5>$jr>oxnXSgUfZ22Yxe*PGG!|Q6Tff4+KOHHO1vrkkLmaFN}KvENuV5)xmeA0hB|(2rHd?Ga># zBXfg~Y-e-fAIK@)(sU#N#7-j=>-P4NBCqpaNI( zCKOJ{wE_K1dl`ZQbez~;bBf~N{52s(Y!PV-K}zKws6J_o2WrxB=uLVFZ%zM!rYT6N zaZV~Rd$1=Y@F_&rdqsLF^J$e-B_evXiISGn!#=3Tf85Ks1n@ppOhw1tn@0q9zVp4I zZ8cW7cYjnZXWhx6ptosbu=}|`8p||4-6xYa?o*!3mh?QFQYrIqzBcdjKJmX)q(FT8 z%b*pNpJEH{qM~Wy@b3TM@}i4>K<5b^vv9%qlBAV5(tvTYKI4mR+};;zeU~{NWl^kw zlDA4=ylXw83m2W>AE62hgnds7L7IkK=kTCK;MYoaAKUHAx<~JwH@cjFG;31N5z6FO zVvPKbc@c~4LKcqUK=rou#izWWoL#chT!`j?#}y}^#WX0KKa-rlQWX2`uY^I_HAlpR zrBHR?(R(2s2IycyV}s{9e$@iLRN+u2#5b#}EF(8eA4+X{B}uhgG0?=$4aZgZqaqaA zaZOSjCZ3`_`6)}H6sDk@@n-bX859HQW0miws;k5f@yF;hcntQOrdzZWIxLu>ry^;dpt{uHLC)P>Ks#>x5aeqUtM+p;iDdost$n;^%yYf{ zm_|nLT~TLcC7U7r{Ao#VIwB%JO4u8Gf3p*$!*pZu4QvLp>JT3{yX^Jj(0mW#pEAtW zFuKR_4{S-DLHk~BNciwR`5tHlwQ`jRc|@H8J?(edCAime|NMYWf+#@88dyEwi#tv{ zxo+O0+954OLS`XDoV(Gw;?=CFXCw%I{ozb|!EQN_4M4vFcDnw8_Tf0svCra#lCAD* z<=k!~qe;;Kn|_4D3tqXx`b_zeWVme~#AzLkn301f%kiR9ow##TcXacR!q%PnID^cp zrHPu$wLg{N^Uf=KV#vvzA>IH zsZaQ=tI$ul&g-gFfA+*bccZ(roA*d;ndL_F86DLo9J@W?dxfINi$@~8Uf%%(> z;0%C{m3p+Q-Q=5-$29@{*)}2cvVt*JJdK|XomZ*Ybz=R60CRZ$nVV+%)mxt5Xrf(2 zq1&bE&_4HZ%QW)A>O_B{!2>_JT~-V*6Cp0-8KGr9l@2-I6gmb`ob5+qE&L$q~$5BJ5yI3W;!O#pt zp+YZ0%K%UqzQd-|-di&DA@O;JLjwF$2!FrS{#M&XGZv-EPEuKs6=<2^Sh! zVg3M979piVAjb~%9=FxW58J_iZ5o_;)w5?tyU#d3|GJnT$A5Txw5)v@w(H9+Tcip2eQO)>}ojrk8o}STvS43e~yStvf(Q=wmeE8zd#Pc=1U9@6Q^Gb*B z>bzicIU{h;CidpOue<()@2ou4{8M4&QPI9Ov|H*wNhvHJz%MSW*1hyhW&QVeV+u(8 z`-cW3Bq*kEqr44YDslK-07R?-YZ}b}cSVo;WM6|Xze#CHKUAor7SS6^^T0p*(FT*b zV^wSjJ&bJrpD(MhNQZDR*#%FZ8Ebi~8kn`(yhQ^yWXMn}OfIl+dN7N?4Z~yT98E>| z_t#5>p%}oL^$`pSoa`B1I1a7&d|W?W`2rt3CMLY^T1teYc5G7;K(lJZsVlWWzq4t9 z#!G{+qHzGJnZ2>rDiZRhH)%e`Ktohd+bvDo8Bl_Up8=iJ!s4IP?e}|I_;)ozbjjhLy`=%! z&QT*V=mQbuXq140>{Z<0P-!Q_h5jaWQjtru9b4keG36?p(#TCpbC?w3YjIK5Iegg4 zzU@V>uY@d&dYR8bv37jRAmf&R9v0S;+LBp5KETNwdR23ypp=Hv@u5cN0xgB{w!Pz5 zb0rkD{bCOR>Pmpqw!j?*j%>V*R$s0XJR(EU(W|h>aIG~jLT<^1xS_6N#RfJa#?1#V zf`!Ki9LE;F=W@!GaPo`#JU1hKxti$$0CK;=iPBWk_BU>pi@2vAQ;s8`7_`qKi(RM6 zS;^?&D^xUC+V!mKp+>g@wrl2CgiLNpyo8r$W%x3-zgNYy#}!Em%13U2pV z%jZT(QQTr@gP`#C>ALnn*$EAP=Qulw9ec7>2*i1VK*ZC2+Q|Z(*`?eF?EjslAsZH} z68Vq9Mh60d`8gbotxW!xlhvvA?YPE){JrTLJe3AdCW=GgzwAPnW&S1>+U})K(dq7; z6)n2LR8mVCLlQdE{Z&b_-n(<4M|Up=zx!NpHMK08{YB{=Ol` z&_t{bql9_0m6JozV6oC(F-2|?GWX#dCMyGn&cb)%c)~0|s(P5~cG&My@YH@Dj zuj@G0$>v$3MTO=9HdEC(Q$uWUk0sV#&=0q{caQ-_9QV^h_hFRI1ENPF4zOjU+i`k4 zt}R6BfP5De0U(RLis0B9T(Q)ALQXOM z;a$#>CuA%|U@MVAZ9mWM&iR-`NTiEUD2{7$S7O>_XyQRnesN=Y+o)8A-~UA!)qviW zJ7gDM5+g@0Odc5e6JFCtVH!^Mw=7vGGWM?!ZvS-fBw~*#yVm4+eqsq}%va22!%^kR zWjcW~@Kl_=e(z3f&D$=MEWqK?2@M~j^l`$B6*NB4wC7@_`vFJ@IM<)tCje~gO;7pT zWN8R-im662d=((f5*&sw;pM!e^9B^XLSKjp8(}|(QZ@im@ z@RXdnH^F?-6hDfr&A57cJ>B97iOX?oxSp$Q_PEhh&5q-y5i>{Ib{x3N8X7 zoYj2}_tp*}r{_~@$uf=opf|k>x==T|v%k3b;!=oq?lg(-#cQ}5-t3+FcNV{Xmi7Px zxBmtK>B9=h_AkRc^T?C(C9JYmqM);KQe+%nB2|px$dZ^Il)iT12u4}I$Dv7PaekD9 z0_}8lb{X;3%nOw9z&iYSG#y=hghr5UY_b!_uM9D4Q0@1Iyt*P@LGJG3{*^X%Mk5gc zfFNi=IeTdo&?v9$u^t3o0a{`Kwu_rq|K6DduVuldhrFeCZX8%4!r!+bw-`%y&FDRw zi%Vf~%3A*}+1 zuC2hOx%Z=%aakk8q}1jhzccWgpiJ--{unol&ChRh#E;yR;5=}D15{=~Q$(VU5Cm54mwDe#K*FFKFQGV+;ff*Lj$ejwVTmo?YkT=2%c z)lMn5y~<58r8=!N)1xX7DUerDs*>5>BpMB(QTXrCQE_74ZdbNt)IRtSSxF||aml|c zUtpV?ehi;98v;D2Q^IkkRbp$t)o=fguy2gfCF<5}cb~S6bK16T+qQMuwr$(SY1_7K zzinI7-<@Rc%#X>fN~My$_u5sdq<*Zm9>ABOgTa;(L(L9>mthp8)&I7mnO4|Cz0V?5 zuzx*74JoArI;BkIl=vx8v5{TbE2yJ^{&Tc-Z~k&+{$%X#0GBZ>r28>^IG>stIb}QS zhSk@uT6MSJWI)DB1>3A=0FpXOMqP#l+2Vv0@I*ODV5DA#+)InB6#Yj=W2IZI7RkFM zBL;K|vFIWvQc;02{l(Os9bJ;?bk;3ukv+b&RZ;Sm9xt-+k-Ksrbtq%Ym;1$$1F$~$ zD$pn#tvoenerLscWD6dyh=20n&eVzJ-SS#1f>SzWRnNac&z2&>KYM4&=2h~Niv#On z(in;oOs}D`VZ(d=h2l|p#_~+^tt{rhh~2e#kMJ?mE86VTb3TEv+jxcff6LXATLm7`$Us0-LjRlk>1g8QZ1>|y*`;mcxWS(ARio!$OvREQ zq}0rmDP^(Jbg~*z$kUU3DNTCtqKx=ULS2D4HIJG~>wTvd2S~z?(1c?wyONQxPqeTD zm^sH5sNuf!O0Z}PDYl*3gLsTGb6CNuv`NTTqgg!cMk&YG7`OD$!%h~y^M}M6Bnte? zVpvh)MPl~X`Dul)J`0@&5`K78$e*~z7w+(dDCvH;!vytKViQ^LKCMvdT+s(r zh24cozxqIuWPMISim4*of8du1CBGf8*Sd5#YV*( z^4rPc6UEbJMyRL*kpY7RzS?WOP##m}Cc#9|tNP)p*-`GJL1N5S09O`Nhv@(k=HNf- zb`TPty#;W%b6K|2P8d_Wup3`z>6iZoL6o+fl?A>iteyR>iHHvMfPfNvV|+N$+1 zFfj(~s~K04Px;4${ zq`s8+kawmZZ4It9kN(rO_|81Y4c2u2;D}5%QUD0z#HdEpvC`SyYi?v3;_peL?2iQ~ zTi|&|-%>HP60I$LDGDyYLzJWXK+ct*);4ZG<(2+mjAJztw};F|<$&qIawPuV1NXbs zAxVn-K5r#^d89J(>+v?-+Bw5SqIN@vHZ@0PS!SLc$d{u17lOdQ%9+#?wUN>RIkpo~ z9#;H;#k+l{c{u(05C%Bm=j2sSlFq1-?ZZsaZkX&mDf~Wg@nGK!61n}PWIX0pc3vFq z9Dlp#c_dEYdn3#aeQ@+6xn0p)$T!Ykr_clkBItMGK7+s~t@U?8mEZ@C(MNUHOn>5@ zFyG=rvc^-N>9-a^XJjK)cS5P5Z}yC_$po2PWcQ({Y&56c`NH(*VQBwzT%Ay8-d2RUfSQavxNIRNwKDuHBI&Lt=a8}E+6C(g>J z+snb9AN9-Gn862PH)0f;uhO!;!dR>|P9{}Pxpr4Fi+Fd0xOSfiMg))Ix804I&6oo8 zhC)S@J1XoWG@o$R5;`?5MwmpUKYO)2rich3Gdndu_2b`V2cVLi-mf^E?( zRA9oP3yT32e=He~5sk1u#lZjdeeQM>!1O>hBme0}!sZEN*b2<6#7u=r%IG$$KFv0m zMyg2FP`fK3%M)8&_*@q)KroUZPRw%uZ$K%^|0Boe*DFg(MxM zmQxTv{0kRn(?Rw3rkIgc;>R4wjt7}fh!Yl=K^{Sm+E`;@RK$9v47ZRa8r?pZ&xGF8 z80B9~?1(CVROHgmcu7K1^ef6sFbJ(1N($W4!A*RLjaWQ;O0BX<*L9|Ag+osM+P3AR zH1s=*8%4UfKc=2h3?ZC>dpT~xDt3M*jklNV0oD)z&Js%kHvp5^b!q7pUP+6T{)+k2 zJYM3jnlWV@tWgW2!7ytwbbur+Ci|=B43f5*SVnt7~T6(4V zn_pK8JQP92GYL(GYBa)BpqQ{^OBhLQof9xAyvkHKo4IC87j{K2p{z{Z5{ zd6^PxtbueQ)GW_dckTx0CT*&-TxqD&3Lbeu$D|W=7$x1-^1E6|3(izI2?Uw%BFH7mhaG!XGj72SEfbZ`quvy8bM4UC^O z2;)Keo}m5jQ7;}?kV2~nW^)Vt7U{C~qS1)gVO}U6^&DUOiFEWNaR=PlNY3% z#*OUuI-n;U$^tL%_yPh6xMq4aT>?w)5&eaXw1zbwU}miizp*)ZKc@f>>29M7p_hEw z7e@l1lQLMbjY&|qDbXy^?2{FV-9Y4VT;762Tq9Gfobty2teQ64jHS$|;>t`HN*bk? zSAs$9OaWbu^LPGjn9K@`L0oJ~9Rb2-Vn*~$JO)fKYYZZ}b|@y?IP;dY*^#u$F?Xx?k|~taXb=hgpK}8jeX&LKcrs@vu*t;NEzx@@?)R*dA@kN9v|Os!e6n_<2rU8BYb< z+{2H$qhBdhz_e6!j(+M!iDdII$pu!^Zp@NJzqOaN(!`W!(|<9RQcZeQg@v71a}=is z72wyTU;B_iH+0|oG>Q4HVbMuQT0f*hw^UX$({~)gwyoFQc%Ae`$i#!GA$bqx*CUP>%6lBh zDRz^>{{t-6lOsr4?;4hRMpdJxrolN?!DWpP!}Z>ssZOs7Lb$w-=E?Wx)t5puPL;1u zj~wj03CTkpI3dc|*1Mc#2$?^5If^&QIQlL&F98);W+dYn3%qZq1EU(|bMn;t0YrIZ zK;RJ&SRLK5=e0&1A#BVdob;Z1@Y(SmP-fQ!{s!*m*4oPc4ZVgm`nx1-U`oogQB-FgZYc{{di?b$wRTf5_gOKGTL8;@$4hc7v3iW=gftMN3u5XJRY-~N6A@pZdFj)=%R1U zq5y+_WW7Z%)H9+QCM>N)(L|Y&;0EsRmvqDtY15%m$)@du?3xAQq%nM2g}rq+bgoL> z4VT#>npMLKwDu`)=Wyl%X{$zPbkBK4Gym+q+)SuoBd+%o9)4y&$HHI93iIp&o-t^1Ch~}ubIWK=@%>DEI5(G zioI&SaPQ1jKUF8H7u+HGwRWHRw_U}}f}l6mFsR2bh=@&ftlH8)cMb2m(3x#C_N;aKAX1WAq$dGH)n!?BpmPq8fVqL0~ zBUUM2c~jFYJHxG5@KGn^GPdEmWXSz|o#62P*6jOynz8BA-pbznx^F#3ELLF2jd1~8 zFV>jcNplcRe5kR(z6fNqjk7K5NUiEUH75*W+Xv&5(A>Fd92^qc>c_iH@PJQQDvb8m z^GT)EpB~f5HG`RM{6H8_x=b+GrNOgz>_abbqT@@(nQA8j@fMZ~!cT^I=WvS(lFdru z{q3&mePp*?sd$?K4A?1R1u+LX<&LA3iMx*d<;Fj&>on&xLQ7b{NQ=W`1m%O%gWZ}~ z)Gk!)3ewf}?$v<&rAL`x1*$*v9P=ZgFqRHG>bG&nCIVFPo%_k3*E+%HWs!16=G{_KcOCr zxsq&3G-FoY?g^$CMvKrM`ggnQGuCxlH1{4hvgP_|2mk8tl;K@8Sv~LBd~qKU1`zBs z{PQ!y^V7}+98&F=ir~UJsD!dIK}%3 zh@F*uW%~5*c8@7l$mfbsEsz z2iFr($$n&z7q*ATTLB-D61sipK8EyYCY1pJf?yzsV1Kj%YiG0r(O>$JGD9Ku!Kk@Q z-KmcSXRcbJcE;;*HwZ@Hm{No1URFHwR~;V1qE+SRuP>FTru~zws-RZ;WBZw|6(Z&o zFLUr9zQqzuva>`Y1i=b_e+Np0%ZSQZ&yemoj<1192IVtq13{Jcy9?i4>S;7sdzzAp z-7P5SUEHA#im6u`xb(#(W!`w)`&Q7wi#I=QpJp1Z}NyO#>!3wqapOfpYy~~`0EIjA%CIa`tDUk% zb-F!yiPN7||7Wx7e;<6tZXr&R)XYe_iFY@AHYciR`%PCm?s%0&BebJ*p{d0l?0D7L z#aE4A82>3*LI3oEfPk#a1Ahut|9$+2gJ|e%VQozJ|6half7Upe*x1p!TG%o%(lFAp z{a+#fL3sZ6rav_9|6horiM5G=qsf1TqW*wGq5kWQD)~xXwtm#3`G|pl$o{8LW0U`q zmi}vKxuoG~t+j;J<1@q-zR@}aju9zrW&L*`6w%piL~DvPq= zShEr2qQlmLbBwH7WaHP!#|byfifDA9LOCd{^CMy@DF8ZXM9&Z|#@2`58xr)KeZB4I zKwyitFc?zo`PtEP&$aV2#&yEZ(Xyhyw_N>g3wUved50$RJ~K*xN&81e%jdAM>yf_T zRdJCQ8EZPS1)9VOv2p~_R2A9ax-wEAsNB~Do}sqKX_AmrU3N~n2y?3;kiXF$c7UGF zVQUxu@Iln7t-b59R-5|@q=le8Xzyz;IRn2|J8`tWyRpC1Sm^ri`RwY6<&?vKFxlF= zI#)8PMuF`SE{H7@g5~f@SMR%|n+DWM8xiaoUz^Y0ip{Lo&FgZY-_2Mw3_4udL0!DK z#5BYcx!>H>BWj3gpkJ5}C9=fWe$kE-M|8qLKF=zg`oWR_kI(=>n z&u_GLBaO;?QQ~KZBaG}Dm8*C1vT%+yIc7_-6G_D5{Ycp6O&#;Hk4;1*c^e$nE zf}0*wIG2_r>>gAUZSHYYce-vi+C;ztcPG-Coyq2k=xuJr#!V)lxQqS(#^w}c%=177 zU$I-k&n6QVvZosk@MvuzY{$6bE-D;=2;(Mlu~Te{a}Br|yAoeFFdB&>vjT(=upgwJQai z2D%I89b^G^9JZdr4mfr+dv$N%qTe|`4rH%KRN45W%aleNVcN2K&WdvVYU^N)(%a(OV++;qwUIG@S$C;%9E3zW`f}6@ZDZO?mS{ zc!rh(82(M#*Brz7$6FTQ?>RZX`3C!Zx{l_314>)KW6UN&RS8P0m-+ZR*N`2VR3^vu z^%=P-hQv%f5_V_xpn%Tr8yNF&k4eK>Eb?rB-Xfms>!Dw&3CCEMZBSn4NRGeDD8r*80%pxa8`s2#0{^he!K}d*Q4N|XK?ECwaj!!&&a{n4az*NgVc=bT zl$3b=o6=gefXhGarO54oH{)p>+o264^jX;p zuw!v^!X=ww!&;ACi$p*RDrU1`Y;?t`k93U1bR>%kgl>;3lr#L4pdnAcB~1FD*0`NSv&VhfHhL=coTnFK#BEz-o2TN1LfyQ3iK!`Chx_>P^}J>E<#V}98btnu|8Jw zL*VTQpo1_{_Oj5#`YVRBOmsz0_+A5YZ`H+7qf|W zd>U3kUww`f?`2#}R;R|{U<(vfguIx0gf#;1$y_R*o}B}x3hmaI>0WZHX*;UEcFsRF zPK4I=+?Ku!6UkOfbJVjd!c} zRl#46$k~*khHBSK`)N0e-EbSaUfkDmFJ9h*98Yk;`vl|qZ@wi2nqdVVAb-E*-%nSd z4Yt{;E(srMPw2tC9!qrR{{RpdG>9rDzps}Md_8*zlxQZ#9?aU-Aj#s$nDlwRghXUn zFT$*0X@WiR2=6d7d2-Ym`@HcSxORQO3F8NY!#*@t!vM~$YD9#4jlT&|rbEop@=S#T z{m}oc+vK(5=E**|l*b=%#%<^qZHodo5lPZFLe7c`>wz|6&i&!H3A+MT4g{R|bq4_& z%-w&1+JWXiN!Op*NKctd13XuS-*bQ)(Y-t2 z%W&G3OfzojGAwe=F)f)FqMp+%hDU&3<2vAG8HJzIEvQBKF$mwt@*)wd8)nO}fjN+D z8fVKqsF?$JVIFY|0oX7y9YKFJzBr2(QdS{4uZRFBI> z$+B=%t!2rY_$`W_O0XtXi+9ngmakBGQgQG2d1&)d`YAsWTBQ{K(1EIxmIIPw4up;` zjgAKfm6XSn{-)k7Zm8yH;zKObO-bZvu1&mMnE^5<$1f+x75FQQvOwCEIaLi(a`%fD z2-IP?Ir;`)+^`*GNFJN365d*a@|ThqwX8@U(aVcco`InyDv@R_%Wabv?;0lWA}6=6 zvEGOpK9Cx$%L`O=lte1qt0O#cz?s7~tNoV6Im!yQeY8cow$wztKLYY0E6Z9+e=dYH z6C7(x1M5pLC#(X0OG^$_85%iNB~OcxCuOCH`=!OZ+KTccCcm0K)xhY>an@!krpCo# z7ZaSOec(gU8mw82q5~G3CTF+Zm0Rp{Kl)GnyyJw%McBo_K+&}7+d&6SSs2pW*PO1wdkjV#*f`%ZQ_if%w70} zo{5~OEN20MzQ@=OJZLCQ<0or$4+e+xdr?V`YOPI=*21?<>*UGpb5@Ct)wO$cR}(Ie z;$Qy51O%DtEHPfnrv2;H0+EKJMnYvx9tvPxGRFSjrl_} z>vbu1y2Y)FMS2J;+=0bjqjaXm0CV#V_VC8OzO*qXt#pwgQ&-g9A&0&4R^`}1+s`cX z2rPDqjpT&2v{l;iaG++%t0>KaLqm!MPl17^R*Yp@^ptBw`f*5#XOr~#C-(69YjKFh zx|{R>vnMomN%3h>h=rAh^i-o;hOAZEaLEa?bmFrK&B8-Q#I4}awtm!|4uR@A|MpWn zo0o6*WBxOSX-=Yrwu8($+P&g>j~6Ftk}1MmI{V`_i0G^AT)=HyO9cFuWGiq@ zV1*m}sn=Hi6I%RsNw(@^yVS~gYYYb{hQ=gJm+qX!SBa4|1WkkJh#TfXLOM+^E(@i% z&B`NTWzladV$#BfdmDXi(&FPX*?XY5wB!sjrwlbejd{A15i{f_boXm2KI`LrVY+1} zaiy@+r=6GC?g}kb(g1IxV8Z_;%*1rtXYCPjb1~IIx#{0Z|JzufAKJr(I$$`DCs{!l z-biX#AR7;boQr0pJuX#-i4kPXO*;%)P!y@0FFxvV?;2Z7lW5JDle3vC$6$>#053|L zej^((2`klNn6mh*To{YOD0#j*T*ss+N=4Fhzu~{`kSHB4kK6xRqO$5F-FKwhqmt?* zEr9MAGZ0P30ZTF!vPN|d9^)0o4JO4V5Lgi@IKO{3@waAVMx!fKWi3Ny$EVp5Sj)Sx zn*umtvHZ+gp&ZpusbA^+H_YHaIU8c2Lk+F2X8)BdDLiLIr?J$#@ z(RdZVPru%L@91fZ-RZiw%Op`F*K&!iH4Oj#A*!EyC(g+E+a{c{qo4IflP2IR@o%Wp z+}9#$YOa*$9+#>3%I{URB(Z))^}^3#N+=bL06Sa!4Zh5I7U|UI*ci+Eb+CIgZ9BPC zsX3bj(f2`GD1yN1lgKq6{FhzSLAVHC8tyHK*&cOjC>`2n-9FY@Icbzk!22$3%j_h`P>c?|k6JR6zIXse9R$ZUDI{_EX$Sg%m9 z39pCp@@})he(1A=t zqRbSPB(9awp?F;i&MfjBY@AzV+DfoF47`XCvBIwSRdYk~&Mxk4KJrDFi4&Mv z5O)yeY{VTyg%&GA(6JYDufjv>N1go(aq+snRe18gHb&m8FgTIKINFe%c}y=_gPwmo z3?+nIHC~YYL`3#u9C1-0#br#4dHA8Zb1>&@qz40qipbDFHdc)A;L*b_{4S zAuWd8fM#JY)EJWfLS&a|E5*4(m$I<@GU4~k0%Wu}V>9V08h#_iSr=xbl`pO9`x!fK zL8F)@ph}`*|4j7*fp7Ioj1BCSUxo68b4Vv8#;rST46tx03>!3vU*F!MQW|9YTAPgr zFXk(*tqf(E$u#+Bm7rGGBL1xwkI*I?f*Z$A%Pdp=!zoKPQ;j?8hv&UTqc(U{I0~Z2 z;e$(5pshP|ousp!to$RK?Hifiozn(-LE8R64P>k>Y%CDi;og;6ns(=UD=s9qV?fp& zIDu1*wYb-odR_H}<>_nJ8ps;4U({I6DYW6*334ZNeTbm~E~mw*oOPFlTXpdsWa76) zOsxB;XMa?Pqagp~4*rXTqF*Mut(GO_g6tO(`rPxcG`Q%a7l)Q?Ps@lgmSM!C3%8@T zkQ_0V={HV#lon^pgdma05Jw$W_u`7CyTV8`MTvHair+z$Yp3`XqjWYPOEE13J^^cw zbRb;5e)pK4@5Wv*jJ9bHFIIdbI!c?iFXJnX4Nu1WMjjLbJXS?kh^c8t(*+kwPkaph zzULYTfcij3@(zJV!3*3GEJ#EhjF%m_<}RqEFGF6Vwq`$u2IrS3FwAQcCgIl#lk~p} zAE&n7pF->8cMMAb)sbo(=`R`4-UH7AF6iQ4K>}wxC^zZ$@3|{~;5|P~RczZlte>!{ z0pZxK56|X(&=$X@THP|t%#!6`3@!(08=`DMhh!q)ho5oUiTW_zne_PpGZ`~UWXNY0 zQ)bi*oaBv5u>6r$Ka$qaA$*-1LqX>k&^R|W4u$cm8>?p3Bg68H!fQ6ctj?6kb&~OK z*;me-*ycd9Tl4l>iSDr7bdJ<7N|ur(KqI*;7|$cO^2oIkZEpV^jmAS6=rqLJwm|yU zIJC}`rTxJ@PlhKz-tSMsIomk^*`&%!<=$Pi@6|z)iqma!LlayZiJ=EFbRvLO^2}k{ zD^sayk=jFn2dZZ6Y-h@KGFm|N9=HX(O#7Qdo|1G77(9hvqghr#*8rsn9)lb{@$p;6 zJ2K-6_@u}7`21dqcJ$H+L|uy?e1g@RGtmFAzetrnM{bp8X=2-;1Gd^N1F`8cyd=W{9c@z4M+u5`jL9{nYIF-1QDB-QKp_SifiNG zaJ^TTvw6K^Y37PuUpfM|0ztk`aTNn{K4?Dh8o`f@(gy-x1zyFE|9Q1<)Z&JmjmWxX zuMUaDI8B+7Nt2kPGM)~3h0GWPH;kFw<18z!@hj$L5(Y+@EzDB3mX)G4vG&W1AH z>>-J(qA3Rk()yT`kPsNmdLkL@+G?t@Je$9cFE0+XtU;WxI0V_pWshdJ?4sVz;ZT{6TrDA}#gRm|A0PIct-9BkQ9L{2n^;_}hlh<=RD?4=ACR!#@vuG!M;D@--*Nl};x zu&0>)vCuChd$WWtJ|;}NhjI8~^KED`VoOJ^4gHl95IUdQw$vWx8_QTK7vZNDawTCP zXaYNj86A~)?vepD1e-ccTGQd8Nw_k!mM3b}{dGxIJ-?8gnu8%J>lcS@UpDsaennJLLakkoLr#`wxLg-=P>v* znf<48c);tJR*Vc;O^KknIE%Rmmz3x8x*{gZa+@ctFDV+~zfpXW;#TTiM(-pJ{x&eY3e18p zYAv0FCr!EI-&NH!Yu$we%0mpgRuIYTZ)Xf#9`$Ka?GW3+;o&j-&D(kso!%xdBBu~4 zev34nd4tzG3ifct_@6#>wpUV4&ScSaB9@tj+S*9&U<5*iRR8_-qD0KjsE0OiR&(~I zxyqY$B67@zOG_JSB;lfIqFfzRH*?sR#{Egw*hhHeB5yPaduaytswPH;}_gS9VTf}CB?`PdQOdCaab_V;3!&6(+#dGXtaDxApd}{ z*dlI^>Zu$$cYyKOzB>kpjt~be&>MsW1}I6`S;J~!q;|f-)E=lL(j$0fPdMezZ&CSv!*6= zfExp+%~e=i=F1gP%Yw|wwW|5@7z$4OrpewESb2d2*C87d0eE?Tk*EBjy28pv$7iMt zhQtKKb@(yJ0RjcY;nNoMJeIFh7)M22upBFCXr{&bl z8JIAK)D%Po${^H4aH5(6ikn;q1)vvb`MaR-{A!E@EaB?ne1khNDcI8fJ$2{DXt_yF31T+l6v2Z~ud z;aB&7e@UY`BQ$it?b%Hrv!B+JKwF~BP!BrG(EQJJ4*ug|K4~Lbdw6-NtDkCl1PvWE z{NKV4ka-wuVIXfvNYlID;*F?)P+{9V6Kh=Ho@D{CJlvd1o@RmlZ@RfDerMqp;3bqT7$=T7A^wT*9H2M!O0ztwuoD07sVmWq zmvjPfkDw*s*#T?q^_MWt>I9pZ-(I=qyt6{qRnvQy9bf8bf{zc|c zo{}JJkaeL&hzEo!wkZQ9<_G({((q*v9=S!B2jV%1ydJYh$Ol*9On-bcBLcvWAeCPZ zQG#C%$vVUXD667hj$sqb15ZK29e95HmI|at`j!;r8wE}@KUG)_kfy{#wwH?%?7lp2 zEXe`?b^S8P8%9C7mzTKo^NRnrDTBh&HmFA+z%kFe3eC?{eQV~3qx;tbXXR}hx1#6q z9m4|b19s#Azl`t}|CBIA9(nTWUHx7m!J)ZL58U`P%b?!UK@$l; znM!^>!^1eUV!|^Zc*Gu90HJ~deu95Zz1;XlJs@X>k7}bvRVVIG_RaRu(KD0MZ?qfh7{~=Wzci{n;nrj;FTc1$! zFTI`yW|GH?jhglIPmVFl5Kh*70`Ky8rQEAxtTH(ob7kH!BOT0lJcb{1 zLO#(AKaR_v8sD2FUp2;`n4I}ii!w*mD06B3=oIgnd{fk0`P^HxiZ~nVKGrt*Ok=Zi zlZK8N*=3(H;7-27>hBt%UFuuL`g5G_?uSm2-K}$VwO=>;m)ACPdHs8I8Tk*DbJCCJ zJ~+h}^SGI&3e}Ow`j=D^$n#SeYdV9H#BT3239~3_i2AY4APA$h*pTp<~E1pB)QSNt2^-W&U(mBAdC$~Ty zQfg77CvTd;PCgThjyUltRIHoGQ(lh7NnW=RE#}NutDvL;3*0ZS$4;_r8OU2)WRH$m zF_E|IDux)+(lAx7z=4(2aZcbRur77A-Yc}BX(yqR%0kwyV%~<0V^5&j$f$w8mCacZlr9f%S^d#5vX{&{a2ZikBL%c zBuaA1qHw>-^c*dA!&aFxGFmcup=>b;8?AODPr0p2w77n$%x%!xW`|sLU0?ydX(_oY zM0-gEsZf#0RQ{}DI9l?Nwrk(n^O~LZxZbi>p`1fs*)kS0iSk*YP|)xK1mzZ6KA&_V@^7HBOo%NDm#tB%wuY3L}M54)t~dCRb- zQX5%wieUf?=8HR#Q;LXWAE9UCeLMihp@UbcG7s9d2THUp5<{QQ=J`(_paG53(~cqa zt5*4N=r$Q@(kVM^6ff)d6goA0Y21w(4<>bLGFuw!+Om-hYSj`JOcXqMoB0h5V@alv zE>>~>$dE4WBD`S*4DLW(x|T?j}&w=gi4ru*eEzOL`{ILhpQ*yl_(92 zX67g_HHI?~21*1{O(%_CX%p*5iY{0vuG5nAGEk3#SjO8(hl~_&zDx+!w2W}1Efh(Q zR1@!lB;1#Za9Jtz{0NUNtgO42(vA%i>oCF7jo04fkEv|Cgm9v>6 zbmyc-P!aunCe5p`}**7VNLPHt!81kQtt-hWYe2_S@gfqfEZSs2{p#Ch}}rG!pUsb;uBccX{b4?wlb6c+*eQWDGaeM|UKBa}+rP0}7mo8!0#3JP+5* zQxpRSX>meCcQRox#SJYzTf<$ z0DJu$4U-az$9!bjldyrsFmXbQ#wgr#b4Zla-T6tsU6oC8@vm-Js&z?~wK;eVIM6>i zWo{RZLhH`G8Tv|Gq<8q>k#?e5`jjDhs9)iLFyG?&7xnFbpe_n4%DKHO!l5QQ#>%Kv zu|hh}g1wmb({GvgKAf4Sp!RjQm|Ni}bHa-_<8nb?eOCck86$uz@RBCHqHM!N%<#l( z`(^5O!U*AZEE+3XTj5VaHmC(+uE`QkgbBCe8E$u7k2_HGMX|se`FH4?zgqd>JdL&# z$^-=}^p})JLTCS~qk1@WOad#meZU%B1uGLa_uNEyVuIHh2R9(VErkzbGa5>Ir}0n6 zS!||yt~9D4nMdBi)hA0KCrhq>qhTa^M~3R8u7>7Oe#c))L~zC6O*B;RTHgxZtZ$Rh z5qgeP@ysK-7*d04gI#MFU3QZmExB1)-*VE!lIlYr+@(W5PxIZbQ+r|b%a#$ zNH8p$M*ZdM6nkHxmq*azxM}4WauH#!0)Z>jQPS1<7OAQ~f}rC)Y$rkHumNBr-9EK& zb)9nTpzZ_Eq)!C~fIXD#(Cr(FuyU{Z{=aPn5%m#nk{^`-&mZH;{}Fg)V*7u9SL(jj zI7@hZWM=Q`Tgw(YrtSBD&QO;a89{NRSjb3V(x|KY*c*dB^eU7YtohYpGI!nAp3gbgUcg`5 z64zTNyw~sDJ=@Pb@3f{3jvKDrNv+F6_Mse?(1+vmNe-g(1o7WID=yysa1Qgv&g;2F ziwm>7Mof`#_E(?&+NxvNt)=|Ov9sN4gi{m{Z5UuN9ng$&ZH;F8aj_`Z zbC;s!necA77!hVL-40Jxbg>OuYFhSQ7x$sJgwNluDwHQC?$Mrl z?0t`?Gs#-5kU%wo$GfzGJAr@=Wl2P7UtuOy?tYlpXbo9V%W;ftTLCcNBmnYb75ms z*0GFGd-hbCnxL1%fn_005sLO;uE&m!KUo5hTl)AIzM2dqE28z}iH6Rf;kAZLu`Sh! zcfOJWYG?-8k33kgt)Q2p?UY1x!HCR>M0j?YOud_2!C8)7=|ny{!xVTGgz( zMF|6NX>aBm2H%H@({|9rc*393HW5(}@@XnN`D8wQa;pp)+GRZ_c# zQ&2$eE4dz+X=Pe#Txjw3d(&|GgZxlViNPY;F*f-#`bl%raABfHJh29KFRU!QK}Mqt`n>g3+t+ByF&}GEC+8Ty+Yoa;QRc&e1uKHW| z#tzOa+9y{1&(x(!Rt%x6^_ScTLqa~PX;^lQaLc1x5I6}I#zDDi#YuL1YevMZ`kxXH z$R8)GzL}K+Zs=Wi0o8~s8pL|U5xY58B*F)%5GbCDS@pkRc3mv}-iQX!gwkFwlzu!2 zFK{R6Rx~R*6V)t?f9=(CiFJNsX#D1LyZ8gMSWP1jsAjh|BhbLt+PGVl^SXEo+EIEc z>iYy&V~o~aA|reZSNAqV<$gkPM33!w;MvzLaXsU@2=Ew(MA>pC<0z6dr(n||(3yeU z@Rd_Q>{!fjw|Ql0v7KTJy=Q;v<-O|D5&6d&Hg*^$fv<6w(}W58McN|u2EU-4;HBNz*~H( zm{PwF^1%I~7v|3{?^OlKJKD!eEz`9!x03ghEAa=og!VAOGuS5b&`8SZf@n}zY1JzHwwELWQW#TI_}UzELLaBV@iHX7TuZQI$gZQHiJ zW820KcI;%wwr$%^?t0Iyd+R&r&sV2vJ~h|u?lneZR#%TP2WZ3nAuWOC@`2o}erSQO z#G4SREK!RXgp7U(3wad4CziV`@Oe>K2A8|^_AfMd<(JcXCKf_^b)=>U zv|)h!BN*O=U`@YkxQwUzU?l|U_}CdJ5P5onP~{b7<)3)gIXR0f`_L)dxLcCt0L~U% z>_oYg@}ZTR9UfRAYx!5jzF9 zMfBGe%GLk|aIw8ufLULW6o`)QUC{U>I`3{6hIZrVuLxf=3Sayy^HcLg)GmLPF zoNPE?jel^MJ@GhwL4CI|FaK`HG(E`b?iD?Ne-BulkDr-oaFY9x-S91(`j*4<`?C{1 zTHbrb?Su%41b^n>F7Lay6@5w|KM|iyD;z*s1pC?-LUjM*Dp(}(gvZ^UFG47`80fFM zz^68u4&q$vc??~uR!g&b=&Pbn+4L(Zz0(h&w^HF_^e8_Uyu= znYpl_GZ*{PT$X~7x;(0V95iO{5y!KS&qjl(q>1?p6w}V!d?hbpJ!8ve{nSU+x_!3Xc@*UGe#kv#86YvF5(xRY=6IOHrA*@4~f!; zfME>b_2ub|*_TW18xQ1F@L2u_T?+xn#<*pE1w*zuzkTLYOc)^Km~J!Eh27O8hao{T zw%t|B=x+>h;}`{tX)V+1)=@s=M6Y1Y8z$|aFtKAZ*oU~VxA>v7PEp#_v}0V}b&IRe zY=!i>3`dF1Jmxk%rZHI^)8oD87O7+5=t&dDPFv3L&v}vunEE58aoze+Um(sotCY3P zHHJp`jBu%A`Q#WV1?-2FX_E(XfDzdPPxjmy^BJ9LNe-i#p>2uobPRgDUqdn-^_X#OzMKFeimROnD z<9IwUruCC3IiaVA#>5n6Gfemv6AdKIGBIdqm9pgbY%-UiZk=z>K#^C6zG47YZO{u1?2+u#5?e$Z)Ci79%it)#aq!(rU+42Xm{Yw6{pRV6w)Hip}{B7136y`yEM z(lV8|qCk5%l}T*T{^BN1Q4D(&MT5l(l3BIV}|YhM4?N&EkGy0H5n zP8a`I10Gu|V<|f$3oCnz|KTWs?C-!!21tlp126?*`M;R~{U20>O-#&OT>fJaRGI;A zt1^QB?`Dm$1$A=}xSZa$M!zqH3FlzdDyaxfVAI>=JfZy|1LINDF z=H>e3XXoc)tJ|k#hEa2NfSs~KMuVscdoG@rg#?l6!%XhiMnNP9&36j-Kl$q!xDM|O zYZ&eHzFKTt1D>QG8XWt|N9(xgecsW~$#5Y|!A()?S1b?momP zH+WD>bmjNmbPfSLH8aRe+n~OA;!`R~WOlYY_ns4|-}(U-HVfyA87wKXp17NLnm_0J zg;)HY>m5GuWjmLf|N>Ln~8A`~W zDa6@h%Y~sLdy!SZ4T+N!s(SvyhIL1XfHaBh%hL9!=_Fpwj~pTu79)^vM;t^EaEQfB z*>cuJC_f@fDc6G3fq*!4UC+G?fMG9`ONBC@iZYZ|bngB4aaA9bXv%}FR&sv*G#{6O zf*a?D-BsFh=tzT+E`bEUkolWhZeEd#pA4St;7$_<#vy50yu{M^*SP|X==^#USgNQ- zxFY?pmxJYCMaswA_@!minim^C+A}}>-enVPMgt(u+l%e>C>_}65P|9^gMWS-&pk5- zJ#{s`c3?-cbv^mQr?V*y&MR}jVJln9e)N@@xy}6lEO{_k@UW%6z2s@ch28`_htQrs zhI2CLvd+l>3(a;_3_^SAw;2@OcW%tlkjW7}T;TRwqs4lzStaFEYwZIsRlxKnB ze67Ew2r*v-VZFz%U!yD`NL{(Dsok};Z<$RnvedrowGSdE^Zd#8bd&?~G>&<%aWPz6)d-6Ft8vx%+Hyl&0hi_$s77j)ILId3k9zo$Y~Mj6|_7vbun16Rz(PQq4i(Eb%Z z%3o6c^&281tH=PW3k1rwA~7V15Ar%YQF++0q5zg<3k(EJVc6}x#p@2wXKOjC{eAA# zaMZA#rn4f)p=(%ax6*hq)_8dICFARbZ{Q!sNao$5Fd4Vj@NvmDHTkG^XBlUB^phAo zoX@z+=eA)viz`^H-=X~+X`y3FrXStycoCkJru1?V(%9Je-u1vclbjF!3Ws>hlaG&M z9TPVGyoOn`$4H2|!nER)_$jD0`X+xZ@O($v^>NM%^H=B@w-qz1!_V~TX7@V4yOZi? z4I|OrqvyL-@a%mCx`5FysJc}^d(tY=w$9fTb8YyBW22>WOnoT#9~YQ_&p(sa>(pi$ zwO!iKZ>Z7Kf%rfalz}!4lX8VXeqRnZE#ia14Z zMeIVzU+TimqxZ{qa}X~@#Iqb7X!!tz@79ytphfdVq8 zA42XTj6ilot|+4tr)=@Q;Ul~w{M*Nm472>9wIE(ldXU~Jvp#&|5q#rx|2yJ`=2ue4Wm!%R52*J#jqCMCIbRZ*Gpd z_L+eWthR+&k3Q|g>ZAlOw;S-5L_Wne^C*8fH~y~sj3W<-t6-sn%g#yLh?KxPth_~_ zI?6l!%Pap&+u)hQ<~2q6OOQG;%SMJnd#qP=L;YNH4o@4vPj4W9DqQfj2Er?BIa_J( zuOTyc$y3pCz&eqjWr9umU(WG(?89O5OFfy<9&%HYE{mc4x3hU~U}%u5vxwZ4UG8!T zSQKL48j8@DeQ%Me-#ve74iUd0L|(K1h9iA{yP)>}baA5e{|xen<}Do0M#&Su+y6}p zAtx-v{^e1Kt|$ITZzINu?3b@4RS(}J5HwA;NIB~Px(K=W>jHEgfOotlc(MqUYfZBD zA2BxG=#^e>nh5k($WAMquRg5htS~zlgp|h!V+vzd_ISBHp-EZWyp@u4mh5=Ti}l9l zWt|Ph3A>8nm03-TSvGH+SezS*;vIxuIls*cD_L}# zb3THhin}-*b~gid>vKeG_ShXJOKX107@Ql#Ht~Q#s-(=3h?rNyJLQ>t|B@?D-}@mu zvWDw0&=HjVuz0+i+{RiGZckHvh5$@`n#ULpksXC29-oeK^{KgP#`)8DW_q#@U&zcb zPUw2!LQgv42%NF$q9;W;yD#dH;gj4w9A`(!EAu{cO#%YRSgU&SntuH&uIAma{1eqg zh`P6Wk||+JROjd#SEviR6@}9wi5$UP@qX|zNz;T_7A;qUR$ZS5Hr4#( z{-{`%PeF%D)^O-b6M@5+cecOW9dFs%upfS(;*zY$(GTVU#%v=&pF2si<_DAVcwNL3OBdy%Kk=sHSOdAfjIMpnCV|1BT4E zF|w@+c3u$av?7uuM0dqY5%W`#5n5Oi>qWm-qwo?rVPGVca`S|fR^r?b(0|vF+Tt4) zK*9q7$pM^N+5b0ZE_+uiBU>w@|2lTnXdyZ#A7KY1``W2M$pvynqs6{fZsBx1A|@q8 zS!K_sl_s=M?`y?aWs5M`d7ojbYbv!WO1wc8wW0Dms9d+?KG>IcJ`ir}7F5SXc``-3 zX=`Wltf0gbKXBOdG@khN{z$c6Tz`5S^qlx@pZt7u^)h;0EYpcCt0^>NYz8Xg?$^y< zOBO`0VIzfGf^I_KD;vPd5@DXk*cXejyP{lAVLQv4R?%NQv-*QO;BRs&LD?0)GK(GB zMk-Sh#_k$eerx-nsdYeYxiS!!g6o`NQ+uiuknmJ`qi0nwbygcURr2)BK@T5vT@v@?f~JEywO}= z*4|@R3NG=0@Np;8y1^Veacs$sri9uOXQ&ak301p4tg-CuB3L#d|=746DPOshC;tZHiNM~PQ zDZ}OlAsje~vR)2|6XK8OBY_jiIw#WA4WdMbP%AkK*6qu4#NVJi!{5k@8VUSCfBYy5 z|2`;-p!ZvF7jj|BIYD2K4_-#3e>=@L^IFi1O~vTzhCa0;WQ4q7^GUKWAz>9;l>7l7 zevdX~t_O~FdZk*PB&NYLU&4wY9H9$K=Cco{EmD~P=M-a;nCnWG#)ZbLS62LjtB zV=UK(O}tg%6m?);_CtqmL-Y1?wgd7Wd3YDynhYkdkl&M0tQ)JO=2YBjWOY40w18>R zj=FG=L&VQ7z|X4zRzFjl04hac+CnE%$CDgh_H?VD*jp zGf{h75bl#Sf^YRH%+_V^cX~@~+vzznr=160{5j=HHf7OqN~WHJ`(k$NKx=TNR7Sp` zB`=v#7+G~rdRe>nW-ta7`l3VBz*%;nu#0gJ9W{M*dUOlf)<66r_~8}3rl3K(pcCXIS_l&L@OJ5hd|d-7Q)_Z^BhDloqa9+ylge%Pul9)DQi!HP1PJs2$K~-L?L6rvwq7T!?J_ zg!_JfxqQ(6&41(tR0{|7N>Kxi1efrsrR4z_J}TS@eqM{N1H{*ZHLXjSZ^^}ZgmmL6>f2{PI_ zGc}nhz?bZs+0Z);Oc+)rbSpX&+Y5k|l$yrqnfum^GJ`k`$Enn#s*+B#wgX2*`HZ9G zn!k~=knbdN6hy}CoNzh-Z`fu^HyoRpEXGo)W%JFDN&@S|uZ8zBk7vlI3SoLXVtNl= zH}>;Qiu7tx8tFazSX~G-B8TTeKpwgq+VSM(Wd#b_b70P!=Dx4OnHp3GSIo6}5cbFK zfz+r*Q^)GU=HM*uvVHF1=x#NJs~UpBC;PsKYwRBnaQVb}!=flK{Hv7Vp7||4`p&tK zpzGWvtSei4u&RNyKRZLz6v3tpgdYWjHhl-OdI!@G>ni?441?EC1|0-eQ1M|f)Dazf zMoh~(eZz;c0Oba^VtvX4c8}ak=mxD#Lu2|P`ccAsE zQzVEr3{7R;PA9<*l>YEAL){%TX}=()b6+*yE(9zu6U|o^i^l_O_ZVJL z9%r40pk7*sT99u0hN7(GB9;Cz6rzJPUC;2;#2xr}@8HPd%rSSp6ONtb!U6;a)dBiTcps=UsXPO;fKsl%oJ+%P z<6D!l5cf}H7=`PS0&nxtiuzvWHf;7`XQKjJH0=#LH=O~ec)4hiramGKipb;F$*_vr z*&>R--m~%YEuHywag`&=>}hiuM2yYrk@`ts6XIrn>kL?v!o>=Z0Rx;t-kNnFi)J5L zI4i;AKOv<*uT!#!3B%ucfm!#RYwohqvy`_f54Jo9kD;F++9LkIdv$A^eRksTuY5tb zE&opJLcM<_Z7`1U%S;P1-Bh#jQcoR=MAwjXl?wSqD9%{@iZuXI6R*$+az;A$D^N$R z0&j_qP|OY*r(9I8xsAql18ojeLEP_53Hi>vJq-V%8Ns(gppq4f=-E6JV-gcn#OZ_Zr4>hAdl=wp|$qSqP1Q;io`)Y ziF7^*tRhBBkC?HS1oKw9X6VMUir0^M{H?#}r&PoxWg^jY+A3&pcr}Sh`mfi`GtZ*1 z;v%^M6jp4D5;MwK0wbz}AcX2gB?Rjs8sgi+i@|&1Uw&2Q9CZO)s0Rdr2kLf-@T46? zg`DX#YXJw!IgR2}=sO4%XCXs+N0-5N){W}twuA??LhP-tP60c}NnFgE>|0+g zW76+X@a&u?XRuG%%Bk?;WA5<~e<_yH*7}~Z=ANlP>0HKFvJJ9!Dtf$|VJH#yHdM5Xb$_+U z;_jWOwCe4-^ZztpI!k^_*XS0JA2&TL z^$wcVxJjld*&J0iy~-@E|2D4F*eO_ zkouA6;k=!8uoi2I?S=uXs`Xj2dlEmUtw5qBUem02bP+qe(=w(lkw`c25C?6SiQg!E z^mVPqUpMAHoJd#v+#`AP^-wc&GOCR#nYQQkO4(p1e*;d#8=sfSMYAzy1?WO69@m%4 zI&;-!3S^5f-3ImCD9bsWEDgQe&my3@dD&QP2w_QgliFshF44@B;9JaF?RVzMr%)(Q z(~tqV`_2g*!1$gS=jNG)Iws@-ID(fgMsG2j6-cCv-hE2gV1T9V zrYBF43s1>8nCa%v+NoWY6X#Nsk*6!C5tf+1zc7Y;N8_spF_7jK#x_Vk# zS_Dw9V*XQpZjM%EpnZ5PGg_aOKr3=wT!#*U=SH_KIr_` zyt(|q+1hoiSTM$0bVGS`eYI4ZTEOWW$1tmDPShx9!~KFJ>lu=PXX^~H7o>@fgRKC$ z3IZyVc@7Wn^a<6=;BPA-4GuIIi&*~_c9q>N4np|HCa_>vOsUYd@{$PKDmqm7A&IHF zjNRX!cvX=r{#o3(OO($C3ZJh+#Wq+*K~#j)4+sd5Q^Ef(S*^r&#ry&!gd7BZzgPR2;%5y;#BiKo53_d8Z1I0`_4l?QFn-}t?F|q79zZmC6iDE!$mCKLM|Jh*P6JaeCQbhBTR9HC%-K{uHKy@e(cI|=fGvkY` zM$*+cI^SWoswBcZG7IBneM7;VqE%M+hK*?_=FU!MF$OLKYuh6mwTewv3rkLK4^EJY zY(gE$#gCZTPukMuZnC`!cJf+?p-a69%pS(>Y`%{$`!GRrTs`-(Tx%C+BVe{ZxfFFa zInrD3{S<#o6uzSQfjrfpwI}Z;N#mN_ub}5};+A8p7A8!B0JxBBJ;%bLbwH-P^^Tp&wRBy$Hemva)6KD7z>y>{v>~+-^ zz0NKNeQYUQW;cCG2rqggq>86*2lU$e)V`ieuI|}Z)r^*{@PJrs+?;J z$Gv|zp1vzDyl<8*J2k+ z$ho9lxwW&} zPPlx0mowU{a0rO)F3Lf+@@rlOLrr&h8P{-!euA?>q90y)GmSTgfPrx>UL?bI56f zE>#K$pIDCLRLcKK*Uj^oz_ExA)3aaUcF>cMfY`K!-G6#!BeidRN#&X6s+42H$Xq%k z5OCV^z&|pr3gFK2xC%$kJ;a$`2@hRQn2?h^_`E5Y%k?&&vH?C7R(aITK9R<~2Y#b8 zu~yFyLR%?!(o`MgtDPtm5oQ=1IV_QE$M6*&t)PcI*tgClOnSI*GZOJDvZ%~JPbqax zj_qWCm&t@{ekc6zThiusG@&mj5D*&p|4!K>V&(el|Bp*%rn+OZp^nz`ov7|MS?y{L zb{rw&tgzDL#qGk_Brij;_ln84H8-YZeoqmbv-X~th0XtN|Ye?8>Yy2+lDC@4PRNRCsvrZYz(qoaVTeo7G z;IgHBo%B+Y^5maz**Yt60Uc$y4iW`A>S%2zCsS1{boq&PvzmnT$_`bOTALvi6H*f( z`ATp#>OU;DbpvT)u@p;Q{B4xm{3rw*?IbVw17e+r+b=}AR) zR=;X~O2NxtNu?YwD#W&0br{tVzP3+%fn$;+RVXslBvDah_cMPu{(xsEy6M2MP-CS- ztZbVruYzJn*7+l)lQb*QqJAOq`?}lfw3ogP9N&i0BCT+t?XqI3$o^LtEAt4EKGp0|Lzcwkr%-=GJX$R_sxVpvIh*T&)<1$Y|`liI6ZAL&m9t6~Q0}XUsSg#Tbbs z!X$M``hZy-JifA@rA%ggAG*DEx>~cKlfmKPdI*U-k-dS>CQ?z>v?@n&h&!M-3`MRk zD&ReB8<->{E@mk->qAZ?T9DHR8KmhmR>Nkk{>D#v+X5HQrnc%D(-4zqbrJmKcah-F z-q{%&NcjTgdr|TF5r{2+VOAfpHT(g-@oXi?juD`W^5$ma!N|zV$igDTzMi0$dJu6x zjfp-<^1G^ZWW$J&bqh?V6iE)cwQP#-C;5i>0I3d??S4&}Wg?v#0w^o@L+MDNLGmpa z9F>(d@$@Fi8>rPyOT6S|hg_hQw2g;ZBe@xPIX%bS#@)iDFt`MUByA~9I{M7`MFG(w z#WnNf4z(Z-v2D#mEgGrQ6Lf_JPJJ2A`_tn$(08}ae~j$a(e6dGi|`Wt&zSvFa0 z%YsEHM((PAE1oIXuu;gcX>C(3*NUKL7AmB9{BD-nO;`6pQbI7ivAcxd|IC=eY(hT5 ztS4;zC~`0Q<`FN3-5k9I0wc@p|{r$(#OGQCHR?ddo4KdC!y~R5v-w7R6=^L$BO^m%ip6KyX zbKwZSS1bw} z!J5Gi;ksJU8fb4i#mEX*n=}>g$foK|4vkIcVwy2;g?MhGMiI6@(k%j?48Jy<(%O7* zcSc)u-DosRx_{!@^H-UYr|X0vngzgF{&o=lWkNSSz*O`fN=MdgQB9GccpS9ZR1=Q2 zQ8*P>(U!5h66)6JZbQWedj(Bs{21<{<#ZCA#rn!ZT+xJ$r(RUHA%JwdA;*Z;qNYaW%XkB%ysmCXSfNP&B>7L)ytUeJm_L;k%fU zG05OYBfz6`<&bZ{6ESa1>{^ughm^6IxCV8$TJ4&-VdcB+8;0eX2+fjPcx0PP(Q7X= zwX=EL&20#>cgISdp@>3a#9p9rdas4&y=uh^k)4~zy*GA=XMkQCKl_em>IqwOGb41J z$o5xp5!LUzzX`_db*LxznW1dF@%v7Ra<~3r5q5GL6*4A0a7f7laEbDdIA$)N=3fFWo*farvUn_9{)3Tir8$*V}%A z`43xfwPGs4EjONJ2cW1TFT`(7p{OGHo{EZ5r^J#0!eTSttWBuirNGna#m7WjbxNFn zB#yV@93|n<9gh;e{Uti9xFe`yqQEz0#6#^xI(MqmCw9V3#jg0JbscKAyd)txi4NJv zjvT0+YSb^{ak9Gz0w#LW_&aTA4Eut{hHRHGZ`;vk6>U+1;yY zKg}LsCip{2iDa>$l-6?)A%IB?CSXOvLk?=v@t}AzkvtEJXNw;c?)^=G`W=$^iwg^p zd~hI$U$ii2^!8tzwM4UtMS(`tuK{2stSDXtvGBJne0CvsC?#Sx5-_2>d7fD&tmt?y zxEZB>o%CMfI#?BEdu>-(E!NdpoNlncz7mN>iRmNqQxC_V&29b9A4J4sbZBGuTa zg+ch^Q7Iu*t>aN>&vF&un4kY=0eqvw zKE`zL%c>)|FgjS~_F-eKlEt`5Z>S(I&hF$h?H_Nr8*2A~#pCtp$;)|Sd{!SPW2@@N z7=K)CdY}70bc2#f%I<2MWA--BZ4$X-@m<$#GSWHznZ@S;d%xQH!e4?^7yfv13Zu6Tgg@08KM$^n$4!c- zcmo-Xa9*ukww67?u}-KnH;xMY@CiEP=V##3au*B#!3_`z1DUS1rew$JseZu=+uYif z^_WCEmo(9Rd+hseq{ zD@9LkFsEJOi)>XmVsAaLd7gLIdjmq+e< z9`ZQ5;CmP@8s9QL9#`Mm=WSwnh?VUr;-IcJWBF*UGz6M`}?7R^- z#(NFnJ`Tl%y>$0_xQ9!=-Ub`ihf9!vyNUSLe@Iw+9~AK)jfVzf1Uo_;z8kSYn+c#vO zw}>qCNjDRyBJ8-=%AXB{4U;Rwb)ovZK)Hf87Xi7cpa zmJgANrwZHoytUIs1y@dH-GtE5uIR^{WXQRv^vG(K<&;8U{4TsGjLGO0A| zMxA$T3S@Sbmij-RBbrDV0cEaMq|1 zsO(!SSpk}y6}?9Kb{j2do9)XAe`;28db$6>)*nLKZj!dF zei;9f{^Bdx{C<4%9|d~0gvshaX=qjs#2e~!z4_^ zHI&-Z$WL0I7dgf$F`)_nB-Dftg9Ak{SDi!*tYkUP@TLM!?bKEwL6!m2F)<1%G8SNA zK|}d~cz7J>FXW?W?MfT{S3pIks%t{!RFDz%_yP-U)TW>~SEH;NGgus+0kQrs)S03V_U>lRuKy7?F17s}(af@LGOwjbrsqN9c&zyvF558S z%|Sy%Bz2RKP*6}Zd?VzDg2_;z$Z*XySK*1d4s)bfqX=3(G&&YJ(HG@ve zS(L-o#dTfDi^UAx!F6)L5d2}JNMFi52Phlo$G&Wmh`N|GkXZ0OeIa|Kf*+ul?DHsI zc$JXi=#WE);rsy!o$O*casqE?S&klW+OmlXcfqocR|LNIU&h*0$PABo>EO zxrfU^ACgj19*Z~8z1Gmhj>N#ZCyrY$-RJo7WS{Gd?S#EzRE~f=Wt0=hJh(KOv>>&s*X$h)*=SgKUfst| z=(u&9YNkxZgP(ild6RXE@%(?6clR1{uB~s2y{!AMbn`z#&FSThdPw*xgP3aN?t%*Z z$A{_WbiThL2xE7}qPdqZtJ<^&wBbUVv5b$E2z{Paoh-Q&B1~-Uk&15AE@s>W{<`E6 zF4bRDzL>ylEY&lgyJ}pxT^z(U2mE0co9kiz0Jm*%ld#h>skO0@I}v*?zV?p$u2?7* z#5k+HI67N@J}yavmwRH+=)T=L>74P%{~3vA<@Nrd`n_0?eV(JP(6oL>wt?Yccp$gF zeJQ=ZXK!U?@3!PHztrlGQuy(%>ml!g_jaM`=TUXS^A^5*Y$t_yDe26<;4o=v*L%oZ zUik9vQ@~}!Jj;l!4f9ANnkf`8qKGj|9PS(xj;#&-*b0XZ-2E>B^%PI^NN9#t72Y+W zP`f~o=@D$!1E@k4^ar6SzHor# z$uCqN^gX4}zMvZ}7s%S8g0Lc@kTdX^$rYy}w$P*BBO=hhZ}vk-(BicCc1t11oz<1V z5>qrExO-xjJdsCCL?h6hg$_<+3P%Hr1 z+&_We*$;@P)YF0m5CA9v;0=Hrpt2hP1?O*IyTeb=^Mg;&^?z@Wk6jAMM<3VBH4FXUw^oE&t0v#!s92|gB*Sec8 zm2ClSNe<|X0Du+tv>+ZUN1zjf*K2@1 z@qfqwI`20OXqOLIC&0o{c%S@xg=C8dJk$weft|Y zz0!n;&0LplSMIi!%~J!%r*SZ$T!+Rrpd@ZVpsHK-RH{OiVUMjasG*p1g35JjJcwqD znaP|-WVoAF>{RpWTc}*LxtD0z{}Xvh$8&Zz-R$%f%I8)%1#-{RD1XGaav~#nZ4L+h z=G?K%bYPx)+g}iy!lBdr%w*CCAx=!zSLcm)7cM>jpxM+bIN_aD%If80r&<94Ey_2F zZ-n?;qD(cJu|%klwQs?$8mDvW2Zg+-AoMU0bw@8bHsnvtYNjYPgfP;~cu=X1XwCkb z-%2Pggz)#%-B|KA_uAx&iks4dM%kjskE9PYt7>V}8hxJrfo8DvZULSq{Fhg9ENF=V z!sgPd97PL4OVro?*nmY8r*;nxyneJw9OTRlYP`?E1Aq5CjYq)NJC1poh*j`+^wkBm zdRB77IL!}(sPycQN^!5Z^YHrv{I+M^;pr4-xZ&smC3>epNR1mm^Igi<&fr1xiMo2b zkJqokdKU_gm-azVmVGEM3i7vq)Vhxv+fe#U$0={Dl}?y6heFN52(}y?aS81;m^wo) z&P45ZBsyg-J=&d13wC#4^rY?X7qdru&FM_LGgyvch_hf$W;yU>$XS=@qxwU+k=dqo zTV%YzYjsX1!*UJDvMq{?zM|KY@L?hs)+`h+B_R&f27as)z6C7x7-SJJtSWo{#n+oi z8D&ev`?t>fj@Zap+o2sf$@qi=b$xLPw?29Zt2n`g**JrZTPDUKT)$;rhpa*z;wUXm zH?QjcL{bYXy-)PNKV9g_akH%5jm4UvRzSfEa>L8?G zbzyKbja&>Wr-ydQ!(nI*2XypEBr7Z*O3n5UGdYnCF3k^z4=!uO&L~*E83@0blzcM3 zaz-HKbE_d7M&LkN${qgOirtE_Y8}t#3*ns3#yl4xIKmdTO{bHhyQ>fPRP5 z`di(&-XqePNbdVeBX5Q`#Ulh0<=6Y&bRsBycy?{tKk4YZBXkudp-Ym)<@z zKfj#vH{3P9;}}HmTvd6cZwYoz_BT~M-vkrnB);fGATer7r5?<DA$=hRHBSX*jwaOJ z`kvdX`;Cr#VTlvePJ2Y&WZ#iEANeb;U&iTPO+^OyC~V}PU``3TpdBe}nm7+ z^AAFP`deet3hal~S-Y)qqbh^n8Qa>HI$N)kbB}TC+J@t{pnR%6N*7hbe?)tv$08W! z`TRGQ)9@tR(+qy591T@N$IDgL%z2j}#RFCbUxrw^$*c_rcWS-vj7D%szrmfwIV!k| z1C6_T&p-A#*k_cV`|m6yjuNYI)ugLOH3N;Hs{djmwuXm{V^}aA0an(>p2PtqoV`k& zFqV(&D%Yd_D<9kQfYE_t_7+_)2>niR&#J_;l9KqY4CddJKvpu`qsNJia2HW#*y(d} zh5JNz+>IXc|q4xdIm zF`0z0SEYE|vXFJeT#36=9J6tvayyyX&zz?wUa(uQuoI zvjj^g2>}UT!4s*dkL-Txev3K-C98eF`Df)Rb@KE+!g*716WyvS^HCyPbxwa=Uyu3M zvC(Gpq`P&c&OSdhHz}=aB9nbBr%1^Kba)$`7XUi^CTK6y}mtM8au1twxvP6Z4~nBSN$|E z`nrH*v++Fp!LfpPQ z+qe3wHEwH4JI7t{*}wTN>AOp=&vuV5SE^f z?3|KW@z{hzL>BNusZhUqUwJm`EFQ-oZCCGEy`Mj^>dWL*;8SaU$LabQZ#b=M7h#p$ zoz#yWAgFUV(dp|cax>{5Xy!j;=fiqL>Vb@fM&cwb`^-srz#=_m zP(|}L=R(44-J6}r_h$2aDTSsuv4!Csz)&Hgyw#CM8Z%nwp_Mk}w9^?d%icO+rKxW0 zI8&xfz;;dO8gPC}z`C_^g$=_EF&jYuqfX;DZpIP!l)r$Zy}WjnCl+9WB2Eax-?r3q z79S5s$Ql~);LWmi*T_4fSLcNPgEv#bt!sadzAh9|Q}}F_F&dL+Vx053tQ#zh z2(Dplj7D(Sr$=#kI-C$yjKc=*8!baZnWf(Pk(FuoZWg4qlIlkDph86%Xv!CuPq92= zUe_<9@8kwJQFlsTDGqF2Qa6(4WvcHR@fAbgOR5Xp*_1B7BxXh$0+`2Nb9PI}{QL46 zN9JG@?kN?Y;cBb@{`Qk)T96zP#7Y{p$t9LlUclQ=8fhz0LqNkCBB02%gwszS+?z(0 zj1#)&N%u{a%7fNtg%FHWc@IVvzhf&@>H8yoXV+$?^gL%^_m%WO_2uwOwm&%BHF`r? zU2W_HLUt7FqLV5yiHQhvi@26PA)Z|EV?VuP7B&-b8oQEK_Z?@~m6d7FVJXSEXWXXl zx%g8M6#X?{yib0ohv;q#-PnfZk`jI)liK>3=`+;0Pi_zv`XJl;*v3Vi7bZzzJEzK^ zHvNifGx&o>={xj@m3NtbjT+%70LEx(blF6rmA5j5Bp?1Gg}tWEN2w4lg7h~DqD z$2bV$gJ#smBCSpnWUA3}iq+ZnK4=XoelY|lRdn^duSn_r;JId01U<#FfksN}w#j%4 zlG1r$qvnd?>!ZuK2^3v(8a=oJX`t^y{0^>=IJ^Q<)qePwIam&`0Zpl5Ria4ZrO2j+1qUItFQWVru(xZeLl5@5sW$E}d zEan?hzWlWc|Fxyu?_IWwI$8^g8sNhdadc8o%?|Wa$?(< zyx*)@^Pjo@1~zxRo%U-p8f2-K=`cahT^&I7-Athe^7Eg5anlM&{2X$L3*1y zB93;iXq0ITrpXVq$Tn&3l`r;<8PZ9?VJV)RzX1EkZSvWJaolMkhOCdqLls3{?iB*= z++x=~^=mi$L;j+|IuY+g?o@r}DI0d!u+JsC?h1kzIP$aJqUZrNe8jIkO?VdVKy>u9 z6|QBxM*>B0jv>&hhv_H zU@k&dG`l?~W{O=~PP}4Pd=2}_gv=}hIyRB zm#I31zt~V8{g+4))qK1=hFUo|f%Wh|J~O&5pY|nA9ruOYexIF+Pku09$*Jg(9B9ks zt0{|<+1-Ra=IcFw-=SW5SL!b)hTXkXjkfqfdJzMzLG$($jsvpw)U>FZFJuDp@`_~U zvlo|$uD`*Q`4$=b;Nwr#-}@}ztc{Z+C97#G=2|^qJ!5+rJ&p_BUmMo_?)Av#<^4;=QX9Bw zG+qt)b4cH~Olyq&n#dQiw@n(km02>Mi;Sqyt4mZ?3h2GoH7B{GnO)QJMO1AbQe}9b zPNPshMMiq{3*BLwa4Y46uo@xo0q$ud9A1P8vMzZ|2)R? ze!<<; zC-?GEd$)4weTu0j2?kYB|9M@wCJ6{tF-;tbjBI`QpS748w`BSIBc zg>Us0@nbDOC*h5ts!XznqJp)!clL}oXqUxAb2?ABIF6j;V z`CWE6dSJ8IkJggj<%oBNTCj3t&I-H&G--`#7B`XXF$6DmNp&i!*sRGbU@3X)P1S#x zPf4E9+a>RKmrXYTA%3dP&dB+UJo~-*;0z zK9Otk%uxw;txC9nf;45=jyM9IcZG4@Fhmh`_5FZU&rEY={&jTPjRhXo7`F*oAFsm!<=8GmEBwh6#a35 zvH$AsZHF=@uRy%1*3SEPpq?C-j~1G^e}5*2nTsDecy;aS&C-1uXfx~pdo$x9Zi*Lt zdRfQ^`aC>RoK2$T#z=IxeX^cJJh6 zl1IiZ&5Zf)9$3S*u;2Q4%kcYceP;;}mw&Yhc;5en>IqwMS@O)5&01G@`2?o&)##g) zsNYFfyTIJeYM!Q?>enw!>{Do>)0no#>JZ&9(dgpb!q9xieoCvoQF~>j<~^#aaqYdU zSCgjz!r7fFkFnJ@=656g!-~n0e?ayJ08dFjTP#0YXwV7%VO!HbP`vT8R&9Sbn}7oO z18BZK;NtTGL5M$K^xxY5>@K~FA)M_F^DCpcP4Fu(82mtz)_5At*|AszUBZuYN(4>0fSPvqep%Hr({V! z!b-)1!Y^*Gq7wdo80a*2Yb|r1($aD&jSX9;d}ZZ_3N_AEM?&4Tn$=N-_n|)_^qrS0 z<+(Csu7LJy zI>SVMq9mO-0#=ZTB9{aK6QB|(rhwZX2_tVGlp6PYW5(vqMd9WbmEodD=c1Z*S>ll~t?Fb4cr#4iv> zWqT6IJmDmcXuuav(i#=u3K}q@2zWvU%!5i)e+uL*@c|}!Bv85%hY3YcHUo$8#rL4XKnI8eX4>hvE)%no-2b;2|mB z#DOgiMW2Xo(rRD!L!EX0Tz8beqBr0VLR@&nl}arN)8m%;U`W_0_Zrc}o&6RNc3LvM zKp5ILOpOR>eV{6+cu@sPa1(EKULD`AMqQPer=MJ=M2#O-(<^y9q0yaYQ~q+cBG4pPKf|M;32EB0B@w^i|M5cRyg+MCZ{KGR59 z2^9k(f4hwOM16H$FVVa=c)63Z1%VOWVp)_Gskp0_g|DZgudeEQ#&1R0--^y{sdhDS zZ_WlyjLPp*Uovmvvv85K|Cmef%)L&OcWzd>?P_N}+*L1)&pZzpuci#(&SU@PGT{5# z6!;gIy!tZPY`*qVYo=s^?AW5$kqbtOFd- zqH6}m&--{%g^Ot(G;f@*aTb(?SC$j#M94`7GRLgmE*Kp?)2!b0MmfifM zcx@ow#@WJI2?(l)`<6G!ex($_zQXoAghu$4vR);NW$`Gl`_(nR6I^qdoc9D41SZgF zqj+AksBciKGw20Zdt6q?l&1VSTC7dQbE-Mx-xq$Jx7BtIPOU5HlA7009rd;BBJuqE z0bUhlJa~-Oe1J@_j*}ILt6@snKY{{O&j|C5a{}bpt8K^ zwXbJ|!}W>)M(-Objy+XcSX&H2h3V&J*utMJ(?8VFw7GI6 z%7HB!ctcQiRB&Fv2z46GwqRAQ4@XU)oR9y<;L?9)Ug^gy)BZn}xwZsAKpg-3PQRwG zk+9Q$?S5NNNDZ{r=ck9u+!+vQWOQ&eZ~cbnFnm|lIV4e9jUq>MSSy)AMPrt%*!he# zBO{SmF%0iIjfU#b&Ysz;=5O#={^aZI;|^}~nVj`Z=WE_;&sk@PL5`HHPSY0^RxnY) z>$v8ejt*s5%!A&(khkDlxVKs26wt0Ms{1mE*cWkE@EDVqT{A6-yv#J_4u`w3Nhqks zPkuKoV=cq0!ohf#lKxQ)Xu)p+FLT-4h)4%WG<-5A1*Sl5o77N}_ zXWPC9{nde=Ox)yCdO9zX1JyBZmdy91fRFc;0^}kuxY@UOr}6&0;4Z{7RuaMBK!2B@ zTTCozVhzRbv^@MK*fRMnb&d{(Is-K~L&1S5&voB>m@+ilvlfe|15M5j=O$SGiR^4< z%cp~m(CDW3L;1Wsc55%IKh0^DmyKmpv)P%+x*6I0+_r{0)oR!k*aDn9?q*j9o*nCd z?{~D#pD8n1h}`Y=)(DinretX{?x>cK&#KFR}a$B{5g<^vbownpRe`1bmFEo zi?|8){_Z|4;Ct?Yay&nmo!Q-PXsf)yq#Tq5YC-V6fOXD&j<_7H6H-+WSORWr0Na7y z1C9q(55Yd{d4OW?{04Rn{GSBa0^Dg7oUl_u=s1K4`yICvuxH2;FH6zY7Q# zE}c-HC}M$sk^3BbIU>4&RW#uCJ+B6|8@hMcIwKh3NcP{{TjCcqA3nX9 z>*4snrZ1q~5M>Tj$nwqPZ%F?lHHTr0U>ovZqT40ANqE5GF-N2iEj>v+7Codra6KV* z7U%Y-~`3KQpjzMsO^aEG}a0ACdvO&H< z$wB8qm>^|9s9~_mA-bVMA)JGugO7u{gGGa|gW`i+#H1nKc^G7#l38s!w-6ya3mRM^z>)UFiq)Z#*-1U-$o zjpxPmAo`94AdYOdJ?*FV|Dd7xTq;<*6iriIa;Xz~ZHN+dN^OuPgFAQ+b4XBzd%Z^mMJ! z!dc`p)0w)<@MT;z!ejj1kZVLSRvXES=FPrBSQYmt<{e;Xyw%V?=4hi+Sejod&?I`F zepCVxFCR&W(?{fI?xX3W+RgFXbnqmk1lk*=7NCKu5_ySAL5@N8mF2-bpNy5dL`TJL z>ANsr94@J%IBL?{C!Y(Z~jKa11AR& zb1;8E^v25r^#k7~;CV>=FUpJk3y2SBFCu@a{!mLj=+h9M3=s+dO_4NG0wyWYMW9(i z-vo*YCNtuIggMc3+Se~^TOT2Oe- zf(2PtP`mI_k!}MLKPC<&A|-f6kHGn6^E=oKZy~5z0u3fDqXTmqPsc)DuxSKqC;j95El+ z5mI!-;jq@ev=L21^qMptAPzW&mb4bhJwkjK7AaIMAdMyPE`$f1KB;Vv^{C{2yBuAEVDy>OZbY*{21tmT)!JdYbjnh!dUSug1#sO8xBm z`vv-w{S%@ae^>PORIO=xqx0IS4I6jN<+PiTcH@K%3yryBnh~B1*?mgKw2sM_k)QDs z(=MYvV^zk;6s;LGa~k&4gTV%Kg$xPmfCN^^?V{Qn>t{r-VER18iSR@G1Dh9UPmrF# zY=P^8gcndv$>toD3m(1{tYzGtLd%kLWlpD5Zb_VCpHf$aeYuepHf#J_NR|M6*_(oH zIb0=UNhumyd|~j6foeU82fGKA2bTv+JAFIzi>rgHgJeBX1}+{Z9?Avw1(FORIXG$X z0uc@zm`xyi;8j>Qlm-+Qlo?bRqzDugbQ{zbbQ<(Fus(ni2;8SQ zlO+*x+`2fCM~;BVpQtV2eB#iAI8$5>&@}F6qTYzU9uh;Q3dlG4_~jq_-SM6G-S{2z zjri^N{rn~S#rjq9#rb9Vb^G=EYv)Vu3*$@di?VMk{ymtl>$>K;;=1)Z=sM*(!oKdB zdpEt8WS3-@c2{K=YnMpBw62GKIsGr}bEI#?>~)KWz9*rVy~m$!vYlYPVE1hIVD;(8aC`?!avXSaKygi!C{RLAgk`;Jr{KK86X2TC1K2#3`d#!o!nA)j${M&=F1>v=X@ zxD!Uz_|-?E^-0_r%TqRHJd4qm10u{||B7i&q#v#yo*%Tl5OQUoe>0z8Wr=r{A1|TT zvvu`%P8E?WeU_`K(2^DK45SZK4e$r^gRMdyLsEdhLvDhx3M$UwGJw}YN`df0uz_KK zkq2|yK_02&-6YpdWFJ5~A$BC{h{%yaCSFd6C`mzl*nhNrlzn)A>c3*XJOBL0;t#}3 z^xLSuUA@S?KfU%o`5t8-;r`eGNMm?RKqqO>u8?Z*7ij4p-eV<>Acw z&T7uq<=OM(d*AVB=Go-*E;h%q<12=w{<>VVP7TM)pTWYPr-Lg*M`?JtrD-Y zt-`FztXim-R&~&9g|=7EjLkUD49#55kQ~ziyyek=Q7=eaF&ToW6+8yh(0=vqA($%k2o?IQ;32AT%*nh+WrTKjZH(X$_u zK0`i(-D4l2p1(b#JQF&4I0tAMlU?o4&N><~9Qb)n0%8)NgACxSLtX0${x&1C4ImW) zQ&tNhK{+4}vbJNa0;@3p7266C4hfq> z;S!R^0wQEUMiL;TlOJ0IZ8bZ{1X5nSY4O3=pJl&^^+6>>u>jKwlq`IbPO(8NB&5{J2Vs&U%Cmx-Gx1c;gisvYsVRD7)7${?4 zl0lTLQnX6sD%5dO#7ZQgD_E#&q{drtnQ7nZ_`Q3eIO)*f#&tBD9TQ6U#0nZV{_dJzw%_ z5wumwUQ&o57sD-zo*%<9ieW6pqEthzid`N#Glp*%)ljBID~ntlJ>7qB4C64)p+X3% z1iJg4vHi#Q&qas67MtR@`$D-jWqYjF9CnSi6%-e;us5w^1P^rWlT+ZbR|coZNaBst zH|{HRM`E@_d@=VF4Cx%>?3b#LuY65GsUm1Oh6gm04R{@F{sZaM1m?-Gvp*_ z8Aums6^LixK%iP+1dwzuaa}_A#57SOMM9>Dv64*ZM?4Vq*NOgl{wd*+{dxS;&=>Wt z>#pLi8qzG6KD~aF{L#HvzL#{5ch7k@_ztZ-qO{4%^Qe9<_0ykPtqJY z7ST;2?UKi=$8y&ySLlejycM*nsj~*2h7_$Qtrbl(O)(8F4I{epl2M;UpQ-NcZn$An zLgz|N%coV|Dw?WI{b$kboK8j8+_U}j2rlQ#+>L)N+}4jR9W9^Mi`K%{!L0Pwzm`6< z?p0+Cr`NJ-StD74aI_yk&yttBDx)j;D+p9_74a3PReEYWbzIA>oR8{(IqDP%=9VLQoNg3 zYa;1XkQv7u&PhCzCq@V}il*50VH<-L2AYhLDIqfi=H$#78AEc0qRhQ1qWU`K%wGYq z%^>ex&<218835{_1U7ImBOZP+Z*y*K5sfA4XNsS|?(e!_AM;}QMKYpu{6c>SokQ<8 zZ7=3e@bLheQ_}|$B<$A*iU$=h65cQZLB!JcdES#+7syW5TsiiVWT5Cs5FW7~dlori z7EwDl8E~oMeSiFc2SOkXQ+18u&i=J{Ue|-Iy|+ z->;wI&)RABl>XW~j{{GTwUD3$S3jC2y!VrM@%^zyf^@z(AExVxX^IK?NBMj{Tiu3+ z!p_3?Cj42RSqT2`L(UJQALS>#2|d53=T*rD%dX4j(u3-Jm3iGp@7J5__BnyQThDDD z_S;jxcD0kyVWgDka!h5k>Q6(i@>-R>N)z7AA$()HC2eEJHLO!$8|vPW8PTMskCu4F z=iJn~`;u9^gKk<6ZoekkxN7L?$oQAF?1Ip9_Jay*EqWp>4lvruje9-ohA*Ay=Cln4OelXz1 zr5!F#2qsZm0#yNDrNFkHz5$08^_$@4ns~S_fZP0D%EQTz;AhrMtX{!EJb^@q%!k;9 zVgtYw?G@!7EqUuOAqf2|7r;xVI%yV^#VgmV;isQhsR4Q?A%2KaqPi~rSVUbu3B!pp zh?tA##l^x>O>`lpA@s6v6TWwfd`_|>;u5!oaT;+!_^6DA%F6ZjZ1I~*+*b{sfSKaR zOQvXT)|hb2Y}glB9eY*wK6kVP8|&MdCxwA+Pa_E6=v9cU;t?vzo{Yn;HD6w+cz!^i zY@Ni6du?-J%Tqi-FPl)hE-RfisdT3_Q#Q<^J$E73lyW3Gt(d6#BB4RfL%Bt*^J@w< z4#^Ff4TCx)r9jC++d=9k*?{!Mt-_D8$dvA#O0M`kIAL=Gh zRiIhWI}P?|hXp2Rb_J{sqi}_5hs~ag3!zYrOz{r{sLHO9VvTSe{=&x%WfSplTo#!I zq(L8M2I-WW8JR%5VoaJOFxJ2V>jUo_Tz^2_DVYmG#KRL2VU#7IX<@CRe^6y{MwYax za*v>jm?D-bEFVG|I3h$FL^|Ys5NVKZP;77%5qde?7DVPPg@Q3H*p$0Kfh^H4BB=I> z;{($>cPEODELx(mB;IiqrkoJTrtiSMrSGb5+;66D7X><(2a4AczlG-w_aXIt=70#w z2ib?mN7I)jzQJRl%)6lH2=^}c68BQ~6!ml2+c1y(Fnk1U0ybJ&#wkoMG8b_RKZ`a6 z(Ua_iq=fwhN8$?NoU>Z1I;+6SI%+9X)ii2$D(4j2RG&lT5yKIu5eCtuL5e<-U8>o1 z_hgy_dsDJTqje9>%9!Mx}>Z^Q)RgEYT z5j9GZJfeS6;P(FAs^AS?8+tc{YVa#GYyvTF|6EOOw^KJh1iJ zWIE8f0V{(4ezVknJ$K}Hi0b$!G+fwVzr&AnUTPA*CS*))(Y&@%9;0K!M^ORN?sRgX#Xt?u3Z74~EMlQ^I) z=fUIf7?)yRSpNvuSJMD&V}+I=u==1(mp# z`k3k%;uy@l6V)+|+s}>G4bEXWz-uqZH`+I=Cs^0S-;Uc#+wxB%Yb$v5YE4&lQ%&Xy zl6A`=S~)PehL#4Bbcbi3XM<TJUCeV#fW z;p6^YGy*+h0BytkaF$u0*Q3?&Ic(i#_xd;a{^eWS(&on`W~y-IWF=GOvs(B{bp^5Y zofVB02*e3qJMV2{4etJaT|pmchD9;knwD+o`BlYF%Y}CNZzSYCw27D0QTVT7=8@}Y762mQk6)xXrIEGr4;T|l;vaUE-R<;o`k&LW5UTpt>Msv{IG2y@)7O$zhgg0 znHa64(U5x>I@!E(-oiSirxLMbFG@97YLSTEEq=_8#$JMN&qC-?+e0`b>rj7`2QpTh zC+T8|6X(gN2Op#KxQMn+wUSk(-q~R#)w0mVJ{#4A>jg*V*=-V^jH;Qf)YI8)yq}I< zeHdlhEcP8;CA7w(VKl~8Rgg7aZG7vUmf85W!?x)yEp5v!U7NMy@9>(E`y{abkG$*Y zn1T#8Cz*g<1_ntUql5B!TukEW$*7o%QO@zsJW1m7#(p|EHKr_3G2+IgBRUf@Ujw9@ zMy1E`H?g2<6`t}hoh@c6NwuiM)jub%-`nt(97U%6SKB@3jY%91-h=PaO0L0LYDsZ? z;4AQ$rT|5iBKj-%9oVlHT7d%jXsbt4G)107x-^XEu;^dLqUj8F21z=tT4Rn|#gV9^ zn7V)S`)L-(^}&WREib zr2Stw?3Zt*L@!k`&eFI9c;6QNhdhx}8 zG=hl~gH?9xlG!94lc_8cF#PJZRj&ntAIM$~*(JEo-#y@!d^hEGh)RGZ*NI%gk_rVU zL(Xxhj1?az>b@R=3Tgpgq0hdcbAM2K$oZzqs0(k27Ww~kG9Sk+1 z(QgEQxu?hI#=PiYp1(5UZ$+C`TV&V8lExJ9;e4$X zs}HYb&M$(=>jeXR7G5%*&set&rF)EDV_9KiA>WHrzUHJ~8jA*`p9R>x3#Be;1B-TAxz zgp39md_2poegr?cxVz7k;m;FO7AMMI&tkz$pj%;Ii2twk)qhPbg!2L1c@Q8V>L2SX zhW}Ml%fa)%W|pb4tPH9mlAm;yO2vj1qQhoFmO-&K6&Oht)Pwi{xRmxP5_|3DQwy!7 zJNu@(Ukouh7^0m7kH^#B#OP6v{$VVX_6(03i@_04$T~fqs3v>=i&+43?(0#u=VF_^ z$7sA!!)iwm;%}O9j9Qz&D4IiZ5k~_2g$SI4AOyeIs^+_4@dLgt3uJ%K!HM5MSPsYu z^f5s7Tsmq6Hd4M1pQbx{I?gpQthUd_`O5L9nc5dGWS&C$1m@>v;w`aHM3s`0w`VEg z*~m{Hhnm#R0sp$I2t9pu@k@9V9@{M-6o57wT%oFvOjId>NQ^A3AenF067DWbC~QsK znKNyPflsWa6w_QV4YrADa_y)rUtWV^AC!$4DOIA023vKt(^V8lZ2$}4)ERODjb_Lj z!br~Qov<8HWr?&4N8S>qhZ$Jk!1?z%LqjHPZGk?Ba9G6{nyQm zItpuOgYbj0`_YPYqGGJ1Hbv|R%np6 z_UEjhkfVSV{im2HgCt9R)YgJQ%bA zy;2?66W*hq*BUP3CM0gbPQ$TgBjlulsRf>!9`P_*1cxIcm#}fw!k3ldS%U$+vVA3( zeuVPm#s&cwZ_Cc53izLp=&>3hT+3}n*hfa^T-=pbeclx3xoOLFI>N&o4)(jVvtvxQ zUy@`VcE7?!pSWIo2xuEI9SdOhIup2cp?1S0Ty^L>!WD~Mt3F)@+nKGqG}Lc*GUu*r zdTy=>?zY}2X1)>_-+6X@}t50xVPe?b-`kESjuD?*qWQ^KOEg4K2a|<1OT+cG{ZS z2?GCT48VV1k3s}^PfiFRAkF`!mDG>7Av4qeG<#JoRZz{*auY(yz=B#;L~TThwX()Z z3W!q2$r&SPg`z7MB*PepCj_uC61C_=EfsZ;M&Mggq->=Fk)X5%ifb%rh(pM18qhGe z6o$cT7N83YF1e3?LQPL+WMxvIM9&@QFlZM81EN{@)72Xa zVH1&;b^a_RK2ndh*giFPdc0uKY|7W`Hx+xq;MR}hp8Y~+K}+K3WE^2oJDn{b_&iQSPA-Ww!?wAqY&1Jco}R2gi=U4vlfkNePHEFYZS%r|3i#3lkuLk_q8h z^HR2oYfCx47#3(3>c`hG1;zpj*gH5TnP^`%Cz?toiIjko(ne`a!9a^2G~$4_F7+hc z_s{^7)c;BqMhK%K3^a4M4vLMRvcp{JBL%&ZE!T z*1#K+$35oj+XnGP9UkZ@LQnMIk-slPq!RP~H3uNbu3+$vz}_a7Me^BX3(-HUBd+$& zlT;j=kd4a2_@gWGdT7n1ZROoFdhYk8y>yu}JpbCN#P!biX!Cwc0a=sF&4AR++kPHI zR&JFLuS%=4L<`HGq`qjSr&33$fJMtVNg|eNE$iQePo91$C7z~PZ_NKXkHd2;8DFtA zb|Fnp_OO3uarS{&flsP$o<`P9Uk5;kXU%b0p|tbaG|K4o!DE=EV&h|>*uALJin@XA zEL%INkLV*D+tbB`jf?&lRQS4$pm5|B!0km557^KOY2soxdoUGgdL7zrE}0A4tJGvi zpS*aeKJ#~3`P>5Xn(abd*mM`RnQoHrzw7@q;N*^0PJ`!CzRVEqQeE3^C-3-^>N`8i zwHZ28|IDv7;nYVvFiS1!B2SY0*LfM|8gGP+b2CZqR6kW<%OTD31~^qp?W#Dll{Rfm zY@7)>tAV`q?EuMR-Nwhj*)Q6yLbkWExv>5G`I*Nw|EfTRfrsN!l|R}F#}Ye=JGC*a zs5ChBrRa>wrNn=1T3>02VyESt%tYgfY=-3i>uWOD|Hk-th7ul?3~5^yd~OEA%x3`@ z0~HO!#}>uvM_%Wgh57}h-9R)s%7-S{^DP;0Gw*;Z%QF|1T#`+Rr{hTP=lOUu!5Lw- zA8=t60U@E{kq1rH&iOc1Y_HfJBN=aFmmu7&q0 z#jZ7Vf<9iuWA%gunWg2bC^+eW#ek7J>3GINY9f3WlLl~jNOX5H^*Q@ zCCNLCf(a!?$JD#BwkOfBq|C*EhUqooJ+F(YAfzw;wAR*Fvhb!A@d+rp>D1tyO6!-O zlUXlaa<9T!UGXPAj!7|j?R+mPbr>h>J{I*UNhP9vS8}eB#5V4S9-(6LN-*Lv%@`E| zZNR2G^rI`se<^I)^7jzBV(@S7{mL%Qibm*YoV$jlv5Bm$%+gU>&6g&H z7{meF5RGZZ$_xT$!_^q^bDJZ0os*TU<;XSm+L02E*UcvM`1Auzb z-|ZU`3 zJRF{8w0_3AWUc@)3x_hSA2PK-KF=gLbwBlm2&_I^M5Gj*|9JQNxie%0 z(x+X6KDwiJ3F70tX_|O8XxJh6(c(S89wFpxM$Q+Xs9;LEO27O39*8gaxa-ha;}cBK z11WaoSUs6$VpwRrj&&WQMs8M$n(D2tSL*OC@j@!UJtd~}Sh*ob-$8JUKY$)64DSP^ zkT^3HmbH{YsEVmbrDj4Nie^Eq`Zv`w%8F^L=!24=vdc;eDtd`b<>B8H7P9Hd5iUh( zrXh6M4YK9T)4wbcn$<=nVWw+&hiRl-%K)t{G2(~0=)XSfFP5iqLw=>>VRF_k$2I1&b6yQa zM2XGE_dWgsO+Hzfan9zBuJ7zgoU?1s*4=qs&uw>FY+2{BUG<|d;yw4^hpD0NJ*;KV zyVDd>Sii?SWFS9-%cX&iW!^7tz1FqZnz&=zw`A|w?P>YzWmslsbAdq2b`iyc_?#e5 zwQ))h@C<6=A8F_Guse^gi)Vy$o-$UaLjZum*TF}gg+dnzcSSP4JfL(rbzUa`c2&A)*>y!X6i9?f zxd}+ZQ^?a(^ztXi-2FYqb$>Vq1WuD=Msi646KT5ki&?6sEDBY%M@Ov1tgutkmN?ek zmSEAf5>u%;gj4wc^vC;;V!=o|J~2W80qOntw?m$E=jsCl`Q`P?`mEPYxUpG1P z00shNy5D6rDQT3WL0VXhg~AaJGU>sF0zoUcUCzmJW{vX?UwViddM@t7Dur}%D?d4- z<-76XC`-)-Ve$zZOPOr8>LkRuN(qYbMzO3mmBe8@aVPN3b5ED^XE6Vy=JnP6Pb~fY zw)gBVt~qUa*L&9G z3*SFNXgIle`Pg{)$Lr~8sy}y9*M{m+S-aZ&DYMei&vNo2g+qH45O?G4{!R`?fX3B{ zpzrvCPZTW##x6;judfUzo;+ogC_vpXnx@>Lk)UK|y1KX;b7ZP0Bd&5<$%PS5@;J41 zLxanHd$Ut_*VytuF1+kn>57pIl2Ybc^=3PpY| zKX#_X$iMw9K0y_H6vd&{Imzj0=H@Q}_Yz`>3ky{RXLxCg*i>X@lGPy1Hz!DEffSbi zy!6Wl5>HQLP*e#>?mPl^>?xkbcS*_{?;(Or6Wjrp5Q;A$6WWxcj5`fqwF_y@qBPtS zY2{Y67v)1XD$MBlL+R%6dK)`@_kr-GjyT^r$A3Kot@QZD9!SyPpG zHMbpFiHCA&a)abm5Eti%K3#cqNRL4;Z9b3&v#QIb5Spw|?p-(sO9jI4tyKdEtS2hL zJP2!T3KYos%~jU4aT}yB?>vZ6XY95N9)TAFWC|nc(t@QATn#>P_ktMi4(!_+xMX9d zXY>a8N}+1?$s*dpc)seZ19?`Vl!S=Zk*aQm0JqKgH;v>Q8d;~`02o*;E~@}=RvIjH zJKOyxmQjheqdyF7gyX*u2`wcRU1DaJ+ar)+?FR!ZD4j zuNgp&NAb9#wuPlbOBE)RW&@xXB?s~W&$Az5*+FM-tWcePRC)6c&FIdj1nM%IZ{{K& zdkY-bQ1d_`H);9qB+Nz+c+Ko}ncIV@-YhxCyMS_Hgb;>65t2s^IK8JbF zqdv49N}Ub&BY(6sV#;48)o^3;9KA->gloIV9FP~xd6Ui*oAUm~IAt$SlxiN31a5yZ zxf}k0Kyppv9syCP)W%}4UF!3%`<)>=H#u@JM6gx+ zj=}MbIM<76CrQldqqpu$QpCB@a?i8rwg^$m5HOD>g6`Q2d5V3^_G6dM+xP3kD@m9j z_Mu?Q6xvWHc2q6O0}Ux*!le^FMZs@c-oTt{jmCsXYOq%Ov7mq6@v8ISy6FF_F z%)9N{dJ<3fa5DA8K^Nb3yg~oDy0b9Na#hLLuFD!5N$klUxjyym$6uTMQOlPrR=tj2 znhG7ovoP{;m9agw``ydrHK6A|Qh;A||LBx_XwS;XZ)N1SI;>Oo6nW^OB|~qrVuj`O z*(3?e7#ou-2(R^?ZPG2v^soPAZKK;P@YM~UlzrW^Ci0bl;d;sPvsv<}hWv<&fxmgl z%6AQ595}XnW6EzvqP5Cw!roi*7g!#6ekWUJ2p8w(=2X6dj1a%>Z zBWL`;#}|S(CsdXysSe?VBuoC3x^r9dHWep3t2_bdPn3o^M`K!WJc+M~iRgrs(ah?7 zH8C>qsAhroa)Ha3kkQ`Z?|FwF^Lk`p#uvN$N3|Y$Q_+S> zwxsFF^_P&0v?gmbT%}VHYBGA3$$^wpCDk@g(QHv+2UgN!t7BIQr7)$a*~NqaMk?MO zRaJjBMQ%@IG8$^wKO*brwnTz5N>07P?y16_j9sO;HH;`2s8pxR8|nrei+b+=-dB&8 zqyPWUKXHBQ$=mRNfINBrcf?x6$!PyU;?5^&XYf~UUlanxF`z1z{I5hI z1jP!N5DG)cL^yO>0+K<%oPZHi5wK)G!lD@u!rfbQUH2~PvdAIE0;rQlmt}uvf3>Sw|4Vb|WQPl?zs3-JIjyPY4UXST zWr^Ty1I8fxo~@@8;O>R zN=si&q1SUbu3o9xiKWv%+GcF)u$-zKwb_OC%))l7ab{8NczbQBwf1*Q!*o}R z-R;pRysS3cREO(Tjq`Q6_CISYJ@w;98@t?hfyJ~fPv;}x#>vGCOPlAVKrb9uT}SPI zpw8MWHYitUFbiPg(`W-Q#%){nbNSNQE3GZfZPm{kO_g?y^wy7Twssp3-A|!(+1lAz zytad@?=nGsCRxs>XhQV*(!|keMH4EJG@&LhX;db`*A-}!A=frA>wDa>LJVXfRA_^e zhD8bpKF10XOO!@`N8;9tbr`v64rfk_H5$OYxEFFoTW2Iq8gerTz1npe+_YmpXNQif zPS6X&`K;#}DdP0b_`r%Rd6Z7DZ4~$_-k*U$>(JiFNHEQT{l~i@*Q%HQY%9eJpJ7+0 zdbQFtmGq2#n!BU8>Z8T_=x@9?d=Jj_8qOCd8T*=xE;3e>Edv3$0Iifu@s6>iq557& zmZA#ald@QaTt|+gD#>>+MJKv-!GS?j1&eJfAkqcIP^h_XcIu9%F8%tdAlpQ@CfZOu zC)XR}$;=@NpZMzUS98AVcSvdyy2=5a>5ObQJ^s2ZoeL_zzlnp} zZ#92L?<~$U8o44lGMDkKWzInS0!@1h3z;|ir+V^_E~KHFp>%p3@?Vd@+qgji=ID9o zt<-@W8N;06*e!%%H<{wTTEs_8lYKbZyF>Y3?*44ehdq0vA(ed~Cn9RspY#!8IE-U9 zsJM9nQn4||Apz8Js8d)B8YWJN;K+_1D8w=@OaT{t;AK!yrDsJri|h*?2vBvAT;GKv ze?b{l3`(L$kJR<`!zdlP$0aKEu&Ld|CxiiuNvDcq-il*Y%WH7U>ni^th4*mxx7q85 zzBcA}C&hXMrYfBVW4(({FjB4%Y=)5EkYN1>lo0TJG2)#gU@)ZEA~+`mA@oy;q}!$t zICQB;inPK7ktj=7=wkkLoG_$s1ez_4y?Z-;E+7DM4*eNEjV{*1Mh-`H3hl(%Kxo6A^&}rL1J$*h7vuBwjnM@xTW*QoYhM^;yRPMS!OEON~)){D% zqFfgKUoP55S$bMW-aWtlmM6dZ1MK-^(zmbc9Zi_t92$~D3;TJOJ@dCR5w?xPcbW|%Ah?Oqb*mDBXNO;!e{NEB9x{a=)wLy#!pwx!EFW!tuG+qSJ!wr!uXZQHhO+jiHx5gpO}W_Ol3`v)13 zd+mR%Z`BE`GRo)<*>b|hD0qpT!RG<_V~<}$n-nYF0qeLb&GF~1v3Dy^{P_nJiF0%<%=p!NAnEh;JOpe z>mfI*-gm_C6Lr@DlmY_%ZT{X$eS9-a_4UP+q%!g;v;WC6wKn}!ChFZi^+@sEa0`md z$Jjj*S!(|X`S6N1N(0_@@bMXT{O}rk>{|)dd?_>|yw{-eNsL{oa5=C~K(6kA-w7XP zG+QE=6aBna3m0I|1h%J>Vxu8EMDHi8dcYq|{R4Qx)7`Ln!&Xp}y}xMi$StqNczzW@ z6odJB33XJMAnw9W3{6k_^x*P`@Acn18csB!wl+vDxU9m1&Dt(ooH?6F=^GtW%P|DL z9L!jm@-}~JVEbd_AOIH%@IK<;;M+`Pe&FD(bQA0@G^Kt&nXd1_zJH;Oq3{!4jA;Lt z5G7%R*O*-1%)6s!o8Qr4=Fd&nx1;-#?S8`|7_DT-jvoxIhA|0MWga6Ixf(w`a6Q2I zogS;x*6z&|Tw6h*^`d(r6GrXn-#N%G9aG5#E4_VBCVR^YP(k6Bu{bsj<2G^B)nha& zj*Z0eUQZ5!hn%_@l&t?h`O>yQg2jZ}EGBsjF7&I#*UyPQz zLZSi2{=U4YTs0mAjM_iBluV_I?CwK8^HBCMQrA5UCR4R&E zG#F|Ys}$YYN_YGEpG@>I<;Hm7cV#8n9sZ3IVMd^=&5BAkd&zU&SRr|?qS*`pF1UV6 zpMTiIc;*#v!oLoLfTJe>rvRyr9FY)``Uhb8x9-x1+{e>Izj%+7@iiinYsvaS*+aZE z-O_#391^hdktK6zQSadPox!=(h-puOE%$>mD*+>WE_|zZO>}S#?3#Nrpz==b5ZJ}` z2<7$gqmkl)nBO<+3jH2+3F zSSM;Bq?A=osTz7(Na_nG{^+Uj*xne7Q*T8RGeEyh!utUSgj+nsn|Pp|fX04|7I-q6 zEWr*q9Ux@snpI<~(wVCwN9)WtUxkbx6V?6xx16DIe%?i@k$*q{Sy`r!R$Xc*56!$sGL7kX_CeuRDNn>klIl-0IkfN2D;+0%ll=XS%ks~ z|Cl2^2wsp?18#jv0YTAA8Hu*!j|Ud1Aod@T&c>kx9$V$zZ0){7_bSSdv#xIA<~ib|MKlP&xZ((jD1jDdejW)+_;Vr zVz71%s5ZIojj<5zksK#N>!1HzCiwEnesNROrpSEF=%3%P&U%e1z*s6+pYugZC>z7x zj7Z`tC~P5P9`F4jKT{*kJWjzRA@h28ZK@cFgRs4Ne)8L1+W0b3-%TjlZtOBwhvUJk#J6Rm{TZ702ncewE7Z?yU4?~vKm z$0ZK)5qP+%1fjDujc?bPC4el*WewD%4s|5D1TBw%ttkQ^6ZywWO&-AI#Kfg=Ma6m(QGb=)ICu zZ%G+|jxKr4x)oF86MV>|TW>ewSf5IB+@wAKsI8mY^)8T%YtG$06#cRmMC)kpP``p? zm4FKzP{|ag-P+GVBQS0h=U6}O6#G#|kq$e5#pFC<^8Nc#PG1F)pla|EsTLrjjV@c* z-(=b2tnMo>{n30D%IUYbJ|^vJ<1)Y%75B3!TUooL>Jl0bM-Zh>R1ajP4;6bnUAiU? zRBv8M6S6kJErxx+?w;&G1#+|`YCuUq^;lhlm2`sj8QP_SFrvv{otux_=^FCUAXKN+ z#j_+{EJ?TBsvV_9>DGxN0NQ%M@pFbU6aiSOT^t;dLm0P!+89W{5c?GvpBI39AZ8;M zNsS3U(xVSGs)-8lj`~TgN&PJUTpt9F)35!}DvLjI$c5vL#%4LetPK8M`lYNvfCF|d4Piqn)3C6C z0*Vx0d~*iqj1MF=FOiFWesCt$pbTBorGnIel%~_76^P(@*4Qi_OCv0>v_%AZ2p)l^rPG-1fMp$(~t4 zSNsWd0h}J)cH%CUN}GaefpD(AB1F-__W4Q4r0g4l%`$Z;zY5`fHWs z%zwrwA2OKMM9YRKBxwmecpm!5aAxnTIi+h6{6|tBIwm_KZ0dahO zD{c8(s?L#E1}aIwuJMb4RO;$fU2np>t9kB9RxY}V7-)T85{SsT*RVjwQmqP7iGz*o zkW-&@oH-E%2G(&G4kiq5Q8Z?B$dFhuCn;+!T#{p|?3ne8y|L*u6`<`LC%8!*d!R}6 zE-O5)Upr&%AVRkUxri6&O!L#q|<$Q=5pt&|Cfq^?z_tBLBCpSq}lVLtc< z2o!pn+kEg>(utV`Cd4RqhA}29kX0GviO_Y?M?4k+im-lG0@ceqpk_)e2{FUR)0NV- zhax0qTN}wJyP=4DyH^8*rwV=}hKCeEq8QBd*ZBM?E^@&3ofq^7V*;6IyUUV)gH}|iTRG?z1xg2dJsvD<9YwytqX%{Xg#Ae=p;0v| z6O2Ui@@Eyou&_!+Ge9Pf{$^U){(XR*r|;;-|M%m8KjO?I8Xe`c)f&yN zR`)OOh2GXgep|$qW?dWj7l~w?fyzX;ZKmJZ2~WrDiZVC>cn3r=Uk%WOSop>r*;J@hSp@1E%<2NO9EMpcZK%>zfjSW>^it`&xH~a? z1YAhMB>;Kj%*=0p*uPYOsG%dD%x`1UhTZ{LWYUeDQjAHGSWT1Bc(f7{vTp8OZhVj5 z!Hl+s^xDwaZY5^;K?QuE@`HCBCU71w9`z9o;>(wzWBMNyX)!v*KMB}jQF@9^EI9}Ytr z0p09|^t6eWEnkL*mfMT*9!SDi|Gbw(880&uh_dYS<%8W^Mrpku0zh3pQCVGkigiA2 zxi~u>LKC2H(p&nyeWu4#`l5;5FeusYZAX@Nek7kqpl3Fk@bBB zDVVw;K{2CeM%G3hjCB$&MK>6xh>@ZxA->x+Q5wz<=2^dNDRsS<6{FdwNx3p)p|Mk& zX6VAJ!hfsH>>Y00x_d#YIa8b+F=X7(BpDQg-%R6*$D1826r5tSBpbs637<=|RKc9S zsJ7zEU^O!Y{FI5$%ed6;l)SW0JOpgXNM4g4-wCyUIuj*}*BL+^rPB#~|0ERbc9hRa z7zZ13)&i_IDDPy+KhGz+3q4l=zBqOUr>3-vTOPfE3A-_#9yDv_N*ppJ3hV@y474Q* zEHSHQz@YwHv3BB5=vcK>pGU)k^NujPXi8=QZF<&+;d9#MOeX()CHXEH=yZ(y6f(Oc z<>Q|--je0Wz66BLDdckchJYu$GT`q(7e6Kfk;-p{j>eCV%h?Phjy9+ScN5?#Bg|rT zUi}CmSwGNRPA2GXM}F840_bejr`}n|U83t$Ip-aU+s0CFp^rIyosDVh!Jd({= zTxehTP}YiIL${yV?>sqY4qx>93`(3xN|-#%MDh|2#UQkXqFu16Y2j>oq!>#PtD-rP4x^u2cfBao zRqghX7*s<53L}4T9~2fcXvw+?JO_#A#mg+Ft(NN+VVcS(WwZpA3km@mj+*iL$gs&0n`m zi-()Z^(GwGjpCp=Q6r*)gTHaN=pNkQoU#0zYEfWj{G2PXU}Rik1X%>pQuJ9;^i>8= zSc%h?&je&~y_}Kj2Al)H^J{rUOqVT{E|X`~vA4kq`a=*M)D2Spa0HP=C6;Lq-RJM5 zzfzu2>l`6_`G(6F>?0w2d0GjTFm4EyO>5Se9VSk&VnamD6oV8BrHjHb(H|zA3xEV3 zD9tHlOAU0w7=i(>!FSEatJ7TUy;$h)9g{cZj9M>g#n9_Njjhuyg_Er$)^&6D(D!V7>C&sCPq z-gard{r0^?rqL1c7C2|M1!BoX=HLj#X%|HzhtrkuG?&oG@6*laSZ0g(&F=+A%ge5@ z?TtnjQTc>aJbS3heisul?Tu*HiyC6fJuOws-@s(Y_U$i!f)dG?V?X5Qf`&guAJ zj);X<^dpZNu4pNX1qZk@#Q@H01)Xs^CyJgWPfsTbV2e%gnnDLWufhje@sosw1&*62 zr)@5>EU9jpn=Y;_Dc!{BE`~GAXCSkBdgxq8yj(e6!A9X#H+()&7=W!ICk}Vd>P)nRVTF zru`8H>s>9Rfq`8iR%Rs+%ZdEvH}84t zL3?y}(U!CTprT+7l52u&+2|Mvu+VW9VWC@qf3H*??LeQJfGbGl|I-y>-+?p2=c&x<}C{CXB_v(4dWR)vmumlF9`TSk{%QmHe%M@H{< z7$+?E$X_CN$X_bA$d>M$!B9=s;(6Pdf_Y2p7snKW70-h15w%L5Cfp*cM77BjBE3I+ zlX`2)eV}nS`ByI}hZ{0UI2s4D|b~#W@1GnuW8U6o&7Bjecj~vx3EV z{6o@wey9vz0F);07^_i|c?!CdkHDqrXW;TM3vl>s3vjvXt(W0Hoepf?m)d%-+nf98 zGp5C;jGqt#&~oN-b+z_36UWPKG8dZHzKUU@3@O1EJki^2u*?DjgFoaU!yC1S5eNsq z@J5BqT?ey+KAr~o%&=Ev^mTFr?ajmB_eRX3A!Au$j=hC5v<fZ2X4^n$@YF8;g+x!uXmP(W zFJqcEm^pTYS{aK`k;`0n@}ch^X@}NFaiSp+u}edu*M31da-*rrdDhD=%+@u!XteGDR~p+;IM=yxVRu%xftbXs zDxa8HVo{LE;`SYXK@9s8H^;-r$0<$hl`Tc?xR}N# zgt5g$f`Zgwmm6RXP*o$#%s?t_>RC+j55uQ^FUJC`M)q? z@buO~&zUY8JG;IhJg&pd?i15oa2b@}vlO zu3jp>gH{C)?$X{3VaCBM^W&6-VLD*hv(+W*a7vH~e@|0X35+>LHcV$8IvY(f zlK^}TCKcs`rj?eZ)pP2hn=Ip2V@Iz1!C#ldu+Z~#nIjn*3Vorfy6(#Ae2!3ny*Z*& zJ%JmM1Q<6|qwwIf`ge4!gTgJ;kYXKPsiwrU+z-lkZq}Bpd(D5gB`da1tDTb)QZlhs z6KB`s6Dx;SP&7C`B@?y=rMR)hD`(3nhbRE6!foUkvGx4!49!LTdwvBc3$r*Q@{p8U zek&>A%Je+mf(frxjxHV+cvt#iI5J$}U~mVQ4&9J@!W>%%4(;T0)h#I(RhM7>8**UR zsr4x3VFF9oq|(RY(2&iXo3!AO5Ihju+Uil8n(4Gk*%pCDym*@G+Uc@t^)$P+HX6Wk z3rPh_tIt%cN`DjEuu6IY@qia142aTr&~ME&ci6|jmtBesT62_VFeIMTy`5T9lrK#C zzY3wKRR#sGdx3Y6^pOIk#_xOy#E5aspm_ALAe)_pTbL)~&JBCCIlf_f;d7x@{sOMc zpeu{+I!oiJ^=9xv!016pb=gut&@e*+qd!hm--W>AO+32c)Zv zS}W>#Ue2Di)?lairD2B7Tzk_~Gk*6qAj|S6Kg@CabP{iV$-XSNri++V5fyA57l;2A zjL*d_$8i=bP*4Xc?dvz3xQ%#nhB`WR>1ALjhGUH#8cH1My%0QjiL8>Zb-wriSeqhs zJP;7Ddxj*hhW;a(Y(}_icokW(IDUtB_b*MqVP}~J<;9d@gb#dI_gx((0;J%z$-j(J zcJgTz+HORy6PhYIh zL4zj(moY^(HK|y%7E(PBV4_r2|>9jS)SQ6P*q zbLTPm%C5~Ot<-&`zuYH$by>y#)@&O20{D5b-?4aQL=bO+^He1Esb|QM# z6SzzLlAUIB>c7xFXj~xU6`CWDVPhx9Dwwl$K#nEeQK6?y#^x`hdCN{1b|_Zcg~&0a z7#Rz5*D{kKwu_%qc>{eDX$J`vgSvk(fh2x|9mqrUitIDHd)s zjq6GNTLY!3d%$&V0;0mOpWl(-Gz{ZA~J;$e9~7LUYuI}vkeFKeQ~p>=xC4J;c@7w~awHj@7O@~#)3n$hH2bo}CPyVmD6 zY)|B0S4E0}DO_>#!K8)kL>61{=x^Zv-!ZRo$tYR->zF6|b7zwE=8W{nq@2gfN3o&smdta8;Z0;t1;d*wwSP)}zyHY?|#_DM$x( zv5)kl%;d5=-3El|z6tC}aJk+0_jBUVYtq$wYN(8)_3rPxU$$?)&MrI|@_}EyUIee7GFs@Lwm+mu{C62$beA6}ATaqcaeXgmuNbJ9=`p&BtMApv{9RGSa& zlIN%`0FUT6h8weYubO7Yic~{7&J6-cj!Q}eQCUjJo+&~u52ghqDMfPV`N7>57`Ephn;=kvX7yB{h6Z-yGY%(r z5+jWD*^UOK<8n%l)&eeV`uXs`CCPGM6ofU{Tg=<*^gVK%Lg3Ax0=TJ9@iMUgtEgg*W|X z$GeDi`K}k&8S{g=>uJ!34AN-Cy@pe8#Wuji!2-=?$>7Py>xF=cgH~5w*5X<|m79znp^mS63BW=IC-B#xvK`gxO zU{>zB7fv-gDb(Y$;Tp`XlMn_oi*9n$5?XIP0KNcug?QY{hr?P((UW*>GO_7~+~KN! ztM%lwFTL1^z&d(tfwxD)W9QvIq8dK%PL$`i&y#T*s-G37r5w)=X&)1) zRi*bDi;my{Oc6^IZ#oi;p_-LHFzX}05<3RO$x17`4veYd*PL3O@`OJDC`L#+NXZV@ z*x}4+)<;lV5)4Ia#D9u|BdAxca_pHqH|i<4wNh}FIs2^@Dqo?HcCqAbk-ojcw|jhP3~A=D$#;&e&Hx&@Vxo6;^C$VL;2xj+1eikXS_ChO+64oz^#JwY_C)q7@H%wb=oBg(xe_rUCYKNlss%; z%ROcG3h8fq*CP>I3}T!90bzZ{>%$3pY%yDO00Gl?%ID@6MO!#&c3^U8!^T2(dK^?% z)wNY<*@cswxoO8H4u=UeS?{T^iQXDpfv>}YomkCE9U{A**78b;d#G|&KKG@}EONJ= z^A9so>kj@8%8g%m<2lR8Pkm%u<`q5(1GAt!Bs~og)%C2cQp?%&&FQd`?xJay|d)&0(buYccFYp@HWF<1IeHB zsgvP|A;MDgx6&;rlE$}BUB%xMH2gVo;6s&(KTs&}RbvL2#_jx=dlJ_fGDd}0jv+_N&0dC%f&LkDzMC)0T`R^y! zCz*?NJcY}Vbz93J{lCQ2+S}-^dmU}q*V+;;@H+45lrA;as&PCsyGcF-Hjt(qRHffE zu`WD`Bmw3}mjI99yOw*nT^{K`-Z5Wn63$|q@oRuuno}pDCXZBa6ChMn~A$2Q^I5*3TSszl; zM=asSf_ssO-^DIio-IjM#^lk=WkfzNM`8x)=l{Hm+DwnC7qF|1cuS2)&p(YXm>*Qq z$E~(76H=9?+TPzV*CBOGbW_i{59p4Ax)mKOWFNGau77rW$e-3((hU=JZ|EaL+s>4k zIT?6|%vR^Ar-l(p&LFrdXzbHK*v24_EJ#tX=rUyL``yN@@w1K>=K2&EQ;4}QwTK{x zi-lEH%AoyM|6If-H)s8maRkz8(!}tjoFWMh$E+Ff5_Eq5Uu^UIc>6Gf-$`llcMI@e z{wl2hlP^@(F(*<%?oJF!U!N^x7UahZ;e_juY}gV#ZPp>NnXlAHx0Y!>6EZ`3aNL+q zFy5b(X-P)cG@QF82{@ggrcsm%?h`wwQM#E@x>ARF`>>Cgy1pcOEMgqtAYC`z(k zIAMY?{wSZ4mo7fDleIy0ECpH}VJxB$nK8LiaCyj_qJug)HB|0H?qg(7TZIx;I6w;J z2c--f9S0Yb-anGP!VqDcY0XfW67}ovHDfxz894mr2+=5T+mTB3LzINOi0TnZe~x(O zA)RuVa)K_H9xrh!r6K}VuT(KPf_8NKLbrU?bP25b*JG~3M4fYLCgf#oiT6{9`5@M8 zv*y!ChJx@wK*89%?hkwqJ`eohZIJ8hORYu<6V2rw^{=}e!549 zsI2^o>^`H1KrAe7^;mn&bAv>283HBLwlEX5TcV?>R~(DlzFSdD9wkb;yxKUjvx7H;FJg3 zrW3@2#>5=!UMgCUMjM6OUK|gM2U)mHxJ=-e&6Sr7Jc!8}j5T{byS0stTbvgGA9Eb1 z>JJT==Jd$v+eK&7mARU&v!aJwxz6j;SZm(diXUrmm%(6AIinc|L`0RH3F>*eXv)>t z73h5tlLm^eQ_Kq|osXKpX#PL3)t~~77n<2zjomwS+rK5otj$ag0jyzBNVn_-bvC7T zv#-p<`|u@N-K-heLa<#dS*NuM@6OSo-ux>8?&eTE%5iFZg6YGZ0aENzpG1}FNN2de zg+7iav2ZLC;=lRQ<$=s<2h$Y}>)g7Qnk#W%ygO_h*qRYWOBPfiMiT9DwdGg>N>Uy1 z7jdW4Hqpt-<)=dT46(NChC@#5165-1dV@QUBC2BlPSYw5q=<4libDu@=xhwf%DS>; z4(X!@b(MqHh#_vOWCvA_5@TpY+QgW$4Auhj`h@T?&`K-R7m!zzNU`g*BEqur)?Q{p zG%=>~h`FEtUyQXw;iE}H0s!zJ001!l7h>#p5_K~9Pica;nzyvp3QEr_54N~Yw*Si1 znE5+0j}5WIKS&A+_C(x4{!9!(KYrFsM5K(t$iOlN3q%g{sX*8d!z7CdzKrG`R*Q00 znk&*`m2;3oE}dl%iV7K!iegGBp#_U2|?C7q9IHu9vq~sO9+b zE50jqDuP3id>)nUxEu4=BsskVZ~975;uj4&FkZc%QHC}qnRI^#%2+vq<6+7gvdgjj zF?vgwH?QWj^4c3G_DGjc4#93XFUJ`xD=&${uQ1ydjw!M}d%vG;L>n9N4VWWL+5m@k z;+bjJJZz`Xz`ovE&lJnk(gk5Q)6 zr{K-KgYUQ&yHO;l90x8rkC->`Seu&a^6K@YYrH$~&g{tfZt$()YAY(5bdjpK6f0>HkHX{0o-R>AjD#?% z3#2-h54CtWeu`wn5?4$>X^}*0zemt7K0WPj@f5mIEC0fxM0lvGZXYsHqfRfDdS!Bv zC9(jk{zY136UU@q+0G7?=*KWWqoMgM7v0fD!r^6BE9=g~SfXpZq!%9(w=FkDbJRIB zDpWkEY$sO>aBZ097#DacLU|V{?Oev8Mq0j0s#&ov$ww`}n5M2CvJPU)Gq2%gDC;@;2z?b&@i-|r*hdc$ zp5?XLJS#L#k~w~N|JFXf0D2GwDiT#2)-H-LSeqX|B6XZ)x@Jbswib*8G&m?hVMp|7 z1CDq0r5}1bm$NpY^r;C9IYjIWJR}<+Dq*XcK{I9Jt9gs`#3^K&X3K27`3ieqgKr^+ z9u8aA2xEvDv{xJ;h8%L9zBjNOwVid5sS1`TK@2vPc=@HP{w# z2*3g16=x67SuN!z_*^x+07Weq9H+?a$S#PI!6yJnFu-{55)?Gq^pEVzG|>G%)7yJ- z2wmEJkw%PK{#xl%Xa0t^qS%m1*&L69F7z6K8nvTC326^zt25OAp)a5=ih>Unv_O^+ zy#@giiW@`=Q>fp4AR|z{ma%+iA_ssle60f>rNW9xrB3AatPM^v;YH#x=+cE8+&vVo7Y$R7D)lCjcCs5AbvL_nUwxwFt z!xi*eON$oJ0$6SBye>vpH27XXeuB4sxmGxHM1;MF8ghk&8GK8oU{9FMwk1D;HJz|S zn;-Bo-(az?#r&O;e)aOWI6kI0o!GPsDKXZVsn7|-E6^u!C{f8pj6hB+^bEYWR#Vfq zTP!9^LKa@4s2(^*r=HPk&5xa+v7P<)p#Y1f8OX#QzoPdfXtZ)UXfd~slfC=QjdzvX zfxmD1AO5&khCUEzOod$d8Tc4RJHUIgaj3(odmnl$gfTu}KwETkitCyfNK=jfbZlr0 z4-wQqp}$2|t$IkMztBx3LMwYMI)QGs#%55V)1Gm|?{8)UlNkhuTuJ{lig>9Zr6U#V z((?C^oOch7yh&{WdEr(r3MQl2!V(0YArvPgqlU1Oy%mjTk*Wrrq`;h)?sR$|yXYMn#PR}B5zw^At{JM%Z9_=p?uC?NDz9rI0tFRirV zs%~e`KW%C1e(yhTNX5#qdq6u`Efy6)9L!x=vik$N9#6Gk5bH$Co7g#cRem2>38dL2 zM7`RQuH762sspBhU#f@x`MeCmh)z8sUxR)z>t?~PXd#=6Bd+_QnZ`u?pXu~EVAt~z zGDt_5fU5mYVt|UA(B?U>wBJh`&H8%q#bAFhseweZ+oMG`i8^n}mPScY_;n4KjNSTa zYTKx#bKD~IXxvKFQ&zpS^4S~M0U?iq&vXaot?Tp1W%P!i4QFVyiV0#J#LM%%sgssZe)R4wF~Qvo&%6HCC9Y88LkGuKFW40 zneD%2#ZkQ*&pz+eN<6hTl3;&5MS-qCg{~&sN1S=Jb|I9j0XU_zW(jMe7RQCN8DCS4 zf3S{XtX&bnT0|utk`SL4U|fpNQ4z2h3Ran?=L5+SbbEy`qf%?gSR84AWX}e~a}SS^ zTZ#M>FVHp2)Hra|{xu=(y{1Kd(p-39dZ4BZLobSYx}@8+=<&D4@be9XB7b`geGKfC zg()Jy7j^ZLg*+0GwE?Zz4EG-jQ#i-JDzk=*V2d?l15KCIczEcIDk{kt&RjB2|0|E2 z1?$L4zQ6v;1Q%Iu%Twx6qtQZIMmNRIm`B#b*|7mo7gaHWdJ0D`U~*j|iWGwE`F~!y z_b4-9=)9v7wh{@GsaD1Ab1r=rd)-WzcgGq%un*#&mUd%xKcsKuxU|Y$l~hf$U7_tRU}$!FXO{M0I zroA)i*P$D1a6CjGbyr83(at(TaUXrij1I8JZVx4^j1;|M@GQzAi3bYie6j|f zJYTOCJXNYLbabvEVY3`yVL{X&ZMs*OI`ib|7gw$zqh42?oP{o2A6_*Bx4BuBW#8Wg zdFA-mEGlqr*BIr}vzu@sg2Y0+b?^U|@GC7ux$pbk5yJdVXaCKbT-4e^*yR7N$-Py5 zt&vo)eOIVfA`+=)i+s5F7^_2(7L7wnTNh0{*KLx(JS1w$l2BoTBymMaMcV51{ zwmUqZ6g&>qKmP7g01H;gpZyh1FwAMxQqCwvxptk)wUZSzT5(3J{!PZr=1|2`>KSj&wDW$ApL$ zH=w}8gO$8uu)XO$r+xBo<7|`E9hjNMlwj*fH9DkTW*5UZ_uX ztZz#pv7WBUd7l=~+4g;)o294$FlHx|7Zn(WQgl81;hp=~knXO*K1?s_$|N ztKzqX^GJ}BIG(xK6phN*@E#D@U9QaDJ3*PZ#5irI)b0%UUibsWpa5i`I}MfJm6irY z(j^P7IrY@b3Y}BC##74=T1-2dw(v5M3+~7hjXxl{=&xh#@~m3N-l8L>I;aS)Q#lV* zB@b75IUNpG(B8h4+visSywzTI6aC0hPjp(7Hylo@9*%E@z-yKag>$)!|#)E93o%h|;0A7LqpZlzZ)(R?`qP0@Tu_${G)I{b3{Inc0c(zzD+Es^|t zK(n9{+_SOx03+c0$3C_Vgy=!np5O@lG|_Ay25OE>S+Ck;_^Y`{g>=iV0l2HW3Zl$3 zE{=4fR8nkhB$o@|h4Eb=Ilh@X0ov&m-DoYl3#kJ1fL2!gMxjXS-po+jgH{5}0+z4| zP=zYgy%iy+9NECik#Jq1b#Ct1QO>w@$bFFcBX?qEV%X>~6O&fcs7De-OyLhULAk~Z zWi~Y0Pc^ba+~Ef^hWGzv2MXyg11%u}0BDs10AT(v)Vi37osEgp-~Vu7hrFPjkXD*b z#fg0FK@f!rgz_6D^GOLAmGu)><2S}%q0w)5#)fjxY|sJ3rP_ z8!NgryuB-I>er#&z2CN0K0f=vd|!`?vjC+ar%L>Q2)Zhg3hCxHJ|;8g#971b7CN#u zL_MF^PAjAspYB-d z8PFY)58ZS1Ma&9is?lldT3e~?+k);%_F~MkGB29hxLDZj1`7h_f0@vJdvCe5IvB@O zd_`qyPvnfzs!cg41bTaC9d6-@ci{Z|E}{>wSvyFJjG;@%+k$y0>~P3-YMD;Fo_3$- zIFU$Yk>h;9c4E!Ax(F5-dSfwJGPzjZ_7z*9-5JQjskqTvTW)`f8O)1TX#!1Nk{F#b z3C_4@Lsi)_VCs#)>${n_-IzE-B?|5TxbWsm_wbtPUY?He&@(gBlJmBxu(L9=Q?OHW z9C5L8?Yh}pzP^&tncC{sdAeB7aBXzCRIjr-{?@~U0#oG@))w@ zSM}KFoZ{K`fS1dwrn_@#_VnKBP<6508rzyVqB-u3U0`Rrz41~m@v*huTHab)Sle&l zpiJFhb$!#^&~hE{(h@N9RI|!x!8-lKiFI<~T{f_?uz4Ubw0dv>ZFYX$Xi-dGYsH*5 zm8*f#WxQ(gXG6-_!tS(Ow-R_o#~`coKK?-auv_z7Z!y+uyZ(mC@>S3m$3tJf;koi< zvm#Ibdm+ys1sW>d=UB^4(cBtIUA*fM#0GgC9YDbjWUr!QGv&T$QMzthRVcq(%P?zq z;I*Vt;%EiB@O?8+kpiqCl&4d-EBu3#m$S|h(SUHkRM^)%V@|m2i%k#3f3$XqyZx}O z=~`8LB3wFaOQDv+%xq&pYy?xFfz*}}^!*`DQ;o*GC04?ARq-$%Iyyaa~;ofbJ)QK=@~QCWN0)1Dol>IaEDjk!@0O4kmLe)N@u$Mp%im| zGurud@{)+SnAH<(E!y>lWp$yP3|T)e9uA;6(T<6IuBU)f59S~SE-t~kc8Q-NbW}Jh z5G7~=T0|rIB?@yr62!AdQyY|Ku{FCI^kI>}HqZRx^IiOnZ~oc$SI2iW9U$D1ZOw~C zpL5|GFjK*bpl&8X$-0{7w9Si z2yRl#*LQJHNgYY9r17078t5q&rXJR)bigO0hP4IH=~eGA4hq93C@?VC1@IaAPR0Mu zIhC~g{0fMHwtyi;pzL!aE?1=@4CK%~~P2R!7p;ZtMwK=_A;KnmhX zoOR8?-{qAru<ju>5OJZO+ayJS3U0=I$lA?kED5r&a_;cvg_F(COZ9gKzkrgPY-Gq1mhxBZGI8s z8lKf09!um_^*V5pxu7pIFXROb<`08=SE6H;tBx=6Zl^&k|M=yZK`hOsLncil*4_&C zb75p6llH0+7-Aqh1_ms2O@Jnc1tBBJFUW`p$xoA&GwYSfs;hPc<@vByrHJ4kH+I@E zXyI5IauOJa%n*l+NXSrZKajli#Ah*K=$;`VBjVeu$EP)853%VTjr^SeWqY>^-9Wt2 zypypsCTLx;{{Zq);aaLw8|xpb@RDthkMq5xEeit%du~*j#I8N4KalLmDXY74>de8g zU^UO2{FDVB8!6p2V4)s%&L_~`Qe&Lra&p&9)FS@iPRe1!bCr3+J)k|F=sg?$J2s6@0#5ZhAZMf|@U2djW z??ToZ?|w4a?8>mBt+@d=-W2^J*HX{e>~JR0P|pc1H;vQ6xU^0m?0EhTcZmR?C%hmw z*vw*7Jfl;hZ*rH}+z4(aTm}s>?%_#HDk%}JIY(-_qS1PZF2fZ!bTg}ZRnO1!gD$06tZk}zEmJ)^ zmOVTA)OQz6_6-N*Ah%-5kgN(S8r0rmXL)bCo1lgzN31rl|H3j9`OCT?$qqe&_6Yq_ z>c4{pyL^@rSPJaHopJ1os=&rHe(N*eqo0Ka{~@Bw{X1}SYj56%BVoW_h#3#*3RFP^ z4%8t?aJv5BA1*Elsy4}Bf{uHh1CX{qG0q%@_AN7&Zyy1z_w5cit0B9R0d|sfrsA?= zEB`p2?C(#`Q27EbsmCciHWo~)T0((Ifmwp|CNh(t!}LOmWon|Nbe(?io<3?vJaVm& zEXW@unQrhN`P>r{mci5)u|+4DcnjxmJtFty&;@vni*0p-JQ|1`8w9{b91Gj=*{Lv& zGAWWZWnsrt9Eg5E*4u8@DSdiVE8Rd=y5ymhzbC*xD1oU)FE}gR2kHJ8_{5I*mD$iq zO^ORVX{AgLCouWyfUC|Ql-Z1eLPjIBSej-HjhXaF@`Aq&XAZGy8JNV$pjvM|CLRsy z`hjRoLq%PRzzu28&60oVms!r%xk{I9msy$HlveOv6HIET>v3;v!g117>P>otoZ zZiRmvI*s-489mbbHA%=f98bCUIdfhP9&J#!%489%v_`XL0dk^WP}V20Vc9t0b~6=o zm)P{za@@zHN4vHXji83L(kFX6P~LY*P&!?+l(ZoUWwO)E`av7VKRd3dHI>#caH1KE z(Z(;QKhFvYVR_t@HaX)Wf)LQ-pzIc9MQDm<80ms?P-2)7a-an)`7tj{F8cYXUKJ}_|F$b*GaOwBFWi>#XF4t`)xu@Wv9 zeT0bqpp)r4^x9j(iFG~e%?D_7z0e&za>c7&|%O=^T?< z(D%I}yxlRN>^nDOtbkqH0j1>!b4{DDITE3y z9)h@>IXpN(^8>z{L6u@}0OrBH?aLAs(9D5PJ`XUZF>Qwz79&dW@k1XyyRgqvx36A^t&@fkqa&96exo^L>x0}QLxXP!>F%Q zqm9Ra4wwD;nGWfi9m;LfKb_nSQdfO5xevu@*lFct=wW*N&bm#G*Dvo|=}tzu3l`ML z)$f+ps1qUxj|5B(O|DiH|V%)0B09qJhMPs6WJzQC{Y-4+ zEsNTTl~4aypPzzY@YIykQ_nTOIcd#>sy?$YT9@3pG*Q@13SM`5d~$wiEf24|WeQm% z*G=zVz8)9Di>BGronNgyH$y9Ny?$Q~FL6)Blm2-Z?aPPMU`+%AFN3zG_x4+RHa~=- zb3Tr-dxUMf5UTO7WE}Iuro-U}r*uc(7$J==aKpRQGFz5@iXMqlJcxy)Ai*-J+MGE# zkP==DEI=|6>i#=0XFWd3Rc*wxx#*zNL6Hg2ZQO#U-0x6x64HeI_A#*x$Ni&cxH%Fs z90Ws=oZS!j^NE*y^@N5zV#8)j54NIEkJ)_l3L2R~7^w?W1h@+?r!#KNw&q~A7%D57 zN-I3&RnCzWpySi?x25InBF3=*2^@sTXLYd;;Q3qH8Q@!@8W8h2bAT$4Cwe#5FH+-2 z2vtu`TKtrld>Z3^q}}y}rC&Xiy97w1!_bdbU8K}8Vmpw2;=4J)vrh5IkJgs!pV!}O z^8(FJ2f0e+0w-}0upT17V^ANMpCn$IE^_r@p=QgZQrR!DY) zzh|Iq5@)z~2O#4Q$YT4goe*d!r7l%%h~gI@Hz z4uE6A_8NZ{82EpH+w%ugZF&rNB#m~cQ0xklP-gi9D2J$Co9-pBcRavM`-5VXcy1f@spBJzVc|raFYwbZ(y)MnH#OA9)1m33F^R1q>y&~ zl2gW`J?9k`Q^K<95b0FXwQfqWIaZV^GvBnlWj|Pn2BkjyV*(da63zS%ynS!z+#CBZ zAmH8=IORc5vU4go3u<+T0OteAtB^d;2H!<)z_Pvz$bk2Ol4idV3j z!xo0C->E~>>Qg#}k$wT@&BGlV{lLlz@aB8k)nEm^G1dX)xQNatp{+f@6TT_=b+QJJ z@xsV?tGK1lYKqUzX}IG9Ju@1sv1J@LJuBgY3!E!?$J8fa>p%$n$u@P*e{0D#Y#v94 z@zM+0OJIM|;A7uY?gwob(uMG?+WW&LcFJ+gIoj>xBr45XZZftHh-P_PoZ;BpazK&D zN;{u&2J;np;~t*XnVRjZ-{?>AxNZi?az4$0=}D9ktO5usne&vOUCfHFhSkAmOXWl^(^_&XfZ6F+-@p zqICuvOFB_M<3woCl>HEh=16dvckW7*ShHD$hT4e+0qYLHi#}g5Y;T0S-IHVurYw;D z9Y5>?t~B7FK`<*+tnuV1Jj`8ufSph7UtmsTq|!>PQl+jetj|jx9O)6+17p!U%!hDF z^Oz!WEFI^1htPi!7wYFf+hM`)jw%n!N@!4OIGhM}6vWYQvMwd(pD;RsZ!6aGl+QN- z75C7&g&Wc%@w*e0u>1B@eAykAFhq3@ObxsXPni z7Y$CH({>EfK^P_cA<|1R7GWpCp)t&%vBQWxTu34sqpc_@4#a^swtSa_t-D$xs$)`C zT;Vu0*Lid?9)Q+Grw5UQz+Ce;y&Z`Ov<$@DVT_<(#8tV^F%|}=Hv(c0pO|!30#aRY z`v8e(m-$xSVL@?&z(IO!F(_$2y(}I_n(;gUWruFz7-%U#Vt|Ew=Lv`o4r?04waC8& zu%>Im&S&$%ieUwlyDt2p{X91nxgMY=7#YU^=*)d2u@7Lmg74qEcnvIfT2OD8K^wyS z<0x&@v!t##F)vt)AAU+BU3|va-)fR=*U$ZJ>!I>bpmpm~ewhTMn_aHc-%e!U$jnaZQjWcL?N*HYLpQtJck09u09K2}#GQU*9L{>0!{70mLV^YUM62fT@!YVM zNL%Lb$`Dpyj-gA??QAQ)zI6~c_MBT{YRad%1~5g`Z$4?GIz=;v?nK8KHa4)U9Rg)S zgnbI<&4Oo8h@BNJsn#b}n%>a$hIm&P-2S_q0sV#~Q2-z;e98ipB@09AGWUMmUi(xUIOlPMvrcp*Z1IF!7xN(U zso-%*A?E5Wx<~N9P;Hc{_&f&`qJ#xL4m-%p9}kZSb;SH@kwVw?yM2}pbJ9Ckq@3eb z7-nq|DU8p}k##MI^GZm#36G-(gIRsZdn8~=TU{1;U{Z}V(}dtbu2L+n*MTu=xL zfdnvrQUNpHHh4?#E$$J*IAjIOkveCie;tG414;{AaCKecWvaKERd6?Y2!Qf6A~J5D zho}9XEI^$lAT`Kws%S~>Ue77)!?qZN(CHt$$!on+q{)TkGfhxUUz}m~cPyg{6g|mQ zl?&RT6__)mdxn=M>?ILx0rEsTa4^g|z5>oIm6r^eV@mVtNC=_ zWv?^ubicFMG6 z=#@8Fq$TL*H`%&!RN9BkJq60OV-{fjhLTxu@w=J7mN!+cI{l^SirZIT-5lg~^{>@) z7~*71s|)IDGwk*|g?+9gw?veDS+wBm5oh1flnm{#g!zXdhZ@i;eZZ^!;Bf-J(rep{pxYLwDMy~jpHfp5+^z@~hIoqarud^AiPEIOcGkaG z(p}wlNjM%4`mu1M57ulB@<+b>`k$=S753^)_S{lV74%CTRU5>~>-2T(yAnh`vu{%8 z{K6=rZBtxx$`%Q*lzY733QW-~ObDfE-55;0wh3*j*c$ZrSP}_**=lR@=ZvN?u}|Pb z;{^9{y+1?w*0?3TldI##Jiw$dXh}md9w?J_L3Rbiq@1h}COPjCZ3yVvFegcCAdPhr zyv%^udrr;HEs16p?^3GM2&|b(3`)O`SVGpzF7VWzkSQePf~}T1J-;^_>XD0+(`t3^ zj0%!EmR0y3;s{$0wr_2yV-a@CV}p-QgY`B(ZG(TsvI?y< zt}1>V2Q;MzJ|<{juQ+O(41FioK>;j5#0zc;msr4G3j&!4osEO9(uyO}K_GjU0XtB# zvB0pqN@7&6?@uSx!vyM5`QlW)YDoi#A>^;PCxvOu6=?^r7PdM}H04Hk zkw$A?RlW~I)D-qZNb1uM4$EC1!xe9rEM;X)DIs|@$!?(8u7vS`%9in8S<+$($7UVN)S*4F~!;RA*oa z!Uhbk7xL)l`M^Fi6?0+YGpb1HphnEL6t28 z3GBF_Isjybv%7%`DQKz^G5~^J+49UDk-8*jJY>aKKqLN>EerirV;|v<4r%W6h zU%hH;!tyEZVn_Yx4PJ#JCLXcf|P7X_HcoLRg|9eBH z`cxn+u{@theVqkkN@qMb$K0}0Y-&A{yEOl(jdj!(65XMq6Au#s1Xxf-&{+P``ngoO z(K||F4tAL*+lHwhC)C${Uv~TRWZfE)340T#;kU-ky!Au$)Fi%Dhr9EIVJ~GCPOgn; z{4Q)`w8ip6I{^aQa)1`#rch!0pW$d?LP1*?KH#_@VF4fu@{k-z3-Ayvpjtr+wP^uuyL}OxQ zC?=(WZ1URnWz4EunbZ0H#f`h`D4y{vo=wqUW!DAHZ}$YwbEz|ScqiLtOR1MHELS>j zQ*YZQ)8{ROsC0bSEOeJGd}$Sbs3%|Vs&rr{&$K6;or|D*;>vu}X_nHLq$2pkP(9+K zzvsYwsf17fQx_{t4OcCCZmV0OSli{KeqkLwuv2eMcY&dwMG7G9nB`LNmPHu>QBpn!OMz501NoKXck* zc7%Z|&!K4M71N*kNMqWJr=iL)V+y3~udpBF9H_G`iy#}?2K3zSxGH8IB-Nwe3S%eq zOGEo>ke^YYfG0h=>|nG*#OnCrD+e{VXEytZdk?dK*qgOnhcDwhM`drkYq^L6WP3??X?cN~Teb zR-gX@S*JafC3n*uL}R%ndYP5p|ETuf&vNlSjns?wWlbSWhHj=M0zl}fp_&sowW(s1Sqb9#UwJG%JY_c8s#;MKQ`;}bm`!pG| z@LLy&AOHM8ds{=@J3}i2*1h$G^^MkgNB6@#W}60F^}gjD`-fVGJt~a&M>2Idz~!R- zi12E){FG{XpUdK4cdTDI!)tw+Wkud(Oi#6e+RDYYMT*q8VP(r)Zs4e@p%UvVwHE7i z;`NEPZ24dD zj}WSIm1F0S_lPqVfr!y|JszixG*_xFF;dpGAc{BHfCwOgKCEf9|v#= zjqK#broRUdFlwK>WNws~C&-I3^1gT0$BVNAPMw&vwz;_*^NT)6G>yol6;}Ih-f&k0 z3jLDNt@k;z6;oT5)wm7{{qMNjfR|QpQu=)(pDb~RyAcwCz(bl7;NyH#r|PWuy8D37 zbcsV6yOmK(6MIN0i{+Y6PK2%UVLYI}SGIHzgyMSb+848Ydio6riUR;>?j_2P0Vbb@ z<8MY-Czlo4Pf`%|V;!$vV#6CRz4r)_LREgbLJM?8$YY(+w7Qwd6T%G~{S$tEInqOR z(Bp_&t3pS}+^#4}ASY&N=?Bs+u@;O60mU4!sj(`Ty7$ytLsqSHOp39t^N&nloYXfu zez`Cbt*sJyA(%vq%t=knJC(o|>|@>gLL+&4Wto z?YlbpVGI{HH&+gu%dP8T1?HaS((d)vD?@Z$aPacx#=@yhI8!QU&7}Z+-Jv+}Y~9Wk zmnLV5+uG|(t6Qae=PUb zHg>?NZ=O99br&~x*1KuuEn&ND^m4h&yW6X)op4v1t_*KlBn1EJJ)*P(nQYVKB#S0r zvW_#eP@$4l+Soo&iY0RA^IjJ%%eNW#=vSlG_}e-RVZ?W~o5=5%I#

    Pk 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≪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 Pb2u5^ioApmNksnvOiJ&= literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME b/tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME deleted file mode 100755 index a3c6295376f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/BUILDME +++ /dev/null @@ -1,11 +0,0 @@ -# $Id$ -# quick build (for lazy programmers). for more information on the -# build process, see the README file. - -if [ "$1" = "clean" ]; then - python setup.py clean - rm -f *.so PIL/*.so -fi - -python setup.py build_ext -i -python selftest.py diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES b/tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES deleted file mode 100755 index b516d32bbd8..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/CHANGES +++ /dev/null @@ -1,1767 +0,0 @@ --*- coding: utf-8 -*- - -The Python Imaging Library -$Id$ - -ACKNOWLEDGEMENTS: PIL wouldn't be what it is without the help of: -David Ascher, Phil Austin, Douglas Bagnall, Larry Bates, Anthony -Baxter, William Baxter, Denis Benoit, Jan Blom, Duncan Booth, Alexey -Borzenkov, Jeff Breidenbach, Roger Burnham, Zac Burns, Gene Cash, -Kevin Cazabon, Fred Clare, Greg Coats, Chris Cogdon, Greg Couch, Bill -Crutchfield, Abel Deuring, Tim Docker, Fred Drake, Graham Dumpleton, -Matthew Ellis, Eric Etheridge, Daniel Fetchinson, Robin Friedrich, -Pier Paolo Glave, Federico Di Gregorio, Markus Gritsch, Daniel -Haertle, Greg Hamilton, Mark Hammond, Bernhard Herzog, Rob Hooft, Bob -Ippolito, Jack Jansen, Bill Janssen, Edward Jones, Richard Jones, -HÃ¥kan Karlsson, Robert Kern, David Kirtley, Bob Klimek, Matthias -Klose, Andrew Kuchling, Magnus Källström, Victor Lacina, Ben Last, -Hamish Lawson, Cesare Leonardi, Andrew MacIntyre, Jan Matejek, Naveen -Michaud-Agrawal, Gordon McMillan, Skip Montanaro, Fredrik Nehr, -Russell Nelson, Luciano Nocera, Travis Oliphant, Piet van Oostrum, -Richard Oudkerk, Paul Pharr, Andres Polit, Conrado Porto Lopes Gouvêa, -Eric Raymond, Victor Reijs, Bertil Reinhammar, Nicholas Riley, Don -Rozenberg, Toby Sargeant, Barry Scott, Les Schaffer, Joel Shprentz, -Klamer Shutte, Gene Skonicki, Niki Spahiev, D. Alan Stewart, Perry -Stoll, Paul Svensson, Ulrik Svensson, Miki Tebeka, Michael van -Tellingen, Ivan Tkatchev, Dan Torop, Adam Twardoch, Rune Uhlin, Dmitry -Vasiliev, Sasha Voynow, Charles Waldman, Collin Winter, Dan Wolfe, -Ka-Ping Yee, and many others (if your name should be on this list, let -me know.) - -*** Changes from release 1.1.6 to 1.1.7 *** - -This section may not be fully complete. For changes since this file -was last updated, see the repository revision history: - - http://bitbucket.org/effbot/pil-2009-raclette/changesets/ - -(1.1.7 final) - -+ Set GIF loop info property to the number of iterations if a NETSCAPE - loop extension is present, instead of always setting it to 1 (from - Valentino Volonghi). - -(1.1.7c1 released) - -+ Improved PNG compression (from Alexey Borzenkov). - -+ Read interlaced PNG files (from Conrado Porto Lopes Gouvêa) - -+ Added various TGA improvements from Alexey Borzenkov, including - support for specifying image orientation. - -+ Bumped block threshold to 16 megabytes, made size estimation a bit - more accurate. This speeds up allocation of large images. - -+ Fixed rounding error in ImagingDrawWideLine. - - "gormish" writes: ImagingDrawWideLine() in Draw.c has a bug in every - version I've seen, which leads to different width lines depending on - the order of the points in the line. This is especially bad at some - angles where a 'width=2' line can completely disappear. - -+ Added support for RGBA mode to the SGI module (based on code by - Karsten Hiddemann). - -+ Handle repeated IPTC tags (adapted from a patch by Eric Bruning). - - Eric writes: According to the specification, some IPTC tags can be - repeated, e.g., tag 2:25 (keywords). PIL 1.1.6 only retained the last - instance of that tag. Below is a patch to store all tags. If there are - multiple tag instances, they are stored in a (python) list. Single tag - instances remain as strings. - -+ Fixed potential crash in ImageFilter for small target images - (reported by Zac Burns and Daniel Fetchinson). - -+ Use BMP instead of JPEG as temporary show format on Mac OS X. - -+ Fixed putpixel/new for I;16 with colors > 255. - -+ Added integer power support to ImagingMath. - -+ Added limited support for I;16L mode (explicit little endian). - -+ Moved WMF support into Image.core; enable WMF rendering by default - if renderer is available. - -+ Mark the ARG plugin as obsolete. - -+ Added version query mechanism to ImageCms and ImageFont, for - debugging. - -+ Added (experimental) ImageCms function for fetching the ICC profile - for the current display (currently Windows only). - - Added HWND/HDC support to ImageCms.get_display_profile(). - -+ Added WMF renderer (Windows only). - -+ Added ImagePointHandler and ImageTransformHandler mixins; made - ImageCmsTransform work with im.point. - -+ Fixed potential endless loop in the XVThumbnail reader (from Nikolai - Ugelvik). - -+ Added Kevin Cazabon's pyCMS package. - - The C code has been moved to _imagingcms.c, the Python interface - module is installed as PIL.ImageCMS. - - Added support for in-memory ICC profiles. - - Unified buildTransform and buildTransformFromOpenProfiles. - - The profile can now be either a filename, a profile object, or a - file-like object containing an in-memory profile. - - Additional fixes from Florian Böch: - - Very nice - it just needs LCMS flags support so we can use black - point compensation and softproofing :) See attached patches. They - also fix a naming issue which could cause confusion - display - profile (ImageCms wording) actually means proof profile (lcms - wording), so I changed variable names and docstrings where - applicable. Patches are tested under Python 2.6. - -+ Improved support for layer names in PSD files (from Sylvain Baubeau) - - Sylvain writes: I needed to be able to retrieve the names of the - layers in a PSD files. But PsdImagePlugin.py didn't do the job so I - wrote this very small patch. - -+ Improved RGBA support for ImageTk for 8.4 and newer (from Con - Radchenko). - - This replaces the slow run-length based encoding model with true - compositing at the Tk level. - -+ Added support for 16- and 32-bit images to McIdas loader. - - Based on file samples and stand-alone reader code provided by Craig - Swank. - -+ Added ImagePalette support to putpalette. - -+ Fixed problem with incremental parsing of PNG files. - -+ Make selftest.py report non-zero status on failure (from Mark - Sienkiewicz) - -+ Add big endian save support and multipage infrastructure to the TIFF - writer (from Sebastian Haase). - -+ Handle files with GPS IFD but no basic EXIF IFD (reported by Kurt - Schwehr). - -+ Added zTXT support (from Andrew Kuchling via Lowell Alleman). - -+ Fixed potential infinite loop bug in ImageFont (from Guilherme Polo). - -+ Added sample ICC profiles (from Kevin Cazabon) - -+ Fixed array interface for I, F, and RGBA/RGBX images. - -+ Added Chroma subsampling support for JPEG (from Justin Huff). - - Justin writes: Attached is a patch (against PIL 1.1.6) to provide - control over the chroma subsampling done by the JPEG encoder. This - is often useful for reducing compression artifacts around edges of - clipart and text. - -+ Added USM/Gaussian Blur code from Kevin Cazabon. - -+ Fixed bug w. uninitialized image data when cropping outside the - source image. - -+ Use ImageShow to implement the Image.show method. - - Most notably, this picks the 'display' utility when available. It - also allows application code to register new display utilities via - the ImageShow registry. - -+ Release the GIL in the PNG compressor (from Michael van Tellingen). - -+ Revised JPEG CMYK handling. - - Always assume Adobe behaviour, both when reading and writing (based on - a patch by Kevin Cazabon, and test data by Tim V. and Charlie Clark, and - additional debugging by Michael van Tellingen). - -+ Support for preserving ICC profiles (by Florian Böch via Tim Hatch). - - Florian writes: - - It's a beta, so still needs some testing, but should allow you to: - - retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF. - Existing code doesn't need to be changed. - - access embedded profiles in JPEG, PNG, PSD, TIFF. - - It also includes patches for TIFF to retain IPTC, Photoshop and XMP - metadata when saving as TIFF again, read/write TIFF resolution - information correctly, and to correct inverted CMYK JPEG files. - -+ Fixed potential memory leak in median cut quantizer (from Evgeny Salmin). - -+ Fixed OverflowError when reading upside-down BMP images. - -+ Added resolution save option for PDF files. - - Andreas Kostyrka writes: I've included a patched PdfImagePlugin.py - based on 1.1.6 as included in Ubuntu, that supports a "resolution" - save option. Not great, but it makes the PDF saving more useful by - allowing PDFs that are not exactly 72dpi. - -+ Look for Tcl/Tk include files in version-specific include directory - (from Encolpe Degoute). - -+ Fixed grayscale rounding error in ImageColor.getcolor (from Tim - Hatch). - -+ Fixed calculation of mean value in ImageEnhance.Contrast (reported - by "roop" and Scott David Daniels). - -+ Fixed truetype positioning when first character has a negative left - bearing (from Ned Batchelder): - - Ned writes: In PIL 1.1.6, ImageDraw.text will position the string - incorrectly if the first character has a negative left bearing. To - see the problem, show a string like "///" in an italic font. The - first slash will be clipped at the left, and the string will be - mis-positioned. - -+ Fixed resolution unit bug in tiff reader/writer (based on code by - Florian Höch, Gary Bloom, and others). - -+ Added simple transparency support for RGB images (reported by - Sebastian Spaeth). - -+ Added support for Unicode filenames in ImageFont.truetype (from Donn - Ingle). - -+ Fixed potential crash in ImageFont.getname method (from Donn Ingle). - -+ Fixed encoding issue in PIL/WalImageFile (from Santiago M. Mola). - -*** Changes from release 1.1.5 to 1.1.6 *** - -(1.1.6 released) - -+ Fixed some 64-bit compatibility warnings for Python 2.5. - -+ Added threading support for the Sane driver (from Abel Deuring). - -(1.1.6b2 released) - -+ Added experimental "floodfill" function to the ImageDraw module - (based on code by Eric Raymond). - -+ The default arguments for "frombuffer" doesn't match "fromstring" - and the documentation; this is a bug, and will most likely be fixed - in a future version. In this release, PIL prints a warning message - instead. To silence the warning, change any calls of the form - "frombuffer(mode, size, data)" to - - frombuffer(mode, size, data, "raw", mode, 0, 1) - -+ Added "fromarray" function, which takes an object implementing the - NumPy array interface and creates a PIL Image from it. (from Travis - Oliphant). - -+ Added NumPy array interface support (__array_interface__) to the - Image class (based on code by Travis Oliphant). - - This allows you to easily convert between PIL image memories and - NumPy arrays: - - import numpy, Image - - im = Image.open('lena.jpg') - - a = numpy.asarray(im) # a is readonly - - im = Image.fromarray(a) - -+ Fixed CMYK polarity for JPEG images, by treating all images as - "Adobe CMYK" images. (thanks to Cesare Leonardi and Kevin Cazabon - for samples, debugging, and patches). - -(1.1.6b1 released) - -+ Added 'expand' option to the Image 'rotate' method. If true, the - output image is made large enough to hold the entire rotated image. - -+ Changed the ImageDraw 'line' method to always draw the last pixel in - a polyline, independent of line angle. - -+ Fixed bearing calculation and clipping in the ImageFont truetype - renderer; this could lead to clipped text, or crashes in the low- - level _imagingft module. (based on input from Adam Twardoch and - others). - -+ Added ImageQt wrapper module, for converting PIL Image objects to - QImage objects in an efficient way. - -+ Fixed 'getmodebands' to return the number of bands also for "PA" - and "LA" modes. Added 'getmodebandnames' helper that return the - band names. - -(1.1.6a2 released) - -+ Added float/double support to the TIFF loader (from Russell - Nelson). - -+ Fixed broken use of realloc() in path.c (from Jan Matejek) - -+ Added save support for Spider images (from William Baxter). - -+ Fixed broken 'paste' and 'resize' operations in pildriver - (from Bill Janssen). - -+ Added support for duplex scanning to the Sane interface (Abel - Deuring). - -(1.1.6a1 released) - -+ Fixed a memory leak in "convert(mode)", when converting from - L to P. - -+ Added pixel access object. The "load" method now returns a - access object that can be used to directly get and set pixel - values, using ordinary [x, y] notation: - - pixel = im.load() - v = pixel[x, y] - pixel[x, y] = v - - If you're accessing more than a few pixels, this is a lot - faster than using getpixel/putpixel. - -+ Fixed building on Cygwin (from Miki Tebeka). - -+ Fixed "point(callable)" on unloaded images (reported by HÃ¥kan - Karlsson). - -+ Fixed size bug in ImageWin.ImageWindow constructor (from Victor - Reijs) - -+ Fixed ImageMath float() and int() operations for Python 2.4 - (reported by Don Rozenberg). - -+ Fixed "RuntimeError: encoder error -8 in tostring" problem for - wide "RGB", "I", and "F" images. - -+ Fixed line width calculation. - -(1.1.6a0 released) - -+ Fixed byte order issue in Image.paste(ink) (from Ka-Ping Yee). - -+ Fixed off-by-0.5 errors in the ANTIALIAS code (based on input - from Douglas Bagnall). - -+ Added buffer interface support to the Path constructor. If - a buffer is provided, it is assumed to contain a flat array - of float coordinates (e.g. array.array('f', seq)). - -+ Added new ImageMath module. - -+ Fixed ImageOps.equalize when used with a small number of distinct - values (reported by David Kirtley). - -+ Fixed potential integer division in PSDraw.image (from Eric Etheridge). - -*** Changes from release 1.1 to 1.1.5 *** - -(1.1.5c2 and 1.1.5 final released) - -+ Added experimental PERSPECTIVE transform method (from Jeff Breiden- - bach). - -(1.1.5c1 released) - -+ Make sure "thumbnail" never generates zero-wide or zero-high images - (reported by Gene Skonicki) - -+ Fixed a "getcolors" bug that could result in a zero count for some - colors (reported by Richard Oudkerk). - -+ Changed default "convert" palette to avoid "rounding errors" when - round-tripping white source pixels (reported by Henryk Gerlach and - Jeff Epler). - -(1.1.5b3 released) - -+ Don't crash in "quantize" method if the number of colors requested - is larger than 256. This release raises a ValueError exception; - future versions may return a mode "RGB" image instead (reported - by Richard Oudkerk). - -+ Added WBMP read/write support (based on code by Duncan Booth). - -(1.1.5b2 released) - -+ Added DPI read/write support to the PNG codec. The decoder sets - the info["dpi"] attribute for PNG files with appropriate resolution - settings. The encoder uses the "dpi" option (based on code by Niki - Spahiev). - -+ Added limited support for "point" mappings from mode "I" to mode "L". - Only 16-bit values are supported (other values are clipped), the lookup - table must contain exactly 65536 entries, and the mode argument must be - set to "L". - -+ Added support for Mac OS X icns files (based on code by Bob Ippolito). - -+ Added "ModeFilter" support to the ImageFilter module. - -+ Added support for Spider images (from William Baxter). See the - comments in PIL/SpiderImagePlugin.py for more information on this - format. - -(1.1.5b1 released) - -+ Added new Sane release (from Ralph Heinkel). See the Sane/README - and Sane/CHANGES files for more information. - -+ Added experimental PngInfo chunk container to the PngImageFile - module. This can be used to add arbitrary chunks to a PNG file. - Create a PngInfo instance, use "add" or "add_text" to add chunks, - and pass the instance as the "pnginfo" option when saving the - file. - -+ Added "getpalette" method. This returns the palette as a list, - or None if the image has no palette. To modify the palette, use - "getpalette" to fetch the current palette, modify the list, and - put it back using "putpalette". - -+ Added optional flattening to the ImagePath "tolist" method. - tolist() or tolist(0) returns a list of 2-tuples, as before. - tolist(1) returns a flattened list instead. - -(1.1.5a5 released) - -+ Fixed BILINEAR/BICUBIC/ANTIALIAS filtering for mode "LA". - -+ Added "getcolors()" method. This is similar to the existing histo- - gram method, but looks at color values instead of individual layers, - and returns an unsorted list of (count, color) tuples. - - By default, the method returns None if finds more than 256 colors. - If you need to look for more colors, you can pass in a limit (this - is used to allocate internal tables, so you probably don't want to - pass in too large values). - -+ Build improvements: Fixed building under AIX, improved detection of - FreeType2 and Mac OS X framework libraries, and more. Many thanks - to everyone who helped test the new "setup.py" script! - -(1.1.5a4 released) - -+ The "save" method now looks for a file format driver before - creating the file. - -+ Don't use antialiased truetype fonts when drawing in mode "P", "I", - and "F" images. - -+ Rewrote the "setup.py" file. The new version scans for available - support libraries, and configures both the libImaging core library - and the bindings in one step. - - To use specific versions of the libraries, edit the ROOT variables - in the setup.py file. - -+ Removed threaded "show" viewer; use the old "show" implementation - instead (Windows). - -+ Added deprecation warnings to Image.offset, ImageDraw.setink, and - ImageDraw.setfill. - -+ Added width option to ImageDraw.line(). The current implementation - works best for straight lines; it does not support line joins, so - polylines won't look good. - -+ ImageDraw.Draw is now a factory function instead of a class. If - you need to create custom draw classes, inherit from the ImageDraw - class. All other code should use the factory function. - -+ Fixed loading of certain PCX files (problem reported by Greg - Hamilton, who also provided samples). - -+ Changed _imagingft.c to require FreeType 2.1 or newer. The - module can still be built with earlier versions; see comments - in _imagingft.c for details. - -(1.1.5a3 released) - -+ Added 'getim' method, which returns a PyCObject wrapping an - Imaging pointer. The description string is set to IMAGING_MAGIC. - See Imaging.h for pointer and string declarations. - -+ Fixed reading of TIFF JPEG images (problem reported by Ulrik - Svensson). - -+ Made ImageColor work under Python 1.5.2 - -+ Fixed division by zero "equalize" on very small images (from - Douglas Bagnall). - -(1.1.5a2 released) - -+ The "paste" method now supports the alternative "paste(im, mask)" - syntax (in this case, the box defaults to im's bounding box). - -+ The "ImageFile.Parser" class now works also for PNG files with - more than one IDAT block. - -+ Added DPI read/write to the TIFF codec, and fixed writing of - rational values. The decoder sets the info["dpi"] attribute - for TIFF files with appropriate resolution settings. The - encoder uses the "dpi" option. - -+ Disable interlacing for small (or narrow) GIF images, to - work around what appears to be a hard-to-find bug in PIL's - GIF encoder. - -+ Fixed writing of mode "P" PDF images. Made mode "1" PDF - images smaller. - -+ Made the XBM reader a bit more robust; the file may now start - with a few whitespace characters. - -+ Added support for enhanced metafiles to the WMF driver. The - separate PILWMF kit lets you render both placeable WMF files - and EMF files as raster images. See - - http://effbot.org/downloads#pilwmf - -(1.1.5a1 released) - -+ Replaced broken WMF driver with a WMF stub plugin (see below). - -+ Fixed writing of mode "1", "L", and "CMYK" PDF images (based on - input from Nicholas Riley and others). - -+ Fixed adaptive palette conversion for zero-width or zero-height - images (from Chris Cogdon) - -+ Fixed reading of PNG images from QuickTime 6 (from Paul Pharr) - -+ Added support for StubImageFile plugins, including stub plugins - for BUFR, FITS, GRIB, and HDF5 files. A stub plugin can identify - a given file format, but relies on application code to open and - save files in that format. - -+ Added optional "encoding" argument to the ImageFont.truetype - factory. This argument can be used to specify non-Unicode character - maps for fonts that support that. For example, to draw text using - the Microsoft Symbol font, use: - - font = ImageFont.truetype("symbol.ttf", 16, encoding="symb") - draw.text((0, 0), unichr(0xF000 + 0xAA)) - - (note that the symbol font uses characters in the 0xF000-0xF0FF - range) - - Common encodings are "unic" (Unicode), "symb" (Microsoft Symbol), - "ADOB" (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple - Roman). See the FreeType documentation for more information. - -+ Made "putalpha" a bit more robust; you can now attach an alpha - layer to a plain "L" or "RGB" image, and you can also specify - constant alphas instead of alpha layers (using integers or colour - names). - -+ Added experimental "LA" mode support. - - An "LA" image is an "L" image with an attached transparency layer. - Note that support for "LA" is not complete; some operations may - fail or produce unexpected results. - -+ Added "RankFilter", "MinFilter", "MedianFilter", and "MaxFilter" - classes to the ImageFilter module. - -+ Improved support for applications using multiple threads; PIL - now releases the global interpreter lock for many CPU-intensive - operations (based on work by Kevin Cazabon). - -+ Ignore Unicode characters in the PCF loader (from Andres Polit) - -+ Fixed typo in OleFileIO.loadfat, which could affect loading of - FlashPix and Image Composer images (Daniel Haertle) - -+ Fixed building on platforms that have Freetype but don't have - Tcl/Tk (Jack Jansen, Luciano Nocera, Piet van Oostrum and others) - -+ Added EXIF GPSInfo read support for JPEG files. To extract - GPSInfo information, open the file, extract the exif dictionary, - and check for the key 0x8825 (GPSInfo). If present, it contains - a dictionary mapping GPS keys to GPS values. For a list of keys, - see the EXIF specification. - - The "ExifTags" module contains a GPSTAGS dictionary mapping GPS - tags to tag names. - -+ Added DPI read support to the PCX and DCX codecs (info["dpi"]). - -+ The "show" methods now uses a built-in image viewer on Windows. - This viewer creates an instance of the ImageWindow class (see - below) and keeps it running in a separate thread. NOTE: This - was disabled in 1.1.5a4. - -+ Added experimental "Window" and "ImageWindow" classes to the - ImageWin module. These classes allow you to create a WCK-style - toplevel window, and use it to display raster data. - -+ Fixed some Python 1.5.2 issues (to build under 1.5.2, use the - Makefile.pre.in/Setup.in approach) - -+ Added support for the TIFF FillOrder tag. PIL can read mode "1", - "L", "P" and "RGB" images with non-standard FillOrder (based on - input from Jeff Breidenbach). - -(1.1.4 final released) - -+ Fixed ImageTk build problem on Unix. - -(1.1.4b2 released) - -+ Improved building on Mac OS X (from Jack Jansen). - -+ Improved building on Windows with MinGW (from Klamer Shutte). - -+ If no font is specified, ImageDraw now uses the embedded default - font. Use the "load" or "truetype" methods to load a real font. - -+ Added embedded default font to the ImageFont module (currently - an 8-pixel Courier font, taken from the X window distribution). - -(1.1.4b1 released) - -+ Added experimental EXIF support for JPEG files. To extract EXIF - information from a JPEG file, open the file as usual, and call the - "_getexif" method. If successful, this method returns a dictionary - mapping EXIF TIFF tags to values. If the file does not contain EXIF - data, the "_getexif" method returns None. - - The "ExifTags" module contains a dictionary mapping tags to tag - names. - - This interface will most likely change in future versions. - -+ Fixed a bug when using the "transparency" option with the GIF - writer. - -+ Added limited support for "bitfield compression" in BMP files - and DIB buffers, for 15-bit, 16-bit, and 32-bit images. This - also fixes a problem with ImageGrab module when copying screen- - dumps from the clipboard on 15/16/32-bit displays. - -+ Added experimental WAL (Quake 2 textures) loader. To use this - loader, import WalImageFile and call the "open" method in that - module. - -(1.1.4a4 released) - -+ Added updated SANE driver (Andrew Kuchling, Abel Deuring) - -+ Use Python's "mmap" module on non-Windows platforms to read some - uncompressed formats using memory mapping. Also added a "frombuffer" - function that allows you to access the contents of an existing string - or buffer object as if it were an image object. - -+ Fixed a memory leak that could appear when processing mode "P" - images (from Pier Paolo Glave) - -+ Ignore Unicode characters in the BDF loader (from Graham Dumpleton) - -(1.1.4a3 released; windows only) - -+ Added experimental RGBA-on-RGB drawing support. To use RGBA - colours on an RGB image, pass "RGBA" as the second string to - the ImageDraw.Draw constructor. - -+ Added support for non-ASCII strings (Latin-1) and Unicode - to the truetype font renderer. - -+ The ImageWin "Dib" object can now be constructed directly from - an image object. - -+ The ImageWin module now allows you use window handles as well - as device contexts. To use a window handle, wrap the handle in - an ImageWin.HWND object, and pass in this object instead of the - device context. - -(1.1.4a2 released) - -+ Improved support for 16-bit unsigned integer images (mode "I;16"). - This includes TIFF reader support, and support for "getextrema" - and "point" (from Klamer Shutte). - -+ Made the BdfFontFile reader a bit more robust (from Kevin Cazabon - and Dmitry Vasiliev) - -+ Changed TIFF writer to always write Compression tag, even when - using the default compression (from Greg Couch). - -+ Added "show" support for Mac OS X (from Dan Wolfe). - -+ Added clipboard support to the "ImageGrab" module (Windows only). - The "grabclipboard" function returns an Image object, a list of - filenames (not in 1.1.4), or None if neither was found. - -(1.1.4a1 released) - -+ Improved support for drawing RGB data in palette images. You can - now use RGB tuples or colour names (see below) when drawing in a - mode "P" image. The drawing layer automatically assigns color - indexes, as long as you don't use more than 256 unique colours. - -+ Moved self test from MiniTest/test.py to ./selftest.py. - -+ Added support for CSS3-style color strings to most places that - accept colour codes/tuples. This includes the "ImageDraw" module, - the Image "new" function, and the Image "paste" method. - - Colour strings can use one of the following formats: "#f00", - "#ff0000", "rgb(255,0,0)", "rgb(100%,0%,0%)", "hsl(0, 100%, 50%)", - or "red" (most X11-style colour names are supported). See the - documentation for the "ImageColor" module for more information. - -+ Fixed DCX decoder (based on input from Larry Bates) - -+ Added "IptcImagePlugin.getiptcinfo" helper to extract IPTC/NAA - newsphoto properties from JPEG, TIFF, or IPTC files. - -+ Support for TrueType/OpenType fonts has been added to - the standard distribution. You need the freetype 2.0 - library. - -+ Made the PCX reader a bit more robust when reading 2-bit - and 4-bit PCX images with odd image sizes. - -+ Added "Kernel" class to the ImageFilter module. This class - allows you to filter images with user-defined 3x3 and 5x5 - convolution kernels. - -+ Added "putdata" support for mode "I", "F" and "RGB". - -+ The GIF writer now supports the transparency option (from - Denis Benoit). - -+ A HTML version of the module documentation is now shipped - with the source code distribution. You'll find the files in - the Doc subdirectory. - -+ Added support for Palm pixmaps (from Bill Janssen). This - change was listed for 1.1.3, but the "PalmImagePlugin" driver - didn't make it into the distribution. - -+ Improved decoder error messages. - -(1.1.3 final released) - -+ Made setup.py look for old versions of zlib. For some back- - ground, see: http://www.gzip.org/zlib/advisory-2002-03-11.txt - -(1.1.3c2 released) - -+ Added setup.py file (tested on Unix and Windows). You still - need to build libImaging/imaging.lib in the traditional way, - but the setup.py script takes care of the rest. - - The old Setup.in/Makefile.pre.in build method is still - supported. - -+ Fixed segmentation violation in ANTIALIAS filter (an internal - buffer wasn't properly allocated). - -(1.1.3c1 released) - -+ Added ANTIALIAS downsampling filter for high-quality "resize" - and "thumbnail" operations. Also added filter option to the - "thumbnail" operation; the default value is NEAREST, but this - will most likely change in future versions. - -+ Fixed plugin loader to be more robust if the __file__ - variable isn't set. - -+ Added seek/tell support (for layers) to the PhotoShop - loader. Layer 0 is the main image. - -+ Added new (but experimental) "ImageOps" module, which provides - shortcuts for commonly used operations on entire images. - -+ Don't mess up when loading PNG images if the decoder leaves - data in the output buffer. This could cause internal errors - on some PNG images, with some versions of ZLIB. (Bug report - and patch provided by Bernhard Herzog.) - -+ Don't mess up on Unicode filenames. - -+ Don't mess up when drawing on big endian platforms. - -+ Made the TIFF loader a bit more robust; it can now read some - more slightly broken TIFF files (based on input from Ted Wright, - Bob Klimek, and D. Alan Stewart) - -+ Added OS/2 EMX build files (from Andrew MacIntyre) - -+ Change "ImageFont" to reject image files if they don't have the - right mode. Older versions could leak memory for "P" images. - (Bug reported by Markus Gritsch). - -+ Renamed some internal functions to avoid potential build - problem on Mac OS X. - -+ Added DL_EXPORT where relevant (for Cygwin, based on input - from Robert Yodlowski) - -+ (re)moved bogus __init__ call in BdfFontFile (bug spotted - by Fred Clare) - -+ Added "ImageGrab" support (Windows only) - -+ Added support for XBM hotspots (based on code contributed by - Bernhard Herzog). - -+ Added write support for more TIFF tags, namely the Artist, - Copyright, DateTime, ResolutionUnit, Software, XResolution and - YResolution tags (from Greg Couch) - -+ Added TransposedFont wrapper to ImageFont module - -+ Added "optimize" flag to GIF encoder. If optimize is present - and non-zero, PIL will work harder to create a small file. - -+ Raise "EOFError" (not IndexError) when reading beyond the - end of a TIFF sequence. - -+ Support rewind ("seek(0)") for GIF and TIFF sequences. - -+ Load grayscale GIF images as mode "L" - -+ Added DPI read/write support to the JPEG codec. The decoder - sets the info["dpi"] attribute for JPEG files with JFIF dpi - settings. The encoder uses the "dpi" option: - - im = Image.open("file.jpg") - dpi = im.info["dpi"] # raises KeyError if DPI not known - im.save("out.jpg", dpi=dpi) - - Note that PIL doesn't always preserve the "info" attribute - for normal image operations. - -(1.1.2c1 and 1.1.2 final released) - -+ Adapted to Python 2.1. Among other things, all uses of the - "regex" module has been repleased with "re". - -+ Fixed attribute error when reading large PNG files (this bug - was introduced in maintenance code released after the 1.1.1 - release) - -+ Ignore non-string objects in sys.path - -+ Fixed Image.transform(EXTENT) for negative xoffsets - -+ Fixed loading of image plugins if PIL is installed as a package. - (The plugin loader now always looks in the directory where the - Image.py module itself is found, even if that directory isn't on - the standard search path) - -+ The Png plugin has been added to the list of preloaded standard - formats - -+ Fixed bitmap/text drawing in fill mode. - -+ Fixed "getextrema" to work also for multiband images. - -+ Added transparency support for L and P images to the PNG codec. - -+ Improved support for read-only images. The "load" method now - sets the "readonly" attribute for memory-mapped images. Operations - that modifies an image in place (such as "paste" and drawing operations) - creates an in-memory copy of the image, if necessary. (before this - change, any attempt to modify a memory-mapped image resulted in a - core dump...) - -+ Added special cases for lists everywhere PIL expects a sequence. - This should speed up things like "putdata" and drawing operations. - -+ The Image.offset method is deprecated. Use the ImageChops.offset - function instead. - -+ Changed ImageChops operators to copy palette and info dictionary - from the first image argument. - -(1.1.1 released) - -+ Additional fixes for Python 1.6/2.0, including TIFF "save" bug. - -+ Changed "init" to properly load plugins when PIL is used as a - package. - -+ Fixed broken "show" method (on Unix) - -*** Changes from release 1.0 to 1.1 *** - -+ Adapted to Python 1.6 ("append" and other method changes) - -+ Fixed Image.paste when pasting with solid colour and matte - layers ("L" or "RGBA" masks) (bug reported by Robert Kern) - -+ To make it easier to distribute prebuilt versions of PIL, - the tkinit binding stuff has been moved to a separate - extension module, named "_imagingtk". - -*** Changes from release 0.3b2 to 1.0 final *** - -+ If there's no 16-bit integer (like on a Cray T3E), set - INT16 to the smallest integer available. Most of the - library works just fine anyway (from Bill Crutchfield) - -+ Tweaks to make drawing work on big-endian platforms. - -(1.0c2 released) - -+ If PIL is built with the WITH_TKINTER flag, ImageTk can - automatically hook into a standard Tkinter build. You - no longer need to build your own Tkinter to use the - ImageTk module. - - The old way still works, though. For more information, - see Tk/install.txt. - -+ Some tweaks to ImageTk to support multiple Tk interpreters - (from Greg Couch). - -+ ImageFont "load_path" now scans directory mentioned in .pth - files (from Richard Jones). - -(1.0c1 released) - -+ The TIFF plugin has been rewritten. The new plugin fully - supports all major PIL image modes (including F and I). - -+ The ImageFile module now includes a Parser class, which can - be used to incrementally decode an image file (while down- - loading it from the net, for example). See the handbook for - details. - -+ "show" now converts non-standard modes to "L" or "RGB" (as - appropriate), rather than writing weird things to disk for - "xv" to choke upon. (bug reported by Les Schaffer). - -(1.0b2 released) - -+ Major speedups for rotate, transform(EXTENT), and transform(AFFINE) - when using nearest neighbour resampling. - -+ Modified ImageDraw to be compatible with the Arrow graphics - interface. See the handbook for details. - -+ PIL now automatically loads file codecs when used as a package - (from The Dragon De Monsyne). Also included an __init__.py file - in the standard distribution. - -+ The GIF encoder has been modified to produce much smaller files. - - PIL now uses a run-length encoding method to encode GIF files. - On a random selection of GIF images grabbed from the web, this - version makes the images about twice as large as the original - LZW files, where the earlier version made them over 5 times - larger. YMMV, of course. - -+ Added PCX write support (works with "1", "P", "L", and "RGB") - -+ Added "bitmap" and "textsize" methods to ImageDraw. - -+ Improved font rendering code. Fixed a bug or two, and moved - most of the time critical stuff to C. - -+ Removed "bdf2pil.py". Use "pilfont.py" instead! - -+ Improved 16-bit support (still experimental, though). - - The following methods now support "I;16" and "I;16B" images: - "getpixel", "copy", "convert" (to and from mode "I"), "resize", - "rotate", and "transform" with nearest neighbour filters, and - "save" using the IM format. The "new" and "open" functions - also work as expected. On Windows, 16-bit files are memory - mapped. - - NOTE: ALL other operations are still UNDEFINED on 16-bit images. - -+ The "paste" method now supports constant sources. - - Just pass a colour value (a number or a tuple, depending on - the target image mode) instead of the source image. - - This was in fact implemented in an inefficient way in - earlier versions (the "paste" method generated a temporary - source image if you passed it a colour instead of an image). - In this version, this is handled on the C level instead. - -+ Added experimental "RGBa" mode support. - - An "RGBa" image is an RGBA image where the colour components - have have been premultipled with the alpha value. PIL allows - you to convert an RGBA image to an RGBa image, and to paste - RGBa images on top of RGB images. Since this saves a bunch - of multiplications and shifts, it is typically about twice - as fast an ordinary RGBA paste. - -+ Eliminated extra conversion step when pasting "RGBA" or "RGBa" - images on top of "RGB" images. - -+ Fixed Image.BICUBIC resampling for "RGB" images. - -+ Fixed PCX image file handler to properly read 8-bit PCX - files (bug introduced in 1.0b1, reported by Bernhard - Herzog) - -+ Fixed PSDraw "image" method to restore the coordinate - system. - -+ Fixed "blend" problem when applied to images that was - not already loaded (reported by Edward C. Jones) - -+ Fixed -f option to "pilconvert.py" (from Anthony Baxter) - -(1.0b1 released) - -+ Added Toby J. Sargeant's quantization package. To enable - quantization, use the "palette" option to "convert": - - imOut = im.convert("P", palette=Image.ADAPTIVE) - - This can be used with "L", "P", and "RGB" images. In this - version, dithering cannot be used with adaptive palettes. - - Note: ADAPTIVE currently maps to median cut quantization - with 256 colours. The quantization package also contains - a maximum coverage quantizer, which will be supported by - future versions of PIL. - -+ Added Eric S. Raymond's "pildriver" image calculator to the - distribution. See the docstring for more information. - -+ The "offset" method no longer dumps core if given positive - offsets (from Charles Waldman). - -+ Fixed a resource leak that could cause ImageWin to run out of - GDI resources (from Roger Burnham). - -+ Added "arc", "chord", and "pieslice" methods to ImageDraw (inspired - by code contributed by Richard Jones). - -+ Added experimental 16-bit support, via modes "I;16" (little endian - data) and "I;16B" (big endian). Only a few methods properly support - such images (see above). - -+ Added XV thumbnail file handler (from Gene Cash). - -+ Fixed BMP image file handler to handle palette images with small - palettes (from Rob Hooft). - -+ Fixed Sun raster file handler for palette images (from Charles - Waldman). - -+ Improved various internal error messages. - -+ Fixed Path constructor to handle arbitrary sequence objects. This - also affects the ImageDraw class (from Richard Jones). - -+ Fixed a bug in JpegDecode that caused PIL to report "decoder error - -2" for some progressive JPEG files (reported by Magnus Källström, - who also provided samples). - -+ Fixed a bug in JpegImagePlugin that caused PIL to hang when loading - JPEG files using 16-bit quantization tables. - -+ The Image "transform" method now supports Image.QUAD transforms. - The data argument is an 8-tuple giving the upper left, lower - left, lower right, and upper right corner of the source quadri- - lateral. Also added Image.MESH transform which takes a list - of quadrilaterals. - -+ The Image "resize", "rotate", and "transform" methods now support - Image.BILINEAR (2x2) and Image.BICUBIC (4x4) resampling filters. - Filters can be used with all transform methods. - -+ The ImageDraw "rectangle" method now includes both the right - and the bottom edges when drawing filled rectangles. - -+ The TGA decoder now works properly for runlength encoded images - which have more than one byte per pixel. - -+ "getbands" on an YCbCr image now returns ("Y", "Cb", "Cr") - -+ Some file drivers didn't handle the optional "modify" argument - to the load method. This resulted in exceptions when you used - "paste" (and other methods that modify an image in place) on a - newly opened file. - -*** Changes from release 0.2 (b5) to 0.3 (b2) *** - -(0.3b2 released) - -The test suite includes 825 individual tests. - -+ An Image "getbands" method has been added. It returns a tuple - containing the individual band names for this image. To figure - out how many bands an image has, use "len(im.getbands())". - -+ An Image "putpixel" method has been added. - -+ The Image "point" method can now be used to convert "L" images - to any other format, via a lookup table. That table should - contain 256 values for each band in the output image. - -+ Some file drivers (including FLI/FLC, GIF, and IM) accidently - overwrote the offset method with an internal attribute. All - drivers have been updated to use private attributes where - possible. - -+ The Image "histogram" method now works for "I" and "F" images. - For these modes, PIL divides the range between the min and - max values used in the image into 256 bins. You can also - pass in your own min and max values via the "extrema" option: - - h = im.histogram(extrema=(0, 255)) - -+ An Image "getextrema" method has been added. It returns the - min and max values used in the image. In this release, this - works for single band images only. - -+ Changed the PNG driver to load and save mode "I" images as - 16-bit images. When saving, values outside the range 0..65535 - are clipped. - -+ Fixed ImageFont.py to work with the new "pilfont" compiler. - -+ Added JPEG "save" and "draft" support for mode "YCbCr" images. - Note that if you save an "YCbCr" image as a JPEG file and read - it back, it is read as an RGB file. To get around this, you - can use the "draft" method: - - im = Image.open("color.jpg") - im.draft("YCbCr", im.size) - -+ Read "RGBA" TGA images. Also fixed the orientation bug; all - images should now come out the right way. - -+ Changed mode name (and internal representation) from "YCrCb" - to "YCbCr" (!) - *** WARNING: MAY BREAK EXISTING CODE *** - -(0.3b1 released) - -The test suite includes 750 individual tests. - -+ The "pilfont" package is now included in the standard PIL - distribution. The pilfont utility can be used to convert - X BDF and PCF raster font files to a format understood by - the ImageFont module. - -+ GIF files are now interlaced by default. To write a - non-interlaced file, pass interlace=0 to the "save" - method. - -+ The default string format has changed for the "fromstring" - and "tostring" methods. - *** WARNING: MAY BREAK EXISTING CODE *** - - NOTE: If no extra arguments are given, the first line in - the string buffer is the top line of the image, instead of - the bottom line. For RGB images, the string now contains - 3 bytes per pixel instead of 4. These changes were made - to make the methods compatible with the "fromstring" - factory function. - - To get the old behaviour, use the following syntax: - - data = im.tostring("raw", "RGBX", 0, -1) - im.fromstring(data, "raw", "RGBX", 0, -1) - -+ "new" no longer gives a MemoryError if the width or height - is zero (this only happened on platforms where malloc(0) - or calloc(0) returns NULL). - -+ "new" now adds a default palette object to "P" images. - -+ You can now convert directly between all modes supported by - PIL. When converting colour images to "P", PIL defaults to - a "web" palette and dithering. When converting greyscale - images to "1", PIL uses a thresholding and dithering. - -+ Added a "dither" option to "convert". By default, "convert" - uses floyd-steinberg error diffusion for "P" and "1" targets, - so this option is only used to *disable* dithering. Allowed - values are NONE (no dithering) or FLOYDSTEINBERG (default). - - imOut = im.convert("P", dither=Image.NONE) - -+ Added a full set of "I" decoders. You can use "fromstring" - (and file decoders) to read any standard integer type as an - "I" image. - -+ Added some support for "YCbCr" images (creation, conversion - from/to "L" and "RGB", IM YCC load/save) - -+ "getpixel" now works properly with fractional coordinates. - -+ ImageDraw "setink" now works with "I", "F", "RGB", "RGBA", - "RGBX", "CMYK", and "YCbCr" images. - -+ ImImagePlugin no longer attaches palettes to "RGB" images. - -+ Various minor fixes. - -(0.3a4 released) - -+ Added experimental IPTC/NAA support. - -+ Eliminated AttributeError exceptions after "crop" (from - Skip Montanaro) - -+ Reads some uncompressed formats via memory mapping (this - is currently supported on Win32 only) - -+ Fixed some last minute glitches in the last alpha release - (Types instead of types in Image.py, version numbers, etc.) - -+ Eliminated some more bogus compiler warnings. - -+ Various fixes to make PIL compile and run smoother on Macs - (from Jack Jansen). - -+ Fixed "fromstring" and "tostring" for mode "I" images. - -(0.3a3 released) - -The test suite includes 530 individual tests. - -+ Eliminated unexpected side-effect in "paste" with matte. "paste" - now works properly also if compiled with "gcc". - -+ Adapted to Python 1.5 (build issues only) - -+ Fixed the ImageDraw "point" method to draw also the last - point (!). - -+ Added "I" and "RGBX" support to Image.new. - -+ The plugin path is now properly prepended to the module search - path when a plugin module is imported. - -+ Added "draw" method to the ImageWin.Dib class. This is used by - Topaz to print images on Windows printers. - -+ "convert" now supports conversions from "P" to "1" and "F". - -+ "paste" can now take a colour instead of an image as the first argument. - The colour must match the colour argument given to the new function, and - match the mode of the target image. - -+ Fixed "paste" to allow a mask also for mode "F" images. - -+ The BMP driver now saves mode "1" images. When loading images, the mode - is set to "L" for 8-bit files with greyscale palettes, and to "P" for - other 8-bit files. - -+ The IM driver now reads and saves "1" images (file modes "0 1" or "L 1"). - -+ The JPEG and GIF drivers now saves "1" images. For JPEG, the image - is saved as 8-bit greyscale (it will load as mode "L"). For GIF, the - image will be loaded as a "P" image. - -+ Fixed a potential buffer overrun in the GIF encoder. - -(0.3a2 released) - -The test suite includes 400 individual tests. - -+ Improvements to the test suite revealed a number of minor bugs, which - are all fixed. Note that crop/paste, 32-bit ImageDraw, and ImageFont - are still weak spots in this release. - -+ Added "putpalette" method to the Image class. You can use this - to add or modify the palette for "P" and "L" images. If a palette - is added to an "L" image, it is automatically converted to a "P" - image. - -+ Fixed ImageDraw to properly handle 32-bit image memories - ("RGB", "RGBA", "CMYK", "F") - -+ Fixed "fromstring" and "tostring" not to mess up the mode attribute - in default mode. - -+ Changed ImPlatform.h to work on CRAY's (don't have one at home, so I - haven't tried it). The previous version assumed that either "short" - or "int" were 16-bit wide. PIL still won't compile on platforms where - neither "short", "int" nor "long" are 32-bit wide. - -+ Added file= and data= keyword arguments to PhotoImage and BitmapImage. - This allows you to use them as drop-in replacements for the corre- - sponding Tkinter classes. - -+ Removed bogus references to the crack coder (ImagingCrack). - -(0.3a1 released) - -+ Make sure image is loaded in "tostring". - -+ Added floating point packer (native 32-bit floats only). - -*** Changes from release 0.1b1 to 0.2 (b5) *** - -+ Modified "fromstring" and "tostring" methods to use file codecs. - Also added "fromstring" factory method to create an image directly - from data in a string. - -+ Added support for 32-bit floating point images (mode "F"). You - can convert between "L" and "F" images, and apply a subset of the - available image processing methods on the "F" image. You can also - read virtually any data format into a floating point image memory; - see the section on "Decoding Floating Point Data" in the handbook - for more information. - -(0.2b5 released; on windows only) - -+ Fixed the tobitmap() method to work properly for small bitmaps. - -+ Added RMS and standard deviation to the ImageStat.Stat class. Also - modified the constructor to take an optional feature mask, and also - to accept either an image or a list containing the histogram data. - -+ The BitmapImage code in ImageTk can now use a special bitmap - decoder, which has to be patched into Tk. See the "Tk/pilbitmap.txt" - file for details. If not installed, bitmaps are transferred to Tk as - XBM strings. - -+ The PhotoImage code in ImageTk now uses a Tcl command ("PyImagingPaste") - instead of a special image type. This gives somewhat better performance, - and also allows PIL to support transparency. - *** WARNING: TKAPPINIT MUST BE MODIFIED *** - -+ ImageTk now honours the alpha layer in RGBA images. Only fully - transparent pixels are made transparent (that is, the alpha layer - is treated as a mask). To treat the alpha laters as a matte, you - must paste the image on the background before handing it over to - ImageTk. - -+ Added McIdas reader (supports 8-bit images only). - -+ PIL now preloads drivers for BMP, GIF, JPEG, PPM, and TIFF. As - long as you only load and save these formats, you don't have to - wait for a full scan for drivers. To force scanning, call the - Image.init() function. - -+ The "seek" and "tell" methods are now always available, also for - single-frame images. - -+ Added optional mask argument to histogram method. The mask may - be an "1" or "L" image with the same size as the original image. - Only pixels where the mask is non-zero are included in the - histogram. - -+ The "paste" method now allows you to specify only the lower left - corner (a 2-tuple), instead of the full region (a 4-tuple). - -+ Reverted to old plugin scanning model; now scans all directory - names in the path when looking for plugins. - -+ Added PIXAR raster support. Only uncompressed ("dumped") RGB - images can currently be read (based on information provided - by Greg Coats). - -+ Added FlashPix (FPX) read support. Reads all pixel formats, but - only the highest resolution is read, and the viewing transform is - currently ignored. - -+ Made PNG encoding somewhat more efficient in "optimize" mode; a - bug in 0.2b4 didn't enable all predictor filters when optimized - storage were requested. - -+ Added Microsoft Image Composer (MIC) read support. When opened, - the first sprite in the file is loaded. You can use the seek method - to load additional sprites from the file. - -+ Properly reads "P" and "CMYK" PSD images. - -+ "pilconvert" no longer optimizes by default; use the -o option to - make the file as small as possible (at the expense of speed); use - the -q option to set the quality when compressing to JPEG. - -+ Fixed "crop" not to drop the palette for "P" images. - -+ Added and verified FLC support. - -+ Paste with "L" or "RGBA" alpha is now several times faster on most - platforms. - -+ Changed Image.new() to initialize the image to black, as described - in the handbook. To get an uninitialized image, use None as the - colour. - -+ Fixed the PDF encoder to produce a valid header; Acrobat no longer - complains when you load PDF images created by PIL. - -+ PIL only scans fully-qualified directory names in the path when - looking for plugins. - *** WARNING: MAY BREAK EXISTING CODE *** - -+ Faster implementation of "save" used when filename is given, - or when file object has "fileno" and "flush" methods. - -+ Don't crash in "crop" if region extends outside the source image. - -+ Eliminated a massive memory leak in the "save" function. - -+ The GIF decoder doesn't crash if the code size is set to an illegal - value. This could happen since another bug didn't handle local - palettes properly if they didn't have the same size as the - global palette (not very common). - -+ Added predictor support (TIFF 6.0 section 14) to the TIFF decoder. - -+ Fixed palette and padding problems in BMP driver. Now properly - writes "1", "L", "P" and "RGB" images. - -+ Fixed getpixel()/getdata() to return correct pixel values. - -+ Added PSD (PhotoShop) read support. Reads both uncompressed - and compressed images of most types. - -+ Added GIF write support (writes "uncompressed" GIF files only, - due to unresolvable licensing issues). The "gifmaker.py" script - can be used to create GIF animations. - -+ Reads 8-bit "L" and "P" TGA images. Also reads 16-bit "RGB" - images. - -+ Added FLI read support. This driver has only been tested - on a few FLI samples. - -+ Reads 2-bit and 4-bit PCX images. - -+ Added MSP read and write support. Both version 1 and 2 can be - read, but only version 1 (uncompressed) files are written. - -+ Fixed a bug in the FLI/FLC identification code that caused the - driver to raise an exception when parsing valid FLI/FLC files. - -+ Improved performance when loading file format plugins, and when - opening files. - -+ Added GIF animation support, via the "seek" and "tell" methods. - You can use "player.py" to play an animated GIF file. - -+ Removed MNG support, since the spec is changing faster than I - can change the code. I've added support for the experimental - ARG format instead. Contact me for more information on this - format. - -+ Added keyword options to the "save" method. The following options - are currently supported: - - format option description - -------------------------------------------------------- - JPEG optimize minimize output file at the - expense of compression speed. - - JPEG progressive enable progressive output. the - option value is ignored. - - JPEG quality set compression quality (1-100). - the default value is 75. - - JPEG smooth smooth dithered images. value - is strengh (1-100). default is - off (0). - - PNG optimize minimize output file at the - expense of compression speed. - - Expect more options in future releases. Also note that - file writers silently ignore unknown options. - -+ Plugged memory leaks in the PNG and TIFF decoders. - -+ Added PNG write support. - -+ (internal) RGB unpackers and converters now set the pad byte - to 255 (full opacity). - -+ Properly handles the "transparency" property for GIF, PNG - and XPM files. - -+ Added a "putalpha" method, allowing you to attach a "1" or "L" - image as the alpha layer to an "RGBA" image. - -+ Various improvements to the sample scripts: - - "pilconvert" Carries out some extra tricks in order to make - the resulting file as small as possible. - - "explode" (NEW) Split an image sequence into individual frames. - - "gifmaker" (NEW) Convert a sequence file into a GIF animation. - Note that the GIF encoder create "uncompressed" GIF - files, so animations created by this script are - rather large (typically 2-5 times the compressed - sizes). - - "image2py" (NEW) Convert a single image to a python module. See - comments in this script for details. - - "player" If multiple images are given on the command line, - they are interpreted as frames in a sequence. The - script assumes that they all have the same size. - Also note that this script now can play FLI/FLC - and GIF animations. - - This player can also execute embedded Python - animation applets (ARG format only). - - "viewer" Transparent images ("P" with transparency property, - and "RGBA") are superimposed on the standard Tk back- - ground. - -+ Fixed colour argument to "new". For multilayer images, pass a - tuple: (Red, Green, Blue), (Red, Green, Blue, Alpha), or (Cyan, - Magenta, Yellow, Black). - -+ Added XPM (X pixmap) read support. - -(0.2b3 released) - -+ Added MNG (multi-image network graphics) read support. "Ming" - is a proposed animation standard, based on the PNG file format. - - You can use the "player" sample script to display some flavours - of this format. The MNG standard is still under development, - as is this driver. More information, including sample files, - can be found at - -+ Added a "verify" method to images loaded from file. This method - scans the file for errors, without actually decoding the image - data, and raises a suitable exception if it finds any problems. - Currently implemented for PNG and MNG files only. - -+ Added support for interlaced GIF images. - -+ Added PNG read support -- if linked with the ZLIB compression library, - PIL reads all kinds of PNG images, except interlaced files. - -+ Improved PNG identification support -- doesn't mess up on unknown - chunks, identifies all possible PNG modes, and verifies checksum - on PNG header chunks. - -+ Added an experimental reader for placable Windows Meta Files (WMF). - This reader is still very incomplete, but it illustrates how PIL's - drawing capabilities can be used to render vector and metafile - formats. - -+ Added restricted drivers for images from Image Tools (greyscale - only) and LabEye/IFUNC (common interchange modes only). - -+ Some minor improvements to the sample scripts provided in the - "Scripts" directory. - -+ The test images have been moved to the "Images" directory. - -(0.2b2 released) -(0.2b1 released; Windows only) - -+ Fixed filling of complex polygons. The ImageDraw "line" and - "polygon" methods also accept Path objects. - -+ The ImageTk "PhotoImage" object can now be constructed directly - from an image. You can also pass the object itself to Tkinter, - instead of using the "image" attribute. Finally, using "paste" - on a displayed image automatically updates the display. - -+ The ImageTk "BitmapImage" object allows you to create transparent - overlays from 1-bit images. You can pass the object itself to - Tkinter. The constructor takes the same arguments as the Tkinter - BitmapImage class; use the "foreground" option to set the colour - of the overlay. - -+ Added a "putdata" method to the Image class. This can be used to - load a 1-layer image with data from a sequence object or a string. - An optional floating point scale and offset can be used to adjust - the data to fit into the 8-bit pixel range. Also see the "getdata" - method. - -+ Added the EXTENT method to the Image "transform" method. This can - be used to quickly crop, stretch, shrink, or mirror a subregion - from another image. - -+ Adapted to Python 1.4. - -+ Added a project makefile for Visual C++ 4.x. This allows you to - easily build a dynamically linked version of PIL for Windows 95 - and NT. - -+ A Tk "booster" patch for Windows is available. It gives dramatic - performance improvements for some displays. Has been tested with - Tk 4.2 only, but is likely to work with Tk 4.1 as well. See the Tk - subdirectory for details. - -+ You can now save 1-bit images in the XBM format. In addition, the - Image class now provides a "tobitmap" method which returns a string - containing an XBM representation of the image. Quite handy to use - with Tk. - -+ More conversions, including "RGB" to "1" and more. - -(0.2a1 released) - -+ Where earlier versions accepted lists, this version accepts arbitrary - Python sequences (including strings, in some cases). A few resource - leaks were plugged in the process. - -+ The Image "paste" method now allows the box to extend outside - the target image. The size of the box, the image to be pasted, - and the optional mask must still match. - -+ The ImageDraw module now supports filled polygons, outlined and - filled ellipses, and text. Font support is rudimentary, though. - -+ The Image "point" method now takes an optional mode argument, - allowing you to convert the image while translating it. Currently, - this can only be used to convert "L" or "P" images to "1" images - (creating thresholded images or "matte" masks). - -+ An Image "getpixel" method has been added. For single band images, - it returns the pixel value at a given position as an integer. - For n-band images, it returns an n-tuple of integers. - -+ An Image "getdata" method has been added. It returns a sequence - object representing the image as a 1-dimensional array. Only len() - and [] can be used with this sequence. This method returns a - reference to the existing image data, so changes in the image - will be immediately reflected in the sequence object. - -+ Fixed alignment problems in the Windows BMP writer. - -+ If converting an "RGB" image to "RGB" or "L", you can give a second - argument containing a colour conversion matrix. - -+ An Image "getbbox" method has been added. It returns the bounding - box of data in an image, considering the value 0 as background. - -+ An Image "offset" method has been added. It returns a new image - where the contents of the image have been offset the given distance - in X and/or Y direction. Data wraps between edges. - -+ Saves PDF images. The driver creates a binary PDF 1.1 files, using - JPEG compression for "L", "RGB", and "CMYK" images, and hex encoding - (same as for PostScript) for other formats. - -+ The "paste" method now accepts "1" masks. Zero means transparent, - any other pixel value means opaque. This is faster than using an - "L" transparency mask. - -+ Properly writes EPS files (and properly prints images to postscript - printers as well). - -+ Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR - files. Cursor animations are not supported. - -+ Fixed alignment problems in the Sun raster loader. - -+ Added "draft" and "thumbnail" methods. The draft method is used - to optimize loading of JPEG and PCD files, the thumbnail method is - used to create a thumbnail representation of an image. - -+ Added Windows display support, via the ImageWin class (see the - handbook for details). - -+ Added raster conversion for EPS files. This requires GNU or Aladdin - Ghostscript, and probably works on UNIX only. - -+ Reads PhotoCD (PCD) images. The base resolution (768x512) can be - read from a PhotoCD file. - -+ Eliminated some compiler warnings. Bindings now compile cleanly in C++ - mode. Note that the Imaging library itself must be compiled in C mode. - -+ Added "bdf2pil.py", which converts BDF fonts into images with associated - metrics. This is definitely work in progress. For info, see description - in script for details. - -+ Fixed a bug in the "ImageEnhance.py" module. - -+ Fixed a bug in the netpbm save hack in "GifImagePlugin.py" - -+ Fixed 90 and 270 degree rotation of rectangular images. - -+ Properly reads 8-bit TIFF palette-color images. - -+ Reads plane separated RGB and CMYK TIFF images. - -+ Added driver debug mode. This is enabled by setting Image.DEBUG - to a non-zero value. Try the -D option to "pilfile.py" and see what - happens. - -+ Don't crash on "atend" constructs in PostScript files. - -+ Only the Image module imports _imaging directly. Other modules - should refer to the binding module as "Image.core". - -*** Changes from release 0.0 to 0.1 (b1) *** - -+ A handbook is available (distributed separately). - -+ The coordinate system is changed so that (0,0) is now located - in the upper left corner. This is in compliancy with ISO 12087 - and 90% of all other image processing and graphics libraries. - -+ Modes "1" (bilevel) and "P" (palette) have been introduced. Note - that bilevel images are stored with one byte per pixel. - -+ The Image "crop" and "paste" methods now accepts None as the - box argument, to refer to the full image (self, that is). - -+ The Image "crop" method now works properly. - -+ The Image "point" method is now available. You can use either a - lookup table or a function taking one argument. - -+ The Image join function has been renamed to "merge". - -+ An Image "composite" function has been added. It is identical - to copy() followed by paste(mask). - -+ An Image "eval" function has been added. It is currently identical - to point(function); that is, only a single image can be processed. - -+ A set of channel operations has been added. See the "ImageChops" - module, test_chops.py, and the handbook for details. - -+ Added the "pilconvert" utility, which converts image files. Note - that the number of output formats are still quite restricted. - -+ Added the "pilfile" utility, which quickly identifies image files - (without loading them, in most cases). - -+ Added the "pilprint" utility, which prints image files to Postscript - printers. - -+ Added a rudimentary version of the "pilview" utility, which is - simple image viewer based on Tk. Only File/Exit and Image/Next - works properly. - -+ An interface to Tk has been added. See "Lib/ImageTk.py" and README - for details. - -+ An interface to Jack Jansen's Img library has been added (thanks to - Jack). This allows you to read images through the Img extensions file - format handlers. See the file "Lib/ImgExtImagePlugin.py" for details. - -+ Postscript printing is provided through the PSDraw module. See the - handbook for details. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS b/tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS deleted file mode 100755 index 8846fb94547..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/CONTENTS +++ /dev/null @@ -1,299 +0,0 @@ -Imaging/README - -Imaging/CHANGES - -Imaging/CONTENTS -Imaging/MANIFEST - -Imaging/BUILDME - -Imaging/setup.py - -Imaging/selftest.py -Imaging/doctest.py - -Imaging/libImaging/Imaging.h -Imaging/libImaging/ImDib.h -Imaging/libImaging/ImPlatform.h - -Imaging/libImaging/Quant.h -Imaging/libImaging/QuantHash.h -Imaging/libImaging/QuantHeap.h -Imaging/libImaging/QuantDefines.h -Imaging/libImaging/QuantTypes.h - -Imaging/libImaging/Access.c -Imaging/libImaging/Antialias.c -Imaging/libImaging/Bands.c -Imaging/libImaging/Blend.c -Imaging/libImaging/Chops.c -Imaging/libImaging/Convert.c -Imaging/libImaging/ConvertYCbCr.c -Imaging/libImaging/Copy.c -Imaging/libImaging/Crc32.c -Imaging/libImaging/Crop.c -Imaging/libImaging/Dib.c -Imaging/libImaging/Draw.c -Imaging/libImaging/Effects.c -Imaging/libImaging/Except.c -Imaging/libImaging/File.c -Imaging/libImaging/Fill.c -Imaging/libImaging/Filter.c -Imaging/libImaging/Geometry.c -Imaging/libImaging/GetBBox.c -Imaging/libImaging/Histo.c -Imaging/libImaging/Matrix.c -Imaging/libImaging/ModeFilter.c -Imaging/libImaging/Negative.c -Imaging/libImaging/Offset.c -Imaging/libImaging/Pack.c -Imaging/libImaging/Palette.c -Imaging/libImaging/Paste.c -Imaging/libImaging/Point.c -Imaging/libImaging/Quant.c -Imaging/libImaging/QuantHash.c -Imaging/libImaging/QuantHeap.c -Imaging/libImaging/RankFilter.c -Imaging/libImaging/Storage.c -Imaging/libImaging/Unpack.c -Imaging/libImaging/UnpackYCC.c -Imaging/libImaging/UnsharpMask.c - -Imaging/libImaging/Bit.h -Imaging/libImaging/Gif.h -Imaging/libImaging/Jpeg.h -Imaging/libImaging/Lzw.h -Imaging/libImaging/Raw.h -Imaging/libImaging/Zip.h -Imaging/libImaging/BitDecode.c -Imaging/libImaging/EpsEncode.c -Imaging/libImaging/FliDecode.c -Imaging/libImaging/GifDecode.c -Imaging/libImaging/GifEncode.c -Imaging/libImaging/HexDecode.c -Imaging/libImaging/JpegDecode.c -Imaging/libImaging/JpegEncode.c -Imaging/libImaging/LzwDecode.c -Imaging/libImaging/MspDecode.c -Imaging/libImaging/PackDecode.c -Imaging/libImaging/PcdDecode.c -Imaging/libImaging/PcxEncode.c -Imaging/libImaging/PcxDecode.c -Imaging/libImaging/RawDecode.c -Imaging/libImaging/RawEncode.c -Imaging/libImaging/SunRleDecode.c -Imaging/libImaging/TgaRleDecode.c -Imaging/libImaging/XbmDecode.c -Imaging/libImaging/XbmEncode.c -Imaging/libImaging/ZipDecode.c -Imaging/libImaging/ZipEncode.c - -Imaging/_imaging.c -Imaging/decode.c -Imaging/encode.c -Imaging/display.c -Imaging/map.c -Imaging/outline.c -Imaging/path.c - -Imaging/_imagingtk.c -Imaging/_imagingft.c -Imaging/_imagingcms.c -Imaging/_imagingmath.c - -Imaging/PIL.pth -Imaging/PIL/__init__.py -Imaging/PIL/ArgImagePlugin.py -Imaging/PIL/BdfFontFile.py -Imaging/PIL/BmpImagePlugin.py -Imaging/PIL/BufrStubImagePlugin.py -Imaging/PIL/ContainerIO.py -Imaging/PIL/CurImagePlugin.py -Imaging/PIL/DcxImagePlugin.py -Imaging/PIL/EpsImagePlugin.py -Imaging/PIL/ExifTags.py -Imaging/PIL/FitsStubImagePlugin.py -Imaging/PIL/FliImagePlugin.py -Imaging/PIL/FontFile.py -Imaging/PIL/FpxImagePlugin.py -Imaging/PIL/GbrImagePlugin.py -Imaging/PIL/GdImageFile.py -Imaging/PIL/GifImagePlugin.py -Imaging/PIL/GimpGradientFile.py -Imaging/PIL/GimpPaletteFile.py -Imaging/PIL/GribStubImagePlugin.py -Imaging/PIL/Hdf5StubImagePlugin.py -Imaging/PIL/IcoImagePlugin.py -Imaging/PIL/IcnsImagePlugin.py -Imaging/PIL/Image.py -Imaging/PIL/ImageChops.py -Imaging/PIL/ImageCms.py -Imaging/PIL/ImageColor.py -Imaging/PIL/ImageDraw.py -Imaging/PIL/ImageDraw2.py -Imaging/PIL/ImageEnhance.py -Imaging/PIL/ImageFile.py -Imaging/PIL/ImageFileIO.py -Imaging/PIL/ImageFilter.py -Imaging/PIL/ImageFont.py -Imaging/PIL/ImageGL.py -Imaging/PIL/ImageGrab.py -Imaging/PIL/ImageMath.py -Imaging/PIL/ImageMode.py -Imaging/PIL/ImageOps.py -Imaging/PIL/ImagePalette.py -Imaging/PIL/ImagePath.py -Imaging/PIL/ImageQt.py -Imaging/PIL/ImageSequence.py -Imaging/PIL/ImageShow.py -Imaging/PIL/ImageStat.py -Imaging/PIL/ImageTk.py -Imaging/PIL/ImageTransform.py -Imaging/PIL/ImageWin.py -Imaging/PIL/ImImagePlugin.py -Imaging/PIL/ImtImagePlugin.py -Imaging/PIL/IptcImagePlugin.py -Imaging/PIL/JpegImagePlugin.py -Imaging/PIL/McIdasImagePlugin.py -Imaging/PIL/MicImagePlugin.py -Imaging/PIL/MpegImagePlugin.py -Imaging/PIL/MspImagePlugin.py -Imaging/PIL/OleFileIO.py -Imaging/PIL/PaletteFile.py -Imaging/PIL/PalmImagePlugin.py -Imaging/PIL/PcdImagePlugin.py -Imaging/PIL/PcfFontFile.py -Imaging/PIL/PcxImagePlugin.py -Imaging/PIL/PdfImagePlugin.py -Imaging/PIL/PixarImagePlugin.py -Imaging/PIL/PngImagePlugin.py -Imaging/PIL/PpmImagePlugin.py -Imaging/PIL/PsdImagePlugin.py -Imaging/PIL/PSDraw.py -Imaging/PIL/SgiImagePlugin.py -Imaging/PIL/SpiderImagePlugin.py -Imaging/PIL/SunImagePlugin.py -Imaging/PIL/TarIO.py -Imaging/PIL/TgaImagePlugin.py -Imaging/PIL/TiffImagePlugin.py -Imaging/PIL/TiffTags.py -Imaging/PIL/WalImageFile.py -Imaging/PIL/WmfImagePlugin.py -Imaging/PIL/XbmImagePlugin.py -Imaging/PIL/XpmImagePlugin.py -Imaging/PIL/XVThumbImagePlugin.py - -Imaging/Docs/index.html -Imaging/Docs/effbot.css -Imaging/Docs/pythondoc-PIL.ArgImagePlugin.html -Imaging/Docs/pythondoc-PIL.BdfFontFile.html -Imaging/Docs/pythondoc-PIL.BmpImagePlugin.html -Imaging/Docs/pythondoc-PIL.BufrStubImagePlugin.html -Imaging/Docs/pythondoc-PIL.ContainerIO.html -Imaging/Docs/pythondoc-PIL.CurImagePlugin.html -Imaging/Docs/pythondoc-PIL.DcxImagePlugin.html -Imaging/Docs/pythondoc-PIL.EpsImagePlugin.html -Imaging/Docs/pythondoc-PIL.ExifTags.html -Imaging/Docs/pythondoc-PIL.FitsStubImagePlugin.html -Imaging/Docs/pythondoc-PIL.FliImagePlugin.html -Imaging/Docs/pythondoc-PIL.FontFile.html -Imaging/Docs/pythondoc-PIL.FpxImagePlugin.html -Imaging/Docs/pythondoc-PIL.GbrImagePlugin.html -Imaging/Docs/pythondoc-PIL.GdImageFile.html -Imaging/Docs/pythondoc-PIL.GifImagePlugin.html -Imaging/Docs/pythondoc-PIL.GimpGradientFile.html -Imaging/Docs/pythondoc-PIL.GimpPaletteFile.html -Imaging/Docs/pythondoc-PIL.GribStubImagePlugin.html -Imaging/Docs/pythondoc-PIL.Hdf5StubImagePlugin.html -Imaging/Docs/pythondoc-PIL.IcoImagePlugin.html -Imaging/Docs/pythondoc-PIL.IcnsImagePlugin.html -Imaging/Docs/pythondoc-PIL.Image.html -Imaging/Docs/pythondoc-PIL.ImageChops.html -Imaging/Docs/pythondoc-PIL.ImageColor.html -Imaging/Docs/pythondoc-PIL.ImageDraw.html -Imaging/Docs/pythondoc-PIL.ImageEnhance.html -Imaging/Docs/pythondoc-PIL.ImageFile.html -Imaging/Docs/pythondoc-PIL.ImageFileIO.html -Imaging/Docs/pythondoc-PIL.ImageFilter.html -Imaging/Docs/pythondoc-PIL.ImageFont.html -Imaging/Docs/pythondoc-PIL.ImageGL.html -Imaging/Docs/pythondoc-PIL.ImageGrab.html -Imaging/Docs/pythondoc-PIL.ImageOps.html -Imaging/Docs/pythondoc-PIL.ImagePalette.html -Imaging/Docs/pythondoc-PIL.ImagePath.html -Imaging/Docs/pythondoc-PIL.ImageSequence.html -Imaging/Docs/pythondoc-PIL.ImageStat.html -Imaging/Docs/pythondoc-PIL.ImageTk.html -Imaging/Docs/pythondoc-PIL.ImageTransform.html -Imaging/Docs/pythondoc-PIL.ImageWin.html -Imaging/Docs/pythondoc-PIL.ImImagePlugin.html -Imaging/Docs/pythondoc-PIL.ImtImagePlugin.html -Imaging/Docs/pythondoc-PIL.IptcImagePlugin.html -Imaging/Docs/pythondoc-PIL.JpegImagePlugin.html -Imaging/Docs/pythondoc-PIL.McIdasImagePlugin.html -Imaging/Docs/pythondoc-PIL.MicImagePlugin.html -Imaging/Docs/pythondoc-PIL.MpegImagePlugin.html -Imaging/Docs/pythondoc-PIL.MspImagePlugin.html -Imaging/Docs/pythondoc-PIL.OleFileIO.html -Imaging/Docs/pythondoc-PIL.PaletteFile.html -Imaging/Docs/pythondoc-PIL.PalmImagePlugin.html -Imaging/Docs/pythondoc-PIL.PcdImagePlugin.html -Imaging/Docs/pythondoc-PIL.PcfFontFile.html -Imaging/Docs/pythondoc-PIL.PcxImagePlugin.html -Imaging/Docs/pythondoc-PIL.PdfImagePlugin.html -Imaging/Docs/pythondoc-PIL.PixarImagePlugin.html -Imaging/Docs/pythondoc-PIL.PngImagePlugin.html -Imaging/Docs/pythondoc-PIL.PpmImagePlugin.html -Imaging/Docs/pythondoc-PIL.PsdImagePlugin.html -Imaging/Docs/pythondoc-PIL.PSDraw.html -Imaging/Docs/pythondoc-PIL.SgiImagePlugin.html -Imaging/Docs/pythondoc-PIL.SpiderImagePlugin.html -Imaging/Docs/pythondoc-PIL.SunImagePlugin.html -Imaging/Docs/pythondoc-PIL.TarIO.html -Imaging/Docs/pythondoc-PIL.TgaImagePlugin.html -Imaging/Docs/pythondoc-PIL.TiffImagePlugin.html -Imaging/Docs/pythondoc-PIL.TiffTags.html -Imaging/Docs/pythondoc-PIL.WalImageFile.html -Imaging/Docs/pythondoc-PIL.WmfImagePlugin.html -Imaging/Docs/pythondoc-PIL.XbmImagePlugin.html -Imaging/Docs/pythondoc-PIL.XpmImagePlugin.html -Imaging/Docs/pythondoc-PIL.XVThumbImagePlugin.html - -Imaging/Scripts/pilconvert.py -Imaging/Scripts/pildriver.py -Imaging/Scripts/pilfile.py -Imaging/Scripts/pilfont.py -Imaging/Scripts/pilprint.py - -Imaging/Images/lena.gif -Imaging/Images/lena.png -Imaging/Images/lena.ppm -Imaging/Images/lena.jpg - -Imaging/Images/courB08.bdf -Imaging/Images/courB08.pbm -Imaging/Images/courB08.pil - -Imaging/Sane/README -Imaging/Sane/CHANGES -Imaging/Sane/setup.py -Imaging/Sane/sanedoc.txt -Imaging/Sane/_sane.c -Imaging/Sane/sane.py -Imaging/Sane/demo_numarray.py -Imaging/Sane/demo_pil.py - -Imaging/Scripts/README -Imaging/Scripts/enhancer.py -Imaging/Scripts/explode.py -Imaging/Scripts/gifmaker.py -Imaging/Scripts/painter.py -Imaging/Scripts/player.py -Imaging/Scripts/viewer.py -Imaging/Scripts/thresholder.py - -Imaging/Tk/tkImaging.c -Imaging/Tk/install.txt -Imaging/Tk/booster.txt -Imaging/Tk/pilbitmap.txt - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css b/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css deleted file mode 100755 index b03ae458cdc..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/effbot.css +++ /dev/null @@ -1,118 +0,0 @@ -/* effbot.css */ - -BODY { - font: 100% Georgia, Times, serif; - color: black; - margin: 0px 20px 0px 20px; -} - -#effbot-body { - background: white; - padding: 10px 40px 10px 40px; - max-width: 50em; -} - -#effbot-menu { - display: none; -} - -.adsense { - background: #f8fff8; - border: 1px solid #084; - padding: 10px 4px 4px 4px; -} - -.sidebar { - border: 1px solid #000; - float: right; clear: right; - width: 200px; - background: white; - padding: 10px; - margin: 0px -25px 10px 0px; -} - -/* visual style */ - -P { - line-height: 1.3em; -} - -CODE, PRE { - font: 100% "Courier New", Courier, Monaco, monospace; - color: #042; margin-left: 20px; -} - -H1, H2, H3 { - font-family: Georgia, Times, serif; - color: #084; margin-top: 30px; -} - -H1, H2, { border-top: 1px solid #084; } - -H4, H5, H6 { - font-family: Georgia, Times, serif; - color: #084; margin-top: 15px; -} - -A:link, A:hover { color: #084; } -A:visited { color: #404040; } - -UL LI { list-style-type: square; } - -.title { margin-bottom: 2px; color: #084; } -.info { font-size: 80%; color: #084; margin-top: 0px; } - -.bluebox { color: #084; margin-top: 10px; } - -.highlight { background: #cfc; } -.mark { color: #084; } -.small { font-size: 80%; } -.display { background: #eee; padding: 20px; } - -.note { - background: #efe; - border-top: 1px solid #084; - border-bottom: 1px solid #084; - padding: 2px 20px; -} - -.example { - border-top: medium solid #084; - border-bottom: medium solid #084; - padding: 5px; -} - -.figure { - border-top: medium solid #084; - border-bottom: medium solid #084; - padding: 5px; -} - -.fixme { - background: #eee; - border: 1px solid #084; - padding: 2x 20px; -} - -.simpletable { - border: 1px solid #084; - border-collapse: collapse; -} - -.simpletable TH { - text-align: left; - background: #cfc; - border: 1px solid #084; - margin: 0px; - padding: 1px 5px; -} - -.simpletable TD { - border: 1px solid #084; - margin: 0px; - padding: 5px; -} - -/* xmldiff markup */ -.new { text-decoration: underline; color: red; background: #fff0f0; } -.old { text-decoration: line-through; color: blue; background: #f0f0ff; } diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html b/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html deleted file mode 100755 index fbc76a99dfb..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Docs/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -The Python Imaging Library - - - -

    The Python Imaging Library

    - -

    Online Resources

    - -
    -
    Python Imaging Library (official product page at pythonware.com)
    -
    Python Imaging Library (development page at effbot.org)
    -
    - -

    Package Contents

    - -

    The following pages are generated from pythondoc markup in the source files.

    - -
    -
    The PIL.Image Module
    -
    The PIL.ImageChops Module
    -
    The PIL.ImageColor Module
    -
    The PIL.ImageDraw Module
    -
    The PIL.ImageEnhance Module
    -
    The PIL.ImageFile Module
    -
    The PIL.ImageFileIO Module
    -
    The PIL.ImageFilter Module
    -
    The PIL.ImageFont Module
    -
    The PIL.ImageGL Module
    -
    The PIL.ImageGrab Module
    -
    The PIL.ImageMath Module
    -
    The PIL.ImageMode Module
    -
    The PIL.ImageOps Module
    -
    The PIL.ImagePalette Module
    -
    The PIL.ImagePath Module
    -
    The PIL.ImageQt Module
    -
    The PIL.ImageSequence Module
    -
    The PIL.ImageStat Module
    -
    The PIL.ImageTk Module
    -
    The PIL.ImageTransform Module
    -
    The PIL.ImageWin Module
    -
     
    -
    The PIL.ArgImagePlugin Module
    -
    The PIL.BdfFontFile Module
    -
    The PIL.BmpImagePlugin Module
    -
    The PIL.BufrStubImagePlugin Module
    -
    The PIL.ContainerIO Module
    -
    The PIL.CurImagePlugin Module
    -
    The PIL.DcxImagePlugin Module
    -
    The PIL.EpsImagePlugin Module
    -
    The PIL.ExifTags Module
    -
    The PIL.FitsStubImagePlugin Module
    -
    The PIL.FliImagePlugin Module
    -
    The PIL.FontFile Module
    -
    The PIL.FpxImagePlugin Module
    -
    The PIL.GbrImagePlugin Module
    -
    The PIL.GdImageFile Module
    -
    The PIL.GifImagePlugin Module
    -
    The PIL.GimpGradientFile Module
    -
    The PIL.GimpPaletteFile Module
    -
    The PIL.GribStubImagePlugin Module
    -
    The PIL.Hdf5StubImagePlugin Module
    -
    The PIL.IcnsImagePlugin Module
    -
    The PIL.IcoImagePlugin Module
    -
    The PIL.ImImagePlugin Module
    -
    The PIL.ImtImagePlugin Module
    -
    The PIL.IptcImagePlugin Module
    -
    The PIL.JpegImagePlugin Module
    -
    The PIL.McIdasImagePlugin Module
    -
    The PIL.MicImagePlugin Module
    -
    The PIL.MpegImagePlugin Module
    -
    The PIL.MspImagePlugin Module
    -
    The PIL.OleFileIO Module
    -
    The PIL.PSDraw Module
    -
    The PIL.PaletteFile Module
    -
    The PIL.PalmImagePlugin Module
    -
    The PIL.PcdImagePlugin Module
    -
    The PIL.PcfFontFile Module
    -
    The PIL.PcxImagePlugin Module
    -
    The PIL.PdfImagePlugin Module
    -
    The PIL.PixarImagePlugin Module
    -
    The PIL.PngImagePlugin Module
    -
    The PIL.PpmImagePlugin Module
    -
    The PIL.PsdImagePlugin Module
    -
    The PIL.SgiImagePlugin Module
    -
    The PIL.SunImagePlugin Module
    -
    The PIL.TarIO Module
    -
    The PIL.TgaImagePlugin Module
    -
    The PIL.TiffImagePlugin Module
    -
    The PIL.TiffTags Module
    -
    The PIL.WalImageFile Module
    -
    The PIL.WbmpImagePlugin Module
    -
    The PIL.WmfImagePlugin Module
    -
    The PIL.XVThumbImagePlugin Module
    -
    The PIL.XbmImagePlugin Module
    -
    The PIL.XpmImagePlugin Module
    -
    - - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf deleted file mode 100755 index 5a48895d1de..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.bdf +++ /dev/null @@ -1,2676 +0,0 @@ -STARTFONT 2.1 -COMMENT $XConsortium: courB08.bdf,v 1.5 94/04/10 21:46:11 gildea Exp $ -COMMENT -COMMENT Copyright 1984, 1987 Adobe Systems, Inc. -COMMENT Portions Copyright 1988 Digital Equipment Corporation -COMMENT -COMMENT Adobe is a registered trademark of Adobe Systems, Inc. Permission -COMMENT to use these trademarks is hereby granted only in association with the -COMMENT images described in this file. -COMMENT -COMMENT Permission to use, copy, modify, and distribute this software and -COMMENT its documentation for any purpose and without fee is hereby granted, -COMMENT provided that the above copyright notices appear in all copies and -COMMENT that both those copyright notices and this permission notice appear -COMMENT in supporting documentation, and that the names of Adobe Systems and -COMMENT Digital Equipment Corporation not be used in advertising or -COMMENT publicity pertaining to distribution of the software without -COMMENT specific, written prior permission. Adobe Systems and Digital -COMMENT Equipment Corporation make no representations about the suitability -COMMENT of this software for any purpose. It is provided "as is" without -COMMENT express or implied warranty. -COMMENT -COMMENT ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL -COMMENT WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED -COMMENT WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE -COMMENT SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, -COMMENT INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -COMMENT RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -COMMENT CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -COMMENT CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -COMMENT -COMMENT -FONT -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO8859-1 -SIZE 8 100 100 -FONTBOUNDINGBOX 8 11 -1 -2 -STARTPROPERTIES 22 -COMMENT Begin LogicalFontDescription -FONTNAME_REGISTRY "" -FAMILY_NAME "Courier" -FOUNDRY "Adobe" -WEIGHT_NAME "Bold" -SLANT "R" -SETWIDTH_NAME "Normal" -ADD_STYLE_NAME "" -PIXEL_SIZE 11 -POINT_SIZE 80 -RESOLUTION_X 100 -RESOLUTION_Y 100 -SPACING "M" -AVERAGE_WIDTH 60 -CHARSET_REGISTRY "ISO8859" -CHARSET_ENCODING "1" -COMMENT END LogicalFontDescription -CHARSET_COLLECTIONS "ASCII ISO8859-1 ADOBE-STANDARD" -FACE_NAME "Courier Bold" -COPYRIGHT "Copyright (c) 1987 Adobe Systems, Inc., Portions Copyright 1988 Digital Equipment Corp." -COMMENT ***** end of inserted font properties -FONT_ASCENT 8 -FONT_DESCENT 2 -CAP_HEIGHT 6 -X_HEIGHT 5 -ENDPROPERTIES -CHARS 194 -STARTCHAR space -ENCODING 32 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 1 1 0 0 -BITMAP -00 -ENDCHAR -STARTCHAR exclam -ENCODING 33 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 2 6 1 0 -BITMAP -C0 -C0 -C0 -C0 -00 -C0 -ENDCHAR -STARTCHAR quotedbl -ENCODING 34 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 3 1 3 -BITMAP -A0 -A0 -A0 -ENDCHAR -STARTCHAR numbersign -ENCODING 35 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 -1 -BITMAP -50 -50 -F8 -50 -50 -F8 -50 -50 -ENDCHAR -STARTCHAR dollar -ENCODING 36 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 9 0 -1 -BITMAP -20 -78 -C8 -F0 -78 -18 -D8 -F0 -20 -ENDCHAR -STARTCHAR percent -ENCODING 37 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -E0 -A8 -F0 -20 -78 -A8 -38 -ENDCHAR -STARTCHAR ampersand -ENCODING 38 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -38 -60 -30 -7C -D8 -7C -ENDCHAR -STARTCHAR quoteright -ENCODING 39 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 3 1 4 -BITMAP -60 -40 -80 -ENDCHAR -STARTCHAR parenleft -ENCODING 40 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 8 1 -1 -BITMAP -20 -40 -C0 -C0 -C0 -C0 -40 -20 -ENDCHAR -STARTCHAR parenright -ENCODING 41 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 8 1 -1 -BITMAP -80 -40 -60 -60 -60 -60 -40 -80 -ENDCHAR -STARTCHAR asterisk -ENCODING 42 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 4 0 3 -BITMAP -20 -F0 -60 -90 -ENDCHAR -STARTCHAR plus -ENCODING 43 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 1 -BITMAP -20 -20 -F8 -20 -20 -ENDCHAR -STARTCHAR comma -ENCODING 44 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 3 1 -2 -BITMAP -60 -40 -80 -ENDCHAR -STARTCHAR minus -ENCODING 45 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 1 0 3 -BITMAP -F8 -ENDCHAR -STARTCHAR period -ENCODING 46 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 2 1 1 0 -BITMAP -C0 -ENDCHAR -STARTCHAR slash -ENCODING 47 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 8 1 -1 -BITMAP -10 -10 -20 -20 -40 -40 -80 -80 -ENDCHAR -STARTCHAR zero -ENCODING 48 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -70 -D8 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR one -ENCODING 49 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -30 -F0 -30 -30 -30 -30 -FC -ENDCHAR -STARTCHAR two -ENCODING 50 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -70 -D8 -18 -30 -60 -D8 -F8 -ENDCHAR -STARTCHAR three -ENCODING 51 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -70 -D8 -18 -70 -18 -D8 -70 -ENDCHAR -STARTCHAR four -ENCODING 52 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -18 -38 -58 -D8 -FC -18 -18 -ENDCHAR -STARTCHAR five -ENCODING 53 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -F8 -C0 -F0 -D8 -18 -98 -F0 -ENDCHAR -STARTCHAR six -ENCODING 54 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -70 -D8 -C0 -F0 -D8 -D8 -70 -ENDCHAR -STARTCHAR seven -ENCODING 55 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -F8 -D8 -18 -30 -30 -60 -60 -ENDCHAR -STARTCHAR eight -ENCODING 56 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -70 -D8 -D8 -70 -D8 -D8 -70 -ENDCHAR -STARTCHAR nine -ENCODING 57 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -70 -D8 -D8 -78 -18 -D8 -70 -ENDCHAR -STARTCHAR colon -ENCODING 58 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 2 4 1 0 -BITMAP -C0 -00 -00 -C0 -ENDCHAR -STARTCHAR semicolon -ENCODING 59 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 6 0 -2 -BITMAP -60 -00 -00 -60 -40 -80 -ENDCHAR -STARTCHAR less -ENCODING 60 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 5 0 1 -BITMAP -30 -60 -C0 -60 -30 -ENDCHAR -STARTCHAR equal -ENCODING 61 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 3 0 2 -BITMAP -F0 -00 -F0 -ENDCHAR -STARTCHAR greater -ENCODING 62 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 5 1 1 -BITMAP -C0 -60 -30 -60 -C0 -ENDCHAR -STARTCHAR question -ENCODING 63 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -70 -98 -30 -60 -00 -60 -ENDCHAR -STARTCHAR at -ENCODING 64 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 -1 -BITMAP -70 -C8 -98 -A8 -A8 -9C -C0 -70 -ENDCHAR -STARTCHAR A -ENCODING 65 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR B -ENCODING 66 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -F8 -6C -78 -6C -6C -F8 -ENDCHAR -STARTCHAR C -ENCODING 67 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -78 -D8 -C0 -C0 -D8 -70 -ENDCHAR -STARTCHAR D -ENCODING 68 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -F8 -6C -6C -6C -6C -F8 -ENDCHAR -STARTCHAR E -ENCODING 69 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -FC -60 -78 -60 -6C -FC -ENDCHAR -STARTCHAR F -ENCODING 70 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -FC -60 -78 -60 -60 -F0 -ENDCHAR -STARTCHAR G -ENCODING 71 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -70 -D8 -C0 -F8 -D8 -78 -ENDCHAR -STARTCHAR H -ENCODING 72 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -EE -6C -7C -6C -6C -EE -ENDCHAR -STARTCHAR I -ENCODING 73 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 6 0 0 -BITMAP -F0 -60 -60 -60 -60 -F0 -ENDCHAR -STARTCHAR J -ENCODING 74 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -3C -18 -18 -D8 -D8 -70 -ENDCHAR -STARTCHAR K -ENCODING 75 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -EC -68 -70 -78 -6C -F6 -ENDCHAR -STARTCHAR L -ENCODING 76 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -F0 -60 -60 -60 -6C -FC -ENDCHAR -STARTCHAR M -ENCODING 77 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -C4 -6C -6C -7C -54 -D4 -ENDCHAR -STARTCHAR N -ENCODING 78 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -EE -74 -74 -6C -6C -E4 -ENDCHAR -STARTCHAR O -ENCODING 79 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -70 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR P -ENCODING 80 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -F8 -6C -6C -78 -60 -F0 -ENDCHAR -STARTCHAR Q -ENCODING 81 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 -1 -BITMAP -70 -D8 -D8 -D8 -D8 -70 -18 -ENDCHAR -STARTCHAR R -ENCODING 82 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -F8 -6C -6C -78 -6C -F6 -ENDCHAR -STARTCHAR S -ENCODING 83 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -78 -C8 -F0 -38 -98 -F0 -ENDCHAR -STARTCHAR T -ENCODING 84 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -FC -B4 -30 -30 -30 -78 -ENDCHAR -STARTCHAR U -ENCODING 85 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -EE -6C -6C -6C -6C -38 -ENDCHAR -STARTCHAR V -ENCODING 86 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -EE -6C -28 -38 -38 -10 -ENDCHAR -STARTCHAR W -ENCODING 87 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -D6 -54 -54 -7C -38 -28 -ENDCHAR -STARTCHAR X -ENCODING 88 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 0 0 -BITMAP -CC -78 -30 -30 -78 -CC -ENDCHAR -STARTCHAR Y -ENCODING 89 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -E6 -66 -3C -18 -18 -3C -ENDCHAR -STARTCHAR Z -ENCODING 90 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -F8 -D8 -30 -60 -D8 -F8 -ENDCHAR -STARTCHAR bracketleft -ENCODING 91 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 8 1 -1 -BITMAP -E0 -C0 -C0 -C0 -C0 -C0 -C0 -E0 -ENDCHAR -STARTCHAR backslash -ENCODING 92 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 8 0 -1 -BITMAP -80 -80 -40 -40 -20 -20 -10 -10 -ENDCHAR -STARTCHAR bracketright -ENCODING 93 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 8 1 -1 -BITMAP -E0 -60 -60 -60 -60 -60 -60 -E0 -ENDCHAR -STARTCHAR asciicircum -ENCODING 94 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 3 0 4 -BITMAP -20 -70 -D8 -ENDCHAR -STARTCHAR underscore -ENCODING 95 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 1 0 -2 -BITMAP -FC -ENDCHAR -STARTCHAR quoteleft -ENCODING 96 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 3 1 4 -BITMAP -C0 -40 -20 -ENDCHAR -STARTCHAR a -ENCODING 97 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 0 0 -BITMAP -70 -D8 -78 -D8 -FC -ENDCHAR -STARTCHAR b -ENCODING 98 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 -1 0 -BITMAP -E0 -60 -78 -6C -6C -6C -F8 -ENDCHAR -STARTCHAR c -ENCODING 99 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 0 -BITMAP -70 -D8 -C0 -D8 -70 -ENDCHAR -STARTCHAR d -ENCODING 100 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -38 -18 -78 -D8 -D8 -D8 -7C -ENDCHAR -STARTCHAR e -ENCODING 101 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 0 -BITMAP -70 -D8 -F8 -C0 -78 -ENDCHAR -STARTCHAR f -ENCODING 102 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -38 -60 -F8 -60 -60 -60 -F8 -ENDCHAR -STARTCHAR g -ENCODING 103 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 -2 -BITMAP -6C -D8 -D8 -D8 -78 -18 -F0 -ENDCHAR -STARTCHAR h -ENCODING 104 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 -1 0 -BITMAP -E0 -60 -78 -6C -6C -6C -6C -ENDCHAR -STARTCHAR i -ENCODING 105 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -30 -00 -F0 -30 -30 -30 -FC -ENDCHAR -STARTCHAR j -ENCODING 106 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 9 0 -2 -BITMAP -30 -00 -F0 -30 -30 -30 -30 -30 -E0 -ENDCHAR -STARTCHAR k -ENCODING 107 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 0 -BITMAP -E0 -60 -6C -78 -70 -78 -6E -ENDCHAR -STARTCHAR l -ENCODING 108 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -F0 -30 -30 -30 -30 -30 -FC -ENDCHAR -STARTCHAR m -ENCODING 109 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 -1 0 -BITMAP -F8 -7C -54 -54 -54 -ENDCHAR -STARTCHAR n -ENCODING 110 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 -1 0 -BITMAP -D8 -6C -6C -6C -6C -ENDCHAR -STARTCHAR o -ENCODING 111 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 0 -BITMAP -70 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR p -ENCODING 112 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 -1 -2 -BITMAP -F8 -6C -6C -6C -78 -60 -F0 -ENDCHAR -STARTCHAR q -ENCODING 113 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 -2 -BITMAP -6C -D8 -D8 -D8 -78 -18 -3C -ENDCHAR -STARTCHAR r -ENCODING 114 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 0 0 -BITMAP -DC -74 -60 -60 -F0 -ENDCHAR -STARTCHAR s -ENCODING 115 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 0 0 -BITMAP -78 -E0 -78 -1C -F8 -ENDCHAR -STARTCHAR t -ENCODING 116 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -60 -60 -F8 -60 -60 -6C -38 -ENDCHAR -STARTCHAR u -ENCODING 117 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 5 -1 0 -BITMAP -EC -6C -6C -6C -3E -ENDCHAR -STARTCHAR v -ENCODING 118 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 -1 0 -BITMAP -EC -6C -38 -38 -10 -ENDCHAR -STARTCHAR w -ENCODING 119 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 5 -1 0 -BITMAP -D6 -54 -7C -3C -28 -ENDCHAR -STARTCHAR x -ENCODING 120 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 0 0 -BITMAP -EC -78 -30 -78 -DC -ENDCHAR -STARTCHAR y -ENCODING 121 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 -2 -BITMAP -EE -6C -6C -28 -38 -30 -E0 -ENDCHAR -STARTCHAR z -ENCODING 122 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 0 -BITMAP -F8 -B0 -60 -D8 -F8 -ENDCHAR -STARTCHAR braceleft -ENCODING 123 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 8 1 -1 -BITMAP -30 -60 -60 -C0 -60 -60 -60 -30 -ENDCHAR -STARTCHAR bar -ENCODING 124 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 1 7 2 -1 -BITMAP -80 -80 -80 -80 -80 -80 -80 -ENDCHAR -STARTCHAR braceright -ENCODING 125 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 8 0 -1 -BITMAP -C0 -60 -60 -30 -60 -60 -60 -C0 -ENDCHAR -STARTCHAR asciitilde -ENCODING 126 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 2 0 3 -BITMAP -68 -B0 -ENDCHAR -STARTCHAR exclamdown -ENCODING 161 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 2 7 1 -2 -BITMAP -C0 -00 -C0 -C0 -C0 -C0 -C0 -ENDCHAR -STARTCHAR cent -ENCODING 162 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -78 -C8 -C0 -78 -20 -20 -ENDCHAR -STARTCHAR sterling -ENCODING 163 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -38 -68 -20 -F8 -20 -64 -F8 -ENDCHAR -STARTCHAR currency -ENCODING 164 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 1 -BITMAP -88 -70 -50 -70 -88 -ENDCHAR -STARTCHAR yen -ENCODING 165 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -CC -48 -FC -30 -FC -30 -78 -ENDCHAR -STARTCHAR brokenbar -ENCODING 166 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 1 9 2 -2 -BITMAP -80 -80 -80 -80 -00 -80 -80 -80 -80 -ENDCHAR -STARTCHAR section -ENCODING 167 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 -1 -BITMAP -78 -48 -60 -90 -48 -30 -90 -F0 -ENDCHAR -STARTCHAR dieresis -ENCODING 168 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 1 1 5 -BITMAP -A0 -ENDCHAR -STARTCHAR copyright -ENCODING 169 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -30 -48 -B4 -A4 -B4 -48 -30 -ENDCHAR -STARTCHAR ordfeminine -ENCODING 170 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 5 1 2 -BITMAP -E0 -10 -D0 -00 -F0 -ENDCHAR -STARTCHAR guillemotleft -ENCODING 171 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 5 -1 0 -BITMAP -36 -6C -D8 -6C -36 -ENDCHAR -STARTCHAR logicalnot -ENCODING 172 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 3 0 2 -BITMAP -F8 -08 -08 -ENDCHAR -STARTCHAR hyphen -ENCODING 173 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 1 0 3 -BITMAP -F8 -ENDCHAR -STARTCHAR registered -ENCODING 174 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 0 0 -BITMAP -38 -44 -BA -B2 -AA -44 -38 -ENDCHAR -STARTCHAR macron -ENCODING 175 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 1 0 5 -BITMAP -F0 -ENDCHAR -STARTCHAR degree -ENCODING 176 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 3 0 4 -BITMAP -60 -90 -60 -ENDCHAR -STARTCHAR plusminus -ENCODING 177 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 6 0 0 -BITMAP -20 -20 -F8 -20 -00 -F8 -ENDCHAR -STARTCHAR twosuperior -ENCODING 178 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 4 1 3 -BITMAP -60 -A0 -40 -E0 -ENDCHAR -STARTCHAR threesuperior -ENCODING 179 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 4 1 3 -BITMAP -E0 -40 -20 -C0 -ENDCHAR -STARTCHAR acute -ENCODING 180 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 2 2 2 5 -BITMAP -40 -80 -ENDCHAR -STARTCHAR mu -ENCODING 181 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 -2 -BITMAP -EC -6C -6C -6C -7E -40 -40 -ENDCHAR -STARTCHAR paragraph -ENCODING 182 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 -1 -BITMAP -7C -A8 -A8 -68 -28 -28 -28 -6C -ENDCHAR -STARTCHAR periodcentered -ENCODING 183 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 2 1 1 3 -BITMAP -C0 -ENDCHAR -STARTCHAR cedilla -ENCODING 184 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 3 1 -2 -BITMAP -40 -20 -C0 -ENDCHAR -STARTCHAR onesuperior -ENCODING 185 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 3 4 1 3 -BITMAP -C0 -40 -40 -E0 -ENDCHAR -STARTCHAR ordmasculine -ENCODING 186 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 5 1 2 -BITMAP -60 -90 -60 -00 -F0 -ENDCHAR -STARTCHAR guillemotright -ENCODING 187 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 5 -1 0 -BITMAP -D8 -6C -36 -6C -D8 -ENDCHAR -STARTCHAR onequarter -ENCODING 188 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 0 -BITMAP -C0 -44 -48 -F4 -2C -5E -04 -ENDCHAR -STARTCHAR onehalf -ENCODING 189 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 0 -BITMAP -C0 -44 -48 -F6 -2A -44 -0E -ENDCHAR -STARTCHAR threequarters -ENCODING 190 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 0 -BITMAP -E0 -44 -28 -D4 -2C -5E -04 -ENDCHAR -STARTCHAR questiondown -ENCODING 191 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 -2 -BITMAP -30 -00 -30 -30 -60 -C8 -70 -ENDCHAR -STARTCHAR Agrave -ENCODING 192 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -20 -10 -00 -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR Aacute -ENCODING 193 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -10 -20 -00 -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR Acircumflex -ENCODING 194 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -10 -28 -00 -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR Atilde -ENCODING 195 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -34 -48 -00 -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR Adieresis -ENCODING 196 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 8 -1 0 -BITMAP -28 -00 -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR Aring -ENCODING 197 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -30 -48 -30 -78 -38 -28 -7C -6C -EE -ENDCHAR -STARTCHAR AE -ENCODING 198 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -7E -3A -6C -78 -DA -DE -ENDCHAR -STARTCHAR Ccedilla -ENCODING 199 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 -2 -BITMAP -78 -D8 -C0 -C0 -D8 -70 -10 -60 -ENDCHAR -STARTCHAR Egrave -ENCODING 200 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 9 -1 0 -BITMAP -20 -10 -00 -FC -64 -78 -60 -6C -FC -ENDCHAR -STARTCHAR Eacute -ENCODING 201 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 9 -1 0 -BITMAP -10 -20 -00 -FC -64 -78 -60 -6C -FC -ENDCHAR -STARTCHAR Ecircumflex -ENCODING 202 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 9 -1 0 -BITMAP -20 -50 -00 -FC -64 -78 -60 -6C -FC -ENDCHAR -STARTCHAR Edieresis -ENCODING 203 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 -1 0 -BITMAP -50 -00 -FC -64 -78 -60 -6C -FC -ENDCHAR -STARTCHAR Igrave -ENCODING 204 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 9 0 0 -BITMAP -40 -20 -00 -F0 -60 -60 -60 -60 -F0 -ENDCHAR -STARTCHAR Iacute -ENCODING 205 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 9 0 0 -BITMAP -20 -40 -00 -F0 -60 -60 -60 -60 -F0 -ENDCHAR -STARTCHAR Icircumflex -ENCODING 206 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 9 0 0 -BITMAP -40 -A0 -00 -F0 -60 -60 -60 -60 -F0 -ENDCHAR -STARTCHAR Idieresis -ENCODING 207 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 4 8 0 0 -BITMAP -A0 -00 -F0 -60 -60 -60 -60 -F0 -ENDCHAR -STARTCHAR Eth -ENCODING 208 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -F8 -6C -F4 -64 -6C -F8 -ENDCHAR -STARTCHAR Ntilde -ENCODING 209 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -34 -48 -00 -EE -64 -74 -7C -6C -EC -ENDCHAR -STARTCHAR Ograve -ENCODING 210 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 9 0 0 -BITMAP -40 -20 -00 -70 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR Oacute -ENCODING 211 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 9 0 0 -BITMAP -20 -40 -00 -70 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR Ocircumflex -ENCODING 212 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 9 0 0 -BITMAP -20 -50 -00 -70 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR Otilde -ENCODING 213 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 9 0 0 -BITMAP -68 -90 -00 -70 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR Odieresis -ENCODING 214 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -50 -00 -70 -D8 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR multiply -ENCODING 215 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 1 -BITMAP -88 -50 -20 -50 -88 -ENDCHAR -STARTCHAR Oslash -ENCODING 216 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -3A -6C -7C -6C -6C -B8 -ENDCHAR -STARTCHAR Ugrave -ENCODING 217 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -20 -10 -00 -EE -6C -6C -6C -6C -38 -ENDCHAR -STARTCHAR Uacute -ENCODING 218 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -08 -10 -00 -EE -6C -6C -6C -6C -38 -ENDCHAR -STARTCHAR Ucircumflex -ENCODING 219 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -10 -28 -00 -EE -6C -6C -6C -6C -38 -ENDCHAR -STARTCHAR Udieresis -ENCODING 220 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 8 -1 0 -BITMAP -28 -00 -EE -6C -6C -6C -6C -38 -ENDCHAR -STARTCHAR Yacute -ENCODING 221 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 0 -BITMAP -04 -08 -00 -E6 -66 -3C -18 -18 -3C -ENDCHAR -STARTCHAR Thorn -ENCODING 222 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 6 -1 0 -BITMAP -E0 -78 -6C -6C -78 -E0 -ENDCHAR -STARTCHAR germandbls -ENCODING 223 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 6 -1 0 -BITMAP -38 -68 -7C -66 -66 -EC -ENDCHAR -STARTCHAR agrave -ENCODING 224 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -20 -10 -00 -70 -98 -78 -D8 -FC -ENDCHAR -STARTCHAR aacute -ENCODING 225 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -10 -20 -00 -70 -98 -78 -D8 -FC -ENDCHAR -STARTCHAR acircumflex -ENCODING 226 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -20 -50 -00 -70 -98 -78 -D8 -FC -ENDCHAR -STARTCHAR atilde -ENCODING 227 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -68 -90 -00 -70 -98 -78 -D8 -FC -ENDCHAR -STARTCHAR adieresis -ENCODING 228 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -50 -00 -70 -98 -78 -D8 -FC -ENDCHAR -STARTCHAR aring -ENCODING 229 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 9 0 0 -BITMAP -30 -48 -30 -00 -70 -98 -78 -D8 -FC -ENDCHAR -STARTCHAR ae -ENCODING 230 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 -1 0 -BITMAP -6C -B4 -7C -B0 -DC -ENDCHAR -STARTCHAR ccedilla -ENCODING 231 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 -2 -BITMAP -70 -D8 -C0 -D8 -70 -10 -60 -ENDCHAR -STARTCHAR egrave -ENCODING 232 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -40 -20 -00 -70 -D8 -F8 -C0 -78 -ENDCHAR -STARTCHAR eacute -ENCODING 233 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -20 -40 -00 -70 -D8 -F8 -C0 -78 -ENDCHAR -STARTCHAR ecircumflex -ENCODING 234 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -20 -50 -00 -70 -D8 -F8 -C0 -78 -ENDCHAR -STARTCHAR edieresis -ENCODING 235 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -50 -00 -70 -D8 -F8 -C0 -78 -ENDCHAR -STARTCHAR igrave -ENCODING 236 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -20 -10 -00 -70 -30 -30 -30 -FC -ENDCHAR -STARTCHAR iacute -ENCODING 237 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -10 -20 -00 -70 -30 -30 -30 -FC -ENDCHAR -STARTCHAR icircumflex -ENCODING 238 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 8 0 0 -BITMAP -20 -50 -00 -70 -30 -30 -30 -FC -ENDCHAR -STARTCHAR idieresis -ENCODING 239 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -50 -00 -70 -30 -30 -30 -FC -ENDCHAR -STARTCHAR eth -ENCODING 240 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -D0 -60 -B0 -78 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR ntilde -ENCODING 241 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 8 -1 0 -BITMAP -34 -48 -00 -D8 -6C -6C -6C -6E -ENDCHAR -STARTCHAR ograve -ENCODING 242 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -40 -20 -00 -70 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR oacute -ENCODING 243 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -20 -40 -00 -70 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR ocircumflex -ENCODING 244 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -20 -50 -00 -70 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR otilde -ENCODING 245 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 8 0 0 -BITMAP -68 -90 -00 -70 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR odieresis -ENCODING 246 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 0 -BITMAP -50 -00 -70 -D8 -D8 -D8 -70 -ENDCHAR -STARTCHAR divide -ENCODING 247 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 5 0 1 -BITMAP -20 -00 -F8 -00 -20 -ENDCHAR -STARTCHAR oslash -ENCODING 248 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 5 7 0 -1 -BITMAP -08 -70 -D8 -F8 -D8 -70 -80 -ENDCHAR -STARTCHAR ugrave -ENCODING 249 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 8 -1 0 -BITMAP -20 -10 -00 -EC -6C -6C -6C -3E -ENDCHAR -STARTCHAR uacute -ENCODING 250 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 8 -1 0 -BITMAP -10 -20 -00 -EC -6C -6C -6C -3E -ENDCHAR -STARTCHAR ucircumflex -ENCODING 251 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 8 -1 0 -BITMAP -10 -28 -00 -EC -6C -6C -6C -3E -ENDCHAR -STARTCHAR udieresis -ENCODING 252 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 0 -BITMAP -28 -00 -EC -6C -6C -6C -3E -ENDCHAR -STARTCHAR yacute -ENCODING 253 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 10 -1 -2 -BITMAP -08 -10 -00 -EE -6C -6C -28 -38 -30 -F0 -ENDCHAR -STARTCHAR thorn -ENCODING 254 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 9 -1 -2 -BITMAP -E0 -60 -78 -6C -6C -6C -78 -60 -F0 -ENDCHAR -STARTCHAR ydieresis -ENCODING 255 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 9 -1 -2 -BITMAP -28 -00 -EE -6C -6C -28 -38 -30 -F0 -ENDCHAR -STARTCHAR trademark -ENCODING 8482 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 4 -1 3 -BITMAP -F6 -5E -5A -5A -ENDCHAR -STARTCHAR perthousand -ENCODING 8240 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 7 0 0 -BITMAP -60 -A8 -D0 -60 -6C -B4 -D8 -ENDCHAR -STARTCHAR oe -ENCODING 339 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 6 5 0 0 -BITMAP -6C -B4 -BC -B0 -6C -ENDCHAR -STARTCHAR fl -ENCODING 64258 -SWIDTH 600 0 -DWIDTH 6 0 -BBX 7 7 -1 0 -BITMAP -3C -6C -FC -6C -6C -6C -FE -ENDCHAR -ENDFONT diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pbm b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pbm deleted file mode 100755 index aedce1a3117bc80edcc8edb5ec92ece84639a346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1273 zcmYk5e@s(X6vxlwcCS?m)FA;WunHK-h+0JLlwU<)$^=ALGhr@!fS|@8I>IQMSQ>flgW=L;}wQD6p*-~ZbHkd!pQhF+*+XR-D8N^`QzrClkYj7b8_!J z8XvdGVWIm%0C0%j9Jw6;d2#+?f;+%}b?;sP9vdAQu27zbR4Buc6*+LP#mBZXpi4YD zbD`Ffc`}sN+eU44M!@LUg$ZmLs|lqiezIj2c^K<;MXlX+*`1@4o;M%rX^psKXiyb+ z91n&ZnR#qYd#vUokx0@L;nXiL@GJOy;*#jNBCbRr;m{cWhqD9wj*xV0=g@LZvcj0~ z?n3{DzFo%y?{t0taJZ;FVOZ9zny$3yoq1{Gp$9i`j@7(ucXjOjaf52{pJz_xHHY4H z>3VHxlrDj|7;&1k_cV(Fw(69n1BH*;uKrQJsI59yDUkjTXIJ%hG5=SPgbYcVgssp%O&Q#7fQmZ6%rFCxBXP0-_)gOY z?*ohjlq#Ydrq_+!$?svOzI@i;e4W8y68V5;fBM~4153kUVbr}93px$Ly1Hw2Y_p21 zp2zW$nL83N0N9zmlB814zTM}DoR5}};4YM8+Yh?zi+v&9{_QjFfz^PB1P~c6qY`WJ z2f?tJz7f+W5WAjg0D;`rQXrY|YuYhf`kA3c)0pOZG3h+v#?5MZAmCuLxMb>B9i^bC zr!zQide>hbB)N|C1*69XmbI`aaJzMnDNL%Zmr1=SirOPhKW||_&L7YG!LA#9?t`UG7G0hW`@PWwDq!A?Ng|?SXLlA+n7f<2Zu6g{)jX68Z{sz->>M< zY=qPaU7aJTeBT3uwxGrJXGf=fBf_n>siesL1@O7_U@RWwcW_2@RnVjM zy}sH@;cLet{ne)hDa$uq_n2;@V0B=f`HRmDdX}#{d=+?lF**H2XF0y(fmH#g*nk|w5 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pil b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/courB08.pil deleted file mode 100755 index 28982c0fa7339e8c3bbb2bbdd5b08663bfcbcc49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5143 zcmeH~-;0(-6vxlZuDU&fmSz%)uox(YX@)Gih%1y(N-8XBD5l^KSTKziEfiVASWpoa z6hVbTL=?q~wHv)qFT_AgP(!=0AcU}s^}@(q*Y)XhW}f#j@B9N1?830`_w$}P=ggU( z@6wMKZ`|@lXVDt|-k;f8e7K-}K_NqbLlyWhD==Jxm!-HW3CAa8u6!X4`k&SSsjT?br774+*%#PIzJ6U^tC-rU78xfal$9khl#QcJfW#R6(pbJki%hCw zIASysV-l>nicw?Duy-u3_8mlvOr?kV6OF<6rt)z*(PE5}Z#`OMrj6qzc7te<*;a!x zjCD4w#aJ9~3#>JXtK(>;wZ*Z8x@fF6+QNjX-9p-;j4gsKO_=swN?V>V?Yo?|Dr2i) zYcsYMwjpC1U>zCjfNiOmqwYHATWDWe{gipMNM|)iTGK{q+6nu*s;QI%uvci2o%D!x zjoU7I=UuRG&0jyC99m>wtZ7&q>SG`6aI~}aau{~Z`bK}pU?(%Xldw}6I|VzN zv9qv?nZJv$ONpK4a*1{&v1<%kx&kryF6u0u+bSC z4SOrHkTdpZaT7DUiLl9u9pgZYn_97IpQFXSo9s8v1GKmq6|33JfXzzmhLtbT;##UT z$wxeUw77Z6p61L!i)*Xdv7R;OHrm3tcBw%)!_eXu+ddlLTh-#0*&5gNtXkZP%x(p2 zbz-M|SJT!dcADQh*e08|7I^o^>nkNwUUuFFb+u+8U30wHNlc z*@b%_Elzij`qOu!?#q5!S=o7*#wbNMNBT~5x>@|NDu%vA8_NN-_@?U2uKc0JkE;BI zy;{CPiyu?B&sB?m+j7x;`3fz*_Qn+6KI~Pr_{m9(5kZTemW)kvnFfC^vE%+gi=Sop zM|hW@#kVl>Skv%6MT?(Xy|2Q(Mclctc@@*TXbkQnKcCXjmvcOvr)cr%dy;n(TKr+)b1Iy`09=_ z#vSE5t$uocc(nL$tnYIjBU*fy-CL1$!MZcn4Lgvr1F$2;`hq|1BYz^+gl<_Co#>xrj6LmpGu8`x zma%8BK4WogeXv0rTiE+(Y4EmQLY>jlpu3zp*YZP4L-iZc7{3u4#>W`O#=|BV3-ill z6|A5!sXuffqhxHwLS4{>yvZ-m7&qjCF8GZZ7}-RB6JX8JpRs1xl#ES*P0!eL*aybK z{y-NpN8Zr5VSe@h9N2uzFTADDg?uFXf>yh*KhTAIVtqrM(S!=E%B!@w!wBpJLWC=+X35cePhnMVci+) zhV9STe%PUm9fBP-7RPoJcHD9a>knPXcUDtf2M%4x>1b#9orax{{*0Z6^<=CEcG+00 j!DZO>I)5Hr$d9Zp>We?k&!Y?Z+2&mPdUPSb$k=}Y_2lj% diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.gif b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.gif deleted file mode 100755 index 64a9b93c89b6a22d4760777b34790a57344da9cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16336 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 JABO>={vU+{Ez$r0 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.jpg b/tools/HitboxExpander/third_party/Imaging-1.1.7/Images/lena.jpg deleted file mode 100755 index ed01c4e6769b3f01b13d78c6ee4e99e123d36464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4788 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 su#|>TAcLF_$&DnbW):V1EW/>e7EÞ˜käqã¢râœdâœpãœoæŸmæ§|é¤uæ§wå£pâhå¢pä—]Ý‹Y¿r[¢XF¦[L­`L¯hO²gO·hP²mU°gR±iQ¹mP¶oW½sRÃ{WÈxTÇxTÇ~^Ð[Ê[ÐWÏ]ÏZÓ„]Ë…nÑ~\ÔZÒVÒƒ]ØVÓƒ^Ô~VÐ[Ï‚aÒ†eÒ‚[Ö^Ñ}VÍyUÍ~WÌcÏ~YÓXÊ|\ÍZÈ|[Ì~^Ï…gÕ€YЂ^σ_΂aÐ\Ð}XЀ[ЂbÊ}ZÍ€cÐbÐ~WÍ}YÌ`Ç{ZÆ{b¿yb³nZ³lS®h\´wlψnÙ“qàžuá¡wä¡zä¦zà ~âŸnâŸdäŸhߘgÞjäšcá›oÞšpÛ›mÞ˜fÛ–iÙ—oÖ“kÞm÷ËùÙ¢ûÝŸüÖ•×¥j©dM®kX¼vW¾y[Å|T¼x`ÁzZ»t]ÀkÃ}_Ò€`Ô‹g¥^RgIYW'7X/DZ-8a1:f6=æžhåfãŸzæŸkâjâŸvæ£måªrè¥mä¥wä¡iájå¡oç`Ù_¾pMžYM¦\J­`L³jQ¸lQ³iM´eI¯eM¯fP¸jPµgNÀrQÆwPÅxTÆ{\Ç]ÌYÌyRÍ‚]ÎZЃYÌaÈ€gÌ‚dσaÓYÑ‚ZцfÖ†cÑ}XÒ{UÓ‚aуcÐ…lÊ{VÎ}TÊxSË|\Ê{^Ï^Ë}_Î|\Í|WÌ|XÑ€^Ì^Ô]Í`Ï]чeÈz]É€Z΄bÏ\Ð}YÌ}]ÌWÐ}\Í^Ð…`É}]Ãw`Æ{bºnW·pZ³lZ·sbσh×”yÝœ|àžwã£{âŸyàžsÞŸráœrã¡nâ¡fá›gàšnâškßvÛœvÚ˜lÚ•c×”fÙ‘lÖ”kñºyùÕ˜ùÙŸýÞ¤ôËŒ³nN¯kT¾uT¾uU¾z\»xdÅxV¹x]Æ|`ȃ`ÑŠgŸYIT/DW-D^3D\*7e5Bj5A^2<äŸpã rå›iã£væ¤zç¥xëªqèªuä©tæ aâ páfæ aæœd݉U¿oS¡]N¨_V«aI°dNµhO°hR´dJ³fM°fN¶jS»pVÃrQÇvVÁx]¾wXÇ|bÎZÍ{ZÉ|[Ì}YÍ~_Ï€\Ì€a΀bÓ‚ZЄ[Ï_Ï]ЄaÎaÓT΃m΂iÏ~[Ó|VÑ{SÌ|VÇuYÉyVÊ}aÌ~_Ì}WÌ€]Æ}aÉ|[Æ`ÌcËcу^Í\Ê‚fË€dÏ„cÈ~bÍ~aÍ€aÉ~aÊ}_Î}TÇjÊ~\Èz[Èy\µqb¼r\¹kX¸teЃdÖuÜ–màœtávâ uÜŸtÞœpá¡páußràšiášnßœkÜ™mß›oßkášnØ™nØ•pÔhבhõË‹úØžû߯ýݠ㸪k[±kS¹rV¿xZÃ|\ÂxVÂ~aÆcÈ„\¥^QW&6R':Y3D^*=f6;f1=^09i7<âŸnãœgá«å¡uç¤nê©rì§oí¦né¢häžkâžmâ oç¡pæ›lÚ‡U¼kN›RD¡[Jª[H­gX¯eN±gL¬fK±cM²iVµiP¸lN¸pW¿qVÃsQÇyWÇ{[È~[Í‚bËzZÎYÏ€ZË]Ë|^Ï€`Ð~\Ï}UÈ|^΀cÒ‡mÕˆhÒWÕ~[×XÒ€]Ï~YÏ|YÎ{YÈvYËwWÉ|VÍ~ZÆ{[Àz`Å|ZÌ|UÍcÈ~^ʃiɃfË‚bÊ~bÊeÒZÐ`È~`Ï[Ë|`Ð}YЀ\È~dÏ{WË~aÃu\À{eºoS´m_Àwb΀dÕŒpØ”oÜ™sÝštàžwÝ›pÞžwÞ xÞœuß™qàhà›räkà›gášhÝ™ràšlØ—nÕ‘kØ‘e׌[ç®xùÔ˜úÜ¡ûà±ùÔ•ÄŠ^®gQ»pT¿uW¾}bÀzZÊaÐ…f›[KW'8U,>Y-?Z,>e6Ba.:`3Bd4=Z,6å¡häŸgå£xä¦zçªyé§xê£oç¢iç ræ¡nèŸdçŸlèŸjæša؈\¼fKœSD¢ZG«YJ±pe´dL±eP°eQ¯eQ¯bP²cHÀkMÀrRÁx\Ãx[Ä}_ÄvWÊxWÍ{WÈ€fÆ{[ÌyUË|cÎ}\Ë|\Ò{WÑ~YÍ€^ÑcÏ|XÓ}WуbÑ^Ï…mÔcÑzWÐ}[ÍzTÏ~YÍzPÂtRÍySÃvVÇxQÅsTÈyVÌ~[Èa̓fÍdÏcÐ~YÊ~`Í€dÏdÎ|VËdÍzZÑUË]Í{WÉxVÇx_ÀuY»u^¼t^»lV½r^Ì‚iÔ‹lÔ“zÙ•sÜž{àxÞŸwÝšsážrâtßšháœgß™lÞšká ß™fß™mݘlÚ•kÙjÚ`׌]Ö_öˈùÚ¤úÞ§üÞ¥òÆ…¨dO­kR´qY»oSÃ|`ʃa¢aQ[.>W-AW*:\3C`3B`4@`7Ib,:_-:Z);äžlãjâ yé§té©|çgãœqåžfä wê¥eäŸfåkè¡kç˜]ÛˆY´jQ–RE¢`O­`L®cOµjU°bJ®bI®fM³fOµhR¼kSÄw^ÅxSÅvSËYÇ{ZÇcÏ|[Ê‚gÉ{WÎYÍeщsÑZÍhÊ}\Ð…gÍ~YÒ€bÔƒdÒ]Ó|VÑ„cÒ~UÎ~]ÒYË~bÅzfɃuÈ«§È¨©Àšš½†·yhÁvXÎ|UÈvTÈz\Èz]Íy[Ç€aËcÒ]Í‚bÌ|[Ô^ÎdÑ}PÊ‚dσaÍ€_Çy`Âw]»nT½oR²k\¼s_ÆkÓŠkÕ’tؘyÛ˜tÜ–mÞxßœ|Ü›sâšjßœqà™mãžhäœcßqß™hà•dÙ•oÖŒaÚdÚŽ]ÙcÔmå©múЋúݦûß«ù×™Õšb¯jS¯kSµo]À}[¢^OY+:U+;U)?`1D\1Bk>Jb3Ci7H_/;_/;]1?ã£rå¢né pçªrê£uç™aã“[Þ“bäœmè¢eæ¡mä sè£sæ›hß‹\ºoR£[PŸWG­_L­dP°eO±hQ­eOµjN±eM½kMÂsUÁpRÈvSÊxUÆxVÍ}WÌ}VÏVÈ~]Ï^Ò~ZÒ]Ò…hÓYÊyZÒbÈ{]Ï„dÖ[ЄbÕ„XÒ}VÌ}eË‘‚¼Ž¾œ–¾‘‰ÌŸ‹Î¡Õ²–Ñ´˜Ø¶ÙÆ´Ô¼¬Ô¯ŸÕ»§¿»s[¼sYÊgÆyYÉ{XǃlÅ~g΂aÎ}]Í{XÐiÊ~aÉ~_Î~`ÍxRÁw\Às\ºrc¶kWµpaÌ|^ØŠgבnÖ‘s×nÜ—rÛ–qÝ™sàšpÜ•hà™mÞ–iá›lå›eà—gÛ–lß–gÛ^Öa×fÚ\ÖŒ]ÔgÕ‘dôăùÙ¨úÞ¤üá©÷ˉ®kQ¶pW¾|`Ÿ\LT%8X1HX0D`0>c7Ab6@a8Gf>La-:[):c/b2;i;H_-8d3?^4F\+8c1:\*6],9åžgë£rí­uë¥qä•YÙNÓ{LÙŠZçœhê£dë¥mé§oì¨lçŸgÜ„V·kO›M@ UG¨[F«aM¬_H¯_I³dM¯bL³gO¶fO¹kRÅpQÇtUÑzTÍyRÊyZÐzVÎ~[Ì~]ÍzYÓXÐ|[Ò\Ð\Ñ}ZË{^Ñ„kÉ„qÍ•…Áx_ĉqÆzÀŽ~È”‹Ë”|Í”tÉ“ÅÊ‘vÍž…Ó¢{Õ²™×¯‹Òº¦Ò·¢Õ¬Ù¼›Õ»«ãÈ¥ßİÀž”¼oU¿sZÉ|cÊeÍ{_Çx_ЀcÈwXÈw]Çy[ÂoS¾rXÀpQ´iS±m]½oSÍ`׌iÙ“lÜ•wÖ’oÛ“oÚ”sÖ•wÙ˜uÜmÜ”hÜ”iÚ’hÜ—kÙ‘bÜŽ`Ý‘hÚ‘mØgØŒaÙŽ`ÙŽdÙ^Õ‹_Ñ…^î·uùÚ©ûÞ§ÿä®ÿÚ—¾xXX,AQ';U&8W0Ae9Ce1>h8G`3<[2E`/Ag9Fa8L[,=_.:çŸjí©hí©kègá‹YÈnB½lKÛ‡[åœfè©sí¦më£nî¥kè¡náŽXÀoOšYK•LH›VK¢\S­ng¯dJ¬aL²aI³fK±hTÃnUÂqPÉvRÃv[É|\ÇzZÎyPÐzQÏzVЀ_ÑiÑ_Í€aÑyWÓ‡kÖ•qÊu¾„j„nÂ~m³vh¿j¸|s»rÀŒ„ÆÌ¤—ǜǬ£Ñ¦’ұɧԩŠ×°‰ÙÀ©Ñ¶£Ü·…ÚÁ¦ãÁ•ÚįâÁ£Ûů¬jZ½lRÁpV¿zcÆy]ÄzaÃs[ÅzaÄv^Àt]¿sU¹p_²lY²fNºpZÇ}j׈gÜ’nÞ”mÙjÛ“jÛ”kÛ“uÛ“nÜ—oà•kÙaÛ`×fÜ’fÛfÜ‘aÚ‘h×eØŒeÚ]ÛŽZÜ]Ú_Ö‰_ØŽdùÉŠüÜ þä²ÿå­¾pLT-AY-EX/?a2@j8Gc4Ei=K`.?X+@d3Ac5Fb1A^-:g29è©rï­oêœaå•_ÏxI¢RAÄqKÛŒ\åžeë¨ré¤jé£mï¦méš_ÜŒ^¿lIJD—TI£VG¥]K¢]N­aJ±jN°fO°fP²jU´oZ½sZÉsLÃrSÇrRÇuRË{]È}`ÆvYÍ|\Ï}aÐzWÍz\î°y¹mR½ze¿vU¹zg½|h¸zfº…|Ä…l¸t‹wÅ‚eÅ„kÀ”‡Â€Í¥ŒÀŽÇŸ™Ô¡yÓ°—×·¥Ûº™Ô½¤Ú¹¥Þ¿™Ö´§ßŸٿ´ßÇ«ÞÁ¥·™Ž®lY·kT¿ubÄvWÀs]ÇuW¿s[ÆsVÂpT¹pW·jP¨h^¹lUÍ`ØŒmß”mÜ”nÝ“jÜmÚ’k×’qÛ’oÝ“lÞ™oÛdÙ‡Zà`ÞŒ\Û—lÞ]ÙŽ`ÚiÕŠ`ÛŽbÕŒdØ’jÙ‘jØŒ`Ø_è¤mÿÛ¥ÿä³ï»wK&=U*=W*:Z.?j;Gc5Ag4@\,:T(=^->^/:V+7_.;f6AW'4ì¨uèœhÚ„R­^E’JD¿qMÛ‰Vä¡mí¥mé£ié¥ué¤eèœl߇Y¹jO’F>”M?›[N¥ZK§bR«aN§aO«eR®eM³dIµjOºqZÀrS¿tZÃuSÃxWÇw_Æv[Ï€^ËbÐ}[Ð{ZÊyWÄrPÀoZ½v\½u\¾€p¾xm»zd¹}lÈvº‰½†tÌ‘xĉtɉkÇŠqË—~Ó£}Ó²˜Ò³¥Ô¦|Ó¸¤Ö¶©Ü¾žÙ·¥à½—Ú¿¦âãØÅºÝìÙǺáȰӽ®¬fT°jY¶iRºoU¼pX¾r\ºr_»p[±iY¹jN©aP¶oYÐ_ߎcá˜nݘtá”iÛmÖŽjÓŽiÖlÜiÚ”qß“fÚfÞdÞcÝaÛ‘iÙeÞcØŒcÙeÜhÝ_ÜŽ`ÜŽaÞ”jÞ•fÿˆó¸uU';V*@T,CZ.d3>f4>g6A_1>Q(;e;Ga1?U,?c5En@LkŒNH“UL™WK¤YJªfXÊ~bÜlæšlä™oä˜há˜má’jÓ‡j«i\f19^0EšaXÃwZÛ‹fá•nÞ‘lߎbßcàŽ_Ý`ߎhà‘få–mçŸxAET%9\3AY*Y,@n:BY.;X5D].<]4EmHY‚R`¬ytÈ‘wјu¾…nÔžy£[JWN¢YH¤^QœVCZP¼jNÚŠ[äšfì©tí¨xë§vë¨}ä–cÙˆj¹jP‘NJ’KF¢WI©aN§`Q¬dR¨cN­`H¬dO±iY´gR¸q[ÄsSÈsP¿t[ÃwZË{_ÃuZË{XÂsXºnTºnU¼pWÅrWÁoR³n`µ}t¼p½u¸yg¸yeÈ^ÒŠfÇ|ÇŽqÑ‘nŇlÏjË‘x΋tΑzݲĕ†Å¦‘æÊªåʰãÊ´áͼèϰãŨÛÁ¹Ûþà̼ç̯æÇ¦ÛıßÏÄàÏÀãÒÀæÓÃîÝÌÏÍÇšj\ŽJA“M?œYM¨_LÏ}[Ühå›zä™nä•lå˜nà“j؈f°dKk08R)²dQÔˆkÝ‘jã•dáaÙŽhÞŒ`Þhä•iç”hë™fÇtRX+j5\0Di9OšjeÈ‘wÆsÉ’uО†Ö¥ƒÙ£~œUG¤[H¡^N¢]L›VHŸ]U¼udÚˆUæšiè¢oç¦}ê¦zë£pç˜aÝ„U·hT’LF—KA\Q¦aKªe]¯hZ¸hM«cO¬bN³aM¸pW¶mT¾nPÂwTÃvW¼oXÃrPÏ|W¬^J®aMºkQÁsWºlU·jVÃtX¹mY´ulºx_Æ~dÈnÇ{ΆkʉkÒ”xȆlÇ€pÃ…hχg͉b¾r½ƒÜ²’Þ¿³ãÆ´ÞÀ«ßƵݺ¡ØÃ¹àİÙ®äпâÍÂçѽãŰâ̼äͶæÏ¸âʱäкâпçÙËæÕÃçÚÍðáÀt;<‰F@¦^LËyXÛŠcá–kæšqçšpâšqäšwÖˆc±kSt;BZ(6U%5m15§[GÍzVÛŽkà’eÜfÛ‹aßeä”kèœp’SOV+9a2?].;p:Cd2=e4Ac1@Y,@i;J]+8_1=b09Y2@W.J•fkÇ’ÆtÀŠxÉ•wר…×¥~Ò ~ŸXL¦_Jž`S¡]LžYL›UL¿oQÛŒcãŸwè¥kè¢qè£uå£räœr؆gµiRNP–ULYKŸ[I¨`P²dP©aM¬eS²hO¯fQ¸gL¸nUÆvW¿sWÁw\½oW캀ÊoH½jM·m[ºnW¿vaÂoO¿pUºr[Ì{ZÄd»yjÇzj͆jÒ–x¹zqÐ…fÕ“uË}Ä{_¿{g¹s]°paÜ­}ä¿–Þ¼­â³ŒßµàÀ¤Ù¶ÝÁ¬ØÁµâĪàË´ãÏÁâοàÉÁâοãÓÆãϹæÐ¾ãÐÀàË·ÝÊ¿âÐÀæÖÀëÚÁíâϵ¥­{8>—SIÆvXÜgã™râ™lçšoäœuÝ—uÕ†c³iUw:?]-=_.;[(7s45¯aJÐ{SÕŽkÚŠ\Þ†UÜŒ`å•iÎyLW)9V+<_0Aa2=f0=c6i5@c7AP(?}KUÁ’ƒÌ–ÄŠpÇ“{Ó¡zÓŸvÔ¢}Ø£y¡YH XIžZO [NžXFšQEµjOØ‘käšdë¢jë¢rê¦sè¥væ™iÜ‹\ºnV’OF’OK¡VH¤]N©aK­`G²eOªaPªgT²m]¸mS±mYÂoRÁtY»mP¹k^úÈ€°`T°iY³fUÁsY»nSÁsTµlTÁu^ÇvZÑ}WÃiÌ…lÏ…eÐŽiÆ‚h΀]щnÄy¹yh±n^µzpßµ¥ßÀ¡áÁ©â½™ß¼Ÿà¸œÝ¯‰Õ·¦âǰÞÅ·ßɽ۽´ÞʶâÐÁáÈ·ßʾá̹ãκֿ·âÌÀåθãÓÅãнâÓÅåÖÊéßÔðàÈšXPJFÂpL܈aä˜fã•kß—qå—gãœuÖ‡d°gRx>K`.C](4^,6S".p=EÏ¿¹éØÆîÕ¹Ù¾±æÓ¿Ø“ob/AU*<[.@^1=f1=h9Ff;Gh9K`8H^-8^0Gh8Hb1;[/=d7K»…yÑ—yŇpÃwÔ£„Ó xÓŸ|ÒŸƒÕžy™XK¡\LšYK[O¢]RšUFºkOÕŒhåšlé¥wæ¤w䦈é¡mæ—c؉^¸fHŒEB–PGžVFXGª^Jª^N§bL¨]I­eW°mV±eOºjO¸mSÀpO·eOÏŠ`î¥e´fU±iP´mU¸q]Î|UºmWÃsW¼{j´iZÊiÎ_ÏŽnÁ~nЈaÀƒp̆jÄxW´yf´rfÊ™‹Ü²£Ý¯ƒäº“جš×¯™àƱԯ¢âÅ£ßÀ¨ÝŰßÄ«àIJß˸â¦ÜÅ·á̻ܿ¨Ùòäнç϶Ýȼà̹àÎÀàÐÁãÒÆãÒÆåÕËèÞÖÑú‡GA·nWÔ‡lãšqå˜lå›häœsá•kÖˆh´kSr;A[)7Z'8U'8Q.AâγíÕ´Õ¶¤äпíßËíâÔéÔ±L&AQ,CZ-Ah3@d3?gAKa2?`1?d5Cb4Dc4Gja3>d1=V.A_0[2Dd5Cc0:_/9\.=d6Jm8Cf3^.8[,=d2Cf4?W*6Z-B¶uÓ›…ÈzЙƒ×£zÒ Õ|֞јzÓ€Ö›yјzÒ™v¬dM±`F®cO«dP¯aH«`IÉqHߌ]ߘiê¥pì¨sï®sí¬sé¢mߎ]¼nK˜OC“MCYK¦bTªbK±aG®`I²hP±`I°eL·kO½lL¹lR§YKûڥ᥄ËzTµhQ¸mV²bM®aP¾qQ¹qZ§_YÉyYÇ|c²fUÌ{[½ubДƒÖšÚšnÒ“qЗx¸xlÛ €Ø¦ØŸ‹Ø±Û¤‘Ӣפ—×¼·Þ¸™Ó”{Û»žÛ©Ò¯žà¿ªÚ²Œ×± Ü¼¬×®›ß¿¨Û¬‡×°¤×µŸß½žØ»£Ô·¦Ù¾­ÙĶ׼¯ÛÀ²ÞįØÄ¸ÓµŸÑ¼µÙƽرŸß“`à—ißïîÔ«ÖµŸ×±ŸäÔ¿åÏ´àÈ´ÞʸáDZßÊ·âιãͼæÑ¿ëÔÂñàÏñÞºL'@W2G\2Da2A^0>]+:Z-:d3@c8Io>N™^cÏ“|Д~Î’xÖž}Ö €Ö }Öž~ÓŸ~Ö {Ñš}̖јzÑ–x­gN®dP­gQ·gK°aH°`HÆqMÛŠ_ålì¤gî©kì®uî«uê¦sà”h»oQ“J<“NB¤bU¥[I­dN±cJ³cJ­cK®_G¬aK´fN·jKµeG¥XOýÖ—èžnÙ‹ZÃwT¸kT¸nR·gSÄvTµnZºhPÆzWÀzoÍeÀsTÌxÔ•{Û™sÏ„fÕ¡†Ãx_Ú’qÙ ‚Ûž„Р’Õ™…Ú¨ŽÕ²£Ù­†Í—Ó¡“Þ·šÝ¥ƒÜ¯”Ù¯•ݶ–ݵŽÞª„×·¬Û½®×©‡Ü²ŒÞ¼¥Ó·®Ó°˜Ø¾¬ÖÁ¾ÜÄ´Þ¿¦Ø¸¢Ùº¨×»­Õ¾®Ñ»¬ÖÁ¶Ó¸¬ÛƸٱ êӷ׳‘߸•ßÈ´èϵå̳ÞÊ·ßʶàȳãÊ·áÏ»âË¹ßÆ«æÑÀçÒÁðàÑïÞ¸E$AZ/@`5D^3J^/c3A^->k>Pj7?a3].Aa5Aa2?[)7a0;Y-=Pa­y|Ó—{Ò’rÍ—€Ôž‡Ö „Ó¢ˆÙŸ€Õ¡‹Òœ€ÒžÒ~Ñ€Ôž}Ô›sÖšqªbI¥_L¦WH§aL¦bM°bLÁpKÛŠXçfì¨vê©uè¬uê«ví¤iá’`»jM“ME™NG¦\F§dS«dT°bI«^IªbO®aM®`F·hM·fF¬`G­eMôÃ{é­{â’cÝ’jÙŒeË}X´k\§]N¸hQ»kMËŒqÕkÏ`ЇgÏ‹cÁ~fÖqÖnÌ‘ÏvÔœuʘ”Û¢xÖ•~Ó’wÙ¦™ÚžxÜš„Û­˜ÚŸ~Ø¥„Û Õ•}ݱ‘Û£‡ÕfÌž„׫ŒÖ®’Ù¨‡Ü¯šØ«™Û¸¡Ø¯’Õ§“Ò¬›Ô­™Õ´¥Ê ŽÑ§˜èʥб™Üº™ÜIJèαáȶÙñÜÀ¯Ü¾©àİÞűáȲàȵâ̺ãͼäͺåϻș†×¯»}kÒ¡‘Ü·šË¹«N%9W)5c8D^0:U+:f6>\-:n?R˜`hÕ•xÔ—‚˓؞‚Õ£€ÓŸ~ÖšwÓ‚ÒÕžzÒ™xÕœrМ~ÒŸ{Óœ~Ñš{§^G§]I¥]J¨^H¥[H«aOÅnLß[è¡fì©uí©pì©pñ©qí©kà‘e·kR™SK˜RN¢XK«`K«\L­^J¯^H¯cM±aD´gN³dH¬cM¨]IÆ}QòÀ€æ±}Þ›zÚ‘qÌyVчfÇv[¶cI²dN׋iÕŽpÔ‡hʃgǃdÉ‚fוxÖ‡aÍŽzÕ‘jÊ‹sÐxÔ–xÒuÓ”|Ü¡yÙ™~ÖÙ•t՞ћ„Ñ¢’Û¥œÛ«‰ÑŽpÅ•ˆ×¬ˆÛ¡Û­˜ÓŸ†Ù±šØ®¡Ó¤ž×§šÖ¢‘Ö¨”Óœ…Ç—ÊŸàÁ¤Ý­…⼋àèæÍµäǬâÁžÝîÚ­ßŰáŪßȵáʺã̸á˵ßʹãÑÁçҺʛ‡Ð¨Ä‰tÙ©•Í—‡çиS.@Y1K[1=a8@];MY*;c2@\/EyG\¼ƒvÖš|Î{Ζ„Óž}Ó €ÐžƒÒ›ÑšxÓžƒÓ¡ƒÕž‚Л}ÏwΚyΙvÕšw¥]F­cO«_J¨bNªaJ²fIÇvVߌ\ä mì§tí­së­xí¯{ê¡hâ—k¾qR•K@—J@žXG£_N­fR¬aK®]D³`H®cMªbM®cL«`F¡WGáš^õÄ~í¯sêœ]â“RÚ‚Sá”_ÌuO»bGÑiÖŠj˃hÇdÃ|`Â~kÙ“oÏ…c×–uÐ’vº|pĉ~Ó–yÑŒjØ”uÚ¡Ú™~Ô•ÉÏ›µ”˜©Š’£uvX^Ë–Š×š{Ý£Ù¢‚ؤ|Ñœ‰Ý¥ƒØ›…Ò •Ó¢”ТžÐ«¥Ñ˜{Ä—Ú¹žåÀ–Ù²›ÛÁ±å̳áãڻ¤Õ¸ Û¿©ßÀ©ÞůÝÇ²ÝÆ¯àË·ã̺ä˺âÊ´áͽæÓÂÝÇ´Î¥‘ÅŒzÏšj«l`بŽîßÀI$=V+?a8J]3AX.?iBPc1=d6J•aeÖ˜yÑ”€Ì“yÒ‚× €Ø yÕž€ÓšzÑštÔ›~Õž}Óœ€Ðš|П{Óœ}ЀԜs§]J«bN­cJ©dP±cL·hQÈuRàŒZæŸoì®sì«pê­xí©lð«uàZ½kK–KA—PG¢ZF§bS©_K°^F®_F®`L¶fN¯_GµbH¯]F¡TFØ’NòÇò¯nížTì Yç [ìœ^ÛˆV¸oaÎaÈx_̃iË‘†¸|nÌŒuÚŽkÑŠqÒl¹{fÇ„nÍŒvЊ`Ô–yÒ”}Ó–ƒŽSZ«}€©mgUYžjjž_aʋ̙ˆ\c½ƒt٠ة•°Ž‹Â‰~ר˜×¨•«xh7LÊ›’½ŽŒÆŽ‚áÁ®ÚªÚ»­âdzèÈªãÆ­Ú½ªÜÁ©ÛİÜÁ®ÛƲàÈ³ßÆ°âÈ´â͸ßɲä̹æÐ¹æÒ¿æÒ»Ò§ŒÆ™z‰QJžcW¼‡…ëÕ¿À˜oL"6Y-?`18[(7_0Cl9?\1Ei7L¹‚tÙœwÌ’†Ï—~ÔŸ{Ù¢|Ö ƒÓšzЂњ|ÔœzÒŸ|Óœ~Ôš|ЛwÑ|Ïœ‚Μ|©dT«cT¨dS«bL­aP¶eLÐwRáŒWéiì©sîªqì®wì®|í§nå—c¾qR”LCKA›TE¥bQ«^H°cL±dO²eL·hO¶aG²bJ°`BŸVDÐPöË÷»‚øµeì¤\éšYéžcâX¹o^Ãt\Æ{eÁ‚rº{oȉuЇcЇiÍuµ}n΂eɇtʆmÏt×”zÓ‘s«q€ÍŠq»xm¦jk‘]hZeoE\Ö¦›Ø£Ÿ€¤©†¢ ƒqE_‹\k rq”ai_2KlEb†^nR,I̜彙С…Ôµ¡ßÀ¤àŪܾ áƬÙñÛõÝÀ­ÝÅ­ÞɺáɸáʲâɶåηáÌ»à˵æÎ¸çϳΞƒ—XD•TH\N´xkâÁ­ìÚ¹T,AT)<_/=a.9X)7f3=^/:X0F”dgÒ–Е͔֢…ÓŸ†ÖÓžÕŸzКwÑœ|Óš{Ïœ|ÒœzΛЛ~Ì™ЙyÔšy¬^K±gQ§bQ©_M°eMÇmEÑtLä’[êžbê¬rê¬líªsì¬pî¥gã—i¾sOPH–K@TJ§]JªdP«_G®cM°fR¯aL±`J³bH°dM§XD´cEýÃxù¾jþÅjñ£VÙ‹\è˜[¿va¶q_½tYÀl®jaÈ‚j͉nÈ„nÒŽqÊ€dÈ„mÒˆiÈ…lȉwÓ‘zÊŽžemĉ¬~‡¢q{£di¯ty“eƒ‰g†žp†¥Š¨†YpmHed;\—€Ÿc;ZtNoX.?P'AS4VL,N ‰”Ô˜tÓ¥˜ÞȸæÈ«áèÞìÞÁ§âÅ«ÚįØÁ°ÜÁ§ÝDZáÈ´âȯáɺæÐ¼ãÍ»çÏ¿äÈ«Á|P’RF—`RšZI `P±q_Ý´œìѲD5R-@[0Bb3Ba3>V+8i9CY.V‚e‡^3Iƒd‹]5M?1E&Bͳ¦¾ƒu̱®äÅ©àÄ¦âÆªá©Þĩݾ§áÃ¥ßñ׿©Û¿­Ýī۰ã͸åɬëÒ»åÍ®›\M–RG—TE˜VHž\N¨iaÊ—ˆæ¹˜ê˨a03U'=X,=c3A`.=^-?c2_1?`4A`5Cd3>_,;[-SfA[€U_c@RZ-EqFYX+@oFjM\a1Ec8U’s‹‹g‹Q'Ata”@4†_lÙl¸€nÝ´åǦٷ•Ô±¢Õ»­×µ™Ñµ¤Ð¯–Õ´žØ¸¡àÁ¨ÞÁªÛ°áĤг~PSpBJ›v~Ÿx„¶•’Þ¦†å¥yè©vå¦ré·’òÍŸa.1U';\-8_.;l8Ab7?a1;^-7d4>`>O\7K£pmÒ“sÏ’xÓžƒ×£~Ö¥€Ô¤…Ó¦ŠÖ£‚Ô£…ÒžÒŸ‚шΟ͈Μ„Í˛ʙ}ΖtÍ–y°kV³iW²fR²dK¸dG²fGÈrNá‰Vé¡jë«rî«oê©tî¬uì©yâ’aÊuP–NF’GCžWH¤\IªcO°bJ«_K¬bM°aJ±eM®`K·fL¶eF¯`FŸZLöܱúÚ¥î½ä­„á›q¥YIÓŒoÌ…oʉ{£b^ÀzhÆ{b»znÆy`σkÕŠoÏŠv|h:Gc4Ad5D]+6f28X0Ae:N¸„|ÇxÊ‘|Ö¤|Ú§~×§€Ö¤„ب†×¡Ñ£‡Ò¢€Ó¡~Ñ ÍœÒΜ€ÍŸ‰Í„Í›‡Ì™ΘµjS±mW·iP¯gU®bL³\CÂoNÛŠ^èaê«wì­|ï®sí«oì¦nä•`ÇuRJ?”NGšNH¥[J©_N­aJ²gQ¯aK°bM¯^G¯cP¹iLµhN·iQ®bLžWKøÝµñ»}è°€íº}¾wSË{_͆p·rfÁ{c΀dÇ~jÀvc²rq̇w­|„·vp¥fgŽ[ii>XƒZlY.EQ&AoB`ŽhuP$8a2P^1=[.@a/Db5Nf>TW-NŠ€¢”p…†QW›n~⼒Ῡݪ׺£Ñµ¡Ï±™Ô· Ô®’Ѩ׷ Õº§Õ¹¢Ö»§×µ¦ëĪ竉’SRšoo„RT‘ez¦‚‹kvÇ“„å©ñ ⷃV,<\.9U%4b3?h5@k9Ap?G^1;U)8\+>c6Bb8NŒXXÀ‡sµqКƒÖ¨‚Ù¨†×¢~Ô¥ˆÕ¢€Ö¢„Ô£„Ö¡‚ÑžÒ£Ò¢ˆÐ€Ñœ|Ïš€Í}ʘ{Ç•~Ë–|±jW·jVµiR­cM°gSª_N½iMÖŠ`è mîªyï©píªuð¯qñªkã˜gÊxY“KCF<—RA¡]K®gR¦aR¬_J²aL­bM¬bT¯eL´eNÀkQÁnP³gJ¢WHçµuöÆ{ð¼”Û™s݈[¿v_»rbÀxcÊ‚j½€|³umºup²€Š u‡•e{P_…OcŒ[lŽc|k?Ra9LO'A~Z{j?RrA][*=^/Ci[/CqH_§vk¹€m±€~Ó£†Ù¦Õ£×£‚×¥Õ¡Ô£…Ö£†Õ¡|Ó Ï›|ÑœyÑŸ~Í…ÐxÌ˘zÏ›|È•€»qX¶kV·kS®_J¬`K¥ZFµgJÚƒUã™gê«xì¬kë«xï°yïªvä”dÆwV“IDHD˜XJ¡UG°eOªbP¨_Lª_J¬^M¯bL±cLµjPÃqX½ye»oS¥_OЂPüÙ”öÄð«w¾wdÇ|d¥_TÁ{hÁzg¸}yȇpÏ„k³qr̃n°qusAVf;Qh9SŠaqCZ\2KZ3PpB^e†vK_X-?]/@`4FZ.>W1D\4M“h|}X†Œj’§‹“Òª”Õ­˜ÖµžÒ°šÌ©Ñ´ Ï®›Ó°”ײ›Ð°™Íª™êĥ뿩êÁ¯ëÄ­îÅ®ïÄ¡ãšw²aHHS–mv…P_¬ƒ†·ÃŠzœSBT$5S):^/@f;Ji8?m;Bi6Ba0W+AˆU]žpl±ј†o4AY,<[/i4;rDRe8Dj4@]-;_0>`/=e5D_.F¦tn¿ˆv±}q–„Ó¤դץ€Ô¤Õ¦}Π‚Õ €Ñ£ƒÖ¥€Ó£}Ò¡ˆÒŸzÓ£‡ÑŸƒÑ ƒÑzЃИqÍ—v±jV¬hR¬bO«fU­dQ¡]J·jOÙ‡_åšjê¨{í¬uì®zêªví§uå—hÆuQ–RJ”K=•OC¤]N«_J°bQ¶eN«fW«_K²iS´eN¸lR¾nTÆsR½mUºgI³cKÿÖšþͯgS¶gN¼oZ¹wm¼p]΄q¾mYÊ{gÆ{h—hnR%;[oZ.>W)@].B]5OwPlqHZb8SSo`9\¡°|Pi~W{O);F!7ª…ƒ¨e_Äž Ó¤‹¡†Ÿ×®’Ú¿¦ÞÁ§Òª“΢ɟ‹Ñµ Õ°™ß¢‰ç¬‰ì»žíǪëäíÈ©ïǨòË­ñ϶óͳì´ÊlJ‹JE\/APQwDQ»’ÍŠ]0HY3E]-:c1:f1>f6Ej8Bh3;g6F\'4f19X1?uHTµ†u¹†uÆxË›}Ä“v˘Ô¤ƒÖ©…Ó¥ƒÓ¤|Ò¢~Õ£Ò¤Õ¢…Ô Ñ›yРҠ~Ï{ÍŸ~ΙzÌ–wÊ”{­cN«lX±iV¬dN§bO¨[E®cN؆^á™hë¨rë«zì­|ë«sî­ræ“dÇzZ“PJQIœTD¢]M«eO®kU°l[¶cJ²hO±hY´fMµgTÄ{RÃrXÆvTºlN²`Pýàºè´ƒ¹jPÀwi½mQ­h^Í‚dÆw\PSxHQ„IQ“[_\.D‡[nU*Ea2>_0A`4Af69Z-E˜hiÄo²|iΘwÑž…Ê—yÄ—‚Ë“~˘}ÍœƒÏž†Ñ¢}ÓŸzÔ£СŠÒ£ƒÐ ƒÔ¤~М{Ñ›zÒœwÒ}Θ~Ì•}±lT­gQ®eOªgR©gT¥[E±fHÔ…aãjê«zë¬wì¯uí®sî§nä–e½pW•SM™SJ UE£^S°cO°fU±jW²gQ´bJ®aQ¶cNÔ†bÅrQÃqQÄtWÄsS·mZã™S伕ÇtPÄoP»r\Á}hÈ„y×…k³g[™Y[`4GT&:f9Wo@K[.Ik>QlAUa7KX)AqG_g7S‹f‡…X{[,?k@_C9ŠY]ЄlÌ’‚ܪ‡Û­‘׫—©Ñ¦‰Ø¾®Ó³šÑ¬šÌ¦‘Ø‘náœ訄䮑ëÀ¢ëÀ¥îĪíɹðʲñͱñÒ»õÑ·õÓºóɨã™z¦WBa.;Q":vJR¿¢Ï¤’]6IfI`i8Di:Fh=Fl>Gr^/X-;„RWÈ“€´‚rɘ~צ|ңѣ‡Ïœ}Éœ~Ìœ{É—}É›ƒÀs¿’~Å’uÇ‘uÇ“xÊš~ÍŸˆÏšyÊ™|Î~Λ֛{Ï”w°fP«cQ¯fQ¬cN©]H©[B´dKØŠaæ”gè¨}쫀ꮆï°tï«uâ›uÆvW•TL—OH YR¥_O°gS±gZ¯eS´mX±eS¸gR¸lS¾pZ½sWÁpTÀkIÁoL¼fGÓŒfÊQÂtQ×XÕŒx¯‘¡lmr8DXrO$Ck?TmIrf;VU(>l=VƒSgZ(;a7Mf?Td:L_1EoEl}RuH7†a}Ú p¹sbà¥zÛœzÛ¯•Ö¹¦Úº¦«Š×·ŸË§›ÎƒÜŠáŸ‚䥂鮑笄賙붛ïÁ îÅ®ìɵîÇ©ñ˪ðͯóÏ´÷Ò´öѮ︗ÉtT”PFU,BR(A†PZÙ­‘HO_,:d=Ok<@m?Ji?Ja5]3AnAS½‰sÁ†mÅ’}Ô£sئ‡Ô¢…ÐuΠ„Ô¤Ò¦„Ó¥‹Ï¡†Íž|ǘ€¿•¿‘€¿‘v¿w¾sÓÀz½Ž|Ä“‚ДqÉš|­dQ¯fP§_L°dP®eM°`Fª_KÕ‚Yâ›rç¨wï®{뱂ð±xí§pã˜lÆwU•PJ–RNžZO¥`S­hQ³fVª`O­cM©_Q²gY¿kQÄrPÉuWÄuYÊwYÙ–pÝ¥[S#4U&:ªmg´‰Æy]ÀqRb.FpFRN$@\4M”q•S&4h8H]0Ch?UV)=[,C`3Kf6IX/Bi8T[wQ(?¢yr¦_PáÅ·Û¥€Ü¹˜Ì™Ó¤ŠÛÁ´Ü¿«Í¯•‹G@­eQ·tcÉ|hØ“ä¥ëµ˜ëµ’걎벑췚îáëÁ¢ï¾¡ïšïȦñɨóͰó̪뮈ÃoRt7?Y&3P%9‘_tݹ©Ÿ^Zn>Gc8Ji=LrIRh[2JŽ]a¾‹|»€jÈ—zÑ¢‡ÒzÔžyÏ}Ïž|ÏzÓ …Ñž~С‚ÌšzÍž€Í›vÇ™ƒ½”¿•‰Ä•¿‘‚¼‹y¼‘…¹‹|À‹v‰q°iT³fP°fP­aF²`C¥^K¬\HÕ„[ãwé§vï®{ì­oî¯{ð©påœkÃv^“RNOHœRKª]L±eT°bK®bP¯eT¼jM¸fH»kRÁsXÇoUÃrSËz[é¡o¸oVo=G[(A´ŒŠÚƒP UISRb5L‘¤T.S}Yz’oˆS'=g;XmLZc:NW0AV'9P%8ŠlŠnMr‚[T)D`:EÄ€eÊ›ŒÝªƒÜ¹à½œÍš‚Ø»¬ÞíɑoÖˆkÞ–z×”xÄ}e’KB=;›XMÒté¯ç´˜ç®Œì¯Šíº—é¨íºí¼ŸòÄ™ðßé¹Ãfž^UŽH@‰C=X'6O*AsCUÙ¬›ÃŒwY-?}HLm;Cn>I\4C]0vKgS(?^7HyL_P!0\)6U*C‚lqX1=E 8Òž»€sà¨zß²’àÆ­Ò¨ŽÖ±ßÆ©¸lOÑ~_ÒŠnÓŠnÈ{^àœ„Ó‰l²dX£VG¤YNÌw]å£éªŠê®ì¹šíÁŸîº™ì¶™ê¶µmYŸ_[®h^¶lVÇrN¨ZCs:@Q(sHUÙ®p_yDLf;@me1;c0;S&>†RX¿•Џ„r̘|Ö¤}Õ ~Óœ‚ÏšvÕœrÍœzјvΞÎxÏ|ИrϘzʘwÊœxÉ™}Ê›ƒÊšƒÆ–~À’zÕ»}ºŽ³‡‚©`J§_P¤^Q¨\L¡ZL˜QCŸXIÑ‚\â›jê«zð²vì±nð²vì«{ä—eÌzT’ME’OG—TE¡TE¨^J¶cJ­_H¨_J¯aJ«\H­aZÓ¥ç¤fÞ[à˜uâ–i¾„zb2AIHH"CxY|Nm“€«…f‰‰eœ­A:|Wtg>R}^rV,EL#6U)B˜xšS&:]'7K);K#:É•gÛ¹¥Ü¤|ß·¢äÌ·Þ¿«Û½ŸŒJ<ˆB>h.5l29h5Ac-8rNažno[-9\(9¨V=ׇ`Õ‚cÜpâ”u꧄レô̰òÊ¥·uXf4A_2CƒGHv=@d/=kJQ(A£mdŠnÀ†vÕ ÒžvМ€Ï—xÏ—yΗtÓ™nÔ¢Óž„Ï›yÎ}ЙwÆ–xΜ|È–vË–{Èš„Ç™}À’|¿Žz¸Š{¿‰x³‹¶ˆ{¨dM¤\K¦]F§`L¡YG“PEŸS?ׂVâ˜gï­oî­lî±…ñ´ƒë¬~â“]ËyO‘HC•NF¨YI±eP°aI¯^H¯gP°dJ­\E¥WHÔ~IñćÅ~fÜ‘kã˜dŸ][Ìs€GOK*EoPtb=V}_…L&@nHl‰b†pŽQ)=Z->]7Mf>HW,AV(6d2C^.>Z,@b8WQ&E¸Œu®l`ܤtà·“Ú¸£àȶâÅ ŽPI–N?i6e19j7Ce1a-5h/7f6AW*‚RXÂ}¾†tÌ—€Ñ›}Óž€Òž}ΘoМ{Ï™xÍ–~Òœ}ÑšuÊ—xÏš|ΗyÌ—‚Ê”nÔyÃ’wÂyÀz¼|¶ˆr±†u¦~w²Š~É£‰°dLªdQ¨aK¥`O[M“M@–QFÓ|Oá—pï«tï³yì³zò²{ð®zã˜kÐyRVG YL¬aJ³hM³jS¾nTµhOC5n4B‰Ui¯„Ó¯¶ìºŽõã·^3JO&M`/:g6EM#4W8[Ì›„½‡{Ô–tÙ¹ ßƺÚÁ¤ªeOÏ{]Ñ}j׋oÊ…t¥ZO¼n`ÂŒ‰¼‘”áÁ¯íκ綋ܑmÇpXÓ}WÑx\ÕcÞs驈÷ÜÁéʰ¨YKÇ€t£y©Ž«×´¯ÒŒD<{>Eq5>Z/Bb3EˆW_Z`Ë¢•}JT‚SW`1>[-8[0>j9?\/B˜f_¿‡kÃŒwÔž€Î›|ÏœzÏ—wЛ{Ó˜sÏ—yÏ™wИvÑ›s̘v˘zΕwÌ’sÄ•Ô{»{¶‡q»´„q®xÁ’yÏ¢Ú­}à·Œ±hP®hU­fO¡XCŸVH™RG˜K<ÕUãžhêªvî²}î´ï¹‚ð´vå›oÓ€U¢VJ¢YI²dK·iL¾pT¿qSÓ›xV'9©niÖ™{ÆŠ†Æ““£tOa`/b4EtBG°|Á…hÄpÏ|Ñz͚ЗxÇ—{Ï–|Ï—uʃʗyÍ–tÌœƒÍ—wÊ“mÆŒv¿ŒvÀz¹‡u³…t³ˆx¹‚Ö§Ý´†ä¸„潄辉¯iV­bP¥aNžXK™UF“MA’H:Ñ|Sâ—jì©xî³vî¶|ð·…ð°wåžmÕOŸSC£S@¯`J¸dHÁnOÀiNÕŠT½”‰Æ‹ŒÈ¨xERmE[~RcT';[3OZ6\¤ÄœŠ¯‡p”Z5R`:NlEc[…†j‘’vŸš…¨a4?W-CX);`2@[-:^.?X+9G0J":Ó›sÅŒzÚ¦Ù±šáȱ\G½cHÓ„gÙŠtÝ’yá–{Ü‘qÝpÛ”yÝoÔ‰tØ”|Û•zÜŸÚ”ƒØœ‡Ó{b؉p×dÙ‚mç¥óÒ»îÒ¹Úª“Ú•{Ó‡pÏ‚oÊ}d¶gR«_J [D|?@W(9b2BOU€NXàÀ°˜bktAAl8?X&6pDEY)4KPËs²€uÏœzÑ¡€Ë”tΘyÍ–yÊ•|Ê–xË“rÍ—zÈ“wÍ–xÈ“rÊ“wÈ’wÇ‘t¹‰w½‡l´…u±vÏœyß³…ç¼…èÀ…亄齀鼀¬aM¨^HœWI”PG–RE‡C=ŒD;Í|Uã•cê§të°wð³†ð¶ƒô¶ƒæšaÖQŸVJ¡ZG§^EºiL½nQÀmPÃoW×™x³pgŸjgc8Q‹f…c>VP.Ni:Y‚\|’uœiF^uPoT+H`7TuRunNbwªŽpŸƒm†“‡·_0@X,Dܹ§—jv‹\__1;U%4e:?T(=›f\º‰{º‰uÍœ‚Ð}Ï›xÍ–pΘwË—|͘xÊ•wÌ•yÉ•wÇ”€Á•‚È•wÂvÄ}¹Ž²€oµ‚pج‚æÀˆìÅ’ëÁ‚鿄羇è»~꽂¦YE WJšTJ“OD“M?†A9ˆEBÎzNâ™nê©uð°wð²uñ¶{ó®rëžiÒ]VDœP?«YA¹cFºpY¿oXÀuf¥k„˪¸¤‘ºª‘¬iC]`9Qe9S{Mn‹h€X€œ…ªL"9Q+F^8Z–{•zW„gDg’{µ¿i@Xp@JY+>`3BX,9T,CU,CU(;Å|RÃŒ€ã´ŒÞÁªÑ»¥ŽD;¿jNÎxZÒ€hÜ‹rá–ã›}檋奇豖䫒嬒魑æ©â­”Þœ~Ü“~ÛŽoÚ‰jØb×z[ä—}îË·ñÜÍâ¸Ý¨—Ýš}ÝmÛ†jÓ~cÐz`°dMo/5f-6j06zBFm:C߯•¥ux{IIpAOW)8c1:_->°zi¾‡qÉtÓŸx·ϖvÌ•uËš„È•|È—|É’xÅ’xË”vÆ’uÃrÀŒu¼}»‹u´‡v¯‚uتêÀ†ëÄîŃìÀ}ê¿„é»}ëÁ…éÀ„›VH™WL”OI’RO‘K>~>;‡A?ÎzWá’cè«ì±}ðµwñ³ï³|çžmÓ€Y›PG›N?§YD°kf™щk´‡Å€otBK`Rh?Xc7OtQwvNmtQu—‚¤aT*D[6Ih?[‘rsLTK'F±…z§uh]4G\.>W/FT.DO*Cµ‰v°plÙ´’Þ¬ÞϱT%7–MAÇoKÐy`ׄgÙˆiá–råš{处讓벓笔簕簌鲗孌á¥Û“xÞ•yÜŒuÜ…a܃iß‘vîʶòÚÈ㸛ऎកÜyÚ†vÕ„kÍ}^¸gMt>Gm;Eh4Bm7Bc/Dâ´•³Ž‡f6Bg4:`5@`/9h4?ÂŽu½‡uјyÓ¡zÍžzÊ™zÉ—É“vÍ•sÈ”xÔwÄ’xÑz½wÄ‘tÑy»Štµ„p¸„qÕ¥zéÀ‰íʼnìćí€ïÁ|êÀ‹è¿…éÂ’éÆ˜™UJ‘OEŽID‘OI‰JCy;6>?Ê{Uä›pé©të°vï²yï³{ï°å—_Ñ|Q£XH–QG¦]H­na¼mVÀo`·ytxMaXvƒ^|rF\^6R‚`ƒ^6U–„±m„]8UY0HZ.E[/HV)@_4LyIWi:Me5>P'D§lc£ic\/BY4JS)AN&7[2GÃfÄtá½£ßÁ¢M'Cr=Cl9?k5?c-?Ú¬œË¨Œa/:[)7e5?_1=ŽVNÉ“n‡oÔ zРzΘtÉœŠÆ–wË—~É’vÄ–~Ç‘uÁ“‚É“‚Ãy¾‘„¼Žy¶…u³€sΞ纃ðÀ|îÁ„ìÁ}ìÄ„ë‚鿎ëÆëÉžéË©JGˆFBŽOKŽJDƒC`3B_3C[0DX5I\.C~C?p:E«qc¼X©zuN+DH 6M!9»…c¶sdâÄ©âÄ®¹—vP(;k17žUHÌtRÏx\Ú‚hÝ…aãqá–zã“mè¢€í©„ê²’é°„ç­‘ç­‹æ¤{㟃ݎhÞŒhÛ‰eÒ{YÝ€XÛ|麧òßÎ㻦ުŠßžÚrÙ‰oÛ„jÌvZTGg3>g1;m3R&6uADr9o3:o/3ÈvXà—jã£{í°„ë±xï±{ð¯wêžeÖ~O›QA“MC¡ZG©db§zµˆ–WisGhˆ\|„^‚d8Z€b…ˆuš€^‹{\„Ÿ•²Y5@J$8W-Ha2CV.Da2H‰^o[Z¬zn²uZt;^,|?=i.;i/6ÁwYá–lë§uí±„î°xð°…ò¬{ècÒ}W—PA‘KI²|‰´of¯lj»uluE`…[s€\vNizPoa:^’yX5Y€_Ž•†§^0Qi>SY0LkDRS*EBMDÎ}\á™rè¨té¯ë¯}ï°|ò°{ë oÕƒ`žTG”MC¡YG±cIºoa¤jq¡an†^u¬}xxMmI&N˜€”__yUzyW†}š}b‰ª¡µ“~ L#;f’`d§oj´—œ¯tY«smØÏÂJ$9S)¢dX«YCÆoRÓx[×~[Ú`Þ†kÞ‹qà‘pâ”rà”uä”wã˜|å ç{äŸtá˜tà•oÚŽzÜ€[߀ZÖfÕŽß¾®ç¼¡ä¦†Ý›Õ‘}Ó„mÇxXX,;X1GU-D]3A…IHs=Aj6Ò „¼ŒzŒTQ¿‚cÒ‘bÊ”rÔœù˜~͘}ÎÅwÔwÈ–È’oÊ“p¿’~ÀŽr¼x³‡zÌ—së¼ñÂzðÄ{ïÈòÑœòÑœðΘíÍšñÑðÓ§ìÒ§ìÒ­íÓ§îÔ±ˆLAI@ŒE?I@|>=†GC¤h`ÑŒsàœzè©ê©jî«xñ³~ð¯tè mÔƒ\¡VH”SF£TE®\KÓ——¨|‹mPk|Rl ˆl>M[0B[0Ra9Ng@awQs…eˆyVŠn™™yŠk>X‘`rˆRYL%5M'@¸”•Æ~Ï´¦Í¬ZN«uem?9W(<^+9h3>k:@mÆmLÏ|`Ø\Ü~]ß…gà‡fä‘mߊmã‡bâ‹láqÞ•wà’sá—vÜ“uÝ“oÚ–yࠃ宔íͳ婒ëξ绖ܜ†ÚŒpΉv®ofZ->V0FW.?a5Jj=KŽPIJB{DAe2>X'<¾Šr¬t`¬s_ÒfЕvÊ›Ο}̘yÌœuÈ•|ÈœˆÆ“~Ä”zÁ‘yÁ‘z¿‘vÆ‘v¾w¸‡p¹€f×¢wòÀ|óÅ€òΗñОòÒ¡òΘïÑ¡ïÏ›îÏšëÒ±ìÓ°ïÒªîÔ±îÓ®BD<9„KF‚AA}>>‹IH^VˈtÝœvç¨zë­뱄ð´~ñ²|ç¡o؃S›SFŽFE°sn¡^Z¶iR¡jyqDWˆkŽg:I_2JaAVw\…sQe„]yhGhuMr‘q–V2R•w‘ ”¦@)EqCRņyϼ¼È«§Ü¯“O=›\Pȵ¶T/FT)>¦k`e2?m9>f4>ŒUM]*3a*:—VKšSJ¼`CÖyQØ}WÚXÞƒ`á‡^àŠgàg܆eárÝo݈`Ü‹kÜoÙtÝ‘ràœtã™jä”læžyðÀ•砇夈Ջj΄rΉvY/FX.>a6DX/C_3@v>CŒPHF>}ABd/8X&<­z®ub¶|`Õ_Ì”lÏšuÏšuÌšxË›~Ç•}Æ“vɘxÓ|Á“wÆ‘tÆ“{Ât¿Œv¸‰o·ƒoÚ¦tðÂzóʈðÑ òÓ›óÑšòÓ¤ïЙíÏ îÒ¤íѪìÕ®ìÓ«îÔ¬íѪm5=q78x<<ƒCB~?@‰HAœZMшkÛ {é®ꬆí¯yï³…ð±të¤qÜ€N”NH•UZ±vx¦^V¼‚…—_kZ,G_5KtIa_9TsNiQ2TkHhˆd‹‡c€tOn`=aŽn˜ƒn‰w‘}Wi×®µu‘ؼ·åϼ¢eI¤fYµƒqU-=V+>V,?‰PH]*7b.:n=>{B=a+4_/>…FC‘NF¶`IÎwWØ]Ú„aÜ|R߃XÞ‡câŒháiâ”k²]=­YAÎqFÖ|MÐyOÕuNÏqGËjEËnOß|K؉g“C8»jN¼lTÛ’u½|fT/JW-AX,?W-;b8Fh3>x<:ROk2=zC@\&8›e`²̓ZÙ‘\ÍoÍšuΚuÍœ}É•yÇ•{Æ”vÂ’}À’yÅ”vÀŽuÀrÂ’t‘y¶‡sµiÞªsñÆ…óΔóÓ¤òÔ¢ðÑðÑ™ïÐðÑŸïÒ¥îÓ§íÕ±îÔ®íÔ¯ðÙªj:Eo:@z<;|A@z?D‘YT«fWÐŽoàž}ë«uì¬xî±{ñ¶{ò´†é¡jÒ…aŸTQË—‹™NG«e`ĉ‚†Sd}Tq]7LkCW\9RnF`{T`=[¡±ƒcŒ|XuŒjŠ‚^}•u’aB^|RnÝ‘eÛ„jîàÕÙ¼Ÿ©j^´thÀŸsW/=_-7V3Bi58_,9i39i68p>Cx=@d.Bw8:‘VQ¬[CÇpRÒwTÖzPÖ€W܃`݇`á…fânà’sÙbØ[ÖsWÓnLØvWß|XÝe×zZÚ}nå€å›‘Ý…vÔ‹uÜŠnÖŒj\0FV3I`7CV-Fa2=zFIk7?‚LLRIe0@Ža]X+;…PP¿ŠÔˆVÙŽ`Ì—|МvΘtÉ—uÇ•xÉ—|Á”}ÓÀ‘•¾‘~À’xÀ’|»v´„n³ƒvä±yôÌôÓ˜òÒ£ñјðÐñÑšñÓ¢ïÒ¤îÒ¦ðÔ¯ïÖ§îÕ¬ñÕ©ðÔªh8Dp7<{@@€A>x:?ŠSP¤bRΊnárꮌë±sì°rðµzï³pä¡}Ç}vÇ–ŽŽHD›QMÆ…±gX”cla1MnASO&8P'D|Piw]€`Ec…›V3T†l’Šk’€^z\7YƒbŒ¢ƒšç”cÌsYßÐÃ[NÉŒyÙ¼¤P-C[9Kc5CW,=\-8s<=a.;i58t?CHGd0;‚D?‡RI‹GA¶gKÍtUÌuQÔ|SØ~TÚ„fÛ‹jãkâ’sãmÜ‚ZØ€\Þ‚Xày]ç…kê†î¦‡ï±”قwÕxÜŒiš[JY.GX.?e4@Z):d5l9>h6A~LI_4F‘VS‰OH}EE±`D¾nNÇrPÐwPÐ`ÓdØeÞ‡bÞ‹kä“pÜ‹i܆aÔ]×|TÞƒaæ„bçŽ|ê“ëuä…pÔ•‚Ü—yʆmW*@U/FV-A_0C\,=b-4f17…E=w=C‘RL€DC’^Yh8CuFTΆ֡ؓfÊšvÌžyÊ›zÍ›xÈ–xË›|Èš}Ä•ƒÁ—yÀ‘yÀ“~»~Ás¾Œr°„r°{cí¿}öÖ£öÖ¢óÔ¡ñÑ›òÖ¨òÖ¨ðÕ¨ñÖ®ñÖ§ñОîÏ›îÍ”ðË‘ðΙc3?g5>p::o9=q69Ÿ]LšUKÏ„dܘsçª|í³‚î´ƒðµxò´|æžlÕT˜REEQѦ©¦`Y«nl_1N‘q|Y+?X2N‚g„[0NnOv±¶Ô}Vu›‘¸z™a>[cCh–ˆª©xp•w‰®¡¾’Þ§k穈m9FY5L\4Gf6Ag4:X-Bj58c4@r=Cf9CvBEq?B_/>„QRˆRMw@C T>¶eIºeEÃnLÊvZÔ{WØ‚`׃cÛ‡hÞrÞŽqÛ…hÛ‚]×VÒ~WËuVËv[ÍrXÐ{\à …Ú{Óor6:U+CQ%<\/Be6CyDEk7=o9>WIˆEB•]Qt>=‘UGl6Bj;IÒ«˜Ú¡„Õ”iÊ›tÅ™tÍœ€Ë™vÈ—uÇ–vÎvƘÁ”|Řy¼x»w¹{·‹y¬}l°wdìÃ…÷Ú©÷Ø£ôÕŸðÕ©ôÖ§ôÙ«òÙ´ðÒ£îΗîÍ”íÌ—ìМðРðÏš_2Bg1Ag1:e/9}?>°iP¨fZ΃iÛ“ié£nê²€í²zð³ð²xé¥yׂU—VO†?H¹–£abƒT^g:UrŒ]1DE"A|_~iA]O0\¶¸ß”vbHb™…§€`„€[wе¥qvŒoŠi‚––÷Äw¿{]S.DZ4HX->g7i7A\5Gg6?e0:`.=^,;k9i7@j;Bm6=†I>:2£WC²bG¾jPÐ{[Ô\Ö†eØ‹pÙ‰gÚŽlà‘qâœ{Ý–säž~䥌é­äžx䢄ޕ{Ó•sV&9„I@W0IY1E]6In[,BÕ®‘Ü¥zÌ›|Ë ~ÇœyÉœƒÈ–yÁ–|țŖ€Æ˜y¿”{Å”¼”ˆ½x²Š€´‰q¥{k¤ugîÇ‘õÛ¬÷Ú£óÖ¤óÕ¥òÔ¥ôÔŸòÓ¥ñÖ§óÔ¦ðÒ£ñÏ—ñΑòСó͘\2@d7C[-?U0D’XP¬gT©eUІcÞ“jê¦zë²zé°vì°…ð³|è£rÖ€STHIF¡dZ”[\`8IW0LzQ_e:LO1R€Wp\:TiCe ’´gAW_=Y”…³””|¢v[Œ±’ŸË••hD_ŸkktCRg7JW/E\3G\1El;Ek9AZ/Bk9BW(7m=@^.=`/>n8;v:9h7>l8D?u99u4.–K=±[=ÁnPÓ|WÖ~Y׉kÚwÛ“|â›zâ{穉壇穈奋樊अړyÇŠuS';r>FS3HT/J\4Ip>A\,;m7;`/:™aT‹NN„I@‡OHŽSCŽYUZ+F×®•ÙwÈ•|ˢ˛vÅšƒÅ–xÄ•|Ä“v“yĘ~Å•uÀ”z¹Žz´Ž|²‡x­…t¡{l¬rðÏœõܯ÷Ø óÔ¢òÓ óÖ§óÕ¢óÖ¢òÔ óÐðÍ—òΘï̘óÍ™ïÆŽ],?d5A^1B\->yCD¤aL¿rSÒ†`ß–mç§uê¯{í°wí²}ï­~é lÖ…X™NE|BF˜\Yb:Ic8JQ1Hesb8O[0Ki@[S.GD!J¢´‹i‹mGh…k–i‡š‡ª‰q™’s°Šš†Se–k`qERZ8L[0D[0CV/Dj;D{BDV-?€F@a2=`2@[,:]-7h6@c2:d2;md)1ƒ??§\HÅtTÉtUÐ}aÑ‚kÞŽlÜ’oÞ“táŸ~奊簗䥄妌àš}Õ“v¶mRW*>Y3M_Ÿh^‹MK…HC‹LA‘XJ’YV\,CÚ­˜Ú¢€Æ–ÕzƘ}Ä™€Á—ƒÄ™„Á—€¼”€Å˜x¿–w»w´{µŒ€´‰x©užvj¾}ôÕžõÝ®÷ÖžñÑ“òÔŸõצõئôÔŸòÑŸóÎóÊ‘îÇ꾌â¨{¶qFZ+?].@W+?v@>C=<3•QD¥`K«j`Æy`Ñ‹sÕuÜ”wâŸ|å¢~ݘ{Þ–uÖŽnÅ‚g£YDR-<\4EX3N];Q]4IsCGg8Dg5?i:E™`[’]X‡PM†NK–_SVG]1GÚ°™Ò•k³}f²}gµƒj¼Œx¾‘~¼‘}¾“€Å”z¿“}¼xµ}µ‹y¯‰x«ƒv§wŸqfد~õ×£÷Ú¨÷ÖœöÕ›õÓžöÔ—õЗóÏ“òÏ‘ïÄŒëµw͇Ku:8Y+9R+>f5@`3BV)W+@‘PMƒNLR)=}DAW-=]2Cb0>^0=[-=a.:m=Aj5:m9Dj5:s;;•NA›PB½mVÈzgÔ…h׆jÖuЉpÜ’uÙqßœ|Þ ßž€Û {ߥ‰âª‰ß°“Þ»Ÿ¼œ{QZU9NW1IY4H\5FoAM^4Bc7EJI—\QRIUO„LL™ZQ‡ICj:DÓ©“Á…c°z^©mWªsf±z]±i±t²ƒn²†vÅ’w½wµŽ{´Šu¬‡r©p¢zoŸtoçÂŒö×¢õÓ˜öÒ™îÏ—ôÒõÑ•ôÏ–ôʊ渇ΙtƒHCQ#7Q*=d2>u<He5@_-BY.?a.<„H@ŠIAÇaÚ‘jæ¤xì®éªtë®}ï¯wæ›iˉ}ྈzFO]0EwIRP-Hh?RsFRe:Ia8KrKX]7MX-Ke›©¢©^9TY8\œ‰° ¾„h”†kƒ’p‘’w”nIZµ—‰k‘O3Ha6DEIq>D^3D‰QK\-@Z+?c4B_/:a1Ae4Ad6Bu@Gu@Dg4Ai6C—TI¬`OÌxYσeÎ~_Í~_Ò„cÈ„mчiØoÛ“vÙ”pÖ–yבrוy× ‡ß¯‡çÀ›êâëɤáÅ«”uˆW?U_;LfI)?R+D}N^b9MV/HlHTQgnBXN(C—‡ª[}ˆoŸ¶¤¶b?[|]‹‰k“‹sŒvOx¬—¼­…Ž’ytZ=Q^0Ax@Fh;HV2GŒTNX.=Y+Dm8Bc3=h5>ŽUT·hMÊz_Ë|_Ì~aÏ{`΄lЊqÚ‰fÜŠaÙr׊j׉i×rÚ—yà£{ã³å¿çÄèÆŸêÈ¡ï̪êΪ•w†M-=M)>Q'9k:CIE~GIƒLITQ‹QI~ED†MPÖ•gµ~gÉq½…j½aµ€q³xc«tf£iZ fW™g[žj_¡sn™i_ob›iX—lcžj^ïÄŠöÑóȉõЖôÒ—ñИöÑ—ëÁ•Ù«|QFZ.Y0>_3H“v”G!;j9PiyK[L%>S)K£“³wšƒ\™Ž¬qTm‚f‹k—”«‹m“Žjˆ ~Ÿc4Ež’Œg7C‚CBa3CS&<‹OD\+9`/>U';f6?_3GX-Bg9Ci=GKJk6Aa0<…FC°gO½qSË{bÌz[Ð}^Ï}aÓƒcÙ‰pØŠmÚ‰mØŒnØŽlØ“yÞ™zܧŒå¹è¾›çÁœè˜êÇ¥ï̦ïÌ©òϰæÏ®iJQF 9a4:ŽVP€FGxGF„JG€EDLT‘_`Ö’h¼†w¼Žx¿s¿‹o¶„r¼„n±~o«ub«p] gZŸcV•aYYT—`UªqW”^QˆOO쿆öÏ’öËôÓœóÍ“òÌìËá©vSE`/<†OJ†JJHF•XNSJ“VI§‚¨Œ‹§ƒ‚žso‘_RƒEBc*5–UFÓˆeä£yç¦xê©tê­zî®~ê iÎ}a¹~t¨toR.IV/DL$:I#BŸ}œl‰L,KŽo“uFZ€Xo]5Oa;TyMghDd™†ž]8UsPvz_zu—uœ—¤¢†£’c\vJ^tMbŽdqw?C]3?Q+B…OJ^3Dh8DZ2DjEyDFc7@ŠPK¨fVÄtWÆvZÐ`ÏaÊ‚eÚŠhØlÜ“uÙnÙˆlÙ’tÛ•xÝŸ€á«„崌鿙徚èÁ—éžíÉ ðͪò̦òÒ®óÖµ‘ya6=e9G{GLyGHŒQG{CCk4:®zmЕuÍ’sÈ”y¿“wÀ‹mÂw¸Œ}¼‹{·„r¯{k¨xm¡na qd‘ZU®t`Æ‚Y™bRVPïĆ÷Ò˜öÐ’øÖœöÒ›òÍ–Ø›jszUgm?RlE[c<[‡i‘koM&F–Š­`9UkEbb@\yX}‡kˆš‚ ’|¡“¨K#C»§ŸP*Iµ˜‚d2GR.FN)BŠOJf3Bd9KR1Fb2@g=Ib1>]4Ii4At?F©cI`0>‹WR±o\ÅqWÑ„^Ì~]É{dÖ‹o܆aÙŽiØŒn؆dÙ‰gÚ‘lÜœ{à¢ä§ƒâ­‰åµæº˜å¼—澘ëÅŸðÉ¢ðÍ£óÏ«õÓ±ô×·ž‰_6MtAIsBC~JFw>@\(=ÈŽ{ΔuÏšyÄ—}Á‘z¿s¾Žwºx´‡xµ…p³…u¯|p§xp¤yqŸnf¸yVÈ„X¨j[ʈ\ôË“õÕž÷Ô ÷Ö óˉ뿃¥gOW*>ŽPG—YL–XK”RL¨gW_N˜\Sœ\I›ut¬Œ«——«•¬‡{”ZNa,9—PBÒ‰hç¦pì¬xì®wë«oåŸsã”tµuiÑÅËE E¸wgÈ{_Êz^Áx`׈kÜi׈lÛŽmÚŠfÝgÚlÝ•wàœxÝŸ}⩇ã¢~孂䱿¸Œë»‘ë¿‘ìÆï̦ñΤñÓ·óÖºôؽ‹fi}C>r;;~FA‚HHP(CÙª‡Ë‘pÅ“vÈ–t¼‘r¾tÀnÁz»Šw½‰u¾Šu±‚o´‚n¨o¨yiµzYȆY»uNÞ¨uôÓŸöÕš÷Ô—øÕœíňןiB?zDGŸ^Nž_S›ZL­jU´€z¡`M“QL¢`UsEQœ~„¬“—¸¡›º–…¡tna.9•SC׌`è¥zðµ‡ë±€í°~ï±wë jÝŒZ¤y~g6>P(@P&;b6AV,8W0Bk8FS.BQ*G‰c{sJbK(A\6@O&BY;X|VfQ.HnFalJpx—’u–˜}—¢”·¦š±¤‚†j<;a8[ͺÁM&8M$7w@Eh8Ab0@S)@^2E~MO_0Q1G^1C[/J“p…^:LX&3J!=‰aP-GoEe„a€nMd{XhDeˆoŽl‹‹p”­—¨™{‘D#@ ˆ©ÝÙÓH%q;@~DFa-h‡{W{sMpaŠlˆn‹uVx€a~¢”¹¬›¬c3K]3OŸszàÖÍN+EP&9}CA„OEc4AU.@Y3GvACb.:_2?l6>ª`N¾pI¡ZG`,;¦bSÉqOÙ\Ø€bÛ‡_Ü…_܇eÝ‘mÜ‹eÝkÝ’kà‘iÞ˜tà›uÝœyà¢}ä§㬄届沉溗ê½ìÄšïʨñдñÒ´óÖ¾õÜÄ÷ß»k:;e/9^,7a+7ÕšrËjÉ–xÊ‘lÇ”w¿lÀ{¼Šr¹‚³‰v¶‰t°„u®q«zh±yfËlä¬sî¾{õÏ—õÙ¥øÖšøÓ˜òÈ~ÍŠOšXQ¤`M›VO¬fT²oV²mZž^NšYN©gY£kdŸi_R):a3F¢Š‹Â«¤½¤—¦ƒ{O&;†G<ÙŒ`é¨xñ³ë±sî±}ñµví¦jß‹a©~{M)Ce7MX-Cc:Jb;HV.C]7LS-J€ZnˆbxH"=qJT]/DQ%;[7RaP%:iCO_6GY*ÔiÆ”yÈ“x¿r¼‹sÆ‘sÁp¾sºˆm»‰m²€n©|s©ye°zcÜ©vùÔ›øÕ õΑøÕœøÙ¡öÔ™òÈÙX¤]I¡\K _P°fO»sX¸u\œZNšZL«k[£dW›`X”_^G3U%:›z»§¢È­¡­Š}[)3z88Ù‡Wë§wí²|ì°|í±xîµ}í¦pÛ‰Y­rV.Ie>LN$9T*9[,?]3JR-H”yœl>Ie7IK'@S*@vJ\bf5@c05f2@o;Dj?Id09_-=v=BÁrQÏ^È|^®[DyCA«iX×zP׃g܈gÞˆiߊcÚ‰dÛ‡`ÝŒfß…^ÝŒhÝnÚ~à–rßœxàwß¡᧊㯎ä³å¸Žå½æÃ¥íɬðϱïÏ´ïÓ»ïÖÁöÚ¾öß¼­scF0¬kYÏ‹dÏŸzÈ•uÁrÃn½ŽqÁqÀp¶‰t²ƒn³„m­€r¬zhµw[꾆÷Ù¡ùÔ—÷Ñ•öÖ øØ¤ùÒè´}ÂuK¬_H XE¥_L²lW¹oP§cQŸ^PŸ`P¦g[škh•aZˆVVJ!4U(>™|…·¤¤Âª¡­…h4:|>BÚˆZê§rì®{é²yæ­pë±vâŸrØ‘lžs„g?PU-BQ-CU,9[)9V,JwReO1So†xSeZ/BW.?d:HP(ÕƒWí©xç¯~å¯~è±}çŸkÛŒb¶~xNXW)=\8IV*=_7FV1DQ/AZ4G„\muFYS,>mKY[6GV-A_8OU1?V-HŽq”d>WL*Ik™œ˜„Ÿ•n‘U(;V+0L':\39j;=¥€Œ®–® ’`.9f8DmÕƒZë¨mí±xî°uì²tì²zé¤pÖ…`¥mrk8EfpH^W,KnFVB!;g@]‚`…Œz Œv’‹p•ž…”U/GO&9m6m@LvLPq?E¦}bi7?c2€Y\¯˜™½©Ÿ±™wGI}>?Òƒ^è nì±~è®ê³ƒíµ‰ç¢fÚ’kÇ|vGRd=NW.BO)EY4Peq]5ET,CkCWc9M\0?X/AL(?{WxX->a=VzUq[6Sb†V;L|f“†r£“„¥kDhr’“m‰W-=L#8tBFc6>s>Ei4QkCVc:Qc?Te8LW3Hc8OY2Gy]xgCi^>Uz`x™‘±h<[hHoœ}˜¥–¶H$8j:@S(Y2DR+<\6IoJ_rGXZk;DR'5`09Z'5Z,:_05k7?–SGÂnKÌvSÌ}]ËxXi7IšWKÓ‚[ÚˆeÙ‡dÝuß‹gàgÝqßdáhàiÝŠ_Û‰`ÝŠ`Þbßeß•oß•qàœuÞ›qà¡~ᩃ᫆⮅縒佛èÀ ëÉ®éÉ­ñÔÀòÕ¼ðÕ¿ïÓ¼ôڹͅU–[G’VHWGcM¦p[­w`±†x¸ˆp·†n¸u¸‹pÇŽnÓœfÑ’^ˇV͈XîÑúÛ£ûÕ’ç¯aÅxN¶fJ•SG›UGªfOMB•TI¤lfŸ`W—bZYXœkh’^YˆVUu>?N(:N#5^1C±›™Æ±«¾¦˜—oju<=Ï}Oãmé­wê®yæ¯{ñ³wì§màa¢kk‚R]Q)@V*;[-=U+MV/Eg?SZ6Ke8F`6DX,AO$5Q(>X.?iR‚‰u ~[œˆ™\:T€bˆnF]c;Sƒj„€Xrl>G^0X)8V(8g26ŠKGµeFÈxVÆsRÉvN¨]Ae9MªeVÕWÚˆh؆_ÞqÝ‘nã’bÞŠjàdá‹ZáŒhÛˆ^Ú…[Þˆ^ÚŒgÞŠ]Ý“làšvÞšvÝšsßžpâ£xà©„á«~ß±Žå»˜åÀçÆ©ëÏ·îжðÓ¸ðÓ¸ñØÁ÷Û¾ÊwSIaXF@†GBŠQ@”]M“]Q–cTnb¢sf¸‡qÊ–}Ô¢rÉ’iŇ_Õ˜hõÑ’ýÞ¦öÉÛW¶jP›S@ŠMCŸZP˜SIŒMEaXž`Tš_[“_W•`\˜jfa]~JGm59N%9E0^4I®•ȯ¡¿¨˜£|mz=;ÊuRãnç¬~ê±yë®{ñ´í¨tÞ“`¢ps‹YcM%?f;LQ0JP(AU/Ci>KU4Kc9HW3Gj@Mg:Qg”NA’MF‹KCžbZ¥nc‘UP[T‘ZRžf``^‰WWk;@k7@_/:nS);V.@]2E]4G_8MW2Jd;T[4Hi=Qf=I^/CjBSR+?X1@`S'4X)7h.8ˆF?¶hKËxNÆvUÌ{U{6/g3>°mYÓƒZÝ‹_߆`ÚˆhÞaÞ‹_á‰aߎiânÞkàŽ_ß‹cÛ…Y݆[ÜŠ[Û…YÛeÜ’nÛ•oà™mÞ™nàŸwà¢zঃⴑ㳉世åĪéǬí̳ìϾîÔ¿ïÔÂõÙ¾ôدNC™`K¥hZ¡fU–^S‰QEƒIFp;Ae38Z+5U+6xBI߯€ïÆ‚à©]î½}úÓúωܖS—RAs9;‹JF’WLƒIG–YS¡lh™^N“[Y\S”YS li]ZxJIs>>g2<”\V‡PKŠ\`¦ˆ~Ƴ¨Í·§ª‹xBAÈsHãŸyë®}ê°}é²{ð¼„ë®qÀoX·‡‚zKYR%7W0GgAPX0FR(<\2@X7Oc`5GsL]S)>I(I„k‚ž“ºsšŠbƒ¡}ˆV0EW0?V+5R&6R%8U0?Z*?PE™YHÅrNÇtUÉwPC6W'9žXMÓ€YØ„WÙ†[ÝŠeÜ‹f݆]áŠ]áiãfß“oâ‹\áfÛŠ_ÝjÚh݈\ÞŠcÝŠ^ÚŽfß’eà”kܘqÝ›yáŸ|ߥyß©ƒå´ãº•çÀ¡çÆ­éɳêÍ»îÒ¾ñÔ»òÕ½öÙ¸ŸeX™^M¤k[¦o\ŸgZ”_U“]VGEtEM_/9O'=DDòÆ‹÷ÍÝ™[óÇyüÔé¶q”P?m57{@>‰LC†HH‹QP¥i_šcWˆPO‰TJŒTJ˜f`¢ttˆYWzIJr@Dk6>[VZR–ljª…­¡Æ·¥¯•‰€FAÂsSàœpê¬tî±tê°ñ¸wé­l¨cN¶{jƒQ_Z1EU,C[3BV-=X+=Y5IW1DV0DR*=pGYX0Be=RU-CW0He9JN$8j?MZ6MhCVn@U^:Sh}w˜T/E`1>T)r0P!3˜WEÎ~WÔ~Vׄ^Ù†c߉aÓ†eߎaÞ‹\á‹cÝdÝqÝ‹_Þ’oàŠ\ÞŠcß‹hÝ‹^ÝhØŒiÚ‰^àdà•aÛ”iátÞŸ|ߣ‡Þ§{ã±’ã¶—ã½ æÃ§éȳë͹ëѽòÔÀñѸöÙ¿Ôµ§’WM j`©m[ŸdUšaR˜\QŽUJyF@k:?`,9ˆILèµ|öÉ{ðÀuõÆ„é®g—YCg3;j5=LFz?CŠNJœbVš^R‹RO„OO‚LF’ZW qr•fa†UWSRo:BrBK…QMŸqnŸro©Š„Å® È¯ž±–††PFÀqRá›oç²xè¬që´‚î¸vî­v®cS®rm_3Eb9JT3GZ1C^6HV,@a8HQ)@X4LcF]iBQT,CrK[g=R\6GV/GŠf}^8TnB^a:UoOf’x’l?S[4@p?HV+=R);X-;O)7S%,a1:MA¶hK·iJ°eIO!,a-7¯cEÃtOÑxQØ„WØ„WÛ‰]܈WÛkÞ‹aÜŠeÞŒhÞcß‹aÞiáfÝ‘jߌeà‹cߌ\ÞbÞ‰^Ú‹gÝiÛ‘iÜ’eÜ™tÞŸwߤ}à¥|ᧀ௑⸖你æÅ­ìͰëϸîÒ½ïÔ»óÙÃïÕ®‹MB™f^¡hYŸeUg\—bU˜bWˆUU†NJ‰VOœ\Káµ}úÕ—ôÅ}×’Z›]Lw@?m5;ƒLGE@ˆI@™aV£lcŒZX}KP†NLŒ[W kg¡mj^^‹XXtDGwGIg6_3HoFXY/Dc;P`=QU0GyVrvP`O(~`hW3JjIhsNx£–º\6GfE\O*FX/6Q)9Z.:\*4}B;–Q=i29O&4j6>ŸT@²cGÇuSÍxWÔ~U؃ZÔZ؆_ÜŒ^Û…[ß’kÞŽoߊaáeãŽfß‘dà’já“jÝ’ißbÜŒgÞŠXÛeÝŒaÝ‹\ÝŒ]Ü“kà˜lÞ™rÞ¡|ृã©z⯋ඕ忢åìçÇ­êϸìѽðÒ¿ñÖÁðÕ°ŒRI’ZP›eYžl\—g\šg^–dYŽ^Y–a]™\S bZà«wñƈؖTRH‚LFz>C~F>…GB„LKžb^¤ph“_W€NMu>A‡LM˜`XŸoe›id’a`yDGp>Fb2:~W[†]dšz~¹¨¢Æ¯¢µ™„œi_ÀpJÞ›jæ¬vì²|îµ€ó·}îªlÎoNVN'@S+@T1?a9Mo?Q\6J`6F[1Ha3IW/HuZsR/G€]€‘u’sJ^I)@ƒaqM#2pLs•x_:X–€£‚buo~T2GQ*>V-?\1>Z)7X(6U'5l7>NC¤YDµeMÃqSÐwQÎyRÑ€UÒ~TÕ|QÔ‚\׆bÚŠgÛˆ[݈_Ý…YÝ‹dàŠbß`ÝŒgß’nâ•kÞgÝŽdÞaÞŒb܉[á`Þ‘iÜdÞ’ià™oàžàŸuà£â©„â±äº˜äº¥ä¿£çÅ«é̳ìлïÕÀñÖÀñؼ»†y‡RJ’b[–eUžgZ¢qc—cbœf\­t`¬lX³nVÂ{W¹xT”UKPG’UI–[PPF„FE—aZœga“^TJF{IMwBH™c^œpn¤rq“cc‰Z`vGLq=Aq>A_0;d:DiXb=W‘v”M(Fm‹ew@8tI]U.?gGb™y‹sRhiCSL$6Z7ER&5a,/t95–N<¦XA¹mOÂnLÈv[Ï|ZÑzTÑ|WÒUÕ‚VÖRÕ‚XÚƒV܈a݈]܈cÛˆ\àŒ_á`Þ‹aÜŽkÝ‘màgÝbÞ‘làeàcÛdàeá’iÜjÛ“dÞ•pà›vÜ›yà¡~ृ஑ఇⶕ⽡çĦåÈ­éεïÓ»îÕ¿ð׾߯¯‚HCŒ]T’bXšfZ¡r_lZ¤te­v^¯nS¹pX¬kX¨eQš^V¡eT¦dO–VJ‰JGSRœlo]XKL‡RN~JK‰RI§zv§{yŸnh’e`}EHq=Ag6>i8Aa3>`4:`1:g@H‡_hκ°âË°ÝÆ¯«r¶rYÞšsí°}î³xïµ}÷¹}ç¥wƒQZh?K]3IV*?O(6_4FjAOb8Pg?Ua@NO)@S+LnƒQ/DmF^sC_Œ­[>QhGd—‚¤V0FgCf39}A¹jDÂkHÉrHÊyWÉuMÏ{MÒZÓ}SÓ|Q؃SÙ€S؃XÚ‚X܆\Þˆ[Þ†[Û…^äWÝŠ^߉[Þoáná‘jà“jÝià’ià’hà•já–kâ“mß`ß—lä›uáštãvÞŸqà¦yߦ~ⱈà³ä»¥ã¾¡äÅ®èÉ´ëϸëмìÒ»ïÔ³†LG†UQŒYK—f^™g\¥sg±t\¿~_Â~b¸uYºqS½oQË~WÇwP¯iS`^œg]Š[[SV…MPƒNI…MF—bY±zk¬ysh`†W[r??c1= 2: - self.id = i16(s) - if len(s) >= 4: - self.count = i16(s[2:4]) - if len(s) >= 6: - self.repair = i16(s[4:6]) - else: - self.repair = None - - if Image.DEBUG: - print "AFRM", self.id, self.count - - return s - - def chunk_ADEF(self, offset, bytes): - "ADEF -- store image" - - # assertions - if self.count != 0: - raise SyntaxError, "misplaced ADEF chunk" - - self.show = 0 - self.id = 0 - self.count = 1 - self.repair = None - - s = self.fp.read(bytes) - if len(s) >= 2: - self.id = i16(s) - if len(s) >= 4: - self.count = i16(s[2:4]) - - if Image.DEBUG: - print "ADEF", self.id, self.count - - return s - - def chunk_NAME(self, offset, bytes): - "NAME -- name the current image" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced NAME chunk" - - name = self.fp.read(bytes) - self.names[self.id] = name - - return name - - def chunk_AEND(self, offset, bytes): - "AEND -- end of animation" - - if Image.DEBUG: - print "AEND" - - self.eof = 1 - - raise EOFError, "end of ARG file" - - def __getmodesize(self, s, full=1): - - size = i32(s), i32(s[4:]) - - try: - mode, rawmode = _MODES[(ord(s[8]), ord(s[9]))] - except: - raise SyntaxError, "unknown image mode" - - if full: - if ord(s[12]): - pass # interlace not yet supported - if ord(s[11]): - raise SyntaxError, "unknown filter category" - - return size, mode, rawmode - - def chunk_PAST(self, offset, bytes): - "PAST -- paste one image into another" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced PAST chunk" - - if self.repair is not None: - # we must repair the target image before we - # start pasting - - # brute force; a better solution would be to - # update only the dirty rectangles in images[id]. - # note that if images[id] doesn't exist, it must - # be created - - self.images[self.id] = self.images[self.repair].copy() - self.repair = None - - s = self.fp.read(bytes) - im = self.images[i16(s)] - x, y = i32(s[2:6]), i32(s[6:10]) - bbox = x, y, im.size[0]+x, im.size[1]+y - - if im.mode in ["RGBA"]: - # paste with transparency - # FIXME: should handle P+transparency as well - self.images[self.id].paste(im, bbox, im) - else: - # paste without transparency - self.images[self.id].paste(im, bbox) - - self.action = ("PAST",) - self.__store() - - return s - - def chunk_BLNK(self, offset, bytes): - "BLNK -- create blank image" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced BLNK chunk" - - s = self.fp.read(bytes) - size, mode, rawmode = self.__getmodesize(s, 0) - - # store image (FIXME: handle colour) - self.action = ("BLNK",) - self.im = Image.core.fill(mode, size, 0) - self.__store() - - return s - - def chunk_IHDR(self, offset, bytes): - "IHDR -- full image follows" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced IHDR chunk" - - # image header - s = self.fp.read(bytes) - size, mode, rawmode = self.__getmodesize(s) - - # decode and store image - self.action = ("IHDR",) - self.im = Image.core.new(mode, size) - self.decoder = Image.core.zip_decoder(rawmode) - self.decoder.setimage(self.im, (0,0) + size) - self.data = "" - - return s - - def chunk_DHDR(self, offset, bytes): - "DHDR -- delta image follows" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced DHDR chunk" - - s = self.fp.read(bytes) - - size, mode, rawmode = self.__getmodesize(s) - - # delta header - diff = ord(s[13]) - offs = i32(s[14:18]), i32(s[18:22]) - - bbox = offs + (offs[0]+size[0], offs[1]+size[1]) - - if Image.DEBUG: - print "DHDR", diff, bbox - - # FIXME: decode and apply image - self.action = ("DHDR", diff, bbox) - - # setup decoder - self.im = Image.core.new(mode, size) - - self.decoder = Image.core.zip_decoder(rawmode) - self.decoder.setimage(self.im, (0,0) + size) - - self.data = "" - - return s - - def chunk_JHDR(self, offset, bytes): - "JHDR -- JPEG image follows" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced JHDR chunk" - - # image header - s = self.fp.read(bytes) - size, mode, rawmode = self.__getmodesize(s, 0) - - # decode and store image - self.action = ("JHDR",) - self.im = Image.core.new(mode, size) - self.decoder = Image.core.jpeg_decoder(rawmode) - self.decoder.setimage(self.im, (0,0) + size) - self.data = "" - - return s - - def chunk_UHDR(self, offset, bytes): - "UHDR -- uncompressed image data follows (EXPERIMENTAL)" - - # assertions - if self.count == 0: - raise SyntaxError, "misplaced UHDR chunk" - - # image header - s = self.fp.read(bytes) - size, mode, rawmode = self.__getmodesize(s, 0) - - # decode and store image - self.action = ("UHDR",) - self.im = Image.core.new(mode, size) - self.decoder = Image.core.raw_decoder(rawmode) - self.decoder.setimage(self.im, (0,0) + size) - self.data = "" - - return s - - def chunk_IDAT(self, offset, bytes): - "IDAT -- image data block" - - # pass compressed chunks through the decoder - s = self.fp.read(bytes) - self.data = self.data + s - n, e = self.decoder.decode(self.data) - if n < 0: - # end of image - if e < 0: - raise IOError, "decoder error %d" % e - else: - self.data = self.data[n:] - - return s - - def chunk_DEND(self, offset, bytes): - return self.chunk_IEND(offset, bytes) - - def chunk_JEND(self, offset, bytes): - return self.chunk_IEND(offset, bytes) - - def chunk_UEND(self, offset, bytes): - return self.chunk_IEND(offset, bytes) - - def chunk_IEND(self, offset, bytes): - "IEND -- end of image" - - # we now have a new image. carry out the operation - # defined by the image header. - - # won't need these anymore - del self.decoder - del self.data - - self.__store() - - return self.fp.read(bytes) - - def __store(self): - - # apply operation - cid = self.action[0] - - if cid in ["BLNK", "IHDR", "JHDR", "UHDR"]: - # store - self.images[self.id] = self.im - - elif cid == "DHDR": - # paste - cid, mode, bbox = self.action - im0 = self.images[self.id] - im1 = self.im - if mode == 0: - im1 = im1.chop_add_modulo(im0.crop(bbox)) - im0.paste(im1, bbox) - - self.count = self.count - 1 - - if self.count == 0 and self.show: - self.im = self.images[self.id] - raise EOFError # end of this frame - - def chunk_PLTE(self, offset, bytes): - "PLTE -- palette data" - - s = self.fp.read(bytes) - if self.mode == "P": - self.palette = ImagePalette.raw("RGB", s) - return s - - def chunk_sYNC(self, offset, bytes): - "SYNC -- reset decoder" - - if self.count != 0: - raise SyntaxError, "misplaced sYNC chunk" - - s = self.fp.read(bytes) - self.__reset() - return s - - -# -------------------------------------------------------------------- -# ARG reader - -def _accept(prefix): - return prefix[:8] == MAGIC - -## -# Image plugin for the experimental Animated Raster Graphics format. - -class ArgImageFile(ImageFile.ImageFile): - - format = "ARG" - format_description = "Animated raster graphics" - - def _open(self): - - if Image.warnings: - Image.warnings.warn( - "The ArgImagePlugin driver is obsolete, and will be removed " - "from a future release of PIL. If you rely on this module, " - "please contact the PIL authors.", - RuntimeWarning - ) - - if self.fp.read(8) != MAGIC: - raise SyntaxError, "not an ARG file" - - self.arg = ArgStream(self.fp) - - # read and process the first chunk (AHDR) - - cid, offset, bytes = self.arg.read() - - if cid != "AHDR": - raise SyntaxError, "expected an AHDR chunk" - - s = self.arg.call(cid, offset, bytes) - - self.arg.crc(cid, s) - - # image characteristics - self.mode = self.arg.mode - self.size = self.arg.size - - def load(self): - - if self.arg.im is None: - self.seek(0) - - # image data - self.im = self.arg.im - self.palette = self.arg.palette - - # set things up for further processing - Image.Image.load(self) - - def seek(self, frame): - - if self.arg.eof: - raise EOFError, "end of animation" - - self.fp = self.arg.fp - - while 1: - - # - # process chunks - - cid, offset, bytes = self.arg.read() - - if self.arg.eof: - raise EOFError, "end of animation" - - try: - s = self.arg.call(cid, offset, bytes) - except EOFError: - break - - except "glurk": # AttributeError - if Image.DEBUG: - print cid, bytes, "(unknown)" - s = self.fp.read(bytes) - - self.arg.crc(cid, s) - - self.fp.read(4) # ship extra CRC - - def tell(self): - return 0 - - def verify(self): - "Verify ARG file" - - # back up to first chunk - self.fp.seek(8) - - self.arg.verify(self) - self.arg.close() - - self.fp = None - -# -# -------------------------------------------------------------------- - -Image.register_open("ARG", ArgImageFile, _accept) - -Image.register_extension("ARG", ".arg") - -Image.register_mime("ARG", "video/x-arg") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py deleted file mode 100755 index 47b5f05c84a..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BdfFontFile.py +++ /dev/null @@ -1,133 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# bitmap distribution font (bdf) file parser -# -# history: -# 1996-05-16 fl created (as bdf2pil) -# 1997-08-25 fl converted to FontFile driver -# 2001-05-25 fl removed bogus __init__ call -# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) -# 2003-04-22 fl more robustification (from Graham Dumpleton) -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1997-2003 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -import Image -import FontFile - -import string - -# -------------------------------------------------------------------- -# parse X Bitmap Distribution Format (BDF) -# -------------------------------------------------------------------- - -bdf_slant = { - "R": "Roman", - "I": "Italic", - "O": "Oblique", - "RI": "Reverse Italic", - "RO": "Reverse Oblique", - "OT": "Other" -} - -bdf_spacing = { - "P": "Proportional", - "M": "Monospaced", - "C": "Cell" -} - -def bdf_char(f): - - # skip to STARTCHAR - while 1: - s = f.readline() - if not s: - return None - if s[:9] == "STARTCHAR": - break - id = string.strip(s[9:]) - - # load symbol properties - props = {} - while 1: - s = f.readline() - if not s or s[:6] == "BITMAP": - break - i = string.find(s, " ") - props[s[:i]] = s[i+1:-1] - - # load bitmap - bitmap = [] - while 1: - s = f.readline() - if not s or s[:7] == "ENDCHAR": - break - bitmap.append(s[:-1]) - bitmap = string.join(bitmap, "") - - [x, y, l, d] = map(int, string.split(props["BBX"])) - [dx, dy] = map(int, string.split(props["DWIDTH"])) - - bbox = (dx, dy), (l, -d-y, x+l, -d), (0, 0, x, y) - - try: - im = Image.fromstring("1", (x, y), bitmap, "hex", "1") - except ValueError: - # deal with zero-width characters - im = Image.new("1", (x, y)) - - return id, int(props["ENCODING"]), bbox, im - -## -# Font file plugin for the X11 BDF format. - -class BdfFontFile(FontFile.FontFile): - - def __init__(self, fp): - - FontFile.FontFile.__init__(self) - - s = fp.readline() - if s[:13] != "STARTFONT 2.1": - raise SyntaxError, "not a valid BDF file" - - props = {} - comments = [] - - while 1: - s = fp.readline() - if not s or s[:13] == "ENDPROPERTIES": - break - i = string.find(s, " ") - props[s[:i]] = s[i+1:-1] - if s[:i] in ["COMMENT", "COPYRIGHT"]: - if string.find(s, "LogicalFontDescription") < 0: - comments.append(s[i+1:-1]) - - font = string.split(props["FONT"], "-") - - font[4] = bdf_slant[string.upper(font[4])] - font[11] = bdf_spacing[string.upper(font[11])] - - ascent = int(props["FONT_ASCENT"]) - descent = int(props["FONT_DESCENT"]) - - fontname = string.join(font[1:], ";") - - # print "#", fontname - # for i in comments: - # print "#", i - - font = [] - while 1: - c = bdf_char(fp) - if not c: - break - id, ch, (xy, dst, src), im = c - if ch >= 0 and ch < len(self.glyph): - self.glyph[ch] = xy, dst, src, im diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py deleted file mode 100755 index 09c0a2141d3..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BmpImagePlugin.py +++ /dev/null @@ -1,251 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# BMP file handler -# -# Windows (and OS/2) native bitmap storage format. -# -# history: -# 1995-09-01 fl Created -# 1996-04-30 fl Added save -# 1997-08-27 fl Fixed save of 1-bit images -# 1998-03-06 fl Load P images as L where possible -# 1998-07-03 fl Load P images as 1 where possible -# 1998-12-29 fl Handle small palettes -# 2002-12-30 fl Fixed load of 1-bit palette images -# 2003-04-21 fl Fixed load of 1-bit monochrome images -# 2003-04-23 fl Added limited support for BI_BITFIELDS compression -# -# Copyright (c) 1997-2003 by Secret Labs AB -# Copyright (c) 1995-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.7" - - -import string -import Image, ImageFile, ImagePalette - - -# -# -------------------------------------------------------------------- -# Read BMP file - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - - -BIT2MODE = { - # bits => mode, rawmode - 1: ("P", "P;1"), - 4: ("P", "P;4"), - 8: ("P", "P"), - 16: ("RGB", "BGR;15"), - 24: ("RGB", "BGR"), - 32: ("RGB", "BGRX") -} - -def _accept(prefix): - return prefix[:2] == "BM" - -## -# Image plugin for the Windows BMP format. - -class BmpImageFile(ImageFile.ImageFile): - - format = "BMP" - format_description = "Windows Bitmap" - - def _bitmap(self, header = 0, offset = 0): - - if header: - self.fp.seek(header) - - read = self.fp.read - - # CORE/INFO - s = read(4) - s = s + ImageFile._safe_read(self.fp, i32(s)-4) - - if len(s) == 12: - - # OS/2 1.0 CORE - bits = i16(s[10:]) - self.size = i16(s[4:]), i16(s[6:]) - compression = 0 - lutsize = 3 - colors = 0 - direction = -1 - - elif len(s) in [40, 64]: - - # WIN 3.1 or OS/2 2.0 INFO - bits = i16(s[14:]) - self.size = i32(s[4:]), i32(s[8:]) - compression = i32(s[16:]) - lutsize = 4 - colors = i32(s[32:]) - direction = -1 - if s[11] == '\xff': - # upside-down storage - self.size = self.size[0], 2**32 - self.size[1] - direction = 0 - - else: - raise IOError("Unsupported BMP header type (%d)" % len(s)) - - if not colors: - colors = 1 << bits - - # MODE - try: - self.mode, rawmode = BIT2MODE[bits] - except KeyError: - raise IOError("Unsupported BMP pixel depth (%d)" % bits) - - if compression == 3: - # BI_BITFIELDS compression - mask = i32(read(4)), i32(read(4)), i32(read(4)) - if bits == 32 and mask == (0xff0000, 0x00ff00, 0x0000ff): - rawmode = "BGRX" - elif bits == 16 and mask == (0x00f800, 0x0007e0, 0x00001f): - rawmode = "BGR;16" - elif bits == 16 and mask == (0x007c00, 0x0003e0, 0x00001f): - rawmode = "BGR;15" - else: - # print bits, map(hex, mask) - raise IOError("Unsupported BMP bitfields layout") - elif compression != 0: - raise IOError("Unsupported BMP compression (%d)" % compression) - - # LUT - if self.mode == "P": - palette = [] - greyscale = 1 - if colors == 2: - indices = (0, 255) - else: - indices = range(colors) - for i in indices: - rgb = read(lutsize)[:3] - if rgb != chr(i)*3: - greyscale = 0 - palette.append(rgb) - if greyscale: - if colors == 2: - self.mode = rawmode = "1" - else: - self.mode = rawmode = "L" - else: - self.mode = "P" - self.palette = ImagePalette.raw( - "BGR", string.join(palette, "") - ) - - if not offset: - offset = self.fp.tell() - - self.tile = [("raw", - (0, 0) + self.size, - offset, - (rawmode, ((self.size[0]*bits+31)>>3)&(~3), direction))] - - self.info["compression"] = compression - - def _open(self): - - # HEAD - s = self.fp.read(14) - if s[:2] != "BM": - raise SyntaxError("Not a BMP file") - offset = i32(s[10:]) - - self._bitmap(offset=offset) - - -class DibImageFile(BmpImageFile): - - format = "DIB" - format_description = "Windows Bitmap" - - def _open(self): - self._bitmap() - -# -# -------------------------------------------------------------------- -# Write BMP file - -def o16(i): - return chr(i&255) + chr(i>>8&255) - -def o32(i): - return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) - -SAVE = { - "1": ("1", 1, 2), - "L": ("L", 8, 256), - "P": ("P", 8, 256), - "RGB": ("BGR", 24, 0), -} - -def _save(im, fp, filename, check=0): - - try: - rawmode, bits, colors = SAVE[im.mode] - except KeyError: - raise IOError("cannot write mode %s as BMP" % im.mode) - - if check: - return check - - stride = ((im.size[0]*bits+7)/8+3)&(~3) - header = 40 # or 64 for OS/2 version 2 - offset = 14 + header + colors * 4 - image = stride * im.size[1] - - # bitmap header - fp.write("BM" + # file type (magic) - o32(offset+image) + # file size - o32(0) + # reserved - o32(offset)) # image data offset - - # bitmap info header - fp.write(o32(header) + # info header size - o32(im.size[0]) + # width - o32(im.size[1]) + # height - o16(1) + # planes - o16(bits) + # depth - o32(0) + # compression (0=uncompressed) - o32(image) + # size of bitmap - o32(1) + o32(1) + # resolution - o32(colors) + # colors used - o32(colors)) # colors important - - fp.write("\000" * (header - 40)) # padding (for OS/2 format) - - if im.mode == "1": - for i in (0, 255): - fp.write(chr(i) * 4) - elif im.mode == "L": - for i in range(256): - fp.write(chr(i) * 4) - elif im.mode == "P": - fp.write(im.im.getpalette("RGB", "BGRX")) - - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, stride, -1))]) - -# -# -------------------------------------------------------------------- -# Registry - -Image.register_open(BmpImageFile.format, BmpImageFile, _accept) -Image.register_save(BmpImageFile.format, _save) - -Image.register_extension(BmpImageFile.format, ".bmp") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py deleted file mode 100755 index 4b111b393ab..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/BufrStubImagePlugin.py +++ /dev/null @@ -1,68 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# BUFR stub adapter -# -# Copyright (c) 1996-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFile - -_handler = None - -## -# Install application-specific BUFR image handler. -# -# @param handler Handler object. - -def register_handler(handler): - global _handler - _handler = handler - -# -------------------------------------------------------------------- -# Image adapter - -def _accept(prefix): - return prefix[:4] == "BUFR" or prefix[:4] == "ZCZC" - -class BufrStubImageFile(ImageFile.StubImageFile): - - format = "BUFR" - format_description = "BUFR" - - def _open(self): - - offset = self.fp.tell() - - if not _accept(self.fp.read(8)): - raise SyntaxError("Not a BUFR file") - - self.fp.seek(offset) - - # make something up - self.mode = "F" - self.size = 1, 1 - - loader = self._load() - if loader: - loader.open(self) - - def _load(self): - return _handler - -def _save(im, fp, filename): - if _handler is None or not hasattr("_handler", "save"): - raise IOError("BUFR save handler not installed") - _handler.save(im, fp, filename) - - -# -------------------------------------------------------------------- -# Registry - -Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) -Image.register_save(BufrStubImageFile.format, _save) - -Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py deleted file mode 100755 index dff50e6bfda..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ContainerIO.py +++ /dev/null @@ -1,116 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# a class to read from a container file -# -# History: -# 1995-06-18 fl Created -# 1995-09-07 fl Added readline(), readlines() -# -# Copyright (c) 1997-2001 by Secret Labs AB -# Copyright (c) 1995 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -## -# A file object that provides read access to a part of an existing -# file (for example a TAR file). - -class ContainerIO: - - ## - # Create file object. - # - # @param file Existing file. - # @param offset Start of region, in bytes. - # @param length Size of region, in bytes. - - def __init__(self, file, offset, length): - self.fh = file - self.pos = 0 - self.offset = offset - self.length = length - self.fh.seek(offset) - - ## - # Always false. - - def isatty(self): - return 0 - - ## - # Move file pointer. - # - # @param offset Offset in bytes. - # @param mode Starting position. Use 0 for beginning of region, 1 - # for current offset, and 2 for end of region. You cannot move - # the pointer outside the defined region. - - def seek(self, offset, mode = 0): - if mode == 1: - self.pos = self.pos + offset - elif mode == 2: - self.pos = self.length + offset - else: - self.pos = offset - # clamp - self.pos = max(0, min(self.pos, self.length)) - self.fh.seek(self.offset + self.pos) - - ## - # Get current file pointer. - # - # @return Offset from start of region, in bytes. - - def tell(self): - return self.pos - - ## - # Read data. - # - # @def read(bytes=0) - # @param bytes Number of bytes to read. If omitted or zero, - # read until end of region. - # @return An 8-bit string. - - def read(self, n = 0): - if n: - n = min(n, self.length - self.pos) - else: - n = self.length - self.pos - if not n: # EOF - return "" - self.pos = self.pos + n - return self.fh.read(n) - - ## - # Read a line of text. - # - # @return An 8-bit string. - - def readline(self): - s = "" - while 1: - c = self.read(1) - if not c: - break - s = s + c - if c == "\n": - break - return s - - ## - # Read multiple lines of text. - # - # @return A list of 8-bit strings. - - def readlines(self): - l = [] - while 1: - s = self.readline() - if not s: - break - l.append(s) - return l diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py deleted file mode 100755 index 6a126e701c5..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/CurImagePlugin.py +++ /dev/null @@ -1,88 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# Windows Cursor support for PIL -# -# notes: -# uses BmpImagePlugin.py to read the bitmap data. -# -# history: -# 96-05-27 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.1" - -import Image, BmpImagePlugin - - -# -# -------------------------------------------------------------------- - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - - -def _accept(prefix): - return prefix[:4] == "\0\0\2\0" - -## -# Image plugin for Windows Cursor files. - -class CurImageFile(BmpImagePlugin.BmpImageFile): - - format = "CUR" - format_description = "Windows Cursor" - - def _open(self): - - offset = self.fp.tell() - - # check magic - s = self.fp.read(6) - if not _accept(s): - raise SyntaxError, "not an CUR file" - - # pick the largest cursor in the file - m = "" - for i in range(i16(s[4:])): - s = self.fp.read(16) - if not m: - m = s - elif ord(s[0]) > ord(m[0]) and ord(s[1]) > ord(m[1]): - m = s - #print "width", ord(s[0]) - #print "height", ord(s[1]) - #print "colors", ord(s[2]) - #print "reserved", ord(s[3]) - #print "hotspot x", i16(s[4:]) - #print "hotspot y", i16(s[6:]) - #print "bytes", i32(s[8:]) - #print "offset", i32(s[12:]) - - # load as bitmap - self._bitmap(i32(m[12:]) + offset) - - # patch up the bitmap height - self.size = self.size[0], self.size[1]/2 - d, e, o, a = self.tile[0] - self.tile[0] = d, (0,0)+self.size, o, a - - return - - -# -# -------------------------------------------------------------------- - -Image.register_open("CUR", CurImageFile, _accept) - -Image.register_extension("CUR", ".cur") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py deleted file mode 100755 index 32da7d831a6..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/DcxImagePlugin.py +++ /dev/null @@ -1,78 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# DCX file handling -# -# DCX is a container file format defined by Intel, commonly used -# for fax applications. Each DCX file consists of a directory -# (a list of file offsets) followed by a set of (usually 1-bit) -# PCX files. -# -# History: -# 1995-09-09 fl Created -# 1996-03-20 fl Properly derived from PcxImageFile. -# 1998-07-15 fl Renamed offset attribute to avoid name clash -# 2002-07-30 fl Fixed file handling -# -# Copyright (c) 1997-98 by Secret Labs AB. -# Copyright (c) 1995-96 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.2" - -import Image - -from PcxImagePlugin import PcxImageFile - -MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - -def _accept(prefix): - return i32(prefix) == MAGIC - -## -# Image plugin for the Intel DCX format. - -class DcxImageFile(PcxImageFile): - - format = "DCX" - format_description = "Intel DCX" - - def _open(self): - - # Header - s = self.fp.read(4) - if i32(s) != MAGIC: - raise SyntaxError, "not a DCX file" - - # Component directory - self._offset = [] - for i in range(1024): - offset = i32(self.fp.read(4)) - if not offset: - break - self._offset.append(offset) - - self.__fp = self.fp - self.seek(0) - - def seek(self, frame): - if frame >= len(self._offset): - raise EOFError("attempt to seek outside DCX directory") - self.frame = frame - self.fp = self.__fp - self.fp.seek(self._offset[frame]) - PcxImageFile._open(self) - - def tell(self): - return self.frame - - -Image.register_open("DCX", DcxImageFile, _accept) - -Image.register_extension("DCX", ".dcx") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py deleted file mode 100755 index 1927b32276b..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/EpsImagePlugin.py +++ /dev/null @@ -1,349 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# EPS file handling -# -# History: -# 1995-09-01 fl Created (0.1) -# 1996-05-18 fl Don't choke on "atend" fields, Ghostscript interface (0.2) -# 1996-08-22 fl Don't choke on floating point BoundingBox values -# 1996-08-23 fl Handle files from Macintosh (0.3) -# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) -# 2003-09-07 fl Check gs.close status (from Federico Di Gregorio) (0.5) -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1995-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.5" - -import re, string -import Image, ImageFile - -# -# -------------------------------------------------------------------- - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - -def o32(i): - return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) - -split = re.compile(r"^%%([^:]*):[ \t]*(.*)[ \t]*$") -field = re.compile(r"^%[%!\w]([^:]*)[ \t]*$") - -def Ghostscript(tile, size, fp): - """Render an image using Ghostscript (Unix only)""" - - # Unpack decoder tile - decoder, tile, offset, data = tile[0] - length, bbox = data - - import tempfile, os - - file = tempfile.mktemp() - - # Build ghostscript command - command = ["gs", - "-q", # quite mode - "-g%dx%d" % size, # set output geometry (pixels) - "-dNOPAUSE -dSAFER", # don't pause between pages, safe mode - "-sDEVICE=ppmraw", # ppm driver - "-sOutputFile=%s" % file,# output file - "- >/dev/null 2>/dev/null"] - - command = string.join(command) - - # push data through ghostscript - try: - gs = os.popen(command, "w") - # adjust for image origin - if bbox[0] != 0 or bbox[1] != 0: - gs.write("%d %d translate\n" % (-bbox[0], -bbox[1])) - fp.seek(offset) - while length > 0: - s = fp.read(8192) - if not s: - break - length = length - len(s) - gs.write(s) - status = gs.close() - if status: - raise IOError("gs failed (status %d)" % status) - im = Image.core.open_ppm(file) - finally: - try: os.unlink(file) - except: pass - - return im - - -class PSFile: - """Wrapper that treats either CR or LF as end of line.""" - def __init__(self, fp): - self.fp = fp - self.char = None - def __getattr__(self, id): - v = getattr(self.fp, id) - setattr(self, id, v) - return v - def seek(self, offset, whence=0): - self.char = None - self.fp.seek(offset, whence) - def tell(self): - pos = self.fp.tell() - if self.char: - pos = pos - 1 - return pos - def readline(self): - s = "" - if self.char: - c = self.char - self.char = None - else: - c = self.fp.read(1) - while c not in "\r\n": - s = s + c - c = self.fp.read(1) - if c == "\r": - self.char = self.fp.read(1) - if self.char == "\n": - self.char = None - return s + "\n" - - -def _accept(prefix): - return prefix[:4] == "%!PS" or i32(prefix) == 0xC6D3D0C5L - -## -# Image plugin for Encapsulated Postscript. This plugin supports only -# a few variants of this format. - -class EpsImageFile(ImageFile.ImageFile): - """EPS File Parser for the Python Imaging Library""" - - format = "EPS" - format_description = "Encapsulated Postscript" - - def _open(self): - - # FIXME: should check the first 512 bytes to see if this - # really is necessary (platform-dependent, though...) - - fp = PSFile(self.fp) - - # HEAD - s = fp.read(512) - if s[:4] == "%!PS": - offset = 0 - fp.seek(0, 2) - length = fp.tell() - elif i32(s) == 0xC6D3D0C5L: - offset = i32(s[4:]) - length = i32(s[8:]) - fp.seek(offset) - else: - raise SyntaxError, "not an EPS file" - - fp.seek(offset) - - box = None - - self.mode = "RGB" - self.size = 1, 1 # FIXME: huh? - - # - # Load EPS header - - s = fp.readline() - - while s: - - if len(s) > 255: - raise SyntaxError, "not an EPS file" - - if s[-2:] == '\r\n': - s = s[:-2] - elif s[-1:] == '\n': - s = s[:-1] - - try: - m = split.match(s) - except re.error, v: - raise SyntaxError, "not an EPS file" - - if m: - k, v = m.group(1, 2) - self.info[k] = v - if k == "BoundingBox": - try: - # Note: The DSC spec says that BoundingBox - # fields should be integers, but some drivers - # put floating point values there anyway. - box = map(int, map(float, string.split(v))) - self.size = box[2] - box[0], box[3] - box[1] - self.tile = [("eps", (0,0) + self.size, offset, - (length, box))] - except: - pass - - else: - - m = field.match(s) - - if m: - k = m.group(1) - if k == "EndComments": - break - if k[:8] == "PS-Adobe": - self.info[k[:8]] = k[9:] - else: - self.info[k] = "" - else: - raise IOError, "bad EPS header" - - s = fp.readline() - - if s[:1] != "%": - break - - - # - # Scan for an "ImageData" descriptor - - while s[0] == "%": - - if len(s) > 255: - raise SyntaxError, "not an EPS file" - - if s[-2:] == '\r\n': - s = s[:-2] - elif s[-1:] == '\n': - s = s[:-1] - - if s[:11] == "%ImageData:": - - [x, y, bi, mo, z3, z4, en, id] =\ - string.split(s[11:], maxsplit=7) - - x = int(x); y = int(y) - - bi = int(bi) - mo = int(mo) - - en = int(en) - - if en == 1: - decoder = "eps_binary" - elif en == 2: - decoder = "eps_hex" - else: - break - if bi != 8: - break - if mo == 1: - self.mode = "L" - elif mo == 2: - self.mode = "LAB" - elif mo == 3: - self.mode = "RGB" - else: - break - - if id[:1] == id[-1:] == '"': - id = id[1:-1] - - # Scan forward to the actual image data - while 1: - s = fp.readline() - if not s: - break - if s[:len(id)] == id: - self.size = x, y - self.tile2 = [(decoder, - (0, 0, x, y), - fp.tell(), - 0)] - return - - s = fp.readline() - if not s: - break - - if not box: - raise IOError, "cannot determine EPS bounding box" - - def load(self): - # Load EPS via Ghostscript - if not self.tile: - return - self.im = Ghostscript(self.tile, self.size, self.fp) - self.mode = self.im.mode - self.size = self.im.size - self.tile = [] - -# -# -------------------------------------------------------------------- - -def _save(im, fp, filename, eps=1): - """EPS Writer for the Python Imaging Library.""" - - # - # make sure image data is available - im.load() - - # - # determine postscript image mode - if im.mode == "L": - operator = (8, 1, "image") - elif im.mode == "RGB": - operator = (8, 3, "false 3 colorimage") - elif im.mode == "CMYK": - operator = (8, 4, "false 4 colorimage") - else: - raise ValueError, "image mode is not supported" - - if eps: - # - # write EPS header - fp.write("%!PS-Adobe-3.0 EPSF-3.0\n") - fp.write("%%Creator: PIL 0.1 EpsEncode\n") - #fp.write("%%CreationDate: %s"...) - fp.write("%%%%BoundingBox: 0 0 %d %d\n" % im.size) - fp.write("%%Pages: 1\n") - fp.write("%%EndComments\n") - fp.write("%%Page: 1 1\n") - fp.write("%%ImageData: %d %d " % im.size) - fp.write("%d %d 0 1 1 \"%s\"\n" % operator) - - # - # image header - fp.write("gsave\n") - fp.write("10 dict begin\n") - fp.write("/buf %d string def\n" % (im.size[0] * operator[1])) - fp.write("%d %d scale\n" % im.size) - fp.write("%d %d 8\n" % im.size) # <= bits - fp.write("[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) - fp.write("{ currentfile buf readhexstring pop } bind\n") - fp.write("%s\n" % operator[2]) - - ImageFile._save(im, fp, [("eps", (0,0)+im.size, 0, None)]) - - fp.write("\n%%%%EndBinary\n") - fp.write("grestore end\n") - fp.flush() - -# -# -------------------------------------------------------------------- - -Image.register_open(EpsImageFile.format, EpsImageFile, _accept) - -Image.register_save(EpsImageFile.format, _save) - -Image.register_extension(EpsImageFile.format, ".ps") -Image.register_extension(EpsImageFile.format, ".eps") - -Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py deleted file mode 100755 index b033aad35e8..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ExifTags.py +++ /dev/null @@ -1,157 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# EXIF tags -# -# Copyright (c) 2003 by Secret Labs AB -# -# See the README file for information on usage and redistribution. -# - -## -# This module provides constants and clear-text names for various -# well-known EXIF tags. -## - -## -# Maps EXIF tags to tag names. - -TAGS = { - - # possibly incomplete - 0x0100: "ImageWidth", - 0x0101: "ImageLength", - 0x0102: "BitsPerSample", - 0x0103: "Compression", - 0x0106: "PhotometricInterpretation", - 0x010e: "ImageDescription", - 0x010f: "Make", - 0x0110: "Model", - 0x0111: "StripOffsets", - 0x0112: "Orientation", - 0x0115: "SamplesPerPixel", - 0x0116: "RowsPerStrip", - 0x0117: "StripByteConunts", - 0x011a: "XResolution", - 0x011a: "XResolution", - 0x011b: "YResolution", - 0x011b: "YResolution", - 0x011c: "PlanarConfiguration", - 0x0128: "ResolutionUnit", - 0x0128: "ResolutionUnit", - 0x012d: "TransferFunction", - 0x0131: "Software", - 0x0132: "DateTime", - 0x013b: "Artist", - 0x013e: "WhitePoint", - 0x013f: "PrimaryChromaticities", - 0x0201: "JpegIFOffset", - 0x0202: "JpegIFByteCount", - 0x0211: "YCbCrCoefficients", - 0x0211: "YCbCrCoefficients", - 0x0212: "YCbCrSubSampling", - 0x0213: "YCbCrPositioning", - 0x0213: "YCbCrPositioning", - 0x0214: "ReferenceBlackWhite", - 0x0214: "ReferenceBlackWhite", - 0x1000: "RelatedImageFileFormat", - 0x1001: "RelatedImageLength", - 0x1001: "RelatedImageWidth", - 0x828d: "CFARepeatPatternDim", - 0x828e: "CFAPattern", - 0x828f: "BatteryLevel", - 0x8298: "Copyright", - 0x829a: "ExposureTime", - 0x829d: "FNumber", - 0x8769: "ExifOffset", - 0x8773: "InterColorProfile", - 0x8822: "ExposureProgram", - 0x8824: "SpectralSensitivity", - 0x8825: "GPSInfo", - 0x8827: "ISOSpeedRatings", - 0x8828: "OECF", - 0x8829: "Interlace", - 0x882a: "TimeZoneOffset", - 0x882b: "SelfTimerMode", - 0x9000: "ExifVersion", - 0x9003: "DateTimeOriginal", - 0x9004: "DateTimeDigitized", - 0x9101: "ComponentsConfiguration", - 0x9102: "CompressedBitsPerPixel", - 0x9201: "ShutterSpeedValue", - 0x9202: "ApertureValue", - 0x9203: "BrightnessValue", - 0x9204: "ExposureBiasValue", - 0x9205: "MaxApertureValue", - 0x9206: "SubjectDistance", - 0x9207: "MeteringMode", - 0x9208: "LightSource", - 0x9209: "Flash", - 0x920a: "FocalLength", - 0x920b: "FlashEnergy", - 0x920c: "SpatialFrequencyResponse", - 0x920d: "Noise", - 0x9211: "ImageNumber", - 0x9212: "SecurityClassification", - 0x9213: "ImageHistory", - 0x9214: "SubjectLocation", - 0x9215: "ExposureIndex", - 0x9216: "TIFF/EPStandardID", - 0x927c: "MakerNote", - 0x9286: "UserComment", - 0x9290: "SubsecTime", - 0x9291: "SubsecTimeOriginal", - 0x9292: "SubsecTimeDigitized", - 0xa000: "FlashPixVersion", - 0xa001: "ColorSpace", - 0xa002: "ExifImageWidth", - 0xa003: "ExifImageHeight", - 0xa004: "RelatedSoundFile", - 0xa005: "ExifInteroperabilityOffset", - 0xa20b: "FlashEnergy", - 0xa20c: "SpatialFrequencyResponse", - 0xa20e: "FocalPlaneXResolution", - 0xa20f: "FocalPlaneYResolution", - 0xa210: "FocalPlaneResolutionUnit", - 0xa214: "SubjectLocation", - 0xa215: "ExposureIndex", - 0xa217: "SensingMethod", - 0xa300: "FileSource", - 0xa301: "SceneType", - 0xa302: "CFAPattern", - -} - -## -# Maps EXIF GSP tags to tag names. - -GPSTAGS = { - 0: "GPSVersionID", - 1: "GPSLatitudeRef", - 2: "GPSLatitude", - 3: "GPSLongitudeRef", - 4: "GPSLongitude", - 5: "GPSAltitudeRef", - 6: "GPSAltitude", - 7: "GPSTimeStamp", - 8: "GPSSatellites", - 9: "GPSStatus", - 10: "GPSMeasureMode", - 11: "GPSDOP", - 12: "GPSSpeedRef", - 13: "GPSSpeed", - 14: "GPSTrackRef", - 15: "GPSTrack", - 16: "GPSImgDirectionRef", - 17: "GPSImgDirection", - 18: "GPSMapDatum", - 19: "GPSDestLatitudeRef", - 20: "GPSDestLatitude", - 21: "GPSDestLongitudeRef", - 22: "GPSDestLongitude", - 23: "GPSDestBearingRef", - 24: "GPSDestBearing", - 25: "GPSDestDistanceRef", - 26: "GPSDestDistance" -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py deleted file mode 100755 index ac8be80a908..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FitsStubImagePlugin.py +++ /dev/null @@ -1,73 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# FITS stub adapter -# -# Copyright (c) 1998-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFile - -_handler = None - -## -# Install application-specific FITS image handler. -# -# @param handler Handler object. - -def register_handler(handler): - global _handler - _handler = handler - -# -------------------------------------------------------------------- -# Image adapter - -def _accept(prefix): - return prefix[:6] == "SIMPLE" - -class FITSStubImageFile(ImageFile.StubImageFile): - - format = "FITS" - format_description = "FITS" - - def _open(self): - - offset = self.fp.tell() - - if not _accept(self.fp.read(6)): - raise SyntaxError("Not a FITS file") - - # FIXME: add more sanity checks here; mandatory header items - # include SIMPLE, BITPIX, NAXIS, etc. - - self.fp.seek(offset) - - # make something up - self.mode = "F" - self.size = 1, 1 - - loader = self._load() - if loader: - loader.open(self) - - def _load(self): - return _handler - - -def _save(im, fp, filename): - if _handler is None or not hasattr("_handler", "save"): - raise IOError("FITS save handler not installed") - _handler.save(im, fp, filename) - - -# -------------------------------------------------------------------- -# Registry - -Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept) -Image.register_save(FITSStubImageFile.format, _save) - -Image.register_extension(FITSStubImageFile.format, ".fit") -Image.register_extension(FITSStubImageFile.format, ".fits") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py deleted file mode 100755 index 706c36a7f68..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FliImagePlugin.py +++ /dev/null @@ -1,142 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# FLI/FLC file handling. -# -# History: -# 95-09-01 fl Created -# 97-01-03 fl Fixed parser, setup decoder tile -# 98-07-15 fl Renamed offset attribute to avoid name clash -# -# Copyright (c) Secret Labs AB 1997-98. -# Copyright (c) Fredrik Lundh 1995-97. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.2" - -import Image, ImageFile, ImagePalette -import string - - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - -# -# decoder - -def _accept(prefix): - return i16(prefix[4:6]) in [0xAF11, 0xAF12] - -## -# Image plugin for the FLI/FLC animation format. Use the seek -# method to load individual frames. - -class FliImageFile(ImageFile.ImageFile): - - format = "FLI" - format_description = "Autodesk FLI/FLC Animation" - - def _open(self): - - # HEAD - s = self.fp.read(128) - magic = i16(s[4:6]) - if magic not in [0xAF11, 0xAF12]: - raise SyntaxError, "not an FLI/FLC file" - - # image characteristics - self.mode = "P" - self.size = i16(s[8:10]), i16(s[10:12]) - - # animation speed - duration = i32(s[16:20]) - if magic == 0xAF11: - duration = (duration * 1000) / 70 - self.info["duration"] = duration - - # look for palette - palette = map(lambda a: (a,a,a), range(256)) - - s = self.fp.read(16) - - self.__offset = 128 - - if i16(s[4:6]) == 0xF100: - # prefix chunk; ignore it - self.__offset = self.__offset + i32(s) - s = self.fp.read(16) - - if i16(s[4:6]) == 0xF1FA: - # look for palette chunk - s = self.fp.read(6) - if i16(s[4:6]) == 11: - self._palette(palette, 2) - elif i16(s[4:6]) == 4: - self._palette(palette, 0) - - palette = map(lambda (r,g,b): chr(r)+chr(g)+chr(b), palette) - self.palette = ImagePalette.raw("RGB", string.join(palette, "")) - - # set things up to decode first frame - self.frame = -1 - self.__fp = self.fp - - self.seek(0) - - def _palette(self, palette, shift): - # load palette - - i = 0 - for e in range(i16(self.fp.read(2))): - s = self.fp.read(2) - i = i + ord(s[0]) - n = ord(s[1]) - if n == 0: - n = 256 - s = self.fp.read(n * 3) - for n in range(0, len(s), 3): - r = ord(s[n]) << shift - g = ord(s[n+1]) << shift - b = ord(s[n+2]) << shift - palette[i] = (r, g, b) - i = i + 1 - - def seek(self, frame): - - if frame != self.frame + 1: - raise ValueError, "cannot seek to frame %d" % frame - self.frame = frame - - # move to next frame - self.fp = self.__fp - self.fp.seek(self.__offset) - - s = self.fp.read(4) - if not s: - raise EOFError - - framesize = i32(s) - - self.decodermaxblock = framesize - self.tile = [("fli", (0,0)+self.size, self.__offset, None)] - - self.__offset = self.__offset + framesize - - def tell(self): - - return self.frame - -# -# registry - -Image.register_open("FLI", FliImageFile, _accept) - -Image.register_extension("FLI", ".fli") -Image.register_extension("FLI", ".flc") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py deleted file mode 100755 index d9d8eb38a69..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FontFile.py +++ /dev/null @@ -1,146 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# base class for raster font file parsers -# -# history: -# 1997-06-05 fl created -# 1997-08-19 fl restrict image width -# -# Copyright (c) 1997-1998 by Secret Labs AB -# Copyright (c) 1997-1998 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import os -import Image - -import marshal - -try: - import zlib -except ImportError: - zlib = None - -WIDTH = 800 - -def puti16(fp, values): - # write network order (big-endian) 16-bit sequence - for v in values: - if v < 0: - v = v + 65536 - fp.write(chr(v>>8&255) + chr(v&255)) - -## -# Base class for raster font file handlers. - -class FontFile: - - bitmap = None - - def __init__(self): - - self.info = {} - self.glyph = [None] * 256 - - def __getitem__(self, ix): - return self.glyph[ix] - - def compile(self): - "Create metrics and bitmap" - - if self.bitmap: - return - - # create bitmap large enough to hold all data - h = w = maxwidth = 0 - lines = 1 - for glyph in self: - if glyph: - d, dst, src, im = glyph - h = max(h, src[3] - src[1]) - w = w + (src[2] - src[0]) - if w > WIDTH: - lines = lines + 1 - w = (src[2] - src[0]) - maxwidth = max(maxwidth, w) - - xsize = maxwidth - ysize = lines * h - - if xsize == 0 and ysize == 0: - return "" - - self.ysize = h - - # paste glyphs into bitmap - self.bitmap = Image.new("1", (xsize, ysize)) - self.metrics = [None] * 256 - x = y = 0 - for i in range(256): - glyph = self[i] - if glyph: - d, dst, src, im = glyph - xx, yy = src[2] - src[0], src[3] - src[1] - x0, y0 = x, y - x = x + xx - if x > WIDTH: - x, y = 0, y + h - x0, y0 = x, y - x = xx - s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 - self.bitmap.paste(im.crop(src), s) - # print chr(i), dst, s - self.metrics[i] = d, dst, s - - - def save1(self, filename): - "Save font in version 1 format" - - self.compile() - - # font data - self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") - - # font metrics - fp = open(os.path.splitext(filename)[0] + ".pil", "wb") - fp.write("PILfont\n") - fp.write(";;;;;;%d;\n" % self.ysize) # HACK!!! - fp.write("DATA\n") - for id in range(256): - m = self.metrics[id] - if not m: - puti16(fp, [0] * 10) - else: - puti16(fp, m[0] + m[1] + m[2]) - fp.close() - - - def save2(self, filename): - "Save font in version 2 format" - - # THIS IS WORK IN PROGRESS - - self.compile() - - data = marshal.dumps((self.metrics, self.info)) - - if zlib: - data = "z" + zlib.compress(data, 9) - else: - data = "u" + data - - fp = open(os.path.splitext(filename)[0] + ".pil", "wb") - - fp.write("PILfont2\n" + self.name + "\n" + "DATA\n") - - fp.write(data) - - self.bitmap.save(fp, "PNG") - - fp.close() - - - save = save1 # for now diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py deleted file mode 100755 index b78fe8c70e9..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/FpxImagePlugin.py +++ /dev/null @@ -1,224 +0,0 @@ -# -# THIS IS WORK IN PROGRESS -# -# The Python Imaging Library. -# $Id$ -# -# FlashPix support for PIL -# -# History: -# 97-01-25 fl Created (reads uncompressed RGB images only) -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.1" - - -import Image, ImageFile -from OleFileIO import * - - -# we map from colour field tuples to (mode, rawmode) descriptors -MODES = { - # opacity - (0x00007ffe): ("A", "L"), - # monochrome - (0x00010000,): ("L", "L"), - (0x00018000, 0x00017ffe): ("RGBA", "LA"), - # photo YCC - (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), - (0x00028000, 0x00028001, 0x00028002, 0x00027ffe): ("RGBA", "YCCA;P"), - # standard RGB (NIFRGB) - (0x00030000, 0x00030001, 0x00030002): ("RGB","RGB"), - (0x00038000, 0x00038001, 0x00038002, 0x00037ffe): ("RGBA","RGBA"), -} - -# -# -------------------------------------------------------------------- - -def _accept(prefix): - return prefix[:8] == MAGIC - -## -# Image plugin for the FlashPix images. - -class FpxImageFile(ImageFile.ImageFile): - - format = "FPX" - format_description = "FlashPix" - - def _open(self): - # - # read the OLE directory and see if this is a likely - # to be a FlashPix file - - try: - self.ole = OleFileIO(self.fp) - except IOError: - raise SyntaxError, "not an FPX file; invalid OLE file" - - if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": - raise SyntaxError, "not an FPX file; bad root CLSID" - - self._open_index(1) - - def _open_index(self, index = 1): - # - # get the Image Contents Property Set - - prop = self.ole.getproperties([ - "Data Object Store %06d" % index, - "\005Image Contents" - ]) - - # size (highest resolution) - - self.size = prop[0x1000002], prop[0x1000003] - - size = max(self.size) - i = 1 - while size > 64: - size = size / 2 - i = i + 1 - self.maxid = i - 1 - - # mode. instead of using a single field for this, flashpix - # requires you to specify the mode for each channel in each - # resolution subimage, and leaves it to the decoder to make - # sure that they all match. for now, we'll cheat and assume - # that this is always the case. - - id = self.maxid << 16 - - s = prop[0x2000002|id] - - colors = [] - for i in range(i32(s, 4)): - # note: for now, we ignore the "uncalibrated" flag - colors.append(i32(s, 8+i*4) & 0x7fffffff) - - self.mode, self.rawmode = MODES[tuple(colors)] - - # load JPEG tables, if any - self.jpeg = {} - for i in range(256): - id = 0x3000001|(i << 16) - if prop.has_key(id): - self.jpeg[i] = prop[id] - - # print len(self.jpeg), "tables loaded" - - self._open_subimage(1, self.maxid) - - def _open_subimage(self, index = 1, subimage = 0): - # - # setup tile descriptors for a given subimage - - stream = [ - "Data Object Store %06d" % index, - "Resolution %04d" % subimage, - "Subimage 0000 Header" - ] - - fp = self.ole.openstream(stream) - - # skip prefix - p = fp.read(28) - - # header stream - s = fp.read(36) - - size = i32(s, 4), i32(s, 8) - tilecount = i32(s, 12) - tilesize = i32(s, 16), i32(s, 20) - channels = i32(s, 24) - offset = i32(s, 28) - length = i32(s, 32) - - # print size, self.mode, self.rawmode - - if size != self.size: - raise IOError, "subimage mismatch" - - # get tile descriptors - fp.seek(28 + offset) - s = fp.read(i32(s, 12) * length) - - x = y = 0 - xsize, ysize = size - xtile, ytile = tilesize - self.tile = [] - - for i in range(0, len(s), length): - - compression = i32(s, i+8) - - if compression == 0: - self.tile.append(("raw", (x,y,x+xtile,y+ytile), - i32(s, i) + 28, (self.rawmode))) - - elif compression == 1: - - # FIXME: the fill decoder is not implemented - self.tile.append(("fill", (x,y,x+xtile,y+ytile), - i32(s, i) + 28, (self.rawmode, s[12:16]))) - - elif compression == 2: - - internal_color_conversion = ord(s[14]) - jpeg_tables = ord(s[15]) - rawmode = self.rawmode - - if internal_color_conversion: - # The image is stored as usual (usually YCbCr). - if rawmode == "RGBA": - # For "RGBA", data is stored as YCbCrA based on - # negative RGB. The following trick works around - # this problem : - jpegmode, rawmode = "YCbCrK", "CMYK" - else: - jpegmode = None # let the decoder decide - - else: - # The image is stored as defined by rawmode - jpegmode = rawmode - - self.tile.append(("jpeg", (x,y,x+xtile,y+ytile), - i32(s, i) + 28, (rawmode, jpegmode))) - - # FIXME: jpeg tables are tile dependent; the prefix - # data must be placed in the tile descriptor itself! - - if jpeg_tables: - self.tile_prefix = self.jpeg[jpeg_tables] - - else: - raise IOError, "unknown/invalid compression" - - x = x + xtile - if x >= xsize: - x, y = 0, y + ytile - if y >= ysize: - break # isn't really required - - self.stream = stream - self.fp = None - - def load(self): - - if not self.fp: - self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) - - ImageFile.ImageFile.load(self) - -# -# -------------------------------------------------------------------- - -Image.register_open("FPX", FpxImageFile, _accept) - -Image.register_extension("FPX", ".fpx") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py deleted file mode 100755 index c71a0f77f9c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GbrImagePlugin.py +++ /dev/null @@ -1,70 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# load a GIMP brush file -# -# History: -# 96-03-14 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFile - -def i32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24L) - -def _accept(prefix): - return i32(prefix) >= 20 and i32(prefix[4:8]) == 1 - -## -# Image plugin for the GIMP brush format. - -class GbrImageFile(ImageFile.ImageFile): - - format = "GBR" - format_description = "GIMP brush file" - - def _open(self): - - header_size = i32(self.fp.read(4)) - version = i32(self.fp.read(4)) - if header_size < 20 or version != 1: - raise SyntaxError, "not a GIMP brush" - - width = i32(self.fp.read(4)) - height = i32(self.fp.read(4)) - bytes = i32(self.fp.read(4)) - if width <= 0 or height <= 0 or bytes != 1: - raise SyntaxError, "not a GIMP brush" - - comment = self.fp.read(header_size - 20)[:-1] - - self.mode = "L" - self.size = width, height - - self.info["comment"] = comment - - # Since the brush is so small, we read the data immediately - self.data = self.fp.read(width * height) - - def load(self): - - if not self.data: - return - - # create an image out of the brush data block - self.im = Image.core.new(self.mode, self.size) - self.im.fromstring(self.data) - self.data = "" - -# -# registry - -Image.register_open("GBR", GbrImageFile, _accept) - -Image.register_extension("GBR", ".gbr") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py deleted file mode 100755 index b5f1dd25d79..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GdImageFile.py +++ /dev/null @@ -1,85 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# GD file handling -# -# History: -# 1996-04-12 fl Created -# -# Copyright (c) 1997 by Secret Labs AB. -# Copyright (c) 1996 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - - -# NOTE: This format cannot be automatically recognized, so the -# class is not registered for use with Image.open(). To open a -# gd file, use the GdImageFile.open() function instead. - -# THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This -# implementation is provided for convenience and demonstrational -# purposes only. - - -__version__ = "0.1" - -import ImageFile, ImagePalette - -def i16(c): - return ord(c[1]) + (ord(c[0])<<8) - -## -# Image plugin for the GD uncompressed format. Note that this format -# is not supported by the standard Image.open function. To use -# this plugin, you have to import the GdImageFile module and -# use the GdImageFile.open function. - -class GdImageFile(ImageFile.ImageFile): - - format = "GD" - format_description = "GD uncompressed images" - - def _open(self): - - # Header - s = self.fp.read(775) - - self.mode = "L" # FIXME: "P" - self.size = i16(s[0:2]), i16(s[2:4]) - - # transparency index - tindex = i16(s[5:7]) - if tindex < 256: - self.info["transparent"] = tindex - - self.palette = ImagePalette.raw("RGB", s[7:]) - - self.tile = [("raw", (0,0)+self.size, 775, ("L", 0, -1))] - -## -# Load texture from a GD image file. -# -# @param filename GD file name, or an opened file handle. -# @param mode Optional mode. In this version, if the mode argument -# is given, it must be "r". -# @return An image instance. -# @exception IOError If the image could not be read. - -def open(fp, mode = "r"): - - if mode != "r": - raise ValueError("bad mode") - - if type(fp) == type(""): - import __builtin__ - filename = fp - fp = __builtin__.open(fp, "rb") - else: - filename = "" - - try: - return GdImageFile(fp, filename) - except SyntaxError: - raise IOError("cannot identify this image file") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py deleted file mode 100755 index 4d03493b544..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GifImagePlugin.py +++ /dev/null @@ -1,407 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# GIF file handling -# -# History: -# 1995-09-01 fl Created -# 1996-12-14 fl Added interlace support -# 1996-12-30 fl Added animation support -# 1997-01-05 fl Added write support, fixed local colour map bug -# 1997-02-23 fl Make sure to load raster data in getdata() -# 1997-07-05 fl Support external decoder (0.4) -# 1998-07-09 fl Handle all modes when saving (0.5) -# 1998-07-15 fl Renamed offset attribute to avoid name clash -# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) -# 2001-04-17 fl Added palette optimization (0.7) -# 2002-06-06 fl Added transparency support for save (0.8) -# 2004-02-24 fl Disable interlacing for small images -# -# Copyright (c) 1997-2004 by Secret Labs AB -# Copyright (c) 1995-2004 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.9" - - -import Image, ImageFile, ImagePalette - - -# -------------------------------------------------------------------- -# Helpers - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def o16(i): - return chr(i&255) + chr(i>>8&255) - - -# -------------------------------------------------------------------- -# Identify/read GIF files - -def _accept(prefix): - return prefix[:6] in ["GIF87a", "GIF89a"] - -## -# Image plugin for GIF images. This plugin supports both GIF87 and -# GIF89 images. - -class GifImageFile(ImageFile.ImageFile): - - format = "GIF" - format_description = "Compuserve GIF" - - global_palette = None - - def data(self): - s = self.fp.read(1) - if s and ord(s): - return self.fp.read(ord(s)) - return None - - def _open(self): - - # Screen - s = self.fp.read(13) - if s[:6] not in ["GIF87a", "GIF89a"]: - raise SyntaxError, "not a GIF file" - - self.info["version"] = s[:6] - - self.size = i16(s[6:]), i16(s[8:]) - - self.tile = [] - - flags = ord(s[10]) - - bits = (flags & 7) + 1 - - if flags & 128: - # get global palette - self.info["background"] = ord(s[11]) - # check if palette contains colour indices - p = self.fp.read(3<= 3 and ord(block[0]) == 1: - self.info["loop"] = i16(block[1:3]) - while self.data(): - pass - - elif s == ",": - # - # local image - # - s = self.fp.read(9) - - # extent - x0, y0 = i16(s[0:]), i16(s[2:]) - x1, y1 = x0 + i16(s[4:]), y0 + i16(s[6:]) - flags = ord(s[8]) - - interlace = (flags & 64) != 0 - - if flags & 128: - bits = (flags & 7) + 1 - self.palette =\ - ImagePalette.raw("RGB", self.fp.read(3<%s" % (file, filename)) - else: - os.system("ppmquant 256 %s | ppmtogif >%s" % (file, filename)) - try: os.unlink(file) - except: pass - - -# -------------------------------------------------------------------- -# GIF utilities - -def getheader(im, info=None): - """Return a list of strings representing a GIF header""" - - optimize = info and info.get("optimize", 0) - - s = [ - "GIF87a" + # magic - o16(im.size[0]) + # size - o16(im.size[1]) + - chr(7 + 128) + # flags: bits + palette - chr(0) + # background - chr(0) # reserved/aspect - ] - - if optimize: - # minimize color palette - i = 0 - maxcolor = 0 - for count in im.histogram(): - if count: - maxcolor = i - i = i + 1 - else: - maxcolor = 256 - - # global palette - if im.mode == "P": - # colour palette - s.append(im.im.getpalette("RGB")[:maxcolor*3]) - else: - # greyscale - for i in range(maxcolor): - s.append(chr(i) * 3) - - return s - -def getdata(im, offset = (0, 0), **params): - """Return a list of strings representing this image. - The first string is a local image header, the rest contains - encoded image data.""" - - class collector: - data = [] - def write(self, data): - self.data.append(data) - - im.load() # make sure raster data is available - - fp = collector() - - try: - im.encoderinfo = params - - # local image header - fp.write("," + - o16(offset[0]) + # offset - o16(offset[1]) + - o16(im.size[0]) + # size - o16(im.size[1]) + - chr(0) + # flags - chr(8)) # bits - - ImageFile._save(im, fp, [("gif", (0,0)+im.size, 0, RAWMODE[im.mode])]) - - fp.write("\0") # end of image data - - finally: - del im.encoderinfo - - return fp.data - - -# -------------------------------------------------------------------- -# Registry - -Image.register_open(GifImageFile.format, GifImageFile, _accept) -Image.register_save(GifImageFile.format, _save) -Image.register_extension(GifImageFile.format, ".gif") -Image.register_mime(GifImageFile.format, "image/gif") - -# -# Uncomment the following line if you wish to use NETPBM/PBMPLUS -# instead of the built-in "uncompressed" GIF encoder - -# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py deleted file mode 100755 index 1a850dc53f7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpGradientFile.py +++ /dev/null @@ -1,124 +0,0 @@ -# -# Python Imaging Library -# $Id$ -# -# stuff to read (and render) GIMP gradient files -# -# History: -# 97-08-23 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - -from math import pi, log, sin, sqrt -import string - -# -------------------------------------------------------------------- -# Stuff to translate curve segments to palette values (derived from -# the corresponding code in GIMP, written by Federico Mena Quintero. -# See the GIMP distribution for more information.) -# - -EPSILON = 1e-10 - -def linear(middle, pos): - if pos <= middle: - if middle < EPSILON: - return 0.0 - else: - return 0.5 * pos / middle - else: - pos = pos - middle - middle = 1.0 - middle - if middle < EPSILON: - return 1.0 - else: - return 0.5 + 0.5 * pos / middle - -def curved(middle, pos): - return pos ** (log(0.5) / log(max(middle, EPSILON))) - -def sine(middle, pos): - return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 - -def sphere_increasing(middle, pos): - return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) - -def sphere_decreasing(middle, pos): - return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) - -SEGMENTS = [ linear, curved, sine, sphere_increasing, sphere_decreasing ] - -class GradientFile: - - gradient = None - - def getpalette(self, entries = 256): - - palette = [] - - ix = 0 - x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] - - for i in range(entries): - - x = i / float(entries-1) - - while x1 < x: - ix = ix + 1 - x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] - - w = x1 - x0 - - if w < EPSILON: - scale = segment(0.5, 0.5) - else: - scale = segment((xm - x0) / w, (x - x0) / w) - - # expand to RGBA - r = chr(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) - g = chr(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) - b = chr(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) - a = chr(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) - - # add to palette - palette.append(r + g + b + a) - - return string.join(palette, ""), "RGBA" - -## -# File handler for GIMP's gradient format. - -class GimpGradientFile(GradientFile): - - def __init__(self, fp): - - if fp.readline()[:13] != "GIMP Gradient": - raise SyntaxError, "not a GIMP gradient file" - - count = int(fp.readline()) - - gradient = [] - - for i in range(count): - - s = string.split(fp.readline()) - w = map(float, s[:11]) - - x0, x1 = w[0], w[2] - xm = w[1] - rgb0 = w[3:7] - rgb1 = w[7:11] - - segment = SEGMENTS[int(s[11])] - cspace = int(s[12]) - - if cspace != 0: - raise IOError, "cannot handle HSV colour space" - - gradient.append((x0, x1, xm, rgb0, rgb1, segment)) - - self.gradient = gradient diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py deleted file mode 100755 index aba85b71f33..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GimpPaletteFile.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# Python Imaging Library -# $Id$ -# -# stuff to read GIMP palette files -# -# History: -# 1997-08-23 fl Created -# 2004-09-07 fl Support GIMP 2.0 palette files. -# -# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. -# Copyright (c) Fredrik Lundh 1997-2004. -# -# See the README file for information on usage and redistribution. -# - -import re, string - -## -# File handler for GIMP's palette format. - -class GimpPaletteFile: - - rawmode = "RGB" - - def __init__(self, fp): - - self.palette = map(lambda i: chr(i)*3, range(256)) - - if fp.readline()[:12] != "GIMP Palette": - raise SyntaxError, "not a GIMP palette file" - - i = 0 - - while i <= 255: - - s = fp.readline() - - if not s: - break - # skip fields and comment lines - if re.match("\w+:|#", s): - continue - if len(s) > 100: - raise SyntaxError, "bad palette file" - - v = tuple(map(int, string.split(s)[:3])) - if len(v) != 3: - raise ValueError, "bad palette entry" - - if 0 <= i <= 255: - self.palette[i] = chr(v[0]) + chr(v[1]) + chr(v[2]) - - i = i + 1 - - self.palette = string.join(self.palette, "") - - - def getpalette(self): - - return self.palette, self.rawmode diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py deleted file mode 100755 index e232f90db7e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/GribStubImagePlugin.py +++ /dev/null @@ -1,68 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# GRIB stub adapter -# -# Copyright (c) 1996-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFile - -_handler = None - -## -# Install application-specific GRIB image handler. -# -# @param handler Handler object. - -def register_handler(handler): - global _handler - _handler = handler - -# -------------------------------------------------------------------- -# Image adapter - -def _accept(prefix): - return prefix[0:4] == "GRIB" and prefix[7] == chr(1) - -class GribStubImageFile(ImageFile.StubImageFile): - - format = "GRIB" - format_description = "GRIB" - - def _open(self): - - offset = self.fp.tell() - - if not _accept(self.fp.read(8)): - raise SyntaxError("Not a GRIB file") - - self.fp.seek(offset) - - # make something up - self.mode = "F" - self.size = 1, 1 - - loader = self._load() - if loader: - loader.open(self) - - def _load(self): - return _handler - -def _save(im, fp, filename): - if _handler is None or not hasattr("_handler", "save"): - raise IOError("GRIB save handler not installed") - _handler.save(im, fp, filename) - - -# -------------------------------------------------------------------- -# Registry - -Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) -Image.register_save(GribStubImageFile.format, _save) - -Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py deleted file mode 100755 index bc5e3743339..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Hdf5StubImagePlugin.py +++ /dev/null @@ -1,70 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# HDF5 stub adapter -# -# Copyright (c) 2000-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFile - -_handler = None - -## -# Install application-specific HDF5 image handler. -# -# @param handler Handler object. - -def register_handler(handler): - global _handler - _handler = handler - -# -------------------------------------------------------------------- -# Image adapter - -def _accept(prefix): - return prefix[:8] == "\x89HDF\r\n\x1a\n" - -class HDF5StubImageFile(ImageFile.StubImageFile): - - format = "HDF5" - format_description = "HDF5" - - def _open(self): - - offset = self.fp.tell() - - if not _accept(self.fp.read(8)): - raise SyntaxError("Not an HDF file") - - self.fp.seek(offset) - - # make something up - self.mode = "F" - self.size = 1, 1 - - loader = self._load() - if loader: - loader.open(self) - - def _load(self): - return _handler - - -def _save(im, fp, filename): - if _handler is None or not hasattr("_handler", "save"): - raise IOError("HDF5 save handler not installed") - _handler.save(im, fp, filename) - - -# -------------------------------------------------------------------- -# Registry - -Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) -Image.register_save(HDF5StubImageFile.format, _save) - -Image.register_extension(HDF5StubImageFile.format, ".h5") -Image.register_extension(HDF5StubImageFile.format, ".hdf") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py deleted file mode 100755 index 4d68fa232f9..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcnsImagePlugin.py +++ /dev/null @@ -1,211 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# Mac OS X icns file decoder, based on icns.py by Bob Ippolito. -# -# history: -# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. -# -# Copyright (c) 2004 by Bob Ippolito. -# Copyright (c) 2004 by Secret Labs. -# Copyright (c) 2004 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFile -import string, struct - -HEADERSIZE = 8 - -def nextheader(fobj): - return struct.unpack('>4sI', fobj.read(HEADERSIZE)) - -def read_32t(fobj, (start, length), (width, height)): - # The 128x128 icon seems to have an extra header for some reason. - fobj.seek(start) - sig = fobj.read(4) - if sig != '\x00\x00\x00\x00': - raise SyntaxError, 'Unknown signature, expecting 0x00000000' - return read_32(fobj, (start + 4, length - 4), (width, height)) - -def read_32(fobj, (start, length), size): - """ - Read a 32bit RGB icon resource. Seems to be either uncompressed or - an RLE packbits-like scheme. - """ - fobj.seek(start) - sizesq = size[0] * size[1] - if length == sizesq * 3: - # uncompressed ("RGBRGBGB") - indata = fobj.read(length) - im = Image.frombuffer("RGB", size, indata, "raw", "RGB", 0, 1) - else: - # decode image - im = Image.new("RGB", size, None) - for band_ix in range(3): - data = [] - bytesleft = sizesq - while bytesleft > 0: - byte = fobj.read(1) - if not byte: - break - byte = ord(byte) - if byte & 0x80: - blocksize = byte - 125 - byte = fobj.read(1) - for i in range(blocksize): - data.append(byte) - else: - blocksize = byte + 1 - data.append(fobj.read(blocksize)) - bytesleft = bytesleft - blocksize - if bytesleft <= 0: - break - if bytesleft != 0: - raise SyntaxError( - "Error reading channel [%r left]" % bytesleft - ) - band = Image.frombuffer( - "L", size, string.join(data, ""), "raw", "L", 0, 1 - ) - im.im.putband(band.im, band_ix) - return {"RGB": im} - -def read_mk(fobj, (start, length), size): - # Alpha masks seem to be uncompressed - fobj.seek(start) - band = Image.frombuffer( - "L", size, fobj.read(size[0]*size[1]), "raw", "L", 0, 1 - ) - return {"A": band} - -class IcnsFile: - - SIZES = { - (128, 128): [ - ('it32', read_32t), - ('t8mk', read_mk), - ], - (48, 48): [ - ('ih32', read_32), - ('h8mk', read_mk), - ], - (32, 32): [ - ('il32', read_32), - ('l8mk', read_mk), - ], - (16, 16): [ - ('is32', read_32), - ('s8mk', read_mk), - ], - } - - def __init__(self, fobj): - """ - fobj is a file-like object as an icns resource - """ - # signature : (start, length) - self.dct = dct = {} - self.fobj = fobj - sig, filesize = nextheader(fobj) - if sig != 'icns': - raise SyntaxError, 'not an icns file' - i = HEADERSIZE - while i < filesize: - sig, blocksize = nextheader(fobj) - i = i + HEADERSIZE - blocksize = blocksize - HEADERSIZE - dct[sig] = (i, blocksize) - fobj.seek(blocksize, 1) - i = i + blocksize - - def itersizes(self): - sizes = [] - for size, fmts in self.SIZES.items(): - for (fmt, reader) in fmts: - if self.dct.has_key(fmt): - sizes.append(size) - break - return sizes - - def bestsize(self): - sizes = self.itersizes() - if not sizes: - raise SyntaxError, "No 32bit icon resources found" - return max(sizes) - - def dataforsize(self, size): - """ - Get an icon resource as {channel: array}. Note that - the arrays are bottom-up like windows bitmaps and will likely - need to be flipped or transposed in some way. - """ - dct = {} - for code, reader in self.SIZES[size]: - desc = self.dct.get(code) - if desc is not None: - dct.update(reader(self.fobj, desc, size)) - return dct - - def getimage(self, size=None): - if size is None: - size = self.bestsize() - channels = self.dataforsize(size) - im = channels.get("RGB").copy() - try: - im.putalpha(channels["A"]) - except KeyError: - pass - return im - -## -# Image plugin for Mac OS icons. - -class IcnsImageFile(ImageFile.ImageFile): - """ - PIL read-only image support for Mac OS .icns files. - Chooses the best resolution, but will possibly load - a different size image if you mutate the size attribute - before calling 'load'. - - The info dictionary has a key 'sizes' that is a list - of sizes that the icns file has. - """ - - format = "ICNS" - format_description = "Mac OS icns resource" - - def _open(self): - self.icns = IcnsFile(self.fp) - self.mode = 'RGBA' - self.size = self.icns.bestsize() - self.info['sizes'] = self.icns.itersizes() - # Just use this to see if it's loaded or not yet. - self.tile = ('',) - - def load(self): - Image.Image.load(self) - if not self.tile: - return - self.load_prepare() - # This is likely NOT the best way to do it, but whatever. - im = self.icns.getimage(self.size) - self.im = im.im - self.mode = im.mode - self.size = im.size - self.fp = None - self.icns = None - self.tile = () - self.load_end() - - -Image.register_open("ICNS", IcnsImageFile, lambda x: x[:4] == 'icns') -Image.register_extension("ICNS", '.icns') - -if __name__ == '__main__': - import os, sys - im = Image.open(open(sys.argv[1], "rb")) - im.save("out.png") - os.startfile("out.png") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py deleted file mode 100755 index 94846dc0ca0..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IcoImagePlugin.py +++ /dev/null @@ -1,86 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# Windows Icon support for PIL -# -# Notes: -# uses BmpImagePlugin.py to read the bitmap data. -# -# History: -# 96-05-27 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.1" - -import Image, BmpImagePlugin - - -# -# -------------------------------------------------------------------- - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - - -def _accept(prefix): - return prefix[:4] == "\0\0\1\0" - -## -# Image plugin for Windows Icon files. - -class IcoImageFile(BmpImagePlugin.BmpImageFile): - - format = "ICO" - format_description = "Windows Icon" - - def _open(self): - - # check magic - s = self.fp.read(6) - if not _accept(s): - raise SyntaxError, "not an ICO file" - - # pick the largest icon in the file - m = "" - for i in range(i16(s[4:])): - s = self.fp.read(16) - if not m: - m = s - elif ord(s[0]) > ord(m[0]) and ord(s[1]) > ord(m[1]): - m = s - #print "width", ord(s[0]) - #print "height", ord(s[1]) - #print "colors", ord(s[2]) - #print "reserved", ord(s[3]) - #print "planes", i16(s[4:]) - #print "bitcount", i16(s[6:]) - #print "bytes", i32(s[8:]) - #print "offset", i32(s[12:]) - - # load as bitmap - self._bitmap(i32(m[12:])) - - # patch up the bitmap height - self.size = self.size[0], self.size[1]/2 - d, e, o, a = self.tile[0] - self.tile[0] = d, (0,0)+self.size, o, a - - return - - -# -# -------------------------------------------------------------------- - -Image.register_open("ICO", IcoImageFile, _accept) - -Image.register_extension("ICO", ".ico") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py deleted file mode 100755 index a76dcf04ed3..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImImagePlugin.py +++ /dev/null @@ -1,336 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# IFUNC IM file handling for PIL -# -# history: -# 1995-09-01 fl Created. -# 1997-01-03 fl Save palette images -# 1997-01-08 fl Added sequence support -# 1997-01-23 fl Added P and RGB save support -# 1997-05-31 fl Read floating point images -# 1997-06-22 fl Save floating point images -# 1997-08-27 fl Read and save 1-bit images -# 1998-06-25 fl Added support for RGB+LUT images -# 1998-07-02 fl Added support for YCC images -# 1998-07-15 fl Renamed offset attribute to avoid name clash -# 1998-12-29 fl Added I;16 support -# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) -# 2003-09-26 fl Added LA/PA support -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1995-2001 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.7" - -import re, string -import Image, ImageFile, ImagePalette - - -# -------------------------------------------------------------------- -# Standard tags - -COMMENT = "Comment" -DATE = "Date" -EQUIPMENT = "Digitalization equipment" -FRAMES = "File size (no of images)" -LUT = "Lut" -NAME = "Name" -SCALE = "Scale (x,y)" -SIZE = "Image size (x*y)" -MODE = "Image type" - -TAGS = { COMMENT:0, DATE:0, EQUIPMENT:0, FRAMES:0, LUT:0, NAME:0, - SCALE:0, SIZE:0, MODE:0 } - -OPEN = { - # ifunc93/p3cfunc formats - "0 1 image": ("1", "1"), - "L 1 image": ("1", "1"), - "Greyscale image": ("L", "L"), - "Grayscale image": ("L", "L"), - "RGB image": ("RGB", "RGB;L"), - "RLB image": ("RGB", "RLB"), - "RYB image": ("RGB", "RLB"), - "B1 image": ("1", "1"), - "B2 image": ("P", "P;2"), - "B4 image": ("P", "P;4"), - "X 24 image": ("RGB", "RGB"), - "L 32 S image": ("I", "I;32"), - "L 32 F image": ("F", "F;32"), - # old p3cfunc formats - "RGB3 image": ("RGB", "RGB;T"), - "RYB3 image": ("RGB", "RYB;T"), - # extensions - "LA image": ("LA", "LA;L"), - "RGBA image": ("RGBA", "RGBA;L"), - "RGBX image": ("RGBX", "RGBX;L"), - "CMYK image": ("CMYK", "CMYK;L"), - "YCC image": ("YCbCr", "YCbCr;L"), -} - -# ifunc95 extensions -for i in ["8", "8S", "16", "16S", "32", "32F"]: - OPEN["L %s image" % i] = ("F", "F;%s" % i) - OPEN["L*%s image" % i] = ("F", "F;%s" % i) -for i in ["16", "16L", "16B"]: - OPEN["L %s image" % i] = ("I;%s" % i, "I;%s" % i) - OPEN["L*%s image" % i] = ("I;%s" % i, "I;%s" % i) -for i in ["32S"]: - OPEN["L %s image" % i] = ("I", "I;%s" % i) - OPEN["L*%s image" % i] = ("I", "I;%s" % i) -for i in range(2, 33): - OPEN["L*%s image" % i] = ("F", "F;%s" % i) - - -# -------------------------------------------------------------------- -# Read IM directory - -split = re.compile(r"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") - -def number(s): - try: - return int(s) - except ValueError: - return float(s) - -## -# Image plugin for the IFUNC IM file format. - -class ImImageFile(ImageFile.ImageFile): - - format = "IM" - format_description = "IFUNC Image Memory" - - def _open(self): - - # Quick rejection: if there's not an LF among the first - # 100 bytes, this is (probably) not a text header. - - if not "\n" in self.fp.read(100): - raise SyntaxError, "not an IM file" - self.fp.seek(0) - - n = 0 - - # Default values - self.info[MODE] = "L" - self.info[SIZE] = (512, 512) - self.info[FRAMES] = 1 - - self.rawmode = "L" - - while 1: - - s = self.fp.read(1) - - # Some versions of IFUNC uses \n\r instead of \r\n... - if s == "\r": - continue - - if not s or s[0] == chr(0) or s[0] == chr(26): - break - - # FIXME: this may read whole file if not a text file - s = s + self.fp.readline() - - if len(s) > 100: - raise SyntaxError, "not an IM file" - - if s[-2:] == '\r\n': - s = s[:-2] - elif s[-1:] == '\n': - s = s[:-1] - - try: - m = split.match(s) - except re.error, v: - raise SyntaxError, "not an IM file" - - if m: - - k, v = m.group(1,2) - - # Convert value as appropriate - if k in [FRAMES, SCALE, SIZE]: - v = string.replace(v, "*", ",") - v = tuple(map(number, string.split(v, ","))) - if len(v) == 1: - v = v[0] - elif k == MODE and OPEN.has_key(v): - v, self.rawmode = OPEN[v] - - # Add to dictionary. Note that COMMENT tags are - # combined into a list of strings. - if k == COMMENT: - if self.info.has_key(k): - self.info[k].append(v) - else: - self.info[k] = [v] - else: - self.info[k] = v - - if TAGS.has_key(k): - n = n + 1 - - else: - - raise SyntaxError, "Syntax error in IM header: " + s - - if not n: - raise SyntaxError, "Not an IM file" - - # Basic attributes - self.size = self.info[SIZE] - self.mode = self.info[MODE] - - # Skip forward to start of image data - while s and s[0] != chr(26): - s = self.fp.read(1) - if not s: - raise SyntaxError, "File truncated" - - if self.info.has_key(LUT): - # convert lookup table to palette or lut attribute - palette = self.fp.read(768) - greyscale = 1 # greyscale palette - linear = 1 # linear greyscale palette - for i in range(256): - if palette[i] == palette[i+256] == palette[i+512]: - if palette[i] != chr(i): - linear = 0 - else: - greyscale = 0 - if self.mode == "L" or self.mode == "LA": - if greyscale: - if not linear: - self.lut = map(ord, palette[:256]) - else: - if self.mode == "L": - self.mode = self.rawmode = "P" - elif self.mode == "LA": - self.mode = self.rawmode = "PA" - self.palette = ImagePalette.raw("RGB;L", palette) - elif self.mode == "RGB": - if not greyscale or not linear: - self.lut = map(ord, palette) - - self.frame = 0 - - self.__offset = offs = self.fp.tell() - - self.__fp = self.fp # FIXME: hack - - if self.rawmode[:2] == "F;": - - # ifunc95 formats - try: - # use bit decoder (if necessary) - bits = int(self.rawmode[2:]) - if bits not in [8, 16, 32]: - self.tile = [("bit", (0,0)+self.size, offs, - (bits, 8, 3, 0, -1))] - return - except ValueError: - pass - - if self.rawmode in ["RGB;T", "RYB;T"]: - # Old LabEye/3PC files. Would be very surprised if anyone - # ever stumbled upon such a file ;-) - size = self.size[0] * self.size[1] - self.tile = [("raw", (0,0)+self.size, offs, ("G", 0, -1)), - ("raw", (0,0)+self.size, offs+size, ("R", 0, -1)), - ("raw", (0,0)+self.size, offs+2*size, ("B", 0, -1))] - else: - # LabEye/IFUNC files - self.tile = [("raw", (0,0)+self.size, offs, (self.rawmode, 0, -1))] - - def seek(self, frame): - - if frame < 0 or frame >= self.info[FRAMES]: - raise EOFError, "seek outside sequence" - - if self.frame == frame: - return - - self.frame = frame - - if self.mode == "1": - bits = 1 - else: - bits = 8 * len(self.mode) - - size = ((self.size[0] * bits + 7) / 8) * self.size[1] - offs = self.__offset + frame * size - - self.fp = self.__fp - - self.tile = [("raw", (0,0)+self.size, offs, (self.rawmode, 0, -1))] - - def tell(self): - - return self.frame - -# -# -------------------------------------------------------------------- -# Save IM files - -SAVE = { - # mode: (im type, raw mode) - "1": ("0 1", "1"), - "L": ("Greyscale", "L"), - "LA": ("LA", "LA;L"), - "P": ("Greyscale", "P"), - "PA": ("LA", "PA;L"), - "I": ("L 32S", "I;32S"), - "I;16": ("L 16", "I;16"), - "I;16L": ("L 16L", "I;16L"), - "I;16B": ("L 16B", "I;16B"), - "F": ("L 32F", "F;32F"), - "RGB": ("RGB", "RGB;L"), - "RGBA": ("RGBA", "RGBA;L"), - "RGBX": ("RGBX", "RGBX;L"), - "CMYK": ("CMYK", "CMYK;L"), - "YCbCr": ("YCC", "YCbCr;L") -} - -def _save(im, fp, filename, check=0): - - try: - type, rawmode = SAVE[im.mode] - except KeyError: - raise ValueError, "Cannot save %s images as IM" % im.mode - - try: - frames = im.encoderinfo["frames"] - except KeyError: - frames = 1 - - if check: - return check - - fp.write("Image type: %s image\r\n" % type) - if filename: - fp.write("Name: %s\r\n" % filename) - fp.write("Image size (x*y): %d*%d\r\n" % im.size) - fp.write("File size (no of images): %d\r\n" % frames) - if im.mode == "P": - fp.write("Lut: 1\r\n") - fp.write("\000" * (511-fp.tell()) + "\032") - if im.mode == "P": - fp.write(im.im.getpalette("RGB", "RGB;L")) # 768 bytes - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, -1))]) - -# -# -------------------------------------------------------------------- -# Registry - -Image.register_open("IM", ImImageFile) -Image.register_save("IM", _save) - -Image.register_extension("IM", ".im") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py deleted file mode 100755 index 77a532afad0..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/Image.py +++ /dev/null @@ -1,2127 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# the Image class wrapper -# -# partial release history: -# 1995-09-09 fl Created -# 1996-03-11 fl PIL release 0.0 (proof of concept) -# 1996-04-30 fl PIL release 0.1b1 -# 1999-07-28 fl PIL release 1.0 final -# 2000-06-07 fl PIL release 1.1 -# 2000-10-20 fl PIL release 1.1.1 -# 2001-05-07 fl PIL release 1.1.2 -# 2002-03-15 fl PIL release 1.1.3 -# 2003-05-10 fl PIL release 1.1.4 -# 2005-03-28 fl PIL release 1.1.5 -# 2006-12-02 fl PIL release 1.1.6 -# 2009-11-15 fl PIL release 1.1.7 -# -# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. -# Copyright (c) 1995-2009 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -VERSION = "1.1.7" - -try: - import warnings -except ImportError: - warnings = None - -class _imaging_not_installed: - # module placeholder - def __getattr__(self, id): - raise ImportError("The _imaging C module is not installed") - -try: - # give Tk a chance to set up the environment, in case we're - # using an _imaging module linked against libtcl/libtk (use - # __import__ to hide this from naive packagers; we don't really - # depend on Tk unless ImageTk is used, and that module already - # imports Tkinter) - __import__("FixTk") -except ImportError: - pass - -try: - # If the _imaging C module is not present, you can still use - # the "open" function to identify files, but you cannot load - # them. Note that other modules should not refer to _imaging - # directly; import Image and use the Image.core variable instead. - import _imaging - core = _imaging - del _imaging -except ImportError, v: - core = _imaging_not_installed() - if str(v)[:20] == "Module use of python" and warnings: - # The _imaging C module is present, but not compiled for - # the right version (windows only). Print a warning, if - # possible. - warnings.warn( - "The _imaging extension was built for another version " - "of Python; most PIL functions will be disabled", - RuntimeWarning - ) - -import ImageMode -import ImagePalette - -import os, string, sys - -# type stuff -from types import IntType, StringType, TupleType - -try: - UnicodeStringType = type(unicode("")) - ## - # (Internal) Checks if an object is a string. If the current - # Python version supports Unicode, this checks for both 8-bit - # and Unicode strings. - def isStringType(t): - return isinstance(t, StringType) or isinstance(t, UnicodeStringType) -except NameError: - def isStringType(t): - return isinstance(t, StringType) - -## -# (Internal) Checks if an object is a tuple. - -def isTupleType(t): - return isinstance(t, TupleType) - -## -# (Internal) Checks if an object is an image object. - -def isImageType(t): - return hasattr(t, "im") - -## -# (Internal) Checks if an object is a string, and that it points to a -# directory. - -def isDirectory(f): - return isStringType(f) and os.path.isdir(f) - -from operator import isNumberType, isSequenceType - -# -# Debug level - -DEBUG = 0 - -# -# Constants (also defined in _imagingmodule.c!) - -NONE = 0 - -# transpose -FLIP_LEFT_RIGHT = 0 -FLIP_TOP_BOTTOM = 1 -ROTATE_90 = 2 -ROTATE_180 = 3 -ROTATE_270 = 4 - -# transforms -AFFINE = 0 -EXTENT = 1 -PERSPECTIVE = 2 -QUAD = 3 -MESH = 4 - -# resampling filters -NONE = 0 -NEAREST = 0 -ANTIALIAS = 1 # 3-lobed lanczos -LINEAR = BILINEAR = 2 -CUBIC = BICUBIC = 3 - -# dithers -NONE = 0 -NEAREST = 0 -ORDERED = 1 # Not yet implemented -RASTERIZE = 2 # Not yet implemented -FLOYDSTEINBERG = 3 # default - -# palettes/quantizers -WEB = 0 -ADAPTIVE = 1 - -# categories -NORMAL = 0 -SEQUENCE = 1 -CONTAINER = 2 - -# -------------------------------------------------------------------- -# Registries - -ID = [] -OPEN = {} -MIME = {} -SAVE = {} -EXTENSION = {} - -# -------------------------------------------------------------------- -# Modes supported by this version - -_MODEINFO = { - # NOTE: this table will be removed in future versions. use - # getmode* functions or ImageMode descriptors instead. - - # official modes - "1": ("L", "L", ("1",)), - "L": ("L", "L", ("L",)), - "I": ("L", "I", ("I",)), - "F": ("L", "F", ("F",)), - "P": ("RGB", "L", ("P",)), - "RGB": ("RGB", "L", ("R", "G", "B")), - "RGBX": ("RGB", "L", ("R", "G", "B", "X")), - "RGBA": ("RGB", "L", ("R", "G", "B", "A")), - "CMYK": ("RGB", "L", ("C", "M", "Y", "K")), - "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")), - - # Experimental modes include I;16, I;16L, I;16B, RGBa, BGR;15, and - # BGR;24. Use these modes only if you know exactly what you're - # doing... - -} - -try: - byteorder = sys.byteorder -except AttributeError: - import struct - if struct.unpack("h", "\0\1")[0] == 1: - byteorder = "big" - else: - byteorder = "little" - -if byteorder == 'little': - _ENDIAN = '<' -else: - _ENDIAN = '>' - -_MODE_CONV = { - # official modes - "1": ('|b1', None), # broken - "L": ('|u1', None), - "I": (_ENDIAN + 'i4', None), - "F": (_ENDIAN + 'f4', None), - "P": ('|u1', None), - "RGB": ('|u1', 3), - "RGBX": ('|u1', 4), - "RGBA": ('|u1', 4), - "CMYK": ('|u1', 4), - "YCbCr": ('|u1', 4), -} - -def _conv_type_shape(im): - shape = im.size[1], im.size[0] - typ, extra = _MODE_CONV[im.mode] - if extra is None: - return shape, typ - else: - return shape+(extra,), typ - - -MODES = _MODEINFO.keys() -MODES.sort() - -# raw modes that may be memory mapped. NOTE: if you change this, you -# may have to modify the stride calculation in map.c too! -_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B") - -## -# Gets the "base" mode for given mode. This function returns "L" for -# images that contain grayscale data, and "RGB" for images that -# contain color data. -# -# @param mode Input mode. -# @return "L" or "RGB". -# @exception KeyError If the input mode was not a standard mode. - -def getmodebase(mode): - return ImageMode.getmode(mode).basemode - -## -# Gets the storage type mode. Given a mode, this function returns a -# single-layer mode suitable for storing individual bands. -# -# @param mode Input mode. -# @return "L", "I", or "F". -# @exception KeyError If the input mode was not a standard mode. - -def getmodetype(mode): - return ImageMode.getmode(mode).basetype - -## -# Gets a list of individual band names. Given a mode, this function -# returns a tuple containing the names of individual bands (use -# {@link #getmodetype} to get the mode used to store each individual -# band. -# -# @param mode Input mode. -# @return A tuple containing band names. The length of the tuple -# gives the number of bands in an image of the given mode. -# @exception KeyError If the input mode was not a standard mode. - -def getmodebandnames(mode): - return ImageMode.getmode(mode).bands - -## -# Gets the number of individual bands for this mode. -# -# @param mode Input mode. -# @return The number of bands in this mode. -# @exception KeyError If the input mode was not a standard mode. - -def getmodebands(mode): - return len(ImageMode.getmode(mode).bands) - -# -------------------------------------------------------------------- -# Helpers - -_initialized = 0 - -## -# Explicitly loads standard file format drivers. - -def preinit(): - "Load standard file format drivers." - - global _initialized - if _initialized >= 1: - return - - try: - import BmpImagePlugin - except ImportError: - pass - try: - import GifImagePlugin - except ImportError: - pass - try: - import JpegImagePlugin - except ImportError: - pass - try: - import PpmImagePlugin - except ImportError: - pass - try: - import PngImagePlugin - except ImportError: - pass -# try: -# import TiffImagePlugin -# except ImportError: -# pass - - _initialized = 1 - -## -# Explicitly initializes the Python Imaging Library. This function -# loads all available file format drivers. - -def init(): - "Load all file format drivers." - - global _initialized - if _initialized >= 2: - return 0 - - visited = {} - - directories = sys.path - - try: - directories = directories + [os.path.dirname(__file__)] - except NameError: - pass - - # only check directories (including current, if present in the path) - for directory in filter(isDirectory, directories): - fullpath = os.path.abspath(directory) - if visited.has_key(fullpath): - continue - for file in os.listdir(directory): - if file[-14:] == "ImagePlugin.py": - f, e = os.path.splitext(file) - try: - sys.path.insert(0, directory) - try: - __import__(f, globals(), locals(), []) - finally: - del sys.path[0] - except ImportError: - if DEBUG: - print "Image: failed to import", - print f, ":", sys.exc_value - visited[fullpath] = None - - if OPEN or SAVE: - _initialized = 2 - return 1 - -# -------------------------------------------------------------------- -# Codec factories (used by tostring/fromstring and ImageFile.load) - -def _getdecoder(mode, decoder_name, args, extra=()): - - # tweak arguments - if args is None: - args = () - elif not isTupleType(args): - args = (args,) - - try: - # get decoder - decoder = getattr(core, decoder_name + "_decoder") - # print decoder, (mode,) + args + extra - return apply(decoder, (mode,) + args + extra) - except AttributeError: - raise IOError("decoder %s not available" % decoder_name) - -def _getencoder(mode, encoder_name, args, extra=()): - - # tweak arguments - if args is None: - args = () - elif not isTupleType(args): - args = (args,) - - try: - # get encoder - encoder = getattr(core, encoder_name + "_encoder") - # print encoder, (mode,) + args + extra - return apply(encoder, (mode,) + args + extra) - except AttributeError: - raise IOError("encoder %s not available" % encoder_name) - - -# -------------------------------------------------------------------- -# Simple expression analyzer - -class _E: - def __init__(self, data): self.data = data - def __coerce__(self, other): return self, _E(other) - def __add__(self, other): return _E((self.data, "__add__", other.data)) - def __mul__(self, other): return _E((self.data, "__mul__", other.data)) - -def _getscaleoffset(expr): - stub = ["stub"] - data = expr(_E(stub)).data - try: - (a, b, c) = data # simplified syntax - if (a is stub and b == "__mul__" and isNumberType(c)): - return c, 0.0 - if (a is stub and b == "__add__" and isNumberType(c)): - return 1.0, c - except TypeError: pass - try: - ((a, b, c), d, e) = data # full syntax - if (a is stub and b == "__mul__" and isNumberType(c) and - d == "__add__" and isNumberType(e)): - return c, e - except TypeError: pass - raise ValueError("illegal expression") - - -# -------------------------------------------------------------------- -# Implementation wrapper - -## -# This class represents an image object. To create Image objects, use -# the appropriate factory functions. There's hardly ever any reason -# to call the Image constructor directly. -# -# @see #open -# @see #new -# @see #fromstring - -class Image: - - format = None - format_description = None - - def __init__(self): - # FIXME: take "new" parameters / other image? - # FIXME: turn mode and size into delegating properties? - self.im = None - self.mode = "" - self.size = (0, 0) - self.palette = None - self.info = {} - self.category = NORMAL - self.readonly = 0 - - def _new(self, im): - new = Image() - new.im = im - new.mode = im.mode - new.size = im.size - new.palette = self.palette - if im.mode == "P": - new.palette = ImagePalette.ImagePalette() - try: - new.info = self.info.copy() - except AttributeError: - # fallback (pre-1.5.2) - new.info = {} - for k, v in self.info: - new.info[k] = v - return new - - _makeself = _new # compatibility - - def _copy(self): - self.load() - self.im = self.im.copy() - self.readonly = 0 - - def _dump(self, file=None, format=None): - import tempfile - if not file: - file = tempfile.mktemp() - self.load() - if not format or format == "PPM": - self.im.save_ppm(file) - else: - file = file + "." + format - self.save(file, format) - return file - - def __repr__(self): - return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( - self.__class__.__module__, self.__class__.__name__, - self.mode, self.size[0], self.size[1], - id(self) - ) - - def __getattr__(self, name): - if name == "__array_interface__": - # numpy array interface support - new = {} - shape, typestr = _conv_type_shape(self) - new['shape'] = shape - new['typestr'] = typestr - new['data'] = self.tostring() - return new - raise AttributeError(name) - - ## - # Returns a string containing pixel data. - # - # @param encoder_name What encoder to use. The default is to - # use the standard "raw" encoder. - # @param *args Extra arguments to the encoder. - # @return An 8-bit string. - - def tostring(self, encoder_name="raw", *args): - "Return image as a binary string" - - # may pass tuple instead of argument list - if len(args) == 1 and isTupleType(args[0]): - args = args[0] - - if encoder_name == "raw" and args == (): - args = self.mode - - self.load() - - # unpack data - e = _getencoder(self.mode, encoder_name, args) - e.setimage(self.im) - - bufsize = max(65536, self.size[0] * 4) # see RawEncode.c - - data = [] - while 1: - l, s, d = e.encode(bufsize) - data.append(d) - if s: - break - if s < 0: - raise RuntimeError("encoder error %d in tostring" % s) - - return string.join(data, "") - - ## - # Returns the image converted to an X11 bitmap. This method - # only works for mode "1" images. - # - # @param name The name prefix to use for the bitmap variables. - # @return A string containing an X11 bitmap. - # @exception ValueError If the mode is not "1" - - def tobitmap(self, name="image"): - "Return image as an XBM bitmap" - - self.load() - if self.mode != "1": - raise ValueError("not a bitmap") - data = self.tostring("xbm") - return string.join(["#define %s_width %d\n" % (name, self.size[0]), - "#define %s_height %d\n"% (name, self.size[1]), - "static char %s_bits[] = {\n" % name, data, "};"], "") - - ## - # Loads this image with pixel data from a string. - #

    - # This method is similar to the {@link #fromstring} function, but - # loads data into this image instead of creating a new image - # object. - - def fromstring(self, data, decoder_name="raw", *args): - "Load data to image from binary string" - - # may pass tuple instead of argument list - if len(args) == 1 and isTupleType(args[0]): - args = args[0] - - # default format - if decoder_name == "raw" and args == (): - args = self.mode - - # unpack data - d = _getdecoder(self.mode, decoder_name, args) - d.setimage(self.im) - s = d.decode(data) - - if s[0] >= 0: - raise ValueError("not enough image data") - if s[1] != 0: - raise ValueError("cannot decode image data") - - ## - # Allocates storage for the image and loads the pixel data. In - # normal cases, you don't need to call this method, since the - # Image class automatically loads an opened image when it is - # accessed for the first time. - # - # @return An image access object. - - def load(self): - "Explicitly load pixel data." - if self.im and self.palette and self.palette.dirty: - # realize palette - apply(self.im.putpalette, self.palette.getdata()) - self.palette.dirty = 0 - self.palette.mode = "RGB" - self.palette.rawmode = None - if self.info.has_key("transparency"): - self.im.putpalettealpha(self.info["transparency"], 0) - self.palette.mode = "RGBA" - if self.im: - return self.im.pixel_access(self.readonly) - - ## - # Verifies the contents of a file. For data read from a file, this - # method attempts to determine if the file is broken, without - # actually decoding the image data. If this method finds any - # problems, it raises suitable exceptions. If you need to load - # the image after using this method, you must reopen the image - # file. - - def verify(self): - "Verify file contents." - pass - - ## - # Returns a converted copy of this image. For the "P" mode, this - # method translates pixels through the palette. If mode is - # omitted, a mode is chosen so that all information in the image - # and the palette can be represented without a palette. - #

    - # The current version supports all possible conversions between - # "L", "RGB" and "CMYK." - #

    - # When translating a colour image to black and white (mode "L"), - # the library uses the ITU-R 601-2 luma transform: - #

    - # L = R * 299/1000 + G * 587/1000 + B * 114/1000 - #

    - # When translating a greyscale image into a bilevel image (mode - # "1"), all non-zero values are set to 255 (white). To use other - # thresholds, use the {@link #Image.point} method. - # - # @def convert(mode, matrix=None, **options) - # @param mode The requested mode. - # @param matrix An optional conversion matrix. If given, this - # should be 4- or 16-tuple containing floating point values. - # @param options Additional options, given as keyword arguments. - # @keyparam dither Dithering method, used when converting from - # mode "RGB" to "P". - # Available methods are NONE or FLOYDSTEINBERG (default). - # @keyparam palette Palette to use when converting from mode "RGB" - # to "P". Available palettes are WEB or ADAPTIVE. - # @keyparam colors Number of colors to use for the ADAPTIVE palette. - # Defaults to 256. - # @return An Image object. - - def convert(self, mode=None, data=None, dither=None, - palette=WEB, colors=256): - "Convert to other pixel format" - - if not mode: - # determine default mode - if self.mode == "P": - self.load() - if self.palette: - mode = self.palette.mode - else: - mode = "RGB" - else: - return self.copy() - - self.load() - - if data: - # matrix conversion - if mode not in ("L", "RGB"): - raise ValueError("illegal conversion") - im = self.im.convert_matrix(mode, data) - return self._new(im) - - if mode == "P" and palette == ADAPTIVE: - im = self.im.quantize(colors) - return self._new(im) - - # colourspace conversion - if dither is None: - dither = FLOYDSTEINBERG - - try: - im = self.im.convert(mode, dither) - except ValueError: - try: - # normalize source image and try again - im = self.im.convert(getmodebase(self.mode)) - im = im.convert(mode, dither) - except KeyError: - raise ValueError("illegal conversion") - - return self._new(im) - - def quantize(self, colors=256, method=0, kmeans=0, palette=None): - - # methods: - # 0 = median cut - # 1 = maximum coverage - - # NOTE: this functionality will be moved to the extended - # quantizer interface in a later version of PIL. - - self.load() - - if palette: - # use palette from reference image - palette.load() - if palette.mode != "P": - raise ValueError("bad mode for palette image") - if self.mode != "RGB" and self.mode != "L": - raise ValueError( - "only RGB or L mode images can be quantized to a palette" - ) - im = self.im.convert("P", 1, palette.im) - return self._makeself(im) - - im = self.im.quantize(colors, method, kmeans) - return self._new(im) - - ## - # Copies this image. Use this method if you wish to paste things - # into an image, but still retain the original. - # - # @return An Image object. - - def copy(self): - "Copy raster data" - - self.load() - im = self.im.copy() - return self._new(im) - - ## - # Returns a rectangular region from this image. The box is a - # 4-tuple defining the left, upper, right, and lower pixel - # coordinate. - #

    - # This is a lazy operation. Changes to the source image may or - # may not be reflected in the cropped image. To break the - # connection, call the {@link #Image.load} method on the cropped - # copy. - # - # @param The crop rectangle, as a (left, upper, right, lower)-tuple. - # @return An Image object. - - def crop(self, box=None): - "Crop region from image" - - self.load() - if box is None: - return self.copy() - - # lazy operation - return _ImageCrop(self, box) - - ## - # Configures the image file loader so it returns a version of the - # image that as closely as possible matches the given mode and - # size. For example, you can use this method to convert a colour - # JPEG to greyscale while loading it, or to extract a 128x192 - # version from a PCD file. - #

    - # Note that this method modifies the Image object in place. If - # the image has already been loaded, this method has no effect. - # - # @param mode The requested mode. - # @param size The requested size. - - def draft(self, mode, size): - "Configure image decoder" - - pass - - def _expand(self, xmargin, ymargin=None): - if ymargin is None: - ymargin = xmargin - self.load() - return self._new(self.im.expand(xmargin, ymargin, 0)) - - ## - # Filters this image using the given filter. For a list of - # available filters, see the ImageFilter module. - # - # @param filter Filter kernel. - # @return An Image object. - # @see ImageFilter - - def filter(self, filter): - "Apply environment filter to image" - - self.load() - - if callable(filter): - filter = filter() - if not hasattr(filter, "filter"): - raise TypeError("filter argument should be ImageFilter.Filter instance or class") - - if self.im.bands == 1: - return self._new(filter.filter(self.im)) - # fix to handle multiband images since _imaging doesn't - ims = [] - for c in range(self.im.bands): - ims.append(self._new(filter.filter(self.im.getband(c)))) - return merge(self.mode, ims) - - ## - # Returns a tuple containing the name of each band in this image. - # For example, getbands on an RGB image returns ("R", "G", "B"). - # - # @return A tuple containing band names. - - def getbands(self): - "Get band names" - - return ImageMode.getmode(self.mode).bands - - ## - # Calculates the bounding box of the non-zero regions in the - # image. - # - # @return The bounding box is returned as a 4-tuple defining the - # left, upper, right, and lower pixel coordinate. If the image - # is completely empty, this method returns None. - - def getbbox(self): - "Get bounding box of actual data (non-zero pixels) in image" - - self.load() - return self.im.getbbox() - - ## - # Returns a list of colors used in this image. - # - # @param maxcolors Maximum number of colors. If this number is - # exceeded, this method returns None. The default limit is - # 256 colors. - # @return An unsorted list of (count, pixel) values. - - def getcolors(self, maxcolors=256): - "Get colors from image, up to given limit" - - self.load() - if self.mode in ("1", "L", "P"): - h = self.im.histogram() - out = [] - for i in range(256): - if h[i]: - out.append((h[i], i)) - if len(out) > maxcolors: - return None - return out - return self.im.getcolors(maxcolors) - - ## - # Returns the contents of this image as a sequence object - # containing pixel values. The sequence object is flattened, so - # that values for line one follow directly after the values of - # line zero, and so on. - #

    - # Note that the sequence object returned by this method is an - # internal PIL data type, which only supports certain sequence - # operations. To convert it to an ordinary sequence (e.g. for - # printing), use list(im.getdata()). - # - # @param band What band to return. The default is to return - # all bands. To return a single band, pass in the index - # value (e.g. 0 to get the "R" band from an "RGB" image). - # @return A sequence-like object. - - def getdata(self, band = None): - "Get image data as sequence object." - - self.load() - if band is not None: - return self.im.getband(band) - return self.im # could be abused - - ## - # Gets the the minimum and maximum pixel values for each band in - # the image. - # - # @return For a single-band image, a 2-tuple containing the - # minimum and maximum pixel value. For a multi-band image, - # a tuple containing one 2-tuple for each band. - - def getextrema(self): - "Get min/max value" - - self.load() - if self.im.bands > 1: - extrema = [] - for i in range(self.im.bands): - extrema.append(self.im.getband(i).getextrema()) - return tuple(extrema) - return self.im.getextrema() - - ## - # Returns a PyCObject that points to the internal image memory. - # - # @return A PyCObject object. - - def getim(self): - "Get PyCObject pointer to internal image memory" - - self.load() - return self.im.ptr - - - ## - # Returns the image palette as a list. - # - # @return A list of color values [r, g, b, ...], or None if the - # image has no palette. - - def getpalette(self): - "Get palette contents." - - self.load() - try: - return map(ord, self.im.getpalette()) - except ValueError: - return None # no palette - - - ## - # Returns the pixel value at a given position. - # - # @param xy The coordinate, given as (x, y). - # @return The pixel value. If the image is a multi-layer image, - # this method returns a tuple. - - def getpixel(self, xy): - "Get pixel value" - - self.load() - return self.im.getpixel(xy) - - ## - # Returns the horizontal and vertical projection. - # - # @return Two sequences, indicating where there are non-zero - # pixels along the X-axis and the Y-axis, respectively. - - def getprojection(self): - "Get projection to x and y axes" - - self.load() - x, y = self.im.getprojection() - return map(ord, x), map(ord, y) - - ## - # Returns a histogram for the image. The histogram is returned as - # a list of pixel counts, one for each pixel value in the source - # image. If the image has more than one band, the histograms for - # all bands are concatenated (for example, the histogram for an - # "RGB" image contains 768 values). - #

    - # A bilevel image (mode "1") is treated as a greyscale ("L") image - # by this method. - #

    - # If a mask is provided, the method returns a histogram for those - # parts of the image where the mask image is non-zero. The mask - # image must have the same size as the image, and be either a - # bi-level image (mode "1") or a greyscale image ("L"). - # - # @def histogram(mask=None) - # @param mask An optional mask. - # @return A list containing pixel counts. - - def histogram(self, mask=None, extrema=None): - "Take histogram of image" - - self.load() - if mask: - mask.load() - return self.im.histogram((0, 0), mask.im) - if self.mode in ("I", "F"): - if extrema is None: - extrema = self.getextrema() - return self.im.histogram(extrema) - return self.im.histogram() - - ## - # (Deprecated) Returns a copy of the image where the data has been - # offset by the given distances. Data wraps around the edges. If - # yoffset is omitted, it is assumed to be equal to xoffset. - #

    - # This method is deprecated. New code should use the offset - # function in the ImageChops module. - # - # @param xoffset The horizontal distance. - # @param yoffset The vertical distance. If omitted, both - # distances are set to the same value. - # @return An Image object. - - def offset(self, xoffset, yoffset=None): - "(deprecated) Offset image in horizontal and/or vertical direction" - if warnings: - warnings.warn( - "'offset' is deprecated; use 'ImageChops.offset' instead", - DeprecationWarning, stacklevel=2 - ) - import ImageChops - return ImageChops.offset(self, xoffset, yoffset) - - ## - # Pastes another image into this image. The box argument is either - # a 2-tuple giving the upper left corner, a 4-tuple defining the - # left, upper, right, and lower pixel coordinate, or None (same as - # (0, 0)). If a 4-tuple is given, the size of the pasted image - # must match the size of the region. - #

    - # If the modes don't match, the pasted image is converted to the - # mode of this image (see the {@link #Image.convert} method for - # details). - #

    - # Instead of an image, the source can be a integer or tuple - # containing pixel values. The method then fills the region - # with the given colour. When creating RGB images, you can - # also use colour strings as supported by the ImageColor module. - #

    - # If a mask is given, this method updates only the regions - # indicated by the mask. You can use either "1", "L" or "RGBA" - # images (in the latter case, the alpha band is used as mask). - # Where the mask is 255, the given image is copied as is. Where - # the mask is 0, the current value is preserved. Intermediate - # values can be used for transparency effects. - #

    - # Note that if you paste an "RGBA" image, the alpha band is - # ignored. You can work around this by using the same image as - # both source image and mask. - # - # @param im Source image or pixel value (integer or tuple). - # @param box An optional 4-tuple giving the region to paste into. - # If a 2-tuple is used instead, it's treated as the upper left - # corner. If omitted or None, the source is pasted into the - # upper left corner. - #

    - # If an image is given as the second argument and there is no - # third, the box defaults to (0, 0), and the second argument - # is interpreted as a mask image. - # @param mask An optional mask image. - # @return An Image object. - - def paste(self, im, box=None, mask=None): - "Paste other image into region" - - if isImageType(box) and mask is None: - # abbreviated paste(im, mask) syntax - mask = box; box = None - - if box is None: - # cover all of self - box = (0, 0) + self.size - - if len(box) == 2: - # lower left corner given; get size from image or mask - if isImageType(im): - size = im.size - elif isImageType(mask): - size = mask.size - else: - # FIXME: use self.size here? - raise ValueError( - "cannot determine region size; use 4-item box" - ) - box = box + (box[0]+size[0], box[1]+size[1]) - - if isStringType(im): - import ImageColor - im = ImageColor.getcolor(im, self.mode) - - elif isImageType(im): - im.load() - if self.mode != im.mode: - if self.mode != "RGB" or im.mode not in ("RGBA", "RGBa"): - # should use an adapter for this! - im = im.convert(self.mode) - im = im.im - - self.load() - if self.readonly: - self._copy() - - if mask: - mask.load() - self.im.paste(im, box, mask.im) - else: - self.im.paste(im, box) - - ## - # Maps this image through a lookup table or function. - # - # @param lut A lookup table, containing 256 values per band in the - # image. A function can be used instead, it should take a single - # argument. The function is called once for each possible pixel - # value, and the resulting table is applied to all bands of the - # image. - # @param mode Output mode (default is same as input). In the - # current version, this can only be used if the source image - # has mode "L" or "P", and the output has mode "1". - # @return An Image object. - - def point(self, lut, mode=None): - "Map image through lookup table" - - self.load() - - if isinstance(lut, ImagePointHandler): - return lut.point(self) - - if not isSequenceType(lut): - # if it isn't a list, it should be a function - if self.mode in ("I", "I;16", "F"): - # check if the function can be used with point_transform - scale, offset = _getscaleoffset(lut) - return self._new(self.im.point_transform(scale, offset)) - # for other modes, convert the function to a table - lut = map(lut, range(256)) * self.im.bands - - if self.mode == "F": - # FIXME: _imaging returns a confusing error message for this case - raise ValueError("point operation not supported for this mode") - - return self._new(self.im.point(lut, mode)) - - ## - # Adds or replaces the alpha layer in this image. If the image - # does not have an alpha layer, it's converted to "LA" or "RGBA". - # The new layer must be either "L" or "1". - # - # @param im The new alpha layer. This can either be an "L" or "1" - # image having the same size as this image, or an integer or - # other color value. - - def putalpha(self, alpha): - "Set alpha layer" - - self.load() - if self.readonly: - self._copy() - - if self.mode not in ("LA", "RGBA"): - # attempt to promote self to a matching alpha mode - try: - mode = getmodebase(self.mode) + "A" - try: - self.im.setmode(mode) - except (AttributeError, ValueError): - # do things the hard way - im = self.im.convert(mode) - if im.mode not in ("LA", "RGBA"): - raise ValueError # sanity check - self.im = im - self.mode = self.im.mode - except (KeyError, ValueError): - raise ValueError("illegal image mode") - - if self.mode == "LA": - band = 1 - else: - band = 3 - - if isImageType(alpha): - # alpha layer - if alpha.mode not in ("1", "L"): - raise ValueError("illegal image mode") - alpha.load() - if alpha.mode == "1": - alpha = alpha.convert("L") - else: - # constant alpha - try: - self.im.fillband(band, alpha) - except (AttributeError, ValueError): - # do things the hard way - alpha = new("L", self.size, alpha) - else: - return - - self.im.putband(alpha.im, band) - - ## - # Copies pixel data to this image. This method copies data from a - # sequence object into the image, starting at the upper left - # corner (0, 0), and continuing until either the image or the - # sequence ends. The scale and offset values are used to adjust - # the sequence values: pixel = value*scale + offset. - # - # @param data A sequence object. - # @param scale An optional scale value. The default is 1.0. - # @param offset An optional offset value. The default is 0.0. - - def putdata(self, data, scale=1.0, offset=0.0): - "Put data from a sequence object into an image." - - self.load() - if self.readonly: - self._copy() - - self.im.putdata(data, scale, offset) - - ## - # Attaches a palette to this image. The image must be a "P" or - # "L" image, and the palette sequence must contain 768 integer - # values, where each group of three values represent the red, - # green, and blue values for the corresponding pixel - # index. Instead of an integer sequence, you can use an 8-bit - # string. - # - # @def putpalette(data) - # @param data A palette sequence (either a list or a string). - - def putpalette(self, data, rawmode="RGB"): - "Put palette data into an image." - - if self.mode not in ("L", "P"): - raise ValueError("illegal image mode") - self.load() - if isinstance(data, ImagePalette.ImagePalette): - palette = ImagePalette.raw(data.rawmode, data.palette) - else: - if not isStringType(data): - data = string.join(map(chr, data), "") - palette = ImagePalette.raw(rawmode, data) - self.mode = "P" - self.palette = palette - self.palette.mode = "RGB" - self.load() # install new palette - - ## - # Modifies the pixel at the given position. The colour is given as - # a single numerical value for single-band images, and a tuple for - # multi-band images. - #

    - # Note that this method is relatively slow. For more extensive - # changes, use {@link #Image.paste} or the ImageDraw module - # instead. - # - # @param xy The pixel coordinate, given as (x, y). - # @param value The pixel value. - # @see #Image.paste - # @see #Image.putdata - # @see ImageDraw - - def putpixel(self, xy, value): - "Set pixel value" - - self.load() - if self.readonly: - self._copy() - - return self.im.putpixel(xy, value) - - ## - # Returns a resized copy of this image. - # - # @def resize(size, filter=NEAREST) - # @param size The requested size in pixels, as a 2-tuple: - # (width, height). - # @param filter An optional resampling filter. This can be - # one of NEAREST (use nearest neighbour), BILINEAR - # (linear interpolation in a 2x2 environment), BICUBIC - # (cubic spline interpolation in a 4x4 environment), or - # ANTIALIAS (a high-quality downsampling filter). - # If omitted, or if the image has mode "1" or "P", it is - # set NEAREST. - # @return An Image object. - - def resize(self, size, resample=NEAREST): - "Resize image" - - if resample not in (NEAREST, BILINEAR, BICUBIC, ANTIALIAS): - raise ValueError("unknown resampling filter") - - self.load() - - if self.mode in ("1", "P"): - resample = NEAREST - - if resample == ANTIALIAS: - # requires stretch support (imToolkit & PIL 1.1.3) - try: - im = self.im.stretch(size, resample) - except AttributeError: - raise ValueError("unsupported resampling filter") - else: - im = self.im.resize(size, resample) - - return self._new(im) - - ## - # Returns a rotated copy of this image. This method returns a - # copy of this image, rotated the given number of degrees counter - # clockwise around its centre. - # - # @def rotate(angle, filter=NEAREST) - # @param angle In degrees counter clockwise. - # @param filter An optional resampling filter. This can be - # one of NEAREST (use nearest neighbour), BILINEAR - # (linear interpolation in a 2x2 environment), or BICUBIC - # (cubic spline interpolation in a 4x4 environment). - # If omitted, or if the image has mode "1" or "P", it is - # set NEAREST. - # @param expand Optional expansion flag. If true, expands the output - # image to make it large enough to hold the entire rotated image. - # If false or omitted, make the output image the same size as the - # input image. - # @return An Image object. - - def rotate(self, angle, resample=NEAREST, expand=0): - "Rotate image. Angle given as degrees counter-clockwise." - - if expand: - import math - angle = -angle * math.pi / 180 - matrix = [ - math.cos(angle), math.sin(angle), 0.0, - -math.sin(angle), math.cos(angle), 0.0 - ] - def transform(x, y, (a, b, c, d, e, f)=matrix): - return a*x + b*y + c, d*x + e*y + f - - # calculate output size - w, h = self.size - xx = [] - yy = [] - for x, y in ((0, 0), (w, 0), (w, h), (0, h)): - x, y = transform(x, y) - xx.append(x) - yy.append(y) - w = int(math.ceil(max(xx)) - math.floor(min(xx))) - h = int(math.ceil(max(yy)) - math.floor(min(yy))) - - # adjust center - x, y = transform(w / 2.0, h / 2.0) - matrix[2] = self.size[0] / 2.0 - x - matrix[5] = self.size[1] / 2.0 - y - - return self.transform((w, h), AFFINE, matrix, resample) - - if resample not in (NEAREST, BILINEAR, BICUBIC): - raise ValueError("unknown resampling filter") - - self.load() - - if self.mode in ("1", "P"): - resample = NEAREST - - return self._new(self.im.rotate(angle, resample)) - - ## - # Saves this image under the given filename. If no format is - # specified, the format to use is determined from the filename - # extension, if possible. - #

    - # Keyword options can be used to provide additional instructions - # to the writer. If a writer doesn't recognise an option, it is - # silently ignored. The available options are described later in - # this handbook. - #

    - # You can use a file object instead of a filename. In this case, - # you must always specify the format. The file object must - # implement the seek, tell, and write - # methods, and be opened in binary mode. - # - # @def save(file, format=None, **options) - # @param file File name or file object. - # @param format Optional format override. If omitted, the - # format to use is determined from the filename extension. - # If a file object was used instead of a filename, this - # parameter should always be used. - # @param **options Extra parameters to the image writer. - # @return None - # @exception KeyError If the output format could not be determined - # from the file name. Use the format option to solve this. - # @exception IOError If the file could not be written. The file - # may have been created, and may contain partial data. - - def save(self, fp, format=None, **params): - "Save image to file or stream" - - if isStringType(fp): - filename = fp - else: - if hasattr(fp, "name") and isStringType(fp.name): - filename = fp.name - else: - filename = "" - - # may mutate self! - self.load() - - self.encoderinfo = params - self.encoderconfig = () - - preinit() - - ext = string.lower(os.path.splitext(filename)[1]) - - if not format: - try: - format = EXTENSION[ext] - except KeyError: - init() - try: - format = EXTENSION[ext] - except KeyError: - raise KeyError(ext) # unknown extension - - try: - save_handler = SAVE[string.upper(format)] - except KeyError: - init() - save_handler = SAVE[string.upper(format)] # unknown format - - if isStringType(fp): - import __builtin__ - fp = __builtin__.open(fp, "wb") - close = 1 - else: - close = 0 - - try: - save_handler(self, fp, filename) - finally: - # do what we can to clean up - if close: - fp.close() - - ## - # Seeks to the given frame in this sequence file. If you seek - # beyond the end of the sequence, the method raises an - # EOFError exception. When a sequence file is opened, the - # library automatically seeks to frame 0. - #

    - # Note that in the current version of the library, most sequence - # formats only allows you to seek to the next frame. - # - # @param frame Frame number, starting at 0. - # @exception EOFError If the call attempts to seek beyond the end - # of the sequence. - # @see #Image.tell - - def seek(self, frame): - "Seek to given frame in sequence file" - - # overridden by file handlers - if frame != 0: - raise EOFError - - ## - # Displays this image. This method is mainly intended for - # debugging purposes. - #

    - # On Unix platforms, this method saves the image to a temporary - # PPM file, and calls the xv utility. - #

    - # On Windows, it saves the image to a temporary BMP file, and uses - # the standard BMP display utility to show it (usually Paint). - # - # @def show(title=None) - # @param title Optional title to use for the image window, - # where possible. - - def show(self, title=None, command=None): - "Display image (for debug purposes only)" - - _show(self, title=title, command=command) - - ## - # Split this image into individual bands. This method returns a - # tuple of individual image bands from an image. For example, - # splitting an "RGB" image creates three new images each - # containing a copy of one of the original bands (red, green, - # blue). - # - # @return A tuple containing bands. - - def split(self): - "Split image into bands" - - if self.im.bands == 1: - ims = [self.copy()] - else: - ims = [] - self.load() - for i in range(self.im.bands): - ims.append(self._new(self.im.getband(i))) - return tuple(ims) - - ## - # Returns the current frame number. - # - # @return Frame number, starting with 0. - # @see #Image.seek - - def tell(self): - "Return current frame number" - - return 0 - - ## - # Make this image into a thumbnail. This method modifies the - # image to contain a thumbnail version of itself, no larger than - # the given size. This method calculates an appropriate thumbnail - # size to preserve the aspect of the image, calls the {@link - # #Image.draft} method to configure the file reader (where - # applicable), and finally resizes the image. - #

    - # Note that the bilinear and bicubic filters in the current - # version of PIL are not well-suited for thumbnail generation. - # You should use ANTIALIAS unless speed is much more - # important than quality. - #

    - # Also note that this function modifies the Image object in place. - # If you need to use the full resolution image as well, apply this - # method to a {@link #Image.copy} of the original image. - # - # @param size Requested size. - # @param resample Optional resampling filter. This can be one - # of NEAREST, BILINEAR, BICUBIC, or - # ANTIALIAS (best quality). If omitted, it defaults - # to NEAREST (this will be changed to ANTIALIAS in a - # future version). - # @return None - - def thumbnail(self, size, resample=NEAREST): - "Create thumbnail representation (modifies image in place)" - - # FIXME: the default resampling filter will be changed - # to ANTIALIAS in future versions - - # preserve aspect ratio - x, y = self.size - if x > size[0]: y = max(y * size[0] / x, 1); x = size[0] - if y > size[1]: x = max(x * size[1] / y, 1); y = size[1] - size = x, y - - if size == self.size: - return - - self.draft(None, size) - - self.load() - - try: - im = self.resize(size, resample) - except ValueError: - if resample != ANTIALIAS: - raise - im = self.resize(size, NEAREST) # fallback - - self.im = im.im - self.mode = im.mode - self.size = size - - self.readonly = 0 - - # FIXME: the different tranform methods need further explanation - # instead of bloating the method docs, add a separate chapter. - - ## - # Transforms this image. This method creates a new image with the - # given size, and the same mode as the original, and copies data - # to the new image using the given transform. - #

    - # @def transform(size, method, data, resample=NEAREST) - # @param size The output size. - # @param method The transformation method. This is one of - # EXTENT (cut out a rectangular subregion), AFFINE - # (affine transform), PERSPECTIVE (perspective - # transform), QUAD (map a quadrilateral to a - # rectangle), or MESH (map a number of source quadrilaterals - # in one operation). - # @param data Extra data to the transformation method. - # @param resample Optional resampling filter. It can be one of - # NEAREST (use nearest neighbour), BILINEAR - # (linear interpolation in a 2x2 environment), or - # BICUBIC (cubic spline interpolation in a 4x4 - # environment). If omitted, or if the image has mode - # "1" or "P", it is set to NEAREST. - # @return An Image object. - - def transform(self, size, method, data=None, resample=NEAREST, fill=1): - "Transform image" - - if isinstance(method, ImageTransformHandler): - return method.transform(size, self, resample=resample, fill=fill) - if hasattr(method, "getdata"): - # compatibility w. old-style transform objects - method, data = method.getdata() - if data is None: - raise ValueError("missing method data") - im = new(self.mode, size, None) - if method == MESH: - # list of quads - for box, quad in data: - im.__transformer(box, self, QUAD, quad, resample, fill) - else: - im.__transformer((0, 0)+size, self, method, data, resample, fill) - - return im - - def __transformer(self, box, image, method, data, - resample=NEAREST, fill=1): - - # FIXME: this should be turned into a lazy operation (?) - - w = box[2]-box[0] - h = box[3]-box[1] - - if method == AFFINE: - # change argument order to match implementation - data = (data[2], data[0], data[1], - data[5], data[3], data[4]) - elif method == EXTENT: - # convert extent to an affine transform - x0, y0, x1, y1 = data - xs = float(x1 - x0) / w - ys = float(y1 - y0) / h - method = AFFINE - data = (x0 + xs/2, xs, 0, y0 + ys/2, 0, ys) - elif method == PERSPECTIVE: - # change argument order to match implementation - data = (data[2], data[0], data[1], - data[5], data[3], data[4], - data[6], data[7]) - elif method == QUAD: - # quadrilateral warp. data specifies the four corners - # given as NW, SW, SE, and NE. - nw = data[0:2]; sw = data[2:4]; se = data[4:6]; ne = data[6:8] - x0, y0 = nw; As = 1.0 / w; At = 1.0 / h - data = (x0, (ne[0]-x0)*As, (sw[0]-x0)*At, - (se[0]-sw[0]-ne[0]+x0)*As*At, - y0, (ne[1]-y0)*As, (sw[1]-y0)*At, - (se[1]-sw[1]-ne[1]+y0)*As*At) - else: - raise ValueError("unknown transformation method") - - if resample not in (NEAREST, BILINEAR, BICUBIC): - raise ValueError("unknown resampling filter") - - image.load() - - self.load() - - if image.mode in ("1", "P"): - resample = NEAREST - - self.im.transform2(box, image.im, method, data, resample, fill) - - ## - # Returns a flipped or rotated copy of this image. - # - # @param method One of FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM, - # ROTATE_90, ROTATE_180, or ROTATE_270. - - def transpose(self, method): - "Transpose image (flip or rotate in 90 degree steps)" - - self.load() - im = self.im.transpose(method) - return self._new(im) - -# -------------------------------------------------------------------- -# Lazy operations - -class _ImageCrop(Image): - - def __init__(self, im, box): - - Image.__init__(self) - - x0, y0, x1, y1 = box - if x1 < x0: - x1 = x0 - if y1 < y0: - y1 = y0 - - self.mode = im.mode - self.size = x1-x0, y1-y0 - - self.__crop = x0, y0, x1, y1 - - self.im = im.im - - def load(self): - - # lazy evaluation! - if self.__crop: - self.im = self.im.crop(self.__crop) - self.__crop = None - - if self.im: - return self.im.pixel_access(self.readonly) - - # FIXME: future versions should optimize crop/paste - # sequences! - -# -------------------------------------------------------------------- -# Abstract handlers. - -class ImagePointHandler: - # used as a mixin by point transforms (for use with im.point) - pass - -class ImageTransformHandler: - # used as a mixin by geometry transforms (for use with im.transform) - pass - -# -------------------------------------------------------------------- -# Factories - -# -# Debugging - -def _wedge(): - "Create greyscale wedge (for debugging only)" - - return Image()._new(core.wedge("L")) - -## -# Creates a new image with the given mode and size. -# -# @param mode The mode to use for the new image. -# @param size A 2-tuple, containing (width, height) in pixels. -# @param color What colour to use for the image. Default is black. -# If given, this should be a single integer or floating point value -# for single-band modes, and a tuple for multi-band modes (one value -# per band). When creating RGB images, you can also use colour -# strings as supported by the ImageColor module. If the colour is -# None, the image is not initialised. -# @return An Image object. - -def new(mode, size, color=0): - "Create a new image" - - if color is None: - # don't initialize - return Image()._new(core.new(mode, size)) - - if isStringType(color): - # css3-style specifier - - import ImageColor - color = ImageColor.getcolor(color, mode) - - return Image()._new(core.fill(mode, size, color)) - -## -# Creates an image memory from pixel data in a string. -#

    -# In its simplest form, this function takes three arguments -# (mode, size, and unpacked pixel data). -#

    -# Note that this function decodes pixel data only, not entire images. -# If you have an entire image in a string, wrap it in a -# StringIO object, and use {@link #open} to load it. -# -# @param mode The image mode. -# @param size The image size. -# @param data An 8-bit string containing raw data for the given mode. -# @param decoder_name What decoder to use. -# @param *args Additional parameters for the given decoder. -# @return An Image object. - -def fromstring(mode, size, data, decoder_name="raw", *args): - "Load image from string" - - # may pass tuple instead of argument list - if len(args) == 1 and isTupleType(args[0]): - args = args[0] - - if decoder_name == "raw" and args == (): - args = mode - - im = new(mode, size) - im.fromstring(data, decoder_name, args) - return im - -## -# (New in 1.1.4) Creates an image memory from pixel data in a string -# or byte buffer. -#

    -# This function is similar to {@link #fromstring}, but uses data in -# the byte buffer, where possible. This means that changes to the -# original buffer object are reflected in this image). Not all modes -# can share memory; supported modes include "L", "RGBX", "RGBA", and -# "CMYK". -#

    -# Note that this function decodes pixel data only, not entire images. -# If you have an entire image file in a string, wrap it in a -# StringIO object, and use {@link #open} to load it. -#

    -# In the current version, the default parameters used for the "raw" -# decoder differs from that used for {@link fromstring}. This is a -# bug, and will probably be fixed in a future release. The current -# release issues a warning if you do this; to disable the warning, -# you should provide the full set of parameters. See below for -# details. -# -# @param mode The image mode. -# @param size The image size. -# @param data An 8-bit string or other buffer object containing raw -# data for the given mode. -# @param decoder_name What decoder to use. -# @param *args Additional parameters for the given decoder. For the -# default encoder ("raw"), it's recommended that you provide the -# full set of parameters: -# frombuffer(mode, size, data, "raw", mode, 0, 1). -# @return An Image object. -# @since 1.1.4 - -def frombuffer(mode, size, data, decoder_name="raw", *args): - "Load image from string or buffer" - - # may pass tuple instead of argument list - if len(args) == 1 and isTupleType(args[0]): - args = args[0] - - if decoder_name == "raw": - if args == (): - if warnings: - warnings.warn( - "the frombuffer defaults may change in a future release; " - "for portability, change the call to read:\n" - " frombuffer(mode, size, data, 'raw', mode, 0, 1)", - RuntimeWarning, stacklevel=2 - ) - args = mode, 0, -1 # may change to (mode, 0, 1) post-1.1.6 - if args[0] in _MAPMODES: - im = new(mode, (1,1)) - im = im._new( - core.map_buffer(data, size, decoder_name, None, 0, args) - ) - im.readonly = 1 - return im - - return fromstring(mode, size, data, decoder_name, args) - - -## -# (New in 1.1.6) Creates an image memory from an object exporting -# the array interface (using the buffer protocol). -# -# If obj is not contiguous, then the tostring method is called -# and {@link frombuffer} is used. -# -# @param obj Object with array interface -# @param mode Mode to use (will be determined from type if None) -# @return An image memory. - -def fromarray(obj, mode=None): - arr = obj.__array_interface__ - shape = arr['shape'] - ndim = len(shape) - try: - strides = arr['strides'] - except KeyError: - strides = None - if mode is None: - try: - typekey = (1, 1) + shape[2:], arr['typestr'] - mode, rawmode = _fromarray_typemap[typekey] - except KeyError: - # print typekey - raise TypeError("Cannot handle this data type") - else: - rawmode = mode - if mode in ["1", "L", "I", "P", "F"]: - ndmax = 2 - elif mode == "RGB": - ndmax = 3 - else: - ndmax = 4 - if ndim > ndmax: - raise ValueError("Too many dimensions.") - - size = shape[1], shape[0] - if strides is not None: - obj = obj.tostring() - - return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) - -_fromarray_typemap = { - # (shape, typestr) => mode, rawmode - # first two members of shape are set to one - # ((1, 1), "|b1"): ("1", "1"), # broken - ((1, 1), "|u1"): ("L", "L"), - ((1, 1), "|i1"): ("I", "I;8"), - ((1, 1), "i2"): ("I", "I;16B"), - ((1, 1), "i4"): ("I", "I;32B"), - ((1, 1), "f4"): ("F", "F;32BF"), - ((1, 1), "f8"): ("F", "F;64BF"), - ((1, 1, 3), "|u1"): ("RGB", "RGB"), - ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), - } - -# shortcuts -_fromarray_typemap[((1, 1), _ENDIAN + "i4")] = ("I", "I") -_fromarray_typemap[((1, 1), _ENDIAN + "f4")] = ("F", "F") - -## -# Opens and identifies the given image file. -#

    -# This is a lazy operation; this function identifies the file, but the -# actual image data is not read from the file until you try to process -# the data (or call the {@link #Image.load} method). -# -# @def open(file, mode="r") -# @param file A filename (string) or a file object. The file object -# must implement read, seek, and tell methods, -# and be opened in binary mode. -# @param mode The mode. If given, this argument must be "r". -# @return An Image object. -# @exception IOError If the file cannot be found, or the image cannot be -# opened and identified. -# @see #new - -def open(fp, mode="r"): - "Open an image file, without loading the raster data" - - if mode != "r": - raise ValueError("bad mode") - - if isStringType(fp): - import __builtin__ - filename = fp - fp = __builtin__.open(fp, "rb") - else: - filename = "" - - prefix = fp.read(16) - - preinit() - - for i in ID: - try: - factory, accept = OPEN[i] - if not accept or accept(prefix): - fp.seek(0) - return factory(fp, filename) - except (SyntaxError, IndexError, TypeError): - pass - - if init(): - - for i in ID: - try: - factory, accept = OPEN[i] - if not accept or accept(prefix): - fp.seek(0) - return factory(fp, filename) - except (SyntaxError, IndexError, TypeError): - pass - - raise IOError("cannot identify image file") - -# -# Image processing. - -## -# Creates a new image by interpolating between two input images, using -# a constant alpha. -# -#

    -#    out = image1 * (1.0 - alpha) + image2 * alpha
    -# 
    -# -# @param im1 The first image. -# @param im2 The second image. Must have the same mode and size as -# the first image. -# @param alpha The interpolation alpha factor. If alpha is 0.0, a -# copy of the first image is returned. If alpha is 1.0, a copy of -# the second image is returned. There are no restrictions on the -# alpha value. If necessary, the result is clipped to fit into -# the allowed output range. -# @return An Image object. - -def blend(im1, im2, alpha): - "Interpolate between images." - - im1.load() - im2.load() - return im1._new(core.blend(im1.im, im2.im, alpha)) - -## -# Creates a new image by interpolating between two input images, -# using the mask as alpha. -# -# @param image1 The first image. -# @param image2 The second image. Must have the same mode and -# size as the first image. -# @param mask A mask image. This image can can have mode -# "1", "L", or "RGBA", and must have the same size as the -# other two images. - -def composite(image1, image2, mask): - "Create composite image by blending images using a transparency mask" - - image = image2.copy() - image.paste(image1, None, mask) - return image - -## -# Applies the function (which should take one argument) to each pixel -# in the given image. If the image has more than one band, the same -# function is applied to each band. Note that the function is -# evaluated once for each possible pixel value, so you cannot use -# random components or other generators. -# -# @def eval(image, function) -# @param image The input image. -# @param function A function object, taking one integer argument. -# @return An Image object. - -def eval(image, *args): - "Evaluate image expression" - - return image.point(args[0]) - -## -# Creates a new image from a number of single-band images. -# -# @param mode The mode to use for the output image. -# @param bands A sequence containing one single-band image for -# each band in the output image. All bands must have the -# same size. -# @return An Image object. - -def merge(mode, bands): - "Merge a set of single band images into a new multiband image." - - if getmodebands(mode) != len(bands) or "*" in mode: - raise ValueError("wrong number of bands") - for im in bands[1:]: - if im.mode != getmodetype(mode): - raise ValueError("mode mismatch") - if im.size != bands[0].size: - raise ValueError("size mismatch") - im = core.new(mode, bands[0].size) - for i in range(getmodebands(mode)): - bands[i].load() - im.putband(bands[i].im, i) - return bands[0]._new(im) - -# -------------------------------------------------------------------- -# Plugin registry - -## -# Register an image file plugin. This function should not be used -# in application code. -# -# @param id An image format identifier. -# @param factory An image file factory method. -# @param accept An optional function that can be used to quickly -# reject images having another format. - -def register_open(id, factory, accept=None): - id = string.upper(id) - ID.append(id) - OPEN[id] = factory, accept - -## -# Registers an image MIME type. This function should not be used -# in application code. -# -# @param id An image format identifier. -# @param mimetype The image MIME type for this format. - -def register_mime(id, mimetype): - MIME[string.upper(id)] = mimetype - -## -# Registers an image save function. This function should not be -# used in application code. -# -# @param id An image format identifier. -# @param driver A function to save images in this format. - -def register_save(id, driver): - SAVE[string.upper(id)] = driver - -## -# Registers an image extension. This function should not be -# used in application code. -# -# @param id An image format identifier. -# @param extension An extension used for this format. - -def register_extension(id, extension): - EXTENSION[string.lower(extension)] = string.upper(id) - - -# -------------------------------------------------------------------- -# Simple display support. User code may override this. - -def _show(image, **options): - # override me, as necessary - apply(_showxv, (image,), options) - -def _showxv(image, title=None, **options): - import ImageShow - apply(ImageShow.show, (image, title), options) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py deleted file mode 100755 index 82861fc7a2c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageChops.py +++ /dev/null @@ -1,302 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# standard channel operations -# -# History: -# 1996-03-24 fl Created -# 1996-08-13 fl Added logical operations (for "1" images) -# 2000-10-12 fl Added offset method (from Image.py) -# -# Copyright (c) 1997-2000 by Secret Labs AB -# Copyright (c) 1996-2000 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image - -## -# The ImageChops module contains a number of arithmetical image -# operations, called channel operations ("chops"). These can be -# used for various purposes, including special effects, image -# compositions, algorithmic painting, and more. -#

    -# At this time, channel operations are only implemented for 8-bit -# images (e.g. "L" and "RGB"). -#

    -# Most channel operations take one or two image arguments and returns -# a new image. Unless otherwise noted, the result of a channel -# operation is always clipped to the range 0 to MAX (which is 255 for -# all modes supported by the operations in this module). -## - -## -# Return an image with the same size as the given image, but filled -# with the given pixel value. -# -# @param image Reference image. -# @param value Pixel value. -# @return An image object. - -def constant(image, value): - "Fill a channel with a given grey level" - - return Image.new("L", image.size, value) - -## -# Copy image. -# -# @param image Source image. -# @return A copy of the source image. - -def duplicate(image): - "Create a copy of a channel" - - return image.copy() - -## -# Inverts an image -# (MAX - image). -# -# @param image Source image. -# @return An image object. - -def invert(image): - "Invert a channel" - - image.load() - return image._new(image.im.chop_invert()) - -## -# Compare images, and return lighter pixel value -# (max(image1, image2)). -#

    -# Compares the two images, pixel by pixel, and returns a new image -# containing the lighter values. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def lighter(image1, image2): - "Select the lighter pixels from each image" - - image1.load() - image2.load() - return image1._new(image1.im.chop_lighter(image2.im)) - -## -# Compare images, and return darker pixel value -# (min(image1, image2)). -#

    -# Compares the two images, pixel by pixel, and returns a new image -# containing the darker values. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def darker(image1, image2): - "Select the darker pixels from each image" - - image1.load() - image2.load() - return image1._new(image1.im.chop_darker(image2.im)) - -## -# Calculate absolute difference -# (abs(image1 - image2)). -#

    -# Returns the absolute value of the difference between the two images. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def difference(image1, image2): - "Subtract one image from another" - - image1.load() - image2.load() - return image1._new(image1.im.chop_difference(image2.im)) - -## -# Superimpose positive images -# (image1 * image2 / MAX). -#

    -# Superimposes two images on top of each other. If you multiply an -# image with a solid black image, the result is black. If you multiply -# with a solid white image, the image is unaffected. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def multiply(image1, image2): - "Superimpose two positive images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_multiply(image2.im)) - -## -# Superimpose negative images -# (MAX - ((MAX - image1) * (MAX - image2) / MAX)). -#

    -# Superimposes two inverted images on top of each other. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def screen(image1, image2): - "Superimpose two negative images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_screen(image2.im)) - -## -# Add images -# ((image1 + image2) / scale + offset). -#

    -# Adds two images, dividing the result by scale and adding the -# offset. If omitted, scale defaults to 1.0, and offset to 0.0. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def add(image1, image2, scale=1.0, offset=0): - "Add two images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_add(image2.im, scale, offset)) - -## -# Subtract images -# ((image1 - image2) / scale + offset). -#

    -# Subtracts two images, dividing the result by scale and adding the -# offset. If omitted, scale defaults to 1.0, and offset to 0.0. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def subtract(image1, image2, scale=1.0, offset=0): - "Subtract two images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) - -## -# Add images without clipping -# ((image1 + image2) % MAX). -#

    -# Adds two images, without clipping the result. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def add_modulo(image1, image2): - "Add two images without clipping" - - image1.load() - image2.load() - return image1._new(image1.im.chop_add_modulo(image2.im)) - -## -# Subtract images without clipping -# ((image1 - image2) % MAX). -#

    -# Subtracts two images, without clipping the result. -# -# @param image1 First image. -# @param image1 Second image. -# @return An image object. - -def subtract_modulo(image1, image2): - "Subtract two images without clipping" - - image1.load() - image2.load() - return image1._new(image1.im.chop_subtract_modulo(image2.im)) - -## -# Logical AND -# (image1 and image2). - -def logical_and(image1, image2): - "Logical and between two images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_and(image2.im)) - -## -# Logical OR -# (image1 or image2). - -def logical_or(image1, image2): - "Logical or between two images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_or(image2.im)) - -## -# Logical XOR -# (image1 xor image2). - -def logical_xor(image1, image2): - "Logical xor between two images" - - image1.load() - image2.load() - return image1._new(image1.im.chop_xor(image2.im)) - -## -# Blend images using constant transparency weight. -#

    -# Same as the blend function in the Image module. - -def blend(image1, image2, alpha): - "Blend two images using a constant transparency weight" - - return Image.blend(image1, image2, alpha) - -## -# Create composite using transparency mask. -#

    -# Same as the composite function in the Image module. - -def composite(image1, image2, mask): - "Create composite image by blending images using a transparency mask" - - return Image.composite(image1, image2, mask) - -## -# Offset image data. -#

    -# Returns a copy of the image where data has been offset by the given -# distances. Data wraps around the edges. If yoffset is omitted, it -# is assumed to be equal to xoffset. -# -# @param image Source image. -# @param xoffset The horizontal distance. -# @param yoffset The vertical distance. If omitted, both -# distances are set to the same value. -# @return An Image object. - -def offset(image, xoffset, yoffset=None): - "Offset image in horizontal and/or vertical direction" - if yoffset is None: - yoffset = xoffset - image.load() - return image._new(image.im.offset(xoffset, yoffset)) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py deleted file mode 100755 index b8a6dca71d9..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageCms.py +++ /dev/null @@ -1,786 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# optional color managment support, based on Kevin Cazabon's PyCMS -# library. -# -# History: -# 2009-03-08 fl Added to PIL. -# -# Copyright (C) 2002-2003 Kevin Cazabon -# Copyright (c) 2009 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. See -# below for the original description. -# - -DESCRIPTION = """ -pyCMS - - a Python / PIL interface to the littleCMS ICC Color Management System - Copyright (C) 2002-2003 Kevin Cazabon - kevin@cazabon.com - http://www.cazabon.com - - pyCMS home page: http://www.cazabon.com/pyCMS - littleCMS home page: http://www.littlecms.com - (littleCMS is Copyright (C) 1998-2001 Marti Maria) - - Originally released under LGPL. Graciously donated to PIL in - March 2009, for distribution under the standard PIL license - - The pyCMS.py module provides a "clean" interface between Python/PIL and - pyCMSdll, taking care of some of the more complex handling of the direct - pyCMSdll functions, as well as error-checking and making sure that all - relevant data is kept together. - - While it is possible to call pyCMSdll functions directly, it's not highly - recommended. - - Version History: - - 0.1.0 pil mod March 10, 2009 - - Renamed display profile to proof profile. The proof - profile is the profile of the device that is being - simulated, not the profile of the device which is - actually used to display/print the final simulation - (that'd be the output profile) - also see LCMSAPI.txt - input colorspace -> using 'renderingIntent' -> proof - colorspace -> using 'proofRenderingIntent' -> output - colorspace - - Added LCMS FLAGS support. - Added FLAGS["SOFTPROOFING"] as default flag for - buildProofTransform (otherwise the proof profile/intent - would be ignored). - - 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms - - 0.0.2 alpha Jan 6, 2002 - - Added try/except statements arount type() checks of - potential CObjects... Python won't let you use type() - on them, and raises a TypeError (stupid, if you ask me!) - - Added buildProofTransformFromOpenProfiles() function. - Additional fixes in DLL, see DLL code for details. - - 0.0.1 alpha first public release, Dec. 26, 2002 - - Known to-do list with current version (of Python interface, not pyCMSdll): - - none - -""" - -VERSION = "0.1.0 pil" - -# --------------------------------------------------------------------. - -import Image -import _imagingcms - -core = _imagingcms - -# -# intent/direction values - -INTENT_PERCEPTUAL = 0 -INTENT_RELATIVE_COLORIMETRIC = 1 -INTENT_SATURATION = 2 -INTENT_ABSOLUTE_COLORIMETRIC = 3 - -DIRECTION_INPUT = 0 -DIRECTION_OUTPUT = 1 -DIRECTION_PROOF = 2 - -# -# flags - -FLAGS = { - "MATRIXINPUT": 1, - "MATRIXOUTPUT": 2, - "MATRIXONLY": (1|2), - "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot - "NOPRELINEARIZATION": 16, # Don't create prelinearization tables on precalculated transforms (internal use) - "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) - "NOTCACHE": 64, # Inhibit 1-pixel cache - "NOTPRECALC": 256, - "NULLTRANSFORM": 512, # Don't transform anyway - "HIGHRESPRECALC": 1024, # Use more memory to give better accurancy - "LOWRESPRECALC": 2048, # Use less memory to minimize resouces - "WHITEBLACKCOMPENSATION": 8192, - "BLACKPOINTCOMPENSATION": 8192, - "GAMUTCHECK": 4096, # Out of Gamut alarm - "SOFTPROOFING": 16384, # Do softproofing - "PRESERVEBLACK": 32768, # Black preservation - "NODEFAULTRESOURCEDEF": 16777216, # CRD special - "GRIDPOINTS": lambda n: ((n) & 0xFF) << 16 # Gridpoints -} - -_MAX_FLAG = 0 -for flag in FLAGS.values(): - if isinstance(flag, type(0)): - _MAX_FLAG = _MAX_FLAG | flag - -# --------------------------------------------------------------------. -# Experimental PIL-level API -# --------------------------------------------------------------------. - -## -# Profile. - -class ImageCmsProfile: - - def __init__(self, profile): - # accepts a string (filename), a file-like object, or a low-level - # profile object - if Image.isStringType(profile): - self._set(core.profile_open(profile), profile) - elif hasattr(profile, "read"): - self._set(core.profile_fromstring(profile.read())) - else: - self._set(profile) # assume it's already a profile - - def _set(self, profile, filename=None): - self.profile = profile - self.filename = filename - if profile: - self.product_name = profile.product_name - self.product_info = profile.product_info - else: - self.product_name = None - self.product_info = None - -## -# Transform. This can be used with the procedural API, or with the -# standard {@link Image.point} method. - -class ImageCmsTransform(Image.ImagePointHandler): - - def __init__(self, input, output, input_mode, output_mode, - intent=INTENT_PERCEPTUAL, - proof=None, proof_intent=INTENT_ABSOLUTE_COLORIMETRIC, flags=0): - if proof is None: - self.transform = core.buildTransform( - input.profile, output.profile, - input_mode, output_mode, - intent, - flags - ) - else: - self.transform = core.buildProofTransform( - input.profile, output.profile, proof.profile, - input_mode, output_mode, - intent, proof_intent, - flags - ) - # Note: inputMode and outputMode are for pyCMS compatibility only - self.input_mode = self.inputMode = input_mode - self.output_mode = self.outputMode = output_mode - - def point(self, im): - return self.apply(im) - - def apply(self, im, imOut=None): - im.load() - if imOut is None: - imOut = Image.new(self.output_mode, im.size, None) - result = self.transform.apply(im.im.id, imOut.im.id) - return imOut - - def apply_in_place(self, im): - im.load() - if im.mode != self.output_mode: - raise ValueError("mode mismatch") # wrong output mode - result = self.transform.apply(im.im.id, im.im.id) - return im - -## -# (experimental) Fetches the profile for the current display device. -# Returns None if the profile is not known. - -def get_display_profile(handle=None): - import sys - if sys.platform == "win32": - import ImageWin - if isinstance(handle, ImageWin.HDC): - profile = core.get_display_profile_win32(handle, 1) - else: - profile = core.get_display_profile_win32(handle or 0) - else: - try: - get = _imagingcms.get_display_profile - except AttributeError: - return None - else: - profile = get() - return ImageCmsProfile(profile) - -# --------------------------------------------------------------------. -# pyCMS compatible layer -# --------------------------------------------------------------------. - -## -# (pyCMS) Exception class. This is used for all errors in the pyCMS API. - -class PyCMSError(Exception): - pass - -## -# (pyCMS) Applies an ICC transformation to a given image, mapping from -# inputProfile to outputProfile. - -def profileToProfile(im, inputProfile, outputProfile, renderingIntent=INTENT_PERCEPTUAL, outputMode=None, inPlace=0, flags=0): - """ - ImageCms.profileToProfile(im, inputProfile, outputProfile, - [renderingIntent], [outputMode], [inPlace]) - - Returns either None or a new PIL image object, depending on value of - inPlace (see below). - - im = an open PIL image object (i.e. Image.new(...) or - Image.open(...), etc.) - inputProfile = string, as a valid filename path to the ICC input - profile you wish to use for this image, or a profile object - outputProfile = string, as a valid filename path to the ICC output - profile you wish to use for this image, or a profile object - renderingIntent = integer (0-3) specifying the rendering intent you - wish to use for the transform - INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) - INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) - INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) - INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) - - see the pyCMS documentation for details on rendering intents and - what they do. - outputMode = a valid PIL mode for the output image (i.e. "RGB", "CMYK", - etc.). Note: if rendering the image "inPlace", outputMode MUST be - the same mode as the input, or omitted completely. If omitted, the - outputMode will be the same as the mode of the input image (im.mode) - inPlace = BOOL (1 = TRUE, None or 0 = FALSE). If TRUE, the original - image is modified in-place, and None is returned. If FALSE - (default), a new Image object is returned with the transform - applied. - flags = integer (0-...) specifying additional flags - - If the input or output profiles specified are not valid filenames, a - PyCMSError will be raised. If inPlace == TRUE and outputMode != im.mode, - a PyCMSError will be raised. If an error occurs during application of - the profiles, a PyCMSError will be raised. If outputMode is not a mode - supported by the outputProfile (or by pyCMS), a PyCMSError will be - raised. - - This function applies an ICC transformation to im from inputProfile's - color space to outputProfile's color space using the specified rendering - intent to decide how to handle out-of-gamut colors. - - OutputMode can be used to specify that a color mode conversion is to - be done using these profiles, but the specified profiles must be able - to handle that mode. I.e., if converting im from RGB to CMYK using - profiles, the input profile must handle RGB data, and the output - profile must handle CMYK data. - - """ - - if outputMode is None: - outputMode = im.mode - - if type(renderingIntent) != type(1) or not (0 <= renderingIntent <=3): - raise PyCMSError("renderingIntent must be an integer between 0 and 3") - - if type(flags) != type(1) or not (0 <= flags <= _MAX_FLAG): - raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) - - try: - if not isinstance(inputProfile, ImageCmsProfile): - inputProfile = ImageCmsProfile(inputProfile) - if not isinstance(outputProfile, ImageCmsProfile): - outputProfile = ImageCmsProfile(outputProfile) - transform = ImageCmsTransform( - inputProfile, outputProfile, im.mode, outputMode, renderingIntent, flags=flags - ) - if inPlace: - transform.apply_in_place(im) - imOut = None - else: - imOut = transform.apply(im) - except (IOError, TypeError, ValueError), v: - raise PyCMSError(v) - - return imOut - -## -# (pyCMS) Opens an ICC profile file. - -def getOpenProfile(profileFilename): - """ - ImageCms.getOpenProfile(profileFilename) - - Returns a CmsProfile class object. - - profileFilename = string, as a valid filename path to the ICC profile - you wish to open, or a file-like object. - - The PyCMSProfile object can be passed back into pyCMS for use in creating - transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). - - If profileFilename is not a vaild filename for an ICC profile, a - PyCMSError will be raised. - - """ - - try: - return ImageCmsProfile(profileFilename) - except (IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Builds an ICC transform mapping from the inputProfile to the -# outputProfile. Use applyTransform to apply the transform to a given -# image. - -def buildTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent=INTENT_PERCEPTUAL, flags=0): - """ - ImageCms.buildTransform(inputProfile, outputProfile, inMode, outMode, - [renderingIntent]) - - Returns a CmsTransform class object. - - inputProfile = string, as a valid filename path to the ICC input - profile you wish to use for this transform, or a profile object - outputProfile = string, as a valid filename path to the ICC output - profile you wish to use for this transform, or a profile object - inMode = string, as a valid PIL mode that the appropriate profile also - supports (i.e. "RGB", "RGBA", "CMYK", etc.) - outMode = string, as a valid PIL mode that the appropriate profile also - supports (i.e. "RGB", "RGBA", "CMYK", etc.) - renderingIntent = integer (0-3) specifying the rendering intent you - wish to use for the transform - INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) - INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) - INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) - INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) - see the pyCMS documentation for details on rendering intents and - what they do. - flags = integer (0-...) specifying additional flags - - If the input or output profiles specified are not valid filenames, a - PyCMSError will be raised. If an error occurs during creation of the - transform, a PyCMSError will be raised. - - If inMode or outMode are not a mode supported by the outputProfile (or - by pyCMS), a PyCMSError will be raised. - - This function builds and returns an ICC transform from the inputProfile - to the outputProfile using the renderingIntent to determine what to do - with out-of-gamut colors. It will ONLY work for converting images that - are in inMode to images that are in outMode color format (PIL mode, - i.e. "RGB", "RGBA", "CMYK", etc.). - - Building the transform is a fair part of the overhead in - ImageCms.profileToProfile(), so if you're planning on converting multiple - images using the same input/output settings, this can save you time. - Once you have a transform object, it can be used with - ImageCms.applyProfile() to convert images without the need to re-compute - the lookup table for the transform. - - The reason pyCMS returns a class object rather than a handle directly - to the transform is that it needs to keep track of the PIL input/output - modes that the transform is meant for. These attributes are stored in - the "inMode" and "outMode" attributes of the object (which can be - manually overridden if you really want to, but I don't know of any - time that would be of use, or would even work). - - """ - - if type(renderingIntent) != type(1) or not (0 <= renderingIntent <=3): - raise PyCMSError("renderingIntent must be an integer between 0 and 3") - - if type(flags) != type(1) or not (0 <= flags <= _MAX_FLAG): - raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) - - try: - if not isinstance(inputProfile, ImageCmsProfile): - inputProfile = ImageCmsProfile(inputProfile) - if not isinstance(outputProfile, ImageCmsProfile): - outputProfile = ImageCmsProfile(outputProfile) - return ImageCmsTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags) - except (IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Builds an ICC transform mapping from the inputProfile to the -# outputProfile, but tries to simulate the result that would be -# obtained on the proofProfile device. - -def buildProofTransform(inputProfile, outputProfile, proofProfile, inMode, outMode, renderingIntent=INTENT_PERCEPTUAL, proofRenderingIntent=INTENT_ABSOLUTE_COLORIMETRIC, flags=FLAGS["SOFTPROOFING"]): - """ - ImageCms.buildProofTransform(inputProfile, outputProfile, proofProfile, - inMode, outMode, [renderingIntent], [proofRenderingIntent]) - - Returns a CmsTransform class object. - - inputProfile = string, as a valid filename path to the ICC input - profile you wish to use for this transform, or a profile object - outputProfile = string, as a valid filename path to the ICC output - (monitor, usually) profile you wish to use for this transform, - or a profile object - proofProfile = string, as a valid filename path to the ICC proof - profile you wish to use for this transform, or a profile object - inMode = string, as a valid PIL mode that the appropriate profile also - supports (i.e. "RGB", "RGBA", "CMYK", etc.) - outMode = string, as a valid PIL mode that the appropriate profile also - supports (i.e. "RGB", "RGBA", "CMYK", etc.) - renderingIntent = integer (0-3) specifying the rendering intent you - wish to use for the input->proof (simulated) transform - INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) - INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) - INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) - INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) - see the pyCMS documentation for details on rendering intents and - what they do. - proofRenderingIntent = integer (0-3) specifying the rendering intent - you wish to use for proof->output transform - INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) - INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) - INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) - INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) - see the pyCMS documentation for details on rendering intents and - what they do. - flags = integer (0-...) specifying additional flags - - If the input, output, or proof profiles specified are not valid - filenames, a PyCMSError will be raised. - - If an error occurs during creation of the transform, a PyCMSError will - be raised. - - If inMode or outMode are not a mode supported by the outputProfile - (or by pyCMS), a PyCMSError will be raised. - - This function builds and returns an ICC transform from the inputProfile - to the outputProfile, but tries to simulate the result that would be - obtained on the proofProfile device using renderingIntent and - proofRenderingIntent to determine what to do with out-of-gamut - colors. This is known as "soft-proofing". It will ONLY work for - converting images that are in inMode to images that are in outMode - color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). - - Usage of the resulting transform object is exactly the same as with - ImageCms.buildTransform(). - - Proof profiling is generally used when using an output device to get a - good idea of what the final printed/displayed image would look like on - the proofProfile device when it's quicker and easier to use the - output device for judging color. Generally, this means that the - output device is a monitor, or a dye-sub printer (etc.), and the simulated - device is something more expensive, complicated, or time consuming - (making it difficult to make a real print for color judgement purposes). - - Soft-proofing basically functions by adjusting the colors on the - output device to match the colors of the device being simulated. However, - when the simulated device has a much wider gamut than the output - device, you may obtain marginal results. - - """ - - if type(renderingIntent) != type(1) or not (0 <= renderingIntent <=3): - raise PyCMSError("renderingIntent must be an integer between 0 and 3") - - if type(flags) != type(1) or not (0 <= flags <= _MAX_FLAG): - raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) - - try: - if not isinstance(inputProfile, ImageCmsProfile): - inputProfile = ImageCmsProfile(inputProfile) - if not isinstance(outputProfile, ImageCmsProfile): - outputProfile = ImageCmsProfile(outputProfile) - if not isinstance(proofProfile, ImageCmsProfile): - proofProfile = ImageCmsProfile(proofProfile) - return ImageCmsTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent, proofProfile, proofRenderingIntent, flags) - except (IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -buildTransformFromOpenProfiles = buildTransform -buildProofTransformFromOpenProfiles = buildProofTransform - -## -# (pyCMS) Applies a transform to a given image. - -def applyTransform(im, transform, inPlace=0): - """ - ImageCms.applyTransform(im, transform, [inPlace]) - - Returns either None, or a new PIL Image object, depending on the value - of inPlace (see below) - - im = a PIL Image object, and im.mode must be the same as the inMode - supported by the transform. - transform = a valid CmsTransform class object - inPlace = BOOL (1 == TRUE, 0 or None == FALSE). If TRUE, im is - modified in place and None is returned, if FALSE, a new Image - object with the transform applied is returned (and im is not - changed). The default is FALSE. - - If im.mode != transform.inMode, a PyCMSError is raised. - - If inPlace == TRUE and transform.inMode != transform.outMode, a - PyCMSError is raised. - - If im.mode, transfer.inMode, or transfer.outMode is not supported by - pyCMSdll or the profiles you used for the transform, a PyCMSError is - raised. - - If an error occurs while the transform is being applied, a PyCMSError - is raised. - - This function applies a pre-calculated transform (from - ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) to an - image. The transform can be used for multiple images, saving - considerable calcuation time if doing the same conversion multiple times. - - If you want to modify im in-place instead of receiving a new image as - the return value, set inPlace to TRUE. This can only be done if - transform.inMode and transform.outMode are the same, because we can't - change the mode in-place (the buffer sizes for some modes are - different). The default behavior is to return a new Image object of - the same dimensions in mode transform.outMode. - - """ - - try: - if inPlace: - transform.apply_in_place(im) - imOut = None - else: - imOut = transform.apply(im) - except (TypeError, ValueError), v: - raise PyCMSError(v) - - return imOut - -## -# (pyCMS) Creates a profile. - -def createProfile(colorSpace, colorTemp=-1): - """ - ImageCms.createProfile(colorSpace, [colorTemp]) - - Returns a CmsProfile class object - - colorSpace = string, the color space of the profile you wish to create. - Currently only "LAB", "XYZ", and "sRGB" are supported. - colorTemp = positive integer for the white point for the profile, in - degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for - D50 illuminant if omitted (5000k). colorTemp is ONLY applied to - LAB profiles, and is ignored for XYZ and sRGB. - - If colorSpace not in ["LAB", "XYZ", "sRGB"], a PyCMSError is raised - - If using LAB and colorTemp != a positive integer, a PyCMSError is raised. - - If an error occurs while creating the profile, a PyCMSError is raised. - - Use this function to create common profiles on-the-fly instead of - having to supply a profile on disk and knowing the path to it. It - returns a normal CmsProfile object that can be passed to - ImageCms.buildTransformFromOpenProfiles() to create a transform to apply - to images. - - """ - if colorSpace not in ["LAB", "XYZ", "sRGB"]: - raise PyCMSError("Color space not supported for on-the-fly profile creation (%s)" % colorSpace) - - if colorSpace == "LAB": - if type(colorTemp) == type(5000.0): - colorTemp = int(colorTemp + 0.5) - if type (colorTemp) != type (5000): - raise PyCMSError("Color temperature must be a positive integer, \"%s\" not valid" % colorTemp) - - try: - return core.createProfile(colorSpace, colorTemp) - except (TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Gets the internal product name for the given profile. - -def getProfileName(profile): - """ - ImageCms.getProfileName(profile) - - Returns a string containing the internal name of the profile as stored - in an ICC tag. - - profile = EITHER a valid CmsProfile object, OR a string of the - filename of an ICC profile. - - If profile isn't a valid CmsProfile object or filename to a profile, - a PyCMSError is raised If an error occurs while trying to obtain the - name tag, a PyCMSError is raised. - - Use this function to obtain the INTERNAL name of the profile (stored - in an ICC tag in the profile itself), usually the one used when the - profile was originally created. Sometimes this tag also contains - additional information supplied by the creator. - - """ - try: - # add an extra newline to preserve pyCMS compatibility - if not isinstance(profile, ImageCmsProfile): - profile = ImageCmsProfile(profile) - return profile.profile.product_name + "\n" - except (AttributeError, IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Gets the internal product information for the given profile. - -def getProfileInfo(profile): - """ - ImageCms.getProfileInfo(profile) - - Returns a string containing the internal profile information stored in - an ICC tag. - - profile = EITHER a valid CmsProfile object, OR a string of the - filename of an ICC profile. - - If profile isn't a valid CmsProfile object or filename to a profile, - a PyCMSError is raised. - - If an error occurs while trying to obtain the info tag, a PyCMSError - is raised - - Use this function to obtain the information stored in the profile's - info tag. This often contains details about the profile, and how it - was created, as supplied by the creator. - - """ - try: - if not isinstance(profile, ImageCmsProfile): - profile = ImageCmsProfile(profile) - # add an extra newline to preserve pyCMS compatibility - return profile.product_info + "\n" - except (AttributeError, IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Gets the default intent name for the given profile. - -def getDefaultIntent(profile): - """ - ImageCms.getDefaultIntent(profile) - - Returns integer 0-3 specifying the default rendering intent for this - profile. - INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) - INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) - INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) - INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) - see the pyCMS documentation for details on rendering intents and - what they do. - - profile = EITHER a valid CmsProfile object, OR a string of the - filename of an ICC profile. - - If profile isn't a valid CmsProfile object or filename to a profile, - a PyCMSError is raised. - - If an error occurs while trying to obtain the default intent, a - PyCMSError is raised. - - Use this function to determine the default (and usually best optomized) - rendering intent for this profile. Most profiles support multiple - rendering intents, but are intended mostly for one type of conversion. - If you wish to use a different intent than returned, use - ImageCms.isIntentSupported() to verify it will work first. - """ - try: - if not isinstance(profile, ImageCmsProfile): - profile = ImageCmsProfile(profile) - return profile.profile.rendering_intent - except (AttributeError, IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Checks if a given intent is supported. - -def isIntentSupported(profile, intent, direction): - """ - ImageCms.isIntentSupported(profile, intent, direction) - - Returns 1 if the intent/direction are supported, -1 if they are not. - - profile = EITHER a valid CmsProfile object, OR a string of the - filename of an ICC profile. - intent = integer (0-3) specifying the rendering intent you wish to use - with this profile - INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) - INTENT_RELATIVE_COLORIMETRIC =1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) - INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) - INTENT_ABSOLUTE_COLORIMETRIC =3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) - see the pyCMS documentation for details on rendering intents and - what they do. - direction = integer specifing if the profile is to be used for input, - output, or proof - INPUT = 0 (or use ImageCms.DIRECTION_INPUT) - OUTPUT = 1 (or use ImageCms.DIRECTION_OUTPUT) - PROOF = 2 (or use ImageCms.DIRECTION_PROOF) - - Use this function to verify that you can use your desired - renderingIntent with profile, and that profile can be used for the - input/output/proof profile as you desire. - - Some profiles are created specifically for one "direction", can cannot - be used for others. Some profiles can only be used for certain - rendering intents... so it's best to either verify this before trying - to create a transform with them (using this function), or catch the - potential PyCMSError that will occur if they don't support the modes - you select. - - """ - try: - if not isinstance(profile, ImageCmsProfile): - profile = ImageCmsProfile(profile) - # FIXME: I get different results for the same data w. different - # compilers. Bug in LittleCMS or in the binding? - if profile.profile.is_intent_supported(intent, direction): - return 1 - else: - return -1 - except (AttributeError, IOError, TypeError, ValueError), v: - raise PyCMSError(v) - -## -# (pyCMS) Fetches versions. - -def versions(): - import sys - return ( - VERSION, core.littlecms_version, sys.version.split()[0], Image.VERSION - ) - -# -------------------------------------------------------------------- - -if __name__ == "__main__": - # create a cheap manual from the __doc__ strings for the functions above - - import ImageCms - import string - print __doc__ - - for f in dir(pyCMS): - print "="*80 - print "%s" %f - - try: - exec ("doc = ImageCms.%s.__doc__" %(f)) - if string.find(doc, "pyCMS") >= 0: - # so we don't get the __doc__ string for imported modules - print doc - except AttributeError: - pass diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py deleted file mode 100755 index c3cca46db8f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageColor.py +++ /dev/null @@ -1,263 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# map CSS3-style colour description strings to RGB -# -# History: -# 2002-10-24 fl Added support for CSS-style color strings -# 2002-12-15 fl Added RGBA support -# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 -# 2004-07-19 fl Fixed gray/grey spelling issues -# 2009-03-05 fl Fixed rounding error in grayscale calculation -# -# Copyright (c) 2002-2004 by Secret Labs AB -# Copyright (c) 2002-2004 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image -import re, string - -try: - x = int("a", 16) -except TypeError: - # python 1.5.2 doesn't support int(x,b) - str2int = string.atoi -else: - str2int = int - -## -# Convert color string to RGB tuple. -# -# @param color A CSS3-style colour string. -# @return An RGB-tuple. -# @exception ValueError If the color string could not be interpreted -# as an RGB value. - -def getrgb(color): - # FIXME: add RGBA support - try: - rgb = colormap[color] - except KeyError: - try: - # fall back on case-insensitive lookup - rgb = colormap[string.lower(color)] - except KeyError: - rgb = None - # found color in cache - if rgb: - if isinstance(rgb, type(())): - return rgb - colormap[color] = rgb = getrgb(rgb) - return rgb - # check for known string formats - m = re.match("#\w\w\w$", color) - if m: - return ( - str2int(color[1]*2, 16), - str2int(color[2]*2, 16), - str2int(color[3]*2, 16) - ) - m = re.match("#\w\w\w\w\w\w$", color) - if m: - return ( - str2int(color[1:3], 16), - str2int(color[3:5], 16), - str2int(color[5:7], 16) - ) - m = re.match("rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) - if m: - return ( - str2int(m.group(1)), - str2int(m.group(2)), - str2int(m.group(3)) - ) - m = re.match("rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) - if m: - return ( - int((str2int(m.group(1)) * 255) / 100.0 + 0.5), - int((str2int(m.group(2)) * 255) / 100.0 + 0.5), - int((str2int(m.group(3)) * 255) / 100.0 + 0.5) - ) - m = re.match("hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) - if m: - from colorsys import hls_to_rgb - rgb = hls_to_rgb( - float(m.group(1)) / 360.0, - float(m.group(3)) / 100.0, - float(m.group(2)) / 100.0, - ) - return ( - int(rgb[0] * 255 + 0.5), - int(rgb[1] * 255 + 0.5), - int(rgb[2] * 255 + 0.5) - ) - raise ValueError("unknown color specifier: %r" % color) - -def getcolor(color, mode): - # same as getrgb, but converts the result to the given mode - color = getrgb(color) - if mode == "RGB": - return color - if mode == "RGBA": - r, g, b = color - return r, g, b, 255 - if Image.getmodebase(mode) == "L": - r, g, b = color - return (r*299 + g*587 + b*114)/1000 - return color - -colormap = { - # X11 colour table (from "CSS3 module: Color working draft"), with - # gray/grey spelling issues fixed. This is a superset of HTML 4.0 - # colour names used in CSS 1. - "aliceblue": "#f0f8ff", - "antiquewhite": "#faebd7", - "aqua": "#00ffff", - "aquamarine": "#7fffd4", - "azure": "#f0ffff", - "beige": "#f5f5dc", - "bisque": "#ffe4c4", - "black": "#000000", - "blanchedalmond": "#ffebcd", - "blue": "#0000ff", - "blueviolet": "#8a2be2", - "brown": "#a52a2a", - "burlywood": "#deb887", - "cadetblue": "#5f9ea0", - "chartreuse": "#7fff00", - "chocolate": "#d2691e", - "coral": "#ff7f50", - "cornflowerblue": "#6495ed", - "cornsilk": "#fff8dc", - "crimson": "#dc143c", - "cyan": "#00ffff", - "darkblue": "#00008b", - "darkcyan": "#008b8b", - "darkgoldenrod": "#b8860b", - "darkgray": "#a9a9a9", - "darkgrey": "#a9a9a9", - "darkgreen": "#006400", - "darkkhaki": "#bdb76b", - "darkmagenta": "#8b008b", - "darkolivegreen": "#556b2f", - "darkorange": "#ff8c00", - "darkorchid": "#9932cc", - "darkred": "#8b0000", - "darksalmon": "#e9967a", - "darkseagreen": "#8fbc8f", - "darkslateblue": "#483d8b", - "darkslategray": "#2f4f4f", - "darkslategrey": "#2f4f4f", - "darkturquoise": "#00ced1", - "darkviolet": "#9400d3", - "deeppink": "#ff1493", - "deepskyblue": "#00bfff", - "dimgray": "#696969", - "dimgrey": "#696969", - "dodgerblue": "#1e90ff", - "firebrick": "#b22222", - "floralwhite": "#fffaf0", - "forestgreen": "#228b22", - "fuchsia": "#ff00ff", - "gainsboro": "#dcdcdc", - "ghostwhite": "#f8f8ff", - "gold": "#ffd700", - "goldenrod": "#daa520", - "gray": "#808080", - "grey": "#808080", - "green": "#008000", - "greenyellow": "#adff2f", - "honeydew": "#f0fff0", - "hotpink": "#ff69b4", - "indianred": "#cd5c5c", - "indigo": "#4b0082", - "ivory": "#fffff0", - "khaki": "#f0e68c", - "lavender": "#e6e6fa", - "lavenderblush": "#fff0f5", - "lawngreen": "#7cfc00", - "lemonchiffon": "#fffacd", - "lightblue": "#add8e6", - "lightcoral": "#f08080", - "lightcyan": "#e0ffff", - "lightgoldenrodyellow": "#fafad2", - "lightgreen": "#90ee90", - "lightgray": "#d3d3d3", - "lightgrey": "#d3d3d3", - "lightpink": "#ffb6c1", - "lightsalmon": "#ffa07a", - "lightseagreen": "#20b2aa", - "lightskyblue": "#87cefa", - "lightslategray": "#778899", - "lightslategrey": "#778899", - "lightsteelblue": "#b0c4de", - "lightyellow": "#ffffe0", - "lime": "#00ff00", - "limegreen": "#32cd32", - "linen": "#faf0e6", - "magenta": "#ff00ff", - "maroon": "#800000", - "mediumaquamarine": "#66cdaa", - "mediumblue": "#0000cd", - "mediumorchid": "#ba55d3", - "mediumpurple": "#9370db", - "mediumseagreen": "#3cb371", - "mediumslateblue": "#7b68ee", - "mediumspringgreen": "#00fa9a", - "mediumturquoise": "#48d1cc", - "mediumvioletred": "#c71585", - "midnightblue": "#191970", - "mintcream": "#f5fffa", - "mistyrose": "#ffe4e1", - "moccasin": "#ffe4b5", - "navajowhite": "#ffdead", - "navy": "#000080", - "oldlace": "#fdf5e6", - "olive": "#808000", - "olivedrab": "#6b8e23", - "orange": "#ffa500", - "orangered": "#ff4500", - "orchid": "#da70d6", - "palegoldenrod": "#eee8aa", - "palegreen": "#98fb98", - "paleturquoise": "#afeeee", - "palevioletred": "#db7093", - "papayawhip": "#ffefd5", - "peachpuff": "#ffdab9", - "peru": "#cd853f", - "pink": "#ffc0cb", - "plum": "#dda0dd", - "powderblue": "#b0e0e6", - "purple": "#800080", - "red": "#ff0000", - "rosybrown": "#bc8f8f", - "royalblue": "#4169e1", - "saddlebrown": "#8b4513", - "salmon": "#fa8072", - "sandybrown": "#f4a460", - "seagreen": "#2e8b57", - "seashell": "#fff5ee", - "sienna": "#a0522d", - "silver": "#c0c0c0", - "skyblue": "#87ceeb", - "slateblue": "#6a5acd", - "slategray": "#708090", - "slategrey": "#708090", - "snow": "#fffafa", - "springgreen": "#00ff7f", - "steelblue": "#4682b4", - "tan": "#d2b48c", - "teal": "#008080", - "thistle": "#d8bfd8", - "tomato": "#ff6347", - "turquoise": "#40e0d0", - "violet": "#ee82ee", - "wheat": "#f5deb3", - "white": "#ffffff", - "whitesmoke": "#f5f5f5", - "yellow": "#ffff00", - "yellowgreen": "#9acd32", -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py deleted file mode 100755 index 5217a7366fe..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw.py +++ /dev/null @@ -1,378 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# drawing interface operations -# -# History: -# 1996-04-13 fl Created (experimental) -# 1996-08-07 fl Filled polygons, ellipses. -# 1996-08-13 fl Added text support -# 1998-06-28 fl Handle I and F images -# 1998-12-29 fl Added arc; use arc primitive to draw ellipses -# 1999-01-10 fl Added shape stuff (experimental) -# 1999-02-06 fl Added bitmap support -# 1999-02-11 fl Changed all primitives to take options -# 1999-02-20 fl Fixed backwards compatibility -# 2000-10-12 fl Copy on write, when necessary -# 2001-02-18 fl Use default ink for bitmap/text also in fill mode -# 2002-10-24 fl Added support for CSS-style color strings -# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing -# 2002-12-11 fl Refactored low-level drawing API (work in progress) -# 2004-08-26 fl Made Draw() a factory function, added getdraw() support -# 2004-09-04 fl Added width support to line primitive -# 2004-09-10 fl Added font mode handling -# 2006-06-19 fl Added font bearing support (getmask2) -# -# Copyright (c) 1997-2006 by Secret Labs AB -# Copyright (c) 1996-2006 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageColor - -try: - import warnings -except ImportError: - warnings = None - -## -# A simple 2D drawing interface for PIL images. -#

    -# Application code should use the Draw factory, instead of -# directly. - -class ImageDraw: - - ## - # Create a drawing instance. - # - # @param im The image to draw in. - # @param mode Optional mode to use for color values. For RGB - # images, this argument can be RGB or RGBA (to blend the - # drawing into the image). For all other modes, this argument - # must be the same as the image mode. If omitted, the mode - # defaults to the mode of the image. - - def __init__(self, im, mode=None): - im.load() - if im.readonly: - im._copy() # make it writable - blend = 0 - if mode is None: - mode = im.mode - if mode != im.mode: - if mode == "RGBA" and im.mode == "RGB": - blend = 1 - else: - raise ValueError("mode mismatch") - if mode == "P": - self.palette = im.palette - else: - self.palette = None - self.im = im.im - self.draw = Image.core.draw(self.im, blend) - self.mode = mode - if mode in ("I", "F"): - self.ink = self.draw.draw_ink(1, mode) - else: - self.ink = self.draw.draw_ink(-1, mode) - if mode in ("1", "P", "I", "F"): - # FIXME: fix Fill2 to properly support matte for I+F images - self.fontmode = "1" - else: - self.fontmode = "L" # aliasing is okay for other modes - self.fill = 0 - self.font = None - - ## - # Set the default pen color. - - def setink(self, ink): - # compatibility - if warnings: - warnings.warn( - "'setink' is deprecated; use keyword arguments instead", - DeprecationWarning, stacklevel=2 - ) - if Image.isStringType(ink): - ink = ImageColor.getcolor(ink, self.mode) - if self.palette and not Image.isNumberType(ink): - ink = self.palette.getcolor(ink) - self.ink = self.draw.draw_ink(ink, self.mode) - - ## - # Set the default background color. - - def setfill(self, onoff): - # compatibility - if warnings: - warnings.warn( - "'setfill' is deprecated; use keyword arguments instead", - DeprecationWarning, stacklevel=2 - ) - self.fill = onoff - - ## - # Set the default font. - - def setfont(self, font): - # compatibility - self.font = font - - ## - # Get the current default font. - - def getfont(self): - if not self.font: - # FIXME: should add a font repository - import ImageFont - self.font = ImageFont.load_default() - return self.font - - def _getink(self, ink, fill=None): - if ink is None and fill is None: - if self.fill: - fill = self.ink - else: - ink = self.ink - else: - if ink is not None: - if Image.isStringType(ink): - ink = ImageColor.getcolor(ink, self.mode) - if self.palette and not Image.isNumberType(ink): - ink = self.palette.getcolor(ink) - ink = self.draw.draw_ink(ink, self.mode) - if fill is not None: - if Image.isStringType(fill): - fill = ImageColor.getcolor(fill, self.mode) - if self.palette and not Image.isNumberType(fill): - fill = self.palette.getcolor(fill) - fill = self.draw.draw_ink(fill, self.mode) - return ink, fill - - ## - # Draw an arc. - - def arc(self, xy, start, end, fill=None): - ink, fill = self._getink(fill) - if ink is not None: - self.draw.draw_arc(xy, start, end, ink) - - ## - # Draw a bitmap. - - def bitmap(self, xy, bitmap, fill=None): - bitmap.load() - ink, fill = self._getink(fill) - if ink is None: - ink = fill - if ink is not None: - self.draw.draw_bitmap(xy, bitmap.im, ink) - - ## - # Draw a chord. - - def chord(self, xy, start, end, fill=None, outline=None): - ink, fill = self._getink(outline, fill) - if fill is not None: - self.draw.draw_chord(xy, start, end, fill, 1) - if ink is not None: - self.draw.draw_chord(xy, start, end, ink, 0) - - ## - # Draw an ellipse. - - def ellipse(self, xy, fill=None, outline=None): - ink, fill = self._getink(outline, fill) - if fill is not None: - self.draw.draw_ellipse(xy, fill, 1) - if ink is not None: - self.draw.draw_ellipse(xy, ink, 0) - - ## - # Draw a line, or a connected sequence of line segments. - - def line(self, xy, fill=None, width=0): - ink, fill = self._getink(fill) - if ink is not None: - self.draw.draw_lines(xy, ink, width) - - ## - # (Experimental) Draw a shape. - - def shape(self, shape, fill=None, outline=None): - # experimental - shape.close() - ink, fill = self._getink(outline, fill) - if fill is not None: - self.draw.draw_outline(shape, fill, 1) - if ink is not None: - self.draw.draw_outline(shape, ink, 0) - - ## - # Draw a pieslice. - - def pieslice(self, xy, start, end, fill=None, outline=None): - ink, fill = self._getink(outline, fill) - if fill is not None: - self.draw.draw_pieslice(xy, start, end, fill, 1) - if ink is not None: - self.draw.draw_pieslice(xy, start, end, ink, 0) - - ## - # Draw one or more individual pixels. - - def point(self, xy, fill=None): - ink, fill = self._getink(fill) - if ink is not None: - self.draw.draw_points(xy, ink) - - ## - # Draw a polygon. - - def polygon(self, xy, fill=None, outline=None): - ink, fill = self._getink(outline, fill) - if fill is not None: - self.draw.draw_polygon(xy, fill, 1) - if ink is not None: - self.draw.draw_polygon(xy, ink, 0) - - ## - # Draw a rectangle. - - def rectangle(self, xy, fill=None, outline=None): - ink, fill = self._getink(outline, fill) - if fill is not None: - self.draw.draw_rectangle(xy, fill, 1) - if ink is not None: - self.draw.draw_rectangle(xy, ink, 0) - - ## - # Draw text. - - def text(self, xy, text, fill=None, font=None, anchor=None): - ink, fill = self._getink(fill) - if font is None: - font = self.getfont() - if ink is None: - ink = fill - if ink is not None: - try: - mask, offset = font.getmask2(text, self.fontmode) - xy = xy[0] + offset[0], xy[1] + offset[1] - except AttributeError: - try: - mask = font.getmask(text, self.fontmode) - except TypeError: - mask = font.getmask(text) - self.draw.draw_bitmap(xy, mask, ink) - - ## - # Get the size of a given string, in pixels. - - def textsize(self, text, font=None): - if font is None: - font = self.getfont() - return font.getsize(text) - -## -# A simple 2D drawing interface for PIL images. -# -# @param im The image to draw in. -# @param mode Optional mode to use for color values. For RGB -# images, this argument can be RGB or RGBA (to blend the -# drawing into the image). For all other modes, this argument -# must be the same as the image mode. If omitted, the mode -# defaults to the mode of the image. - -def Draw(im, mode=None): - try: - return im.getdraw(mode) - except AttributeError: - return ImageDraw(im, mode) - -# experimental access to the outline API -try: - Outline = Image.core.outline -except: - Outline = None - -## -# (Experimental) A more advanced 2D drawing interface for PIL images, -# based on the WCK interface. -# -# @param im The image to draw in. -# @param hints An optional list of hints. -# @return A (drawing context, drawing resource factory) tuple. - -def getdraw(im=None, hints=None): - # FIXME: this needs more work! - # FIXME: come up with a better 'hints' scheme. - handler = None - if not hints or "nicest" in hints: - try: - import _imagingagg - handler = _imagingagg - except ImportError: - pass - if handler is None: - import ImageDraw2 - handler = ImageDraw2 - if im: - im = handler.Draw(im) - return im, handler - -## -# (experimental) Fills a bounded region with a given color. -# -# @param image Target image. -# @param xy Seed position (a 2-item coordinate tuple). -# @param value Fill color. -# @param border Optional border value. If given, the region consists of -# pixels with a color different from the border color. If not given, -# the region consists of pixels having the same color as the seed -# pixel. - -def floodfill(image, xy, value, border=None): - "Fill bounded region." - # based on an implementation by Eric S. Raymond - pixel = image.load() - x, y = xy - try: - background = pixel[x, y] - if background == value: - return # seed point already has fill color - pixel[x, y] = value - except IndexError: - return # seed point outside image - edge = [(x, y)] - if border is None: - while edge: - newedge = [] - for (x, y) in edge: - for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)): - try: - p = pixel[s, t] - except IndexError: - pass - else: - if p == background: - pixel[s, t] = value - newedge.append((s, t)) - edge = newedge - else: - while edge: - newedge = [] - for (x, y) in edge: - for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)): - try: - p = pixel[s, t] - except IndexError: - pass - else: - if p != value and p != border: - pixel[s, t] = value - newedge.append((s, t)) - edge = newedge diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py deleted file mode 100755 index dbf1a1f8893..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageDraw2.py +++ /dev/null @@ -1,105 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# WCK-style drawing interface operations -# -# History: -# 2003-12-07 fl created -# 2005-05-15 fl updated; added to PIL as ImageDraw2 -# 2005-05-15 fl added text support -# 2005-05-20 fl added arc/chord/pieslice support -# -# Copyright (c) 2003-2005 by Secret Labs AB -# Copyright (c) 2003-2005 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageColor, ImageDraw, ImageFont, ImagePath - -class Pen: - def __init__(self, color, width=1, opacity=255): - self.color = ImageColor.getrgb(color) - self.width = width - -class Brush: - def __init__(self, color, opacity=255): - self.color = ImageColor.getrgb(color) - -class Font: - def __init__(self, color, file, size=12): - # FIXME: add support for bitmap fonts - self.color = ImageColor.getrgb(color) - self.font = ImageFont.truetype(file, size) - -class Draw: - - def __init__(self, image, size=None, color=None): - if not hasattr(image, "im"): - image = Image.new(image, size, color) - self.draw = ImageDraw.Draw(image) - self.image = image - self.transform = None - - def flush(self): - return self.image - - def render(self, op, xy, pen, brush=None): - # handle color arguments - outline = fill = None; width = 1 - if isinstance(pen, Pen): - outline = pen.color - width = pen.width - elif isinstance(brush, Pen): - outline = brush.color - width = brush.width - if isinstance(brush, Brush): - fill = brush.color - elif isinstance(pen, Brush): - fill = pen.color - # handle transformation - if self.transform: - xy = ImagePath.Path(xy) - xy.transform(self.transform) - # render the item - if op == "line": - self.draw.line(xy, fill=outline, width=width) - else: - getattr(self.draw, op)(xy, fill=fill, outline=outline) - - def settransform(self, (xoffset, yoffset)): - self.transform = (1, 0, xoffset, 0, 1, yoffset) - - def arc(self, xy, start, end, *options): - self.render("arc", xy, start, end, *options) - - def chord(self, xy, start, end, *options): - self.render("chord", xy, start, end, *options) - - def ellipse(self, xy, *options): - self.render("ellipse", xy, *options) - - def line(self, xy, *options): - self.render("line", xy, *options) - - def pieslice(self, xy, start, end, *options): - self.render("pieslice", xy, start, end, *options) - - def polygon(self, xy, *options): - self.render("polygon", xy, *options) - - def rectangle(self, xy, *options): - self.render("rectangle", xy, *options) - - def symbol(self, xy, symbol, *options): - raise NotImplementedError("not in this version") - - def text(self, xy, text, font): - if self.transform: - xy = ImagePath.Path(xy) - xy.transform(self.transform) - self.draw.text(xy, text, font=font.font, fill=font.color) - - def textsize(self, text, font): - return self.draw.textsize(text, font=font.font) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py deleted file mode 100755 index 86a19e650e2..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageEnhance.py +++ /dev/null @@ -1,90 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# image enhancement classes -# -# For a background, see "Image Processing By Interpolation and -# Extrapolation", Paul Haeberli and Douglas Voorhies. Available -# at http://www.sgi.com/grafica/interp/index.html -# -# History: -# 1996-03-23 fl Created -# 2009-06-16 fl Fixed mean calculation -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - -import Image, ImageFilter, ImageStat - -class _Enhance: - - ## - # Returns an enhanced image. The enhancement factor is a floating - # point value controlling the enhancement. Factor 1.0 always - # returns a copy of the original image, lower factors mean less - # colour (brightness, contrast, etc), and higher values more. - # There are no restrictions on this value. - # - # @param factor Enhancement factor. - # @return An enhanced image. - - def enhance(self, factor): - return Image.blend(self.degenerate, self.image, factor) - -## -# Color enhancement object. -#

    -# This class can be used to adjust the colour balance of an image, in -# a manner similar to the controls on a colour TV set. An enhancement -# factor of 0.0 gives a black and white image, a factor of 1.0 gives -# the original image. - -class Color(_Enhance): - "Adjust image colour balance" - def __init__(self, image): - self.image = image - self.degenerate = image.convert("L").convert(image.mode) - -## -# Contrast enhancement object. -#

    -# This class can be used to control the contrast of an image, similar -# to the contrast control on a TV set. An enhancement factor of 0.0 -# gives a solid grey image, factor 1.0 gives the original image. - -class Contrast(_Enhance): - "Adjust image contrast" - def __init__(self, image): - self.image = image - mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) - self.degenerate = Image.new("L", image.size, mean).convert(image.mode) - -## -# Brightness enhancement object. -#

    -# This class can be used to control the brighntess of an image. An -# enhancement factor of 0.0 gives a black image, factor 1.0 gives the -# original image. - -class Brightness(_Enhance): - "Adjust image brightness" - def __init__(self, image): - self.image = image - self.degenerate = Image.new(image.mode, image.size, 0) - -## -# Sharpness enhancement object. -#

    -# This class can be used to adjust the sharpness of an image. The -# enhancement factor 0.0 gives a blurred image, 1.0 gives the original -# image, and a factor of 2.0 gives a sharpened image. - -class Sharpness(_Enhance): - "Adjust image sharpness" - def __init__(self, image): - self.image = image - self.degenerate = image.filter(ImageFilter.SMOOTH) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py deleted file mode 100755 index 8a97c1b5b34..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFile.py +++ /dev/null @@ -1,528 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# base class for image file handlers -# -# history: -# 1995-09-09 fl Created -# 1996-03-11 fl Fixed load mechanism. -# 1996-04-15 fl Added pcx/xbm decoders. -# 1996-04-30 fl Added encoders. -# 1996-12-14 fl Added load helpers -# 1997-01-11 fl Use encode_to_file where possible -# 1997-08-27 fl Flush output in _save -# 1998-03-05 fl Use memory mapping for some modes -# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" -# 1999-05-31 fl Added image parser -# 2000-10-12 fl Set readonly flag on memory-mapped images -# 2002-03-20 fl Use better messages for common decoder errors -# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available -# 2003-10-30 fl Added StubImageFile class -# 2004-02-25 fl Made incremental parser more robust -# -# Copyright (c) 1997-2004 by Secret Labs AB -# Copyright (c) 1995-2004 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image -import traceback, string, os - -MAXBLOCK = 65536 - -SAFEBLOCK = 1024*1024 - -ERRORS = { - -1: "image buffer overrun error", - -2: "decoding error", - -3: "unknown error", - -8: "bad configuration", - -9: "out of memory error" -} - -def raise_ioerror(error): - try: - message = Image.core.getcodecstatus(error) - except AttributeError: - message = ERRORS.get(error) - if not message: - message = "decoder error %d" % error - raise IOError(message + " when reading image file") - -# -# -------------------------------------------------------------------- -# Helpers - -def _tilesort(t1, t2): - # sort on offset - return cmp(t1[2], t2[2]) - -# -# -------------------------------------------------------------------- -# ImageFile base class - -## -# Base class for image file handlers. - -class ImageFile(Image.Image): - "Base class for image file format handlers." - - def __init__(self, fp=None, filename=None): - Image.Image.__init__(self) - - self.tile = None - self.readonly = 1 # until we know better - - self.decoderconfig = () - self.decodermaxblock = MAXBLOCK - - if Image.isStringType(fp): - # filename - self.fp = open(fp, "rb") - self.filename = fp - else: - # stream - self.fp = fp - self.filename = filename - - try: - self._open() - except IndexError, v: # end of data - if Image.DEBUG > 1: - traceback.print_exc() - raise SyntaxError, v - except TypeError, v: # end of data (ord) - if Image.DEBUG > 1: - traceback.print_exc() - raise SyntaxError, v - except KeyError, v: # unsupported mode - if Image.DEBUG > 1: - traceback.print_exc() - raise SyntaxError, v - except EOFError, v: # got header but not the first frame - if Image.DEBUG > 1: - traceback.print_exc() - raise SyntaxError, v - - if not self.mode or self.size[0] <= 0: - raise SyntaxError, "not identified by this driver" - - def draft(self, mode, size): - "Set draft mode" - - pass - - def verify(self): - "Check file integrity" - - # raise exception if something's wrong. must be called - # directly after open, and closes file when finished. - self.fp = None - - def load(self): - "Load image data based on tile list" - - pixel = Image.Image.load(self) - - if self.tile is None: - raise IOError("cannot load this image") - if not self.tile: - return pixel - - self.map = None - - readonly = 0 - - if self.filename and len(self.tile) == 1: - # try memory mapping - d, e, o, a = self.tile[0] - if d == "raw" and a[0] == self.mode and a[0] in Image._MAPMODES: - try: - if hasattr(Image.core, "map"): - # use built-in mapper - self.map = Image.core.map(self.filename) - self.map.seek(o) - self.im = self.map.readimage( - self.mode, self.size, a[1], a[2] - ) - else: - # use mmap, if possible - import mmap - file = open(self.filename, "r+") - size = os.path.getsize(self.filename) - # FIXME: on Unix, use PROT_READ etc - self.map = mmap.mmap(file.fileno(), size) - self.im = Image.core.map_buffer( - self.map, self.size, d, e, o, a - ) - readonly = 1 - except (AttributeError, EnvironmentError, ImportError): - self.map = None - - self.load_prepare() - - # look for read/seek overrides - try: - read = self.load_read - except AttributeError: - read = self.fp.read - - try: - seek = self.load_seek - except AttributeError: - seek = self.fp.seek - - if not self.map: - - # sort tiles in file order - self.tile.sort(_tilesort) - - try: - # FIXME: This is a hack to handle TIFF's JpegTables tag. - prefix = self.tile_prefix - except AttributeError: - prefix = "" - - for d, e, o, a in self.tile: - d = Image._getdecoder(self.mode, d, a, self.decoderconfig) - seek(o) - try: - d.setimage(self.im, e) - except ValueError: - continue - b = prefix - t = len(b) - while 1: - s = read(self.decodermaxblock) - if not s: - self.tile = [] - raise IOError("image file is truncated (%d bytes not processed)" % len(b)) - b = b + s - n, e = d.decode(b) - if n < 0: - break - b = b[n:] - t = t + n - - self.tile = [] - self.readonly = readonly - - self.fp = None # might be shared - - if not self.map and e < 0: - raise_ioerror(e) - - # post processing - if hasattr(self, "tile_post_rotate"): - # FIXME: This is a hack to handle rotated PCD's - self.im = self.im.rotate(self.tile_post_rotate) - self.size = self.im.size - - self.load_end() - - return Image.Image.load(self) - - def load_prepare(self): - # create image memory if necessary - if not self.im or\ - self.im.mode != self.mode or self.im.size != self.size: - self.im = Image.core.new(self.mode, self.size) - # create palette (optional) - if self.mode == "P": - Image.Image.load(self) - - def load_end(self): - # may be overridden - pass - - # may be defined for contained formats - # def load_seek(self, pos): - # pass - - # may be defined for blocked formats (e.g. PNG) - # def load_read(self, bytes): - # pass - -## -# Base class for stub image loaders. -#

    -# A stub loader is an image loader that can identify files of a -# certain format, but relies on external code to load the file. - -class StubImageFile(ImageFile): - "Base class for stub image loaders." - - def _open(self): - raise NotImplementedError( - "StubImageFile subclass must implement _open" - ) - - def load(self): - loader = self._load() - if loader is None: - raise IOError("cannot find loader for this %s file" % self.format) - image = loader.load(self) - assert image is not None - # become the other object (!) - self.__class__ = image.__class__ - self.__dict__ = image.__dict__ - - ## - # (Hook) Find actual image loader. - - def _load(self): - raise NotImplementedError( - "StubImageFile subclass must implement _load" - ) - -## -# (Internal) Support class for the Parser file. - -class _ParserFile: - # parser support class. - - def __init__(self, data): - self.data = data - self.offset = 0 - - def close(self): - self.data = self.offset = None - - def tell(self): - return self.offset - - def seek(self, offset, whence=0): - if whence == 0: - self.offset = offset - elif whence == 1: - self.offset = self.offset + offset - else: - # force error in Image.open - raise IOError("illegal argument to seek") - - def read(self, bytes=0): - pos = self.offset - if bytes: - data = self.data[pos:pos+bytes] - else: - data = self.data[pos:] - self.offset = pos + len(data) - return data - - def readline(self): - # FIXME: this is slow! - s = "" - while 1: - c = self.read(1) - if not c: - break - s = s + c - if c == "\n": - break - return s - -## -# Incremental image parser. This class implements the standard -# feed/close consumer interface. - -class Parser: - - incremental = None - image = None - data = None - decoder = None - finished = 0 - - ## - # (Consumer) Reset the parser. Note that you can only call this - # method immediately after you've created a parser; parser - # instances cannot be reused. - - def reset(self): - assert self.data is None, "cannot reuse parsers" - - ## - # (Consumer) Feed data to the parser. - # - # @param data A string buffer. - # @exception IOError If the parser failed to parse the image file. - - def feed(self, data): - # collect data - - if self.finished: - return - - if self.data is None: - self.data = data - else: - self.data = self.data + data - - # parse what we have - if self.decoder: - - if self.offset > 0: - # skip header - skip = min(len(self.data), self.offset) - self.data = self.data[skip:] - self.offset = self.offset - skip - if self.offset > 0 or not self.data: - return - - n, e = self.decoder.decode(self.data) - - if n < 0: - # end of stream - self.data = None - self.finished = 1 - if e < 0: - # decoding error - self.image = None - raise_ioerror(e) - else: - # end of image - return - self.data = self.data[n:] - - elif self.image: - - # if we end up here with no decoder, this file cannot - # be incrementally parsed. wait until we've gotten all - # available data - pass - - else: - - # attempt to open this file - try: - try: - fp = _ParserFile(self.data) - im = Image.open(fp) - finally: - fp.close() # explicitly close the virtual file - except IOError: - pass # not enough data - else: - flag = hasattr(im, "load_seek") or hasattr(im, "load_read") - if flag or len(im.tile) != 1: - # custom load code, or multiple tiles - self.decode = None - else: - # initialize decoder - im.load_prepare() - d, e, o, a = im.tile[0] - im.tile = [] - self.decoder = Image._getdecoder( - im.mode, d, a, im.decoderconfig - ) - self.decoder.setimage(im.im, e) - - # calculate decoder offset - self.offset = o - if self.offset <= len(self.data): - self.data = self.data[self.offset:] - self.offset = 0 - - self.image = im - - ## - # (Consumer) Close the stream. - # - # @return An image object. - # @exception IOError If the parser failed to parse the image file. - - def close(self): - # finish decoding - if self.decoder: - # get rid of what's left in the buffers - self.feed("") - self.data = self.decoder = None - if not self.finished: - raise IOError("image was incomplete") - if not self.image: - raise IOError("cannot parse this image") - if self.data: - # incremental parsing not possible; reopen the file - # not that we have all data - try: - fp = _ParserFile(self.data) - self.image = Image.open(fp) - finally: - self.image.load() - fp.close() # explicitly close the virtual file - return self.image - -# -------------------------------------------------------------------- - -## -# (Helper) Save image body to file. -# -# @param im Image object. -# @param fp File object. -# @param tile Tile list. - -def _save(im, fp, tile): - "Helper to save image based on tile list" - - im.load() - if not hasattr(im, "encoderconfig"): - im.encoderconfig = () - tile.sort(_tilesort) - # FIXME: make MAXBLOCK a configuration parameter - bufsize = max(MAXBLOCK, im.size[0] * 4) # see RawEncode.c - try: - fh = fp.fileno() - fp.flush() - except AttributeError: - # compress to Python file-compatible object - for e, b, o, a in tile: - e = Image._getencoder(im.mode, e, a, im.encoderconfig) - if o > 0: - fp.seek(o, 0) - e.setimage(im.im, b) - while 1: - l, s, d = e.encode(bufsize) - fp.write(d) - if s: - break - if s < 0: - raise IOError("encoder error %d when writing image file" % s) - else: - # slight speedup: compress to real file object - for e, b, o, a in tile: - e = Image._getencoder(im.mode, e, a, im.encoderconfig) - if o > 0: - fp.seek(o, 0) - e.setimage(im.im, b) - s = e.encode_to_file(fh, bufsize) - if s < 0: - raise IOError("encoder error %d when writing image file" % s) - try: - fp.flush() - except: pass - - -## -# Reads large blocks in a safe way. Unlike fp.read(n), this function -# doesn't trust the user. If the requested size is larger than -# SAFEBLOCK, the file is read block by block. -# -# @param fp File handle. Must implement a read method. -# @param size Number of bytes to read. -# @return A string containing up to size bytes of data. - -def _safe_read(fp, size): - if size <= 0: - return "" - if size <= SAFEBLOCK: - return fp.read(size) - data = [] - while size > 0: - block = fp.read(min(size, SAFEBLOCK)) - if not block: - break - data.append(block) - size = size - len(block) - return string.join(data, "") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py deleted file mode 100755 index c12a25738c1..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFileIO.py +++ /dev/null @@ -1,39 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# kludge to get basic ImageFileIO functionality -# -# History: -# 1998-08-06 fl Recreated -# -# Copyright (c) Secret Labs AB 1998-2002. -# -# See the README file for information on usage and redistribution. -# - -from StringIO import StringIO - -## -# The ImageFileIO module can be used to read an image from a -# socket, or any other stream device. -#

    -# This module is deprecated. New code should use the Parser -# class in the ImageFile module instead. -# -# @see ImageFile#Parser - -class ImageFileIO(StringIO): - - ## - # Adds buffering to a stream file object, in order to - # provide seek and tell methods required - # by the Image.open method. The stream object must - # implement read and close methods. - # - # @param fp Stream file handle. - # @see Image#open - - def __init__(self, fp): - data = fp.read() - StringIO.__init__(self, data) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py deleted file mode 100755 index 918bab177c1..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFilter.py +++ /dev/null @@ -1,289 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# standard filters -# -# History: -# 1995-11-27 fl Created -# 2002-06-08 fl Added rank and mode filters -# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1995-2002 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -class Filter: - pass - -## -# Convolution filter kernel. - -class Kernel(Filter): - - ## - # Create a convolution kernel. The current version only - # supports 3x3 and 5x5 integer and floating point kernels. - #

    - # In the current version, kernels can only be applied to - # "L" and "RGB" images. - # - # @def __init__(size, kernel, **options) - # @param size Kernel size, given as (width, height). In - # the current version, this must be (3,3) or (5,5). - # @param kernel A sequence containing kernel weights. - # @param **options Optional keyword arguments. - # @keyparam scale Scale factor. If given, the result for each - # pixel is divided by this value. The default is the sum - # of the kernel weights. - # @keyparam offset Offset. If given, this value is added to the - # result, after it has been divided by the scale factor. - - def __init__(self, size, kernel, scale=None, offset=0): - if scale is None: - # default scale is sum of kernel - scale = reduce(lambda a,b: a+b, kernel) - if size[0] * size[1] != len(kernel): - raise ValueError("not enough coefficients in kernel") - self.filterargs = size, scale, offset, kernel - - def filter(self, image): - if image.mode == "P": - raise ValueError("cannot filter palette images") - return apply(image.filter, self.filterargs) - -class BuiltinFilter(Kernel): - def __init__(self): - pass - -## -# Rank filter. - -class RankFilter(Filter): - name = "Rank" - - ## - # Create a rank filter. The rank filter sorts all pixels in - # a window of the given size, and returns the rank'th value. - # - # @param size The kernel size, in pixels. - # @param rank What pixel value to pick. Use 0 for a min filter, - # size*size/2 for a median filter, size*size-1 for a max filter, - # etc. - - def __init__(self, size, rank): - self.size = size - self.rank = rank - - def filter(self, image): - if image.mode == "P": - raise ValueError("cannot filter palette images") - image = image.expand(self.size/2, self.size/2) - return image.rankfilter(self.size, self.rank) - -## -# Median filter. Picks the median pixel value in a window with the -# given size. - -class MedianFilter(RankFilter): - name = "Median" - - ## - # Create a median filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - self.rank = size*size/2 - -## -# Min filter. Picks the lowest pixel value in a window with the given -# size. - -class MinFilter(RankFilter): - name = "Min" - - ## - # Create a min filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - self.rank = 0 - -## -# Max filter. Picks the largest pixel value in a window with the -# given size. - -class MaxFilter(RankFilter): - name = "Max" - - ## - # Create a max filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - self.rank = size*size-1 - -## -# Mode filter. Picks the most frequent pixel value in a box with the -# given size. Pixel values that occur only once or twice are ignored; -# if no pixel value occurs more than twice, the original pixel value -# is preserved. - -class ModeFilter(Filter): - name = "Mode" - - ## - # Create a mode filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - def filter(self, image): - return image.modefilter(self.size) - -## -# Gaussian blur filter. - -class GaussianBlur(Filter): - name = "GaussianBlur" - - def __init__(self, radius=2): - self.radius = 2 - def filter(self, image): - return image.gaussian_blur(self.radius) - -## -# Unsharp mask filter. - -class UnsharpMask(Filter): - name = "UnsharpMask" - - def __init__(self, radius=2, percent=150, threshold=3): - self.radius = 2 - self.percent = percent - self.threshold = threshold - def filter(self, image): - return image.unsharp_mask(self.radius, self.percent, self.threshold) - -## -# Simple blur filter. - -class BLUR(BuiltinFilter): - name = "Blur" - filterargs = (5, 5), 16, 0, ( - 1, 1, 1, 1, 1, - 1, 0, 0, 0, 1, - 1, 0, 0, 0, 1, - 1, 0, 0, 0, 1, - 1, 1, 1, 1, 1 - ) - -## -# Simple contour filter. - -class CONTOUR(BuiltinFilter): - name = "Contour" - filterargs = (3, 3), 1, 255, ( - -1, -1, -1, - -1, 8, -1, - -1, -1, -1 - ) - -## -# Simple detail filter. - -class DETAIL(BuiltinFilter): - name = "Detail" - filterargs = (3, 3), 6, 0, ( - 0, -1, 0, - -1, 10, -1, - 0, -1, 0 - ) - -## -# Simple edge enhancement filter. - -class EDGE_ENHANCE(BuiltinFilter): - name = "Edge-enhance" - filterargs = (3, 3), 2, 0, ( - -1, -1, -1, - -1, 10, -1, - -1, -1, -1 - ) - -## -# Simple stronger edge enhancement filter. - -class EDGE_ENHANCE_MORE(BuiltinFilter): - name = "Edge-enhance More" - filterargs = (3, 3), 1, 0, ( - -1, -1, -1, - -1, 9, -1, - -1, -1, -1 - ) - -## -# Simple embossing filter. - -class EMBOSS(BuiltinFilter): - name = "Emboss" - filterargs = (3, 3), 1, 128, ( - -1, 0, 0, - 0, 1, 0, - 0, 0, 0 - ) - -## -# Simple edge-finding filter. - -class FIND_EDGES(BuiltinFilter): - name = "Find Edges" - filterargs = (3, 3), 1, 0, ( - -1, -1, -1, - -1, 8, -1, - -1, -1, -1 - ) - -## -# Simple smoothing filter. - -class SMOOTH(BuiltinFilter): - name = "Smooth" - filterargs = (3, 3), 13, 0, ( - 1, 1, 1, - 1, 5, 1, - 1, 1, 1 - ) - -## -# Simple stronger smoothing filter. - -class SMOOTH_MORE(BuiltinFilter): - name = "Smooth More" - filterargs = (5, 5), 100, 0, ( - 1, 1, 1, 1, 1, - 1, 5, 5, 5, 1, - 1, 5, 44, 5, 1, - 1, 5, 5, 5, 1, - 1, 1, 1, 1, 1 - ) - -## -# Simple sharpening filter. - -class SHARPEN(BuiltinFilter): - name = "Sharpen" - filterargs = (3, 3), 16, 0, ( - -2, -2, -2, - -2, 32, -2, - -2, -2, -2 - ) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py deleted file mode 100755 index 3ea2f2f8efd..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageFont.py +++ /dev/null @@ -1,390 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PIL raster font management -# -# History: -# 1996-08-07 fl created (experimental) -# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 -# 1999-02-06 fl rewrote most font management stuff in C -# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) -# 2001-02-17 fl added freetype support -# 2001-05-09 fl added TransposedFont wrapper class -# 2002-03-04 fl make sure we have a "L" or "1" font -# 2002-12-04 fl skip non-directory entries in the system path -# 2003-04-29 fl add embedded default font -# 2003-09-27 fl added support for truetype charmap encodings -# -# Todo: -# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) -# -# Copyright (c) 1997-2003 by Secret Labs AB -# Copyright (c) 1996-2003 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image -import os, string, sys - -class _imagingft_not_installed: - # module placeholder - def __getattr__(self, id): - raise ImportError("The _imagingft C module is not installed") - -try: - import _imagingft - core = _imagingft - del _imagingft -except ImportError: - core = _imagingft_not_installed() - -# FIXME: add support for pilfont2 format (see FontFile.py) - -# -------------------------------------------------------------------- -# Font metrics format: -# "PILfont" LF -# fontdescriptor LF -# (optional) key=value... LF -# "DATA" LF -# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) -# -# To place a character, cut out srcbox and paste at dstbox, -# relative to the character position. Then move the character -# position according to dx, dy. -# -------------------------------------------------------------------- - -## -# The ImageFont module defines a class with the same name. -# Instances of this class store bitmap fonts, and are used with the -# text method of the ImageDraw class. -#

    -# PIL uses it's own font file format to store bitmap fonts. You can -# use the pilfont utility to convert BDF and PCF font -# descriptors (X window font formats) to this format. -#

    -# Starting with version 1.1.4, PIL can be configured to support -# TrueType and OpenType fonts. For earlier version, TrueType -# support is only available as part of the imToolkit package -# -# @see ImageDraw#ImageDraw.text -# @see pilfont - -class ImageFont: - "PIL font wrapper" - - def _load_pilfont(self, filename): - - file = open(filename, "rb") - - for ext in (".png", ".gif", ".pbm"): - try: - fullname = os.path.splitext(filename)[0] + ext - image = Image.open(fullname) - except: - pass - else: - if image and image.mode in ("1", "L"): - break - else: - raise IOError("cannot find glyph data file") - - self.file = fullname - - return self._load_pilfont_data(file, image) - - def _load_pilfont_data(self, file, image): - - # read PILfont header - if file.readline() != "PILfont\n": - raise SyntaxError("Not a PILfont file") - d = string.split(file.readline(), ";") - self.info = [] # FIXME: should be a dictionary - while True: - s = file.readline() - if not s or s == "DATA\n": - break - self.info.append(s) - - # read PILfont metrics - data = file.read(256*20) - - # check image - if image.mode not in ("1", "L"): - raise TypeError("invalid font image mode") - - image.load() - - self.font = Image.core.font(image.im, data) - - # delegate critical operations to internal type - self.getsize = self.font.getsize - self.getmask = self.font.getmask - -## -# Wrapper for FreeType fonts. Application code should use the -# truetype factory function to create font objects. - -class FreeTypeFont: - "FreeType font wrapper (requires _imagingft service)" - - def __init__(self, file, size, index=0, encoding=""): - # FIXME: use service provider instead - self.font = core.getfont(file, size, index, encoding) - - def getname(self): - return self.font.family, self.font.style - - def getmetrics(self): - return self.font.ascent, self.font.descent - - def getsize(self, text): - return self.font.getsize(text)[0] - - def getmask(self, text, mode=""): - return self.getmask2(text, mode)[0] - - def getmask2(self, text, mode="", fill=Image.core.fill): - size, offset = self.font.getsize(text) - im = fill("L", size, 0) - self.font.render(text, im.id, mode=="1") - return im, offset - -## -# Wrapper that creates a transposed font from any existing font -# object. -# -# @param font A font object. -# @param orientation An optional orientation. If given, this should -# be one of Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, -# Image.ROTATE_90, Image.ROTATE_180, or Image.ROTATE_270. - -class TransposedFont: - "Wrapper for writing rotated or mirrored text" - - def __init__(self, font, orientation=None): - self.font = font - self.orientation = orientation # any 'transpose' argument, or None - - def getsize(self, text): - w, h = self.font.getsize(text) - if self.orientation in (Image.ROTATE_90, Image.ROTATE_270): - return h, w - return w, h - - def getmask(self, text, mode=""): - im = self.font.getmask(text, mode) - if self.orientation is not None: - return im.transpose(self.orientation) - return im - -## -# Load font file. This function loads a font object from the given -# bitmap font file, and returns the corresponding font object. -# -# @param filename Name of font file. -# @return A font object. -# @exception IOError If the file could not be read. - -def load(filename): - "Load a font file." - f = ImageFont() - f._load_pilfont(filename) - return f - -## -# Load a TrueType or OpenType font file, and create a font object. -# This function loads a font object from the given file, and creates -# a font object for a font of the given size. -#

    -# This function requires the _imagingft service. -# -# @param filename A truetype font file. Under Windows, if the file -# is not found in this filename, the loader also looks in Windows -# fonts directory -# @param size The requested size, in points. -# @param index Which font face to load (default is first available face). -# @param encoding Which font encoding to use (default is Unicode). Common -# encodings are "unic" (Unicode), "symb" (Microsoft Symbol), "ADOB" -# (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple Roman). -# See the FreeType documentation for more information. -# @return A font object. -# @exception IOError If the file could not be read. - -def truetype(filename, size, index=0, encoding=""): - "Load a truetype font file." - try: - return FreeTypeFont(filename, size, index, encoding) - except IOError: - if sys.platform == "win32": - # check the windows font repository - # NOTE: must use uppercase WINDIR, to work around bugs in - # 1.5.2's os.environ.get() - windir = os.environ.get("WINDIR") - if windir: - filename = os.path.join(windir, "fonts", filename) - return FreeTypeFont(filename, size, index, encoding) - raise - -## -# Load font file. Same as load, but searches for a bitmap font along -# the Python path. -# -# @param filename Name of font file. -# @return A font object. -# @exception IOError If the file could not be read. -# @see #load - -def load_path(filename): - "Load a font file, searching along the Python path." - for dir in sys.path: - if Image.isDirectory(dir): - try: - return load(os.path.join(dir, filename)) - except IOError: - pass - raise IOError("cannot find font file") - -## -# Load a (probably rather ugly) default font. -# -# @return A font object. - -def load_default(): - "Load a default font." - from StringIO import StringIO - import base64 - f = ImageFont() - f._load_pilfont_data( - # courB08 - StringIO(base64.decodestring(''' -UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA -BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL -AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA -AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB -ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A -BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB -//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA -AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH -AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA -ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv -AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ -/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 -AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA -AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG -AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA -BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA -AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA -2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF -AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// -+gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA -////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA -BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv -AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA -AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA -AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA -BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// -//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA -AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF -AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB -mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn -AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA -AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 -AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA -Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB -//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA -AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ -AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC -DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ -AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ -+wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 -AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ -///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG -AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA -BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA -Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC -eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG -AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// -+gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA -////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA -BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT -AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A -AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA -Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA -Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// -//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA -AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ -AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA -LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 -AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA -AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 -AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA -AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG -AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA -EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK -AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA -pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG -AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// -+QAGAAIAzgAKANUAEw== -''')), Image.open(StringIO(base64.decodestring(''' -iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u -Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 -M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g -LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F -IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA -Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 -NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx -in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 -SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY -AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt -y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG -ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY -lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H -/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 -AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 -c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ -/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw -pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv -oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR -evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA -AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// -Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR -w7IkEbzhVQAAAABJRU5ErkJggg== -''')))) - return f - -if __name__ == "__main__": - # create font data chunk for embedding - import base64, os, sys - font = "../Images/courB08" - print " f._load_pilfont_data(" - print " # %s" % os.path.basename(font) - print " StringIO(base64.decodestring('''" - base64.encode(open(font + ".pil", "rb"), sys.stdout) - print "''')), Image.open(StringIO(base64.decodestring('''" - base64.encode(open(font + ".pbm", "rb"), sys.stdout) - print "'''))))" diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py deleted file mode 100755 index 5c58b6ca918..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGL.py +++ /dev/null @@ -1,28 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# OpenGL pixmap/texture interface (requires imToolkit OpenGL extensions) -# -# History: -# 2003-09-13 fl Added -# -# Copyright (c) Secret Labs AB 2003. -# -# See the README file for information on usage and redistribution. -# - -## -# OpenGL pixmap/texture interface (requires imToolkit OpenGL -# extensions.) -## - -import _imaginggl - -## -# Texture factory. - -class TextureFactory: - pass # overwritten by the _imaginggl module - -from _imaginggl import * diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py deleted file mode 100755 index 9bcd804d3a3..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageGrab.py +++ /dev/null @@ -1,71 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# screen grabber (windows only) -# -# History: -# 2001-04-26 fl created -# 2001-09-17 fl use builtin driver, if present -# 2002-11-19 fl added grabclipboard support -# -# Copyright (c) 2001-2002 by Secret Labs AB -# Copyright (c) 2001-2002 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image - -## -# (New in 1.1.3) The ImageGrab module can be used to copy -# the contents of the screen to a PIL image memory. -#

    -# The current version works on Windows only.

    -# -# @since 1.1.3 -## - -try: - # built-in driver (1.1.3 and later) - grabber = Image.core.grabscreen -except AttributeError: - # stand-alone driver (pil plus) - import _grabscreen - grabber = _grabscreen.grab - -## -# (New in 1.1.3) Take a snapshot of the screen. The pixels inside the -# bounding box are returned as an "RGB" image. If the bounding box is -# omitted, the entire screen is copied. -# -# @param bbox What region to copy. Default is the entire screen. -# @return An image -# @since 1.1.3 - -def grab(bbox=None): - size, data = grabber() - im = Image.fromstring( - "RGB", size, data, - # RGB, 32-bit line padding, origo in lower left corner - "raw", "BGR", (size[0]*3 + 3) & -4, -1 - ) - if bbox: - im = im.crop(bbox) - return im - -## -# (New in 1.1.4) Take a snapshot of the clipboard image, if any. -# -# @return An image, a list of filenames, or None if the clipboard does -# not contain image data or filenames. Note that if a list is -# returned, the filenames may not represent image files. -# @since 1.1.4 - -def grabclipboard(): - debug = 0 # temporary interface - data = Image.core.grabclipboard(debug) - if Image.isStringType(data): - import BmpImagePlugin, StringIO - return BmpImagePlugin.DibImageFile(StringIO.StringIO(data)) - return data diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py deleted file mode 100755 index 56c42a45a9d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMath.py +++ /dev/null @@ -1,207 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# a simple math add-on for the Python Imaging Library -# -# History: -# 1999-02-15 fl Original PIL Plus release -# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 -# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 -# -# Copyright (c) 1999-2005 by Secret Labs AB -# Copyright (c) 2005 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image -import _imagingmath - -VERBOSE = 0 - -def _isconstant(v): - return isinstance(v, type(0)) or isinstance(v, type(0.0)) - -class _Operand: - # wraps an image operand, providing standard operators - - def __init__(self, im): - self.im = im - - def __fixup(self, im1): - # convert image to suitable mode - if isinstance(im1, _Operand): - # argument was an image. - if im1.im.mode in ("1", "L"): - return im1.im.convert("I") - elif im1.im.mode in ("I", "F"): - return im1.im - else: - raise ValueError, "unsupported mode: %s" % im1.im.mode - else: - # argument was a constant - if _isconstant(im1) and self.im.mode in ("1", "L", "I"): - return Image.new("I", self.im.size, im1) - else: - return Image.new("F", self.im.size, im1) - - def apply(self, op, im1, im2=None, mode=None): - im1 = self.__fixup(im1) - if im2 is None: - # unary operation - out = Image.new(mode or im1.mode, im1.size, None) - im1.load() - try: - op = getattr(_imagingmath, op+"_"+im1.mode) - except AttributeError: - raise TypeError, "bad operand type for '%s'" % op - _imagingmath.unop(op, out.im.id, im1.im.id) - else: - # binary operation - im2 = self.__fixup(im2) - if im1.mode != im2.mode: - # convert both arguments to floating point - if im1.mode != "F": im1 = im1.convert("F") - if im2.mode != "F": im2 = im2.convert("F") - if im1.mode != im2.mode: - raise ValueError, "mode mismatch" - if im1.size != im2.size: - # crop both arguments to a common size - size = (min(im1.size[0], im2.size[0]), - min(im1.size[1], im2.size[1])) - if im1.size != size: im1 = im1.crop((0, 0) + size) - if im2.size != size: im2 = im2.crop((0, 0) + size) - out = Image.new(mode or im1.mode, size, None) - else: - out = Image.new(mode or im1.mode, im1.size, None) - im1.load(); im2.load() - try: - op = getattr(_imagingmath, op+"_"+im1.mode) - except AttributeError: - raise TypeError, "bad operand type for '%s'" % op - _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) - return _Operand(out) - - # unary operators - def __nonzero__(self): - # an image is "true" if it contains at least one non-zero pixel - return self.im.getbbox() is not None - def __abs__(self): - return self.apply("abs", self) - def __pos__(self): - return self - def __neg__(self): - return self.apply("neg", self) - - # binary operators - def __add__(self, other): - return self.apply("add", self, other) - def __radd__(self, other): - return self.apply("add", other, self) - def __sub__(self, other): - return self.apply("sub", self, other) - def __rsub__(self, other): - return self.apply("sub", other, self) - def __mul__(self, other): - return self.apply("mul", self, other) - def __rmul__(self, other): - return self.apply("mul", other, self) - def __div__(self, other): - return self.apply("div", self, other) - def __rdiv__(self, other): - return self.apply("div", other, self) - def __mod__(self, other): - return self.apply("mod", self, other) - def __rmod__(self, other): - return self.apply("mod", other, self) - def __pow__(self, other): - return self.apply("pow", self, other) - def __rpow__(self, other): - return self.apply("pow", other, self) - - # bitwise - def __invert__(self): - return self.apply("invert", self) - def __and__(self, other): - return self.apply("and", self, other) - def __rand__(self, other): - return self.apply("and", other, self) - def __or__(self, other): - return self.apply("or", self, other) - def __ror__(self, other): - return self.apply("or", other, self) - def __xor__(self, other): - return self.apply("xor", self, other) - def __rxor__(self, other): - return self.apply("xor", other, self) - def __lshift__(self, other): - return self.apply("lshift", self, other) - def __rshift__(self, other): - return self.apply("rshift", self, other) - - # logical - def __eq__(self, other): - return self.apply("eq", self, other) - def __ne__(self, other): - return self.apply("ne", self, other) - def __lt__(self, other): - return self.apply("lt", self, other) - def __le__(self, other): - return self.apply("le", self, other) - def __gt__(self, other): - return self.apply("gt", self, other) - def __ge__(self, other): - return self.apply("ge", self, other) - -# conversions -def imagemath_int(self): - return _Operand(self.im.convert("I")) -def imagemath_float(self): - return _Operand(self.im.convert("F")) - -# logical -def imagemath_equal(self, other): - return self.apply("eq", self, other, mode="I") -def imagemath_notequal(self, other): - return self.apply("ne", self, other, mode="I") - -def imagemath_min(self, other): - return self.apply("min", self, other) -def imagemath_max(self, other): - return self.apply("max", self, other) - -def imagemath_convert(self, mode): - return _Operand(self.im.convert(mode)) - -ops = {} -for k, v in globals().items(): - if k[:10] == "imagemath_": - ops[k[10:]] = v - -## -# Evaluates an image expression. -# -# @param expression A string containing a Python-style expression. -# @keyparam options Values to add to the evaluation context. You -# can either use a dictionary, or one or more keyword arguments. -# @return The evaluated expression. This is usually an image object, -# but can also be an integer, a floating point value, or a pixel -# tuple, depending on the expression. - -def eval(expression, _dict={}, **kw): - - # build execution namespace - args = ops.copy() - args.update(_dict) - args.update(kw) - for k, v in args.items(): - if hasattr(v, "im"): - args[k] = _Operand(v) - - import __builtin__ - out =__builtin__.eval(expression, args) - try: - return out.im - except AttributeError: - return out diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py deleted file mode 100755 index 1d5df1c6dca..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageMode.py +++ /dev/null @@ -1,50 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# standard mode descriptors -# -# History: -# 2006-03-20 fl Added -# -# Copyright (c) 2006 by Secret Labs AB. -# Copyright (c) 2006 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -# mode descriptor cache -_modes = {} - -## -# Wrapper for mode strings. - -class ModeDescriptor: - - def __init__(self, mode, bands, basemode, basetype): - self.mode = mode - self.bands = bands - self.basemode = basemode - self.basetype = basetype - - def __str__(self): - return self.mode - -## -# Gets a mode descriptor for the given mode. - -def getmode(mode): - if not _modes: - # initialize mode cache - import Image - # core modes - for m, (basemode, basetype, bands) in Image._MODEINFO.items(): - _modes[m] = ModeDescriptor(m, bands, basemode, basetype) - # extra experimental modes - _modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") - _modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") - # mapping modes - _modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L") - _modes["I;16L"] = ModeDescriptor("I;16L", "I", "L", "L") - _modes["I;16B"] = ModeDescriptor("I;16B", "I", "L", "L") - return _modes[mode] diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py deleted file mode 100755 index b51d78e258b..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageOps.py +++ /dev/null @@ -1,439 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# standard image operations -# -# History: -# 2001-10-20 fl Created -# 2001-10-23 fl Added autocontrast operator -# 2001-12-18 fl Added Kevin's fit operator -# 2004-03-14 fl Fixed potential division by zero in equalize -# 2005-05-05 fl Fixed equalize for low number of values -# -# Copyright (c) 2001-2004 by Secret Labs AB -# Copyright (c) 2001-2004 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image -import operator - -## -# (New in 1.1.3) The ImageOps module contains a number of -# 'ready-made' image processing operations. This module is somewhat -# experimental, and most operators only work on L and RGB images. -# -# @since 1.1.3 -## - -# -# helpers - -def _border(border): - if type(border) is type(()): - if len(border) == 2: - left, top = right, bottom = border - elif len(border) == 4: - left, top, right, bottom = border - else: - left = top = right = bottom = border - return left, top, right, bottom - -def _color(color, mode): - if Image.isStringType(color): - import ImageColor - color = ImageColor.getcolor(color, mode) - return color - -def _lut(image, lut): - if image.mode == "P": - # FIXME: apply to lookup table, not image data - raise NotImplementedError("mode P support coming soon") - elif image.mode in ("L", "RGB"): - if image.mode == "RGB" and len(lut) == 256: - lut = lut + lut + lut - return image.point(lut) - else: - raise IOError, "not supported for this image mode" - -# -# actions - -## -# Maximize (normalize) image contrast. This function calculates a -# histogram of the input image, removes cutoff percent of the -# lightest and darkest pixels from the histogram, and remaps the image -# so that the darkest pixel becomes black (0), and the lightest -# becomes white (255). -# -# @param image The image to process. -# @param cutoff How many percent to cut off from the histogram. -# @param ignore The background pixel value (use None for no background). -# @return An image. - -def autocontrast(image, cutoff=0, ignore=None): - "Maximize image contrast, based on histogram" - histogram = image.histogram() - lut = [] - for layer in range(0, len(histogram), 256): - h = histogram[layer:layer+256] - if ignore is not None: - # get rid of outliers - try: - h[ignore] = 0 - except TypeError: - # assume sequence - for ix in ignore: - h[ix] = 0 - if cutoff: - # cut off pixels from both ends of the histogram - # get number of pixels - n = 0 - for ix in range(256): - n = n + h[ix] - # remove cutoff% pixels from the low end - cut = n * cutoff / 100 - for lo in range(256): - if cut > h[lo]: - cut = cut - h[lo] - h[lo] = 0 - else: - h[lo] = h[lo] - cut - cut = 0 - if cut <= 0: - break - # remove cutoff% samples from the hi end - cut = n * cutoff / 100 - for hi in range(255, -1, -1): - if cut > h[hi]: - cut = cut - h[hi] - h[hi] = 0 - else: - h[hi] = h[hi] - cut - cut = 0 - if cut <= 0: - break - # find lowest/highest samples after preprocessing - for lo in range(256): - if h[lo]: - break - for hi in range(255, -1, -1): - if h[hi]: - break - if hi <= lo: - # don't bother - lut.extend(range(256)) - else: - scale = 255.0 / (hi - lo) - offset = -lo * scale - for ix in range(256): - ix = int(ix * scale + offset) - if ix < 0: - ix = 0 - elif ix > 255: - ix = 255 - lut.append(ix) - return _lut(image, lut) - -## -# Colorize grayscale image. The black and white -# arguments should be RGB tuples; this function calculates a colour -# wedge mapping all black pixels in the source image to the first -# colour, and all white pixels to the second colour. -# -# @param image The image to colourize. -# @param black The colour to use for black input pixels. -# @param white The colour to use for white input pixels. -# @return An image. - -def colorize(image, black, white): - "Colorize a grayscale image" - assert image.mode == "L" - black = _color(black, "RGB") - white = _color(white, "RGB") - red = []; green = []; blue = [] - for i in range(256): - red.append(black[0]+i*(white[0]-black[0])/255) - green.append(black[1]+i*(white[1]-black[1])/255) - blue.append(black[2]+i*(white[2]-black[2])/255) - image = image.convert("RGB") - return _lut(image, red + green + blue) - -## -# Remove border from image. The same amount of pixels are removed -# from all four sides. This function works on all image modes. -# -# @param image The image to crop. -# @param border The number of pixels to remove. -# @return An image. -# @see Image#Image.crop - -def crop(image, border=0): - "Crop border off image" - left, top, right, bottom = _border(border) - return image.crop( - (left, top, image.size[0]-right, image.size[1]-bottom) - ) - -## -# Deform the image. -# -# @param image The image to deform. -# @param deformer A deformer object. Any object that implements a -# getmesh method can be used. -# @param resample What resampling filter to use. -# @return An image. - -def deform(image, deformer, resample=Image.BILINEAR): - "Deform image using the given deformer" - return image.transform( - image.size, Image.MESH, deformer.getmesh(image), resample - ) - -## -# Equalize the image histogram. This function applies a non-linear -# mapping to the input image, in order to create a uniform -# distribution of grayscale values in the output image. -# -# @param image The image to equalize. -# @param mask An optional mask. If given, only the pixels selected by -# the mask are included in the analysis. -# @return An image. - -def equalize(image, mask=None): - "Equalize image histogram" - if image.mode == "P": - image = image.convert("RGB") - h = image.histogram(mask) - lut = [] - for b in range(0, len(h), 256): - histo = filter(None, h[b:b+256]) - if len(histo) <= 1: - lut.extend(range(256)) - else: - step = (reduce(operator.add, histo) - histo[-1]) / 255 - if not step: - lut.extend(range(256)) - else: - n = step / 2 - for i in range(256): - lut.append(n / step) - n = n + h[i+b] - return _lut(image, lut) - -## -# Add border to the image -# -# @param image The image to expand. -# @param border Border width, in pixels. -# @param fill Pixel fill value (a colour value). Default is 0 (black). -# @return An image. - -def expand(image, border=0, fill=0): - "Add border to image" - left, top, right, bottom = _border(border) - width = left + image.size[0] + right - height = top + image.size[1] + bottom - out = Image.new(image.mode, (width, height), _color(fill, image.mode)) - out.paste(image, (left, top)) - return out - -## -# Returns a sized and cropped version of the image, cropped to the -# requested aspect ratio and size. -#

    -# The fit function was contributed by Kevin Cazabon. -# -# @param size The requested output size in pixels, given as a -# (width, height) tuple. -# @param method What resampling method to use. Default is Image.NEAREST. -# @param bleed Remove a border around the outside of the image (from all -# four edges. The value is a decimal percentage (use 0.01 for one -# percent). The default value is 0 (no border). -# @param centering Control the cropping position. Use (0.5, 0.5) for -# center cropping (e.g. if cropping the width, take 50% off of the -# left side, and therefore 50% off the right side). (0.0, 0.0) -# will crop from the top left corner (i.e. if cropping the width, -# take all of the crop off of the right side, and if cropping the -# height, take all of it off the bottom). (1.0, 0.0) will crop -# from the bottom left corner, etc. (i.e. if cropping the width, -# take all of the crop off the left side, and if cropping the height -# take none from the top, and therefore all off the bottom). -# @return An image. - -def fit(image, size, method=Image.NEAREST, bleed=0.0, centering=(0.5, 0.5)): - """ - This method returns a sized and cropped version of the image, - cropped to the aspect ratio and size that you request. - """ - - # by Kevin Cazabon, Feb 17/2000 - # kevin@cazabon.com - # http://www.cazabon.com - - # ensure inputs are valid - if type(centering) != type([]): - centering = [centering[0], centering[1]] - - if centering[0] > 1.0 or centering[0] < 0.0: - centering [0] = 0.50 - if centering[1] > 1.0 or centering[1] < 0.0: - centering[1] = 0.50 - - if bleed > 0.49999 or bleed < 0.0: - bleed = 0.0 - - # calculate the area to use for resizing and cropping, subtracting - # the 'bleed' around the edges - - # number of pixels to trim off on Top and Bottom, Left and Right - bleedPixels = ( - int((float(bleed) * float(image.size[0])) + 0.5), - int((float(bleed) * float(image.size[1])) + 0.5) - ) - - liveArea = ( - bleedPixels[0], bleedPixels[1], image.size[0] - bleedPixels[0] - 1, - image.size[1] - bleedPixels[1] - 1 - ) - - liveSize = (liveArea[2] - liveArea[0], liveArea[3] - liveArea[1]) - - # calculate the aspect ratio of the liveArea - liveAreaAspectRatio = float(liveSize[0])/float(liveSize[1]) - - # calculate the aspect ratio of the output image - aspectRatio = float(size[0]) / float(size[1]) - - # figure out if the sides or top/bottom will be cropped off - if liveAreaAspectRatio >= aspectRatio: - # liveArea is wider than what's needed, crop the sides - cropWidth = int((aspectRatio * float(liveSize[1])) + 0.5) - cropHeight = liveSize[1] - else: - # liveArea is taller than what's needed, crop the top and bottom - cropWidth = liveSize[0] - cropHeight = int((float(liveSize[0])/aspectRatio) + 0.5) - - # make the crop - leftSide = int(liveArea[0] + (float(liveSize[0]-cropWidth) * centering[0])) - if leftSide < 0: - leftSide = 0 - topSide = int(liveArea[1] + (float(liveSize[1]-cropHeight) * centering[1])) - if topSide < 0: - topSide = 0 - - out = image.crop( - (leftSide, topSide, leftSide + cropWidth, topSide + cropHeight) - ) - - # resize the image and return it - return out.resize(size, method) - -## -# Flip the image vertically (top to bottom). -# -# @param image The image to flip. -# @return An image. - -def flip(image): - "Flip image vertically" - return image.transpose(Image.FLIP_TOP_BOTTOM) - -## -# Convert the image to grayscale. -# -# @param image The image to convert. -# @return An image. - -def grayscale(image): - "Convert to grayscale" - return image.convert("L") - -## -# Invert (negate) the image. -# -# @param image The image to invert. -# @return An image. - -def invert(image): - "Invert image (negate)" - lut = [] - for i in range(256): - lut.append(255-i) - return _lut(image, lut) - -## -# Flip image horizontally (left to right). -# -# @param image The image to mirror. -# @return An image. - -def mirror(image): - "Flip image horizontally" - return image.transpose(Image.FLIP_LEFT_RIGHT) - -## -# Reduce the number of bits for each colour channel. -# -# @param image The image to posterize. -# @param bits The number of bits to keep for each channel (1-8). -# @return An image. - -def posterize(image, bits): - "Reduce the number of bits per color channel" - lut = [] - mask = ~(2**(8-bits)-1) - for i in range(256): - lut.append(i & mask) - return _lut(image, lut) - -## -# Invert all pixel values above a threshold. -# -# @param image The image to posterize. -# @param threshold All pixels above this greyscale level are inverted. -# @return An image. - -def solarize(image, threshold=128): - "Invert all values above threshold" - lut = [] - for i in range(256): - if i < threshold: - lut.append(i) - else: - lut.append(255-i) - return _lut(image, lut) - -# -------------------------------------------------------------------- -# PIL USM components, from Kevin Cazabon. - -def gaussian_blur(im, radius=None): - """ PIL_usm.gblur(im, [radius])""" - - if radius is None: - radius = 5.0 - - im.load() - - return im.im.gaussian_blur(radius) - -gblur = gaussian_blur - -def unsharp_mask(im, radius=None, percent=None, threshold=None): - """ PIL_usm.usm(im, [radius, percent, threshold])""" - - if radius is None: - radius = 5.0 - if percent is None: - percent = 150 - if threshold is None: - threshold = 3 - - im.load() - - return im.im.unsharp_mask(radius, percent, threshold) - -usm = unsharp_mask diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py deleted file mode 100755 index 6efee299891..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePalette.py +++ /dev/null @@ -1,184 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# image palette object -# -# History: -# 1996-03-11 fl Rewritten. -# 1997-01-03 fl Up and running. -# 1997-08-23 fl Added load hack -# 2001-04-16 fl Fixed randint shadow bug in random() -# -# Copyright (c) 1997-2001 by Secret Labs AB -# Copyright (c) 1996-1997 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import array -import Image, ImageColor - -## -# Colour palette wrapper for palette mapped images. - -class ImagePalette: - "Colour palette for palette mapped images" - - def __init__(self, mode = "RGB", palette = None): - self.mode = mode - self.rawmode = None # if set, palette contains raw data - self.palette = palette or range(256)*len(self.mode) - self.colors = {} - self.dirty = None - if len(self.mode)*256 != len(self.palette): - raise ValueError, "wrong palette size" - - def getdata(self): - # experimental: get palette contents in format suitable - # for the low-level im.putpalette primitive - if self.rawmode: - return self.rawmode, self.palette - return self.mode + ";L", self.tostring() - - def tostring(self): - # experimental: convert palette to string - if self.rawmode: - raise ValueError("palette contains raw palette data") - if Image.isStringType(self.palette): - return self.palette - return array.array("B", self.palette).tostring() - - def getcolor(self, color): - # experimental: given an rgb tuple, allocate palette entry - if self.rawmode: - raise ValueError("palette contains raw palette data") - if Image.isTupleType(color): - try: - return self.colors[color] - except KeyError: - # allocate new color slot - if Image.isStringType(self.palette): - self.palette = map(int, self.palette) - index = len(self.colors) - if index >= 256: - raise ValueError("cannot allocate more than 256 colors") - self.colors[color] = index - self.palette[index] = color[0] - self.palette[index+256] = color[1] - self.palette[index+512] = color[2] - self.dirty = 1 - return index - else: - raise ValueError("unknown color specifier: %r" % color) - - def save(self, fp): - # (experimental) save palette to text file - if self.rawmode: - raise ValueError("palette contains raw palette data") - if type(fp) == type(""): - fp = open(fp, "w") - fp.write("# Palette\n") - fp.write("# Mode: %s\n" % self.mode) - for i in range(256): - fp.write("%d" % i) - for j in range(i, len(self.palette), 256): - fp.write(" %d" % self.palette[j]) - fp.write("\n") - fp.close() - -# -------------------------------------------------------------------- -# Internal - -def raw(rawmode, data): - palette = ImagePalette() - palette.rawmode = rawmode - palette.palette = data - palette.dirty = 1 - return palette - -# -------------------------------------------------------------------- -# Factories - -def _make_linear_lut(black, white): - lut = [] - if black == 0: - for i in range(256): - lut.append(white*i/255) - else: - raise NotImplementedError # FIXME - return lut - -def _make_gamma_lut(exp, mode="RGB"): - lut = [] - for i in range(256): - lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) - return lut - -def new(mode, data): - return Image.core.new_palette(mode, data) - -def negative(mode="RGB"): - palette = range(256) - palette.reverse() - return ImagePalette(mode, palette * len(mode)) - -def random(mode="RGB"): - from random import randint - palette = [] - for i in range(256*len(mode)): - palette.append(randint(0, 255)) - return ImagePalette(mode, palette) - -def sepia(white="#fff0c0"): - r, g, b = ImageColor.getrgb(white) - r = _make_linear_lut(0, r) - g = _make_linear_lut(0, g) - b = _make_linear_lut(0, b) - return ImagePalette("RGB", r + g + b) - -def wedge(mode="RGB"): - return ImagePalette(mode, range(256) * len(mode)) - -def load(filename): - - # FIXME: supports GIMP gradients only - - fp = open(filename, "rb") - - lut = None - - if not lut: - try: - import GimpPaletteFile - fp.seek(0) - p = GimpPaletteFile.GimpPaletteFile(fp) - lut = p.getpalette() - except (SyntaxError, ValueError): - pass - - if not lut: - try: - import GimpGradientFile - fp.seek(0) - p = GimpGradientFile.GimpGradientFile(fp) - lut = p.getpalette() - except (SyntaxError, ValueError): - pass - - if not lut: - try: - import PaletteFile - fp.seek(0) - p = PaletteFile.PaletteFile(fp) - lut = p.getpalette() - except (SyntaxError, ValueError): - pass - - if not lut: - raise IOError, "cannot load palette" - - return lut # data, rawmode - - -# add some psuedocolour palettes as well diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py deleted file mode 100755 index 721fd944998..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImagePath.py +++ /dev/null @@ -1,71 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# path interface -# -# History: -# 1996-11-04 fl Created -# 2002-04-14 fl Added documentation stub class -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - -import Image - -## -# Path wrapper. - -class Path: - - ## - # Creates a path object. - # - # @param xy Sequence. The sequence can contain 2-tuples [(x, y), ...] - # or a flat list of numbers [x, y, ...]. - - def __init__(self, xy): - pass - - ## - # Compacts the path, by removing points that are close to each - # other. This method modifies the path in place. - - def compact(self, distance=2): - pass - - ## - # Gets the bounding box. - - def getbbox(self): - pass - - ## - # Maps the path through a function. - - def map(self, function): - pass - - ## - # Converts the path to Python list. - # - # @param flat By default, this function returns a list of 2-tuples - # [(x, y), ...]. If this argument is true, it returns a flat - # list [x, y, ...] instead. - # @return A list of coordinates. - - def tolist(self, flat=0): - pass - - ## - # Transforms the path. - - def transform(self, matrix): - pass - - -# override with C implementation -Path = Image.core.path diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py deleted file mode 100755 index 50ee07d6c12..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageQt.py +++ /dev/null @@ -1,84 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# a simple Qt image interface. -# -# history: -# 2006-06-03 fl: created -# 2006-06-04 fl: inherit from QImage instead of wrapping it -# 2006-06-05 fl: removed toimage helper; move string support to ImageQt -# -# Copyright (c) 2006 by Secret Labs AB -# Copyright (c) 2006 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image - -from PyQt4.QtGui import QImage, qRgb - -## -# (Internal) Turns an RGB color into a Qt compatible color integer. - -def rgb(r, g, b): - # use qRgb to pack the colors, and then turn the resulting long - # into a negative integer with the same bitpattern. - return (qRgb(r, g, b) & 0xffffff) - 0x1000000 - -## -# An PIL image wrapper for Qt. This is a subclass of PyQt4's QImage -# class. -# -# @param im A PIL Image object, or a file name (given either as Python -# string or a PyQt string object). - -class ImageQt(QImage): - - def __init__(self, im): - - data = None - colortable = None - - # handle filename, if given instead of image name - if hasattr(im, "toUtf8"): - # FIXME - is this really the best way to do this? - im = unicode(im.toUtf8(), "utf-8") - if Image.isStringType(im): - im = Image.open(im) - - if im.mode == "1": - format = QImage.Format_Mono - elif im.mode == "L": - format = QImage.Format_Indexed8 - colortable = [] - for i in range(256): - colortable.append(rgb(i, i, i)) - elif im.mode == "P": - format = QImage.Format_Indexed8 - colortable = [] - palette = im.getpalette() - for i in range(0, len(palette), 3): - colortable.append(rgb(*palette[i:i+3])) - elif im.mode == "RGB": - data = im.tostring("raw", "BGRX") - format = QImage.Format_RGB32 - elif im.mode == "RGBA": - try: - data = im.tostring("raw", "BGRA") - except SystemError: - # workaround for earlier versions - r, g, b, a = im.split() - im = Image.merge("RGBA", (b, g, r, a)) - format = QImage.Format_ARGB32 - else: - raise ValueError("unsupported image mode %r" % im.mode) - - # must keep a reference, or Qt will crash! - self.__data = data or im.tostring() - - QImage.__init__(self, self.__data, im.size[0], im.size[1], format) - - if colortable: - self.setColorTable(colortable) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py deleted file mode 100755 index e94ca0b1ebc..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageSequence.py +++ /dev/null @@ -1,38 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# sequence support classes -# -# history: -# 1997-02-20 fl Created -# -# Copyright (c) 1997 by Secret Labs AB. -# Copyright (c) 1997 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -## -# This class implements an iterator object that can be used to loop -# over an image sequence. - -class Iterator: - - ## - # Create an iterator. - # - # @param im An image object. - - def __init__(self, im): - if not hasattr(im, "seek"): - raise AttributeError("im must have seek method") - self.im = im - - def __getitem__(self, ix): - try: - if ix: - self.im.seek(ix) - return self.im - except EOFError: - raise IndexError # end of sequence diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py deleted file mode 100755 index 05270f440f2..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageShow.py +++ /dev/null @@ -1,163 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# im.show() drivers -# -# History: -# 2008-04-06 fl Created -# -# Copyright (c) Secret Labs AB 2008. -# -# See the README file for information on usage and redistribution. -# - -import Image -import os, sys - -_viewers = [] - -def register(viewer, order=1): - try: - if issubclass(viewer, Viewer): - viewer = viewer() - except TypeError: - pass # raised if viewer wasn't a class - if order > 0: - _viewers.append(viewer) - elif order < 0: - _viewers.insert(0, viewer) - -## -# Displays a given image. -# -# @param image An image object. -# @param title Optional title. Not all viewers can display the title. -# @param **options Additional viewer options. -# @return True if a suitable viewer was found, false otherwise. - -def show(image, title=None, **options): - for viewer in _viewers: - if viewer.show(image, title=title, **options): - return 1 - return 0 - -## -# Base class for viewers. - -class Viewer: - - # main api - - def show(self, image, **options): - - # save temporary image to disk - if image.mode[:4] == "I;16": - # @PIL88 @PIL101 - # "I;16" isn't an 'official' mode, but we still want to - # provide a simple way to show 16-bit images. - base = "L" - # FIXME: auto-contrast if max() > 255? - else: - base = Image.getmodebase(image.mode) - if base != image.mode and image.mode != "1": - image = image.convert(base) - - self.show_image(image, **options) - - # hook methods - - format = None - - def get_format(self, image): - # return format name, or None to save as PGM/PPM - return self.format - - def get_command(self, file, **options): - raise NotImplementedError - - def save_image(self, image): - # save to temporary file, and return filename - return image._dump(format=self.get_format(image)) - - def show_image(self, image, **options): - # display given image - return self.show_file(self.save_image(image), **options) - - def show_file(self, file, **options): - # display given file - os.system(self.get_command(file, **options)) - return 1 - -# -------------------------------------------------------------------- - -if sys.platform == "win32": - - class WindowsViewer(Viewer): - format = "BMP" - def get_command(self, file, **options): - return "start /wait %s && del /f %s" % (file, file) - - register(WindowsViewer) - -elif sys.platform == "darwin": - - class MacViewer(Viewer): - format = "BMP" - def get_command(self, file, **options): - # on darwin open returns immediately resulting in the temp - # file removal while app is opening - command = "open -a /Applications/Preview.app" - command = "(%s %s; sleep 20; rm -f %s)&" % (command, file, file) - return command - - register(MacViewer) - -else: - - # unixoids - - def which(executable): - path = os.environ.get("PATH") - if not path: - return None - for dirname in path.split(os.pathsep): - filename = os.path.join(dirname, executable) - if os.path.isfile(filename): - # FIXME: make sure it's executable - return filename - return None - - class UnixViewer(Viewer): - def show_file(self, file, **options): - command, executable = self.get_command_ex(file, **options) - command = "(%s %s; rm -f %s)&" % (command, file, file) - os.system(command) - return 1 - - # implementations - - class DisplayViewer(UnixViewer): - def get_command_ex(self, file, **options): - command = executable = "display" - return command, executable - - if which("display"): - register(DisplayViewer) - - class XVViewer(UnixViewer): - def get_command_ex(self, file, title=None, **options): - # note: xv is pretty outdated. most modern systems have - # imagemagick's display command instead. - command = executable = "xv" - if title: - # FIXME: do full escaping - command = command + " -name \"%s\"" % title - return command, executable - - if which("xv"): - register(XVViewer) - -if __name__ == "__main__": - # usage: python ImageShow.py imagefile [title] - print show(Image.open(sys.argv[1]), *sys.argv[2:]) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py deleted file mode 100755 index 9ebdab03018..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageStat.py +++ /dev/null @@ -1,164 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# global image statistics -# -# History: -# 1996-04-05 fl Created -# 1997-05-21 fl Added mask; added rms, var, stddev attributes -# 1997-08-05 fl Added median -# 1998-07-05 hk Fixed integer overflow error -# -# Notes: -# This class shows how to implement delayed evaluation of attributes. -# To get a certain value, simply access the corresponding attribute. -# The __getattr__ dispatcher takes care of the rest. -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996-97. -# -# See the README file for information on usage and redistribution. -# - -import Image -import operator, math - -## -# The ImageStat module calculates global statistics for an -# image, or a region of an image. -## - -## -# Calculate statistics for the given image. If a mask is included, -# only the regions covered by that mask are included in the -# statistics. - -class Stat: - "Get image or feature statistics" - - ## - # Create a statistics object. - # - # @def __init__(image, mask=None) - # @param image A PIL image, or a precalculate histogram. - # @param mask An optional mask. - - def __init__(self, image_or_list, mask = None): - try: - if mask: - self.h = image_or_list.histogram(mask) - else: - self.h = image_or_list.histogram() - except AttributeError: - self.h = image_or_list # assume it to be a histogram list - if type(self.h) != type([]): - raise TypeError, "first argument must be image or list" - self.bands = range(len(self.h) / 256) - - def __getattr__(self, id): - "Calculate missing attribute" - if id[:4] == "_get": - raise AttributeError, id - # calculate missing attribute - v = getattr(self, "_get" + id)() - setattr(self, id, v) - return v - - def _getextrema(self): - "Get min/max values for each band in the image" - - def minmax(histogram): - n = 255 - x = 0 - for i in range(256): - if histogram[i]: - n = min(n, i) - x = max(x, i) - return n, x # returns (255, 0) if there's no data in the histogram - - v = [] - for i in range(0, len(self.h), 256): - v.append(minmax(self.h[i:])) - return v - - def _getcount(self): - "Get total number of pixels in each layer" - - v = [] - for i in range(0, len(self.h), 256): - v.append(reduce(operator.add, self.h[i:i+256])) - return v - - def _getsum(self): - "Get sum of all pixels in each layer" - - v = [] - for i in range(0, len(self.h), 256): - sum = 0.0 - for j in range(256): - sum = sum + j * self.h[i+j] - v.append(sum) - return v - - def _getsum2(self): - "Get squared sum of all pixels in each layer" - - v = [] - for i in range(0, len(self.h), 256): - sum2 = 0.0 - for j in range(256): - sum2 = sum2 + (j ** 2) * float(self.h[i+j]) - v.append(sum2) - return v - - def _getmean(self): - "Get average pixel level for each layer" - - v = [] - for i in self.bands: - v.append(self.sum[i] / self.count[i]) - return v - - def _getmedian(self): - "Get median pixel level for each layer" - - v = [] - for i in self.bands: - s = 0 - l = self.count[i]/2 - b = i * 256 - for j in range(256): - s = s + self.h[b+j] - if s > l: - break - v.append(j) - return v - - def _getrms(self): - "Get RMS for each layer" - - v = [] - for i in self.bands: - v.append(math.sqrt(self.sum2[i] / self.count[i])) - return v - - - def _getvar(self): - "Get variance for each layer" - - v = [] - for i in self.bands: - n = self.count[i] - v.append((self.sum2[i]-(self.sum[i]**2.0)/n)/n) - return v - - def _getstddev(self): - "Get standard deviation for each layer" - - v = [] - for i in self.bands: - v.append(math.sqrt(self.var[i])) - return v - -Global = Stat # compatibility diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py deleted file mode 100755 index 8618139a538..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTk.py +++ /dev/null @@ -1,296 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# a Tk display interface -# -# History: -# 96-04-08 fl Created -# 96-09-06 fl Added getimage method -# 96-11-01 fl Rewritten, removed image attribute and crop method -# 97-05-09 fl Use PyImagingPaste method instead of image type -# 97-05-12 fl Minor tweaks to match the IFUNC95 interface -# 97-05-17 fl Support the "pilbitmap" booster patch -# 97-06-05 fl Added file= and data= argument to image constructors -# 98-03-09 fl Added width and height methods to Image classes -# 98-07-02 fl Use default mode for "P" images without palette attribute -# 98-07-02 fl Explicitly destroy Tkinter image objects -# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) -# 99-07-26 fl Automatically hook into Tkinter (if possible) -# 99-08-15 fl Hook uses _imagingtk instead of _imaging -# -# Copyright (c) 1997-1999 by Secret Labs AB -# Copyright (c) 1996-1997 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Tkinter, Image - -## -# The ImageTk module contains support to create and modify -# Tkinter BitmapImage and PhotoImage objects. -#

    -# For examples, see the demo programs in the Scripts -# directory. -## - -# -------------------------------------------------------------------- -# Check for Tkinter interface hooks - -_pilbitmap_ok = None - -def _pilbitmap_check(): - global _pilbitmap_ok - if _pilbitmap_ok is None: - try: - im = Image.new("1", (1,1)) - Tkinter.BitmapImage(data="PIL:%d" % im.im.id) - _pilbitmap_ok = 1 - except Tkinter.TclError: - _pilbitmap_ok = 0 - return _pilbitmap_ok - -# -------------------------------------------------------------------- -# PhotoImage - -## -# Creates a Tkinter-compatible photo image. This can be used -# everywhere Tkinter expects an image object. If the image is an RGBA -# image, pixels having alpha 0 are treated as transparent. - -class PhotoImage: - - ## - # Create a photo image object. The constructor takes either - # a PIL image, or a mode and a size. Alternatively, you can - # use the file or data options to initialize - # the photo image object. - #

    - # @def __init__(image=None, size=None, **options) - # @param image Either a PIL image, or a mode string. If a - # mode string is used, a size must also be given. - # @param size If the first argument is a mode string, this - # defines the size of the image. - # @keyparam file A filename to load the image from (using - # Image.open(file)). - # @keyparam data An 8-bit string containing image data (as - # loaded from an image file). - - def __init__(self, image=None, size=None, **kw): - - # Tk compatibility: file or data - if image is None: - if kw.has_key("file"): - image = Image.open(kw["file"]) - del kw["file"] - elif kw.has_key("data"): - from StringIO import StringIO - image = Image.open(StringIO(kw["data"])) - del kw["data"] - - if hasattr(image, "mode") and hasattr(image, "size"): - # got an image instead of a mode - mode = image.mode - if mode == "P": - # palette mapped data - image.load() - try: - mode = image.palette.mode - except AttributeError: - mode = "RGB" # default - size = image.size - kw["width"], kw["height"] = size - else: - mode = image - image = None - - if mode not in ["1", "L", "RGB", "RGBA"]: - mode = Image.getmodebase(mode) - - self.__mode = mode - self.__size = size - self.__photo = apply(Tkinter.PhotoImage, (), kw) - self.tk = self.__photo.tk - if image: - self.paste(image) - - def __del__(self): - name = self.__photo.name - self.__photo.name = None - try: - self.__photo.tk.call("image", "delete", name) - except: - pass # ignore internal errors - - ## - # Get the Tkinter photo image identifier. This method is - # automatically called by Tkinter whenever a PhotoImage object is - # passed to a Tkinter method. - # - # @return A Tkinter photo image identifier (a string). - - def __str__(self): - return str(self.__photo) - - ## - # Get the width of the image. - # - # @return The width, in pixels. - - def width(self): - return self.__size[0] - - ## - # Get the height of the image. - # - # @return The height, in pixels. - - def height(self): - return self.__size[1] - - ## - # Paste a PIL image into the photo image. Note that this can - # be very slow if the photo image is displayed. - # - # @param im A PIL image. The size must match the target region. - # If the mode does not match, the image is converted to the - # mode of the bitmap image. - # @param box A 4-tuple defining the left, upper, right, and - # lower pixel coordinate. If None is given instead of a - # tuple, all of the image is assumed. - - def paste(self, im, box=None): - - # convert to blittable - im.load() - image = im.im - if image.isblock() and im.mode == self.__mode: - block = image - else: - block = image.new_block(self.__mode, im.size) - image.convert2(block, image) # convert directly between buffers - - tk = self.__photo.tk - - try: - tk.call("PyImagingPhoto", self.__photo, block.id) - except Tkinter.TclError, v: - # activate Tkinter hook - try: - import _imagingtk - try: - _imagingtk.tkinit(tk.interpaddr(), 1) - except AttributeError: - _imagingtk.tkinit(id(tk), 0) - tk.call("PyImagingPhoto", self.__photo, block.id) - except (ImportError, AttributeError, Tkinter.TclError): - raise # configuration problem; cannot attach to Tkinter - -# -------------------------------------------------------------------- -# BitmapImage - -## -# Create a Tkinter-compatible bitmap image. This can be used -# everywhere Tkinter expects an image object. - -class BitmapImage: - - ## - # Create a Tkinter-compatible bitmap image. - #

    - # The given image must have mode "1". Pixels having value 0 are - # treated as transparent. Options, if any, are passed on to - # Tkinter. The most commonly used option is foreground, - # which is used to specify the colour for the non-transparent - # parts. See the Tkinter documentation for information on how to - # specify colours. - # - # @def __init__(image=None, **options) - # @param image A PIL image. - - def __init__(self, image=None, **kw): - - # Tk compatibility: file or data - if image is None: - if kw.has_key("file"): - image = Image.open(kw["file"]) - del kw["file"] - elif kw.has_key("data"): - from StringIO import StringIO - image = Image.open(StringIO(kw["data"])) - del kw["data"] - - self.__mode = image.mode - self.__size = image.size - - if _pilbitmap_check(): - # fast way (requires the pilbitmap booster patch) - image.load() - kw["data"] = "PIL:%d" % image.im.id - self.__im = image # must keep a reference - else: - # slow but safe way - kw["data"] = image.tobitmap() - self.__photo = apply(Tkinter.BitmapImage, (), kw) - - def __del__(self): - name = self.__photo.name - self.__photo.name = None - try: - self.__photo.tk.call("image", "delete", name) - except: - pass # ignore internal errors - - ## - # Get the width of the image. - # - # @return The width, in pixels. - - def width(self): - return self.__size[0] - - ## - # Get the height of the image. - # - # @return The height, in pixels. - - def height(self): - return self.__size[1] - - ## - # Get the Tkinter bitmap image identifier. This method is - # automatically called by Tkinter whenever a BitmapImage object - # is passed to a Tkinter method. - # - # @return A Tkinter bitmap image identifier (a string). - - def __str__(self): - return str(self.__photo) - -## -# Copies the contents of a PhotoImage to a PIL image memory. - -def getimage(photo): - photo.tk.call("PyImagingPhotoGet", photo) - -# -------------------------------------------------------------------- -# Helper for the Image.show method. - -def _show(image, title): - - class UI(Tkinter.Label): - def __init__(self, master, im): - if im.mode == "1": - self.image = BitmapImage(im, foreground="white", master=master) - else: - self.image = PhotoImage(im, master=master) - Tkinter.Label.__init__(self, master, image=self.image, - bg="black", bd=0) - - if not Tkinter._default_root: - raise IOError, "tkinter not initialized" - top = Tkinter.Toplevel() - if title: - top.title(title) - UI(top, image).pack() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py deleted file mode 100755 index cc323d3b990..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageTransform.py +++ /dev/null @@ -1,95 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# transform wrappers -# -# History: -# 2002-04-08 fl Created -# -# Copyright (c) 2002 by Secret Labs AB -# Copyright (c) 2002 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -import Image - -class Transform(Image.ImageTransformHandler): - def __init__(self, data): - self.data = data - def getdata(self): - return self.method, self.data - def transform(self, size, image, **options): - # can be overridden - method, data = self.getdata() - return image.transform(size, method, data, **options) - -## -# Define an affine image transform. -#

    -# This function takes a 6-tuple (a, b, c, d, e, f) which -# contain the first two rows from an affine transform matrix. For -# each pixel (x, y) in the output image, the new value is -# taken from a position (a x + b y + c, -# d x + e y + f) in the input image, rounded to -# nearest pixel. -#

    -# This function can be used to scale, translate, rotate, and shear the -# original image. -# -# @def AffineTransform(matrix) -# @param matrix A 6-tuple (a, b, c, d, e, f) containing -# the first two rows from an affine transform matrix. -# @see Image#Image.transform - -class AffineTransform(Transform): - method = Image.AFFINE - -## -# Define a transform to extract a subregion from an image. -#

    -# Maps a rectangle (defined by two corners) from the image to a -# rectangle of the given size. The resulting image will contain -# data sampled from between the corners, such that (x0, y0) -# in the input image will end up at (0,0) in the output image, -# and (x1, y1) at size. -#

    -# This method can be used to crop, stretch, shrink, or mirror an -# arbitrary rectangle in the current image. It is slightly slower than -# crop, but about as fast as a corresponding resize -# operation. -# -# @def ExtentTransform(bbox) -# @param bbox A 4-tuple (x0, y0, x1, y1) which specifies -# two points in the input image's coordinate system. -# @see Image#Image.transform - -class ExtentTransform(Transform): - method = Image.EXTENT - -## -# Define an quad image transform. -#

    -# Maps a quadrilateral (a region defined by four corners) from the -# image to a rectangle of the given size. -# -# @def QuadTransform(xy) -# @param xy An 8-tuple (x0, y0, x1, y1, x2, y2, y3, y3) which -# contain the upper left, lower left, lower right, and upper right -# corner of the source quadrilateral. -# @see Image#Image.transform - -class QuadTransform(Transform): - method = Image.QUAD - -## -# Define an mesh image transform. A mesh transform consists of one -# or more individual quad transforms. -# -# @def MeshTransform(data) -# @param data A list of (bbox, quad) tuples. -# @see Image#Image.transform - -class MeshTransform(Transform): - method = Image.MESH diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py deleted file mode 100755 index f98725f74ac..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImageWin.py +++ /dev/null @@ -1,215 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# a Windows DIB display interface -# -# History: -# 1996-05-20 fl Created -# 1996-09-20 fl Fixed subregion exposure -# 1997-09-21 fl Added draw primitive (for tzPrint) -# 2003-05-21 fl Added experimental Window/ImageWindow classes -# 2003-09-05 fl Added fromstring/tostring methods -# -# Copyright (c) Secret Labs AB 1997-2003. -# Copyright (c) Fredrik Lundh 1996-2003. -# -# See the README file for information on usage and redistribution. -# - -import Image - -## -# The ImageWin module contains support to create and display -# images under Windows 95/98, NT, 2000 and later. - -class HDC: - def __init__(self, dc): - self.dc = dc - def __int__(self): - return self.dc - -class HWND: - def __init__(self, wnd): - self.wnd = wnd - def __int__(self): - return self.wnd - -## -# Create a Windows bitmap with the given mode and size. The mode can -# be one of "1", "L", "P", or "RGB". -# -# If the display requires a palette, this constructor creates a -# suitable palette and associates it with the image. For an "L" image, -# 128 greylevels are allocated. For an "RGB" image, a 6x6x6 colour -# cube is used, together with 20 greylevels. -# -# To make sure that palettes work properly under Windows, you must -# call the palette method upon certain events from Windows. - -class Dib: - - ## - # Create Windows bitmap. - # - # @param image Either a PIL image, or a mode string. If a - # mode string is used, a size must also be given. The - # mode can be one of "1", "L", "P", or "RGB". - # @param size If the first argument is a mode string, this - # defines the size of the image. - - def __init__(self, image, size=None): - if hasattr(image, "mode") and hasattr(image, "size"): - mode = image.mode - size = image.size - else: - mode = image - image = None - if mode not in ["1", "L", "P", "RGB"]: - mode = Image.getmodebase(mode) - self.image = Image.core.display(mode, size) - self.mode = mode - self.size = size - if image: - self.paste(image) - - ## - # Copy the bitmap contents to a device context. - # - # @param handle Device context (HDC), cast to a Python integer, - # or a HDC or HWND instance. In PythonWin, you can use the - # GetHandleAttrib method of the CDC class to get - # a suitable handle. - - def expose(self, handle): - if isinstance(handle, HWND): - dc = self.image.getdc(handle) - try: - result = self.image.expose(dc) - finally: - self.image.releasedc(handle, dc) - else: - result = self.image.expose(handle) - return result - - def draw(self, handle, dst, src=None): - if not src: - src = (0,0) + self.size - if isinstance(handle, HWND): - dc = self.image.getdc(handle) - try: - result = self.image.draw(dc, dst, src) - finally: - self.image.releasedc(handle, dc) - else: - result = self.image.draw(handle, dst, src) - return result - - ## - # Installs the palette associated with the image in the - # given device context. - #

    - # This method should be called upon QUERYNEWPALETTE - # and PALETTECHANGED events from Windows. If this - # method returns a non-zero value, one or more display - # palette entries were changed, and the image should be - # redrawn. - # - # @param handle Device context (HDC), cast to a Python integer, - # or an HDC or HWND instance. - # @return A true value if one or more entries were changed - # (this indicates that the image should be redrawn). - - def query_palette(self, handle): - if isinstance(handle, HWND): - handle = self.image.getdc(handle) - try: - result = self.image.query_palette(handle) - finally: - self.image.releasedc(handle, handle) - else: - result = self.image.query_palette(handle) - return result - - ## - # Paste a PIL image into the bitmap image. - # - # @param im A PIL image. The size must match the target region. - # If the mode does not match, the image is converted to the - # mode of the bitmap image. - # @param box A 4-tuple defining the left, upper, right, and - # lower pixel coordinate. If None is given instead of a - # tuple, all of the image is assumed. - - def paste(self, im, box=None): - im.load() - if self.mode != im.mode: - im = im.convert(self.mode) - if box: - self.image.paste(im.im, box) - else: - self.image.paste(im.im) - - ## - # Load display memory contents from string buffer. - # - # @param buffer A string buffer containing display data (usually - # data returned from tostring) - - def fromstring(self, buffer): - return self.image.fromstring(buffer) - - ## - # Copy display memory contents to string buffer. - # - # @return A string buffer containing display data. - - def tostring(self): - return self.image.tostring() - - -## -# Create a Window with the given title size. - -class Window: - - def __init__(self, title="PIL", width=None, height=None): - self.hwnd = Image.core.createwindow( - title, self.__dispatcher, width or 0, height or 0 - ) - - def __dispatcher(self, action, *args): - return apply(getattr(self, "ui_handle_" + action), args) - - def ui_handle_clear(self, dc, x0, y0, x1, y1): - pass - - def ui_handle_damage(self, x0, y0, x1, y1): - pass - - def ui_handle_destroy(self): - pass - - def ui_handle_repair(self, dc, x0, y0, x1, y1): - pass - - def ui_handle_resize(self, width, height): - pass - - def mainloop(self): - Image.core.eventloop() - -## -# Create an image window which displays the given image. - -class ImageWindow(Window): - - def __init__(self, image, title="PIL"): - if not isinstance(image, Dib): - image = Dib(image) - self.image = image - width, height = image.size - Window.__init__(self, title, width=width, height=height) - - def ui_handle_repair(self, dc, x0, y0, x1, y1): - self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py deleted file mode 100755 index bf5611b8a63..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/ImtImagePlugin.py +++ /dev/null @@ -1,93 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# IM Tools support for PIL -# -# history: -# 1996-05-27 fl Created (read 8-bit images only) -# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) -# -# Copyright (c) Secret Labs AB 1997-2001. -# Copyright (c) Fredrik Lundh 1996-2001. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.2" - -import re - -import Image, ImageFile - -# -# -------------------------------------------------------------------- - -field = re.compile(r"([a-z]*) ([^ \r\n]*)") - -## -# Image plugin for IM Tools images. - -class ImtImageFile(ImageFile.ImageFile): - - format = "IMT" - format_description = "IM Tools" - - def _open(self): - - # Quick rejection: if there's not a LF among the first - # 100 bytes, this is (probably) not a text header. - - if not "\n" in self.fp.read(100): - raise SyntaxError, "not an IM file" - self.fp.seek(0) - - xsize = ysize = 0 - - while 1: - - s = self.fp.read(1) - if not s: - break - - if s == chr(12): - - # image data begins - self.tile = [("raw", (0,0)+self.size, - self.fp.tell(), - (self.mode, 0, 1))] - - break - - else: - - # read key/value pair - # FIXME: dangerous, may read whole file - s = s + self.fp.readline() - if len(s) == 1 or len(s) > 100: - break - if s[0] == "*": - continue # comment - - m = field.match(s) - if not m: - break - k, v = m.group(1,2) - if k == "width": - xsize = int(v) - self.size = xsize, ysize - elif k == "height": - ysize = int(v) - self.size = xsize, ysize - elif k == "pixel" and v == "n8": - self.mode = "L" - - -# -# -------------------------------------------------------------------- - -Image.register_open("IMT", ImtImageFile) - -# -# no extension registered (".im" is simply too common) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py deleted file mode 100755 index acea5d18b40..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/IptcImagePlugin.py +++ /dev/null @@ -1,288 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# IPTC/NAA file handling -# -# history: -# 1995-10-01 fl Created -# 1998-03-09 fl Cleaned up and added to PIL -# 2002-06-18 fl Added getiptcinfo helper -# -# Copyright (c) Secret Labs AB 1997-2002. -# Copyright (c) Fredrik Lundh 1995. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.3" - - -import Image, ImageFile -import os, tempfile - - -COMPRESSION = { - 1: "raw", - 5: "jpeg" -} - -PAD = chr(0) * 4 - -# -# Helpers - -def i16(c): - return ord(c[1]) + (ord(c[0])<<8) - -def i32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) - -def i(c): - return i32((PAD + c)[-4:]) - -def dump(c): - for i in c: - print "%02x" % ord(i), - print - -## -# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields -# from TIFF and JPEG files, use the getiptcinfo function. - -class IptcImageFile(ImageFile.ImageFile): - - format = "IPTC" - format_description = "IPTC/NAA" - - def getint(self, key): - return i(self.info[key]) - - def field(self): - # - # get a IPTC field header - s = self.fp.read(5) - if not len(s): - return None, 0 - - tag = ord(s[1]), ord(s[2]) - - # syntax - if ord(s[0]) != 0x1C or tag[0] < 1 or tag[0] > 9: - raise SyntaxError, "invalid IPTC/NAA file" - - # field size - size = ord(s[3]) - if size > 132: - raise IOError, "illegal field length in IPTC/NAA file" - elif size == 128: - size = 0 - elif size > 128: - size = i(self.fp.read(size-128)) - else: - size = i16(s[3:]) - - return tag, size - - def _is_raw(self, offset, size): - # - # check if the file can be mapped - - # DISABLED: the following only slows things down... - return 0 - - self.fp.seek(offset) - t, sz = self.field() - if sz != size[0]: - return 0 - y = 1 - while 1: - self.fp.seek(sz, 1) - t, s = self.field() - if t != (8, 10): - break - if s != sz: - return 0 - y = y + 1 - return y == size[1] - - def _open(self): - - # load descriptive fields - while 1: - offset = self.fp.tell() - tag, size = self.field() - if not tag or tag == (8,10): - break - if size: - tagdata = self.fp.read(size) - else: - tagdata = None - if tag in self.info.keys(): - if isinstance(self.info[tag], list): - self.info[tag].append(tagdata) - else: - self.info[tag] = [self.info[tag], tagdata] - else: - self.info[tag] = tagdata - - # print tag, self.info[tag] - - # mode - layers = ord(self.info[(3,60)][0]) - component = ord(self.info[(3,60)][1]) - if self.info.has_key((3,65)): - id = ord(self.info[(3,65)][0])-1 - else: - id = 0 - if layers == 1 and not component: - self.mode = "L" - elif layers == 3 and component: - self.mode = "RGB"[id] - elif layers == 4 and component: - self.mode = "CMYK"[id] - - # size - self.size = self.getint((3,20)), self.getint((3,30)) - - # compression - try: - compression = COMPRESSION[self.getint((3,120))] - except KeyError: - raise IOError, "Unknown IPTC image compression" - - # tile - if tag == (8,10): - if compression == "raw" and self._is_raw(offset, self.size): - self.tile = [(compression, (offset, size + 5, -1), - (0, 0, self.size[0], self.size[1]))] - else: - self.tile = [("iptc", (compression, offset), - (0, 0, self.size[0], self.size[1]))] - - def load(self): - - if len(self.tile) != 1 or self.tile[0][0] != "iptc": - return ImageFile.ImageFile.load(self) - - type, tile, box = self.tile[0] - - encoding, offset = tile - - self.fp.seek(offset) - - # Copy image data to temporary file - outfile = tempfile.mktemp() - o = open(outfile, "wb") - if encoding == "raw": - # To simplify access to the extracted file, - # prepend a PPM header - o.write("P5\n%d %d\n255\n" % self.size) - while 1: - type, size = self.field() - if type != (8, 10): - break - while size > 0: - s = self.fp.read(min(size, 8192)) - if not s: - break - o.write(s) - size = size - len(s) - o.close() - - try: - try: - # fast - self.im = Image.core.open_ppm(outfile) - except: - # slightly slower - im = Image.open(outfile) - im.load() - self.im = im.im - finally: - try: os.unlink(outfile) - except: pass - - -Image.register_open("IPTC", IptcImageFile) - -Image.register_extension("IPTC", ".iim") - -## -# Get IPTC information from TIFF, JPEG, or IPTC file. -# -# @param im An image containing IPTC data. -# @return A dictionary containing IPTC information, or None if -# no IPTC information block was found. - -def getiptcinfo(im): - - import TiffImagePlugin, JpegImagePlugin - import StringIO - - data = None - - if isinstance(im, IptcImageFile): - # return info dictionary right away - return im.info - - elif isinstance(im, JpegImagePlugin.JpegImageFile): - # extract the IPTC/NAA resource - try: - app = im.app["APP13"] - if app[:14] == "Photoshop 3.0\x00": - app = app[14:] - # parse the image resource block - offset = 0 - while app[offset:offset+4] == "8BIM": - offset = offset + 4 - # resource code - code = JpegImagePlugin.i16(app, offset) - offset = offset + 2 - # resource name (usually empty) - name_len = ord(app[offset]) - name = app[offset+1:offset+1+name_len] - offset = 1 + offset + name_len - if offset & 1: - offset = offset + 1 - # resource data block - size = JpegImagePlugin.i32(app, offset) - offset = offset + 4 - if code == 0x0404: - # 0x0404 contains IPTC/NAA data - data = app[offset:offset+size] - break - offset = offset + size - if offset & 1: - offset = offset + 1 - except (AttributeError, KeyError): - pass - - elif isinstance(im, TiffImagePlugin.TiffImageFile): - # get raw data from the IPTC/NAA tag (PhotoShop tags the data - # as 4-byte integers, so we cannot use the get method...) - try: - type, data = im.tag.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] - except (AttributeError, KeyError): - pass - - if data is None: - return None # no properties - - # create an IptcImagePlugin object without initializing it - class FakeImage: - pass - im = FakeImage() - im.__class__ = IptcImageFile - - # parse the IPTC information chunk - im.info = {} - im.fp = StringIO.StringIO(data) - - try: - im._open() - except (IndexError, KeyError): - pass # expected failure - - return im.info diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py deleted file mode 100755 index 933abf3c244..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/JpegImagePlugin.py +++ /dev/null @@ -1,492 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# JPEG (JFIF) file handling -# -# See "Digital Compression and Coding of Continous-Tone Still Images, -# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) -# -# History: -# 1995-09-09 fl Created -# 1995-09-13 fl Added full parser -# 1996-03-25 fl Added hack to use the IJG command line utilities -# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug -# 1996-05-28 fl Added draft support, JFIF version (0.1) -# 1996-12-30 fl Added encoder options, added progression property (0.2) -# 1997-08-27 fl Save mode 1 images as BW (0.3) -# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) -# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) -# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) -# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) -# 2003-04-25 fl Added experimental EXIF decoder (0.5) -# 2003-06-06 fl Added experimental EXIF GPSinfo decoder -# 2003-09-13 fl Extract COM markers -# 2009-09-06 fl Added icc_profile support (from Florian Hoech) -# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) -# 2009-03-08 fl Added subsampling support (from Justin Huff). -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1995-1996 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.6" - -import array, struct -import string -import Image, ImageFile - -def i16(c,o=0): - return ord(c[o+1]) + (ord(c[o])<<8) - -def i32(c,o=0): - return ord(c[o+3]) + (ord(c[o+2])<<8) + (ord(c[o+1])<<16) + (ord(c[o])<<24) - -# -# Parser - -def Skip(self, marker): - n = i16(self.fp.read(2))-2 - ImageFile._safe_read(self.fp, n) - -def APP(self, marker): - # - # Application marker. Store these in the APP dictionary. - # Also look for well-known application markers. - - n = i16(self.fp.read(2))-2 - s = ImageFile._safe_read(self.fp, n) - - app = "APP%d" % (marker&15) - - self.app[app] = s # compatibility - self.applist.append((app, s)) - - if marker == 0xFFE0 and s[:4] == "JFIF": - # extract JFIF information - self.info["jfif"] = version = i16(s, 5) # version - self.info["jfif_version"] = divmod(version, 256) - # extract JFIF properties - try: - jfif_unit = ord(s[7]) - jfif_density = i16(s, 8), i16(s, 10) - except: - pass - else: - if jfif_unit == 1: - self.info["dpi"] = jfif_density - self.info["jfif_unit"] = jfif_unit - self.info["jfif_density"] = jfif_density - elif marker == 0xFFE1 and s[:5] == "Exif\0": - # extract Exif information (incomplete) - self.info["exif"] = s # FIXME: value will change - elif marker == 0xFFE2 and s[:5] == "FPXR\0": - # extract FlashPix information (incomplete) - self.info["flashpix"] = s # FIXME: value will change - elif marker == 0xFFE2 and s[:12] == "ICC_PROFILE\0": - # Since an ICC profile can be larger than the maximum size of - # a JPEG marker (64K), we need provisions to split it into - # multiple markers. The format defined by the ICC specifies - # one or more APP2 markers containing the following data: - # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) - # Marker sequence number 1, 2, etc (1 byte) - # Number of markers Total of APP2's used (1 byte) - # Profile data (remainder of APP2 data) - # Decoders should use the marker sequence numbers to - # reassemble the profile, rather than assuming that the APP2 - # markers appear in the correct sequence. - self.icclist.append(s) - elif marker == 0xFFEE and s[:5] == "Adobe": - self.info["adobe"] = i16(s, 5) - # extract Adobe custom properties - try: - adobe_transform = ord(s[1]) - except: - pass - else: - self.info["adobe_transform"] = adobe_transform - -def COM(self, marker): - # - # Comment marker. Store these in the APP dictionary. - - n = i16(self.fp.read(2))-2 - s = ImageFile._safe_read(self.fp, n) - - self.app["COM"] = s # compatibility - self.applist.append(("COM", s)) - -def SOF(self, marker): - # - # Start of frame marker. Defines the size and mode of the - # image. JPEG is colour blind, so we use some simple - # heuristics to map the number of layers to an appropriate - # mode. Note that this could be made a bit brighter, by - # looking for JFIF and Adobe APP markers. - - n = i16(self.fp.read(2))-2 - s = ImageFile._safe_read(self.fp, n) - self.size = i16(s[3:]), i16(s[1:]) - - self.bits = ord(s[0]) - if self.bits != 8: - raise SyntaxError("cannot handle %d-bit layers" % self.bits) - - self.layers = ord(s[5]) - if self.layers == 1: - self.mode = "L" - elif self.layers == 3: - self.mode = "RGB" - elif self.layers == 4: - self.mode = "CMYK" - else: - raise SyntaxError("cannot handle %d-layer images" % self.layers) - - if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: - self.info["progressive"] = self.info["progression"] = 1 - - if self.icclist: - # fixup icc profile - self.icclist.sort() # sort by sequence number - if ord(self.icclist[0][13]) == len(self.icclist): - profile = [] - for p in self.icclist: - profile.append(p[14:]) - icc_profile = string.join(profile, "") - else: - icc_profile = None # wrong number of fragments - self.info["icc_profile"] = icc_profile - self.icclist = None - - for i in range(6, len(s), 3): - t = s[i:i+3] - # 4-tuples: id, vsamp, hsamp, qtable - self.layer.append((t[0], ord(t[1])/16, ord(t[1])&15, ord(t[2]))) - -def DQT(self, marker): - # - # Define quantization table. Support baseline 8-bit tables - # only. Note that there might be more than one table in - # each marker. - - # FIXME: The quantization tables can be used to estimate the - # compression quality. - - n = i16(self.fp.read(2))-2 - s = ImageFile._safe_read(self.fp, n) - while len(s): - if len(s) < 65: - raise SyntaxError("bad quantization table marker") - v = ord(s[0]) - if v/16 == 0: - self.quantization[v&15] = array.array("b", s[1:65]) - s = s[65:] - else: - return # FIXME: add code to read 16-bit tables! - # raise SyntaxError, "bad quantization table element size" - - -# -# JPEG marker table - -MARKER = { - 0xFFC0: ("SOF0", "Baseline DCT", SOF), - 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), - 0xFFC2: ("SOF2", "Progressive DCT", SOF), - 0xFFC3: ("SOF3", "Spatial lossless", SOF), - 0xFFC4: ("DHT", "Define Huffman table", Skip), - 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), - 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), - 0xFFC7: ("SOF7", "Differential spatial", SOF), - 0xFFC8: ("JPG", "Extension", None), - 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), - 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), - 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), - 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), - 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), - 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), - 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), - 0xFFD0: ("RST0", "Restart 0", None), - 0xFFD1: ("RST1", "Restart 1", None), - 0xFFD2: ("RST2", "Restart 2", None), - 0xFFD3: ("RST3", "Restart 3", None), - 0xFFD4: ("RST4", "Restart 4", None), - 0xFFD5: ("RST5", "Restart 5", None), - 0xFFD6: ("RST6", "Restart 6", None), - 0xFFD7: ("RST7", "Restart 7", None), - 0xFFD8: ("SOI", "Start of image", None), - 0xFFD9: ("EOI", "End of image", None), - 0xFFDA: ("SOS", "Start of scan", Skip), - 0xFFDB: ("DQT", "Define quantization table", DQT), - 0xFFDC: ("DNL", "Define number of lines", Skip), - 0xFFDD: ("DRI", "Define restart interval", Skip), - 0xFFDE: ("DHP", "Define hierarchical progression", SOF), - 0xFFDF: ("EXP", "Expand reference component", Skip), - 0xFFE0: ("APP0", "Application segment 0", APP), - 0xFFE1: ("APP1", "Application segment 1", APP), - 0xFFE2: ("APP2", "Application segment 2", APP), - 0xFFE3: ("APP3", "Application segment 3", APP), - 0xFFE4: ("APP4", "Application segment 4", APP), - 0xFFE5: ("APP5", "Application segment 5", APP), - 0xFFE6: ("APP6", "Application segment 6", APP), - 0xFFE7: ("APP7", "Application segment 7", APP), - 0xFFE8: ("APP8", "Application segment 8", APP), - 0xFFE9: ("APP9", "Application segment 9", APP), - 0xFFEA: ("APP10", "Application segment 10", APP), - 0xFFEB: ("APP11", "Application segment 11", APP), - 0xFFEC: ("APP12", "Application segment 12", APP), - 0xFFED: ("APP13", "Application segment 13", APP), - 0xFFEE: ("APP14", "Application segment 14", APP), - 0xFFEF: ("APP15", "Application segment 15", APP), - 0xFFF0: ("JPG0", "Extension 0", None), - 0xFFF1: ("JPG1", "Extension 1", None), - 0xFFF2: ("JPG2", "Extension 2", None), - 0xFFF3: ("JPG3", "Extension 3", None), - 0xFFF4: ("JPG4", "Extension 4", None), - 0xFFF5: ("JPG5", "Extension 5", None), - 0xFFF6: ("JPG6", "Extension 6", None), - 0xFFF7: ("JPG7", "Extension 7", None), - 0xFFF8: ("JPG8", "Extension 8", None), - 0xFFF9: ("JPG9", "Extension 9", None), - 0xFFFA: ("JPG10", "Extension 10", None), - 0xFFFB: ("JPG11", "Extension 11", None), - 0xFFFC: ("JPG12", "Extension 12", None), - 0xFFFD: ("JPG13", "Extension 13", None), - 0xFFFE: ("COM", "Comment", COM) -} - - -def _accept(prefix): - return prefix[0] == "\377" - -## -# Image plugin for JPEG and JFIF images. - -class JpegImageFile(ImageFile.ImageFile): - - format = "JPEG" - format_description = "JPEG (ISO 10918)" - - def _open(self): - - s = self.fp.read(1) - - if ord(s[0]) != 255: - raise SyntaxError("not a JPEG file") - - # Create attributes - self.bits = self.layers = 0 - - # JPEG specifics (internal) - self.layer = [] - self.huffman_dc = {} - self.huffman_ac = {} - self.quantization = {} - self.app = {} # compatibility - self.applist = [] - self.icclist = [] - - while 1: - - s = s + self.fp.read(1) - - i = i16(s) - - if MARKER.has_key(i): - name, description, handler = MARKER[i] - # print hex(i), name, description - if handler is not None: - handler(self, i) - if i == 0xFFDA: # start of scan - rawmode = self.mode - if self.mode == "CMYK": - rawmode = "CMYK;I" # assume adobe conventions - self.tile = [("jpeg", (0,0) + self.size, 0, (rawmode, ""))] - # self.__offset = self.fp.tell() - break - s = self.fp.read(1) - elif i == 0 or i == 65535: - # padded marker or junk; move on - s = "\xff" - else: - raise SyntaxError("no marker found") - - def draft(self, mode, size): - - if len(self.tile) != 1: - return - - d, e, o, a = self.tile[0] - scale = 0 - - if a[0] == "RGB" and mode in ["L", "YCbCr"]: - self.mode = mode - a = mode, "" - - if size: - scale = max(self.size[0] / size[0], self.size[1] / size[1]) - for s in [8, 4, 2, 1]: - if scale >= s: - break - e = e[0], e[1], (e[2]-e[0]+s-1)/s+e[0], (e[3]-e[1]+s-1)/s+e[1] - self.size = ((self.size[0]+s-1)/s, (self.size[1]+s-1)/s) - scale = s - - self.tile = [(d, e, o, a)] - self.decoderconfig = (scale, 1) - - return self - - def load_djpeg(self): - - # ALTERNATIVE: handle JPEGs via the IJG command line utilities - - import tempfile, os - file = tempfile.mktemp() - os.system("djpeg %s >%s" % (self.filename, file)) - - try: - self.im = Image.core.open_ppm(file) - finally: - try: os.unlink(file) - except: pass - - self.mode = self.im.mode - self.size = self.im.size - - self.tile = [] - - def _getexif(self): - # Extract EXIF information. This method is highly experimental, - # and is likely to be replaced with something better in a future - # version. - import TiffImagePlugin, StringIO - def fixup(value): - if len(value) == 1: - return value[0] - return value - # The EXIF record consists of a TIFF file embedded in a JPEG - # application marker (!). - try: - data = self.info["exif"] - except KeyError: - return None - file = StringIO.StringIO(data[6:]) - head = file.read(8) - exif = {} - # process dictionary - info = TiffImagePlugin.ImageFileDirectory(head) - info.load(file) - for key, value in info.items(): - exif[key] = fixup(value) - # get exif extension - try: - file.seek(exif[0x8769]) - except KeyError: - pass - else: - info = TiffImagePlugin.ImageFileDirectory(head) - info.load(file) - for key, value in info.items(): - exif[key] = fixup(value) - # get gpsinfo extension - try: - file.seek(exif[0x8825]) - except KeyError: - pass - else: - info = TiffImagePlugin.ImageFileDirectory(head) - info.load(file) - exif[0x8825] = gps = {} - for key, value in info.items(): - gps[key] = fixup(value) - return exif - -# -------------------------------------------------------------------- -# stuff to save JPEG files - -RAWMODE = { - "1": "L", - "L": "L", - "RGB": "RGB", - "RGBA": "RGB", - "RGBX": "RGB", - "CMYK": "CMYK;I", # assume adobe conventions - "YCbCr": "YCbCr", -} - -def _save(im, fp, filename): - - try: - rawmode = RAWMODE[im.mode] - except KeyError: - raise IOError("cannot write mode %s as JPEG" % im.mode) - - info = im.encoderinfo - - dpi = info.get("dpi", (0, 0)) - - subsampling = info.get("subsampling", -1) - if subsampling == "4:4:4": - subsampling = 0 - elif subsampling == "4:2:2": - subsampling = 1 - elif subsampling == "4:1:1": - subsampling = 2 - - extra = "" - - icc_profile = info.get("icc_profile") - if icc_profile: - ICC_OVERHEAD_LEN = 14 - MAX_BYTES_IN_MARKER = 65533 - MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN - markers = [] - while icc_profile: - markers.append(icc_profile[:MAX_DATA_BYTES_IN_MARKER]) - icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:] - i = 1 - for marker in markers: - size = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker)) - extra = extra + ("\xFF\xE2" + size + "ICC_PROFILE\0" + chr(i) + chr(len(markers)) + marker) - i = i + 1 - - # get keyword arguments - im.encoderconfig = ( - info.get("quality", 0), - # "progressive" is the official name, but older documentation - # says "progression" - # FIXME: issue a warning if the wrong form is used (post-1.1.7) - info.has_key("progressive") or info.has_key("progression"), - info.get("smooth", 0), - info.has_key("optimize"), - info.get("streamtype", 0), - dpi[0], dpi[1], - subsampling, - extra, - ) - - ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)]) - -def _save_cjpeg(im, fp, filename): - # ALTERNATIVE: handle JPEGs via the IJG command line utilities. - import os - file = im._dump() - os.system("cjpeg %s >%s" % (file, filename)) - try: os.unlink(file) - except: pass - -# -------------------------------------------------------------------q- -# Registry stuff - -Image.register_open("JPEG", JpegImageFile, _accept) -Image.register_save("JPEG", _save) - -Image.register_extension("JPEG", ".jfif") -Image.register_extension("JPEG", ".jpe") -Image.register_extension("JPEG", ".jpg") -Image.register_extension("JPEG", ".jpeg") - -Image.register_mime("JPEG", "image/jpeg") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py deleted file mode 100755 index 62ee52cf8ff..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/McIdasImagePlugin.py +++ /dev/null @@ -1,70 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# Basic McIdas support for PIL -# -# History: -# 1997-05-05 fl Created (8-bit images only) -# 2009-03-08 fl Added 16/32-bit support. -# -# Thanks to Richard Jones and Craig Swank for specs and samples. -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.2" - -import struct -import Image, ImageFile - -def _accept(s): - return s[:8] == "\x00\x00\x00\x00\x00\x00\x00\x04" - -## -# Image plugin for McIdas area images. - -class McIdasImageFile(ImageFile.ImageFile): - - format = "MCIDAS" - format_description = "McIdas area file" - - def _open(self): - - # parse area file directory - s = self.fp.read(256) - if not _accept(s) or len(s) != 256: - raise SyntaxError("not an McIdas area file") - - self.area_descriptor_raw = s - self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) - - # get mode - if w[11] == 1: - mode = rawmode = "L" - elif w[11] == 2: - # FIXME: add memory map support - mode = "I"; rawmode = "I;16B" - elif w[11] == 4: - # FIXME: add memory map support - mode = "I"; rawmode = "I;32B" - else: - raise SyntaxError("unsupported McIdas format") - - self.mode = mode - self.size = w[10], w[9] - - offset = w[34] + w[15] - stride = w[15] + w[10]*w[11]*w[14] - - self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] - -# -------------------------------------------------------------------- -# registry - -Image.register_open("MCIDAS", McIdasImageFile, _accept) - -# no default extension diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py deleted file mode 100755 index b1a3bba79f7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MicImagePlugin.py +++ /dev/null @@ -1,95 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# Microsoft Image Composer support for PIL -# -# Notes: -# uses TiffImagePlugin.py to read the actual image streams -# -# History: -# 97-01-20 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.1" - - -import Image, TiffImagePlugin -from OleFileIO import * - - -# -# -------------------------------------------------------------------- - - -def _accept(prefix): - return prefix[:8] == MAGIC - -## -# Image plugin for Microsoft's Image Composer file format. - -class MicImageFile(TiffImagePlugin.TiffImageFile): - - format = "MIC" - format_description = "Microsoft Image Composer" - - def _open(self): - - # read the OLE directory and see if this is a likely - # to be a Microsoft Image Composer file - - try: - self.ole = OleFileIO(self.fp) - except IOError: - raise SyntaxError, "not an MIC file; invalid OLE file" - - # find ACI subfiles with Image members (maybe not the - # best way to identify MIC files, but what the... ;-) - - self.images = [] - for file in self.ole.listdir(): - if file[1:] and file[0][-4:] == ".ACI" and file[1] == "Image": - self.images.append(file) - - # if we didn't find any images, this is probably not - # an MIC file. - if not self.images: - raise SyntaxError, "not an MIC file; no image entries" - - self.__fp = self.fp - self.frame = 0 - - if len(self.images) > 1: - self.category = Image.CONTAINER - - self.seek(0) - - def seek(self, frame): - - try: - filename = self.images[frame] - except IndexError: - raise EOFError, "no such frame" - - self.fp = self.ole.openstream(filename) - - TiffImagePlugin.TiffImageFile._open(self) - - self.frame = frame - - def tell(self): - - return self.frame - -# -# -------------------------------------------------------------------- - -Image.register_open("MIC", MicImageFile, _accept) - -Image.register_extension("MIC", ".mic") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py deleted file mode 100755 index c02edee8267..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MpegImagePlugin.py +++ /dev/null @@ -1,82 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# MPEG file handling -# -# History: -# 95-09-09 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1995. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.1" - -import Image, ImageFile - -# -# Bitstream parser - -class BitStream: - - def __init__(self, fp): - self.fp = fp - self.bits = 0 - self.bitbuffer = 0 - - def next(self): - return ord(self.fp.read(1)) - - def peek(self, bits): - while self.bits < bits: - c = self.next() - if c < 0: - self.bits = 0 - continue - self.bitbuffer = (self.bitbuffer << 8) + c - self.bits = self.bits + 8 - return self.bitbuffer >> (self.bits - bits) & (1L << bits) - 1 - - def skip(self, bits): - while self.bits < bits: - self.bitbuffer = (self.bitbuffer << 8) + ord(self.fp.read(1)) - self.bits = self.bits + 8 - self.bits = self.bits - bits - - def read(self, bits): - v = self.peek(bits) - self.bits = self.bits - bits - return v - -## -# Image plugin for MPEG streams. This plugin can identify a stream, -# but it cannot read it. - -class MpegImageFile(ImageFile.ImageFile): - - format = "MPEG" - format_description = "MPEG" - - def _open(self): - - s = BitStream(self.fp) - - if s.read(32) != 0x1B3: - raise SyntaxError, "not an MPEG file" - - self.mode = "RGB" - self.size = s.read(12), s.read(12) - - -# -------------------------------------------------------------------- -# Registry stuff - -Image.register_open("MPEG", MpegImageFile) - -Image.register_extension("MPEG", ".mpg") -Image.register_extension("MPEG", ".mpeg") - -Image.register_mime("MPEG", "video/mpeg") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py deleted file mode 100755 index 9dac36b47b7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/MspImagePlugin.py +++ /dev/null @@ -1,103 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# MSP file handling -# -# This is the format used by the Paint program in Windows 1 and 2. -# -# History: -# 95-09-05 fl Created -# 97-01-03 fl Read/write MSP images -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1995-97. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.1" - -import Image, ImageFile - - -# -# read MSP files - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def _accept(prefix): - return prefix[:4] in ["DanM", "LinS"] - -## -# Image plugin for Windows MSP images. This plugin supports both -# uncompressed (Windows 1.0). - -class MspImageFile(ImageFile.ImageFile): - - format = "MSP" - format_description = "Windows Paint" - - def _open(self): - - # Header - s = self.fp.read(32) - if s[:4] not in ["DanM", "LinS"]: - raise SyntaxError, "not an MSP file" - - # Header checksum - sum = 0 - for i in range(0, 32, 2): - sum = sum ^ i16(s[i:i+2]) - if sum != 0: - raise SyntaxError, "bad MSP checksum" - - self.mode = "1" - self.size = i16(s[4:]), i16(s[6:]) - - if s[:4] == "DanM": - self.tile = [("raw", (0,0)+self.size, 32, ("1", 0, 1))] - else: - self.tile = [("msp", (0,0)+self.size, 32+2*self.size[1], None)] - -# -# write MSP files (uncompressed only) - -def o16(i): - return chr(i&255) + chr(i>>8&255) - -def _save(im, fp, filename): - - if im.mode != "1": - raise IOError, "cannot write mode %s as MSP" % im.mode - - # create MSP header - header = [0] * 16 - - header[0], header[1] = i16("Da"), i16("nM") # version 1 - header[2], header[3] = im.size - header[4], header[5] = 1, 1 - header[6], header[7] = 1, 1 - header[8], header[9] = im.size - - sum = 0 - for h in header: - sum = sum ^ h - header[12] = sum # FIXME: is this the right field? - - # header - for h in header: - fp.write(o16(h)) - - # image body - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 32, ("1", 0, 1))]) - -# -# registry - -Image.register_open("MSP", MspImageFile, _accept) -Image.register_save("MSP", _save) - -Image.register_extension("MSP", ".msp") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py deleted file mode 100755 index 36e598a9be3..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/OleFileIO.py +++ /dev/null @@ -1,528 +0,0 @@ -# -# THIS IS WORK IN PROGRESS -# -# The Python Imaging Library -# $Id$ -# -# stuff to deal with OLE2 Structured Storage files. this module is -# used by PIL to read Image Composer and FlashPix files, but can also -# be used to read other files of this type. -# -# History: -# 1997-01-20 fl Created -# 1997-01-22 fl Fixed 64-bit portability quirk -# 2003-09-09 fl Fixed typo in OleFileIO.loadfat (noted by Daniel Haertle) -# 2004-02-29 fl Changed long hex constants to signed integers -# -# Notes: -# FIXME: sort out sign problem (eliminate long hex constants) -# FIXME: change filename to use "a/b/c" instead of ["a", "b", "c"] -# FIXME: provide a glob mechanism function (using fnmatchcase) -# -# Literature: -# -# "FlashPix Format Specification, Appendix A", Kodak and Microsoft, -# September 1996. -# -# Quotes: -# -# "If this document and functionality of the Software conflict, -# the actual functionality of the Software represents the correct -# functionality" -- Microsoft, in the OLE format specification -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - -import string, StringIO - - -def i16(c, o = 0): - return ord(c[o])+(ord(c[o+1])<<8) - -def i32(c, o = 0): - return ord(c[o])+(ord(c[o+1])<<8)+(ord(c[o+2])<<16)+(ord(c[o+3])<<24) - - -MAGIC = '\320\317\021\340\241\261\032\341' - -# -# -------------------------------------------------------------------- -# property types - -VT_EMPTY=0; VT_NULL=1; VT_I2=2; VT_I4=3; VT_R4=4; VT_R8=5; VT_CY=6; -VT_DATE=7; VT_BSTR=8; VT_DISPATCH=9; VT_ERROR=10; VT_BOOL=11; -VT_VARIANT=12; VT_UNKNOWN=13; VT_DECIMAL=14; VT_I1=16; VT_UI1=17; -VT_UI2=18; VT_UI4=19; VT_I8=20; VT_UI8=21; VT_INT=22; VT_UINT=23; -VT_VOID=24; VT_HRESULT=25; VT_PTR=26; VT_SAFEARRAY=27; VT_CARRAY=28; -VT_USERDEFINED=29; VT_LPSTR=30; VT_LPWSTR=31; VT_FILETIME=64; -VT_BLOB=65; VT_STREAM=66; VT_STORAGE=67; VT_STREAMED_OBJECT=68; -VT_STORED_OBJECT=69; VT_BLOB_OBJECT=70; VT_CF=71; VT_CLSID=72; -VT_VECTOR=0x1000; - -# map property id to name (for debugging purposes) - -VT = {} -for k, v in vars().items(): - if k[:3] == "VT_": - VT[v] = k - -# -# -------------------------------------------------------------------- -# Some common document types (root.clsid fields) - -WORD_CLSID = "00020900-0000-0000-C000-000000000046" - - -# -# -------------------------------------------------------------------- - -class _OleStream(StringIO.StringIO): - - """OLE2 Stream - - Returns a read-only file object which can be used to read - the contents of a OLE stream. To open a stream, use the - openstream method in the OleFile class. - - This function can be used with either ordinary streams, - or ministreams, depending on the offset, sectorsize, and - fat table arguments. - """ - - # FIXME: should store the list of sects obtained by following - # the fat chain, and load new sectors on demand instead of - # loading it all in one go. - - def __init__(self, fp, sect, size, offset, sectorsize, fat): - - data = [] - - while sect != -2: # 0xFFFFFFFEL: - fp.seek(offset + sectorsize * sect) - data.append(fp.read(sectorsize)) - sect = fat[sect] - - data = string.join(data, "") - - # print len(data), size - - StringIO.StringIO.__init__(self, data[:size]) - -# -# -------------------------------------------------------------------- - -# FIXME: should add a counter in here to avoid looping forever -# if the tree is broken. - -class _OleDirectoryEntry: - - """OLE2 Directory Entry - - Encapsulates a stream directory entry. Note that the - constructor builds a tree of all subentries, so we only - have to call it with the root object. - """ - - def __init__(self, sidlist, sid): - - # store directory parameters. the caller provides - # a complete list of directory entries, as read from - # the directory stream. - - name, type, sect, size, sids, clsid = sidlist[sid] - - self.sid = sid - self.name = name - self.type = type # 1=storage 2=stream - self.sect = sect - self.size = size - self.clsid = clsid - - # process child nodes, if any - - self.kids = [] - - sid = sidlist[sid][4][2] - - if sid != -1: - - # the directory entries are organized as a red-black tree. - # the following piece of code does an ordered traversal of - # such a tree (at least that's what I hope ;-) - - stack = [self.sid] - - # start at leftmost position - - left, right, child = sidlist[sid][4] - - while left != -1: # 0xFFFFFFFFL: - stack.append(sid) - sid = left - left, right, child = sidlist[sid][4] - - while sid != self.sid: - - self.kids.append(_OleDirectoryEntry(sidlist, sid)) - - # try to move right - left, right, child = sidlist[sid][4] - if right != -1: # 0xFFFFFFFFL: - # and then back to the left - sid = right - while 1: - left, right, child = sidlist[sid][4] - if left == -1: # 0xFFFFFFFFL: - break - stack.append(sid) - sid = left - else: - # couldn't move right; move up instead - while 1: - ptr = stack[-1] - del stack[-1] - left, right, child = sidlist[ptr][4] - if right != sid: - break - sid = right - left, right, child = sidlist[sid][4] - if right != ptr: - sid = ptr - - # in the OLE file, entries are sorted on (length, name). - # for convenience, we sort them on name instead. - - self.kids.sort() - - def __cmp__(self, other): - "Compare entries by name" - - return cmp(self.name, other.name) - - def dump(self, tab = 0): - "Dump this entry, and all its subentries (for debug purposes only)" - - TYPES = ["(invalid)", "(storage)", "(stream)", "(lockbytes)", - "(property)", "(root)"] - - print " "*tab + repr(self.name), TYPES[self.type], - if self.type in (2, 5): - print self.size, "bytes", - print - if self.type in (1, 5) and self.clsid: - print " "*tab + "{%s}" % self.clsid - - for kid in self.kids: - kid.dump(tab + 2) - -# -# -------------------------------------------------------------------- - -## -# This class encapsulates the interface to an OLE 2 structured -# storage file. Use the {@link listdir} and {@link openstream} -# methods to access the contents of this file. - -class OleFileIO: - """OLE container object - - This class encapsulates the interface to an OLE 2 structured - storage file. Use the listdir and openstream methods to access - the contents of this file. - - Object names are given as a list of strings, one for each subentry - level. The root entry should be omitted. For example, the following - code extracts all image streams from a Microsoft Image Composer file: - - ole = OleFileIO("fan.mic") - - for entry in ole.listdir(): - if entry[1:2] == "Image": - fin = ole.openstream(entry) - fout = open(entry[0:1], "wb") - while 1: - s = fin.read(8192) - if not s: - break - fout.write(s) - - You can use the viewer application provided with the Python Imaging - Library to view the resulting files (which happens to be standard - TIFF files). - """ - - def __init__(self, filename = None): - - if filename: - self.open(filename) - - ## - # Open an OLE2 file. - - def open(self, filename): - """Open an OLE2 file""" - - if type(filename) == type(""): - self.fp = open(filename, "rb") - else: - self.fp = filename - - header = self.fp.read(512) - - if len(header) != 512 or header[:8] != MAGIC: - raise IOError, "not an OLE2 structured storage file" - - # file clsid (probably never used, so we don't store it) - clsid = self._clsid(header[8:24]) - - # FIXME: could check version and byte order fields - - self.sectorsize = 1 << i16(header, 30) - self.minisectorsize = 1 << i16(header, 32) - - self.minisectorcutoff = i32(header, 56) - - # Load file allocation tables - self.loadfat(header) - - # Load direcory. This sets both the sidlist (ordered by id) - # and the root (ordered by hierarchy) members. - self.loaddirectory(i32(header, 48)) - - self.ministream = None - self.minifatsect = i32(header, 60) - - def loadfat(self, header): - # Load the FAT table. The header contains a sector numbers - # for the first 109 FAT sectors. Additional sectors are - # described by DIF blocks (FIXME: not yet implemented) - - sect = header[76:512] - fat = [] - for i in range(0, len(sect), 4): - ix = i32(sect, i) - if ix == -2 or ix == -1: # ix == 0xFFFFFFFEL or ix == 0xFFFFFFFFL: - break - s = self.getsect(ix) - fat = fat + map(lambda i, s=s: i32(s, i), range(0, len(s), 4)) - self.fat = fat - - def loadminifat(self): - # Load the MINIFAT table. This is stored in a standard sub- - # stream, pointed to by a header field. - - s = self._open(self.minifatsect).read() - - self.minifat = map(lambda i, s=s: i32(s, i), range(0, len(s), 4)) - - def getsect(self, sect): - # Read given sector - - self.fp.seek(512 + self.sectorsize * sect) - return self.fp.read(self.sectorsize) - - def _unicode(self, s): - # Map unicode string to Latin 1 - - # FIXME: some day, Python will provide an official way to handle - # Unicode strings, but until then, this will have to do... - return filter(ord, s) - - def loaddirectory(self, sect): - # Load the directory. The directory is stored in a standard - # substream, independent of its size. - - # read directory stream - fp = self._open(sect) - - # create list of sid entries - self.sidlist = [] - while 1: - entry = fp.read(128) - if not entry: - break - type = ord(entry[66]) - name = self._unicode(entry[0:0+i16(entry, 64)]) - ptrs = i32(entry, 68), i32(entry, 72), i32(entry, 76) - sect, size = i32(entry, 116), i32(entry, 120) - clsid = self._clsid(entry[80:96]) - self.sidlist.append((name, type, sect, size, ptrs, clsid)) - - # create hierarchical list of directory entries - self.root = _OleDirectoryEntry(self.sidlist, 0) - - def dumpdirectory(self): - # Dump directory (for debugging only) - - self.root.dump() - - def _clsid(self, clsid): - if clsid == "\0" * len(clsid): - return "" - return (("%08X-%04X-%04X-%02X%02X-" + "%02X" * 6) % - ((i32(clsid, 0), i16(clsid, 4), i16(clsid, 6)) + - tuple(map(ord, clsid[8:16])))) - - def _list(self, files, prefix, node): - # listdir helper - - prefix = prefix + [node.name] - for entry in node.kids: - if entry.kids: - self._list(files, prefix, entry) - else: - files.append(prefix[1:] + [entry.name]) - - def _find(self, filename): - # openstream helper - - node = self.root - for name in filename: - for kid in node.kids: - if kid.name == name: - break - else: - raise IOError, "file not found" - node = kid - return node.sid - - def _open(self, start, size = 0x7FFFFFFF): - # openstream helper. - - if size < self.minisectorcutoff: - # ministream object - if not self.ministream: - self.loadminifat() - self.ministream = self._open(self.sidlist[0][2]) - return _OleStream(self.ministream, start, size, 0, - self.minisectorsize, self.minifat) - - # standard stream - return _OleStream(self.fp, start, size, 512, - self.sectorsize, self.fat) - - ## - # Returns a list of streams stored in this file. - - def listdir(self): - """Return a list of streams stored in this file""" - - files = [] - self._list(files, [], self.root) - return files - - ## - # Opens a stream as a read-only file object. - - def openstream(self, filename): - """Open a stream as a read-only file object""" - - slot = self._find(filename) - name, type, sect, size, sids, clsid = self.sidlist[slot] - if type != 2: - raise IOError, "this file is not a stream" - return self._open(sect, size) - - ## - # Gets a list of properties described in substream. - - def getproperties(self, filename): - """Return properties described in substream""" - - fp = self.openstream(filename) - - data = {} - - # header - s = fp.read(28) - clsid = self._clsid(s[8:24]) - - # format id - s = fp.read(20) - fmtid = self._clsid(s[:16]) - fp.seek(i32(s, 16)) - - # get section - s = "****" + fp.read(i32(fp.read(4))-4) - - for i in range(i32(s, 4)): - - id = i32(s, 8+i*8) - offset = i32(s, 12+i*8) - type = i32(s, offset) - - # test for common types first (should perhaps use - # a dictionary instead?) - - if type == VT_I2: - value = i16(s, offset+4) - if value >= 32768: - value = value - 65536 - elif type == VT_UI2: - value = i16(s, offset+4) - elif type in (VT_I4, VT_ERROR): - value = i32(s, offset+4) - elif type == VT_UI4: - value = i32(s, offset+4) # FIXME - elif type in (VT_BSTR, VT_LPSTR): - count = i32(s, offset+4) - value = s[offset+8:offset+8+count-1] - elif type == VT_BLOB: - count = i32(s, offset+4) - value = s[offset+8:offset+8+count] - elif type == VT_LPWSTR: - count = i32(s, offset+4) - value = self._unicode(s[offset+8:offset+8+count*2]) - elif type == VT_FILETIME: - value = long(i32(s, offset+4)) + (long(i32(s, offset+8))<<32) - # FIXME: this is a 64-bit int: "number of 100ns periods - # since Jan 1,1601". Should map this to Python time - value = value / 10000000L # seconds - elif type == VT_UI1: - value = ord(s[offset+4]) - elif type == VT_CLSID: - value = self._clsid(s[offset+4:offset+20]) - elif type == VT_CF: - count = i32(s, offset+4) - value = s[offset+8:offset+8+count] - else: - value = None # everything else yields "None" - - # FIXME: add support for VT_VECTOR - - #print "%08x" % id, repr(value), - #print "(%s)" % VT[i32(s, offset) & 0xFFF] - - data[id] = value - - return data - -# -# -------------------------------------------------------------------- -# This script can be used to dump the directory of any OLE2 structured -# storage file. - -if __name__ == "__main__": - - import sys - - for file in sys.argv[1:]: - try: - ole = OleFileIO(file) - print "-" * 68 - print file - print "-" * 68 - ole.dumpdirectory() - for file in ole.listdir(): - if file[-1][0] == "\005": - print file - props = ole.getproperties(file) - props = props.items() - props.sort() - for k, v in props: - print " ", k, v - except IOError, v: - print "***", "cannot read", file, "-", v diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py deleted file mode 100755 index 7309e17b3e2..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PSDraw.py +++ /dev/null @@ -1,199 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# simple postscript graphics interface -# -# History: -# 1996-04-20 fl Created -# 1999-01-10 fl Added gsave/grestore to image method -# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) -# -# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. -# Copyright (c) 1996 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -import EpsImagePlugin -import string - -## -# Simple Postscript graphics interface. - -class PSDraw: - - def __init__(self, fp=None): - if not fp: - import sys - fp = sys.stdout - self.fp = fp - - def begin_document(self, id = None): - "Write Postscript DSC header" - # FIXME: incomplete - self.fp.write("%!PS-Adobe-3.0\n" - "save\n" - "/showpage { } def\n" - "%%EndComments\n" - "%%BeginDocument\n") - #self.fp.write(ERROR_PS) # debugging! - self.fp.write(EDROFF_PS) - self.fp.write(VDI_PS) - self.fp.write("%%EndProlog\n") - self.isofont = {} - - def end_document(self): - "Write Postscript DSC footer" - self.fp.write("%%EndDocument\n" - "restore showpage\n" - "%%End\n") - if hasattr(self.fp, "flush"): - self.fp.flush() - - def setfont(self, font, size): - if not self.isofont.has_key(font): - # reencode font - self.fp.write("/PSDraw-%s ISOLatin1Encoding /%s E\n" %\ - (font, font)) - self.isofont[font] = 1 - # rough - self.fp.write("/F0 %d /PSDraw-%s F\n" % (size, font)) - - def setink(self, ink): - print "*** NOT YET IMPLEMENTED ***" - - def line(self, xy0, xy1): - xy = xy0 + xy1 - self.fp.write("%d %d %d %d Vl\n" % xy) - - def rectangle(self, box): - self.fp.write("%d %d M %d %d 0 Vr\n" % box) - - def text(self, xy, text): - text = string.joinfields(string.splitfields(text, "("), "\\(") - text = string.joinfields(string.splitfields(text, ")"), "\\)") - xy = xy + (text,) - self.fp.write("%d %d M (%s) S\n" % xy) - - def image(self, box, im, dpi = None): - "Write an PIL image" - # default resolution depends on mode - if not dpi: - if im.mode == "1": - dpi = 200 # fax - else: - dpi = 100 # greyscale - # image size (on paper) - x = float(im.size[0] * 72) / dpi - y = float(im.size[1] * 72) / dpi - # max allowed size - xmax = float(box[2] - box[0]) - ymax = float(box[3] - box[1]) - if x > xmax: - y = y * xmax / x; x = xmax - if y > ymax: - x = x * ymax / y; y = ymax - dx = (xmax - x) / 2 + box[0] - dy = (ymax - y) / 2 + box[1] - self.fp.write("gsave\n%f %f translate\n" % (dx, dy)) - if (x, y) != im.size: - # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) - sx = x / im.size[0] - sy = y / im.size[1] - self.fp.write("%f %f scale\n" % (sx, sy)) - EpsImagePlugin._save(im, self.fp, None, 0) - self.fp.write("\ngrestore\n") - -# -------------------------------------------------------------------- -# Postscript driver - -# -# EDROFF.PS -- Postscript driver for Edroff 2 -# -# History: -# 94-01-25 fl: created (edroff 2.04) -# -# Copyright (c) Fredrik Lundh 1994. -# - -EDROFF_PS = """\ -/S { show } bind def -/P { moveto show } bind def -/M { moveto } bind def -/X { 0 rmoveto } bind def -/Y { 0 exch rmoveto } bind def -/E { findfont - dup maxlength dict begin - { - 1 index /FID ne { def } { pop pop } ifelse - } forall - /Encoding exch def - dup /FontName exch def - currentdict end definefont pop -} bind def -/F { findfont exch scalefont dup setfont - [ exch /setfont cvx ] cvx bind def -} bind def -""" - -# -# VDI.PS -- Postscript driver for VDI meta commands -# -# History: -# 94-01-25 fl: created (edroff 2.04) -# -# Copyright (c) Fredrik Lundh 1994. -# - -VDI_PS = """\ -/Vm { moveto } bind def -/Va { newpath arcn stroke } bind def -/Vl { moveto lineto stroke } bind def -/Vc { newpath 0 360 arc closepath } bind def -/Vr { exch dup 0 rlineto - exch dup neg 0 exch rlineto - exch neg 0 rlineto - 0 exch rlineto - 100 div setgray fill 0 setgray } bind def -/Tm matrix def -/Ve { Tm currentmatrix pop - translate scale newpath 0 0 .5 0 360 arc closepath - Tm setmatrix -} bind def -/Vf { currentgray exch setgray fill setgray } bind def -""" - -# -# ERROR.PS -- Error handler -# -# History: -# 89-11-21 fl: created (pslist 1.10) -# - -ERROR_PS = """\ -/landscape false def -/errorBUF 200 string def -/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def -errordict begin /handleerror { - initmatrix /Courier findfont 10 scalefont setfont - newpath 72 720 moveto $error begin /newerror false def - (PostScript Error) show errorNL errorNL - (Error: ) show - /errorname load errorBUF cvs show errorNL errorNL - (Command: ) show - /command load dup type /stringtype ne { errorBUF cvs } if show - errorNL errorNL - (VMstatus: ) show - vmstatus errorBUF cvs show ( bytes available, ) show - errorBUF cvs show ( bytes used at level ) show - errorBUF cvs show errorNL errorNL - (Operand stargck: ) show errorNL /ostargck load { - dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL - } forall errorNL - (Execution stargck: ) show errorNL /estargck load { - dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL - } forall - end showpage -} def end -""" diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py deleted file mode 100755 index 3bbd9132778..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PaletteFile.py +++ /dev/null @@ -1,55 +0,0 @@ -# -# Python Imaging Library -# $Id$ -# -# stuff to read simple, teragon-style palette files -# -# History: -# 97-08-23 fl Created -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - -import string - -## -# File handler for Teragon-style palette files. - -class PaletteFile: - - rawmode = "RGB" - - def __init__(self, fp): - - self.palette = map(lambda i: (i, i, i), range(256)) - - while 1: - - s = fp.readline() - - if not s: - break - if s[0] == "#": - continue - if len(s) > 100: - raise SyntaxError, "bad palette file" - - v = map(int, string.split(s)) - try: - [i, r, g, b] = v - except ValueError: - [i, r] = v - g = b = r - - if 0 <= i <= 255: - self.palette[i] = chr(r) + chr(g) + chr(b) - - self.palette = string.join(self.palette, "") - - - def getpalette(self): - - return self.palette, self.rawmode diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py deleted file mode 100755 index 78502313007..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PalmImagePlugin.py +++ /dev/null @@ -1,225 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# - -## -# Image plugin for Palm pixmap images (output only). -## - -__version__ = "1.0" - -import Image, ImageFile - -_Palm8BitColormapValues = ( - ( 255, 255, 255 ), ( 255, 204, 255 ), ( 255, 153, 255 ), ( 255, 102, 255 ), - ( 255, 51, 255 ), ( 255, 0, 255 ), ( 255, 255, 204 ), ( 255, 204, 204 ), - ( 255, 153, 204 ), ( 255, 102, 204 ), ( 255, 51, 204 ), ( 255, 0, 204 ), - ( 255, 255, 153 ), ( 255, 204, 153 ), ( 255, 153, 153 ), ( 255, 102, 153 ), - ( 255, 51, 153 ), ( 255, 0, 153 ), ( 204, 255, 255 ), ( 204, 204, 255 ), - ( 204, 153, 255 ), ( 204, 102, 255 ), ( 204, 51, 255 ), ( 204, 0, 255 ), - ( 204, 255, 204 ), ( 204, 204, 204 ), ( 204, 153, 204 ), ( 204, 102, 204 ), - ( 204, 51, 204 ), ( 204, 0, 204 ), ( 204, 255, 153 ), ( 204, 204, 153 ), - ( 204, 153, 153 ), ( 204, 102, 153 ), ( 204, 51, 153 ), ( 204, 0, 153 ), - ( 153, 255, 255 ), ( 153, 204, 255 ), ( 153, 153, 255 ), ( 153, 102, 255 ), - ( 153, 51, 255 ), ( 153, 0, 255 ), ( 153, 255, 204 ), ( 153, 204, 204 ), - ( 153, 153, 204 ), ( 153, 102, 204 ), ( 153, 51, 204 ), ( 153, 0, 204 ), - ( 153, 255, 153 ), ( 153, 204, 153 ), ( 153, 153, 153 ), ( 153, 102, 153 ), - ( 153, 51, 153 ), ( 153, 0, 153 ), ( 102, 255, 255 ), ( 102, 204, 255 ), - ( 102, 153, 255 ), ( 102, 102, 255 ), ( 102, 51, 255 ), ( 102, 0, 255 ), - ( 102, 255, 204 ), ( 102, 204, 204 ), ( 102, 153, 204 ), ( 102, 102, 204 ), - ( 102, 51, 204 ), ( 102, 0, 204 ), ( 102, 255, 153 ), ( 102, 204, 153 ), - ( 102, 153, 153 ), ( 102, 102, 153 ), ( 102, 51, 153 ), ( 102, 0, 153 ), - ( 51, 255, 255 ), ( 51, 204, 255 ), ( 51, 153, 255 ), ( 51, 102, 255 ), - ( 51, 51, 255 ), ( 51, 0, 255 ), ( 51, 255, 204 ), ( 51, 204, 204 ), - ( 51, 153, 204 ), ( 51, 102, 204 ), ( 51, 51, 204 ), ( 51, 0, 204 ), - ( 51, 255, 153 ), ( 51, 204, 153 ), ( 51, 153, 153 ), ( 51, 102, 153 ), - ( 51, 51, 153 ), ( 51, 0, 153 ), ( 0, 255, 255 ), ( 0, 204, 255 ), - ( 0, 153, 255 ), ( 0, 102, 255 ), ( 0, 51, 255 ), ( 0, 0, 255 ), - ( 0, 255, 204 ), ( 0, 204, 204 ), ( 0, 153, 204 ), ( 0, 102, 204 ), - ( 0, 51, 204 ), ( 0, 0, 204 ), ( 0, 255, 153 ), ( 0, 204, 153 ), - ( 0, 153, 153 ), ( 0, 102, 153 ), ( 0, 51, 153 ), ( 0, 0, 153 ), - ( 255, 255, 102 ), ( 255, 204, 102 ), ( 255, 153, 102 ), ( 255, 102, 102 ), - ( 255, 51, 102 ), ( 255, 0, 102 ), ( 255, 255, 51 ), ( 255, 204, 51 ), - ( 255, 153, 51 ), ( 255, 102, 51 ), ( 255, 51, 51 ), ( 255, 0, 51 ), - ( 255, 255, 0 ), ( 255, 204, 0 ), ( 255, 153, 0 ), ( 255, 102, 0 ), - ( 255, 51, 0 ), ( 255, 0, 0 ), ( 204, 255, 102 ), ( 204, 204, 102 ), - ( 204, 153, 102 ), ( 204, 102, 102 ), ( 204, 51, 102 ), ( 204, 0, 102 ), - ( 204, 255, 51 ), ( 204, 204, 51 ), ( 204, 153, 51 ), ( 204, 102, 51 ), - ( 204, 51, 51 ), ( 204, 0, 51 ), ( 204, 255, 0 ), ( 204, 204, 0 ), - ( 204, 153, 0 ), ( 204, 102, 0 ), ( 204, 51, 0 ), ( 204, 0, 0 ), - ( 153, 255, 102 ), ( 153, 204, 102 ), ( 153, 153, 102 ), ( 153, 102, 102 ), - ( 153, 51, 102 ), ( 153, 0, 102 ), ( 153, 255, 51 ), ( 153, 204, 51 ), - ( 153, 153, 51 ), ( 153, 102, 51 ), ( 153, 51, 51 ), ( 153, 0, 51 ), - ( 153, 255, 0 ), ( 153, 204, 0 ), ( 153, 153, 0 ), ( 153, 102, 0 ), - ( 153, 51, 0 ), ( 153, 0, 0 ), ( 102, 255, 102 ), ( 102, 204, 102 ), - ( 102, 153, 102 ), ( 102, 102, 102 ), ( 102, 51, 102 ), ( 102, 0, 102 ), - ( 102, 255, 51 ), ( 102, 204, 51 ), ( 102, 153, 51 ), ( 102, 102, 51 ), - ( 102, 51, 51 ), ( 102, 0, 51 ), ( 102, 255, 0 ), ( 102, 204, 0 ), - ( 102, 153, 0 ), ( 102, 102, 0 ), ( 102, 51, 0 ), ( 102, 0, 0 ), - ( 51, 255, 102 ), ( 51, 204, 102 ), ( 51, 153, 102 ), ( 51, 102, 102 ), - ( 51, 51, 102 ), ( 51, 0, 102 ), ( 51, 255, 51 ), ( 51, 204, 51 ), - ( 51, 153, 51 ), ( 51, 102, 51 ), ( 51, 51, 51 ), ( 51, 0, 51 ), - ( 51, 255, 0 ), ( 51, 204, 0 ), ( 51, 153, 0 ), ( 51, 102, 0 ), - ( 51, 51, 0 ), ( 51, 0, 0 ), ( 0, 255, 102 ), ( 0, 204, 102 ), - ( 0, 153, 102 ), ( 0, 102, 102 ), ( 0, 51, 102 ), ( 0, 0, 102 ), - ( 0, 255, 51 ), ( 0, 204, 51 ), ( 0, 153, 51 ), ( 0, 102, 51 ), - ( 0, 51, 51 ), ( 0, 0, 51 ), ( 0, 255, 0 ), ( 0, 204, 0 ), - ( 0, 153, 0 ), ( 0, 102, 0 ), ( 0, 51, 0 ), ( 17, 17, 17 ), - ( 34, 34, 34 ), ( 68, 68, 68 ), ( 85, 85, 85 ), ( 119, 119, 119 ), - ( 136, 136, 136 ), ( 170, 170, 170 ), ( 187, 187, 187 ), ( 221, 221, 221 ), - ( 238, 238, 238 ), ( 192, 192, 192 ), ( 128, 0, 0 ), ( 128, 0, 128 ), - ( 0, 128, 0 ), ( 0, 128, 128 ), ( 0, 0, 0 ), ( 0, 0, 0 ), - ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), - ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), - ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), - ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), - ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), - ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 )) - -# so build a prototype image to be used for palette resampling -def build_prototype_image(): - image = Image.new("L", (1,len(_Palm8BitColormapValues),)) - image.putdata(range(len(_Palm8BitColormapValues))) - palettedata = () - for i in range(len(_Palm8BitColormapValues)): - palettedata = palettedata + _Palm8BitColormapValues[i] - for i in range(256 - len(_Palm8BitColormapValues)): - palettedata = palettedata + (0, 0, 0) - image.putpalette(palettedata) - return image - -Palm8BitColormapImage = build_prototype_image() - -# OK, we now have in Palm8BitColormapImage, a "P"-mode image with the right palette -# -# -------------------------------------------------------------------- - -_FLAGS = { - "custom-colormap": 0x4000, - "is-compressed": 0x8000, - "has-transparent": 0x2000, - } - -_COMPRESSION_TYPES = { - "none": 0xFF, - "rle": 0x01, - "scanline": 0x00, - } - -def o16b(i): - return chr(i>>8&255) + chr(i&255) - -# -# -------------------------------------------------------------------- - -## -# (Internal) Image save plugin for the Palm format. - -def _save(im, fp, filename, check=0): - - if im.mode == "P": - - # we assume this is a color Palm image with the standard colormap, - # unless the "info" dict has a "custom-colormap" field - - rawmode = "P" - bpp = 8 - version = 1 - - elif im.mode == "L" and im.encoderinfo.has_key("bpp") and im.encoderinfo["bpp"] in (1, 2, 4): - - # this is 8-bit grayscale, so we shift it to get the high-order bits, and invert it because - # Palm does greyscale from white (0) to black (1) - bpp = im.encoderinfo["bpp"] - im = im.point(lambda x, shift=8-bpp, maxval=(1 << bpp)-1: maxval - (x >> shift)) - # we ignore the palette here - im.mode = "P" - rawmode = "P;" + str(bpp) - version = 1 - - elif im.mode == "L" and im.info.has_key("bpp") and im.info["bpp"] in (1, 2, 4): - - # here we assume that even though the inherent mode is 8-bit grayscale, only - # the lower bpp bits are significant. We invert them to match the Palm. - bpp = im.info["bpp"] - im = im.point(lambda x, maxval=(1 << bpp)-1: maxval - (x & maxval)) - # we ignore the palette here - im.mode = "P" - rawmode = "P;" + str(bpp) - version = 1 - - elif im.mode == "1": - - # monochrome -- write it inverted, as is the Palm standard - rawmode = "1;I" - bpp = 1 - version = 0 - - else: - - raise IOError, "cannot write mode %s as Palm" % im.mode - - if check: - return check - - # - # make sure image data is available - im.load() - - # write header - - cols = im.size[0] - rows = im.size[1] - - rowbytes = ((cols + (16/bpp - 1)) / (16 / bpp)) * 2; - transparent_index = 0 - compression_type = _COMPRESSION_TYPES["none"] - - flags = 0; - if im.mode == "P" and im.info.has_key("custom-colormap"): - flags = flags & _FLAGS["custom-colormap"] - colormapsize = 4 * 256 + 2; - colormapmode = im.palette.mode - colormap = im.getdata().getpalette() - else: - colormapsize = 0 - - if im.info.has_key("offset"): - offset = (rowbytes * rows + 16 + 3 + colormapsize) / 4; - else: - offset = 0 - - fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) - fp.write(chr(bpp)) - fp.write(chr(version)) - fp.write(o16b(offset)) - fp.write(chr(transparent_index)) - fp.write(chr(compression_type)) - fp.write(o16b(0)) # reserved by Palm - - # now write colormap if necessary - - if colormapsize > 0: - fp.write(o16b(256)) - for i in range(256): - fp.write(chr(i)) - if colormapmode == 'RGB': - fp.write(chr(colormap[3 * i]) + chr(colormap[3 * i + 1]) + chr(colormap[3 * i + 2])) - elif colormapmode == 'RGBA': - fp.write(chr(colormap[4 * i]) + chr(colormap[4 * i + 1]) + chr(colormap[4 * i + 2])) - - # now convert data to raw form - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, rowbytes, 1))]) - - fp.flush() - - -# -# -------------------------------------------------------------------- - -Image.register_save("Palm", _save) - -Image.register_extension("Palm", ".palm") - -Image.register_mime("Palm", "image/palm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py deleted file mode 100755 index 07bd27e9af3..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcdImagePlugin.py +++ /dev/null @@ -1,76 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PCD file handling -# -# History: -# 96-05-10 fl Created -# 96-05-27 fl Added draft mode (128x192, 256x384) -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.1" - - -import Image, ImageFile - -## -# Image plugin for PhotoCD images. This plugin only reads the 768x512 -# image from the file; higher resolutions are encoded in a proprietary -# encoding. - -class PcdImageFile(ImageFile.ImageFile): - - format = "PCD" - format_description = "Kodak PhotoCD" - - def _open(self): - - # rough - self.fp.seek(2048) - s = self.fp.read(2048) - - if s[:4] != "PCD_": - raise SyntaxError, "not a PCD file" - - orientation = ord(s[1538]) & 3 - if orientation == 1: - self.tile_post_rotate = 90 # hack - elif orientation == 3: - self.tile_post_rotate = -90 - - self.mode = "RGB" - self.size = 768, 512 # FIXME: not correct for rotated images! - self.tile = [("pcd", (0,0)+self.size, 96*2048, None)] - - def draft(self, mode, size): - - if len(self.tile) != 1: - return - - d, e, o, a = self.tile[0] - - if size: - scale = max(self.size[0] / size[0], self.size[1] / size[1]) - for s, o in [(4,0*2048), (2,0*2048), (1,96*2048)]: - if scale >= s: - break - # e = e[0], e[1], (e[2]-e[0]+s-1)/s+e[0], (e[3]-e[1]+s-1)/s+e[1] - # self.size = ((self.size[0]+s-1)/s, (self.size[1]+s-1)/s) - - self.tile = [(d, e, o, a)] - - return self - -# -# registry - -Image.register_open("PCD", PcdImageFile) - -Image.register_extension("PCD", ".pcd") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py deleted file mode 100755 index bec39e3a034..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcfFontFile.py +++ /dev/null @@ -1,256 +0,0 @@ -# -# THIS IS WORK IN PROGRESS -# -# The Python Imaging Library -# $Id$ -# -# portable compiled font file parser -# -# history: -# 1997-08-19 fl created -# 2003-09-13 fl fixed loading of unicode fonts -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1997-2003 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -import Image -import FontFile - -import string - -# -------------------------------------------------------------------- -# declarations - -PCF_MAGIC = 0x70636601 # "\x01fcp" - -PCF_PROPERTIES = (1<<0) -PCF_ACCELERATORS = (1<<1) -PCF_METRICS = (1<<2) -PCF_BITMAPS = (1<<3) -PCF_INK_METRICS = (1<<4) -PCF_BDF_ENCODINGS = (1<<5) -PCF_SWIDTHS = (1<<6) -PCF_GLYPH_NAMES = (1<<7) -PCF_BDF_ACCELERATORS = (1<<8) - -BYTES_PER_ROW = [ - lambda bits: ((bits+7) >> 3), - lambda bits: ((bits+15) >> 3) & ~1, - lambda bits: ((bits+31) >> 3) & ~3, - lambda bits: ((bits+63) >> 3) & ~7, -] - - -def l16(c): - return ord(c[0]) + (ord(c[1])<<8) -def l32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - -def b16(c): - return ord(c[1]) + (ord(c[0])<<8) -def b32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) - -def sz(s, o): - return s[o:string.index(s, "\0", o)] - -## -# Font file plugin for the X11 PCF format. - -class PcfFontFile(FontFile.FontFile): - - name = "name" - - def __init__(self, fp): - - magic = l32(fp.read(4)) - if magic != PCF_MAGIC: - raise SyntaxError, "not a PCF file" - - FontFile.FontFile.__init__(self) - - count = l32(fp.read(4)) - self.toc = {} - for i in range(count): - type = l32(fp.read(4)) - self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) - - self.fp = fp - - self.info = self._load_properties() - - metrics = self._load_metrics() - bitmaps = self._load_bitmaps(metrics) - encoding = self._load_encoding() - - # - # create glyph structure - - for ch in range(256): - ix = encoding[ch] - if ix is not None: - x, y, l, r, w, a, d, f = metrics[ix] - glyph = (w, 0), (l, d-y, x+l, d), (0, 0, x, y), bitmaps[ix] - self.glyph[ch] = glyph - - def _getformat(self, tag): - - format, size, offset = self.toc[tag] - - fp = self.fp - fp.seek(offset) - - format = l32(fp.read(4)) - - if format & 4: - i16, i32 = b16, b32 - else: - i16, i32 = l16, l32 - - return fp, format, i16, i32 - - def _load_properties(self): - - # - # font properties - - properties = {} - - fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) - - nprops = i32(fp.read(4)) - - # read property description - p = [] - for i in range(nprops): - p.append((i32(fp.read(4)), ord(fp.read(1)), i32(fp.read(4)))) - if nprops & 3: - fp.seek(4 - (nprops & 3), 1) # pad - - data = fp.read(i32(fp.read(4))) - - for k, s, v in p: - k = sz(data, k) - if s: - v = sz(data, v) - properties[k] = v - - return properties - - def _load_metrics(self): - - # - # font metrics - - metrics = [] - - fp, format, i16, i32 = self._getformat(PCF_METRICS) - - append = metrics.append - - if (format & 0xff00) == 0x100: - - # "compressed" metrics - for i in range(i16(fp.read(2))): - left = ord(fp.read(1)) - 128 - right = ord(fp.read(1)) - 128 - width = ord(fp.read(1)) - 128 - ascent = ord(fp.read(1)) - 128 - descent = ord(fp.read(1)) - 128 - xsize = right - left - ysize = ascent + descent - append( - (xsize, ysize, left, right, width, - ascent, descent, 0) - ) - - else: - - # "jumbo" metrics - for i in range(i32(fp.read(4))): - left = i16(fp.read(2)) - right = i16(fp.read(2)) - width = i16(fp.read(2)) - ascent = i16(fp.read(2)) - descent = i16(fp.read(2)) - attributes = i16(fp.read(2)) - xsize = right - left - ysize = ascent + descent - append( - (xsize, ysize, left, right, width, - ascent, descent, attributes) - ) - - return metrics - - def _load_bitmaps(self, metrics): - - # - # bitmap data - - bitmaps = [] - - fp, format, i16, i32 = self._getformat(PCF_BITMAPS) - - nbitmaps = i32(fp.read(4)) - - if nbitmaps != len(metrics): - raise IOError, "Wrong number of bitmaps" - - offsets = [] - for i in range(nbitmaps): - offsets.append(i32(fp.read(4))) - - bitmapSizes = [] - for i in range(4): - bitmapSizes.append(i32(fp.read(4))) - - byteorder = format & 4 # non-zero => MSB - bitorder = format & 8 # non-zero => MSB - padindex = format & 3 - - bitmapsize = bitmapSizes[padindex] - offsets.append(bitmapsize) - - data = fp.read(bitmapsize) - - pad = BYTES_PER_ROW[padindex] - mode = "1;R" - if bitorder: - mode = "1" - - for i in range(nbitmaps): - x, y, l, r, w, a, d, f = metrics[i] - b, e = offsets[i], offsets[i+1] - bitmaps.append( - Image.fromstring("1", (x, y), data[b:e], "raw", mode, pad(x)) - ) - - return bitmaps - - def _load_encoding(self): - - # map character code to bitmap index - encoding = [None] * 256 - - fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) - - firstCol, lastCol = i16(fp.read(2)), i16(fp.read(2)) - firstRow, lastRow = i16(fp.read(2)), i16(fp.read(2)) - - default = i16(fp.read(2)) - - nencoding = (lastCol - firstCol + 1) * (lastRow - firstRow + 1) - - for i in range(nencoding): - encodingOffset = i16(fp.read(2)) - if encodingOffset != 0xFFFF: - try: - encoding[i+firstCol] = encodingOffset - except IndexError: - break # only load ISO-8859-1 glyphs - - return encoding diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py deleted file mode 100755 index 15012d51ccd..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PcxImagePlugin.py +++ /dev/null @@ -1,167 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PCX file handling -# -# This format was originally used by ZSoft's popular PaintBrush -# program for the IBM PC. It is also supported by many MS-DOS and -# Windows applications, including the Windows PaintBrush program in -# Windows 3. -# -# history: -# 1995-09-01 fl Created -# 1996-05-20 fl Fixed RGB support -# 1997-01-03 fl Fixed 2-bit and 4-bit support -# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) -# 1999-02-07 fl Added write support -# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust -# 2002-07-30 fl Seek from to current position, not beginning of file -# 2003-06-03 fl Extract DPI settings (info["dpi"]) -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1995-2003 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.6" - -import Image, ImageFile, ImagePalette - -def i16(c,o): - return ord(c[o]) + (ord(c[o+1])<<8) - -def _accept(prefix): - return ord(prefix[0]) == 10 and ord(prefix[1]) in [0, 2, 3, 5] - -## -# Image plugin for Paintbrush images. - -class PcxImageFile(ImageFile.ImageFile): - - format = "PCX" - format_description = "Paintbrush" - - def _open(self): - - # header - s = self.fp.read(128) - if not _accept(s): - raise SyntaxError, "not a PCX file" - - # image - bbox = i16(s,4), i16(s,6), i16(s,8)+1, i16(s,10)+1 - if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: - raise SyntaxError, "bad PCX image size" - - # format - version = ord(s[1]) - bits = ord(s[3]) - planes = ord(s[65]) - stride = i16(s,66) - - self.info["dpi"] = i16(s,12), i16(s,14) - - if bits == 1 and planes == 1: - mode = rawmode = "1" - - elif bits == 1 and planes in (2, 4): - mode = "P" - rawmode = "P;%dL" % planes - self.palette = ImagePalette.raw("RGB", s[16:64]) - - elif version == 5 and bits == 8 and planes == 1: - mode = rawmode = "L" - # FIXME: hey, this doesn't work with the incremental loader !!! - self.fp.seek(-769, 2) - s = self.fp.read(769) - if len(s) == 769 and ord(s[0]) == 12: - # check if the palette is linear greyscale - for i in range(256): - if s[i*3+1:i*3+4] != chr(i)*3: - mode = rawmode = "P" - break - if mode == "P": - self.palette = ImagePalette.raw("RGB", s[1:]) - self.fp.seek(128) - - elif version == 5 and bits == 8 and planes == 3: - mode = "RGB" - rawmode = "RGB;L" - - else: - raise IOError, "unknown PCX mode" - - self.mode = mode - self.size = bbox[2]-bbox[0], bbox[3]-bbox[1] - - bbox = (0, 0) + self.size - - self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] - -# -------------------------------------------------------------------- -# save PCX files - -SAVE = { - # mode: (version, bits, planes, raw mode) - "1": (2, 1, 1, "1"), - "L": (5, 8, 1, "L"), - "P": (5, 8, 1, "P"), - "RGB": (5, 8, 3, "RGB;L"), -} - -def o16(i): - return chr(i&255) + chr(i>>8&255) - -def _save(im, fp, filename, check=0): - - try: - version, bits, planes, rawmode = SAVE[im.mode] - except KeyError: - raise ValueError, "Cannot save %s images as PCX" % im.mode - - if check: - return check - - # bytes per plane - stride = (im.size[0] * bits + 7) / 8 - - # under windows, we could determine the current screen size with - # "Image.core.display_mode()[1]", but I think that's overkill... - - screen = im.size - - dpi = 100, 100 - - # PCX header - fp.write( - chr(10) + chr(version) + chr(1) + chr(bits) + o16(0) + - o16(0) + o16(im.size[0]-1) + o16(im.size[1]-1) + o16(dpi[0]) + - o16(dpi[1]) + chr(0)*24 + chr(255)*24 + chr(0) + chr(planes) + - o16(stride) + o16(1) + o16(screen[0]) + o16(screen[1]) + - chr(0)*54 - ) - - assert fp.tell() == 128 - - ImageFile._save(im, fp, [("pcx", (0,0)+im.size, 0, - (rawmode, bits*planes))]) - - if im.mode == "P": - # colour palette - fp.write(chr(12)) - fp.write(im.im.getpalette("RGB", "RGB")) # 768 bytes - elif im.mode == "L": - # greyscale palette - fp.write(chr(12)) - for i in range(256): - fp.write(chr(i)*3) - -# -------------------------------------------------------------------- -# registry - -Image.register_open("PCX", PcxImageFile, _accept) -Image.register_save("PCX", _save) - -Image.register_extension("PCX", ".pcx") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py deleted file mode 100755 index 4f957765ca6..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PdfImagePlugin.py +++ /dev/null @@ -1,211 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PDF (Acrobat) file handling -# -# History: -# 1996-07-16 fl Created -# 1997-01-18 fl Fixed header -# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. -# 2004-02-24 fl Fixes for 1 and P images. -# -# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. -# Copyright (c) 1996-1997 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -## -# Image plugin for PDF images (output only). -## - -__version__ = "0.4" - -import Image, ImageFile -import StringIO - - -# -# -------------------------------------------------------------------- - -# object ids: -# 1. catalogue -# 2. pages -# 3. image -# 4. page -# 5. page contents - -def _obj(fp, obj, **dict): - fp.write("%d 0 obj\n" % obj) - if dict: - fp.write("<<\n") - for k, v in dict.items(): - if v is not None: - fp.write("/%s %s\n" % (k, v)) - fp.write(">>\n") - -def _endobj(fp): - fp.write("endobj\n") - -## -# (Internal) Image save plugin for the PDF format. - -def _save(im, fp, filename): - resolution = im.encoderinfo.get("resolution", 72.0) - - # - # make sure image data is available - im.load() - - xref = [0]*(5+1) # placeholders - - fp.write("%PDF-1.2\n") - fp.write("% created by PIL PDF driver " + __version__ + "\n") - - # - # Get image characteristics - - width, height = im.size - - # FIXME: Should replace ASCIIHexDecode with RunLengthDecode (packbits) - # or LZWDecode (tiff/lzw compression). Note that PDF 1.2 also supports - # Flatedecode (zip compression). - - bits = 8 - params = None - - if im.mode == "1": - filter = "/ASCIIHexDecode" - colorspace = "/DeviceGray" - procset = "/ImageB" # grayscale - bits = 1 - elif im.mode == "L": - filter = "/DCTDecode" - # params = "<< /Predictor 15 /Columns %d >>" % (width-2) - colorspace = "/DeviceGray" - procset = "/ImageB" # grayscale - elif im.mode == "P": - filter = "/ASCIIHexDecode" - colorspace = "[ /Indexed /DeviceRGB 255 <" - palette = im.im.getpalette("RGB") - for i in range(256): - r = ord(palette[i*3]) - g = ord(palette[i*3+1]) - b = ord(palette[i*3+2]) - colorspace = colorspace + "%02x%02x%02x " % (r, g, b) - colorspace = colorspace + "> ]" - procset = "/ImageI" # indexed color - elif im.mode == "RGB": - filter = "/DCTDecode" - colorspace = "/DeviceRGB" - procset = "/ImageC" # color images - elif im.mode == "CMYK": - filter = "/DCTDecode" - colorspace = "/DeviceCMYK" - procset = "/ImageC" # color images - else: - raise ValueError("cannot save mode %s" % im.mode) - - # - # catalogue - - xref[1] = fp.tell() - _obj(fp, 1, Type = "/Catalog", - Pages = "2 0 R") - _endobj(fp) - - # - # pages - - xref[2] = fp.tell() - _obj(fp, 2, Type = "/Pages", - Count = 1, - Kids = "[4 0 R]") - _endobj(fp) - - # - # image - - op = StringIO.StringIO() - - if filter == "/ASCIIHexDecode": - if bits == 1: - # FIXME: the hex encoder doesn't support packed 1-bit - # images; do things the hard way... - data = im.tostring("raw", "1") - im = Image.new("L", (len(data), 1), None) - im.putdata(data) - ImageFile._save(im, op, [("hex", (0,0)+im.size, 0, im.mode)]) - elif filter == "/DCTDecode": - ImageFile._save(im, op, [("jpeg", (0,0)+im.size, 0, im.mode)]) - elif filter == "/FlateDecode": - ImageFile._save(im, op, [("zip", (0,0)+im.size, 0, im.mode)]) - elif filter == "/RunLengthDecode": - ImageFile._save(im, op, [("packbits", (0,0)+im.size, 0, im.mode)]) - else: - raise ValueError("unsupported PDF filter (%s)" % filter) - - xref[3] = fp.tell() - _obj(fp, 3, Type = "/XObject", - Subtype = "/Image", - Width = width, # * 72.0 / resolution, - Height = height, # * 72.0 / resolution, - Length = len(op.getvalue()), - Filter = filter, - BitsPerComponent = bits, - DecodeParams = params, - ColorSpace = colorspace) - - fp.write("stream\n") - fp.write(op.getvalue()) - fp.write("\nendstream\n") - - _endobj(fp) - - # - # page - - xref[4] = fp.tell() - _obj(fp, 4) - fp.write("<<\n/Type /Page\n/Parent 2 0 R\n"\ - "/Resources <<\n/ProcSet [ /PDF %s ]\n"\ - "/XObject << /image 3 0 R >>\n>>\n"\ - "/MediaBox [ 0 0 %d %d ]\n/Contents 5 0 R\n>>\n" %\ - (procset, int(width * 72.0 /resolution) , int(height * 72.0 / resolution))) - _endobj(fp) - - # - # page contents - - op = StringIO.StringIO() - - op.write("q %d 0 0 %d 0 0 cm /image Do Q\n" % (int(width * 72.0 / resolution), int(height * 72.0 / resolution))) - - xref[5] = fp.tell() - _obj(fp, 5, Length = len(op.getvalue())) - - fp.write("stream\n") - fp.write(op.getvalue()) - fp.write("\nendstream\n") - - _endobj(fp) - - # - # trailer - startxref = fp.tell() - fp.write("xref\n0 %d\n0000000000 65535 f \n" % len(xref)) - for x in xref[1:]: - fp.write("%010d 00000 n \n" % x) - fp.write("trailer\n<<\n/Size %d\n/Root 1 0 R\n>>\n" % len(xref)) - fp.write("startxref\n%d\n%%%%EOF\n" % startxref) - fp.flush() - -# -# -------------------------------------------------------------------- - -Image.register_save("PDF", _save) - -Image.register_extension("PDF", ".pdf") - -Image.register_mime("PDF", "application/pdf") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py deleted file mode 100755 index d4c597b6186..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PixarImagePlugin.py +++ /dev/null @@ -1,71 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PIXAR raster support for PIL -# -# history: -# 97-01-29 fl Created -# -# notes: -# This is incomplete; it is based on a few samples created with -# Photoshop 2.5 and 3.0, and a summary description provided by -# Greg Coats . Hopefully, "L" and -# "RGBA" support will be added in future versions. -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.1" - -import Image, ImageFile - -# -# helpers - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - -## -# Image plugin for PIXAR raster images. - -class PixarImageFile(ImageFile.ImageFile): - - format = "PIXAR" - format_description = "PIXAR raster image" - - def _open(self): - - # assuming a 4-byte magic label (FIXME: add "_accept" hook) - s = self.fp.read(4) - if s != "\200\350\000\000": - raise SyntaxError, "not a PIXAR file" - - # read rest of header - s = s + self.fp.read(508) - - self.size = i16(s[418:420]), i16(s[416:418]) - - # get channel/depth descriptions - mode = i16(s[424:426]), i16(s[426:428]) - - if mode == (14, 2): - self.mode = "RGB" - # FIXME: to be continued... - - # create tile descriptor (assuming "dumped") - self.tile = [("raw", (0,0)+self.size, 1024, (self.mode, 0, 1))] - -# -# -------------------------------------------------------------------- - -Image.register_open("PIXAR", PixarImageFile) - -# -# FIXME: what's the standard extension? diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py deleted file mode 100755 index 0ee8589a536..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PngImagePlugin.py +++ /dev/null @@ -1,620 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PNG support code -# -# See "PNG (Portable Network Graphics) Specification, version 1.0; -# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). -# -# history: -# 1996-05-06 fl Created (couldn't resist it) -# 1996-12-14 fl Upgraded, added read and verify support (0.2) -# 1996-12-15 fl Separate PNG stream parser -# 1996-12-29 fl Added write support, added getchunks -# 1996-12-30 fl Eliminated circular references in decoder (0.3) -# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) -# 2001-02-08 fl Added transparency support (from Zircon) (0.5) -# 2001-04-16 fl Don't close data source in "open" method (0.6) -# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) -# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) -# 2004-09-20 fl Added PngInfo chunk container -# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) -# 2008-08-13 fl Added tRNS support for RGB images -# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) -# 2009-03-08 fl Added zTXT support (from Lowell Alleman) -# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) -# -# Copyright (c) 1997-2009 by Secret Labs AB -# Copyright (c) 1996 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.9" - -import re, string - -import Image, ImageFile, ImagePalette, zlib - - -def i16(c): - return ord(c[1]) + (ord(c[0])<<8) -def i32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) - -is_cid = re.compile("\w\w\w\w").match - - -_MAGIC = "\211PNG\r\n\032\n" - - -_MODES = { - # supported bits/color combinations, and corresponding modes/rawmodes - (1, 0): ("1", "1"), - (2, 0): ("L", "L;2"), - (4, 0): ("L", "L;4"), - (8, 0): ("L", "L"), - (16,0): ("I", "I;16B"), - (8, 2): ("RGB", "RGB"), - (16,2): ("RGB", "RGB;16B"), - (1, 3): ("P", "P;1"), - (2, 3): ("P", "P;2"), - (4, 3): ("P", "P;4"), - (8, 3): ("P", "P"), - (8, 4): ("LA", "LA"), - (16,4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available - (8, 6): ("RGBA", "RGBA"), - (16,6): ("RGBA", "RGBA;16B"), -} - - -# -------------------------------------------------------------------- -# Support classes. Suitable for PNG and related formats like MNG etc. - -class ChunkStream: - - def __init__(self, fp): - - self.fp = fp - self.queue = [] - - if not hasattr(Image.core, "crc32"): - self.crc = self.crc_skip - - def read(self): - "Fetch a new chunk. Returns header information." - - if self.queue: - cid, pos, len = self.queue[-1] - del self.queue[-1] - self.fp.seek(pos) - else: - s = self.fp.read(8) - cid = s[4:] - pos = self.fp.tell() - len = i32(s) - - if not is_cid(cid): - raise SyntaxError, "broken PNG file (chunk %s)" % repr(cid) - - return cid, pos, len - - def close(self): - self.queue = self.crc = self.fp = None - - def push(self, cid, pos, len): - - self.queue.append((cid, pos, len)) - - def call(self, cid, pos, len): - "Call the appropriate chunk handler" - - if Image.DEBUG: - print "STREAM", cid, pos, len - return getattr(self, "chunk_" + cid)(pos, len) - - def crc(self, cid, data): - "Read and verify checksum" - - crc1 = Image.core.crc32(data, Image.core.crc32(cid)) - crc2 = i16(self.fp.read(2)), i16(self.fp.read(2)) - if crc1 != crc2: - raise SyntaxError, "broken PNG file"\ - "(bad header checksum in %s)" % cid - - def crc_skip(self, cid, data): - "Read checksum. Used if the C module is not present" - - self.fp.read(4) - - def verify(self, endchunk = "IEND"): - - # Simple approach; just calculate checksum for all remaining - # blocks. Must be called directly after open. - - cids = [] - - while 1: - cid, pos, len = self.read() - if cid == endchunk: - break - self.crc(cid, ImageFile._safe_read(self.fp, len)) - cids.append(cid) - - return cids - - -# -------------------------------------------------------------------- -# PNG chunk container (for use with save(pnginfo=)) - -class PngInfo: - - def __init__(self): - self.chunks = [] - - def add(self, cid, data): - self.chunks.append((cid, data)) - - def add_text(self, key, value, zip=0): - if zip: - import zlib - self.add("zTXt", key + "\0\0" + zlib.compress(value)) - else: - self.add("tEXt", key + "\0" + value) - -# -------------------------------------------------------------------- -# PNG image stream (IHDR/IEND) - -class PngStream(ChunkStream): - - def __init__(self, fp): - - ChunkStream.__init__(self, fp) - - # local copies of Image attributes - self.im_info = {} - self.im_text = {} - self.im_size = (0,0) - self.im_mode = None - self.im_tile = None - self.im_palette = None - - def chunk_iCCP(self, pos, len): - - # ICC profile - s = ImageFile._safe_read(self.fp, len) - # according to PNG spec, the iCCP chunk contains: - # Profile name 1-79 bytes (character string) - # Null separator 1 byte (null character) - # Compression method 1 byte (0) - # Compressed profile n bytes (zlib with deflate compression) - i = string.find(s, chr(0)) - if Image.DEBUG: - print "iCCP profile name", s[:i] - print "Compression method", ord(s[i]) - comp_method = ord(s[i]) - if comp_method != 0: - raise SyntaxError("Unknown compression method %s in iCCP chunk" % comp_method) - try: - icc_profile = zlib.decompress(s[i+2:]) - except zlib.error: - icc_profile = None # FIXME - self.im_info["icc_profile"] = icc_profile - return s - - def chunk_IHDR(self, pos, len): - - # image header - s = ImageFile._safe_read(self.fp, len) - self.im_size = i32(s), i32(s[4:]) - try: - self.im_mode, self.im_rawmode = _MODES[(ord(s[8]), ord(s[9]))] - except: - pass - if ord(s[12]): - self.im_info["interlace"] = 1 - if ord(s[11]): - raise SyntaxError, "unknown filter category" - return s - - def chunk_IDAT(self, pos, len): - - # image data - self.im_tile = [("zip", (0,0)+self.im_size, pos, self.im_rawmode)] - self.im_idat = len - raise EOFError - - def chunk_IEND(self, pos, len): - - # end of PNG image - raise EOFError - - def chunk_PLTE(self, pos, len): - - # palette - s = ImageFile._safe_read(self.fp, len) - if self.im_mode == "P": - self.im_palette = "RGB", s - return s - - def chunk_tRNS(self, pos, len): - - # transparency - s = ImageFile._safe_read(self.fp, len) - if self.im_mode == "P": - i = string.find(s, chr(0)) - if i >= 0: - self.im_info["transparency"] = i - elif self.im_mode == "L": - self.im_info["transparency"] = i16(s) - elif self.im_mode == "RGB": - self.im_info["transparency"] = i16(s), i16(s[2:]), i16(s[4:]) - return s - - def chunk_gAMA(self, pos, len): - - # gamma setting - s = ImageFile._safe_read(self.fp, len) - self.im_info["gamma"] = i32(s) / 100000.0 - return s - - def chunk_pHYs(self, pos, len): - - # pixels per unit - s = ImageFile._safe_read(self.fp, len) - px, py = i32(s), i32(s[4:]) - unit = ord(s[8]) - if unit == 1: # meter - dpi = int(px * 0.0254 + 0.5), int(py * 0.0254 + 0.5) - self.im_info["dpi"] = dpi - elif unit == 0: - self.im_info["aspect"] = px, py - return s - - def chunk_tEXt(self, pos, len): - - # text - s = ImageFile._safe_read(self.fp, len) - try: - k, v = string.split(s, "\0", 1) - except ValueError: - k = s; v = "" # fallback for broken tEXt tags - if k: - self.im_info[k] = self.im_text[k] = v - return s - - def chunk_zTXt(self, pos, len): - - # compressed text - s = ImageFile._safe_read(self.fp, len) - k, v = string.split(s, "\0", 1) - comp_method = ord(v[0]) - if comp_method != 0: - raise SyntaxError("Unknown compression method %s in zTXt chunk" % comp_method) - import zlib - self.im_info[k] = self.im_text[k] = zlib.decompress(v[1:]) - return s - -# -------------------------------------------------------------------- -# PNG reader - -def _accept(prefix): - return prefix[:8] == _MAGIC - -## -# Image plugin for PNG images. - -class PngImageFile(ImageFile.ImageFile): - - format = "PNG" - format_description = "Portable network graphics" - - def _open(self): - - if self.fp.read(8) != _MAGIC: - raise SyntaxError, "not a PNG file" - - # - # Parse headers up to the first IDAT chunk - - self.png = PngStream(self.fp) - - while 1: - - # - # get next chunk - - cid, pos, len = self.png.read() - - try: - s = self.png.call(cid, pos, len) - except EOFError: - break - except AttributeError: - if Image.DEBUG: - print cid, pos, len, "(unknown)" - s = ImageFile._safe_read(self.fp, len) - - self.png.crc(cid, s) - - # - # Copy relevant attributes from the PngStream. An alternative - # would be to let the PngStream class modify these attributes - # directly, but that introduces circular references which are - # difficult to break if things go wrong in the decoder... - # (believe me, I've tried ;-) - - self.mode = self.png.im_mode - self.size = self.png.im_size - self.info = self.png.im_info - self.text = self.png.im_text # experimental - self.tile = self.png.im_tile - - if self.png.im_palette: - rawmode, data = self.png.im_palette - self.palette = ImagePalette.raw(rawmode, data) - - self.__idat = len # used by load_read() - - - def verify(self): - "Verify PNG file" - - if self.fp is None: - raise RuntimeError("verify must be called directly after open") - - # back up to beginning of IDAT block - self.fp.seek(self.tile[0][2] - 8) - - self.png.verify() - self.png.close() - - self.fp = None - - def load_prepare(self): - "internal: prepare to read PNG file" - - if self.info.get("interlace"): - self.decoderconfig = self.decoderconfig + (1,) - - ImageFile.ImageFile.load_prepare(self) - - def load_read(self, bytes): - "internal: read more image data" - - while self.__idat == 0: - # end of chunk, skip forward to next one - - self.fp.read(4) # CRC - - cid, pos, len = self.png.read() - - if cid not in ["IDAT", "DDAT"]: - self.png.push(cid, pos, len) - return "" - - self.__idat = len # empty chunks are allowed - - # read more data from this chunk - if bytes <= 0: - bytes = self.__idat - else: - bytes = min(bytes, self.__idat) - - self.__idat = self.__idat - bytes - - return self.fp.read(bytes) - - - def load_end(self): - "internal: finished reading image data" - - self.png.close() - self.png = None - - -# -------------------------------------------------------------------- -# PNG writer - -def o16(i): - return chr(i>>8&255) + chr(i&255) - -def o32(i): - return chr(i>>24&255) + chr(i>>16&255) + chr(i>>8&255) + chr(i&255) - -_OUTMODES = { - # supported PIL modes, and corresponding rawmodes/bits/color combinations - "1": ("1", chr(1)+chr(0)), - "L;1": ("L;1", chr(1)+chr(0)), - "L;2": ("L;2", chr(2)+chr(0)), - "L;4": ("L;4", chr(4)+chr(0)), - "L": ("L", chr(8)+chr(0)), - "LA": ("LA", chr(8)+chr(4)), - "I": ("I;16B", chr(16)+chr(0)), - "P;1": ("P;1", chr(1)+chr(3)), - "P;2": ("P;2", chr(2)+chr(3)), - "P;4": ("P;4", chr(4)+chr(3)), - "P": ("P", chr(8)+chr(3)), - "RGB": ("RGB", chr(8)+chr(2)), - "RGBA":("RGBA", chr(8)+chr(6)), -} - -def putchunk(fp, cid, *data): - "Write a PNG chunk (including CRC field)" - - data = string.join(data, "") - - fp.write(o32(len(data)) + cid) - fp.write(data) - hi, lo = Image.core.crc32(data, Image.core.crc32(cid)) - fp.write(o16(hi) + o16(lo)) - -class _idat: - # wrap output from the encoder in IDAT chunks - - def __init__(self, fp, chunk): - self.fp = fp - self.chunk = chunk - def write(self, data): - self.chunk(self.fp, "IDAT", data) - -def _save(im, fp, filename, chunk=putchunk, check=0): - # save an image to disk (called by the save method) - - mode = im.mode - - if mode == "P": - - # - # attempt to minimize storage requirements for palette images - - if im.encoderinfo.has_key("bits"): - - # number of bits specified by user - n = 1 << im.encoderinfo["bits"] - - else: - - # check palette contents - n = 256 # FIXME - - if n <= 2: - bits = 1 - elif n <= 4: - bits = 2 - elif n <= 16: - bits = 4 - else: - bits = 8 - - if bits != 8: - mode = "%s;%d" % (mode, bits) - - # encoder options - if im.encoderinfo.has_key("dictionary"): - dictionary = im.encoderinfo["dictionary"] - else: - dictionary = "" - - im.encoderconfig = (im.encoderinfo.has_key("optimize"), dictionary) - - # get the corresponding PNG mode - try: - rawmode, mode = _OUTMODES[mode] - except KeyError: - raise IOError, "cannot write mode %s as PNG" % mode - - if check: - return check - - # - # write minimal PNG file - - fp.write(_MAGIC) - - chunk(fp, "IHDR", - o32(im.size[0]), o32(im.size[1]), # 0: size - mode, # 8: depth/type - chr(0), # 10: compression - chr(0), # 11: filter category - chr(0)) # 12: interlace flag - - if im.mode == "P": - chunk(fp, "PLTE", im.im.getpalette("RGB")) - - if im.encoderinfo.has_key("transparency"): - if im.mode == "P": - transparency = max(0, min(255, im.encoderinfo["transparency"])) - chunk(fp, "tRNS", chr(255) * transparency + chr(0)) - elif im.mode == "L": - transparency = max(0, min(65535, im.encoderinfo["transparency"])) - chunk(fp, "tRNS", o16(transparency)) - elif im.mode == "RGB": - red, green, blue = im.encoderinfo["transparency"] - chunk(fp, "tRNS", o16(red) + o16(green) + o16(blue)) - else: - raise IOError("cannot use transparency for this mode") - - if 0: - # FIXME: to be supported some day - chunk(fp, "gAMA", o32(int(gamma * 100000.0))) - - dpi = im.encoderinfo.get("dpi") - if dpi: - chunk(fp, "pHYs", - o32(int(dpi[0] / 0.0254 + 0.5)), - o32(int(dpi[1] / 0.0254 + 0.5)), - chr(1)) - - info = im.encoderinfo.get("pnginfo") - if info: - for cid, data in info.chunks: - chunk(fp, cid, data) - - # ICC profile writing support -- 2008-06-06 Florian Hoech - if im.info.has_key("icc_profile"): - # ICC profile - # according to PNG spec, the iCCP chunk contains: - # Profile name 1-79 bytes (character string) - # Null separator 1 byte (null character) - # Compression method 1 byte (0) - # Compressed profile n bytes (zlib with deflate compression) - try: - import ICCProfile - p = ICCProfile.ICCProfile(im.info["icc_profile"]) - name = p.tags.desc.get("ASCII", p.tags.desc.get("Unicode", p.tags.desc.get("Macintosh", p.tags.desc.get("en", {}).get("US", "ICC Profile")))).encode("latin1", "replace")[:79] - except ImportError: - name = "ICC Profile" - data = name + "\0\0" + zlib.compress(im.info["icc_profile"]) - chunk(fp, "iCCP", data) - - ImageFile._save(im, _idat(fp, chunk), [("zip", (0,0)+im.size, 0, rawmode)]) - - chunk(fp, "IEND", "") - - try: - fp.flush() - except: - pass - - -# -------------------------------------------------------------------- -# PNG chunk converter - -def getchunks(im, **params): - """Return a list of PNG chunks representing this image.""" - - class collector: - data = [] - def write(self, data): - pass - def append(self, chunk): - self.data.append(chunk) - - def append(fp, cid, *data): - data = string.join(data, "") - hi, lo = Image.core.crc32(data, Image.core.crc32(cid)) - crc = o16(hi) + o16(lo) - fp.append((cid, data, crc)) - - fp = collector() - - try: - im.encoderinfo = params - _save(im, fp, None, append) - finally: - del im.encoderinfo - - return fp.data - - -# -------------------------------------------------------------------- -# Registry - -Image.register_open("PNG", PngImageFile, _accept) -Image.register_save("PNG", _save) - -Image.register_extension("PNG", ".png") - -Image.register_mime("PNG", "image/png") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py deleted file mode 100755 index e86146c1050..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PpmImagePlugin.py +++ /dev/null @@ -1,131 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# PPM support for PIL -# -# History: -# 96-03-24 fl Created -# 98-03-06 fl Write RGBA images (as RGB, that is) -# -# Copyright (c) Secret Labs AB 1997-98. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.2" - -import string - -import Image, ImageFile - -# -# -------------------------------------------------------------------- - -MODES = { - # standard - "P4": "1", - "P5": "L", - "P6": "RGB", - # extensions - "P0CMYK": "CMYK", - # PIL extensions (for test purposes only) - "PyP": "P", - "PyRGBA": "RGBA", - "PyCMYK": "CMYK" -} - -def _accept(prefix): - return prefix[0] == "P" and prefix[1] in "0456y" - -## -# Image plugin for PBM, PGM, and PPM images. - -class PpmImageFile(ImageFile.ImageFile): - - format = "PPM" - format_description = "Pbmplus image" - - def _token(self, s = ""): - while 1: # read until next whitespace - c = self.fp.read(1) - if not c or c in string.whitespace: - break - s = s + c - return s - - def _open(self): - - # check magic - s = self.fp.read(1) - if s != "P": - raise SyntaxError, "not a PPM file" - mode = MODES[self._token(s)] - - if mode == "1": - self.mode = "1" - rawmode = "1;I" - else: - self.mode = rawmode = mode - - for ix in range(3): - while 1: - while 1: - s = self.fp.read(1) - if s not in string.whitespace: - break - if s != "#": - break - s = self.fp.readline() - s = int(self._token(s)) - if ix == 0: - xsize = s - elif ix == 1: - ysize = s - if mode == "1": - break - - self.size = xsize, ysize - self.tile = [("raw", - (0, 0, xsize, ysize), - self.fp.tell(), - (rawmode, 0, 1))] - - # ALTERNATIVE: load via builtin debug function - # self.im = Image.core.open_ppm(self.filename) - # self.mode = self.im.mode - # self.size = self.im.size - -# -# -------------------------------------------------------------------- - -def _save(im, fp, filename): - if im.mode == "1": - rawmode, head = "1;I", "P4" - elif im.mode == "L": - rawmode, head = "L", "P5" - elif im.mode == "RGB": - rawmode, head = "RGB", "P6" - elif im.mode == "RGBA": - rawmode, head = "RGB", "P6" - else: - raise IOError, "cannot write mode %s as PPM" % im.mode - fp.write(head + "\n%d %d\n" % im.size) - if head != "P4": - fp.write("255\n") - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, 1))]) - - # ALTERNATIVE: save via builtin debug function - # im._dump(filename) - -# -# -------------------------------------------------------------------- - -Image.register_open("PPM", PpmImageFile, _accept) -Image.register_save("PPM", _save) - -Image.register_extension("PPM", ".pbm") -Image.register_extension("PPM", ".pgm") -Image.register_extension("PPM", ".ppm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py deleted file mode 100755 index 9d1b17a3632..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/PsdImagePlugin.py +++ /dev/null @@ -1,291 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# Adobe PSD 2.5/3.0 file handling -# -# History: -# 1995-09-01 fl Created -# 1997-01-03 fl Read most PSD images -# 1997-01-18 fl Fixed P and CMYK support -# 2001-10-21 fl Added seek/tell support (for layers) -# -# Copyright (c) 1997-2001 by Secret Labs AB. -# Copyright (c) 1995-2001 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.4" - -import Image, ImageFile, ImagePalette - -MODES = { - # (photoshop mode, bits) -> (pil mode, required channels) - (0, 1): ("1", 1), - (0, 8): ("L", 1), - (1, 8): ("L", 1), - (2, 8): ("P", 1), - (3, 8): ("RGB", 3), - (4, 8): ("CMYK", 4), - (7, 8): ("L", 1), # FIXME: multilayer - (8, 8): ("L", 1), # duotone - (9, 8): ("LAB", 3) -} - -# -# helpers - -def i16(c): - return ord(c[1]) + (ord(c[0])<<8) - -def i32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) - -# --------------------------------------------------------------------. -# read PSD images - -def _accept(prefix): - return prefix[:4] == "8BPS" - -## -# Image plugin for Photoshop images. - -class PsdImageFile(ImageFile.ImageFile): - - format = "PSD" - format_description = "Adobe Photoshop" - - def _open(self): - - read = self.fp.read - - # - # header - - s = read(26) - if s[:4] != "8BPS" or i16(s[4:]) != 1: - raise SyntaxError, "not a PSD file" - - psd_bits = i16(s[22:]) - psd_channels = i16(s[12:]) - psd_mode = i16(s[24:]) - - mode, channels = MODES[(psd_mode, psd_bits)] - - if channels > psd_channels: - raise IOError, "not enough channels" - - self.mode = mode - self.size = i32(s[18:]), i32(s[14:]) - - # - # color mode data - - size = i32(read(4)) - if size: - data = read(size) - if mode == "P" and size == 768: - self.palette = ImagePalette.raw("RGB;L", data) - - # - # image resources - - self.resources = [] - - size = i32(read(4)) - if size: - # load resources - end = self.fp.tell() + size - while self.fp.tell() < end: - signature = read(4) - id = i16(read(2)) - name = read(ord(read(1))) - if not (len(name) & 1): - read(1) # padding - data = read(i32(read(4))) - if (len(data) & 1): - read(1) # padding - self.resources.append((id, name, data)) - if id == 1039: # ICC profile - self.info["icc_profile"] = data - - # - # layer and mask information - - self.layers = [] - - size = i32(read(4)) - if size: - end = self.fp.tell() + size - size = i32(read(4)) - if size: - self.layers = _layerinfo(self.fp) - self.fp.seek(end) - - # - # image descriptor - - self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) - - # keep the file open - self._fp = self.fp - self.frame = 0 - - def seek(self, layer): - # seek to given layer (1..max) - if layer == self.frame: - return - try: - if layer <= 0: - raise IndexError - name, mode, bbox, tile = self.layers[layer-1] - self.mode = mode - self.tile = tile - self.frame = layer - self.fp = self._fp - return name, bbox - except IndexError: - raise EOFError, "no such layer" - - def tell(self): - # return layer number (0=image, 1..max=layers) - return self.frame - - def load_prepare(self): - # create image memory if necessary - if not self.im or\ - self.im.mode != self.mode or self.im.size != self.size: - self.im = Image.core.fill(self.mode, self.size, 0) - # create palette (optional) - if self.mode == "P": - Image.Image.load(self) - -def _layerinfo(file): - # read layerinfo block - layers = [] - read = file.read - - for i in range(abs(i16(read(2)))): - - # bounding box - y0 = i32(read(4)); x0 = i32(read(4)) - y1 = i32(read(4)); x1 = i32(read(4)) - - # image info - info = [] - mode = [] - for i in range(i16(read(2))): - type = i16(read(2)) - if type == 65535: - m = "A" - else: - m = "RGB"[type] - mode.append(m) - size = i32(read(4)) - info.append((m, size)) - - # figure out the image mode - mode.sort() - if mode == ["R"]: - mode = "L" - elif mode == ["B", "G", "R"]: - mode = "RGB" - elif mode == ["A", "B", "G", "R"]: - mode = "RGBA" - else: - mode = None # unknown - - # skip over blend flags and extra information - filler = read(12) - name = "" - size = i32(read(4)) - combined = 0 - if size: - length = i32(read(4)) - if length: - mask_y = i32(read(4)); mask_x = i32(read(4)) - mask_h = i32(read(4)) - mask_y; mask_w = i32(read(4)) - mask_x - file.seek(length - 16, 1) - combined += length + 4 - - length = i32(read(4)) - if length: - file.seek(length, 1) - combined += length + 4 - - length = ord(read(1)) - if length: - name = read(length) - combined += length + 1 - - file.seek(size - combined, 1) - layers.append((name, mode, (x0, y0, x1, y1))) - - # get tiles - i = 0 - for name, mode, bbox in layers: - tile = [] - for m in mode: - t = _maketile(file, m, bbox, 1) - if t: - tile.extend(t) - layers[i] = name, mode, bbox, tile - i = i + 1 - - return layers - -def _maketile(file, mode, bbox, channels): - - tile = None - read = file.read - - compression = i16(read(2)) - - xsize = bbox[2] - bbox[0] - ysize = bbox[3] - bbox[1] - - offset = file.tell() - - if compression == 0: - # - # raw compression - tile = [] - for channel in range(channels): - layer = mode[channel] - if mode == "CMYK": - layer = layer + ";I" - tile.append(("raw", bbox, offset, layer)) - offset = offset + xsize*ysize - - elif compression == 1: - # - # packbits compression - i = 0 - tile = [] - bytecount = read(channels * ysize * 2) - offset = file.tell() - for channel in range(channels): - layer = mode[channel] - if mode == "CMYK": - layer = layer + ";I" - tile.append( - ("packbits", bbox, offset, layer) - ) - for y in range(ysize): - offset = offset + i16(bytecount[i:i+2]) - i = i + 2 - - file.seek(offset) - - if offset & 1: - read(1) # padding - - return tile - -# -------------------------------------------------------------------- -# registry - -Image.register_open("PSD", PsdImageFile, _accept) - -Image.register_extension("PSD", ".psd") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py deleted file mode 100755 index c65b91acaf2..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SgiImagePlugin.py +++ /dev/null @@ -1,92 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# SGI image file handling -# -# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. -# -# -# History: -# 1995-09-10 fl Created -# -# Copyright (c) 2008 by Karsten Hiddemann. -# Copyright (c) 1997 by Secret Labs AB. -# Copyright (c) 1995 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.2" - - -import Image, ImageFile - - -def i16(c): - return ord(c[1]) + (ord(c[0])<<8) - -def i32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) - - -def _accept(prefix): - return i16(prefix) == 474 - -## -# Image plugin for SGI images. - -class SgiImageFile(ImageFile.ImageFile): - - format = "SGI" - format_description = "SGI Image File Format" - - def _open(self): - - # HEAD - s = self.fp.read(512) - if i16(s) != 474: - raise SyntaxError("not an SGI image file") - - # relevant header entries - compression = ord(s[2]) - - # bytes, dimension, zsize - layout = ord(s[3]), i16(s[4:]), i16(s[10:]) - - # determine mode from bytes/zsize - if layout == (1, 2, 1) or layout == (1, 1, 1): - self.mode = "L" - elif layout == (1, 3, 3): - self.mode = "RGB" - elif layout == (1, 3, 4): - self.mode = "RGBA" - else: - raise SyntaxError("unsupported SGI image mode") - - # size - self.size = i16(s[6:]), i16(s[8:]) - - - # decoder info - if compression == 0: - offset = 512 - pagesize = self.size[0]*self.size[1]*layout[0] - self.tile = [] - for layer in self.mode: - self.tile.append(("raw", (0,0)+self.size, offset, (layer,0,-1))) - offset = offset + pagesize - elif compression == 1: - self.tile = [("sgi_rle", (0,0)+self.size, 512, (self.mode, 0, -1))] - -# -# registry - -Image.register_open("SGI", SgiImageFile, _accept) - -Image.register_extension("SGI", ".bw") -Image.register_extension("SGI", ".rgb") -Image.register_extension("SGI", ".rgba") - -Image.register_extension("SGI", ".sgi") # really? diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py deleted file mode 100755 index e73d55918c8..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SpiderImagePlugin.py +++ /dev/null @@ -1,294 +0,0 @@ -# -# The Python Imaging Library. -# -# SPIDER image file handling -# -# History: -# 2004-08-02 Created BB -# 2006-03-02 added save method -# 2006-03-13 added support for stack images -# -# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. -# Copyright (c) 2004 by William Baxter. -# Copyright (c) 2004 by Secret Labs AB. -# Copyright (c) 2004 by Fredrik Lundh. -# - -## -# Image plugin for the Spider image format. This format is is used -# by the SPIDER software, in processing image data from electron -# microscopy and tomography. -## - -# -# SpiderImagePlugin.py -# -# The Spider image format is used by SPIDER software, in processing -# image data from electron microscopy and tomography. -# -# Spider home page: -# http://www.wadsworth.org/spider_doc/spider/docs/spider.html -# -# Details about the Spider image format: -# http://www.wadsworth.org/spider_doc/spider/docs/image_doc.html -# - -import Image, ImageFile -import os, struct, sys - -def isInt(f): - try: - i = int(f) - if f-i == 0: return 1 - else: return 0 - except: - return 0 - -iforms = [1,3,-11,-12,-21,-22] - -# There is no magic number to identify Spider files, so just check a -# series of header locations to see if they have reasonable values. -# Returns no.of bytes in the header, if it is a valid Spider header, -# otherwise returns 0 - -def isSpiderHeader(t): - h = (99,) + t # add 1 value so can use spider header index start=1 - # header values 1,2,5,12,13,22,23 should be integers - for i in [1,2,5,12,13,22,23]: - if not isInt(h[i]): return 0 - # check iform - iform = int(h[5]) - if not iform in iforms: return 0 - # check other header values - labrec = int(h[13]) # no. records in file header - labbyt = int(h[22]) # total no. of bytes in header - lenbyt = int(h[23]) # record length in bytes - #print "labrec = %d, labbyt = %d, lenbyt = %d" % (labrec,labbyt,lenbyt) - if labbyt != (labrec * lenbyt): return 0 - # looks like a valid header - return labbyt - -def isSpiderImage(filename): - fp = open(filename,'rb') - f = fp.read(92) # read 23 * 4 bytes - fp.close() - bigendian = 1 - t = struct.unpack('>23f',f) # try big-endian first - hdrlen = isSpiderHeader(t) - if hdrlen == 0: - bigendian = 0 - t = struct.unpack('<23f',f) # little-endian - hdrlen = isSpiderHeader(t) - return hdrlen - - -class SpiderImageFile(ImageFile.ImageFile): - - format = "SPIDER" - format_description = "Spider 2D image" - - def _open(self): - # check header - n = 27 * 4 # read 27 float values - f = self.fp.read(n) - - try: - self.bigendian = 1 - t = struct.unpack('>27f',f) # try big-endian first - hdrlen = isSpiderHeader(t) - if hdrlen == 0: - self.bigendian = 0 - t = struct.unpack('<27f',f) # little-endian - hdrlen = isSpiderHeader(t) - if hdrlen == 0: - raise SyntaxError, "not a valid Spider file" - except struct.error: - raise SyntaxError, "not a valid Spider file" - - h = (99,) + t # add 1 value : spider header index starts at 1 - iform = int(h[5]) - if iform != 1: - raise SyntaxError, "not a Spider 2D image" - - self.size = int(h[12]), int(h[2]) # size in pixels (width, height) - self.istack = int(h[24]) - self.imgnumber = int(h[27]) - - if self.istack == 0 and self.imgnumber == 0: - # stk=0, img=0: a regular 2D image - offset = hdrlen - self.nimages = 1 - elif self.istack > 0 and self.imgnumber == 0: - # stk>0, img=0: Opening the stack for the first time - self.imgbytes = int(h[12]) * int(h[2]) * 4 - self.hdrlen = hdrlen - self.nimages = int(h[26]) - # Point to the first image in the stack - offset = hdrlen * 2 - self.imgnumber = 1 - elif self.istack == 0 and self.imgnumber > 0: - # stk=0, img>0: an image within the stack - offset = hdrlen + self.stkoffset - self.istack = 2 # So Image knows it's still a stack - else: - raise SyntaxError, "inconsistent stack header values" - - if self.bigendian: - self.rawmode = "F;32BF" - else: - self.rawmode = "F;32F" - self.mode = "F" - - self.tile = [("raw", (0, 0) + self.size, offset, - (self.rawmode, 0, 1))] - self.__fp = self.fp # FIXME: hack - - # 1st image index is zero (although SPIDER imgnumber starts at 1) - def tell(self): - if self.imgnumber < 1: - return 0 - else: - return self.imgnumber - 1 - - def seek(self, frame): - if self.istack == 0: - return - if frame >= self.nimages: - raise EOFError, "attempt to seek past end of file" - self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) - self.fp = self.__fp - self.fp.seek(self.stkoffset) - self._open() - - # returns a byte image after rescaling to 0..255 - def convert2byte(self, depth=255): - (min, max) = self.getextrema() - m = 1 - if max != min: - m = depth / (max-min) - b = -m * min - return self.point(lambda i, m=m, b=b: i * m + b).convert("L") - - # returns a ImageTk.PhotoImage object, after rescaling to 0..255 - def tkPhotoImage(self): - import ImageTk - return ImageTk.PhotoImage(self.convert2byte(), palette=256) - -# -------------------------------------------------------------------- -# Image series - -# given a list of filenames, return a list of images -def loadImageSeries(filelist=None): - " create a list of Image.images for use in montage " - if filelist == None or len(filelist) < 1: - return - - imglist = [] - for img in filelist: - if not os.path.exists(img): - print "unable to find %s" % img - continue - try: - im = Image.open(img).convert2byte() - except: - if not isSpiderImage(img): - print img + " is not a Spider image file" - continue - im.info['filename'] = img - imglist.append(im) - return imglist - -# -------------------------------------------------------------------- -# For saving images in Spider format - -def makeSpiderHeader(im): - nsam,nrow = im.size - lenbyt = nsam * 4 # There are labrec records in the header - labrec = 1024 / lenbyt - if 1024%lenbyt != 0: labrec += 1 - labbyt = labrec * lenbyt - hdr = [] - nvalues = labbyt / 4 - for i in range(nvalues): - hdr.append(0.0) - - if len(hdr) < 23: - return [] - - # NB these are Fortran indices - hdr[1] = 1.0 # nslice (=1 for an image) - hdr[2] = float(nrow) # number of rows per slice - hdr[5] = 1.0 # iform for 2D image - hdr[12] = float(nsam) # number of pixels per line - hdr[13] = float(labrec) # number of records in file header - hdr[22] = float(labbyt) # total number of bytes in header - hdr[23] = float(lenbyt) # record length in bytes - - # adjust for Fortran indexing - hdr = hdr[1:] - hdr.append(0.0) - # pack binary data into a string - hdrstr = [] - for v in hdr: - hdrstr.append(struct.pack('f',v)) - return hdrstr - -def _save(im, fp, filename): - if im.mode[0] != "F": - im = im.convert('F') - - hdr = makeSpiderHeader(im) - if len(hdr) < 256: - raise IOError, "Error creating Spider header" - - # write the SPIDER header - try: - fp = open(filename, 'wb') - except: - raise IOError, "Unable to open %s for writing" % filename - fp.writelines(hdr) - - rawmode = "F;32NF" #32-bit native floating point - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode,0,1))]) - - fp.close() - -def _save_spider(im, fp, filename): - # get the filename extension and register it with Image - fn, ext = os.path.splitext(filename) - Image.register_extension("SPIDER", ext) - _save(im, fp, filename) - -# -------------------------------------------------------------------- - -Image.register_open("SPIDER", SpiderImageFile) -Image.register_save("SPIDER", _save_spider) - -if __name__ == "__main__": - - if not sys.argv[1:]: - print "Syntax: python SpiderImagePlugin.py Spiderimage [outfile]" - sys.exit() - - filename = sys.argv[1] - if not isSpiderImage(filename): - print "input image must be in Spider format" - sys.exit() - - outfile = "" - if len(sys.argv[1:]) > 1: - outfile = sys.argv[2] - - im = Image.open(filename) - print "image: " + str(im) - print "format: " + str(im.format) - print "size: " + str(im.size) - print "mode: " + str(im.mode) - print "max, min: ", - print im.getextrema() - - if outfile != "": - # perform some image operation - im = im.transpose(Image.FLIP_LEFT_RIGHT) - print "saving a flipped version of %s as %s " % (os.path.basename(filename), outfile) - im.save(outfile, "SPIDER") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py deleted file mode 100755 index d189562a483..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/SunImagePlugin.py +++ /dev/null @@ -1,86 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# Sun image file handling -# -# History: -# 1995-09-10 fl Created -# 1996-05-28 fl Fixed 32-bit alignment -# 1998-12-29 fl Import ImagePalette module -# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) -# -# Copyright (c) 1997-2001 by Secret Labs AB -# Copyright (c) 1995-1996 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.3" - - -import Image, ImageFile, ImagePalette - - -def i16(c): - return ord(c[1]) + (ord(c[0])<<8) - -def i32(c): - return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24) - - -def _accept(prefix): - return i32(prefix) == 0x59a66a95 - -## -# Image plugin for Sun raster files. - -class SunImageFile(ImageFile.ImageFile): - - format = "SUN" - format_description = "Sun Raster File" - - def _open(self): - - # HEAD - s = self.fp.read(32) - if i32(s) != 0x59a66a95: - raise SyntaxError, "not an SUN raster file" - - offset = 32 - - self.size = i32(s[4:8]), i32(s[8:12]) - - depth = i32(s[12:16]) - if depth == 1: - self.mode, rawmode = "1", "1;I" - elif depth == 8: - self.mode = rawmode = "L" - elif depth == 24: - self.mode, rawmode = "RGB", "BGR" - else: - raise SyntaxError, "unsupported mode" - - compression = i32(s[20:24]) - - if i32(s[24:28]) != 0: - length = i32(s[28:32]) - offset = offset + length - self.palette = ImagePalette.raw("RGB;L", self.fp.read(length)) - if self.mode == "L": - self.mode = rawmode = "P" - - stride = (((self.size[0] * depth + 7) / 8) + 3) & (~3) - - if compression == 1: - self.tile = [("raw", (0,0)+self.size, offset, (rawmode, stride))] - elif compression == 2: - self.tile = [("sun_rle", (0,0)+self.size, offset, rawmode)] - -# -# registry - -Image.register_open("SUN", SunImageFile, _accept) - -Image.register_extension("SUN", ".ras") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py deleted file mode 100755 index d5de729cd36..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TarIO.py +++ /dev/null @@ -1,57 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# read files from within a tar file -# -# History: -# 95-06-18 fl Created -# 96-05-28 fl Open files in binary mode -# -# Copyright (c) Secret Labs AB 1997. -# Copyright (c) Fredrik Lundh 1995-96. -# -# See the README file for information on usage and redistribution. -# - -import ContainerIO -import string - -## -# A file object that provides read access to a given member of a TAR -# file. - -class TarIO(ContainerIO.ContainerIO): - - ## - # Create file object. - # - # @param tarfile Name of TAR file. - # @param file Name of member file. - - def __init__(self, tarfile, file): - - fh = open(tarfile, "rb") - - while 1: - - s = fh.read(512) - if len(s) != 512: - raise IOError, "unexpected end of tar file" - - name = s[:100] - i = string.find(name, chr(0)) - if i == 0: - raise IOError, "cannot find subfile" - if i > 0: - name = name[:i] - - size = string.atoi(s[124:136], 8) - - if file == name: - break - - fh.seek((size + 511) & (~511), 1) - - # Open region - ContainerIO.ContainerIO.__init__(self, fh, fh.tell(), size) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py deleted file mode 100755 index 3375991ca9e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TgaImagePlugin.py +++ /dev/null @@ -1,201 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# TGA file handling -# -# History: -# 95-09-01 fl created (reads 24-bit files only) -# 97-01-04 fl support more TGA versions, including compressed images -# 98-07-04 fl fixed orientation and alpha layer bugs -# 98-09-11 fl fixed orientation for runlength decoder -# -# Copyright (c) Secret Labs AB 1997-98. -# Copyright (c) Fredrik Lundh 1995-97. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.3" - -import Image, ImageFile, ImagePalette - - -# -# -------------------------------------------------------------------- -# Read RGA file - -def i16(c): - return ord(c[0]) + (ord(c[1])<<8) - -def i32(c): - return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) + (ord(c[3])<<24) - - -MODES = { - # map imagetype/depth to rawmode - (1, 8): "P", - (3, 1): "1", - (3, 8): "L", - (2, 16): "BGR;5", - (2, 24): "BGR", - (2, 32): "BGRA", -} - - -def _accept(prefix): - return prefix[0] == "\0" - -## -# Image plugin for Targa files. - -class TgaImageFile(ImageFile.ImageFile): - - format = "TGA" - format_description = "Targa" - - def _open(self): - - # process header - s = self.fp.read(18) - - id = ord(s[0]) - - colormaptype = ord(s[1]) - imagetype = ord(s[2]) - - depth = ord(s[16]) - - flags = ord(s[17]) - - self.size = i16(s[12:]), i16(s[14:]) - - # validate header fields - if id != 0 or colormaptype not in (0, 1) or\ - self.size[0] <= 0 or self.size[1] <= 0 or\ - depth not in (1, 8, 16, 24, 32): - raise SyntaxError, "not a TGA file" - - # image mode - if imagetype in (3, 11): - self.mode = "L" - if depth == 1: - self.mode = "1" # ??? - elif imagetype in (1, 9): - self.mode = "P" - elif imagetype in (2, 10): - self.mode = "RGB" - if depth == 32: - self.mode = "RGBA" - else: - raise SyntaxError, "unknown TGA mode" - - # orientation - orientation = flags & 0x30 - if orientation == 0x20: - orientation = 1 - elif not orientation: - orientation = -1 - else: - raise SyntaxError, "unknown TGA orientation" - - self.info["orientation"] = orientation - - if imagetype & 8: - self.info["compression"] = "tga_rle" - - if colormaptype: - # read palette - start, size, mapdepth = i16(s[3:]), i16(s[5:]), i16(s[7:]) - if mapdepth == 16: - self.palette = ImagePalette.raw("BGR;16", - "\0"*2*start + self.fp.read(2*size)) - elif mapdepth == 24: - self.palette = ImagePalette.raw("BGR", - "\0"*3*start + self.fp.read(3*size)) - elif mapdepth == 32: - self.palette = ImagePalette.raw("BGRA", - "\0"*4*start + self.fp.read(4*size)) - - # setup tile descriptor - try: - rawmode = MODES[(imagetype&7, depth)] - if imagetype & 8: - # compressed - self.tile = [("tga_rle", (0, 0)+self.size, - self.fp.tell(), (rawmode, orientation, depth))] - else: - self.tile = [("raw", (0, 0)+self.size, - self.fp.tell(), (rawmode, 0, orientation))] - except KeyError: - pass # cannot decode - -# -# -------------------------------------------------------------------- -# Write TGA file - -def o16(i): - return chr(i&255) + chr(i>>8&255) - -def o32(i): - return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) - -SAVE = { - "1": ("1", 1, 0, 3), - "L": ("L", 8, 0, 3), - "P": ("P", 8, 1, 1), - "RGB": ("BGR", 24, 0, 2), - "RGBA": ("BGRA", 32, 0, 2), -} - -def _save(im, fp, filename, check=0): - - try: - rawmode, bits, colormaptype, imagetype = SAVE[im.mode] - except KeyError: - raise IOError("cannot write mode %s as TGA" % im.mode) - - if check: - return check - - if colormaptype: - colormapfirst, colormaplength, colormapentry = 0, 256, 24 - else: - colormapfirst, colormaplength, colormapentry = 0, 0, 0 - - if im.mode == "RGBA": - flags = 8 - else: - flags = 0 - - orientation = im.info.get("orientation", -1) - if orientation > 0: - flags = flags | 0x20 - - fp.write("\000" + - chr(colormaptype) + - chr(imagetype) + - o16(colormapfirst) + - o16(colormaplength) + - chr(colormapentry) + - o16(0) + - o16(0) + - o16(im.size[0]) + - o16(im.size[1]) + - chr(bits) + - chr(flags)) - - if colormaptype: - fp.write(im.im.getpalette("RGB", "BGR")) - - ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, orientation))]) - -# -# -------------------------------------------------------------------- -# Registry - -Image.register_open("TGA", TgaImageFile, _accept) -Image.register_save("TGA", _save) - -Image.register_extension("TGA", ".tga") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py deleted file mode 100755 index 8a0fde9cd86..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffImagePlugin.py +++ /dev/null @@ -1,860 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# TIFF file handling -# -# TIFF is a flexible, if somewhat aged, image file format originally -# defined by Aldus. Although TIFF supports a wide variety of pixel -# layouts and compression methods, the name doesn't really stand for -# "thousands of incompatible file formats," it just feels that way. -# -# To read TIFF data from a stream, the stream must be seekable. For -# progressive decoding, make sure to use TIFF files where the tag -# directory is placed first in the file. -# -# History: -# 1995-09-01 fl Created -# 1996-05-04 fl Handle JPEGTABLES tag -# 1996-05-18 fl Fixed COLORMAP support -# 1997-01-05 fl Fixed PREDICTOR support -# 1997-08-27 fl Added support for rational tags (from Perry Stoll) -# 1998-01-10 fl Fixed seek/tell (from Jan Blom) -# 1998-07-15 fl Use private names for internal variables -# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) -# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) -# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) -# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) -# 2001-12-18 fl Added workaround for broken Matrox library -# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) -# 2003-05-19 fl Check FILLORDER tag -# 2003-09-26 fl Added RGBa support -# 2004-02-24 fl Added DPI support; fixed rational write support -# 2005-02-07 fl Added workaround for broken Corel Draw 10 files -# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) -# -# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. -# Copyright (c) 1995-1997 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -__version__ = "1.3.5" - -import Image, ImageFile -import ImagePalette - -import array, string, sys - -II = "II" # little-endian (intel-style) -MM = "MM" # big-endian (motorola-style) - -try: - if sys.byteorder == "little": - native_prefix = II - else: - native_prefix = MM -except AttributeError: - if ord(array.array("i",[1]).tostring()[0]): - native_prefix = II - else: - native_prefix = MM - -# -# -------------------------------------------------------------------- -# Read TIFF files - -def il16(c,o=0): - return ord(c[o]) + (ord(c[o+1])<<8) -def il32(c,o=0): - return ord(c[o]) + (ord(c[o+1])<<8) + (ord(c[o+2])<<16) + (ord(c[o+3])<<24) -def ol16(i): - return chr(i&255) + chr(i>>8&255) -def ol32(i): - return chr(i&255) + chr(i>>8&255) + chr(i>>16&255) + chr(i>>24&255) - -def ib16(c,o=0): - return ord(c[o+1]) + (ord(c[o])<<8) -def ib32(c,o=0): - return ord(c[o+3]) + (ord(c[o+2])<<8) + (ord(c[o+1])<<16) + (ord(c[o])<<24) -def ob16(i): - return chr(i>>8&255) + chr(i&255) -def ob32(i): - return chr(i>>24&255) + chr(i>>16&255) + chr(i>>8&255) + chr(i&255) - -# a few tag names, just to make the code below a bit more readable -IMAGEWIDTH = 256 -IMAGELENGTH = 257 -BITSPERSAMPLE = 258 -COMPRESSION = 259 -PHOTOMETRIC_INTERPRETATION = 262 -FILLORDER = 266 -IMAGEDESCRIPTION = 270 -STRIPOFFSETS = 273 -SAMPLESPERPIXEL = 277 -ROWSPERSTRIP = 278 -STRIPBYTECOUNTS = 279 -X_RESOLUTION = 282 -Y_RESOLUTION = 283 -PLANAR_CONFIGURATION = 284 -RESOLUTION_UNIT = 296 -SOFTWARE = 305 -DATE_TIME = 306 -ARTIST = 315 -PREDICTOR = 317 -COLORMAP = 320 -TILEOFFSETS = 324 -EXTRASAMPLES = 338 -SAMPLEFORMAT = 339 -JPEGTABLES = 347 -COPYRIGHT = 33432 -IPTC_NAA_CHUNK = 33723 # newsphoto properties -PHOTOSHOP_CHUNK = 34377 # photoshop properties -ICCPROFILE = 34675 -EXIFIFD = 34665 -XMP = 700 - -COMPRESSION_INFO = { - # Compression => pil compression name - 1: "raw", - 2: "tiff_ccitt", - 3: "group3", - 4: "group4", - 5: "tiff_lzw", - 6: "tiff_jpeg", # obsolete - 7: "jpeg", - 32771: "tiff_raw_16", # 16-bit padding - 32773: "packbits" -} - -OPEN_INFO = { - # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, - # ExtraSamples) => mode, rawmode - (II, 0, 1, 1, (1,), ()): ("1", "1;I"), - (II, 0, 1, 2, (1,), ()): ("1", "1;IR"), - (II, 0, 1, 1, (8,), ()): ("L", "L;I"), - (II, 0, 1, 2, (8,), ()): ("L", "L;IR"), - (II, 1, 1, 1, (1,), ()): ("1", "1"), - (II, 1, 1, 2, (1,), ()): ("1", "1;R"), - (II, 1, 1, 1, (8,), ()): ("L", "L"), - (II, 1, 1, 1, (8,8), (2,)): ("LA", "LA"), - (II, 1, 1, 2, (8,), ()): ("L", "L;R"), - (II, 1, 1, 1, (16,), ()): ("I;16", "I;16"), - (II, 1, 2, 1, (16,), ()): ("I;16S", "I;16S"), - (II, 1, 2, 1, (32,), ()): ("I", "I;32S"), - (II, 1, 3, 1, (32,), ()): ("F", "F;32F"), - (II, 2, 1, 1, (8,8,8), ()): ("RGB", "RGB"), - (II, 2, 1, 2, (8,8,8), ()): ("RGB", "RGB;R"), - (II, 2, 1, 1, (8,8,8,8), (0,)): ("RGBX", "RGBX"), - (II, 2, 1, 1, (8,8,8,8), (1,)): ("RGBA", "RGBa"), - (II, 2, 1, 1, (8,8,8,8), (2,)): ("RGBA", "RGBA"), - (II, 2, 1, 1, (8,8,8,8), (999,)): ("RGBA", "RGBA"), # corel draw 10 - (II, 3, 1, 1, (1,), ()): ("P", "P;1"), - (II, 3, 1, 2, (1,), ()): ("P", "P;1R"), - (II, 3, 1, 1, (2,), ()): ("P", "P;2"), - (II, 3, 1, 2, (2,), ()): ("P", "P;2R"), - (II, 3, 1, 1, (4,), ()): ("P", "P;4"), - (II, 3, 1, 2, (4,), ()): ("P", "P;4R"), - (II, 3, 1, 1, (8,), ()): ("P", "P"), - (II, 3, 1, 1, (8,8), (2,)): ("PA", "PA"), - (II, 3, 1, 2, (8,), ()): ("P", "P;R"), - (II, 5, 1, 1, (8,8,8,8), ()): ("CMYK", "CMYK"), - (II, 6, 1, 1, (8,8,8), ()): ("YCbCr", "YCbCr"), - (II, 8, 1, 1, (8,8,8), ()): ("LAB", "LAB"), - - (MM, 0, 1, 1, (1,), ()): ("1", "1;I"), - (MM, 0, 1, 2, (1,), ()): ("1", "1;IR"), - (MM, 0, 1, 1, (8,), ()): ("L", "L;I"), - (MM, 0, 1, 2, (8,), ()): ("L", "L;IR"), - (MM, 1, 1, 1, (1,), ()): ("1", "1"), - (MM, 1, 1, 2, (1,), ()): ("1", "1;R"), - (MM, 1, 1, 1, (8,), ()): ("L", "L"), - (MM, 1, 1, 1, (8,8), (2,)): ("LA", "LA"), - (MM, 1, 1, 2, (8,), ()): ("L", "L;R"), - (MM, 1, 1, 1, (16,), ()): ("I;16B", "I;16B"), - (MM, 1, 2, 1, (16,), ()): ("I;16BS", "I;16BS"), - (MM, 1, 2, 1, (32,), ()): ("I;32BS", "I;32BS"), - (MM, 1, 3, 1, (32,), ()): ("F;32BF", "F;32BF"), - (MM, 2, 1, 1, (8,8,8), ()): ("RGB", "RGB"), - (MM, 2, 1, 2, (8,8,8), ()): ("RGB", "RGB;R"), - (MM, 2, 1, 1, (8,8,8,8), (0,)): ("RGBX", "RGBX"), - (MM, 2, 1, 1, (8,8,8,8), (1,)): ("RGBA", "RGBa"), - (MM, 2, 1, 1, (8,8,8,8), (2,)): ("RGBA", "RGBA"), - (MM, 2, 1, 1, (8,8,8,8), (999,)): ("RGBA", "RGBA"), # corel draw 10 - (MM, 3, 1, 1, (1,), ()): ("P", "P;1"), - (MM, 3, 1, 2, (1,), ()): ("P", "P;1R"), - (MM, 3, 1, 1, (2,), ()): ("P", "P;2"), - (MM, 3, 1, 2, (2,), ()): ("P", "P;2R"), - (MM, 3, 1, 1, (4,), ()): ("P", "P;4"), - (MM, 3, 1, 2, (4,), ()): ("P", "P;4R"), - (MM, 3, 1, 1, (8,), ()): ("P", "P"), - (MM, 3, 1, 1, (8,8), (2,)): ("PA", "PA"), - (MM, 3, 1, 2, (8,), ()): ("P", "P;R"), - (MM, 5, 1, 1, (8,8,8,8), ()): ("CMYK", "CMYK"), - (MM, 6, 1, 1, (8,8,8), ()): ("YCbCr", "YCbCr"), - (MM, 8, 1, 1, (8,8,8), ()): ("LAB", "LAB"), - -} - -PREFIXES = ["MM\000\052", "II\052\000", "II\xBC\000"] - -def _accept(prefix): - return prefix[:4] in PREFIXES - -## -# Wrapper for TIFF IFDs. - -class ImageFileDirectory: - - # represents a TIFF tag directory. to speed things up, - # we don't decode tags unless they're asked for. - - def __init__(self, prefix): - self.prefix = prefix[:2] - if self.prefix == MM: - self.i16, self.i32 = ib16, ib32 - self.o16, self.o32 = ob16, ob32 - elif self.prefix == II: - self.i16, self.i32 = il16, il32 - self.o16, self.o32 = ol16, ol32 - else: - raise SyntaxError("not a TIFF IFD") - self.reset() - - def reset(self): - self.tags = {} - self.tagdata = {} - self.tagtype = {} # added 2008-06-05 by Florian Hoech - self.next = None - - # dictionary API (sort of) - - def keys(self): - return self.tagdata.keys() + self.tags.keys() - - def items(self): - items = self.tags.items() - for tag in self.tagdata.keys(): - items.append((tag, self[tag])) - return items - - def __len__(self): - return len(self.tagdata) + len(self.tags) - - def __getitem__(self, tag): - try: - return self.tags[tag] - except KeyError: - type, data = self.tagdata[tag] # unpack on the fly - size, handler = self.load_dispatch[type] - self.tags[tag] = data = handler(self, data) - del self.tagdata[tag] - return data - - def get(self, tag, default=None): - try: - return self[tag] - except KeyError: - return default - - def getscalar(self, tag, default=None): - try: - value = self[tag] - if len(value) != 1: - if tag == SAMPLEFORMAT: - # work around broken (?) matrox library - # (from Ted Wright, via Bob Klimek) - raise KeyError # use default - raise ValueError, "not a scalar" - return value[0] - except KeyError: - if default is None: - raise - return default - - def has_key(self, tag): - return self.tags.has_key(tag) or self.tagdata.has_key(tag) - - def __setitem__(self, tag, value): - if type(value) is not type(()): - value = (value,) - self.tags[tag] = value - - # load primitives - - load_dispatch = {} - - def load_byte(self, data): - l = [] - for i in range(len(data)): - l.append(ord(data[i])) - return tuple(l) - load_dispatch[1] = (1, load_byte) - - def load_string(self, data): - if data[-1:] == '\0': - data = data[:-1] - return data - load_dispatch[2] = (1, load_string) - - def load_short(self, data): - l = [] - for i in range(0, len(data), 2): - l.append(self.i16(data, i)) - return tuple(l) - load_dispatch[3] = (2, load_short) - - def load_long(self, data): - l = [] - for i in range(0, len(data), 4): - l.append(self.i32(data, i)) - return tuple(l) - load_dispatch[4] = (4, load_long) - - def load_rational(self, data): - l = [] - for i in range(0, len(data), 8): - l.append((self.i32(data, i), self.i32(data, i+4))) - return tuple(l) - load_dispatch[5] = (8, load_rational) - - def load_float(self, data): - a = array.array("f", data) - if self.prefix != native_prefix: - a.byteswap() - return tuple(a) - load_dispatch[11] = (4, load_float) - - def load_double(self, data): - a = array.array("d", data) - if self.prefix != native_prefix: - a.byteswap() - return tuple(a) - load_dispatch[12] = (8, load_double) - - def load_undefined(self, data): - # Untyped data - return data - load_dispatch[7] = (1, load_undefined) - - def load(self, fp): - # load tag dictionary - - self.reset() - - i16 = self.i16 - i32 = self.i32 - - for i in range(i16(fp.read(2))): - - ifd = fp.read(12) - - tag, typ = i16(ifd), i16(ifd, 2) - - if Image.DEBUG: - import TiffTags - tagname = TiffTags.TAGS.get(tag, "unknown") - typname = TiffTags.TYPES.get(typ, "unknown") - print "tag: %s (%d)" % (tagname, tag), - print "- type: %s (%d)" % (typname, typ), - - try: - dispatch = self.load_dispatch[typ] - except KeyError: - if Image.DEBUG: - print "- unsupported type", typ - continue # ignore unsupported type - - size, handler = dispatch - - size = size * i32(ifd, 4) - - # Get and expand tag value - if size > 4: - here = fp.tell() - fp.seek(i32(ifd, 8)) - data = ImageFile._safe_read(fp, size) - fp.seek(here) - else: - data = ifd[8:8+size] - - if len(data) != size: - raise IOError, "not enough data" - - self.tagdata[tag] = typ, data - self.tagtype[tag] = typ - - if Image.DEBUG: - if tag in (COLORMAP, IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, ICCPROFILE, XMP): - print "- value: " % size - else: - print "- value:", self[tag] - - self.next = i32(fp.read(4)) - - # save primitives - - def save(self, fp): - - o16 = self.o16 - o32 = self.o32 - - fp.write(o16(len(self.tags))) - - # always write in ascending tag order - tags = self.tags.items() - tags.sort() - - directory = [] - append = directory.append - - offset = fp.tell() + len(self.tags) * 12 + 4 - - stripoffsets = None - - # pass 1: convert tags to binary format - for tag, value in tags: - - typ = None - - if self.tagtype.has_key(tag): - typ = self.tagtype[tag] - - if typ == 1: - # byte data - data = value = string.join(map(chr, value), "") - elif typ == 7: - # untyped data - data = value = string.join(value, "") - elif type(value[0]) is type(""): - # string data - typ = 2 - data = value = string.join(value, "\0") + "\0" - else: - # integer data - if tag == STRIPOFFSETS: - stripoffsets = len(directory) - typ = 4 # to avoid catch-22 - elif tag in (X_RESOLUTION, Y_RESOLUTION): - # identify rational data fields - typ = 5 - elif not typ: - typ = 3 - for v in value: - if v >= 65536: - typ = 4 - if typ == 3: - data = string.join(map(o16, value), "") - else: - data = string.join(map(o32, value), "") - - if Image.DEBUG: - import TiffTags - tagname = TiffTags.TAGS.get(tag, "unknown") - typname = TiffTags.TYPES.get(typ, "unknown") - print "save: %s (%d)" % (tagname, tag), - print "- type: %s (%d)" % (typname, typ), - if tag in (COLORMAP, IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, ICCPROFILE, XMP): - size = len(data) - print "- value: " % size - else: - print "- value:", value - - # figure out if data fits into the directory - if len(data) == 4: - append((tag, typ, len(value), data, "")) - elif len(data) < 4: - append((tag, typ, len(value), data + (4-len(data))*"\0", "")) - else: - count = len(value) - if typ == 5: - count = count / 2 # adjust for rational data field - append((tag, typ, count, o32(offset), data)) - offset = offset + len(data) - if offset & 1: - offset = offset + 1 # word padding - - # update strip offset data to point beyond auxiliary data - if stripoffsets is not None: - tag, typ, count, value, data = directory[stripoffsets] - assert not data, "multistrip support not yet implemented" - value = o32(self.i32(value) + offset) - directory[stripoffsets] = tag, typ, count, value, data - - # pass 2: write directory to file - for tag, typ, count, value, data in directory: - if Image.DEBUG > 1: - print tag, typ, count, repr(value), repr(data) - fp.write(o16(tag) + o16(typ) + o32(count) + value) - - # -- overwrite here for multi-page -- - fp.write("\0\0\0\0") # end of directory - - # pass 3: write auxiliary data to file - for tag, typ, count, value, data in directory: - fp.write(data) - if len(data) & 1: - fp.write("\0") - - return offset - -## -# Image plugin for TIFF files. - -class TiffImageFile(ImageFile.ImageFile): - - format = "TIFF" - format_description = "Adobe TIFF" - - def _open(self): - "Open the first image in a TIFF file" - - # Header - ifh = self.fp.read(8) - - if ifh[:4] not in PREFIXES: - raise SyntaxError, "not a TIFF file" - - # image file directory (tag dictionary) - self.tag = self.ifd = ImageFileDirectory(ifh[:2]) - - # setup frame pointers - self.__first = self.__next = self.ifd.i32(ifh, 4) - self.__frame = -1 - self.__fp = self.fp - - # and load the first frame - self._seek(0) - - def seek(self, frame): - "Select a given frame as current image" - - if frame < 0: - frame = 0 - self._seek(frame) - - def tell(self): - "Return the current frame number" - - return self._tell() - - def _seek(self, frame): - - self.fp = self.__fp - if frame < self.__frame: - # rewind file - self.__frame = -1 - self.__next = self.__first - while self.__frame < frame: - if not self.__next: - raise EOFError, "no more images in TIFF file" - self.fp.seek(self.__next) - self.tag.load(self.fp) - self.__next = self.tag.next - self.__frame = self.__frame + 1 - self._setup() - - def _tell(self): - - return self.__frame - - def _decoder(self, rawmode, layer): - "Setup decoder contexts" - - args = None - if rawmode == "RGB" and self._planar_configuration == 2: - rawmode = rawmode[layer] - compression = self._compression - if compression == "raw": - args = (rawmode, 0, 1) - elif compression == "jpeg": - args = rawmode, "" - if self.tag.has_key(JPEGTABLES): - # Hack to handle abbreviated JPEG headers - self.tile_prefix = self.tag[JPEGTABLES] - elif compression == "packbits": - args = rawmode - elif compression == "tiff_lzw": - args = rawmode - if self.tag.has_key(317): - # Section 14: Differencing Predictor - self.decoderconfig = (self.tag[PREDICTOR][0],) - - if self.tag.has_key(ICCPROFILE): - self.info['icc_profile'] = self.tag[ICCPROFILE] - - return args - - def _setup(self): - "Setup this image object based on current tags" - - if self.tag.has_key(0xBC01): - raise IOError, "Windows Media Photo files not yet supported" - - getscalar = self.tag.getscalar - - # extract relevant tags - self._compression = COMPRESSION_INFO[getscalar(COMPRESSION, 1)] - self._planar_configuration = getscalar(PLANAR_CONFIGURATION, 1) - - # photometric is a required tag, but not everyone is reading - # the specification - photo = getscalar(PHOTOMETRIC_INTERPRETATION, 0) - - fillorder = getscalar(FILLORDER, 1) - - if Image.DEBUG: - print "*** Summary ***" - print "- compression:", self._compression - print "- photometric_interpretation:", photo - print "- planar_configuration:", self._planar_configuration - print "- fill_order:", fillorder - - # size - xsize = getscalar(IMAGEWIDTH) - ysize = getscalar(IMAGELENGTH) - self.size = xsize, ysize - - if Image.DEBUG: - print "- size:", self.size - - format = getscalar(SAMPLEFORMAT, 1) - - # mode: check photometric interpretation and bits per pixel - key = ( - self.tag.prefix, photo, format, fillorder, - self.tag.get(BITSPERSAMPLE, (1,)), - self.tag.get(EXTRASAMPLES, ()) - ) - if Image.DEBUG: - print "format key:", key - try: - self.mode, rawmode = OPEN_INFO[key] - except KeyError: - if Image.DEBUG: - print "- unsupported format" - raise SyntaxError, "unknown pixel mode" - - if Image.DEBUG: - print "- raw mode:", rawmode - print "- pil mode:", self.mode - - self.info["compression"] = self._compression - - xres = getscalar(X_RESOLUTION, (1, 1)) - yres = getscalar(Y_RESOLUTION, (1, 1)) - - if xres and yres: - xres = xres[0] / (xres[1] or 1) - yres = yres[0] / (yres[1] or 1) - resunit = getscalar(RESOLUTION_UNIT, 1) - if resunit == 2: # dots per inch - self.info["dpi"] = xres, yres - elif resunit == 3: # dots per centimeter. convert to dpi - self.info["dpi"] = xres * 2.54, yres * 2.54 - else: # No absolute unit of measurement - self.info["resolution"] = xres, yres - - # build tile descriptors - x = y = l = 0 - self.tile = [] - if self.tag.has_key(STRIPOFFSETS): - # striped image - h = getscalar(ROWSPERSTRIP, ysize) - w = self.size[0] - a = None - for o in self.tag[STRIPOFFSETS]: - if not a: - a = self._decoder(rawmode, l) - self.tile.append( - (self._compression, - (0, min(y, ysize), w, min(y+h, ysize)), - o, a)) - y = y + h - if y >= self.size[1]: - x = y = 0 - l = l + 1 - a = None - elif self.tag.has_key(TILEOFFSETS): - # tiled image - w = getscalar(322) - h = getscalar(323) - a = None - for o in self.tag[TILEOFFSETS]: - if not a: - a = self._decoder(rawmode, l) - # FIXME: this doesn't work if the image size - # is not a multiple of the tile size... - self.tile.append( - (self._compression, - (x, y, x+w, y+h), - o, a)) - x = x + w - if x >= self.size[0]: - x, y = 0, y + h - if y >= self.size[1]: - x = y = 0 - l = l + 1 - a = None - else: - if Image.DEBUG: - print "- unsupported data organization" - raise SyntaxError("unknown data organization") - - # fixup palette descriptor - - if self.mode == "P": - palette = map(lambda a: chr(a / 256), self.tag[COLORMAP]) - self.palette = ImagePalette.raw("RGB;L", string.join(palette, "")) -# -# -------------------------------------------------------------------- -# Write TIFF files - -# little endian is default except for image modes with explict big endian byte-order - -SAVE_INFO = { - # mode => rawmode, byteorder, photometrics, sampleformat, bitspersample, extra - "1": ("1", II, 1, 1, (1,), None), - "L": ("L", II, 1, 1, (8,), None), - "LA": ("LA", II, 1, 1, (8,8), 2), - "P": ("P", II, 3, 1, (8,), None), - "PA": ("PA", II, 3, 1, (8,8), 2), - "I": ("I;32S", II, 1, 2, (32,), None), - "I;16": ("I;16", II, 1, 1, (16,), None), - "I;16S": ("I;16S", II, 1, 2, (16,), None), - "F": ("F;32F", II, 1, 3, (32,), None), - "RGB": ("RGB", II, 2, 1, (8,8,8), None), - "RGBX": ("RGBX", II, 2, 1, (8,8,8,8), 0), - "RGBA": ("RGBA", II, 2, 1, (8,8,8,8), 2), - "CMYK": ("CMYK", II, 5, 1, (8,8,8,8), None), - "YCbCr": ("YCbCr", II, 6, 1, (8,8,8), None), - "LAB": ("LAB", II, 8, 1, (8,8,8), None), - - "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), - "I;16B": ("I;16B", MM, 1, 1, (16,), None), - "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), - "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), -} - -def _cvt_res(value): - # convert value to TIFF rational number -- (numerator, denominator) - if type(value) in (type([]), type(())): - assert(len(value) % 2 == 0) - return value - if type(value) == type(1): - return (value, 1) - value = float(value) - return (int(value * 65536), 65536) - -def _save(im, fp, filename): - - try: - rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] - except KeyError: - raise IOError, "cannot write mode %s as TIFF" % im.mode - - ifd = ImageFileDirectory(prefix) - - # -- multi-page -- skip TIFF header on subsequent pages - if fp.tell() == 0: - # tiff header (write via IFD to get everything right) - # PIL always starts the first IFD at offset 8 - fp.write(ifd.prefix + ifd.o16(42) + ifd.o32(8)) - - ifd[IMAGEWIDTH] = im.size[0] - ifd[IMAGELENGTH] = im.size[1] - - # additions written by Greg Couch, gregc@cgl.ucsf.edu - # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com - if hasattr(im, 'tag'): - # preserve tags from original TIFF image file - for key in (RESOLUTION_UNIT, X_RESOLUTION, Y_RESOLUTION): - if im.tag.tagdata.has_key(key): - ifd[key] = im.tag.tagdata.get(key) - # preserve some more tags from original TIFF image file - # -- 2008-06-06 Florian Hoech - ifd.tagtype = im.tag.tagtype - for key in (IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, XMP): - if im.tag.has_key(key): - ifd[key] = im.tag[key] - # preserve ICC profile (should also work when saving other formats - # which support profiles as TIFF) -- 2008-06-06 Florian Hoech - if im.info.has_key("icc_profile"): - ifd[ICCPROFILE] = im.info["icc_profile"] - if im.encoderinfo.has_key("description"): - ifd[IMAGEDESCRIPTION] = im.encoderinfo["description"] - if im.encoderinfo.has_key("resolution"): - ifd[X_RESOLUTION] = ifd[Y_RESOLUTION] \ - = _cvt_res(im.encoderinfo["resolution"]) - if im.encoderinfo.has_key("x resolution"): - ifd[X_RESOLUTION] = _cvt_res(im.encoderinfo["x resolution"]) - if im.encoderinfo.has_key("y resolution"): - ifd[Y_RESOLUTION] = _cvt_res(im.encoderinfo["y resolution"]) - if im.encoderinfo.has_key("resolution unit"): - unit = im.encoderinfo["resolution unit"] - if unit == "inch": - ifd[RESOLUTION_UNIT] = 2 - elif unit == "cm" or unit == "centimeter": - ifd[RESOLUTION_UNIT] = 3 - else: - ifd[RESOLUTION_UNIT] = 1 - if im.encoderinfo.has_key("software"): - ifd[SOFTWARE] = im.encoderinfo["software"] - if im.encoderinfo.has_key("date time"): - ifd[DATE_TIME] = im.encoderinfo["date time"] - if im.encoderinfo.has_key("artist"): - ifd[ARTIST] = im.encoderinfo["artist"] - if im.encoderinfo.has_key("copyright"): - ifd[COPYRIGHT] = im.encoderinfo["copyright"] - - dpi = im.encoderinfo.get("dpi") - if dpi: - ifd[RESOLUTION_UNIT] = 2 - ifd[X_RESOLUTION] = _cvt_res(dpi[0]) - ifd[Y_RESOLUTION] = _cvt_res(dpi[1]) - - if bits != (1,): - ifd[BITSPERSAMPLE] = bits - if len(bits) != 1: - ifd[SAMPLESPERPIXEL] = len(bits) - if extra is not None: - ifd[EXTRASAMPLES] = extra - if format != 1: - ifd[SAMPLEFORMAT] = format - - ifd[PHOTOMETRIC_INTERPRETATION] = photo - - if im.mode == "P": - lut = im.im.getpalette("RGB", "RGB;L") - ifd[COLORMAP] = tuple(map(lambda v: ord(v) * 256, lut)) - - # data orientation - stride = len(bits) * ((im.size[0]*bits[0]+7)/8) - ifd[ROWSPERSTRIP] = im.size[1] - ifd[STRIPBYTECOUNTS] = stride * im.size[1] - ifd[STRIPOFFSETS] = 0 # this is adjusted by IFD writer - ifd[COMPRESSION] = 1 # no compression - - offset = ifd.save(fp) - - ImageFile._save(im, fp, [ - ("raw", (0,0)+im.size, offset, (rawmode, stride, 1)) - ]) - - - # -- helper for multi-page save -- - if im.encoderinfo.has_key("_debug_multipage"): - #just to access o32 and o16 (using correct byte order) - im._debug_multipage = ifd - -# -# -------------------------------------------------------------------- -# Register - -Image.register_open("TIFF", TiffImageFile, _accept) -Image.register_save("TIFF", _save) - -Image.register_extension("TIFF", ".tif") -Image.register_extension("TIFF", ".tiff") - -Image.register_mime("TIFF", "image/tiff") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py deleted file mode 100755 index 33fd209411c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/TiffTags.py +++ /dev/null @@ -1,209 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# TIFF tags -# -# This module provides clear-text names for various well-known -# TIFF tags. the TIFF codec works just fine without it. -# -# Copyright (c) Secret Labs AB 1999. -# -# See the README file for information on usage and redistribution. -# - -## -# This module provides constants and clear-text names for various -# well-known TIFF tags. -## - -## -# Map tag numbers (or tag number, tag value tuples) to tag names. - -TAGS = { - - 254: "NewSubfileType", - 255: "SubfileType", - 256: "ImageWidth", - 257: "ImageLength", - 258: "BitsPerSample", - - 259: "Compression", - (259, 1): "Uncompressed", - (259, 2): "CCITT 1d", - (259, 3): "Group 3 Fax", - (259, 4): "Group 4 Fax", - (259, 5): "LZW", - (259, 6): "JPEG", - (259, 32773): "PackBits", - - 262: "PhotometricInterpretation", - (262, 0): "WhiteIsZero", - (262, 1): "BlackIsZero", - (262, 2): "RGB", - (262, 3): "RGB Palette", - (262, 4): "Transparency Mask", - (262, 5): "CMYK", - (262, 6): "YCbCr", - (262, 8): "CieLAB", - (262, 32803): "CFA", # TIFF/EP, Adobe DNG - (262, 32892): "LinearRaw", # Adobe DNG - - 263: "Thresholding", - 264: "CellWidth", - 265: "CellHeight", - 266: "FillOrder", - 269: "DocumentName", - - 270: "ImageDescription", - 271: "Make", - 272: "Model", - 273: "StripOffsets", - 274: "Orientation", - 277: "SamplesPerPixel", - 278: "RowsPerStrip", - 279: "StripByteCounts", - - 280: "MinSampleValue", - 281: "MaxSampleValue", - 282: "XResolution", - 283: "YResolution", - 284: "PlanarConfiguration", - (284, 1): "Contigous", - (284, 2): "Separate", - - 285: "PageName", - 286: "XPosition", - 287: "YPosition", - 288: "FreeOffsets", - 289: "FreeByteCounts", - - 290: "GrayResponseUnit", - 291: "GrayResponseCurve", - 292: "T4Options", - 293: "T6Options", - 296: "ResolutionUnit", - 297: "PageNumber", - - 301: "TransferFunction", - 305: "Software", - 306: "DateTime", - - 315: "Artist", - 316: "HostComputer", - 317: "Predictor", - 318: "WhitePoint", - 319: "PrimaryChromaticies", - - 320: "ColorMap", - 321: "HalftoneHints", - 322: "TileWidth", - 323: "TileLength", - 324: "TileOffsets", - 325: "TileByteCounts", - - 332: "InkSet", - 333: "InkNames", - 334: "NumberOfInks", - 336: "DotRange", - 337: "TargetPrinter", - 338: "ExtraSamples", - 339: "SampleFormat", - - 340: "SMinSampleValue", - 341: "SMaxSampleValue", - 342: "TransferRange", - - 347: "JPEGTables", - - # obsolete JPEG tags - 512: "JPEGProc", - 513: "JPEGInterchangeFormat", - 514: "JPEGInterchangeFormatLength", - 515: "JPEGRestartInterval", - 517: "JPEGLosslessPredictors", - 518: "JPEGPointTransforms", - 519: "JPEGQTables", - 520: "JPEGDCTables", - 521: "JPEGACTables", - - 529: "YCbCrCoefficients", - 530: "YCbCrSubSampling", - 531: "YCbCrPositioning", - 532: "ReferenceBlackWhite", - - # XMP - 700: "XMP", - - 33432: "Copyright", - - # various extensions (should check specs for "official" names) - 33723: "IptcNaaInfo", - 34377: "PhotoshopInfo", - - # Exif IFD - 34665: "ExifIFD", - - # ICC Profile - 34675: "ICCProfile", - - # Adobe DNG - 50706: "DNGVersion", - 50707: "DNGBackwardVersion", - 50708: "UniqueCameraModel", - 50709: "LocalizedCameraModel", - 50710: "CFAPlaneColor", - 50711: "CFALayout", - 50712: "LinearizationTable", - 50713: "BlackLevelRepeatDim", - 50714: "BlackLevel", - 50715: "BlackLevelDeltaH", - 50716: "BlackLevelDeltaV", - 50717: "WhiteLevel", - 50718: "DefaultScale", - 50741: "BestQualityScale", - 50719: "DefaultCropOrigin", - 50720: "DefaultCropSize", - 50778: "CalibrationIlluminant1", - 50779: "CalibrationIlluminant2", - 50721: "ColorMatrix1", - 50722: "ColorMatrix2", - 50723: "CameraCalibration1", - 50724: "CameraCalibration2", - 50725: "ReductionMatrix1", - 50726: "ReductionMatrix2", - 50727: "AnalogBalance", - 50728: "AsShotNeutral", - 50729: "AsShotWhiteXY", - 50730: "BaselineExposure", - 50731: "BaselineNoise", - 50732: "BaselineSharpness", - 50733: "BayerGreenSplit", - 50734: "LinearResponseLimit", - 50735: "CameraSerialNumber", - 50736: "LensInfo", - 50737: "ChromaBlurRadius", - 50738: "AntiAliasStrength", - 50740: "DNGPrivateData", - 50741: "MakerNoteSafety", -} - -## -# Map type numbers to type names. - -TYPES = { - - 1: "byte", - 2: "ascii", - 3: "short", - 4: "long", - 5: "rational", - 6: "signed byte", - 7: "undefined", - 8: "signed short", - 9: "signed long", - 10: "signed rational", - 11: "float", - 12: "double", - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py deleted file mode 100755 index fb8c38ab4af..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WalImageFile.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# -# The Python Imaging Library. -# $Id$ -# -# WAL file handling -# -# History: -# 2003-04-23 fl created -# -# Copyright (c) 2003 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -# NOTE: This format cannot be automatically recognized, so the reader -# is not registered for use with Image.open(). To open a WEL file, use -# the WalImageFile.open() function instead. - -# This reader is based on the specification available from: -# http://www.flipcode.com/tutorials/tut_q2levels.shtml -# and has been tested with a few sample files found using google. - -import Image - -def i32(c, o=0): - return ord(c[o])+(ord(c[o+1])<<8)+(ord(c[o+2])<<16)+(ord(c[o+3])<<24) - -## -# Load texture from a Quake2 WAL texture file. -#

    -# By default, a Quake2 standard palette is attached to the texture. -# To override the palette, use the putpalette method. -# -# @param filename WAL file name, or an opened file handle. -# @return An image instance. - -def open(filename): - # FIXME: modify to return a WalImageFile instance instead of - # plain Image object ? - - if hasattr(filename, "read"): - fp = filename - else: - import __builtin__ - fp = __builtin__.open(filename, "rb") - - # read header fields - header = fp.read(32+24+32+12) - size = i32(header, 32), i32(header, 36) - offset = i32(header, 40) - - # load pixel data - fp.seek(offset) - - im = Image.fromstring("P", size, fp.read(size[0] * size[1])) - im.putpalette(quake2palette) - - im.format = "WAL" - im.format_description = "Quake2 Texture" - - # strings are null-terminated - im.info["name"] = header[:32].split("\0", 1)[0] - next_name = header[56:56+32].split("\0", 1)[0] - if next_name: - im.info["next_name"] = next_name - - return im - - -quake2palette = ( - # default palette taken from piffo 0.93 by Hans Häggström - "\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" - "\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" - "\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" - "\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" - "\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" - "\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" - "\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" - "\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" - "\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" - "\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" - "\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" - "\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" - "\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" - "\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" - "\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" - "\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" - "\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" - "\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" - "\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" - "\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" - "\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" - "\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" - "\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" - "\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" - "\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" - "\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" - "\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" - "\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" - "\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" - "\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" - "\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" - "\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" - "\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" - "\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" - "\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" - "\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" - "\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" - "\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" - "\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" - "\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" - "\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" - "\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" - "\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" - "\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" - "\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" - "\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" - "\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" - "\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" -) - -if __name__ == "__main__": - im = open("../hacks/sample.wal") - print im.info, im.mode, im.size - im.save("../out.png") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py deleted file mode 100755 index 5191f1e51d5..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/WmfImagePlugin.py +++ /dev/null @@ -1,167 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# WMF stub codec -# -# history: -# 1996-12-14 fl Created -# 2004-02-22 fl Turned into a stub driver -# 2004-02-23 fl Added EMF support -# -# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. -# Copyright (c) Fredrik Lundh 1996. -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.2" - -import Image, ImageFile - -_handler = None - -## -# Install application-specific WMF image handler. -# -# @param handler Handler object. - -def register_handler(handler): - global _handler - _handler = handler - -if hasattr(Image.core, "drawwmf"): - # install default handler (windows only) - - class WmfHandler: - - def open(self, im): - im.mode = "RGB" - self.bbox = im.info["wmf_bbox"] - - def load(self, im): - im.fp.seek(0) # rewind - return Image.fromstring( - "RGB", im.size, - Image.core.drawwmf(im.fp.read(), im.size, self.bbox), - "raw", "BGR", (im.size[0]*3 + 3) & -4, -1 - ) - - register_handler(WmfHandler()) - -# -------------------------------------------------------------------- - -def word(c, o=0): - return ord(c[o]) + (ord(c[o+1])<<8) - -def short(c, o=0): - v = ord(c[o]) + (ord(c[o+1])<<8) - if v >= 32768: - v = v - 65536 - return v - -def dword(c, o=0): - return ord(c[o]) + (ord(c[o+1])<<8) + (ord(c[o+2])<<16) + (ord(c[o+3])<<24) - -def long(c, o=0): - return dword(c, o) - -# -# -------------------------------------------------------------------- -# Read WMF file - -def _accept(prefix): - return ( - prefix[:6] == "\xd7\xcd\xc6\x9a\x00\x00" or - prefix[:4] == "\x01\x00\x00\x00" - ) - -## -# Image plugin for Windows metafiles. - -class WmfStubImageFile(ImageFile.StubImageFile): - - format = "WMF" - format_description = "Windows Metafile" - - def _open(self): - - # check placable header - s = self.fp.read(80) - - if s[:6] == "\xd7\xcd\xc6\x9a\x00\x00": - - # placeable windows metafile - - # get units per inch - inch = word(s, 14) - - # get bounding box - x0 = short(s, 6); y0 = short(s, 8) - x1 = short(s, 10); y1 = short(s, 12) - - # normalize size to 72 dots per inch - size = (x1 - x0) * 72 / inch, (y1 - y0) * 72 / inch - - self.info["wmf_bbox"] = x0, y0, x1, y1 - - self.info["dpi"] = 72 - - # print self.mode, self.size, self.info - - # sanity check (standard metafile header) - if s[22:26] != "\x01\x00\t\x00": - raise SyntaxError("Unsupported WMF file format") - - elif long(s) == 1 and s[40:44] == " EMF": - # enhanced metafile - - # get bounding box - x0 = long(s, 8); y0 = long(s, 12) - x1 = long(s, 16); y1 = long(s, 20) - - # get frame (in 0.01 millimeter units) - frame = long(s, 24), long(s, 28), long(s, 32), long(s, 36) - - # normalize size to 72 dots per inch - size = x1 - x0, y1 - y0 - - # calculate dots per inch from bbox and frame - xdpi = 2540 * (x1 - y0) / (frame[2] - frame[0]) - ydpi = 2540 * (y1 - y0) / (frame[3] - frame[1]) - - self.info["wmf_bbox"] = x0, y0, x1, y1 - - if xdpi == ydpi: - self.info["dpi"] = xdpi - else: - self.info["dpi"] = xdpi, ydpi - - else: - raise SyntaxError("Unsupported file format") - - self.mode = "RGB" - self.size = size - - loader = self._load() - if loader: - loader.open(self) - - def _load(self): - return _handler - - -def _save(im, fp, filename): - if _handler is None or not hasattr("_handler", "save"): - raise IOError("WMF save handler not installed") - _handler.save(im, fp, filename) - -# -# -------------------------------------------------------------------- -# Registry stuff - -Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) -Image.register_save(WmfStubImageFile.format, _save) - -Image.register_extension(WmfStubImageFile.format, ".wmf") -Image.register_extension(WmfStubImageFile.format, ".emf") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py deleted file mode 100755 index ab1fb5d7ac8..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XVThumbImagePlugin.py +++ /dev/null @@ -1,73 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# XV Thumbnail file handler by Charles E. "Gene" Cash -# (gcash@magicnet.net) -# -# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, -# available from ftp://ftp.cis.upenn.edu/pub/xv/ -# -# history: -# 98-08-15 cec created (b/w only) -# 98-12-09 cec added color palette -# 98-12-28 fl added to PIL (with only a few very minor modifications) -# -# To do: -# FIXME: make save work (this requires quantization support) -# - -__version__ = "0.1" - -import string -import Image, ImageFile, ImagePalette - -# standard color palette for thumbnails (RGB332) -PALETTE = "" -for r in range(8): - for g in range(8): - for b in range(4): - PALETTE = PALETTE + (chr((r*255)/7)+chr((g*255)/7)+chr((b*255)/3)) - -## -# Image plugin for XV thumbnail images. - -class XVThumbImageFile(ImageFile.ImageFile): - - format = "XVThumb" - format_description = "XV thumbnail image" - - def _open(self): - - # check magic - s = self.fp.read(6) - if s != "P7 332": - raise SyntaxError, "not an XV thumbnail file" - - # Skip to beginning of next line - self.fp.readline() - - # skip info comments - while 1: - s = self.fp.readline() - if not s: - raise SyntaxError, "Unexpected EOF reading XV thumbnail file" - if s[0] != '#': - break - - # parse header line (already read) - s = string.split(s.strip()) - - self.mode = "P" - self.size = int(s[0]), int(s[1]) - - self.palette = ImagePalette.raw("RGB", PALETTE) - - self.tile = [ - ("raw", (0, 0)+self.size, - self.fp.tell(), (self.mode, 0, 1) - )] - -# -------------------------------------------------------------------- - -Image.register_open("XVThumb", XVThumbImageFile) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py deleted file mode 100755 index a8cf1026dce..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XbmImagePlugin.py +++ /dev/null @@ -1,94 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# XBM File handling -# -# History: -# 1995-09-08 fl Created -# 1996-11-01 fl Added save support -# 1997-07-07 fl Made header parser more tolerant -# 1997-07-22 fl Fixed yet another parser bug -# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) -# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) -# 2004-02-24 fl Allow some whitespace before first #define -# -# Copyright (c) 1997-2004 by Secret Labs AB -# Copyright (c) 1996-1997 by Fredrik Lundh -# -# See the README file for information on usage and redistribution. -# - -__version__ = "0.6" - -import re, string -import Image, ImageFile - -# XBM header -xbm_head = re.compile( - "\s*#define[ \t]+[^_]*_width[ \t]+(?P[0-9]+)[\r\n]+" - "#define[ \t]+[^_]*_height[ \t]+(?P[0-9]+)[\r\n]+" - "(?P" - "#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" - "#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" - ")?" - "[\\000-\\377]*_bits\\[\\]" -) - -def _accept(prefix): - return string.lstrip(prefix)[:7] == "#define" - -## -# Image plugin for X11 bitmaps. - -class XbmImageFile(ImageFile.ImageFile): - - format = "XBM" - format_description = "X11 Bitmap" - - def _open(self): - - m = xbm_head.match(self.fp.read(512)) - - if m: - - xsize = int(m.group("width")) - ysize = int(m.group("height")) - - if m.group("hotspot"): - self.info["hotspot"] = ( - int(m.group("xhot")), int(m.group("yhot")) - ) - - self.mode = "1" - self.size = xsize, ysize - - self.tile = [("xbm", (0, 0)+self.size, m.end(), None)] - - -def _save(im, fp, filename): - - if im.mode != "1": - raise IOError, "cannot write mode %s as XBM" % im.mode - - fp.write("#define im_width %d\n" % im.size[0]) - fp.write("#define im_height %d\n" % im.size[1]) - - hotspot = im.encoderinfo.get("hotspot") - if hotspot: - fp.write("#define im_x_hot %d\n" % hotspot[0]) - fp.write("#define im_y_hot %d\n" % hotspot[1]) - - fp.write("static char im_bits[] = {\n") - - ImageFile._save(im, fp, [("xbm", (0,0)+im.size, 0, None)]) - - fp.write("};\n") - - -Image.register_open("XBM", XbmImageFile, _accept) -Image.register_save("XBM", _save) - -Image.register_extension("XBM", ".xbm") - -Image.register_mime("XBM", "image/xbm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py deleted file mode 100755 index a3f40f02c4e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/XpmImagePlugin.py +++ /dev/null @@ -1,129 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# XPM File handling -# -# History: -# 1996-12-29 fl Created -# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) -# -# Copyright (c) Secret Labs AB 1997-2001. -# Copyright (c) Fredrik Lundh 1996-2001. -# -# See the README file for information on usage and redistribution. -# - - -__version__ = "0.2" - - -import re, string -import Image, ImageFile, ImagePalette - -# XPM header -xpm_head = re.compile("\"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)") - - -def _accept(prefix): - return prefix[:9] == "/* XPM */" - -## -# Image plugin for X11 pixel maps. - -class XpmImageFile(ImageFile.ImageFile): - - format = "XPM" - format_description = "X11 Pixel Map" - - def _open(self): - - if not _accept(self.fp.read(9)): - raise SyntaxError, "not an XPM file" - - # skip forward to next string - while 1: - s = self.fp.readline() - if not s: - raise SyntaxError, "broken XPM file" - m = xpm_head.match(s) - if m: - break - - self.size = int(m.group(1)), int(m.group(2)) - - pal = int(m.group(3)) - bpp = int(m.group(4)) - - if pal > 256 or bpp != 1: - raise ValueError, "cannot read this XPM file" - - # - # load palette description - - palette = ["\0\0\0"] * 256 - - for i in range(pal): - - s = self.fp.readline() - if s[-2:] == '\r\n': - s = s[:-2] - elif s[-1:] in '\r\n': - s = s[:-1] - - c = ord(s[1]) - s = string.split(s[2:-2]) - - for i in range(0, len(s), 2): - - if s[i] == "c": - - # process colour key - rgb = s[i+1] - if rgb == "None": - self.info["transparency"] = c - elif rgb[0] == "#": - # FIXME: handle colour names (see ImagePalette.py) - rgb = string.atoi(rgb[1:], 16) - palette[c] = chr((rgb >> 16) & 255) +\ - chr((rgb >> 8) & 255) +\ - chr(rgb & 255) - else: - # unknown colour - raise ValueError, "cannot read this XPM file" - break - - else: - - # missing colour key - raise ValueError, "cannot read this XPM file" - - self.mode = "P" - self.palette = ImagePalette.raw("RGB", string.join(palette, "")) - - self.tile = [("raw", (0, 0)+self.size, self.fp.tell(), ("P", 0, 1))] - - def load_read(self, bytes): - - # - # load all image data in one chunk - - xsize, ysize = self.size - - s = [None] * ysize - - for i in range(ysize): - s[i] = string.ljust(self.fp.readline()[1:xsize+1], xsize) - - self.fp = None - - return string.join(s, "") - -# -# Registry - -Image.register_open("XPM", XpmImageFile, _accept) - -Image.register_extension("XPM", ".xpm") - -Image.register_mime("XPM", "image/xpm") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py deleted file mode 100755 index ed54d26f66e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# -# The Python Imaging Library. -# $Id$ -# -# package placeholder -# -# Copyright (c) 1999 by Secret Labs AB. -# -# See the README file for information on usage and redistribution. -# - -# ;-) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imaging.pyd b/tools/HitboxExpander/third_party/Imaging-1.1.7/PIL/_imaging.pyd deleted file mode 100755 index 22ee66c119717b931306da63a289e09754eeefd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193536 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 z%0A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 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/README b/tools/HitboxExpander/third_party/Imaging-1.1.7/README deleted file mode 100755 index 458975b3bac..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/README +++ /dev/null @@ -1,300 +0,0 @@ -The Python Imaging Library -$Id$ - -Release 1.1.7 (November 15, 2009) - -==================================================================== -The Python Imaging Library 1.1.7 -==================================================================== - -Contents --------- - -+ Introduction -+ Support Options - - Commercial support - - Free support -+ Software License -+ Build instructions (all platforms) - - Additional notes for Mac OS X - - Additional notes for Windows - --------------------------------------------------------------------- -Introduction --------------------------------------------------------------------- - -The Python Imaging Library (PIL) adds image processing capabilities -to your Python environment. This library provides extensive file -format support, an efficient internal representation, and powerful -image processing capabilities. - -This source kit has been built and tested with Python 2.0 and newer, -on Windows, Mac OS X, and major Unix platforms. Large parts of the -library also work on 1.5.2 and 1.6. - -The main distribution site for this software is: - - http://www.pythonware.com/products/pil/ - -That site also contains information about free and commercial support -options, PIL add-ons, answers to frequently asked questions, and more. - - -Development versions (alphas, betas) are available here: - - http://effbot.org/downloads/ - - -The PIL handbook is not included in this distribution; to get the -latest version, check: - - http://www.pythonware.com/library/ - http://effbot.org/books/imagingbook/ (drafts) - - -For installation and licensing details, see below. - - --------------------------------------------------------------------- -Support Options --------------------------------------------------------------------- - -+ Commercial Support - -Secret Labs (PythonWare) offers support contracts for companies using -the Python Imaging Library in commercial applications, and in mission- -critical environments. The support contract includes technical support, -bug fixes, extensions to the PIL library, sample applications, and more. - -For the full story, check: - - http://www.pythonware.com/products/pil/support.htm - - -+ Free Support - -For support and general questions on the Python Imaging Library, send -e-mail to the Image SIG mailing list: - - image-sig@python.org - -You can join the Image SIG by sending a mail to: - - image-sig-request@python.org - -Put "subscribe" in the message body to automatically subscribe to the -list, or "help" to get additional information. Alternatively, you can -send your questions to the Python mailing list, python-list@python.org, -or post them to the newsgroup comp.lang.python. DO NOT SEND SUPPORT -QUESTIONS TO PYTHONWARE ADDRESSES. - - --------------------------------------------------------------------- -Software License --------------------------------------------------------------------- - -The Python Imaging Library is - -Copyright (c) 1997-2009 by Secret Labs AB -Copyright (c) 1995-2009 by Fredrik Lundh - -By obtaining, using, and/or copying this software and/or its -associated documentation, you agree that you have read, understood, -and will comply with the following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -associated documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appears in all -copies, and that both that copyright notice and this permission notice -appear in supporting documentation, and that the name of Secret Labs -AB or the author not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR -ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - --------------------------------------------------------------------- -Build instructions (all platforms) --------------------------------------------------------------------- - -For a list of changes in this release, see the CHANGES document. - -0. If you're in a hurry, try this: - - $ tar xvfz Imaging-1.1.7.tar.gz - $ cd Imaging-1.1.7 - $ python setup.py install - - If you prefer to know what you're doing, read on. - - -1. Prerequisites. - - If you need any of the features described below, make sure you - have the necessary libraries before building PIL. - - feature library - ----------------------------------------------------------------- - JPEG support libjpeg (6a or 6b) - - http://www.ijg.org - http://www.ijg.org/files/jpegsrc.v6b.tar.gz - ftp://ftp.uu.net/graphics/jpeg/ - - PNG support zlib (1.2.3 or later is recommended) - - http://www.gzip.org/zlib/ - - OpenType/TrueType freetype2 (2.3.9 or later is recommended) - support - http://www.freetype.org - http://freetype.sourceforge.net - - CMS support littleCMS (1.1.5 or later is recommended) - support - http://www.littlecms.com/ - - If you have a recent Linux version, the libraries provided with the - operating system usually work just fine. If some library is - missing, installing a prebuilt version (jpeg-devel, zlib-devel, - etc) is usually easier than building from source. For example, for - Ubuntu 9.10 (karmic), you can install the following libraries: - - sudo apt-get install libjpeg62-dev - sudo apt-get install zlib1g-dev - sudo apt-get install libfreetype6-dev - sudo apt-get install liblcms1-dev - - If you're using Mac OS X, you can use the 'fink' tool to install - missing libraries (also see the Mac OS X section below). - - Similar tools are available for many other platforms. - - -2. To build under Python 1.5.2, you need to install the stand-alone - version of the distutils library: - - http://www.python.org/sigs/distutils-sig/download.html - - You can fetch distutils 1.0.2 from the Python source repository: - - svn export http://svn.python.org/projects/python/tags/Distutils-1_0_2/Lib/distutils/ - - For newer releases, the distutils library is included in the - Python standard library. - - NOTE: Version 1.1.7 is not fully compatible with 1.5.2. Some - more recent additions to the library may not work, but the core - functionality is available. - - -3. If you didn't build Python from sources, make sure you have - Python's build support files on your machine. If you've down- - loaded a prebuilt package (e.g. a Linux RPM), you probably - need additional developer packages. Look for packages named - "python-dev", "python-devel", or similar. For example, for - Ubuntu 9.10 (karmic), use the following command: - - sudo apt-get install python-dev - - -4. When you have everything you need, unpack the PIL distribution - (the file Imaging-1.1.7.tar.gz) in a suitable work directory: - - $ cd MyExtensions # example - $ gunzip Imaging-1.1.7.tar.gz - $ tar xvf Imaging-1.1.7.tar - - -5. Build the library. We recommend that you do an in-place build, - and run the self test before installing. - - $ cd Imaging-1.1.7 - $ python setup.py build_ext -i - $ python selftest.py - - During the build process, the setup.py will display a summary - report that lists what external components it found. The self- - test will display a similar report, with what external components - the tests found in the actual build files: - - ---------------------------------------------------------------- - PIL 1.1.7 SETUP SUMMARY - ---------------------------------------------------------------- - *** TKINTER support not available (Tcl/Tk 8.5 libraries needed) - --- JPEG support available - --- ZLIB (PNG/ZIP) support available - --- FREETYPE support available - ---------------------------------------------------------------- - - Make sure that the optional components you need are included. - - If the build script won't find a given component, you can edit the - setup.py file and set the appropriate ROOT variable. For details, - see instructions in the file. - - If the build script finds the component, but the tests cannot - identify it, try rebuilding *all* modules: - - $ python setup.py clean - $ python setup.py build_ext -i - - -6. If the setup.py and selftest.py commands finish without any - errors, you're ready to install the library: - - $ python setup.py install - - (depending on how Python has been installed on your machine, - you might have to log in as a superuser to run the 'install' - command, or use the 'sudo' command to run 'install'.) - - --------------------------------------------------------------------- -Additional notes for Mac OS X --------------------------------------------------------------------- - -On Mac OS X you will usually install additional software such as -libjpeg or freetype with the "fink" tool, and then it ends up in -"/sw". If you have installed the libraries elsewhere, you may have -to tweak the "setup.py" file before building. - - --------------------------------------------------------------------- -Additional notes for Windows --------------------------------------------------------------------- - -On Windows, you need to tweak the ROOT settings in the "setup.py" -file, to make it find the external libraries. See comments in the -file for details. - -Make sure to build PIL and the external libraries with the same -runtime linking options as was used for the Python interpreter -(usually /MD, under Visual Studio). - - -Note that most Python distributions for Windows include libraries -compiled for Microsoft Visual Studio. You can get the free Express -edition of Visual Studio from: - - http://www.microsoft.com/Express/ - -To build extensions using other tool chains, see the "Using -non-Microsoft compilers on Windows" section in the distutils handbook: - - http://www.python.org/doc/current/inst/non-ms-compilers.html - -For additional information on how to build extensions using the -popular MinGW compiler, see: - - http://mingw.org (compiler) - http://sebsauvage.net/python/mingw.html (build instructions) - http://sourceforge.net/projects/gnuwin32 (prebuilt libraries) - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES deleted file mode 100755 index 95c14697e83..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/CHANGES +++ /dev/null @@ -1,34 +0,0 @@ - -from V1.0 to V2.0 - -_sane.c: - - Values for option constraints are correctly translated to floats - if value type is TYPE_FIXED for SANE_CONSTRAINT_RANGE and - SANE_CONSTRAINT_WORD_LIST - - added constants INFO_INEXACT, INFO_RELOAD_OPTIONS, - INFO_RELOAD_PARAMS (possible return values of set_option()) - to module dictionnary. - - removed additional return variable 'i' from SaneDev_get_option(), - because it is only set when SANE_ACTION_SET_VALUE is used. - - scanDev.get_parameters() now returns the scanner mode as 'format', - no more the typical PIL codes. So 'L' became 'gray', 'RGB' is now - 'color', 'R' is 'red', 'G' is 'green', 'B' is 'red'. This matches - the way scanDev.mode is set. - This should be the only incompatibility vs. version 1.0. - -sane.py - - ScanDev got new method __load_option_dict() called from __init__() - and from __setattr__() if backend reported that the frontend should - reload the options. - - Nice human-readable __repr__() method added for class Option - - if __setattr__ (i.e. set_option) reports that all other options - have to be reloaded due to a change in the backend then they are reloaded. - - due to the change in SaneDev_get_option() only the 'value' is - returned from get_option(). - - in __setattr__ integer values are automatically converted to floats - if SANE backend expects SANE_FIXED (i.e. fix-point float) - - The scanner options can now directly be accessed via scanDev[optionName] - instead scanDev.opt[optionName]. (The old way still works). - -V1.0: - A.M. Kuchling's original pysane package. \ No newline at end of file diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README deleted file mode 100755 index ddff0cf2479..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/README +++ /dev/null @@ -1,22 +0,0 @@ - -Python SANE module V1.1 (30 Sep. 2004) - -The SANE module provides an interface to the SANE scanner and frame -grabber interface for Linux. This module was contributed by Andrew -Kuchling and is extended and currently maintained by Ralph Heinkel -(rheinkel-at-email.de). If you write to me please make sure to have the -word 'SANE' or 'sane' in the subject of your mail, otherwise it might -be classified as spam in the future. - - -To build this module, type (in the Sane directory): - - python setup.py build - -In order to install the module type: - - python setup.py install - - -For some basic documentation please look at the file sanedoc.txt -The two demo_*.py scripts give basic examples on how to use the software. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c deleted file mode 100755 index 21e542fa512..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/_sane.c +++ /dev/null @@ -1,1325 +0,0 @@ -/*********************************************************** -(C) Copyright 2003 A.M. Kuchling. All Rights Reserved -(C) Copyright 2004 A.M. Kuchling, Ralph Heinkel All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of A.M. Kuchling and -Ralph Heinkel not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. - -A.M. KUCHLING, R.H. HEINKEL DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -/* SaneDev objects */ - -#include "Python.h" -#include "Imaging.h" -#include - -#include - -static PyObject *ErrorObject; - -typedef struct { - PyObject_HEAD - SANE_Handle h; -} SaneDevObject; - -#ifdef WITH_THREAD -PyThreadState *_save; -#endif - -/* Raise a SANE exception */ -PyObject * -PySane_Error(SANE_Status st) -{ - const char *string; - - if (st==SANE_STATUS_GOOD) {Py_INCREF(Py_None); return (Py_None);} - string=sane_strstatus(st); - PyErr_SetString(ErrorObject, string); - return NULL; -} - -staticforward PyTypeObject SaneDev_Type; - -#define SaneDevObject_Check(v) ((v)->ob_type == &SaneDev_Type) - -static SaneDevObject * -newSaneDevObject(void) -{ - SaneDevObject *self; - self = PyObject_NEW(SaneDevObject, &SaneDev_Type); - if (self == NULL) - return NULL; - self->h=NULL; - return self; -} - -/* SaneDev methods */ - -static void -SaneDev_dealloc(SaneDevObject *self) -{ - if (self->h) sane_close(self->h); - self->h=NULL; - PyObject_DEL(self); -} - -static PyObject * -SaneDev_close(SaneDevObject *self, PyObject *args) -{ - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (self->h) sane_close(self->h); - self->h=NULL; - Py_INCREF(Py_None); - return (Py_None); -} - -static PyObject * -SaneDev_get_parameters(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - SANE_Parameters p; - char *format="unknown format"; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - Py_BEGIN_ALLOW_THREADS - st=sane_get_parameters(self->h, &p); - Py_END_ALLOW_THREADS - - if (st) return PySane_Error(st); - switch (p.format) - { - case(SANE_FRAME_GRAY): format="gray"; break; - case(SANE_FRAME_RGB): format="color"; break; - case(SANE_FRAME_RED): format="red"; break; - case(SANE_FRAME_GREEN): format="green"; break; - case(SANE_FRAME_BLUE): format="blue"; break; - } - - return Py_BuildValue("si(ii)ii", format, p.last_frame, p.pixels_per_line, - p.lines, p.depth, p.bytes_per_line); -} - - -static PyObject * -SaneDev_fileno(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - SANE_Int fd; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - st=sane_get_select_fd(self->h, &fd); - if (st) return PySane_Error(st); - return PyInt_FromLong(fd); -} - -static PyObject * -SaneDev_start(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - /* sane_start can take several seconds, if the user initiates - a new scan, while the scan head of a flatbed scanner moves - back to the start position after finishing a previous scan. - Hence it is worth to allow threads here. - */ - Py_BEGIN_ALLOW_THREADS - st=sane_start(self->h); - Py_END_ALLOW_THREADS - if (st) return PySane_Error(st); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject * -SaneDev_cancel(SaneDevObject *self, PyObject *args) -{ - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - sane_cancel(self->h); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject * -SaneDev_get_options(SaneDevObject *self, PyObject *args) -{ - const SANE_Option_Descriptor *d; - PyObject *list, *value; - int i=1; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - if (!(list = PyList_New(0))) - return NULL; - - do - { - d=sane_get_option_descriptor(self->h, i); - if (d!=NULL) - { - PyObject *constraint=NULL; - int j; - - switch (d->constraint_type) - { - case(SANE_CONSTRAINT_NONE): - Py_INCREF(Py_None); constraint=Py_None; break; - case(SANE_CONSTRAINT_RANGE): - if (d->type == SANE_TYPE_INT) - constraint=Py_BuildValue("iii", d->constraint.range->min, - d->constraint.range->max, - d->constraint.range->quant); - else - constraint=Py_BuildValue("ddd", - SANE_UNFIX(d->constraint.range->min), - SANE_UNFIX(d->constraint.range->max), - SANE_UNFIX(d->constraint.range->quant)); - break; - case(SANE_CONSTRAINT_WORD_LIST): - constraint=PyList_New(d->constraint.word_list[0]); - if (d->type == SANE_TYPE_INT) - for (j=1; j<=d->constraint.word_list[0]; j++) - PyList_SetItem(constraint, j-1, - PyInt_FromLong(d->constraint.word_list[j])); - else - for (j=1; j<=d->constraint.word_list[0]; j++) - PyList_SetItem(constraint, j-1, - PyFloat_FromDouble(SANE_UNFIX(d->constraint.word_list[j]))); - break; - case(SANE_CONSTRAINT_STRING_LIST): - constraint=PyList_New(0); - for(j=0; d->constraint.string_list[j]!=NULL; j++) - PyList_Append(constraint, - PyString_FromString(d->constraint.string_list[j])); - break; - } - value=Py_BuildValue("isssiiiiO", i, d->name, d->title, d->desc, - d->type, d->unit, d->size, d->cap, constraint); - PyList_Append(list, value); - } - i++; - } while (d!=NULL); - return list; -} - -static PyObject * -SaneDev_get_option(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - const SANE_Option_Descriptor *d; - PyObject *value=NULL; - int n; - void *v; - - if (!PyArg_ParseTuple(args, "i", &n)) - { - return NULL; - } - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - d=sane_get_option_descriptor(self->h, n); - v=malloc(d->size+1); - st=sane_control_option(self->h, n, SANE_ACTION_GET_VALUE, - v, NULL); - - if (st) - { - free(v); - return PySane_Error(st); - } - - switch(d->type) - { - case(SANE_TYPE_BOOL): - case(SANE_TYPE_INT): - value=Py_BuildValue("i", *( (SANE_Int*)v) ); - break; - case(SANE_TYPE_FIXED): - value=Py_BuildValue("d", SANE_UNFIX((*((SANE_Fixed*)v))) ); - break; - case(SANE_TYPE_STRING): - value=Py_BuildValue("s", v); - break; - case(SANE_TYPE_BUTTON): - case(SANE_TYPE_GROUP): - value=Py_BuildValue("O", Py_None); - break; - } - - free(v); - return value; -} - -static PyObject * -SaneDev_set_option(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - const SANE_Option_Descriptor *d; - SANE_Int i; - PyObject *value; - int n; - void *v; - - if (!PyArg_ParseTuple(args, "iO", &n, &value)) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - d=sane_get_option_descriptor(self->h, n); - v=malloc(d->size+1); - - switch(d->type) - { - case(SANE_TYPE_BOOL): - if (!PyInt_Check(value)) - { - PyErr_SetString(PyExc_TypeError, "SANE_BOOL requires an integer"); - free(v); - return NULL; - } - /* fall through */ - case(SANE_TYPE_INT): - if (!PyInt_Check(value)) - { - PyErr_SetString(PyExc_TypeError, "SANE_INT requires an integer"); - free(v); - return NULL; - } - *( (SANE_Int*)v) = PyInt_AsLong(value); - break; - case(SANE_TYPE_FIXED): - if (!PyFloat_Check(value)) - { - PyErr_SetString(PyExc_TypeError, "SANE_FIXED requires a floating point number"); - free(v); - return NULL; - } - *( (SANE_Fixed*)v) = SANE_FIX(PyFloat_AsDouble(value)); - break; - case(SANE_TYPE_STRING): - if (!PyString_Check(value)) - { - PyErr_SetString(PyExc_TypeError, "SANE_STRING requires a string"); - free(v); - return NULL; - } - strncpy(v, PyString_AsString(value), d->size-1); - ((char*)v)[d->size-1] = 0; - break; - case(SANE_TYPE_BUTTON): - case(SANE_TYPE_GROUP): - break; - } - - st=sane_control_option(self->h, n, SANE_ACTION_SET_VALUE, - v, &i); - if (st) {free(v); return PySane_Error(st);} - - free(v); - return Py_BuildValue("i", i); -} - -static PyObject * -SaneDev_set_auto_option(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - const SANE_Option_Descriptor *d; - SANE_Int i; - int n; - - if (!PyArg_ParseTuple(args, "i", &n)) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - d=sane_get_option_descriptor(self->h, n); - st=sane_control_option(self->h, n, SANE_ACTION_SET_AUTO, - NULL, &i); - if (st) {return PySane_Error(st);} - - return Py_BuildValue("i", i); - } - -#define READSIZE 32768 - -static PyObject * -SaneDev_snap(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - /* The buffer should be a multiple of 3 in size, so each sane_read - operation will return an integral number of RGB triples. */ - SANE_Byte buffer[READSIZE]; /* XXX how big should the buffer be? */ - SANE_Int len, lastlen; - Imaging im; - SANE_Parameters p; - int px, py, remain, cplen, bufpos, padbytes; - long L; - char errmsg[80]; - union - { char c[2]; - INT16 i16; - } - endian; - PyObject *pyNoCancel = NULL; - int noCancel = 0; - - endian.i16 = 1; - - if (!PyArg_ParseTuple(args, "l|O", &L, &pyNoCancel)) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - im=(Imaging)L; - - if (pyNoCancel) - noCancel = PyObject_IsTrue(pyNoCancel); - - st=SANE_STATUS_GOOD; px=py=0; - /* xxx not yet implemented - - handscanner support (i.e., unknown image length during start) - - generally: move the functionality from method snap in sane.py - down here -- I don't like this cross-dependency. - we need to call sane_get_parameters here, and we can create - the result Image object here. - */ - - Py_UNBLOCK_THREADS - sane_get_parameters(self->h, &p); - if (p.format == SANE_FRAME_GRAY) - { - switch (p.depth) - { - case 1: - remain = p.bytes_per_line * im->ysize; - padbytes = p.bytes_per_line - (im->xsize+7)/8; - bufpos = 0; - lastlen = len = 0; - while (st!=SANE_STATUS_EOF && py < im->ysize) - { - while (len > 0 && py < im->ysize) - { - int i, j, k; - j = buffer[bufpos++]; - k = 0x80; - for (i = 0; i < 8 && px < im->xsize; i++) - { - im->image8[py][px++] = (k&j) ? 0 : 0xFF; - k = k >> 1; - } - len--; - if (px >= im->xsize) - { - bufpos += padbytes; - len -= padbytes; - py++; - px = 0; - } - } - st=sane_read(self->h, buffer, - remainh); - Py_BLOCK_THREADS - return PySane_Error(st); - } - bufpos -= lastlen; - lastlen = len; - remain -= len; - /* skip possible pad bytes at the start of the buffer */ - len -= bufpos; - } - break; - case 8: - remain = p.bytes_per_line * im->ysize; - padbytes = p.bytes_per_line - im->xsize; - bufpos = 0; - len = 0; - while (st!=SANE_STATUS_EOF && py < im->ysize) - { - while (len > 0 && py < im->ysize) - { - cplen = len; - if (px + cplen >= im->xsize) - cplen = im->xsize - px; - memcpy(&im->image8[py][px], &buffer[bufpos], cplen); - len -= cplen; - bufpos += cplen; - px += cplen; - if (px >= im->xsize) - { - px = 0; - py++; - bufpos += padbytes; - len -= padbytes; - } - } - bufpos = -len; - - st=sane_read(self->h, buffer, - remainh); - Py_BLOCK_THREADS - return PySane_Error(st); - } - remain -= len; - len -= bufpos; - } - break; - case 16: - remain = p.bytes_per_line * im->ysize; - padbytes = p.bytes_per_line - 2 * im->xsize; - bufpos = endian.c[0]; - lastlen = len = 0; - while (st!=SANE_STATUS_EOF && py < im->ysize) - { - while (len > 0 && py < im->ysize) - { - im->image8[py][px++] = buffer[bufpos]; - bufpos += 2; - len -= 2; - if (px >= im->xsize) - { - bufpos += padbytes; - len -= padbytes; - py++; - px = 0; - } - } - st=sane_read(self->h, buffer, - remainh); - Py_BLOCK_THREADS - return PySane_Error(st); - } - remain -= len; - bufpos -= lastlen; - lastlen = len; - len -= bufpos; - } - break; - default: - /* other depths are not formally "illegal" according to the - Sane API, but it's agreed by Sane developers that other - depths than 1, 8, 16 should not be used - */ - sane_cancel(self->h); - Py_BLOCK_THREADS - snprintf(errmsg, 80, "unsupported pixel depth: %i", p.depth); - PyErr_SetString(ErrorObject, errmsg); - return NULL; - } - } - else if (p.format == SANE_FRAME_RGB) - { - int incr, color, pxs, pxmax, bit, val, mask; - switch (p.depth) - { - case 1: - remain = p.bytes_per_line * im->ysize; - padbytes = p.bytes_per_line - ((im->xsize+7)/8) * 3; - bufpos = 0; - len = 0; - lastlen = 0; - pxmax = 4 * im->xsize; - while (st!=SANE_STATUS_EOF && py < im->ysize) - { - pxs = px; - for (color = 0; color < 3; color++) - { - while (len <= 0 && st == SANE_STATUS_GOOD) - { - st=sane_read(self->h, buffer, - remainh); - Py_BLOCK_THREADS - return PySane_Error(st); - } - bufpos -= lastlen; - remain -= len; - lastlen = len; - /* skip possible pad bytes at the start of the buffer */ - len -= bufpos; - } - if (st == SANE_STATUS_EOF) break; - pxs = px; - val = buffer[bufpos++]; - len--; - mask = 0x80; - for (bit = 0; (bit < 8) && (px < pxmax); bit++) - { - ((UINT8**)(im->image32))[py][px] = (val&mask) ? 0xFF : 0; - mask = mask >> 1; - px += 4; - } - pxs++; - px = pxs; - } - if (st == SANE_STATUS_EOF) - break; - for (bit = 0; bit < 8 && px < pxmax; bit++) - { - ((UINT8**)(im->image32))[py][px] = 0; - px += 4; - } - px -= 3; - if (px >= pxmax) - { - bufpos += padbytes; - len -= padbytes; - py++; - px = 0; - } - } - break; - case 8: - case 16: - if (p.depth == 8) - { - padbytes = p.bytes_per_line - 3 * im->xsize; - bufpos = 0; - incr = 1; - } - else - { - padbytes = p.bytes_per_line - 6 * im->xsize; - bufpos = endian.c[0]; - incr = 2; - } - remain = p.bytes_per_line * im->ysize; - len = 0; - lastlen = 0; - pxmax = 4 * im->xsize; - /* probably not very efficient. But we have to deal with these - possible conditions: - - we may have padding bytes at the end of a scan line - - the number of bytes read with sane_read may be smaller - than the number of pad bytes - - the buffer may become empty after setting any of the - red/green/blue pixel values - - */ - while (st != SANE_STATUS_EOF && py < im->ysize) - { - for (color = 0; color < 3; color++) - { - while (len <= 0 && st == SANE_STATUS_GOOD) - { - bufpos -= lastlen; - if (remain == 0) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - PyErr_SetString(ErrorObject, "internal _sane error: premature end of scan"); - return NULL; - } - st = sane_read(self->h, buffer, - remain<(READSIZE) ? remain : (READSIZE), &len); - if (st && (st!=SANE_STATUS_EOF)) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - return PySane_Error(st); - } - lastlen = len; - remain -= len; - len -= bufpos; - } - if (st == SANE_STATUS_EOF) break; - ((UINT8**)(im->image32))[py][px++] = buffer[bufpos]; - bufpos += incr; - len -= incr; - } - if (st == SANE_STATUS_EOF) break; - - ((UINT8**)(im->image32))[py][px++] = 0; - - if (px >= pxmax) - { - px = 0; - py++; - bufpos += padbytes; - len -= padbytes; - } - } - break; - default: - Py_BLOCK_THREADS - sane_cancel(self->h); - snprintf(errmsg, 80, "unsupported pixel depth: %i", p.depth); - PyErr_SetString(ErrorObject, errmsg); - return NULL; - } - - } - else /* should be SANE_FRAME_RED, GREEN or BLUE */ - { - int lastlen, pxa, pxmax, offset, incr, frame_count = 0; - /* at least the Sane test backend behaves a bit weird, if - it returns "premature EOF" for sane_read, i.e., if the - option "return value of sane_read" is set to SANE_STATUS_EOF. - In this case, the test backend does not advance to the next frame, - so p.last_frame will never be set... - So let's count the number of frames we try to acquire - */ - while (!p.last_frame && frame_count < 4) - { - frame_count++; - st = sane_get_parameters(self->h, &p); - if (st) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - return PySane_Error(st); - } - remain = p.bytes_per_line * im->ysize; - bufpos = 0; - len = 0; - lastlen = 0; - py = 0; - switch (p.format) - { - case SANE_FRAME_RED: - offset = 0; - break; - case SANE_FRAME_GREEN: - offset = 1; - break; - case SANE_FRAME_BLUE: - offset = 2; - break; - default: - sane_cancel(self->h); - Py_BLOCK_THREADS - snprintf(errmsg, 80, "unknown/invalid frame format: %i", p.format); - PyErr_SetString(ErrorObject, errmsg); - return NULL; - } - px = offset; - pxa = 3; - pxmax = im->xsize * 4; - switch (p.depth) - { - case 1: - padbytes = p.bytes_per_line - (im->xsize+7)/8; - st = SANE_STATUS_GOOD; - while (st != SANE_STATUS_EOF && py < im->ysize) - { - while (len > 0) - { - int bit, mask, val; - val = buffer[bufpos++]; len--; - mask = 0x80; - for (bit = 0; bit < 8 && px < pxmax; bit++) - { - ((UINT8**)(im->image32))[py][px] - = val&mask ? 0xFF : 0; - ((UINT8**)(im->image32))[py][pxa] = 0; - px += 4; - pxa += 4; - mask = mask >> 1; - } - - if (px >= pxmax) - { - px = offset; - pxa = 3; - py++; - bufpos += padbytes; - len -= padbytes; - } - } - while (len <= 0 && st == SANE_STATUS_GOOD && remain > 0) - { - bufpos -= lastlen; - st = sane_read(self->h, buffer, - remain<(READSIZE) ? remain : (READSIZE), &len); - if (st && (st!=SANE_STATUS_EOF)) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - return PySane_Error(st); - } - remain -= len; - lastlen = len; - len -= bufpos; - } - } - break; - case 8: - case 16: - if (p.depth == 8) - { - padbytes = p.bytes_per_line - im->xsize; - incr = 1; - } - else - { - padbytes = p.bytes_per_line - 2 * im->xsize; - incr = 2; - bufpos = endian.c[0]; - } - st = SANE_STATUS_GOOD; - while (st != SANE_STATUS_EOF && py < im->ysize) - { - while (len <= 0) - { - bufpos -= lastlen; - if (remain == 0) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - PyErr_SetString(ErrorObject, "internal _sane error: premature end of scan"); - return NULL; - } - st = sane_read(self->h, buffer, - remain<(READSIZE) ? remain : (READSIZE), &len); - if (st && (st!=SANE_STATUS_EOF)) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - return PySane_Error(st); - } - if (st == SANE_STATUS_EOF) - break; - lastlen = len; - remain -= len; - if (bufpos >= len) - len = 0; - else - len -= bufpos; - } - if (st == SANE_STATUS_EOF) - break; - ((UINT8**)(im->image32))[py][px] = buffer[bufpos]; - ((UINT8**)(im->image32))[py][pxa] = 0; - bufpos += incr; - len -= incr; - px += 4; - pxa += 4; - - if (px >= pxmax) - { - px = offset; - pxa = 3; - py++; - bufpos += padbytes; - len -= padbytes; - } - } - break; - default: - sane_cancel(self->h); - Py_BLOCK_THREADS - snprintf(errmsg, 80, "unsupported pixel depth: %i", p.depth); - PyErr_SetString(ErrorObject, errmsg); - return NULL; - } - if (!p.last_frame) - { - /* all sane_read calls in the above loop may return - SANE_STATUS_GOOD, but the backend may need another sane_read - call which returns SANE_STATUS_EOF in order to start - a new frame. - */ - do { - st = sane_read(self->h, buffer, READSIZE, &len); - } - while (st == SANE_STATUS_GOOD); - if (st != SANE_STATUS_EOF) - { - Py_BLOCK_THREADS - sane_cancel(self->h); - return PySane_Error(st); - } - - st = sane_start(self->h); - if (st) - { - Py_BLOCK_THREADS - return PySane_Error(st); - } - } - } - } - /* enforce SANE_STATUS_EOF. Can be necessary for ADF scans for some backends */ - do { - st = sane_read(self->h, buffer, READSIZE, &len); - } - while (st == SANE_STATUS_GOOD); - if (st != SANE_STATUS_EOF) - { - sane_cancel(self->h); - Py_BLOCK_THREADS - return PySane_Error(st); - } - - if (!noCancel) - sane_cancel(self->h); - Py_BLOCK_THREADS - Py_INCREF(Py_None); - return Py_None; -} - - -#ifdef WITH_NUMARRAY - -#include "numarray/libnumarray.h" - -/* this global variable is set to 1 in 'init_sane()' after successfully - importing the numarray module. */ -int NUMARRAY_IMPORTED = 0; - -static PyObject * -SaneDev_arr_snap(SaneDevObject *self, PyObject *args) -{ - SANE_Status st; - SANE_Byte buffer[READSIZE]; - SANE_Int len; - SANE_Parameters p; - - PyArrayObject *pyArr = NULL; - NumarrayType arrType; - int line, line_index, buffer_index, remain_bytes_line, num_pad_bytes; - int cp_num_bytes, total_remain, bpp, arr_bytes_per_line; - int pixels_per_line = -1; - char errmsg[80]; - - if (!NUMARRAY_IMPORTED) - { - PyErr_SetString(ErrorObject, "numarray package not available"); - return NULL; - } - - if (!PyArg_ParseTuple(args, "|i", &pixels_per_line)) - return NULL; - if (self->h==NULL) - { - PyErr_SetString(ErrorObject, "SaneDev object is closed"); - return NULL; - } - - sane_get_parameters(self->h, &p); - if (p.format != SANE_FRAME_GRAY) - { - sane_cancel(self->h); - snprintf(errmsg, 80, "numarray only supports gray-scale images"); - PyErr_SetString(ErrorObject, errmsg); - return NULL; - } - - if (p.depth == 8) - { - bpp=1; /* bytes-per-pixel */ - arrType = tUInt8; - } - else if (p.depth == 16) - { - bpp=2; /* bytes-per-pixel */ - arrType = tUInt16; - } - else - { - sane_cancel(self->h); - snprintf(errmsg, 80, "arrsnap: unsupported pixel depth: %i", p.depth); - PyErr_SetString(ErrorObject, errmsg); - return NULL; - } - - if (pixels_per_line < 1) - /* The user can choose a smaller result array than the actual scan */ - pixels_per_line = p.pixels_per_line; - else - if (pixels_per_line > p.pixels_per_line) - { - PyErr_SetString(ErrorObject,"given pixels_per_line too big"); - return NULL; - } - /* important: NumArray have indices like (y, x) !! */ - if (!(pyArr = NA_NewArray(NULL, arrType, 2, p.lines, pixels_per_line))) - { - PyErr_SetString(ErrorObject, "failed to create NumArray object"); - return NULL; - } - - arr_bytes_per_line = pixels_per_line * bpp; - st=SANE_STATUS_GOOD; -#ifdef WRITE_PGM - FILE *fp; - fp = fopen("sane_p5.pgm", "w"); - fprintf(fp, "P5\n%d %d\n%d\n", p.pixels_per_line, - p.lines, (int) pow(2.0, (double) p.depth)-1); -#endif - line_index = line = 0; - remain_bytes_line = arr_bytes_per_line; - total_remain = p.bytes_per_line * p.lines; - num_pad_bytes = p.bytes_per_line - arr_bytes_per_line; - - while (st!=SANE_STATUS_EOF) - { - Py_BEGIN_ALLOW_THREADS - st = sane_read(self->h, buffer, - READSIZE < total_remain ? READSIZE : total_remain, &len); - Py_END_ALLOW_THREADS -#ifdef WRITE_PGM - printf("p5_write: read %d of %d\n", len, READSIZE); - fwrite(buffer, 1, len, fp); -#endif - - buffer_index = 0; - total_remain -= len; - - while (len > 0) - { - /* copy at most the number of bytes that fit into (the rest of) - one line: */ - cp_num_bytes = (len > remain_bytes_line ? remain_bytes_line : len); - remain_bytes_line -= cp_num_bytes; - len -= cp_num_bytes; -#ifdef DEBUG - printf("copying %d bytes from b_idx %d to d_idx %d\n", - cp_num_bytes, buffer_index, - line * arr_bytes_per_line + line_index); - printf("len is now %d\n", len); -#endif - memcpy(pyArr->data + line * arr_bytes_per_line + line_index, - buffer + buffer_index, cp_num_bytes); - - buffer_index += cp_num_bytes; - if (remain_bytes_line ==0) - { - /* The line has been completed, so reinitialize remain_bytes_line - increase the line counter, and reset line_index */ -#ifdef DEBUG - printf("line %d full, skipping %d bytes\n",line,num_pad_bytes); -#endif - remain_bytes_line = arr_bytes_per_line; - line++; - line_index = 0; - /* Skip the number of bytes in the input stream which - are not used: */ - len -= num_pad_bytes; - buffer_index += num_pad_bytes; - } - else - line_index += cp_num_bytes; - } - } -#ifdef WRITE_PGM - fclose(fp); - printf("p5_write finished\n"); -#endif - sane_cancel(self->h); - return (PyObject*) pyArr; -} - - - -#endif /* WITH_NUMARRAY */ - -static PyMethodDef SaneDev_methods[] = { - {"get_parameters", (PyCFunction)SaneDev_get_parameters, 1}, - - {"get_options", (PyCFunction)SaneDev_get_options, 1}, - {"get_option", (PyCFunction)SaneDev_get_option, 1}, - {"set_option", (PyCFunction)SaneDev_set_option, 1}, - {"set_auto_option", (PyCFunction)SaneDev_set_auto_option, 1}, - - {"start", (PyCFunction)SaneDev_start, 1}, - {"cancel", (PyCFunction)SaneDev_cancel, 1}, - {"snap", (PyCFunction)SaneDev_snap, 1}, -#ifdef WITH_NUMARRAY - {"arr_snap", (PyCFunction)SaneDev_arr_snap, 1}, -#endif /* WITH_NUMARRAY */ - {"fileno", (PyCFunction)SaneDev_fileno, 1}, - {"close", (PyCFunction)SaneDev_close, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject * -SaneDev_getattr(SaneDevObject *self, char *name) -{ - return Py_FindMethod(SaneDev_methods, (PyObject *)self, name); -} - -staticforward PyTypeObject SaneDev_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ - "SaneDev", /*tp_name*/ - sizeof(SaneDevObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)SaneDev_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)SaneDev_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ -}; - -/* --------------------------------------------------------------------- */ - -static PyObject * -PySane_init(PyObject *self, PyObject *args) -{ - SANE_Status st; - SANE_Int version; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - /* XXX Authorization is not yet supported */ - st=sane_init(&version, NULL); - if (st) return PySane_Error(st); - return Py_BuildValue("iiii", version, SANE_VERSION_MAJOR(version), - SANE_VERSION_MINOR(version), SANE_VERSION_BUILD(version)); -} - -static PyObject * -PySane_exit(PyObject *self, PyObject *args) -{ - if (!PyArg_ParseTuple(args, "")) - return NULL; - - sane_exit(); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject * -PySane_get_devices(PyObject *self, PyObject *args) -{ - SANE_Device **devlist; - SANE_Device *dev; - SANE_Status st; - PyObject *list; - int local_only, i; - - if (!PyArg_ParseTuple(args, "|i", &local_only)) - { - return NULL; - } - - st=sane_get_devices(&devlist, local_only); - if (st) return PySane_Error(st); - if (!(list = PyList_New(0))) - return NULL; - for(i=0; devlist[i]!=NULL; i++) - { - dev=devlist[i]; - PyList_Append(list, Py_BuildValue("ssss", dev->name, dev->vendor, - dev->model, dev->type)); - } - - return list; -} - -/* Function returning new SaneDev object */ - -static PyObject * -PySane_open(PyObject *self, PyObject *args) -{ - SaneDevObject *rv; - SANE_Status st; - char *name; - - if (!PyArg_ParseTuple(args, "s", &name)) - return NULL; - rv = newSaneDevObject(); - if ( rv == NULL ) - return NULL; - st = sane_open(name, &(rv->h)); - if (st) - { - Py_DECREF(rv); - return PySane_Error(st); - } - return (PyObject *)rv; -} - -static PyObject * -PySane_OPTION_IS_ACTIVE(PyObject *self, PyObject *args) -{ - SANE_Int cap; - long lg; - - if (!PyArg_ParseTuple(args, "l", &lg)) - return NULL; - cap=lg; - return PyInt_FromLong( SANE_OPTION_IS_ACTIVE(cap)); -} - -static PyObject * -PySane_OPTION_IS_SETTABLE(PyObject *self, PyObject *args) -{ - SANE_Int cap; - long lg; - - if (!PyArg_ParseTuple(args, "l", &lg)) - return NULL; - cap=lg; - return PyInt_FromLong( SANE_OPTION_IS_SETTABLE(cap)); -} - - -/* List of functions defined in the module */ - -static PyMethodDef PySane_methods[] = { - {"init", PySane_init, 1}, - {"exit", PySane_exit, 1}, - {"get_devices", PySane_get_devices, 1}, - {"_open", PySane_open, 1}, - {"OPTION_IS_ACTIVE", PySane_OPTION_IS_ACTIVE, 1}, - {"OPTION_IS_SETTABLE", PySane_OPTION_IS_SETTABLE, 1}, - {NULL, NULL} /* sentinel */ -}; - - -static void -insint(PyObject *d, char *name, int value) -{ - PyObject *v = PyInt_FromLong((long) value); - if (!v || PyDict_SetItemString(d, name, v)) - Py_FatalError("can't initialize sane module"); - - Py_DECREF(v); -} - -void -init_sane(void) -{ - PyObject *m, *d; - - /* Create the module and add the functions */ - m = Py_InitModule("_sane", PySane_methods); - - /* Add some symbolic constants to the module */ - d = PyModule_GetDict(m); - ErrorObject = PyString_FromString("_sane.error"); - PyDict_SetItemString(d, "error", ErrorObject); - - insint(d, "INFO_INEXACT", SANE_INFO_INEXACT); - insint(d, "INFO_RELOAD_OPTIONS", SANE_INFO_RELOAD_OPTIONS); - insint(d, "RELOAD_PARAMS", SANE_INFO_RELOAD_PARAMS); - - insint(d, "FRAME_GRAY", SANE_FRAME_GRAY); - insint(d, "FRAME_RGB", SANE_FRAME_RGB); - insint(d, "FRAME_RED", SANE_FRAME_RED); - insint(d, "FRAME_GREEN", SANE_FRAME_GREEN); - insint(d, "FRAME_BLUE", SANE_FRAME_BLUE); - - insint(d, "CONSTRAINT_NONE", SANE_CONSTRAINT_NONE); - insint(d, "CONSTRAINT_RANGE", SANE_CONSTRAINT_RANGE); - insint(d, "CONSTRAINT_WORD_LIST", SANE_CONSTRAINT_WORD_LIST); - insint(d, "CONSTRAINT_STRING_LIST", SANE_CONSTRAINT_STRING_LIST); - - insint(d, "TYPE_BOOL", SANE_TYPE_BOOL); - insint(d, "TYPE_INT", SANE_TYPE_INT); - insint(d, "TYPE_FIXED", SANE_TYPE_FIXED); - insint(d, "TYPE_STRING", SANE_TYPE_STRING); - insint(d, "TYPE_BUTTON", SANE_TYPE_BUTTON); - insint(d, "TYPE_GROUP", SANE_TYPE_GROUP); - - insint(d, "UNIT_NONE", SANE_UNIT_NONE); - insint(d, "UNIT_PIXEL", SANE_UNIT_PIXEL); - insint(d, "UNIT_BIT", SANE_UNIT_BIT); - insint(d, "UNIT_MM", SANE_UNIT_MM); - insint(d, "UNIT_DPI", SANE_UNIT_DPI); - insint(d, "UNIT_PERCENT", SANE_UNIT_PERCENT); - insint(d, "UNIT_MICROSECOND", SANE_UNIT_MICROSECOND); - - insint(d, "CAP_SOFT_SELECT", SANE_CAP_SOFT_SELECT); - insint(d, "CAP_HARD_SELECT", SANE_CAP_HARD_SELECT); - insint(d, "CAP_SOFT_DETECT", SANE_CAP_SOFT_DETECT); - insint(d, "CAP_EMULATED", SANE_CAP_EMULATED); - insint(d, "CAP_AUTOMATIC", SANE_CAP_AUTOMATIC); - insint(d, "CAP_INACTIVE", SANE_CAP_INACTIVE); - insint(d, "CAP_ADVANCED", SANE_CAP_ADVANCED); - - /* handy for checking array lengths: */ - insint(d, "SANE_WORD_SIZE", sizeof(SANE_Word)); - - /* possible return values of set_option() */ - insint(d, "INFO_INEXACT", SANE_INFO_INEXACT); - insint(d, "INFO_RELOAD_OPTIONS", SANE_INFO_RELOAD_OPTIONS); - insint(d, "INFO_RELOAD_PARAMS", SANE_INFO_RELOAD_PARAMS); - - /* Check for errors */ - if (PyErr_Occurred()) - Py_FatalError("can't initialize module _sane"); - -#ifdef WITH_NUMARRAY - import_libnumarray(); - if (PyErr_Occurred()) - PyErr_Clear(); - else - /* this global variable is declared just in front of the - arr_snap() function and should be set to 1 after - successfully importing the numarray module. */ - NUMARRAY_IMPORTED = 1; - -#endif /* WITH_NUMARRAY */ -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py deleted file mode 100755 index 0104af2d550..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_numarray.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python - -# -# Shows how to scan a 16 bit grayscale image into a numarray object -# - -# Get the path set up to find PIL modules if not installed yet: -import sys ; sys.path.append('../PIL') - -from numarray import * -import sane -import Image - -def toImage(arr): - if arr.type().bytes == 1: - # need to swap coordinates btw array and image (with [::-1]) - im = Image.fromstring('L', arr.shape[::-1], arr.tostring()) - else: - arr_c = arr - arr.min() - arr_c *= (255./arr_c.max()) - arr = arr_c.astype(UInt8) - # need to swap coordinates btw array and image (with [::-1]) - im = Image.fromstring('L', arr.shape[::-1], arr.tostring()) - return im - -print 'SANE version:', sane.init() -print 'Available devices=', sane.get_devices() - -s = sane.open(sane.get_devices()[0][0]) - -# Set scan parameters -s.mode = 'gray' -s.br_x=320. ; s.br_y=240. - -print 'Device parameters:', s.get_parameters() - -s.depth=16 -arr16 = s.arr_scan() -toImage(arr16).show() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py deleted file mode 100755 index 016361f8a82..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/demo_pil.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -# -# Shows how to scan a color image into a PIL rgb-image -# - -# Get the path set up to find PIL modules if not installed yet: -import sys ; sys.path.append('../PIL') - -import sane -print 'SANE version:', sane.init() -print 'Available devices=', sane.get_devices() - -s = sane.open(sane.get_devices()[0][0]) - -s.mode = 'color' -s.br_x=320. ; s.br_y=240. - -print 'Device parameters:', s.get_parameters() - -# Initiate the scan -s.start() - -# Get an Image object -# (For my B&W QuickCam, this is a grey-scale image. Other scanning devices -# may return a -im=s.snap() - -# Write the image out as a GIF file -#im.save('foo.gif') - -# The show method() simply saves the image to a temporary file and calls "xv". -im.show() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py deleted file mode 100755 index 27be5a259c4..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sane.py +++ /dev/null @@ -1,289 +0,0 @@ -# sane.py -# -# Python wrapper on top of the _sane module, which is in turn a very -# thin wrapper on top of the SANE library. For a complete understanding -# of SANE, consult the documentation at the SANE home page: -# http://www.mostang.com/sane/ . - -__version__ = '2.0' -__author__ = ['Andrew Kuchling', 'Ralph Heinkel'] - -from PIL import Image - -import _sane -from _sane import * - -TYPE_STR = { TYPE_BOOL: "TYPE_BOOL", TYPE_INT: "TYPE_INT", - TYPE_FIXED: "TYPE_FIXED", TYPE_STRING: "TYPE_STRING", - TYPE_BUTTON: "TYPE_BUTTON", TYPE_GROUP: "TYPE_GROUP" } - -UNIT_STR = { UNIT_NONE: "UNIT_NONE", - UNIT_PIXEL: "UNIT_PIXEL", - UNIT_BIT: "UNIT_BIT", - UNIT_MM: "UNIT_MM", - UNIT_DPI: "UNIT_DPI", - UNIT_PERCENT: "UNIT_PERCENT", - UNIT_MICROSECOND: "UNIT_MICROSECOND" } - - -class Option: - """Class representing a SANE option. - Attributes: - index -- number from 0 to n, giving the option number - name -- a string uniquely identifying the option - title -- single-line string containing a title for the option - desc -- a long string describing the option; useful as a help message - type -- type of this option. Possible values: TYPE_BOOL, - TYPE_INT, TYPE_STRING, and so forth. - unit -- units of this option. Possible values: UNIT_NONE, - UNIT_PIXEL, etc. - size -- size of the value in bytes - cap -- capabilities available; CAP_EMULATED, CAP_SOFT_SELECT, etc. - constraint -- constraint on values. Possible values: - None : No constraint - (min,max,step) Integer values, from min to max, stepping by - list of integers or strings: only the listed values are allowed - """ - - def __init__(self, args, scanDev): - import string - self.scanDev = scanDev # needed to get current value of this option - self.index, self.name = args[0], args[1] - self.title, self.desc = args[2], args[3] - self.type, self.unit = args[4], args[5] - self.size, self.cap = args[6], args[7] - self.constraint = args[8] - def f(x): - if x=='-': return '_' - else: return x - if type(self.name)!=type(''): self.py_name=str(self.name) - else: self.py_name=string.join(map(f, self.name), '') - - def is_active(self): - return _sane.OPTION_IS_ACTIVE(self.cap) - def is_settable(self): - return _sane.OPTION_IS_SETTABLE(self.cap) - def __repr__(self): - if self.is_settable(): - settable = 'yes' - else: - settable = 'no' - if self.is_active(): - active = 'yes' - curValue = repr(getattr(self.scanDev, self.py_name)) - else: - active = 'no' - curValue = '' - s = """\nName: %s -Cur value: %s -Index: %d -Title: %s -Desc: %s -Type: %s -Unit: %s -Constr: %s -active: %s -settable: %s\n""" % (self.py_name, curValue, - self.index, self.title, self.desc, - TYPE_STR[self.type], UNIT_STR[self.unit], - `self.constraint`, active, settable) - return s - - -class _SaneIterator: - """ intended for ADF scans. - """ - - def __init__(self, device): - self.device = device - - def __iter__(self): - return self - - def __del__(self): - self.device.cancel() - - def next(self): - try: - self.device.start() - except error, v: - if v == 'Document feeder out of documents': - raise StopIteration - else: - raise - return self.device.snap(1) - - - -class SaneDev: - """Class representing a SANE device. - Methods: - start() -- initiate a scan, using the current settings - snap() -- snap a picture, returning an Image object - arr_snap() -- snap a picture, returning a numarray object - cancel() -- cancel an in-progress scanning operation - fileno() -- return the file descriptor for the scanner (handy for select) - - Also available, but rather low-level: - get_parameters() -- get the current parameter settings of the device - get_options() -- return a list of tuples describing all the options. - - Attributes: - optlist -- list of option names - - You can also access an option name to retrieve its value, and to - set it. For example, if one option has a .name attribute of - imagemode, and scanner is a SaneDev object, you can do: - print scanner.imagemode - scanner.imagemode = 'Full frame' - scanner.['imagemode'] returns the corresponding Option object. - """ - def __init__(self, devname): - d=self.__dict__ - d['sane_signature'] = self._getSaneSignature(devname) - d['scanner_model'] = d['sane_signature'][1:3] - d['dev'] = _sane._open(devname) - self.__load_option_dict() - - def _getSaneSignature(self, devname): - devices = get_devices() - if not devices: - raise RuntimeError('no scanner available') - for dev in devices: - if devname == dev[0]: - return dev - raise RuntimeError('no such scan device "%s"' % devname) - - def __load_option_dict(self): - d=self.__dict__ - d['opt']={} - optlist=d['dev'].get_options() - for t in optlist: - o=Option(t, self) - if o.type!=TYPE_GROUP: - d['opt'][o.py_name]=o - - def __setattr__(self, key, value): - dev=self.__dict__['dev'] - optdict=self.__dict__['opt'] - if not optdict.has_key(key): - self.__dict__[key]=value ; return - opt=optdict[key] - if opt.type==TYPE_GROUP: - raise AttributeError, "Groups can't be set: "+key - if not _sane.OPTION_IS_ACTIVE(opt.cap): - raise AttributeError, 'Inactive option: '+key - if not _sane.OPTION_IS_SETTABLE(opt.cap): - raise AttributeError, "Option can't be set by software: "+key - if type(value) == int and opt.type == TYPE_FIXED: - # avoid annoying errors of backend if int is given instead float: - value = float(value) - self.last_opt = dev.set_option(opt.index, value) - # do binary AND to find if we have to reload options: - if self.last_opt & INFO_RELOAD_OPTIONS: - self.__load_option_dict() - - def __getattr__(self, key): - dev=self.__dict__['dev'] - optdict=self.__dict__['opt'] - if key=='optlist': - return self.opt.keys() - if key=='area': - return (self.tl_x, self.tl_y),(self.br_x, self.br_y) - if not optdict.has_key(key): - raise AttributeError, 'No such attribute: '+key - opt=optdict[key] - if opt.type==TYPE_BUTTON: - raise AttributeError, "Buttons don't have values: "+key - if opt.type==TYPE_GROUP: - raise AttributeError, "Groups don't have values: "+key - if not _sane.OPTION_IS_ACTIVE(opt.cap): - raise AttributeError, 'Inactive option: '+key - value = dev.get_option(opt.index) - return value - - def __getitem__(self, key): - return self.opt[key] - - def get_parameters(self): - """Return a 5-tuple holding all the current device settings: - (format, last_frame, (pixels_per_line, lines), depth, bytes_per_line) - -- format is one of 'L' (grey), 'RGB', 'R' (red), 'G' (green), 'B' (blue). -- last_frame [bool] indicates if this is the last frame of a multi frame image -- (pixels_per_line, lines) specifies the size of the scanned image (x,y) -- lines denotes the number of scanlines per frame -- depth gives number of pixels per sample -""" - return self.dev.get_parameters() - - def get_options(self): - "Return a list of tuples describing all the available options" - return self.dev.get_options() - - def start(self): - "Initiate a scanning operation" - return self.dev.start() - - def cancel(self): - "Cancel an in-progress scanning operation" - return self.dev.cancel() - - def snap(self, no_cancel=0): - "Snap a picture, returning a PIL image object with the results" - (mode, last_frame, - (xsize, ysize), depth, bytes_per_line) = self.get_parameters() - if mode in ['gray', 'red', 'green', 'blue']: - format = 'L' - elif mode == 'color': - format = 'RGB' - else: - raise ValueError('got unknown "mode" from self.get_parameters()') - im=Image.new(format, (xsize,ysize)) - self.dev.snap( im.im.id, no_cancel ) - return im - - def scan(self): - self.start() - return self.snap() - - def multi_scan(self): - return _SaneIterator(self) - - def arr_snap(self, multipleOf=1): - """Snap a picture, returning a numarray object with the results. - By default the resulting array has the same number of pixels per - line as specified in self.get_parameters()[2][0] - However sometimes it is necessary to obtain arrays where - the number of pixels per line is e.g. a multiple of 4. This can then - be achieved with the option 'multipleOf=4'. So if the scanner - scanned 34 pixels per line, you will obtain an array with 32 pixels - per line. - """ - (mode, last_frame, (xsize, ysize), depth, bpl) = self.get_parameters() - if not mode in ['gray', 'red', 'green', 'blue']: - raise RuntimeError('arr_snap() only works with monochrome images') - if multipleOf < 1: - raise ValueError('option "multipleOf" must be a positive number') - elif multipleOf > 1: - pixels_per_line = xsize - divmod(xsize, 4)[1] - else: - pixels_per_line = xsize - return self.dev.arr_snap(pixels_per_line) - - def arr_scan(self, multipleOf=1): - self.start() - return self.arr_snap(multipleOf=multipleOf) - - def fileno(self): - "Return the file descriptor for the scanning device" - return self.dev.fileno() - - def close(self): - self.dev.close() - - -def open(devname): - "Open a device for scanning" - new=SaneDev(devname) - return new diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt deleted file mode 100755 index db86938e313..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/sanedoc.txt +++ /dev/null @@ -1,294 +0,0 @@ -The _sane_ module is an Python interface to the SANE (Scanning is Now -Easy) library, which provides access to various raster scanning -devices such as flatbed scanners and digital cameras. For more -information about SANE, consult the SANE Web site at -http://www.mostang.com/sane/ . Note that this -documentation doesn't duplicate all the information in the SANE -documentation, which you must also consult to get a complete -understanding. - -This module has been originally developed by A.M. Kuchling (amk1@erols.com), -now development has been taken over by Ralph Heinkel (rheinkel-at-email.de). -If you write to me please make sure to have the word 'SANE' or 'sane' in -the subject of your mail, otherwise it might be classified as spam in the -future. - - -The module exports two object types, a bunch of constants, and two -functions. - -get_devices() - Return a list of 4-tuples containing the available scanning - devices. Each tuple contains 4 strings: the device name, suitable for - passing to _open()_; the device's vendor; the model; and the type of - device, such as 'virtual device' or 'video camera'. - - >>> import sane ; sane.get_devices() - [('epson:libusb:001:004', 'Epson', 'GT-8300', 'flatbed scanner')] - -open(devicename) - Open a device, given a string containing its name. SANE - devices have names like 'epson:libusb:001:004'. If the attempt - to open the device fails, a _sane.error_ exception will be raised. If - there are no problems, a SaneDev object will be returned. - As an easy way to open the scanner (if only one is available) just type - >>> sane.open(sane.get_devices()[0][0]) - - -SaneDev objects -=============== - -The basic process of scanning an image consists of getting a SaneDev -object for the device, setting various parameters, starting the scan, -and then reading the image data. Images are composed of one or more -frames; greyscale and one-pass colour scanners return a single frame -containing all the image data, but 3-pass scanners will usually return -3 frames, one for each of the red, green, blue channels. - -Methods: --------- -fileno() - Returns a file descriptor for the scanning device. This - method's existence means that SaneDev objects can be used by the - select module. - -get_parameters() - Return a tuple containing information about the current settings of - the device and the current frame: (format, last_frame, - pixels_per_line, lines, depth, bytes_per_line). - - mode -- 'gray' for greyscale image, 'color' for RGB image, or - one of 'red', 'green', 'blue' if the image is a single - channel of an RGB image (from PIL's point of view, - this is equivalent to 'L'). - last_frame -- A Boolean value, which is true if this is the - last frame of the image, and false otherwise. - pixels_per_line -- Width of the frame. - lines -- Height of the frame. - depth -- Depth of the image, measured in bits. SANE will only - allow using 8, 16, or 24-bit depths. - bytes_per_line -- Bytes required to store a single line of - data, as computed from pixels_per_line and depth. - -start() - Start a scan. This function must be called before the - _snap()_ method can be used. - -cancel() - Cancel a scan already in progress. - -snap(no_cancel=0) - Snap a single frame of data, returning a PIL Image object - containing the data. If no_cancel is false, the Sane library function - sane_cancel is called after the scan. This is reasonable in most cases, - but may cause backends for duplex ADF scanners to drop the backside image, - when snap() is called for the front side image. If no_cancel is true, - cancel() should be called manually, after all scans are finished. - -scan() - This is just a shortcut for s.start(); s.snap() - Returns a PIL image - -multi_scan() - This method returns an iterator. It is intended to be used for - scanning with an automatic document feeder. The next() method of the - iterator tries to start a scan. If this is successful, it returns a - PIL Image object, like scan(); if the document feeder runs out of - paper, it raises StopIteration, thereby signaling that the sequence - is ran out of items. - -arr_snap(multipleOf=1) - same as snap, but the result is a NumArray object. (Not that - num_array must be installed already at compilation time, otherwise - this feature will not be activated). - By default the resulting array has the same number of pixels per - line as specified in self.get_parameters()[2][0] - However sometimes it is necessary to obtain arrays where - the number of pixels per line is e.g. a multiple of 4. This can then - be achieved with the option 'multipleOf=4'. So if the scanner - scanned 34 pixels per line, you will obtain an array with 32 pixels - per line. - Note that this only works with monochrome images (e.g. gray-scales) - -arr_scan(multipleOf=1) - This is just a shortcut for s.start(); s.arr_snap(multipleOf=1) - Returns a NumArray object - -close() - Closes the object. - - -Attributes: ------------ -SaneDev objects have a few fixed attributes which are always -available, and a larger collection of attributes which vary depending -on the device. An Epson 1660 photo scanner has attributes like -'mode', 'depth', etc. -Another (pseudo scanner), the _pnm:0_ device, takes a PNM file and -simulates a scanner using the image data; a SaneDev object -representing the _pnm:0_ device therefore has a _filename_ attribute -which can be changed to specify the filename, _contrast_ and -_brightness_ attributes to modify the returned image, and so forth. - -The values of the scanner options may be an integer, floating-point -value, or string, depending on the nature of the option. - -sane_signature - The tuple for this scandev that is returned by sane.get_devices() - e.g. ('epson:libusb:001:006', 'Epson', 'GT-8300', 'flatbed scanner') - -scanner_model - same as sane_signature[1:3], i.e. ('Epson', 'GT-8300') for the case above. - -optlist - A list containing the all the options supported by this device. - - >>> import sane ; s=sane.open('epson:libusb:001:004') ; s.optlist - ['focus_position', 'color_correction', 'sharpness', ...., 'br_x'] - -A closer look at all options listed in s.optlist can be obtained -through the SaneOption objects. - -SaneOption objects -================== - -SANE's option handling is its most elaborate subsystem, intended to -allow automatically generating dialog boxes and prompts for user -configuration of the scanning device. The SaneOption object can be -used to get a human-readable name and description for an option, the -units to use, and what the legal values are. No information about the -current value of the option is available; for that, read the -corresponding attribute of a SaneDev object. - -This documentation does not explain all the details of SANE's option -handling; consult the SANE documentation for all the details. - -A scandevice option is accessed via __getitem__. For example -s['mode'] returns the option descriptor for the mode-option which -controls whether the scanner works in color, grayscale, or b/w mode. - ->>> s['mode'] -Name: mode -Cur value: Color -Index: 2 -Title: Scan mode -Desc: Selects the scan mode (e.g., lineart, monochrome, or color). -Type: TYPE_STRING -Unit: UNIT_NONE -Constr: ['Binary', 'Gray', 'Color'] -active: yes -settable: yes - -In order to change 'mode' to 'gray', just type: ->>> s.mode = 'gray' - - -With the attributes and methods of sane-option objects it is possible -to access individual option values: - -is_active() - Returns true if the option is active. - -is_settable() - Returns true if the option can be set under software control. - - -Attributes: - -cap - An integer containing various flags about the object's - capabilities; whether it's active, whether it's settable, etc. Also - available as the _capability_ attribute. - -constraint - The constraint placed on the value of this option. If it's - _None_, there are essentially no constraint of the value. It may also - be a list of integers or strings, in which case the value *must* be - one of the possibilities in the list. Numeric values may have a - 3-tuple as the constraint; this 3-tuple contains _(minimum, maximum, - increment)_, and the value must be in the defined range. - -desc - A lengthy description of what the option does; it may be shown - to the user for clarification. - -index - An integer giving the option's index in the option list. - -name - A short name for the option, as it comes from the sane-backend. - -py_name - The option's name, as a legal Python identifier. The name - attribute may contain the '-' character, so it will be converted to - '_' for the py_name attribute. - -size - For a string-valued option, this is the maximum length allowed. - -title - A single-line string that can be used as a title string. - -type - A constant giving the type of this option: will be one of the following - constants found in the SANE module: - TYPE_BOOL - TYPE_INT - TYPE_FIXED - TYPE_STRING - TYPE_BUTTON - TYPE_GROUP - -unit - For numeric-valued options, this is a constant representing - the unit used for this option. It will be one of the following - constants found in the SANE module: - UNIT_NONE - UNIT_PIXEL - UNIT_BIT - UNIT_MM - UNIT_DPI - UNIT_PERCENT - - - -Example us usage: -================= ->>> import sane ->>> print 'SANE version:', sane.init() ->>> print 'Available devices=', sane.get_devices() -SANE version: (16777230, 1, 0, 14) ->>> s = sane.open(sane.get_devices()[0][0]) ->>> print 'Device parameters:', s.get_parameters() -Device parameters: ('L', 1, (424, 585), 1, 53) ->>> print s.resolution -50 - -## In order to scan a color image into a PIL object: ->>> s.mode = 'color' ->>> s.start() ->>> img = s.snap() ->>> img.show() - - -## In order to obtain a 16-bit grayscale image at 100DPI in a numarray object -## with bottom-right coordinates set to (160, 120) [in millimeter] : ->>> s.mode = 'gray' ->>> s.br_x=160. ; s.br_y=120. ->>> s.resolution = 100 ->>> s.depth=16 ->>> s.start() ->>> s.get_parameters()[2] # just check the size -(624, 472) ->>> arr16 = s.arr_snap() ->>> arr16 -array([[63957, 64721, 65067, ..., 65535, 65535, 65535], - [63892, 64342, 64236, ..., 65535, 65535, 65535], - [64286, 64248, 64705, ..., 65535, 65535, 65535], - ..., - [65518, 65249, 65058, ..., 65535, 65535, 65535], - [64435, 65047, 65081, ..., 65535, 65535, 65535], - [65309, 65438, 65535, ..., 65535, 65535, 65535]], type=UInt16) ->>> arr16.shape # inverse order of coordinates, first y, then x! -(472, 624) - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py deleted file mode 100755 index 3837198ec94..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Sane/setup.py +++ /dev/null @@ -1,24 +0,0 @@ -from distutils.core import setup, Extension - -PIL_BUILD_DIR = '..' -PIL_IMAGING_DIR = PIL_BUILD_DIR+'/libImaging' - -defs = [] -try: - import numarray - defs.append(('WITH_NUMARRAY',None)) -except ImportError: - pass - -sane = Extension('_sane', - include_dirs = [PIL_IMAGING_DIR], - libraries = ['sane'], - library_dirs = [PIL_IMAGING_DIR], - define_macros = defs, - sources = ['_sane.c']) - -setup (name = 'pysane', - version = '2.0', - description = 'This is the pysane package', - py_modules = ['sane'], - ext_modules = [sane]) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README deleted file mode 100755 index a09b0621a1c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/README +++ /dev/null @@ -1,83 +0,0 @@ -------- -Scripts -------- - -This directory contains a number of more or less trivial utilities -and demo programs. - -Comments and contributions are welcome. - - - --------------------------------------------------------------------- -pildriver.py (by Eric S. Raymond) - -A class implementing an image-processing calculator for scripts. -Parses lists of commnds (or, called interactively, command-line -arguments) into image loads, transformations, and saves. - --------------------------------------------------------------------- -viewer.py - -A simple image viewer. Can display all file formats handled by -PIL. Transparent images are properly handled. - --------------------------------------------------------------------- -thresholder.py - -A simple utility that demonstrates how a transparent 1-bit overlay -can be used to show the current thresholding of an 8-bit image. - --------------------------------------------------------------------- -enhancer.py - -Illustrates the ImageEnhance module. Drag the sliders to modify the -images. This might be very slow on some platforms, depending on the -Tk version. - --------------------------------------------------------------------- -painter.py - -Illustrates how a painting program could be based on PIL and Tk. -Press the left mouse button and drag over the image to remove the -colour. Some clever tricks have been used to get decent performance -when updating the screen; see the sources for details. - --------------------------------------------------------------------- -player.py - -A simple image sequence player. You can use either a sequence format -like FLI/FLC, GIF, or ARG, or give a number of images which are -interpreted as frames in a sequence. All frames must have the same -size. - --------------------------------------------------------------------- -gifmaker.py - -Convert a sequence file to a GIF animation. - -Note that the GIF encoder provided with this release of PIL writes -uncompressed GIF files only, so the resulting animations are rather -large compared with these created by other tools. - --------------------------------------------------------------------- -explode.py - -Split a sequence file into individual frames. - --------------------------------------------------------------------- -image2py.py - -Convert an image to a Python module containing an IMAGE variable. -Note that the module using the module must include JPEG and ZIP -decoders, unless the -u option is used. - --------------------------------------------------------------------- -olesummary.py - -Uses the OleFileIO module to dump the summary information from an OLE -structured storage file. This works with most OLE files, including -Word documents, FlashPix images, etc. - -Note that datetime fields currently show the number of seconds since -January 1st, 1601. diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py deleted file mode 100755 index 957b51c8d91..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/enhancer.py +++ /dev/null @@ -1,53 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# this demo script creates four windows containing an image and a slider. -# drag the slider to modify the image. -# - -from Tkinter import * -from PIL import Image, ImageTk, ImageEnhance -import sys - -# -# enhancer widget - -class Enhance(Frame): - def __init__(self, master, image, name, enhancer, lo, hi): - Frame.__init__(self, master) - - # set up the image - self.tkim = ImageTk.PhotoImage(image.mode, image.size) - self.enhancer = enhancer(image) - self.update("1.0") # normalize - - # image window - Label(self, image=self.tkim).pack() - - # scale - s = Scale(self, label=name, orient=HORIZONTAL, - from_=lo, to=hi, resolution=0.01, - command=self.update) - s.set(self.value) - s.pack() - - def update(self, value): - self.value = eval(value) - self.tkim.paste(self.enhancer.enhance(self.value)) - -# -# main - -root = Tk() - -im = Image.open(sys.argv[1]) - -im.thumbnail((200, 200)) - -Enhance(root, im, "Color", ImageEnhance.Color, 0.0, 4.0).pack() -Enhance(Toplevel(), im, "Sharpness", ImageEnhance.Sharpness, -2.0, 2.0).pack() -Enhance(Toplevel(), im, "Brightness", ImageEnhance.Brightness, -1.0, 3.0).pack() -Enhance(Toplevel(), im, "Contrast", ImageEnhance.Contrast, -1.0, 3.0).pack() - -root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py deleted file mode 100755 index a336f06990c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/explode.py +++ /dev/null @@ -1,107 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# split an animation into a number of frame files -# - -from PIL import Image -import os, string, sys - -class Interval: - - def __init__(self, interval = "0"): - - self.setinterval(interval) - - def setinterval(self, interval): - - self.hilo = [] - - for s in string.split(interval, ","): - if not string.strip(s): - continue - try: - v = string.atoi(s) - if v < 0: - lo, hi = 0, -v - else: - lo = hi = v - except ValueError: - i = string.find(s, "-") - lo, hi = string.atoi(s[:i]), string.atoi(s[i+1:]) - - self.hilo.append((hi, lo)) - - if not self.hilo: - self.hilo = [(sys.maxint, 0)] - - def __getitem__(self, index): - - for hi, lo in self.hilo: - if hi >= index >= lo: - return 1 - return 0 - -# -------------------------------------------------------------------- -# main program - -html = 0 - -if sys.argv[1:2] == ["-h"]: - html = 1 - del sys.argv[1] - -if not sys.argv[2:]: - print - print "Syntax: python explode.py infile template [range]" - print - print "The template argument is used to construct the names of the" - print "individual frame files. The frames are numbered file001.ext," - print "file002.ext, etc. You can insert %d to control the placement" - print "and syntax of the frame number." - print - print "The optional range argument specifies which frames to extract." - print "You can give one or more ranges like 1-10, 5, -15 etc. If" - print "omitted, all frames are extracted." - sys.exit(1) - -infile = sys.argv[1] -outfile = sys.argv[2] - -frames = Interval(string.join(sys.argv[3:], ",")) - -try: - # check if outfile contains a placeholder - outfile % 1 -except TypeError: - file, ext = os.path.splitext(outfile) - outfile = file + "%03d" + ext - -ix = 1 - -im = Image.open(infile) - -if html: - file, ext = os.path.splitext(outfile) - html = open(file+".html", "w") - html.write("\n\n") - -while 1: - - if frames[ix]: - im.save(outfile % ix) - print outfile % ix - - if html: - html.write("
    \n" % outfile % ix) - - try: - im.seek(ix) - except EOFError: - break - - ix = ix + 1 - -if html: - html.write("\n\n") diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py deleted file mode 100755 index 95524eacc1c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/gifmaker.py +++ /dev/null @@ -1,135 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# convert sequence format to GIF animation -# -# history: -# 97-01-03 fl created -# -# Copyright (c) Secret Labs AB 1997. All rights reserved. -# Copyright (c) Fredrik Lundh 1997. -# -# See the README file for information on usage and redistribution. -# - -# -# For special purposes, you can import this module and call -# the makedelta or compress functions yourself. For example, -# if you have an application that generates a sequence of -# images, you can convert it to a GIF animation using some- -# thing like the following code: -# -# import Image -# import gifmaker -# -# sequence = [] -# -# # generate sequence -# for i in range(100): -# im = -# sequence.append(im) -# -# # write GIF animation -# fp = open("out.gif", "wb") -# gifmaker.makedelta(fp, sequence) -# fp.close() -# -# Alternatively, use an iterator to generate the sequence, and -# write data directly to a socket. Or something... -# - -from PIL import Image, ImageChops -import string - -from PIL.GifImagePlugin import getheader, getdata - -# -------------------------------------------------------------------- -# sequence iterator - -class image_sequence: - def __init__(self, im): - self.im = im - def __getitem__(self, ix): - try: - if ix: - self.im.seek(ix) - return self.im - except EOFError: - raise IndexError # end of sequence - -# -------------------------------------------------------------------- -# straightforward delta encoding - -def makedelta(fp, sequence): - """Convert list of image frames to a GIF animation file""" - - frames = 0 - - previous = None - - for im in sequence: - - # - # FIXME: write graphics control block before each frame - - if not previous: - - # global header - for s in getheader(im) + getdata(im): - fp.write(s) - - else: - - # delta frame - delta = ImageChops.subtract_modulo(im, previous) - - bbox = delta.getbbox() - - if bbox: - - # compress difference - for s in getdata(im.crop(bbox), offset = bbox[:2]): - fp.write(s) - - else: - # FIXME: what should we do in this case? - pass - - previous = im.copy() - - frames = frames + 1 - - fp.write(";") - - return frames - -# -------------------------------------------------------------------- -# main hack - -def compress(infile, outfile): - - # open input image, and force loading of first frame - im = Image.open(infile) - im.load() - - # open output file - fp = open(outfile, "wb") - - seq = image_sequence(im) - - makedelta(fp, seq) - - fp.close() - - -if __name__ == "__main__": - - import sys - - if len(sys.argv) < 3: - print "GIFMAKER -- create GIF animations" - print "Usage: gifmaker infile outfile" - sys.exit(1) - - compress(sys.argv[1], sys.argv[2]) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py deleted file mode 100755 index efe307386ff..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/painter.py +++ /dev/null @@ -1,72 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# this demo script illustrates pasting into an already displayed -# photoimage. note that the current version of Tk updates the whole -# image everytime we paste, so to get decent performance, we split -# the image into a set of tiles. -# - -from Tkinter import * -from PIL import Image, ImageTk -import sys - -# -# painter widget - -class PaintCanvas(Canvas): - def __init__(self, master, image): - Canvas.__init__(self, master, width=image.size[0], height=image.size[1]) - - # fill the canvas - self.tile = {} - self.tilesize = tilesize = 32 - xsize, ysize = image.size - for x in range(0, xsize, tilesize): - for y in range(0, ysize, tilesize): - box = x, y, min(xsize, x+tilesize), min(ysize, y+tilesize) - tile = ImageTk.PhotoImage(image.crop(box)) - self.create_image(x, y, image=tile, anchor=NW) - self.tile[(x,y)] = box, tile - - self.image = image - - self.bind("", self.paint) - - def paint(self, event): - xy = event.x - 10, event.y - 10, event.x + 10, event.y + 10 - im = self.image.crop(xy) - - # process the image in some fashion - im = im.convert("L") - - self.image.paste(im, xy) - self.repair(xy) - - def repair(self, box): - # update canvas - dx = box[0] % self.tilesize - dy = box[1] % self.tilesize - for x in range(box[0]-dx, box[2]+1, self.tilesize): - for y in range(box[1]-dy, box[3]+1, self.tilesize): - try: - xy, tile = self.tile[(x, y)] - tile.paste(self.image.crop(xy)) - except KeyError: - pass # outside the image - self.update_idletasks() - -# -# main - -root = Tk() - -im = Image.open(sys.argv[1]) - -if im.mode != "RGB": - im = im.convert("RGB") - -PaintCanvas(root, im).pack() - -root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py deleted file mode 100755 index 1c688f7c9b0..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilconvert.py +++ /dev/null @@ -1,96 +0,0 @@ -#! /usr/local/bin/python -# -# The Python Imaging Library. -# $Id$ -# -# convert image files -# -# History: -# 0.1 96-04-20 fl Created -# 0.2 96-10-04 fl Use draft mode when converting images -# 0.3 96-12-30 fl Optimize output (PNG, JPEG) -# 0.4 97-01-18 fl Made optimize an option (PNG, JPEG) -# 0.5 98-12-30 fl Fixed -f option (from Anthony Baxter) -# - -import site -import getopt, string, sys - -from PIL import Image - -def usage(): - print "PIL Convert 0.5/1998-12-30 -- convert image files" - print "Usage: pilconvert [option] infile outfile" - print - print "Options:" - print - print " -c convert to format (default is given by extension)" - print - print " -g convert to greyscale" - print " -p convert to palette image (using standard palette)" - print " -r convert to rgb" - print - print " -o optimize output (trade speed for size)" - print " -q set compression quality (0-100, JPEG only)" - print - print " -f list supported file formats" - sys.exit(1) - -if len(sys.argv) == 1: - usage() - -try: - opt, argv = getopt.getopt(sys.argv[1:], "c:dfgopq:r") -except getopt.error, v: - print v - sys.exit(1) - -format = None -convert = None - -options = { } - -for o, a in opt: - - if o == "-f": - Image.init() - id = Image.ID[:] - id.sort() - print "Supported formats (* indicates output format):" - for i in id: - if Image.SAVE.has_key(i): - print i+"*", - else: - print i, - sys.exit(1) - - elif o == "-c": - format = a - - if o == "-g": - convert = "L" - elif o == "-p": - convert = "P" - elif o == "-r": - convert = "RGB" - - elif o == "-o": - options["optimize"] = 1 - elif o == "-q": - options["quality"] = string.atoi(a) - -if len(argv) != 2: - usage() - -try: - im = Image.open(argv[0]) - if convert and im.mode != convert: - im.draft(convert, im.size) - im = im.convert(convert) - if format: - apply(im.save, (argv[1], format), options) - else: - apply(im.save, (argv[1],), options) -except: - print "cannot convert image", - print "(%s:%s)" % (sys.exc_type, sys.exc_value) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py deleted file mode 100755 index 5dd575a3fd6..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pildriver.py +++ /dev/null @@ -1,524 +0,0 @@ -#!/usr/bin/env python -"""PILdriver, an image-processing calculator using PIL. - -An instance of class PILDriver is essentially a software stack machine -(Polish-notation interpreter) for sequencing PIL image -transformations. The state of the instance is the interpreter stack. - -The only method one will normally invoke after initialization is the -`execute' method. This takes an argument list of tokens, pushes them -onto the instance's stack, and then tries to clear the stack by -successive evaluation of PILdriver operators. Any part of the stack -not cleaned off persists and is part of the evaluation context for -the next call of the execute method. - -PILDriver doesn't catch any exceptions, on the theory that these -are actually diagnostic information that should be interpreted by -the calling code. - -When called as a script, the command-line arguments are passed to -a PILDriver instance. If there are no command-line arguments, the -module runs an interactive interpreter, each line of which is split into -space-separated tokens and passed to the execute method. - -In the method descriptions below, a first line beginning with the string -`usage:' means this method can be invoked with the token that follows -it. Following <>-enclosed arguments describe how the method interprets -the entries on the stack. Each argument specification begins with a -type specification: either `int', `float', `string', or `image'. - -All operations consume their arguments off the stack (use `dup' to -keep copies around). Use `verbose 1' to see the stack state displayed -before each operation. - -Usage examples: - - `show crop 0 0 200 300 open test.png' loads test.png, crops out a portion -of its upper-left-hand corner and displays the cropped portion. - - `save rotated.png rotate 30 open test.tiff' loads test.tiff, rotates it -30 degrees, and saves the result as rotated.png (in PNG format). -""" -# by Eric S. Raymond -# $Id$ - -# TO DO: -# 1. Add PILFont capabilities, once that's documented. -# 2. Add PILDraw operations. -# 3. Add support for composing and decomposing multiple-image files. -# - -from PIL import Image -import string - -class PILDriver: - - verbose = 0 - - def do_verbose(self): - """usage: verbose - - Set verbosity flag from top of stack. - """ - self.verbose = self.do_pop() - - # The evaluation stack (internal only) - - stack = [] # Stack of pending operations - - def push(self, item): - "Push an argument onto the evaluation stack." - self.stack = [item] + self.stack - - def top(self): - "Return the top-of-stack element." - return self.stack[0] - - # Stack manipulation (callable) - - def do_clear(self): - """usage: clear - - Clear the stack. - """ - self.stack = [] - - def do_pop(self): - """usage: pop - - Discard the top element on the stack. - """ - top = self.stack[0] - self.stack = self.stack[1:] - return top - - def do_dup(self): - """usage: dup - - Duplicate the top-of-stack item. - """ - if hasattr(self, 'format'): # If it's an image, do a real copy - dup = self.stack[0].copy() - else: - dup = self.stack[0] - self.stack = [dup] + self.stack - - def do_swap(self): - """usage: swap - - Swap the top-of-stack item with the next one down. - """ - self.stack = [self.stack[1], self.stack[0]] + self.stack[2:] - - # Image module functions (callable) - - def do_new(self): - """usage: new : - - Create and push a greyscale image of given size and color. - """ - xsize = int(self.do_pop()) - ysize = int(self.do_pop()) - color = int(self.do_pop()) - self.push(Image.new("L", (xsize, ysize), color)) - - def do_open(self): - """usage: open - - Open the indicated image, read it, push the image on the stack. - """ - self.push(Image.open(self.do_pop())) - - def do_blend(self): - """usage: blend - - Replace two images and an alpha with the blended image. - """ - image1 = self.do_pop() - image2 = self.do_pop() - alpha = float(self.do_pop()) - self.push(Image.blend(image1, image2, alpha)) - - def do_composite(self): - """usage: composite - - Replace two images and a mask with their composite. - """ - image1 = self.do_pop() - image2 = self.do_pop() - mask = self.do_pop() - self.push(Image.composite(image1, image2, mask)) - - def do_merge(self): - """usage: merge [ [ []]] - - Merge top-of stack images in a way described by the mode. - """ - mode = self.do_pop() - bandlist = [] - for band in mode: - bandlist.append(self.do_pop()) - self.push(Image.merge(mode, bandlist)) - - # Image class methods - - def do_convert(self): - """usage: convert - - Convert the top image to the given mode. - """ - mode = self.do_pop() - image = self.do_pop() - self.push(image.convert(mode)) - - def do_copy(self): - """usage: copy - - Make and push a true copy of the top image. - """ - self.dup() - - def do_crop(self): - """usage: crop - - Crop and push a rectangular region from the current image. - """ - left = int(self.do_pop()) - upper = int(self.do_pop()) - right = int(self.do_pop()) - lower = int(self.do_pop()) - image = self.do_pop() - self.push(image.crop((left, upper, right, lower))) - - def do_draft(self): - """usage: draft - - Configure the loader for a given mode and size. - """ - mode = self.do_pop() - xsize = int(self.do_pop()) - ysize = int(self.do_pop()) - self.push(self.draft(mode, (xsize, ysize))) - - def do_filter(self): - """usage: filter - - Process the top image with the given filter. - """ - import ImageFilter - filter = eval("ImageFilter." + string.upper(self.do_pop())) - image = self.do_pop() - self.push(image.filter(filter)) - - def do_getbbox(self): - """usage: getbbox - - Push left, upper, right, and lower pixel coordinates of the top image. - """ - bounding_box = self.do_pop().getbbox() - self.push(bounding_box[3]) - self.push(bounding_box[2]) - self.push(bounding_box[1]) - self.push(bounding_box[0]) - - def do_getextrema(self): - """usage: extrema - - Push minimum and maximum pixel values of the top image. - """ - extrema = self.do_pop().extrema() - self.push(extrema[1]) - self.push(extrema[0]) - - def do_offset(self): - """usage: offset - - Offset the pixels in the top image. - """ - xoff = int(self.do_pop()) - yoff = int(self.do_pop()) - image = self.do_pop() - self.push(image.offset(xoff, yoff)) - - def do_paste(self): - """usage: paste - - Paste figure image into ground with upper left at given offsets. - """ - figure = self.do_pop() - xoff = int(self.do_pop()) - yoff = int(self.do_pop()) - ground = self.do_pop() - if figure.mode == "RGBA": - ground.paste(figure, (xoff, yoff), figure) - else: - ground.paste(figure, (xoff, yoff)) - self.push(ground) - - def do_resize(self): - """usage: resize - - Resize the top image. - """ - ysize = int(self.do_pop()) - xsize = int(self.do_pop()) - image = self.do_pop() - self.push(image.resize((xsize, ysize))) - - def do_rotate(self): - """usage: rotate - - Rotate image through a given angle - """ - angle = int(self.do_pop()) - image = self.do_pop() - self.push(image.rotate(angle)) - - def do_save(self): - """usage: save - - Save image with default options. - """ - filename = self.do_pop() - image = self.do_pop() - image.save(filename) - - def do_save2(self): - """usage: save2 - - Save image with specified options. - """ - filename = self.do_pop() - options = self.do_pop() - image = self.do_pop() - image.save(filename, None, options) - - def do_show(self): - """usage: show - - Display and pop the top image. - """ - self.do_pop().show() - - def do_thumbnail(self): - """usage: thumbnail - - Modify the top image in the stack to contain a thumbnail of itself. - """ - ysize = int(self.do_pop()) - xsize = int(self.do_pop()) - self.top().thumbnail((xsize, ysize)) - - def do_transpose(self): - """usage: transpose - - Transpose the top image. - """ - transpose = string.upper(self.do_pop()) - image = self.do_pop() - self.push(image.transpose(transpose)) - - # Image attributes - - def do_format(self): - """usage: format - - Push the format of the top image onto the stack. - """ - self.push(self.pop().format) - - def do_mode(self): - """usage: mode - - Push the mode of the top image onto the stack. - """ - self.push(self.pop().mode) - - def do_size(self): - """usage: size - - Push the image size on the stack as (y, x). - """ - size = self.pop().size - self.push(size[0]) - self.push(size[1]) - - # ImageChops operations - - def do_invert(self): - """usage: invert - - Invert the top image. - """ - import ImageChops - self.push(ImageChops.invert(self.do_pop())) - - def do_lighter(self): - """usage: lighter - - Pop the two top images, push an image of the lighter pixels of both. - """ - import ImageChops - image1 = self.do_pop() - image2 = self.do_pop() - self.push(ImageChops.lighter(image1, image2)) - - def do_darker(self): - """usage: darker - - Pop the two top images, push an image of the darker pixels of both. - """ - import ImageChops - image1 = self.do_pop() - image2 = self.do_pop() - self.push(ImageChops.darker(image1, image2)) - - def do_difference(self): - """usage: difference - - Pop the two top images, push the difference image - """ - import ImageChops - image1 = self.do_pop() - image2 = self.do_pop() - self.push(ImageChops.difference(image1, image2)) - - def do_multiply(self): - """usage: multiply - - Pop the two top images, push the multiplication image. - """ - import ImageChops - image1 = self.do_pop() - image2 = self.do_pop() - self.push(ImageChops.multiply(image1, image2)) - - def do_screen(self): - """usage: screen - - Pop the two top images, superimpose their inverted versions. - """ - import ImageChops - image2 = self.do_pop() - image1 = self.do_pop() - self.push(ImageChops.screen(image1, image2)) - - def do_add(self): - """usage: add - - Pop the two top images, produce the scaled sum with offset. - """ - import ImageChops - image1 = self.do_pop() - image2 = self.do_pop() - scale = float(self.do_pop()) - offset = int(self.do_pop()) - self.push(ImageChops.add(image1, image2, scale, offset)) - - def do_subtract(self): - """usage: subtract - - Pop the two top images, produce the scaled difference with offset. - """ - import ImageChops - image1 = self.do_pop() - image2 = self.do_pop() - scale = float(self.do_pop()) - offset = int(self.do_pop()) - self.push(ImageChops.subtract(image1, image2, scale, offset)) - - # ImageEnhance classes - - def do_color(self): - """usage: color - - Enhance color in the top image. - """ - import ImageEnhance - factor = float(self.do_pop()) - image = self.do_pop() - enhancer = ImageEnhance.Color(image) - self.push(enhancer.enhance(factor)) - - def do_contrast(self): - """usage: contrast - - Enhance contrast in the top image. - """ - import ImageEnhance - factor = float(self.do_pop()) - image = self.do_pop() - enhancer = ImageEnhance.Color(image) - self.push(enhancer.enhance(factor)) - - def do_brightness(self): - """usage: brightness - - Enhance brightness in the top image. - """ - import ImageEnhance - factor = float(self.do_pop()) - image = self.do_pop() - enhancer = ImageEnhance.Color(image) - self.push(enhancer.enhance(factor)) - - def do_sharpness(self): - """usage: sharpness - - Enhance sharpness in the top image. - """ - import ImageEnhance - factor = float(self.do_pop()) - image = self.do_pop() - enhancer = ImageEnhance.Color(image) - self.push(enhancer.enhance(factor)) - - # The interpreter loop - - def execute(self, list): - "Interpret a list of PILDriver commands." - list.reverse() - while len(list) > 0: - self.push(list[0]) - list = list[1:] - if self.verbose: - print "Stack: " + `self.stack` - top = self.top() - if type(top) != type(""): - continue; - funcname = "do_" + top - if not hasattr(self, funcname): - continue - else: - self.do_pop() - func = getattr(self, funcname) - func() - -if __name__ == '__main__': - import sys - try: - import readline - except ImportError: - pass # not available on all platforms - - # If we see command-line arguments, interpret them as a stack state - # and execute. Otherwise go interactive. - - driver = PILDriver() - if len(sys.argv[1:]) > 0: - driver.execute(sys.argv[1:]) - else: - print "PILDriver says hello." - while 1: - try: - line = raw_input('pildriver> '); - except EOFError: - print "\nPILDriver says goodbye." - break - driver.execute(string.split(line)) - print driver.stack - -# The following sets edit modes for GNU EMACS -# Local Variables: -# mode:python -# End: diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py deleted file mode 100755 index 6957257965e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfile.py +++ /dev/null @@ -1,94 +0,0 @@ -#! /usr/local/bin/python -# -# The Python Imaging Library. -# $Id$ -# -# a utility to identify image files -# -# this script identifies image files, extracting size and -# pixel mode information for known file formats. Note that -# you don't need the PIL C extension to use this module. -# -# History: -# 0.0 1995-09-01 fl Created -# 0.1 1996-05-18 fl Modified options, added debugging mode -# 0.2 1996-12-29 fl Added verify mode -# 0.3 1999-06-05 fl Don't mess up on class exceptions (1.5.2 and later) -# 0.4 2003-09-30 fl Expand wildcards on Windows; robustness tweaks -# - -import site -import getopt, glob, sys - -from PIL import Image - -if len(sys.argv) == 1: - print "PIL File 0.4/2003-09-30 -- identify image files" - print "Usage: pilfile [option] files..." - print "Options:" - print " -f list supported file formats" - print " -i show associated info and tile data" - print " -v verify file headers" - print " -q quiet, don't warn for unidentified/missing/broken files" - sys.exit(1) - -try: - opt, args = getopt.getopt(sys.argv[1:], "fqivD") -except getopt.error, v: - print v - sys.exit(1) - -verbose = quiet = verify = 0 - -for o, a in opt: - if o == "-f": - Image.init() - id = Image.ID[:] - id.sort() - print "Supported formats:" - for i in id: - print i, - sys.exit(1) - elif o == "-i": - verbose = 1 - elif o == "-q": - quiet = 1 - elif o == "-v": - verify = 1 - elif o == "-D": - Image.DEBUG = Image.DEBUG + 1 - -def globfix(files): - # expand wildcards where necessary - if sys.platform == "win32": - out = [] - for file in files: - if glob.has_magic(file): - out.extend(glob.glob(file)) - else: - out.append(file) - return out - return files - -for file in globfix(args): - try: - im = Image.open(file) - print "%s:" % file, im.format, "%dx%d" % im.size, im.mode, - if verbose: - print im.info, im.tile, - print - if verify: - try: - im.verify() - except: - if not quiet: - print "failed to verify image", - print "(%s:%s)" % (sys.exc_type, sys.exc_value) - except IOError, v: - if not quiet: - print file, "failed:", v - except: - import traceback - if not quiet: - print file, "failed:", "unexpected error" - traceback.print_exc(file=sys.stdout) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py deleted file mode 100755 index df08d4c083e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilfont.py +++ /dev/null @@ -1,54 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# PIL raster font compiler -# -# history: -# 1997-08-25 fl created -# 2002-03-10 fl use "from PIL import" -# - -VERSION = "0.4" - -import site -import glob, os, sys - -# drivers -from PIL import BdfFontFile -from PIL import PcfFontFile - -if len(sys.argv) <= 1: - print "PILFONT", VERSION, "-- PIL font compiler." - print - print "Usage: pilfont fontfiles..." - print - print "Convert given font files to the PIL raster font format." - print "This version of pilfont supports X BDF and PCF fonts." - sys.exit(1) - -files = [] -for f in sys.argv[1:]: - files = files + glob.glob(f) - -for f in files: - - print f + "...", - - try: - - fp = open(f, "rb") - - try: - p = PcfFontFile.PcfFontFile(fp) - except SyntaxError: - fp.seek(0) - p = BdfFontFile.BdfFontFile(fp) - - p.save(f) - - except (SyntaxError, IOError): - print "failed" - - else: - print "OK" diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py deleted file mode 100755 index a98b39f7d9b..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/pilprint.py +++ /dev/null @@ -1,93 +0,0 @@ -#! /usr/local/bin/python -# -# The Python Imaging Library. -# $Id$ -# -# print image files to postscript printer -# -# History: -# 0.1 1996-04-20 fl Created -# 0.2 1996-10-04 fl Use draft mode when converting. -# 0.3 2003-05-06 fl Fixed a typo or two. -# - -VERSION = "pilprint 0.3/2003-05-05" - -from PIL import Image -from PIL import PSDraw - -letter = ( 1.0*72, 1.0*72, 7.5*72, 10.0*72 ) - -def description(file, image): - import os - title = os.path.splitext(os.path.split(file)[1])[0] - format = " (%dx%d " - if image.format: - format = " (" + image.format + " %dx%d " - return title + format % image.size + image.mode + ")" - -import getopt, os, sys - -if len(sys.argv) == 1: - print "PIL Print 0.2a1/96-10-04 -- print image files" - print "Usage: pilprint files..." - print "Options:" - print " -c colour printer (default is monochrome)" - print " -p print via lpr (default is stdout)" - print " -P same as -p but use given printer" - sys.exit(1) - -try: - opt, argv = getopt.getopt(sys.argv[1:], "cdpP:") -except getopt.error, v: - print v - sys.exit(1) - -printer = None # print to stdout -monochrome = 1 # reduce file size for most common case - -for o, a in opt: - if o == "-d": - # debug: show available drivers - Image.init() - print Image.ID - sys.exit(1) - elif o == "-c": - # colour printer - monochrome = 0 - elif o == "-p": - # default printer channel - printer = "lpr" - elif o == "-P": - # printer channel - printer = "lpr -P%s" % a - -for file in argv: - try: - - im = Image.open(file) - - title = description(file, im) - - if monochrome and im.mode not in ["1", "L"]: - im.draft("L", im.size) - im = im.convert("L") - - if printer: - fp = os.popen(printer, "w") - else: - fp = sys.stdout - - ps = PSDraw.PSDraw(fp) - - ps.begin_document() - ps.setfont("Helvetica-Narrow-Bold", 18) - ps.text((letter[0], letter[3]+24), title) - ps.setfont("Helvetica-Narrow-Bold", 8) - ps.text((letter[0], letter[1]-30), VERSION) - ps.image(letter, im) - ps.end_document() - - except: - print "cannot print image", - print "(%s:%s)" % (sys.exc_type, sys.exc_value) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py deleted file mode 100755 index 9ca4500bfd4..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/player.py +++ /dev/null @@ -1,121 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# - -from Tkinter import * -from PIL import Image, ImageTk -import sys - - -Image.DEBUG = 0 - - -# -------------------------------------------------------------------- -# experimental: support ARG animation scripts - -import ArgImagePlugin - -def applet_hook(animation, images): - app = animation(animation_display, images) - app.run() - -ArgImagePlugin.APPLET_HOOK = applet_hook - -class AppletDisplay: - def __init__(self, ui): - self.__ui = ui - def paste(self, im, bbox): - self.__ui.image.paste(im, bbox) - def update(self): - self.__ui.update_idletasks() - -# -------------------------------------------------------------------- -# an image animation player - -class UI(Label): - - def __init__(self, master, im): - if type(im) == type([]): - # list of images - self.im = im[1:] - im = self.im[0] - else: - # sequence - self.im = im - - if im.mode == "1": - self.image = ImageTk.BitmapImage(im, foreground="white") - else: - self.image = ImageTk.PhotoImage(im) - - # APPLET SUPPORT (very crude, and not 100% safe) - global animation_display - animation_display = AppletDisplay(self) - - Label.__init__(self, master, image=self.image, bg="black", bd=0) - - self.update() - - try: - duration = im.info["duration"] - except KeyError: - duration = 100 - self.after(duration, self.next) - - def next(self): - - if type(self.im) == type([]): - - try: - im = self.im[0] - del self.im[0] - self.image.paste(im) - except IndexError: - return # end of list - - else: - - try: - im = self.im - im.seek(im.tell() + 1) - self.image.paste(im) - except EOFError: - return # end of file - - try: - duration = im.info["duration"] - except KeyError: - duration = 100 - self.after(duration, self.next) - - self.update_idletasks() - - -# -------------------------------------------------------------------- -# script interface - -if __name__ == "__main__": - - if not sys.argv[1:]: - print "Syntax: python player.py imagefile(s)" - sys.exit(1) - - filename = sys.argv[1] - - root = Tk() - root.title(filename) - - if len(sys.argv) > 2: - # list of images - print "loading..." - im = [] - for filename in sys.argv[1:]: - im.append(Image.open(filename)) - else: - # sequence - im = Image.open(filename) - - UI(root, im).pack() - - root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py deleted file mode 100755 index eb510987267..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/thresholder.py +++ /dev/null @@ -1,68 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# -# this demo script illustrates how a 1-bit BitmapImage can be used -# as a dynamically updated overlay -# - -from Tkinter import * -from PIL import Image, ImageTk -import sys - -# -# an image viewer - -class UI(Frame): - def __init__(self, master, im, value = 128): - Frame.__init__(self, master) - - self.image = im - self.value = value - - self.canvas = Canvas(self, width=im.size[0], height=im.size[1]) - self.backdrop = ImageTk.PhotoImage(im) - self.canvas.create_image(0, 0, image=self.backdrop, anchor=NW) - self.canvas.pack() - - scale = Scale(self, orient=HORIZONTAL, from_=0, to=255, - resolution=1, command=self.update, length=256) - scale.set(value) - scale.bind("", self.redraw) - scale.pack() - - # uncomment the following line for instant feedback (might - # be too slow on some platforms) - # self.redraw() - - def update(self, value): - self.value = eval(value) - - self.redraw() - - def redraw(self, event = None): - - # create overlay (note the explicit conversion to mode "1") - im = self.image.point(lambda v,t=self.value: v>=t, "1") - self.overlay = ImageTk.BitmapImage(im, foreground="green") - - # update canvas - self.canvas.delete("overlay") - self.canvas.create_image(0, 0, image=self.overlay, anchor=NW, - tags="overlay") - -# -------------------------------------------------------------------- -# main - -root = Tk() - -im = Image.open(sys.argv[1]) - -if im.mode != "L": - im = im.convert("L") - -# im.thumbnail((320,200)) - -UI(root, im).pack() - -root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py deleted file mode 100755 index 6e4dc8b67a1..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Scripts/viewer.py +++ /dev/null @@ -1,46 +0,0 @@ -# -# The Python Imaging Library -# $Id$ -# - -from Tkinter import * -from PIL import Image, ImageTk - -# -# an image viewer - -class UI(Label): - - def __init__(self, master, im): - - if im.mode == "1": - # bitmap image - self.image = ImageTk.BitmapImage(im, foreground="white") - Label.__init__(self, master, image=self.image, bg="black", bd=0) - - else: - # photo image - self.image = ImageTk.PhotoImage(im) - Label.__init__(self, master, image=self.image, bd=0) - -# -# script interface - -if __name__ == "__main__": - - import sys - - if not sys.argv[1:]: - print "Syntax: python viewer.py imagefile" - sys.exit(1) - - filename = sys.argv[1] - - root = Tk() - root.title(filename) - - im = Image.open(filename) - - UI(root, im).pack() - - root.mainloop() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt deleted file mode 100755 index 2d787983b75..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/booster.txt +++ /dev/null @@ -1,108 +0,0 @@ -==================================================================== -The Photoimage Booster Patch (for Windows 95/NT) -==================================================================== - - This patch kit boosts performance for 16/24-bit displays. The -first patch is required on Tk 4.2 (where it fixes the problems for -16-bit displays) and later versions, with the exception for Tk 8.0b1 -where Sun added something similar themselves, only to remove it in -8.0b2. By installing both patches, Tk's PhotoImage handling becomes -much faster on both 16-bit and 24-bit displays. The patch has been -tested with Tk 4.2 and 8.0. - - Here's a benchmark, made with a sample program which loads two -512x512 greyscale PGM's, and two 512x512 colour PPM's, and displays -each of them in a separate toplevel windows. Tcl/Tk was compiled -with Visual C 4.0, and run on a P100 under Win95. Image load times -are not included in the timings: - - 8-bit 16-bit 24-bit --------------------------------------------------------------------- -1. original 4.2 code 5.52 s 8.57 s 3.79 s -2. booster patch 5.49 s 1.87 s 1.82 s - - speedup None 4.6x 2.1x - -==================================================================== - -Here's the patches: - -1. For portability and speed, the best thing under Windows is to -treat 16-bit displays as if they were 24-bit. The Windows device -drivers take care of the rest. - - ---------------------------------------------------------------- - If you have Tk 4.1 or Tk 8.0b1, you don't have to apply this - patch! It only applies to Tk 4.2, Tk 8.0a[12] and Tk 8.0b2. - ---------------------------------------------------------------- - -In win/tkWinImage.c, change the following line in XCreateImage: - - imagePtr->bits_per_pixel = depth; - -to - -/* ==================================================================== */ -/* The tk photo image booster patch -- patch section 1 */ -/* ==================================================================== */ - - if (visual->class == TrueColor) - /* true colour is stored as 3 bytes: (blue, green, red) */ - imagePtr->bits_per_pixel = 24; - else - imagePtr->bits_per_pixel = depth; - -/* ==================================================================== */ - - -2. The DitherInstance implementation is not good. It's especially -bad on highend truecolour displays. IMO, it should be rewritten from -scratch (some other day...). - - Anyway, the following band-aid makes the situation a little bit -better under Windows. This hack trades some marginal quality (no -dithering on 16-bit displays) for a dramatic performance boost. -Requires patch 1, unless you're using Tk 4.1 or Tk 8.0b1. - -In generic/tkImgPhoto.c, add the #ifdef section to the DitherInstance -function: - - for (; height > 0; height -= nLines) { - if (nLines > height) { - nLines = height; - } - dstLinePtr = (unsigned char *) imagePtr->data; - yEnd = yStart + nLines; - -/* ==================================================================== */ -/* The tk photo image booster patch -- patch section 2 */ -/* ==================================================================== */ - -#ifdef __WIN32__ - if (colorPtr->visualInfo.class == TrueColor - && instancePtr->gamma == 1.0) { - /* Windows hicolor/truecolor booster */ - for (y = yStart; y < yEnd; ++y) { - destBytePtr = dstLinePtr; - srcPtr = srcLinePtr; - for (x = xStart; x < xEnd; ++x) { - destBytePtr[0] = srcPtr[2]; - destBytePtr[1] = srcPtr[1]; - destBytePtr[2] = srcPtr[0]; - destBytePtr += 3; srcPtr += 3; - } - srcLinePtr += lineLength; - dstLinePtr += bytesPerLine; - } - } else -#endif - -/* ==================================================================== */ - - for (y = yStart; y < yEnd; ++y) { - srcPtr = srcLinePtr; - errPtr = errLinePtr; - destBytePtr = dstLinePtr; - -==================================================================== -last updated: 97-07-03/fl diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt deleted file mode 100755 index e24d36301c7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/install.txt +++ /dev/null @@ -1,41 +0,0 @@ -==================================================================== -Using PIL With Tkinter -==================================================================== - -Starting with 1.0 final (release candidate 2 and later, to be -precise), PIL can attach itself to Tkinter in flight. As a result, -you no longer need to rebuild the Tkinter extension to be able to -use PIL. - -However, if you cannot get the this to work on your platform, you -can do it in the old way: - -* Adding Tkinter support - -1. Compile Python's _tkinter.c with the WITH_APPINIT and WITH_PIL - flags set, and link it with tkImaging.c and tkappinit.c. To - do this, copy the former to the Modules directory, and edit - the _tkinter line in Setup (or Setup.in) according to the - instructions in that file. - - NOTE: if you have an old Python version, the tkappinit.c - file is not included by default. If this is the case, you - will have to add the following lines to tkappinit.c, after - the MOREBUTTONS stuff: - - { - extern void TkImaging_Init(Tcl_Interp* interp); - TkImaging_Init(interp); - } - - This registers a Tcl command called "PyImagingPhoto", which is - use to communicate between PIL and Tk's PhotoImage handler. - - You must also change the _tkinter line in Setup (or Setup.in) - to something like: - - _tkinter _tkinter.c tkImaging.c tkappinit.c -DWITH_APPINIT - -I/usr/local/include -L/usr/local/lib -ltk8.0 -ltcl8.0 -lX11 - - - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt deleted file mode 100755 index e7c46c65fea..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/pilbitmap.txt +++ /dev/null @@ -1,149 +0,0 @@ -==================================================================== -The PIL Bitmap Booster Patch -==================================================================== - -The pilbitmap booster patch greatly improves performance of the -ImageTk.BitmapImage constructor. Unfortunately, the design of Tk -doesn't allow us to do this from the tkImaging interface module, so -you have to patch the Tk sources. - -Once installed, the ImageTk module will automatically detect this -patch. - -(Note: this patch has been tested with Tk 8.0 on Win32 only, but it -should work just fine on other platforms as well). - -1. To the beginning of TkGetBitmapData (in generic/tkImgBmap.c), add - the following stuff: - ------------------------------------------------------------------------- - int width, height, numBytes, hotX, hotY; - char *p, *end, *expandedFileName; - ParseInfo pi; - char *data = NULL; - Tcl_DString buffer; - -/* ==================================================================== */ -/* The pilbitmap booster patch -- patch section */ -/* ==================================================================== */ - - char *PILGetBitmapData(); - - if (string) { - /* Is this a PIL bitmap reference? */ - data = PILGetBitmapData(string, widthPtr, heightPtr, hotXPtr, hotYPtr); - if (data) - return data; - } - -/* ==================================================================== */ - - pi.string = string; - if (string == NULL) { - if (Tcl_IsSafe(interp)) { ------------------------------------------------------------------------- - - -2. Append the following to the same file (you may wish to include -Imaging.h instead of copying the struct declaration...) - ------------------------------------------------------------------------- - -/* ==================================================================== */ -/* The pilbitmap booster patch -- code section */ -/* ==================================================================== */ - -/* Imaging declaration boldly copied from Imaging.h (!) */ - -typedef struct ImagingInstance *Imaging; /* a.k.a. ImagingImage :-) */ - -typedef unsigned char UINT8; -typedef int INT32; - -struct ImagingInstance { - - /* Format */ - char mode[4+1]; /* Band names ("1", "L", "P", "RGB", "RGBA", "CMYK") */ - int type; /* Always 0 in this version */ - int depth; /* Always 8 in this version */ - int bands; /* Number of bands (1, 3, or 4) */ - int xsize; /* Image dimension. */ - int ysize; - - /* Colour palette (for "P" images only) */ - void* palette; - - /* Data pointers */ - UINT8 **image8; /* Set for 8-bit image (pixelsize=1). */ - INT32 **image32; /* Set for 32-bit image (pixelsize=4). */ - - /* Internals */ - char **image; /* Actual raster data. */ - char *block; /* Set if data is allocated in a single block. */ - - int pixelsize; /* Size of a pixel, in bytes (1 or 4) */ - int linesize; /* Size of a line, in bytes (xsize * pixelsize) */ - - /* Virtual methods */ - void (*im_delete)(Imaging *); - -}; - -/* The pilbitmap booster patch allows you to pass PIL images to the - Tk bitmap decoder. Passing images this way is much more efficient - than using the "tobitmap" method. */ - -char * -PILGetBitmapData(string, widthPtr, heightPtr, hotXPtr, hotYPtr) - char *string; - int *widthPtr, *heightPtr; - int *hotXPtr, *hotYPtr; -{ - char* data; - char* p; - int y; - Imaging im; - - if (strncmp(string, "PIL:", 4) != 0) - return NULL; - - im = (Imaging) atol(string + 4); - - if (strcmp(im->mode, "1") != 0 && strcmp(im->mode, "L") != 0) - return NULL; - - data = p = (char *) ckalloc((unsigned) ((im->xsize+7)/8) * im->ysize); - - for (y = 0; y < im->ysize; y++) { - char* in = im->image8[y]; - int i, m, b; - b = 0; m = 1; - for (i = 0; i < im->xsize; i++) { - if (in[i] != 0) - b |= m; - m <<= 1; - if (m == 256){ - *p++ = b; - b = 0; m = 1; - } - } - if (m != 1) - *p++ = b; - } - - *widthPtr = im->xsize; - *heightPtr = im->ysize; - *hotXPtr = -1; - *hotYPtr = -1; - - return data; -} - -/* ==================================================================== */ - ------------------------------------------------------------------------- - -3. Recompile Tk and relink the _tkinter module (where necessary). - -==================================================================== -Last updated: 97-05-17/fl diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c deleted file mode 100755 index 5963ee24c7d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/Tk/tkImaging.c +++ /dev/null @@ -1,265 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * TK interface for Python Imaging objects - * - * Copies (parts of) a named display memory to a photo image object. - * Also contains code to create an display memory. Under Tk, a - * display memory is simply an "L" or "RGB" image memory that is - * allocated in a single block. - * - * To use this module, import the _imagingtk module (ImageTk does - * this for you). - * - * If you're using Python in an embedded context, you can add the - * following lines to your Tcl_AppInit function (in tkappinit.c) - * instead. Put them after the calls to Tcl_Init and Tk_Init: - * - * { - * extern void TkImaging_Init(Tcl_Interp* interp); - * TkImaging_Init(interp); - * } - * - * This registers a Tcl command called "PyImagingPhoto", which is used - * to communicate between PIL and Tk's PhotoImage handler. - * - * Compile and link tkImaging.c with tkappinit.c and _tkinter (see the - * Setup file for details on how to use tkappinit.c). Note that - * _tkinter.c must be compiled with WITH_APPINIT. - * - * History: - * 1995-09-12 fl Created - * 1996-04-08 fl Ready for release - * 1997-05-09 fl Use command instead of image type - * 2001-03-18 fl Initialize alpha layer pointer (struct changed in 8.3) - * 2003-04-23 fl Fixed building for Tk 8.4.1 and later (Jack Jansen) - * 2004-06-24 fl Fixed building for Tk 8.4.6 and later. - * - * Copyright (c) 1997-2004 by Secret Labs AB - * Copyright (c) 1995-2004 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - -#define TK (TK_MAJOR_VERSION*10 + TK_MINOR_VERSION) - -/* This is needed for (at least) Tk 8.4.6 and later, to avoid warnings - for the Tcl_CreateCommand command. */ -#define USE_COMPAT_CONST - -#include "tk.h" - -#include "Imaging.h" - -#include - - -static Imaging -ImagingFind(const char* name) -{ - long id; - - /* FIXME: use CObject instead? */ - id = atol(name); - if (!id) - return NULL; - - return (Imaging) id; -} - - -static int -PyImagingPhotoPut(ClientData clientdata, Tcl_Interp* interp, - int argc, char **argv) -{ - Imaging im; - Tk_PhotoHandle photo; - Tk_PhotoImageBlock block; - - if (argc != 3) { - Tcl_AppendResult(interp, "usage: ", argv[0], - " destPhoto srcImage", (char *) NULL); - return TCL_ERROR; - } - - /* get Tcl PhotoImage handle */ - photo = Tk_FindPhoto(interp, argv[1]); - if (photo == NULL) { - Tcl_AppendResult( - interp, "destination photo must exist", (char *) NULL - ); - return TCL_ERROR; - } - - /* get PIL Image handle */ - im = ImagingFind(argv[2]); - if (!im) { - Tcl_AppendResult(interp, "bad name", (char*) NULL); - return TCL_ERROR; - } - if (!im->block) { - Tcl_AppendResult(interp, "bad display memory", (char*) NULL); - return TCL_ERROR; - } - - /* Active region */ -#if 0 - if (src_xoffset + xsize > im->xsize) - xsize = im->xsize - src_xoffset; - if (src_yoffset + ysize > im->ysize) - ysize = im->ysize - src_yoffset; - if (xsize < 0 || ysize < 0 - || src_xoffset >= im->xsize - || src_yoffset >= im->ysize) - return TCL_OK; -#endif - - /* Mode */ - - if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) { - block.pixelSize = 1; - block.offset[0] = block.offset[1] = block.offset[2] = 0; - } else if (strncmp(im->mode, "RGB", 3) == 0) { - block.pixelSize = 4; - block.offset[0] = 0; - block.offset[1] = 1; - block.offset[2] = 2; - if (strcmp(im->mode, "RGBA") == 0) - block.offset[3] = 3; /* alpha (or reserved, under 8.2) */ - else - block.offset[3] = 0; /* no alpha */ - } else { - Tcl_AppendResult(interp, "Bad mode", (char*) NULL); - return TCL_ERROR; - } - - block.width = im->xsize; - block.height = im->ysize; - block.pitch = im->linesize; - block.pixelPtr = (unsigned char*) im->block; -#if 0 - block.pixelPtr = (unsigned char*) im->block + - src_yoffset * im->linesize + - src_xoffset * im->pixelsize; -#endif - -#if TK < 84 /* < 8.4.0 */ - if (strcmp(im->mode, "RGBA") == 0) { - /* Copy non-transparent pixels to photo image */ - int x, y; - Tk_PhotoImageBlock run; - - /* Clear current contents */ - Tk_PhotoBlank(photo); - - /* Setup run descriptor */ - run.height = 1; - run.pitch = block.pitch; - run.pixelSize = block.pixelSize; - run.offset[0] = 0; - run.offset[1] = 1; - run.offset[2] = 2; - run.offset[3] = 0; /* no alpha (or reserved, under 8.2) */ - - /* Copy opaque runs to photo image */ - for (y = 0; y < block.height; y++) { - unsigned char* p = block.pixelPtr + y*block.pitch; - unsigned char* s = p; - int w = 0; - for (x = 0; x < block.width; x++) { - if (p[3]) { - /* opaque: add pixel to current run */ - if (w == 0) - s = p; - w = w + 1; - } else if (s) { - /* copy run to photo image */ - if (w > 0) { - run.width = w; - run.pixelPtr = s; - Tk_PhotoPutBlock(photo, &run, x-w, y, run.width, 1); - } - w = 0; - } - p += block.pixelSize; - } - if (w > 0) { - /* copy final run, if any */ - run.width = w; - run.pixelPtr = s; - Tk_PhotoPutBlock(photo, &run, x-w, y, run.width, 1); - } - } - - } else - - /* Copy opaque block to photo image, and leave the rest to TK */ - Tk_PhotoPutBlock(photo, &block, 0, 0, block.width, block.height); - -#else /* Tk 8.4 and newer */ -#if TK < 85 /* Tk 8.4 */ - Tk_PhotoPutBlock(photo, &block, 0, 0, block.width, block.height, - TK_PHOTO_COMPOSITE_SET); - if (strcmp(im->mode, "RGBA") == 0) - /* Tk workaround: we need apply ToggleComplexAlphaIfNeeded */ - /* (fixed in Tk 8.5a3) */ - Tk_PhotoSetSize(photo, block.width, block.height); -#else /* Tk 8.5 */ - Tk_PhotoPutBlock(interp, photo, &block, 0, 0, block.width, block.height, - TK_PHOTO_COMPOSITE_SET); -#endif -#endif - - return TCL_OK; -} - - -static int -PyImagingPhotoGet(ClientData clientdata, Tcl_Interp* interp, - int argc, char **argv) -{ - Tk_PhotoHandle photo; - Tk_PhotoImageBlock block; - - if (argc != 2) { - Tcl_AppendResult(interp, "usage: ", argv[0], - " srcPhoto", (char *) NULL); - return TCL_ERROR; - } - - /* get Tcl PhotoImage handle */ - photo = Tk_FindPhoto(interp, argv[1]); - if (photo == NULL) { - Tcl_AppendResult( - interp, "source photo must exist", (char *) NULL - ); - return TCL_ERROR; - } - - Tk_PhotoGetImage(photo, &block); - - printf("pixelPtr = %p\n", block.pixelPtr); - printf("width = %d\n", block.width); - printf("height = %d\n", block.height); - printf("pitch = %d\n", block.pitch); - printf("pixelSize = %d\n", block.pixelSize); - printf("offset = %d %d %d %d\n", block.offset[0], block.offset[1], - block.offset[2], block.offset[3]); - - Tcl_AppendResult( - interp, "this function is not yet supported", (char *) NULL - ); - - return TCL_ERROR; -} - - -void -TkImaging_Init(Tcl_Interp* interp) -{ - Tcl_CreateCommand(interp, "PyImagingPhoto", PyImagingPhotoPut, - (ClientData) 0, (Tcl_CmdDeleteProc*) NULL); - Tcl_CreateCommand(interp, "PyImagingPhotoGet", PyImagingPhotoGet, - (ClientData) 0, (Tcl_CmdDeleteProc*) NULL); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c deleted file mode 100755 index c21897decdc..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imaging.c +++ /dev/null @@ -1,3281 +0,0 @@ -/* - * The Python Imaging Library. - * - * the imaging library bindings - * - * history: - * 1995-09-24 fl Created - * 1996-03-24 fl Ready for first public release (release 0.0) - * 1996-03-25 fl Added fromstring (for Jack's "img" library) - * 1996-03-28 fl Added channel operations - * 1996-03-31 fl Added point operation - * 1996-04-08 fl Added new/new_block/new_array factories - * 1996-04-13 fl Added decoders - * 1996-05-04 fl Added palette hack - * 1996-05-12 fl Compile cleanly as C++ - * 1996-05-19 fl Added matrix conversions, gradient fills - * 1996-05-27 fl Added display_mode - * 1996-07-22 fl Added getbbox, offset - * 1996-07-23 fl Added sequence semantics - * 1996-08-13 fl Added logical operators, point mode - * 1996-08-16 fl Modified paste interface - * 1996-09-06 fl Added putdata methods, use abstract interface - * 1996-11-01 fl Added xbm encoder - * 1996-11-04 fl Added experimental path stuff, draw_lines, etc - * 1996-12-10 fl Added zip decoder, crc32 interface - * 1996-12-14 fl Added modulo arithmetics - * 1996-12-29 fl Added zip encoder - * 1997-01-03 fl Added fli and msp decoders - * 1997-01-04 fl Added experimental sun_rle and tga_rle decoders - * 1997-01-05 fl Added gif encoder, getpalette hack - * 1997-02-23 fl Added histogram mask - * 1997-05-12 fl Minor tweaks to match the IFUNC95 interface - * 1997-05-21 fl Added noise generator, spread effect - * 1997-06-05 fl Added mandelbrot generator - * 1997-08-02 fl Modified putpalette to coerce image mode if necessary - * 1998-01-11 fl Added INT32 support - * 1998-01-22 fl Fixed draw_points to draw the last point too - * 1998-06-28 fl Added getpixel, getink, draw_ink - * 1998-07-12 fl Added getextrema - * 1998-07-17 fl Added point conversion to arbitrary formats - * 1998-09-21 fl Added support for resampling filters - * 1998-09-22 fl Added support for quad transform - * 1998-12-29 fl Added support for arcs, chords, and pieslices - * 1999-01-10 fl Added some experimental arrow graphics stuff - * 1999-02-06 fl Added draw_bitmap, font acceleration stuff - * 2001-04-17 fl Fixed some egcs compiler nits - * 2001-09-17 fl Added screen grab primitives (win32) - * 2002-03-09 fl Added stretch primitive - * 2002-03-10 fl Fixed filter handling in rotate - * 2002-06-06 fl Added I, F, and RGB support to putdata - * 2002-06-08 fl Added rankfilter - * 2002-06-09 fl Added support for user-defined filter kernels - * 2002-11-19 fl Added clipboard grab primitives (win32) - * 2002-12-11 fl Added draw context - * 2003-04-26 fl Tweaks for Python 2.3 beta 1 - * 2003-05-21 fl Added createwindow primitive (win32) - * 2003-09-13 fl Added thread section hooks - * 2003-09-15 fl Added expand helper - * 2003-09-26 fl Added experimental LA support - * 2004-02-21 fl Handle zero-size images in quantize - * 2004-06-05 fl Added ptr attribute (used to access Imaging objects) - * 2004-06-05 fl Don't crash when fetching pixels from zero-wide images - * 2004-09-17 fl Added getcolors - * 2004-10-04 fl Added modefilter - * 2005-10-02 fl Added access proxy - * 2006-06-18 fl Always draw last point in polyline - * - * Copyright (c) 1997-2006 by Secret Labs AB - * Copyright (c) 1995-2006 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - - -#include "Python.h" - -#include "Imaging.h" - - -/* Configuration stuff. Feel free to undef things you don't need. */ -#define WITH_IMAGECHOPS /* ImageChops support */ -#define WITH_IMAGEDRAW /* ImageDraw support */ -#define WITH_MAPPING /* use memory mapping to read some file formats */ -#define WITH_IMAGEPATH /* ImagePath stuff */ -#define WITH_ARROW /* arrow graphics stuff (experimental) */ -#define WITH_EFFECTS /* special effects */ -#define WITH_QUANTIZE /* quantization support */ -#define WITH_RANKFILTER /* rank filter */ -#define WITH_MODEFILTER /* mode filter */ -#define WITH_THREADING /* "friendly" threading support */ -#define WITH_UNSHARPMASK /* Kevin Cazabon's unsharpmask module */ - -#define WITH_DEBUG /* extra debugging interfaces */ - -/* PIL Plus extensions */ -#undef WITH_CRACKCODE /* pil plus */ - -#undef VERBOSE - -#define CLIP(x) ((x) <= 0 ? 0 : (x) < 256 ? (x) : 255) - -#define B16(p, i) ((((int)p[(i)]) << 8) + p[(i)+1]) -#define L16(p, i) ((((int)p[(i)+1]) << 8) + p[(i)]) -#define S16(v) ((v) < 32768 ? (v) : ((v) - 65536)) - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#if PY_VERSION_HEX < 0x02050000 -#define Py_ssize_t int -#define ssizeargfunc intargfunc -#define ssizessizeargfunc intintargfunc -#define ssizeobjargproc intobjargproc -#define ssizessizeobjargproc intintobjargproc -#endif - -/* -------------------------------------------------------------------- */ -/* OBJECT ADMINISTRATION */ -/* -------------------------------------------------------------------- */ - -typedef struct { - PyObject_HEAD - Imaging image; - ImagingAccess access; -} ImagingObject; - -staticforward PyTypeObject Imaging_Type; - -#ifdef WITH_IMAGEDRAW - -typedef struct -{ - /* to write a character, cut out sxy from glyph data, place - at current position plus dxy, and advance by (dx, dy) */ - int dx, dy; - int dx0, dy0, dx1, dy1; - int sx0, sy0, sx1, sy1; -} Glyph; - -typedef struct { - PyObject_HEAD - ImagingObject* ref; - Imaging bitmap; - int ysize; - int baseline; - Glyph glyphs[256]; -} ImagingFontObject; - -staticforward PyTypeObject ImagingFont_Type; - -typedef struct { - PyObject_HEAD - ImagingObject* image; - UINT8 ink[4]; - int blend; -} ImagingDrawObject; - -staticforward PyTypeObject ImagingDraw_Type; - -#endif - -typedef struct { - PyObject_HEAD - ImagingObject* image; - int readonly; -} PixelAccessObject; - -staticforward PyTypeObject PixelAccess_Type; - -PyObject* -PyImagingNew(Imaging imOut) -{ - ImagingObject* imagep; - - if (!imOut) - return NULL; - - imagep = PyObject_New(ImagingObject, &Imaging_Type); - if (imagep == NULL) { - ImagingDelete(imOut); - return NULL; - } - -#ifdef VERBOSE - printf("imaging %p allocated\n", imagep); -#endif - - imagep->image = imOut; - imagep->access = ImagingAccessNew(imOut); - - return (PyObject*) imagep; -} - -static void -_dealloc(ImagingObject* imagep) -{ - -#ifdef VERBOSE - printf("imaging %p deleted\n", imagep); -#endif - - if (imagep->access) - ImagingAccessDelete(imagep->image, imagep->access); - ImagingDelete(imagep->image); - PyObject_Del(imagep); -} - -#define PyImaging_Check(op) ((op)->ob_type == &Imaging_Type) - -Imaging PyImaging_AsImaging(PyObject *op) -{ - if (!PyImaging_Check(op)) { - PyErr_BadInternalCall(); - return NULL; - } - - return ((ImagingObject *)op)->image; -} - - -/* -------------------------------------------------------------------- */ -/* THREAD HANDLING */ -/* -------------------------------------------------------------------- */ - -void ImagingSectionEnter(ImagingSectionCookie* cookie) -{ -#ifdef WITH_THREADING - *cookie = (PyThreadState *) PyEval_SaveThread(); -#endif -} - -void ImagingSectionLeave(ImagingSectionCookie* cookie) -{ -#ifdef WITH_THREADING - PyEval_RestoreThread((PyThreadState*) *cookie); -#endif -} - -/* -------------------------------------------------------------------- */ -/* BUFFER HANDLING */ -/* -------------------------------------------------------------------- */ -/* Python compatibility API */ - -#if PY_VERSION_HEX < 0x02020000 - -int PyImaging_CheckBuffer(PyObject *buffer) -{ - PyBufferProcs *procs = buffer->ob_type->tp_as_buffer; - if (procs && procs->bf_getreadbuffer && procs->bf_getsegcount && - procs->bf_getsegcount(buffer, NULL) == 1) - return 1; - return 0; -} - -int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr) -{ - PyBufferProcs *procs = buffer->ob_type->tp_as_buffer; - return procs->bf_getreadbuffer(buffer, 0, ptr); -} - -#else - -int PyImaging_CheckBuffer(PyObject* buffer) -{ - return PyObject_CheckReadBuffer(buffer); -} - -int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr) -{ - /* must call check_buffer first! */ -#if PY_VERSION_HEX < 0x02050000 - int n = 0; -#else - Py_ssize_t n = 0; -#endif - PyObject_AsReadBuffer(buffer, ptr, &n); - return (int) n; -} - -#endif - -/* -------------------------------------------------------------------- */ -/* EXCEPTION REROUTING */ -/* -------------------------------------------------------------------- */ - -/* error messages */ -static const char* must_be_sequence = "argument must be a sequence"; -static const char* wrong_mode = "unrecognized image mode"; -static const char* wrong_raw_mode = "unrecognized raw mode"; -static const char* outside_image = "image index out of range"; -static const char* outside_palette = "palette index out of range"; -static const char* no_palette = "image has no palette"; -static const char* readonly = "image is readonly"; -/* static const char* no_content = "image has no content"; */ - -void * -ImagingError_IOError(void) -{ - PyErr_SetString(PyExc_IOError, "error when accessing file"); - return NULL; -} - -void * -ImagingError_MemoryError(void) -{ - return PyErr_NoMemory(); -} - -void * -ImagingError_Mismatch(void) -{ - PyErr_SetString(PyExc_ValueError, "images do not match"); - return NULL; -} - -void * -ImagingError_ModeError(void) -{ - PyErr_SetString(PyExc_ValueError, "image has wrong mode"); - return NULL; -} - -void * -ImagingError_ValueError(const char *message) -{ - PyErr_SetString( - PyExc_ValueError, - (message) ? (char*) message : "unrecognized argument value" - ); - return NULL; -} - -void -ImagingError_Clear(void) -{ - PyErr_Clear(); -} - -/* -------------------------------------------------------------------- */ -/* HELPERS */ -/* -------------------------------------------------------------------- */ - -static int -getbands(const char* mode) -{ - Imaging im; - int bands; - - /* FIXME: add primitive to libImaging to avoid extra allocation */ - im = ImagingNew(mode, 0, 0); - if (!im) - return -1; - - bands = im->bands; - - ImagingDelete(im); - - return bands; -} - -#define TYPE_UINT8 (0x100|sizeof(UINT8)) -#define TYPE_INT32 (0x200|sizeof(INT32)) -#define TYPE_FLOAT32 (0x300|sizeof(FLOAT32)) -#define TYPE_DOUBLE (0x400|sizeof(double)) - -static void* -getlist(PyObject* arg, int* length, const char* wrong_length, int type) -{ - int i, n; - void* list; - - if (!PySequence_Check(arg)) { - PyErr_SetString(PyExc_TypeError, must_be_sequence); - return NULL; - } - - n = PyObject_Length(arg); - if (length && wrong_length && n != *length) { - PyErr_SetString(PyExc_ValueError, wrong_length); - return NULL; - } - - list = malloc(n * (type & 0xff)); - if (!list) - return PyErr_NoMemory(); - - switch (type) { - case TYPE_UINT8: - if (PyList_Check(arg)) { - for (i = 0; i < n; i++) { - PyObject *op = PyList_GET_ITEM(arg, i); - int temp = PyInt_AsLong(op); - ((UINT8*)list)[i] = CLIP(temp); - } - } else { - for (i = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(arg, i); - int temp = PyInt_AsLong(op); - Py_XDECREF(op); - ((UINT8*)list)[i] = CLIP(temp); - } - } - break; - case TYPE_INT32: - if (PyList_Check(arg)) { - for (i = 0; i < n; i++) { - PyObject *op = PyList_GET_ITEM(arg, i); - int temp = PyInt_AsLong(op); - ((INT32*)list)[i] = temp; - } - } else { - for (i = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(arg, i); - int temp = PyInt_AsLong(op); - Py_XDECREF(op); - ((INT32*)list)[i] = temp; - } - } - break; - case TYPE_FLOAT32: - if (PyList_Check(arg)) { - for (i = 0; i < n; i++) { - PyObject *op = PyList_GET_ITEM(arg, i); - double temp = PyFloat_AsDouble(op); - ((FLOAT32*)list)[i] = (FLOAT32) temp; - } - } else { - for (i = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(arg, i); - double temp = PyFloat_AsDouble(op); - Py_XDECREF(op); - ((FLOAT32*)list)[i] = (FLOAT32) temp; - } - } - break; - case TYPE_DOUBLE: - if (PyList_Check(arg)) { - for (i = 0; i < n; i++) { - PyObject *op = PyList_GET_ITEM(arg, i); - double temp = PyFloat_AsDouble(op); - ((double*)list)[i] = temp; - } - } else { - for (i = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(arg, i); - double temp = PyFloat_AsDouble(op); - Py_XDECREF(op); - ((double*)list)[i] = temp; - } - } - break; - } - - if (length) - *length = n; - - PyErr_Clear(); - - return list; -} - -static inline PyObject* -getpixel(Imaging im, ImagingAccess access, int x, int y) -{ - union { - UINT8 b[4]; - INT16 h; - INT32 i; - FLOAT32 f; - } pixel; - - if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) { - PyErr_SetString(PyExc_IndexError, outside_image); - return NULL; - } - - access->get_pixel(im, x, y, &pixel); - - switch (im->type) { - case IMAGING_TYPE_UINT8: - switch (im->bands) { - case 1: - return PyInt_FromLong(pixel.b[0]); - case 2: - return Py_BuildValue("ii", pixel.b[0], pixel.b[1]); - case 3: - return Py_BuildValue("iii", pixel.b[0], pixel.b[1], pixel.b[2]); - case 4: - return Py_BuildValue("iiii", pixel.b[0], pixel.b[1], pixel.b[2], pixel.b[3]); - } - break; - case IMAGING_TYPE_INT32: - return PyInt_FromLong(pixel.i); - case IMAGING_TYPE_FLOAT32: - return PyFloat_FromDouble(pixel.f); - case IMAGING_TYPE_SPECIAL: - if (strncmp(im->mode, "I;16", 4) == 0) - return PyInt_FromLong(pixel.h); - break; - } - - /* unknown type */ - Py_INCREF(Py_None); - return Py_None; -} - -static char* -getink(PyObject* color, Imaging im, char* ink) -{ - int r, g, b, a; - double f; - - /* fill ink buffer (four bytes) with something that can - be cast to either UINT8 or INT32 */ - - switch (im->type) { - case IMAGING_TYPE_UINT8: - /* unsigned integer */ - if (im->bands == 1) { - /* unsigned integer, single layer */ - r = PyInt_AsLong(color); - if (r == -1 && PyErr_Occurred()) - return NULL; - ink[0] = CLIP(r); - ink[1] = ink[2] = ink[3] = 0; - } else { - a = 255; - if (PyInt_Check(color)) { - r = PyInt_AS_LONG(color); - /* compatibility: ABGR */ - a = (UINT8) (r >> 24); - b = (UINT8) (r >> 16); - g = (UINT8) (r >> 8); - r = (UINT8) r; - } else { - if (im->bands == 2) { - if (!PyArg_ParseTuple(color, "i|i", &r, &a)) - return NULL; - g = b = r; - } else { - if (!PyArg_ParseTuple(color, "iii|i", &r, &g, &b, &a)) - return NULL; - } - } - ink[0] = CLIP(r); - ink[1] = CLIP(g); - ink[2] = CLIP(b); - ink[3] = CLIP(a); - } - return ink; - case IMAGING_TYPE_INT32: - /* signed integer */ - r = PyInt_AsLong(color); - if (r == -1 && PyErr_Occurred()) - return NULL; - *(INT32*) ink = r; - return ink; - case IMAGING_TYPE_FLOAT32: - /* floating point */ - f = PyFloat_AsDouble(color); - if (f == -1.0 && PyErr_Occurred()) - return NULL; - *(FLOAT32*) ink = (FLOAT32) f; - return ink; - case IMAGING_TYPE_SPECIAL: - if (strncmp(im->mode, "I;16", 4) == 0) { - r = PyInt_AsLong(color); - if (r == -1 && PyErr_Occurred()) - return NULL; - ink[0] = (UINT8) r; - ink[1] = (UINT8) (r >> 8); - ink[2] = ink[3] = 0; - return ink; - } - } - - PyErr_SetString(PyExc_ValueError, wrong_mode); - return NULL; -} - -/* -------------------------------------------------------------------- */ -/* FACTORIES */ -/* -------------------------------------------------------------------- */ - -static PyObject* -_fill(PyObject* self, PyObject* args) -{ - char* mode; - int xsize, ysize; - PyObject* color; - char buffer[4]; - Imaging im; - - xsize = ysize = 256; - color = NULL; - - if (!PyArg_ParseTuple(args, "s|(ii)O", &mode, &xsize, &ysize, &color)) - return NULL; - - im = ImagingNew(mode, xsize, ysize); - if (!im) - return NULL; - - if (color) { - if (!getink(color, im, buffer)) { - ImagingDelete(im); - return NULL; - } - } else - buffer[0] = buffer[1] = buffer[2] = buffer[3] = 0; - - (void) ImagingFill(im, buffer); - - return PyImagingNew(im); -} - -static PyObject* -_new(PyObject* self, PyObject* args) -{ - char* mode; - int xsize, ysize; - - if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) - return NULL; - - return PyImagingNew(ImagingNew(mode, xsize, ysize)); -} - -static PyObject* -_new_array(PyObject* self, PyObject* args) -{ - char* mode; - int xsize, ysize; - - if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) - return NULL; - - return PyImagingNew(ImagingNewArray(mode, xsize, ysize)); -} - -static PyObject* -_new_block(PyObject* self, PyObject* args) -{ - char* mode; - int xsize, ysize; - - if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) - return NULL; - - return PyImagingNew(ImagingNewBlock(mode, xsize, ysize)); -} - -static PyObject* -_getcount(PyObject* self, PyObject* args) -{ - if (!PyArg_ParseTuple(args, ":getcount")) - return NULL; - - return PyInt_FromLong(ImagingNewCount); -} - -static PyObject* -_linear_gradient(PyObject* self, PyObject* args) -{ - char* mode; - - if (!PyArg_ParseTuple(args, "s", &mode)) - return NULL; - - return PyImagingNew(ImagingFillLinearGradient(mode)); -} - -static PyObject* -_radial_gradient(PyObject* self, PyObject* args) -{ - char* mode; - - if (!PyArg_ParseTuple(args, "s", &mode)) - return NULL; - - return PyImagingNew(ImagingFillRadialGradient(mode)); -} - -static PyObject* -_open_ppm(PyObject* self, PyObject* args) -{ - char* filename; - - if (!PyArg_ParseTuple(args, "s", &filename)) - return NULL; - - return PyImagingNew(ImagingOpenPPM(filename)); -} - -static PyObject* -_blend(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep1; - ImagingObject* imagep2; - double alpha; - - alpha = 0.5; - if (!PyArg_ParseTuple(args, "O!O!|d", - &Imaging_Type, &imagep1, - &Imaging_Type, &imagep2, - &alpha)) - return NULL; - - return PyImagingNew(ImagingBlend(imagep1->image, imagep2->image, - (float) alpha)); -} - -/* -------------------------------------------------------------------- */ -/* METHODS */ -/* -------------------------------------------------------------------- */ - -static PyObject* -_convert(ImagingObject* self, PyObject* args) -{ - char* mode; - int dither = 0; - ImagingObject *paletteimage = NULL; - - if (!PyArg_ParseTuple(args, "s|iO", &mode, &dither, &paletteimage)) - return NULL; - if (paletteimage != NULL) { - if (!PyImaging_Check(paletteimage)) { - PyObject_Print((PyObject *)paletteimage, stderr, 0); - PyErr_SetString(PyExc_ValueError, "palette argument must be image with mode 'P'"); - return NULL; - } - if (paletteimage->image->palette == NULL) { - PyErr_SetString(PyExc_ValueError, "null palette"); - return NULL; - } - } - - return PyImagingNew(ImagingConvert(self->image, mode, paletteimage ? paletteimage->image->palette : NULL, dither)); -} - -static PyObject* -_convert2(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep1; - ImagingObject* imagep2; - if (!PyArg_ParseTuple(args, "O!O!", - &Imaging_Type, &imagep1, - &Imaging_Type, &imagep2)) - return NULL; - - if (!ImagingConvert2(imagep1->image, imagep2->image)) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_convert_matrix(ImagingObject* self, PyObject* args) -{ - char* mode; - float m[12]; - if (!PyArg_ParseTuple(args, "s(ffff)", &mode, m+0, m+1, m+2, m+3)) { - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "s(ffffffffffff)", &mode, - m+0, m+1, m+2, m+3, - m+4, m+5, m+6, m+7, - m+8, m+9, m+10, m+11)) - return NULL; - } - - return PyImagingNew(ImagingConvertMatrix(self->image, mode, m)); -} - -static PyObject* -_copy(ImagingObject* self, PyObject* args) -{ - if (!PyArg_ParseTuple(args, "")) - return NULL; - - return PyImagingNew(ImagingCopy(self->image)); -} - -static PyObject* -_copy2(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep1; - ImagingObject* imagep2; - if (!PyArg_ParseTuple(args, "O!O!", - &Imaging_Type, &imagep1, - &Imaging_Type, &imagep2)) - return NULL; - - if (!ImagingCopy2(imagep1->image, imagep2->image)) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_crop(ImagingObject* self, PyObject* args) -{ - int x0, y0, x1, y1; - if (!PyArg_ParseTuple(args, "(iiii)", &x0, &y0, &x1, &y1)) - return NULL; - - return PyImagingNew(ImagingCrop(self->image, x0, y0, x1, y1)); -} - -static PyObject* -_expand(ImagingObject* self, PyObject* args) -{ - int x, y; - int mode = 0; - if (!PyArg_ParseTuple(args, "ii|i", &x, &y, &mode)) - return NULL; - - return PyImagingNew(ImagingExpand(self->image, x, y, mode)); -} - -static PyObject* -_filter(ImagingObject* self, PyObject* args) -{ - PyObject* imOut; - int kernelsize; - FLOAT32* kerneldata; - - int xsize, ysize; - float divisor, offset; - PyObject* kernel = NULL; - if (!PyArg_ParseTuple(args, "(ii)ffO", &xsize, &ysize, - &divisor, &offset, &kernel)) - return NULL; - - /* get user-defined kernel */ - kerneldata = getlist(kernel, &kernelsize, NULL, TYPE_FLOAT32); - if (!kerneldata) - return NULL; - if (kernelsize != xsize * ysize) { - free(kerneldata); - return ImagingError_ValueError("bad kernel size"); - } - - imOut = PyImagingNew( - ImagingFilter(self->image, xsize, ysize, kerneldata, offset, divisor) - ); - - free(kerneldata); - - return imOut; -} - -#ifdef WITH_UNSHARPMASK -static PyObject* -_gaussian_blur(ImagingObject* self, PyObject* args) -{ - Imaging imIn; - Imaging imOut; - - float radius = 0; - if (!PyArg_ParseTuple(args, "f", &radius)) - return NULL; - - imIn = self->image; - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - if (!imOut) - return NULL; - - if (!ImagingGaussianBlur(imIn, imOut, radius)) - return NULL; - - return PyImagingNew(imOut); -} -#endif - -static PyObject* -_getpalette(ImagingObject* self, PyObject* args) -{ - PyObject* palette; - int palettesize = 256; - int bits; - ImagingShuffler pack; - - char* mode = "RGB"; - char* rawmode = "RGB"; - if (!PyArg_ParseTuple(args, "|ss", &mode, &rawmode)) - return NULL; - - if (!self->image->palette) { - PyErr_SetString(PyExc_ValueError, no_palette); - return NULL; - } - - pack = ImagingFindPacker(mode, rawmode, &bits); - if (!pack) { - PyErr_SetString(PyExc_ValueError, wrong_raw_mode); - return NULL; - } - - palette = PyString_FromStringAndSize(NULL, palettesize * bits / 8); - if (!palette) - return NULL; - - pack((UINT8*) PyString_AsString(palette), - self->image->palette->palette, palettesize); - - return palette; -} - -static inline int -_getxy(PyObject* xy, int* x, int *y) -{ - PyObject* value; - - if (!PyTuple_Check(xy) || PyTuple_GET_SIZE(xy) != 2) - goto badarg; - - value = PyTuple_GET_ITEM(xy, 0); - if (PyInt_Check(value)) - *x = PyInt_AS_LONG(value); - else if (PyFloat_Check(value)) - *x = (int) PyFloat_AS_DOUBLE(value); - else - goto badval; - - value = PyTuple_GET_ITEM(xy, 1); - if (PyInt_Check(value)) - *y = PyInt_AS_LONG(value); - else if (PyFloat_Check(value)) - *y = (int) PyFloat_AS_DOUBLE(value); - else - goto badval; - - return 0; - - badarg: - PyErr_SetString( - PyExc_TypeError, - "argument must be sequence of length 2" - ); - return -1; - - badval: - PyErr_SetString( - PyExc_TypeError, - "an integer is required" - ); - return -1; -} - -static PyObject* -_getpixel(ImagingObject* self, PyObject* args) -{ - PyObject* xy; - int x, y; - - if (PyTuple_GET_SIZE(args) != 1) { - PyErr_SetString( - PyExc_TypeError, - "argument 1 must be sequence of length 2" - ); - return NULL; - } - - xy = PyTuple_GET_ITEM(args, 0); - - if (_getxy(xy, &x, &y)) - return NULL; - - if (self->access == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - - return getpixel(self->image, self->access, x, y); -} - -static PyObject* -_histogram(ImagingObject* self, PyObject* args) -{ - ImagingHistogram h; - PyObject* list; - int i; - union { - UINT8 u[2]; - INT32 i[2]; - FLOAT32 f[2]; - } extrema; - void* ep; - int i0, i1; - double f0, f1; - - PyObject* extremap = NULL; - ImagingObject* maskp = NULL; - if (!PyArg_ParseTuple(args, "|OO!", &extremap, &Imaging_Type, &maskp)) - return NULL; - - if (extremap) { - ep = &extrema; - switch (self->image->type) { - case IMAGING_TYPE_UINT8: - if (!PyArg_ParseTuple(extremap, "ii", &i0, &i1)) - return NULL; - /* FIXME: clip */ - extrema.u[0] = i0; - extrema.u[1] = i1; - break; - case IMAGING_TYPE_INT32: - if (!PyArg_ParseTuple(extremap, "ii", &i0, &i1)) - return NULL; - extrema.i[0] = i0; - extrema.i[1] = i1; - break; - case IMAGING_TYPE_FLOAT32: - if (!PyArg_ParseTuple(extremap, "dd", &f0, &f1)) - return NULL; - extrema.f[0] = (FLOAT32) f0; - extrema.f[1] = (FLOAT32) f1; - break; - default: - ep = NULL; - break; - } - } else - ep = NULL; - - h = ImagingGetHistogram(self->image, (maskp) ? maskp->image : NULL, ep); - - if (!h) - return NULL; - - /* Build an integer list containing the histogram */ - list = PyList_New(h->bands * 256); - for (i = 0; i < h->bands * 256; i++) { - PyObject* item; - item = PyInt_FromLong(h->histogram[i]); - if (item == NULL) { - Py_DECREF(list); - list = NULL; - break; - } - PyList_SetItem(list, i, item); - } - - ImagingHistogramDelete(h); - - return list; -} - -#ifdef WITH_MODEFILTER -static PyObject* -_modefilter(ImagingObject* self, PyObject* args) -{ - int size; - if (!PyArg_ParseTuple(args, "i", &size)) - return NULL; - - return PyImagingNew(ImagingModeFilter(self->image, size)); -} -#endif - -static PyObject* -_offset(ImagingObject* self, PyObject* args) -{ - int xoffset, yoffset; - if (!PyArg_ParseTuple(args, "ii", &xoffset, &yoffset)) - return NULL; - - return PyImagingNew(ImagingOffset(self->image, xoffset, yoffset)); -} - -static PyObject* -_paste(ImagingObject* self, PyObject* args) -{ - int status; - char ink[4]; - - PyObject* source; - int x0, y0, x1, y1; - ImagingObject* maskp = NULL; - if (!PyArg_ParseTuple(args, "O(iiii)|O!", - &source, - &x0, &y0, &x1, &y1, - &Imaging_Type, &maskp)) - return NULL; - - if (PyImaging_Check(source)) - status = ImagingPaste( - self->image, PyImaging_AsImaging(source), - (maskp) ? maskp->image : NULL, - x0, y0, x1, y1 - ); - - else { - if (!getink(source, self->image, ink)) - return NULL; - status = ImagingFill2( - self->image, ink, - (maskp) ? maskp->image : NULL, - x0, y0, x1, y1 - ); - } - - if (status < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_point(ImagingObject* self, PyObject* args) -{ - static const char* wrong_number = "wrong number of lut entries"; - - int n, i; - int bands; - Imaging im; - - PyObject* list; - char* mode; - if (!PyArg_ParseTuple(args, "Oz", &list, &mode)) - return NULL; - - if (mode && !strcmp(mode, "F")) { - FLOAT32* data; - - /* map from 8-bit data to floating point */ - n = 256; - data = getlist(list, &n, wrong_number, TYPE_FLOAT32); - if (!data) - return NULL; - im = ImagingPoint(self->image, mode, (void*) data); - free(data); - - } else if (!strcmp(self->image->mode, "I") && mode && !strcmp(mode, "L")) { - UINT8* data; - - /* map from 16-bit subset of 32-bit data to 8-bit */ - /* FIXME: support arbitrary number of entries (requires API change) */ - n = 65536; - data = getlist(list, &n, wrong_number, TYPE_UINT8); - if (!data) - return NULL; - im = ImagingPoint(self->image, mode, (void*) data); - free(data); - - } else { - INT32* data; - UINT8 lut[1024]; - - if (mode) { - bands = getbands(mode); - if (bands < 0) - return NULL; - } else - bands = self->image->bands; - - /* map to integer data */ - n = 256 * bands; - data = getlist(list, &n, wrong_number, TYPE_INT32); - if (!data) - return NULL; - - if (mode && !strcmp(mode, "I")) - im = ImagingPoint(self->image, mode, (void*) data); - else if (mode && bands > 1) { - for (i = 0; i < 256; i++) { - lut[i*4] = CLIP(data[i]); - lut[i*4+1] = CLIP(data[i+256]); - lut[i*4+2] = CLIP(data[i+512]); - if (n > 768) - lut[i*4+3] = CLIP(data[i+768]); - } - im = ImagingPoint(self->image, mode, (void*) lut); - } else { - /* map individual bands */ - for (i = 0; i < n; i++) - lut[i] = CLIP(data[i]); - im = ImagingPoint(self->image, mode, (void*) lut); - } - free(data); - } - - return PyImagingNew(im); -} - -static PyObject* -_point_transform(ImagingObject* self, PyObject* args) -{ - double scale = 1.0; - double offset = 0.0; - if (!PyArg_ParseTuple(args, "|dd", &scale, &offset)) - return NULL; - - return PyImagingNew(ImagingPointTransform(self->image, scale, offset)); -} - -static PyObject* -_putdata(ImagingObject* self, PyObject* args) -{ - Imaging image; - int n, i, x, y; - - PyObject* data; - double scale = 1.0; - double offset = 0.0; - if (!PyArg_ParseTuple(args, "O|dd", &data, &scale, &offset)) - return NULL; - - if (!PySequence_Check(data)) { - PyErr_SetString(PyExc_TypeError, must_be_sequence); - return NULL; - } - - image = self->image; - - n = PyObject_Length(data); - if (n > (int) (image->xsize * image->ysize)) { - PyErr_SetString(PyExc_TypeError, "too many data entries"); - return NULL; - } - - if (image->image8) { - if (PyString_Check(data)) { - unsigned char* p; - p = (unsigned char*) PyString_AS_STRING((PyStringObject*) data); - if (scale == 1.0 && offset == 0.0) - /* Plain string data */ - for (i = y = 0; i < n; i += image->xsize, y++) { - x = n - i; - if (x > (int) image->xsize) - x = image->xsize; - memcpy(image->image8[y], p+i, x); - } - else - /* Scaled and clipped string data */ - for (i = x = y = 0; i < n; i++) { - image->image8[y][x] = CLIP((int) (p[i] * scale + offset)); - if (++x >= (int) image->xsize) - x = 0, y++; - } - } else { - if (scale == 1.0 && offset == 0.0) { - /* Clipped data */ - if (PyList_Check(data)) { - for (i = x = y = 0; i < n; i++) { - PyObject *op = PyList_GET_ITEM(data, i); - image->image8[y][x] = (UINT8) CLIP(PyInt_AsLong(op)); - if (++x >= (int) image->xsize) - x = 0, y++; - } - } else { - for (i = x = y = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(data, i); - image->image8[y][x] = (UINT8) CLIP(PyInt_AsLong(op)); - Py_XDECREF(op); - if (++x >= (int) image->xsize) - x = 0, y++; - } - } - } else { - if (PyList_Check(data)) { - /* Scaled and clipped data */ - for (i = x = y = 0; i < n; i++) { - PyObject *op = PyList_GET_ITEM(data, i); - image->image8[y][x] = CLIP( - (int) (PyFloat_AsDouble(op) * scale + offset)); - if (++x >= (int) image->xsize) - x = 0, y++; - } - } else { - for (i = x = y = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(data, i); - image->image8[y][x] = CLIP( - (int) (PyFloat_AsDouble(op) * scale + offset)); - Py_XDECREF(op); - if (++x >= (int) image->xsize) - x = 0, y++; - } - } - } - PyErr_Clear(); /* Avoid weird exceptions */ - } - } else { - /* 32-bit images */ - switch (image->type) { - case IMAGING_TYPE_INT32: - for (i = x = y = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(data, i); - IMAGING_PIXEL_INT32(image, x, y) = - (INT32) (PyFloat_AsDouble(op) * scale + offset); - Py_XDECREF(op); - if (++x >= (int) image->xsize) - x = 0, y++; - } - PyErr_Clear(); /* Avoid weird exceptions */ - break; - case IMAGING_TYPE_FLOAT32: - for (i = x = y = 0; i < n; i++) { - PyObject *op = PySequence_GetItem(data, i); - IMAGING_PIXEL_FLOAT32(image, x, y) = - (FLOAT32) (PyFloat_AsDouble(op) * scale + offset); - Py_XDECREF(op); - if (++x >= (int) image->xsize) - x = 0, y++; - } - PyErr_Clear(); /* Avoid weird exceptions */ - break; - default: - for (i = x = y = 0; i < n; i++) { - char ink[4]; - PyObject *op = PySequence_GetItem(data, i); - if (!op || !getink(op, image, ink)) { - Py_DECREF(op); - return NULL; - } - /* FIXME: what about scale and offset? */ - image->image32[y][x] = *((INT32*) ink); - Py_XDECREF(op); - if (++x >= (int) image->xsize) - x = 0, y++; - } - PyErr_Clear(); /* Avoid weird exceptions */ - break; - } - } - - Py_INCREF(Py_None); - return Py_None; -} - -#ifdef WITH_QUANTIZE - -#include "Quant.h" -static PyObject* -_quantize(ImagingObject* self, PyObject* args) -{ - int colours = 256; - int method = 0; - int kmeans = 0; - if (!PyArg_ParseTuple(args, "|iii", &colours, &method, &kmeans)) - return NULL; - - if (!self->image->xsize || !self->image->ysize) { - /* no content; return an empty image */ - return PyImagingNew( - ImagingNew("P", self->image->xsize, self->image->ysize) - ); - } - - return PyImagingNew(ImagingQuantize(self->image, colours, method, kmeans)); -} -#endif - -static PyObject* -_putpalette(ImagingObject* self, PyObject* args) -{ - ImagingShuffler unpack; - int bits; - - char* rawmode; - UINT8* palette; - int palettesize; - if (!PyArg_ParseTuple(args, "ss#", &rawmode, &palette, &palettesize)) - return NULL; - - if (strcmp(self->image->mode, "L") != 0 && strcmp(self->image->mode, "P")) { - PyErr_SetString(PyExc_ValueError, wrong_mode); - return NULL; - } - - unpack = ImagingFindUnpacker("RGB", rawmode, &bits); - if (!unpack) { - PyErr_SetString(PyExc_ValueError, wrong_raw_mode); - return NULL; - } - - ImagingPaletteDelete(self->image->palette); - - strcpy(self->image->mode, "P"); - - self->image->palette = ImagingPaletteNew("RGB"); - - unpack(self->image->palette->palette, palette, palettesize * 8 / bits); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_putpalettealpha(ImagingObject* self, PyObject* args) -{ - int index; - int alpha = 0; - if (!PyArg_ParseTuple(args, "i|i", &index, &alpha)) - return NULL; - - if (!self->image->palette) { - PyErr_SetString(PyExc_ValueError, no_palette); - return NULL; - } - - if (index < 0 || index >= 256) { - PyErr_SetString(PyExc_ValueError, outside_palette); - return NULL; - } - - strcpy(self->image->palette->mode, "RGBA"); - self->image->palette->palette[index*4+3] = (UINT8) alpha; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_putpixel(ImagingObject* self, PyObject* args) -{ - Imaging im; - char ink[4]; - - int x, y; - PyObject* color; - if (!PyArg_ParseTuple(args, "(ii)O", &x, &y, &color)) - return NULL; - - im = self->image; - - if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) { - PyErr_SetString(PyExc_IndexError, outside_image); - return NULL; - } - - if (!getink(color, im, ink)) - return NULL; - - if (self->access) - self->access->put_pixel(im, x, y, ink); - - Py_INCREF(Py_None); - return Py_None; -} - -#ifdef WITH_RANKFILTER -static PyObject* -_rankfilter(ImagingObject* self, PyObject* args) -{ - int size, rank; - if (!PyArg_ParseTuple(args, "ii", &size, &rank)) - return NULL; - - return PyImagingNew(ImagingRankFilter(self->image, size, rank)); -} -#endif - -static PyObject* -_resize(ImagingObject* self, PyObject* args) -{ - Imaging imIn; - Imaging imOut; - - int xsize, ysize; - int filter = IMAGING_TRANSFORM_NEAREST; - if (!PyArg_ParseTuple(args, "(ii)|i", &xsize, &ysize, &filter)) - return NULL; - - imIn = self->image; - - imOut = ImagingNew(imIn->mode, xsize, ysize); - if (imOut) - (void) ImagingResize(imOut, imIn, filter); - - return PyImagingNew(imOut); -} - -static PyObject* -_rotate(ImagingObject* self, PyObject* args) -{ - Imaging imOut; - Imaging imIn; - - double theta; - int filter = IMAGING_TRANSFORM_NEAREST; - if (!PyArg_ParseTuple(args, "d|i", &theta, &filter)) - return NULL; - - imIn = self->image; - - theta = fmod(theta, 360.0); - if (theta < 0.0) - theta += 360; - - if (filter && imIn->type != IMAGING_TYPE_SPECIAL) { - /* Rotate with resampling filter */ - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - (void) ImagingRotate(imOut, imIn, theta, filter); - } else if (theta == 90.0 || theta == 270.0) { - /* Use fast version */ - imOut = ImagingNew(imIn->mode, imIn->ysize, imIn->xsize); - if (imOut) { - if (theta == 90.0) - (void) ImagingRotate90(imOut, imIn); - else - (void) ImagingRotate270(imOut, imIn); - } - } else { - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - if (imOut) { - if (theta == 0.0) - /* No rotation: simply copy the input image */ - (void) ImagingCopy2(imOut, imIn); - else if (theta == 180.0) - /* Use fast version */ - (void) ImagingRotate180(imOut, imIn); - else - /* Use ordinary version */ - (void) ImagingRotate(imOut, imIn, theta, 0); - } - } - - return PyImagingNew(imOut); -} - -#define IS_RGB(mode)\ - (!strcmp(mode, "RGB") || !strcmp(mode, "RGBA") || !strcmp(mode, "RGBX")) - -static PyObject* -im_setmode(ImagingObject* self, PyObject* args) -{ - /* attempt to modify the mode of an image in place */ - - Imaging im; - - char* mode; - int modelen; - if (!PyArg_ParseTuple(args, "s#:setmode", &mode, &modelen)) - return NULL; - - im = self->image; - - /* move all logic in here to the libImaging primitive */ - - if (!strcmp(im->mode, mode)) { - ; /* same mode; always succeeds */ - } else if (IS_RGB(im->mode) && IS_RGB(mode)) { - /* color to color */ - strcpy(im->mode, mode); - im->bands = modelen; - if (!strcmp(mode, "RGBA")) - (void) ImagingFillBand(im, 3, 255); - } else { - /* trying doing an in-place conversion */ - if (!ImagingConvertInPlace(im, mode)) - return NULL; - } - - if (self->access) - ImagingAccessDelete(im, self->access); - self->access = ImagingAccessNew(im); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_stretch(ImagingObject* self, PyObject* args) -{ - Imaging imIn; - Imaging imTemp; - Imaging imOut; - - int xsize, ysize; - int filter = IMAGING_TRANSFORM_NEAREST; - if (!PyArg_ParseTuple(args, "(ii)|i", &xsize, &ysize, &filter)) - return NULL; - - imIn = self->image; - - /* two-pass resize: minimize size of intermediate image */ - if (imIn->xsize * ysize < xsize * imIn->ysize) - imTemp = ImagingNew(imIn->mode, imIn->xsize, ysize); - else - imTemp = ImagingNew(imIn->mode, xsize, imIn->ysize); - if (!imTemp) - return NULL; - - /* first pass */ - if (!ImagingStretch(imTemp, imIn, filter)) { - ImagingDelete(imTemp); - return NULL; - } - - imOut = ImagingNew(imIn->mode, xsize, ysize); - if (!imOut) { - ImagingDelete(imTemp); - return NULL; - } - - /* second pass */ - if (!ImagingStretch(imOut, imTemp, filter)) { - ImagingDelete(imOut); - ImagingDelete(imTemp); - return NULL; - } - - ImagingDelete(imTemp); - - return PyImagingNew(imOut); -} - -static PyObject* -_transform2(ImagingObject* self, PyObject* args) -{ - static const char* wrong_number = "wrong number of matrix entries"; - - Imaging imIn; - Imaging imOut; - int n; - double *a; - - ImagingObject* imagep; - int x0, y0, x1, y1; - int method; - PyObject* data; - int filter = IMAGING_TRANSFORM_NEAREST; - int fill = 1; - if (!PyArg_ParseTuple(args, "(iiii)O!iO|ii", - &x0, &y0, &x1, &y1, - &Imaging_Type, &imagep, - &method, &data, - &filter, &fill)) - return NULL; - - switch (method) { - case IMAGING_TRANSFORM_AFFINE: - n = 6; - break; - case IMAGING_TRANSFORM_PERSPECTIVE: - n = 8; - break; - case IMAGING_TRANSFORM_QUAD: - n = 8; - break; - default: - n = -1; /* force error */ - } - - a = getlist(data, &n, wrong_number, TYPE_DOUBLE); - if (!a) - return NULL; - - imOut = self->image; - imIn = imagep->image; - - /* FIXME: move transform dispatcher into libImaging */ - - switch (method) { - case IMAGING_TRANSFORM_AFFINE: - imOut = ImagingTransformAffine( - imOut, imIn, x0, y0, x1, y1, a, filter, 1 - ); - break; - case IMAGING_TRANSFORM_PERSPECTIVE: - imOut = ImagingTransformPerspective( - imOut, imIn, x0, y0, x1, y1, a, filter, 1 - ); - break; - case IMAGING_TRANSFORM_QUAD: - imOut = ImagingTransformQuad( - imOut, imIn, x0, y0, x1, y1, a, filter, 1 - ); - break; - default: - (void) ImagingError_ValueError("bad transform method"); - } - - free(a); - - if (!imOut) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_transpose(ImagingObject* self, PyObject* args) -{ - Imaging imIn; - Imaging imOut; - - int op; - if (!PyArg_ParseTuple(args, "i", &op)) - return NULL; - - imIn = self->image; - - switch (op) { - case 0: /* flip left right */ - case 1: /* flip top bottom */ - case 3: /* rotate 180 */ - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - break; - case 2: /* rotate 90 */ - case 4: /* rotate 270 */ - imOut = ImagingNew(imIn->mode, imIn->ysize, imIn->xsize); - break; - default: - PyErr_SetString(PyExc_ValueError, "No such transpose operation"); - return NULL; - } - - if (imOut) - switch (op) { - case 0: - (void) ImagingFlipLeftRight(imOut, imIn); - break; - case 1: - (void) ImagingFlipTopBottom(imOut, imIn); - break; - case 2: - (void) ImagingRotate90(imOut, imIn); - break; - case 3: - (void) ImagingRotate180(imOut, imIn); - break; - case 4: - (void) ImagingRotate270(imOut, imIn); - break; - } - - return PyImagingNew(imOut); -} - -#ifdef WITH_UNSHARPMASK -static PyObject* -_unsharp_mask(ImagingObject* self, PyObject* args) -{ - Imaging imIn; - Imaging imOut; - - float radius; - int percent, threshold; - if (!PyArg_ParseTuple(args, "fii", &radius, &percent, &threshold)) - return NULL; - - - imIn = self->image; - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - if (!imOut) - return NULL; - - if (!ImagingUnsharpMask(imIn, imOut, radius, percent, threshold)) - return NULL; - - return PyImagingNew(imOut); -} -#endif - -/* -------------------------------------------------------------------- */ - -static PyObject* -_isblock(ImagingObject* self, PyObject* args) -{ - return PyInt_FromLong((long) self->image->block); -} - -static PyObject* -_getbbox(ImagingObject* self, PyObject* args) -{ - int bbox[4]; - if (!ImagingGetBBox(self->image, bbox)) { - Py_INCREF(Py_None); - return Py_None; - } - - return Py_BuildValue("iiii", bbox[0], bbox[1], bbox[2], bbox[3]); -} - -static PyObject* -_getcolors(ImagingObject* self, PyObject* args) -{ - ImagingColorItem* items; - int i, colors; - PyObject* out; - - int maxcolors = 256; - if (!PyArg_ParseTuple(args, "i:getcolors", &maxcolors)) - return NULL; - - items = ImagingGetColors(self->image, maxcolors, &colors); - if (!items) - return NULL; - - if (colors > maxcolors) { - out = Py_None; - Py_INCREF(out); - } else { - out = PyList_New(colors); - for (i = 0; i < colors; i++) { - ImagingColorItem* v = &items[i]; - PyObject* item = Py_BuildValue( - "iN", v->count, getpixel(self->image, self->access, v->x, v->y) - ); - PyList_SetItem(out, i, item); - } - } - - free(items); - - return out; -} - -static PyObject* -_getextrema(ImagingObject* self, PyObject* args) -{ - union { - UINT8 u[2]; - INT32 i[2]; - FLOAT32 f[2]; - } extrema; - int status; - - status = ImagingGetExtrema(self->image, &extrema); - if (status < 0) - return NULL; - - if (status) - switch (self->image->type) { - case IMAGING_TYPE_UINT8: - return Py_BuildValue("ii", extrema.u[0], extrema.u[1]); - case IMAGING_TYPE_INT32: - return Py_BuildValue("ii", extrema.i[0], extrema.i[1]); - case IMAGING_TYPE_FLOAT32: - return Py_BuildValue("dd", extrema.f[0], extrema.f[1]); - } - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_getprojection(ImagingObject* self, PyObject* args) -{ - unsigned char* xprofile; - unsigned char* yprofile; - PyObject* result; - - xprofile = malloc(self->image->xsize); - yprofile = malloc(self->image->ysize); - - if (xprofile == NULL || yprofile == NULL) { - free(xprofile); - free(yprofile); - return PyErr_NoMemory(); - } - - ImagingGetProjection(self->image, (unsigned char *)xprofile, (unsigned char *)yprofile); - - result = Py_BuildValue("s#s#", xprofile, self->image->xsize, - yprofile, self->image->ysize); - - free(xprofile); - free(yprofile); - - return result; -} - -/* -------------------------------------------------------------------- */ - -static PyObject* -_getband(ImagingObject* self, PyObject* args) -{ - int band; - - if (!PyArg_ParseTuple(args, "i", &band)) - return NULL; - - return PyImagingNew(ImagingGetBand(self->image, band)); -} - -static PyObject* -_fillband(ImagingObject* self, PyObject* args) -{ - int band; - int color; - - if (!PyArg_ParseTuple(args, "ii", &band, &color)) - return NULL; - - if (!ImagingFillBand(self->image, band, color)) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_putband(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - int band; - if (!PyArg_ParseTuple(args, "O!i", - &Imaging_Type, &imagep, - &band)) - return NULL; - - if (!ImagingPutBand(self->image, imagep->image, band)) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -/* -------------------------------------------------------------------- */ - -#ifdef WITH_IMAGECHOPS - -static PyObject* -_chop_invert(ImagingObject* self, PyObject* args) -{ - return PyImagingNew(ImagingNegative(self->image)); -} - -static PyObject* -_chop_lighter(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopLighter(self->image, imagep->image)); -} - -static PyObject* -_chop_darker(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopDarker(self->image, imagep->image)); -} - -static PyObject* -_chop_difference(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopDifference(self->image, imagep->image)); -} - -static PyObject* -_chop_multiply(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopMultiply(self->image, imagep->image)); -} - -static PyObject* -_chop_screen(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopScreen(self->image, imagep->image)); -} - -static PyObject* -_chop_add(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - float scale; - int offset; - - scale = 1.0; - offset = 0; - - if (!PyArg_ParseTuple(args, "O!|fi", &Imaging_Type, &imagep, - &scale, &offset)) - return NULL; - - return PyImagingNew(ImagingChopAdd(self->image, imagep->image, - scale, offset)); -} - -static PyObject* -_chop_subtract(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - float scale; - int offset; - - scale = 1.0; - offset = 0; - - if (!PyArg_ParseTuple(args, "O!|fi", &Imaging_Type, &imagep, - &scale, &offset)) - return NULL; - - return PyImagingNew(ImagingChopSubtract(self->image, imagep->image, - scale, offset)); -} - -static PyObject* -_chop_and(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopAnd(self->image, imagep->image)); -} - -static PyObject* -_chop_or(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopOr(self->image, imagep->image)); -} - -static PyObject* -_chop_xor(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopXor(self->image, imagep->image)); -} - -static PyObject* -_chop_add_modulo(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopAddModulo(self->image, imagep->image)); -} - -static PyObject* -_chop_subtract_modulo(ImagingObject* self, PyObject* args) -{ - ImagingObject* imagep; - - if (!PyArg_ParseTuple(args, "O!", &Imaging_Type, &imagep)) - return NULL; - - return PyImagingNew(ImagingChopSubtractModulo(self->image, imagep->image)); -} - -#endif - - -/* -------------------------------------------------------------------- */ - -#ifdef WITH_IMAGEDRAW - -static PyObject* -_font_new(PyObject* self_, PyObject* args) -{ - ImagingFontObject *self; - int i, y0, y1; - static const char* wrong_length = "descriptor table has wrong size"; - - ImagingObject* imagep; - unsigned char* glyphdata; - int glyphdata_length; - if (!PyArg_ParseTuple(args, "O!s#", - &Imaging_Type, &imagep, - &glyphdata, &glyphdata_length)) - return NULL; - - if (glyphdata_length != 256 * 20) { - PyErr_SetString(PyExc_ValueError, wrong_length); - return NULL; - } - - self = PyObject_New(ImagingFontObject, &ImagingFont_Type); - if (self == NULL) - return NULL; - - /* glyph bitmap */ - self->bitmap = imagep->image; - - y0 = y1 = 0; - - /* glyph glyphs */ - for (i = 0; i < 256; i++) { - self->glyphs[i].dx = S16(B16(glyphdata, 0)); - self->glyphs[i].dy = S16(B16(glyphdata, 2)); - self->glyphs[i].dx0 = S16(B16(glyphdata, 4)); - self->glyphs[i].dy0 = S16(B16(glyphdata, 6)); - self->glyphs[i].dx1 = S16(B16(glyphdata, 8)); - self->glyphs[i].dy1 = S16(B16(glyphdata, 10)); - self->glyphs[i].sx0 = S16(B16(glyphdata, 12)); - self->glyphs[i].sy0 = S16(B16(glyphdata, 14)); - self->glyphs[i].sx1 = S16(B16(glyphdata, 16)); - self->glyphs[i].sy1 = S16(B16(glyphdata, 18)); - if (self->glyphs[i].dy0 < y0) - y0 = self->glyphs[i].dy0; - if (self->glyphs[i].dy1 > y1) - y1 = self->glyphs[i].dy1; - glyphdata += 20; - } - - self->baseline = -y0; - self->ysize = y1 - y0; - - /* keep a reference to the bitmap object */ - Py_INCREF(imagep); - self->ref = imagep; - - return (PyObject*) self; -} - -static void -_font_dealloc(ImagingFontObject* self) -{ - Py_XDECREF(self->ref); - PyObject_Del(self); -} - -static inline int -textwidth(ImagingFontObject* self, const unsigned char* text) -{ - int xsize; - - for (xsize = 0; *text; text++) - xsize += self->glyphs[*text].dx; - - return xsize; -} - -static PyObject* -_font_getmask(ImagingFontObject* self, PyObject* args) -{ - Imaging im; - Imaging bitmap; - int x, b; - int status; - Glyph* glyph; - - unsigned char* text; - char* mode = ""; - if (!PyArg_ParseTuple(args, "s|s:getmask", &text, &mode)) - return NULL; - - im = ImagingNew(self->bitmap->mode, textwidth(self, text), self->ysize); - if (!im) - return NULL; - - b = 0; - (void) ImagingFill(im, &b); - - b = self->baseline; - for (x = 0; *text; text++) { - glyph = &self->glyphs[*text]; - bitmap = ImagingCrop( - self->bitmap, - glyph->sx0, glyph->sy0, glyph->sx1, glyph->sy1 - ); - if (!bitmap) - goto failed; - status = ImagingPaste( - im, bitmap, NULL, - glyph->dx0+x, glyph->dy0+b, glyph->dx1+x, glyph->dy1+b - ); - ImagingDelete(bitmap); - if (status < 0) - goto failed; - x = x + glyph->dx; - b = b + glyph->dy; - } - - return PyImagingNew(im); - - failed: - ImagingDelete(im); - return NULL; -} - -static PyObject* -_font_getsize(ImagingFontObject* self, PyObject* args) -{ - unsigned char* text; - if (!PyArg_ParseTuple(args, "s:getsize", &text)) - return NULL; - - return Py_BuildValue("ii", textwidth(self, text), self->ysize); -} - -static struct PyMethodDef _font_methods[] = { - {"getmask", (PyCFunction)_font_getmask, 1}, - {"getsize", (PyCFunction)_font_getsize, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -_font_getattr(ImagingFontObject* self, char* name) -{ - return Py_FindMethod(_font_methods, (PyObject*) self, name); -} - -/* -------------------------------------------------------------------- */ - -static PyObject* -_draw_new(PyObject* self_, PyObject* args) -{ - ImagingDrawObject *self; - - ImagingObject* imagep; - int blend = 0; - if (!PyArg_ParseTuple(args, "O!|i", &Imaging_Type, &imagep, &blend)) - return NULL; - - self = PyObject_New(ImagingDrawObject, &ImagingDraw_Type); - if (self == NULL) - return NULL; - - /* keep a reference to the image object */ - Py_INCREF(imagep); - self->image = imagep; - - self->ink[0] = self->ink[1] = self->ink[2] = self->ink[3] = 0; - - self->blend = blend; - - return (PyObject*) self; -} - -static void -_draw_dealloc(ImagingDrawObject* self) -{ - Py_XDECREF(self->image); - PyObject_Del(self); -} - -extern int PyPath_Flatten(PyObject* data, double **xy); - -static PyObject* -_draw_ink(ImagingDrawObject* self, PyObject* args) -{ - INT32 ink = 0; - PyObject* color; - char* mode = NULL; /* not used in this release */ - if (!PyArg_ParseTuple(args, "O|s", &color, &mode)) - return NULL; - - if (!getink(color, self->image->image, (char*) &ink)) - return NULL; - - return PyInt_FromLong((int) ink); -} - -static PyObject* -_draw_arc(ImagingDrawObject* self, PyObject* args) -{ - int x0, y0, x1, y1; - int ink; - int start, end; - int op = 0; - if (!PyArg_ParseTuple(args, "(iiii)iii|i", - &x0, &y0, &x1, &y1, - &start, &end, &ink)) - return NULL; - - if (ImagingDrawArc(self->image->image, x0, y0, x1, y1, start, end, - &ink, op) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_bitmap(ImagingDrawObject* self, PyObject* args) -{ - double *xy; - int n; - - PyObject *data; - ImagingObject* bitmap; - int ink; - if (!PyArg_ParseTuple(args, "OO!i", &data, &Imaging_Type, &bitmap, &ink)) - return NULL; - - n = PyPath_Flatten(data, &xy); - if (n < 0) - return NULL; - if (n != 1) { - PyErr_SetString( - PyExc_TypeError, - "coordinate list must contain exactly 1 coordinate" - ); - return NULL; - } - - n = ImagingDrawBitmap( - self->image->image, (int) xy[0], (int) xy[1], bitmap->image, - &ink, self->blend - ); - - free(xy); - - if (n < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_chord(ImagingDrawObject* self, PyObject* args) -{ - int x0, y0, x1, y1; - int ink, fill; - int start, end; - if (!PyArg_ParseTuple(args, "(iiii)iiii", - &x0, &y0, &x1, &y1, &start, &end, &ink, &fill)) - return NULL; - - if (ImagingDrawChord(self->image->image, x0, y0, x1, y1, - start, end, &ink, fill, self->blend) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_ellipse(ImagingDrawObject* self, PyObject* args) -{ - double* xy; - int n; - - PyObject* data; - int ink; - int fill = 0; - if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &fill)) - return NULL; - - n = PyPath_Flatten(data, &xy); - if (n < 0) - return NULL; - if (n != 2) { - PyErr_SetString( - PyExc_TypeError, - "coordinate list must contain exactly 2 coordinates" - ); - return NULL; - } - - n = ImagingDrawEllipse( - self->image->image, (int) xy[0], (int) xy[1], (int) xy[2], (int) xy[3], - &ink, fill, self->blend - ); - - free(xy); - - if (n < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_line(ImagingDrawObject* self, PyObject* args) -{ - int x0, y0, x1, y1; - int ink; - if (!PyArg_ParseTuple(args, "(ii)(ii)i", &x0, &y0, &x1, &y1, &ink)) - return NULL; - - if (ImagingDrawLine(self->image->image, x0, y0, x1, y1, - &ink, self->blend) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_lines(ImagingDrawObject* self, PyObject* args) -{ - double *xy; - int i, n; - - PyObject *data; - int ink; - int width = 0; - if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &width)) - return NULL; - - n = PyPath_Flatten(data, &xy); - if (n < 0) - return NULL; - - if (width <= 1) { - double *p = NULL; - for (i = 0; i < n-1; i++) { - p = &xy[i+i]; - if (ImagingDrawLine( - self->image->image, - (int) p[0], (int) p[1], (int) p[2], (int) p[3], - &ink, self->blend) < 0) { - free(xy); - return NULL; - } - } - if (p) /* draw last point */ - ImagingDrawPoint( - self->image->image, - (int) p[2], (int) p[3], - &ink, self->blend - ); - } else { - for (i = 0; i < n-1; i++) { - double *p = &xy[i+i]; - if (ImagingDrawWideLine( - self->image->image, - (int) p[0], (int) p[1], (int) p[2], (int) p[3], - &ink, width, self->blend) < 0) { - free(xy); - return NULL; - } - } - } - - free(xy); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_point(ImagingDrawObject* self, PyObject* args) -{ - int x, y; - int ink; - if (!PyArg_ParseTuple(args, "(ii)i", &x, &y, &ink)) - return NULL; - - if (ImagingDrawPoint(self->image->image, x, y, &ink, self->blend) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_points(ImagingDrawObject* self, PyObject* args) -{ - double *xy; - int i, n; - - PyObject *data; - int ink; - if (!PyArg_ParseTuple(args, "Oi", &data, &ink)) - return NULL; - - n = PyPath_Flatten(data, &xy); - if (n < 0) - return NULL; - - for (i = 0; i < n; i++) { - double *p = &xy[i+i]; - if (ImagingDrawPoint(self->image->image, (int) p[0], (int) p[1], - &ink, self->blend) < 0) { - free(xy); - return NULL; - } - } - - free(xy); - - Py_INCREF(Py_None); - return Py_None; -} - -#ifdef WITH_ARROW - -/* from outline.c */ -extern ImagingOutline PyOutline_AsOutline(PyObject* outline); - -static PyObject* -_draw_outline(ImagingDrawObject* self, PyObject* args) -{ - ImagingOutline outline; - - PyObject* outline_; - int ink; - int fill = 0; - if (!PyArg_ParseTuple(args, "Oi|i", &outline_, &ink, &fill)) - return NULL; - - outline = PyOutline_AsOutline(outline_); - if (!outline) { - PyErr_SetString(PyExc_TypeError, "expected outline object"); - return NULL; - } - - if (ImagingDrawOutline(self->image->image, outline, - &ink, fill, self->blend) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -#endif - -static PyObject* -_draw_pieslice(ImagingDrawObject* self, PyObject* args) -{ - int x0, y0, x1, y1; - int ink, fill; - int start, end; - if (!PyArg_ParseTuple(args, "(iiii)iiii", - &x0, &y0, &x1, &y1, &start, &end, &ink, &fill)) - return NULL; - - if (ImagingDrawPieslice(self->image->image, x0, y0, x1, y1, - start, end, &ink, fill, self->blend) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_polygon(ImagingDrawObject* self, PyObject* args) -{ - double *xy; - int *ixy; - int n, i; - - PyObject* data; - int ink; - int fill = 0; - if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &fill)) - return NULL; - - n = PyPath_Flatten(data, &xy); - if (n < 0) - return NULL; - if (n < 2) { - PyErr_SetString( - PyExc_TypeError, - "coordinate list must contain at least 2 coordinates" - ); - return NULL; - } - - /* Copy list of vertices to array */ - ixy = (int*) malloc(n * 2 * sizeof(int)); - - for (i = 0; i < n; i++) { - ixy[i+i] = (int) xy[i+i]; - ixy[i+i+1] = (int) xy[i+i+1]; - } - - free(xy); - - if (ImagingDrawPolygon(self->image->image, n, ixy, - &ink, fill, self->blend) < 0) { - free(ixy); - return NULL; - } - - free(ixy); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw_rectangle(ImagingDrawObject* self, PyObject* args) -{ - double* xy; - int n; - - PyObject* data; - int ink; - int fill = 0; - if (!PyArg_ParseTuple(args, "Oi|i", &data, &ink, &fill)) - return NULL; - - n = PyPath_Flatten(data, &xy); - if (n < 0) - return NULL; - if (n != 2) { - PyErr_SetString( - PyExc_TypeError, - "coordinate list must contain exactly 2 coordinates" - ); - return NULL; - } - - n = ImagingDrawRectangle( - self->image->image, (int) xy[0], (int) xy[1], - (int) xy[2], (int) xy[3], &ink, fill, self->blend - ); - - free(xy); - - if (n < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef _draw_methods[] = { -#ifdef WITH_IMAGEDRAW - /* Graphics (ImageDraw) */ - {"draw_line", (PyCFunction)_draw_line, 1}, - {"draw_lines", (PyCFunction)_draw_lines, 1}, -#ifdef WITH_ARROW - {"draw_outline", (PyCFunction)_draw_outline, 1}, -#endif - {"draw_polygon", (PyCFunction)_draw_polygon, 1}, - {"draw_rectangle", (PyCFunction)_draw_rectangle, 1}, - {"draw_point", (PyCFunction)_draw_point, 1}, - {"draw_points", (PyCFunction)_draw_points, 1}, - {"draw_arc", (PyCFunction)_draw_arc, 1}, - {"draw_bitmap", (PyCFunction)_draw_bitmap, 1}, - {"draw_chord", (PyCFunction)_draw_chord, 1}, - {"draw_ellipse", (PyCFunction)_draw_ellipse, 1}, - {"draw_pieslice", (PyCFunction)_draw_pieslice, 1}, - {"draw_ink", (PyCFunction)_draw_ink, 1}, -#endif - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -_draw_getattr(ImagingDrawObject* self, char* name) -{ - return Py_FindMethod(_draw_methods, (PyObject*) self, name); -} - -#endif - - -static PyObject* -pixel_access_new(ImagingObject* imagep, PyObject* args) -{ - PixelAccessObject *self; - - int readonly = 0; - if (!PyArg_ParseTuple(args, "|i", &readonly)) - return NULL; - - self = PyObject_New(PixelAccessObject, &PixelAccess_Type); - if (self == NULL) - return NULL; - - /* keep a reference to the image object */ - Py_INCREF(imagep); - self->image = imagep; - - self->readonly = readonly; - - return (PyObject*) self; -} - -static void -pixel_access_dealloc(PixelAccessObject* self) -{ - Py_XDECREF(self->image); - PyObject_Del(self); -} - -static PyObject * -pixel_access_getitem(PixelAccessObject *self, PyObject *xy) -{ - int x, y; - if (_getxy(xy, &x, &y)) - return NULL; - - return getpixel(self->image->image, self->image->access, x, y); -} - -static int -pixel_access_setitem(PixelAccessObject *self, PyObject *xy, PyObject *color) -{ - Imaging im = self->image->image; - char ink[4]; - int x, y; - - if (self->readonly) { - (void) ImagingError_ValueError(readonly); - return -1; - } - - if (_getxy(xy, &x, &y)) - return -1; - - if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) { - PyErr_SetString(PyExc_IndexError, outside_image); - return -1; - } - - if (!color) /* FIXME: raise exception? */ - return 0; - - if (!getink(color, im, ink)) - return -1; - - self->image->access->put_pixel(im, x, y, ink); - - return 0; -} - -/* -------------------------------------------------------------------- */ -/* EFFECTS (experimental) */ -/* -------------------------------------------------------------------- */ - -#ifdef WITH_EFFECTS - -static PyObject* -_effect_mandelbrot(ImagingObject* self, PyObject* args) -{ - int xsize = 512; - int ysize = 512; - double extent[4]; - int quality = 100; - - extent[0] = -3; extent[1] = -2.5; - extent[2] = 2; extent[3] = 2.5; - - if (!PyArg_ParseTuple(args, "|(ii)(dddd)i", &xsize, &ysize, - &extent[0], &extent[1], &extent[2], &extent[3], - &quality)) - return NULL; - - return PyImagingNew(ImagingEffectMandelbrot(xsize, ysize, extent, quality)); -} - -static PyObject* -_effect_noise(ImagingObject* self, PyObject* args) -{ - int xsize, ysize; - float sigma = 128; - if (!PyArg_ParseTuple(args, "(ii)|f", &xsize, &ysize, &sigma)) - return NULL; - - return PyImagingNew(ImagingEffectNoise(xsize, ysize, sigma)); -} - -static PyObject* -_effect_spread(ImagingObject* self, PyObject* args) -{ - int dist; - - if (!PyArg_ParseTuple(args, "i", &dist)) - return NULL; - - return PyImagingNew(ImagingEffectSpread(self->image, dist)); -} - -#endif - -/* -------------------------------------------------------------------- */ -/* UTILITIES */ -/* -------------------------------------------------------------------- */ - -static PyObject* -_crc32(PyObject* self, PyObject* args) -{ - unsigned char* buffer; - int bytes; - int hi, lo; - UINT32 crc; - - hi = lo = 0; - - if (!PyArg_ParseTuple(args, "s#|(ii)", &buffer, &bytes, &hi, &lo)) - return NULL; - - crc = ((UINT32) (hi & 0xFFFF) << 16) + (lo & 0xFFFF); - - crc = ImagingCRC32(crc, (unsigned char *)buffer, bytes); - - return Py_BuildValue("ii", (crc >> 16) & 0xFFFF, crc & 0xFFFF); -} - -static PyObject* -_getcodecstatus(PyObject* self, PyObject* args) -{ - int status; - char* msg; - - if (!PyArg_ParseTuple(args, "i", &status)) - return NULL; - - switch (status) { - case IMAGING_CODEC_OVERRUN: - msg = "buffer overrun"; break; - case IMAGING_CODEC_BROKEN: - msg = "broken data stream"; break; - case IMAGING_CODEC_UNKNOWN: - msg = "unrecognized data stream contents"; break; - case IMAGING_CODEC_CONFIG: - msg = "codec configuration error"; break; - case IMAGING_CODEC_MEMORY: - msg = "out of memory"; break; - default: - Py_INCREF(Py_None); - return Py_None; - } - - return PyString_FromString(msg); -} - -/* -------------------------------------------------------------------- */ -/* DEBUGGING HELPERS */ -/* -------------------------------------------------------------------- */ - - -#ifdef WITH_DEBUG - -static PyObject* -_save_ppm(ImagingObject* self, PyObject* args) -{ - char* filename; - - if (!PyArg_ParseTuple(args, "s", &filename)) - return NULL; - - if (!ImagingSavePPM(self->image, filename)) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -#endif - -/* -------------------------------------------------------------------- */ - -/* methods */ - -static struct PyMethodDef methods[] = { - - /* Put commonly used methods first */ - {"getpixel", (PyCFunction)_getpixel, 1}, - {"putpixel", (PyCFunction)_putpixel, 1}, - - {"pixel_access", (PyCFunction)pixel_access_new, 1}, - - /* Standard processing methods (Image) */ - {"convert", (PyCFunction)_convert, 1}, - {"convert2", (PyCFunction)_convert2, 1}, - {"convert_matrix", (PyCFunction)_convert_matrix, 1}, - {"copy", (PyCFunction)_copy, 1}, - {"copy2", (PyCFunction)_copy2, 1}, -#ifdef WITH_CRACKCODE - {"crackcode", (PyCFunction)_crackcode, 1}, -#endif - {"crop", (PyCFunction)_crop, 1}, - {"expand", (PyCFunction)_expand, 1}, - {"filter", (PyCFunction)_filter, 1}, - {"histogram", (PyCFunction)_histogram, 1}, -#ifdef WITH_MODEFILTER - {"modefilter", (PyCFunction)_modefilter, 1}, -#endif - {"offset", (PyCFunction)_offset, 1}, - {"paste", (PyCFunction)_paste, 1}, - {"point", (PyCFunction)_point, 1}, - {"point_transform", (PyCFunction)_point_transform, 1}, - {"putdata", (PyCFunction)_putdata, 1}, -#ifdef WITH_QUANTIZE - {"quantize", (PyCFunction)_quantize, 1}, -#endif -#ifdef WITH_RANKFILTER - {"rankfilter", (PyCFunction)_rankfilter, 1}, -#endif - {"resize", (PyCFunction)_resize, 1}, - {"rotate", (PyCFunction)_rotate, 1}, - {"stretch", (PyCFunction)_stretch, 1}, - {"transpose", (PyCFunction)_transpose, 1}, - {"transform2", (PyCFunction)_transform2, 1}, - - {"isblock", (PyCFunction)_isblock, 1}, - - {"getbbox", (PyCFunction)_getbbox, 1}, - {"getcolors", (PyCFunction)_getcolors, 1}, - {"getextrema", (PyCFunction)_getextrema, 1}, - {"getprojection", (PyCFunction)_getprojection, 1}, - - {"getband", (PyCFunction)_getband, 1}, - {"putband", (PyCFunction)_putband, 1}, - {"fillband", (PyCFunction)_fillband, 1}, - - {"setmode", (PyCFunction)im_setmode, 1}, - - {"getpalette", (PyCFunction)_getpalette, 1}, - {"putpalette", (PyCFunction)_putpalette, 1}, - {"putpalettealpha", (PyCFunction)_putpalettealpha, 1}, - -#ifdef WITH_IMAGECHOPS - /* Channel operations (ImageChops) */ - {"chop_invert", (PyCFunction)_chop_invert, 1}, - {"chop_lighter", (PyCFunction)_chop_lighter, 1}, - {"chop_darker", (PyCFunction)_chop_darker, 1}, - {"chop_difference", (PyCFunction)_chop_difference, 1}, - {"chop_multiply", (PyCFunction)_chop_multiply, 1}, - {"chop_screen", (PyCFunction)_chop_screen, 1}, - {"chop_add", (PyCFunction)_chop_add, 1}, - {"chop_subtract", (PyCFunction)_chop_subtract, 1}, - {"chop_add_modulo", (PyCFunction)_chop_add_modulo, 1}, - {"chop_subtract_modulo", (PyCFunction)_chop_subtract_modulo, 1}, - {"chop_and", (PyCFunction)_chop_and, 1}, - {"chop_or", (PyCFunction)_chop_or, 1}, - {"chop_xor", (PyCFunction)_chop_xor, 1}, -#endif - -#ifdef WITH_UNSHARPMASK - /* Kevin Cazabon's unsharpmask extension */ - {"gaussian_blur", (PyCFunction)_gaussian_blur, 1}, - {"unsharp_mask", (PyCFunction)_unsharp_mask, 1}, -#endif - -#ifdef WITH_EFFECTS - /* Special effects */ - {"effect_spread", (PyCFunction)_effect_spread, 1}, -#endif - - /* Misc. */ - {"new_array", (PyCFunction)_new_array, 1}, - {"new_block", (PyCFunction)_new_block, 1}, - -#ifdef WITH_DEBUG - {"save_ppm", (PyCFunction)_save_ppm, 1}, -#endif - - {NULL, NULL} /* sentinel */ -}; - - -/* attributes */ - -static PyObject* -_getattr(ImagingObject* self, char* name) -{ - PyObject* res; - - res = Py_FindMethod(methods, (PyObject*) self, name); - if (res) - return res; - PyErr_Clear(); - if (strcmp(name, "mode") == 0) - return PyString_FromString(self->image->mode); - if (strcmp(name, "size") == 0) - return Py_BuildValue("ii", self->image->xsize, self->image->ysize); - if (strcmp(name, "bands") == 0) - return PyInt_FromLong(self->image->bands); - if (strcmp(name, "id") == 0) - return PyInt_FromLong((long) self->image); - if (strcmp(name, "ptr") == 0) - return PyCObject_FromVoidPtrAndDesc(self->image, IMAGING_MAGIC, NULL); - PyErr_SetString(PyExc_AttributeError, name); - return NULL; -} - - -/* basic sequence semantics */ - -static Py_ssize_t -image_length(ImagingObject *self) -{ - Imaging im = self->image; - - return im->xsize * im->ysize; -} - -static PyObject * -image_item(ImagingObject *self, Py_ssize_t i) -{ - int x, y; - Imaging im = self->image; - - if (im->xsize > 0) { - x = i % im->xsize; - y = i / im->xsize; - } else - x = y = 0; /* leave it to getpixel to raise an exception */ - - return getpixel(im, self->access, x, y); -} - -static PySequenceMethods image_as_sequence = { - (inquiry) image_length, /*sq_length*/ - (binaryfunc) NULL, /*sq_concat*/ - (ssizeargfunc) NULL, /*sq_repeat*/ - (ssizeargfunc) image_item, /*sq_item*/ - (ssizessizeargfunc) NULL, /*sq_slice*/ - (ssizeobjargproc) NULL, /*sq_ass_item*/ - (ssizessizeobjargproc) NULL, /*sq_ass_slice*/ -}; - - -/* type description */ - -statichere PyTypeObject Imaging_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingCore", /*tp_name*/ - sizeof(ImagingObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number */ - &image_as_sequence, /*tp_as_sequence */ - 0, /*tp_as_mapping */ - 0 /*tp_hash*/ -}; - -#ifdef WITH_IMAGEDRAW - -statichere PyTypeObject ImagingFont_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingFont", /*tp_name*/ - sizeof(ImagingFontObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_font_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_font_getattr, /*tp_getattr*/ -}; - -statichere PyTypeObject ImagingDraw_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingDraw", /*tp_name*/ - sizeof(ImagingDrawObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_draw_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_draw_getattr, /*tp_getattr*/ -}; - -#endif - -static PyMappingMethods pixel_access_as_mapping = { - (inquiry) NULL, /*mp_length*/ - (binaryfunc) pixel_access_getitem, /*mp_subscript*/ - (objobjargproc) pixel_access_setitem, /*mp_ass_subscript*/ -}; - -/* type description */ - -statichere PyTypeObject PixelAccess_Type = { - PyObject_HEAD_INIT(NULL) - 0, "PixelAccess", sizeof(PixelAccessObject), 0, - /* methods */ - (destructor)pixel_access_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number */ - 0, /*tp_as_sequence */ - &pixel_access_as_mapping, /*tp_as_mapping */ - 0 /*tp_hash*/ -}; - -/* -------------------------------------------------------------------- */ - -/* FIXME: this is something of a mess. Should replace this with - pluggable codecs, but not before PIL 1.2 */ - -/* Decoders (in decode.c) */ -extern PyObject* PyImaging_BitDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_FliDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_GifDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_HexDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_JpegDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_TiffLzwDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_MspDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_PackbitsDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_PcdDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_PcxDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_RawDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_SunRleDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_TgaRleDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_XbmDecoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_ZipDecoderNew(PyObject* self, PyObject* args); - -/* Encoders (in encode.c) */ -extern PyObject* PyImaging_EpsEncoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_GifEncoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_JpegEncoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_PcxEncoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_RawEncoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_XbmEncoderNew(PyObject* self, PyObject* args); -extern PyObject* PyImaging_ZipEncoderNew(PyObject* self, PyObject* args); - -/* Display support etc (in display.c) */ -#ifdef WIN32 -extern PyObject* PyImaging_CreateWindowWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_DisplayWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_DisplayModeWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_GrabScreenWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_GrabClipboardWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_ListWindowsWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_EventLoopWin32(PyObject* self, PyObject* args); -extern PyObject* PyImaging_DrawWmf(PyObject* self, PyObject* args); -#endif - -/* Experimental path stuff (in path.c) */ -extern PyObject* PyPath_Create(ImagingObject* self, PyObject* args); - -/* Experimental outline stuff (in outline.c) */ -extern PyObject* PyOutline_Create(ImagingObject* self, PyObject* args); - -extern PyObject* PyImaging_Mapper(PyObject* self, PyObject* args); -extern PyObject* PyImaging_MapBuffer(PyObject* self, PyObject* args); - -static PyMethodDef functions[] = { - - /* Object factories */ - {"blend", (PyCFunction)_blend, 1}, - {"fill", (PyCFunction)_fill, 1}, - {"new", (PyCFunction)_new, 1}, - - {"getcount", (PyCFunction)_getcount, 1}, - - /* Functions */ - {"convert", (PyCFunction)_convert2, 1}, - {"copy", (PyCFunction)_copy2, 1}, - - /* Codecs */ - {"bit_decoder", (PyCFunction)PyImaging_BitDecoderNew, 1}, - {"eps_encoder", (PyCFunction)PyImaging_EpsEncoderNew, 1}, - {"fli_decoder", (PyCFunction)PyImaging_FliDecoderNew, 1}, - {"gif_decoder", (PyCFunction)PyImaging_GifDecoderNew, 1}, - {"gif_encoder", (PyCFunction)PyImaging_GifEncoderNew, 1}, - {"hex_decoder", (PyCFunction)PyImaging_HexDecoderNew, 1}, - {"hex_encoder", (PyCFunction)PyImaging_EpsEncoderNew, 1}, /* EPS=HEX! */ -#ifdef HAVE_LIBJPEG - {"jpeg_decoder", (PyCFunction)PyImaging_JpegDecoderNew, 1}, - {"jpeg_encoder", (PyCFunction)PyImaging_JpegEncoderNew, 1}, -#endif - {"tiff_lzw_decoder", (PyCFunction)PyImaging_TiffLzwDecoderNew, 1}, - {"msp_decoder", (PyCFunction)PyImaging_MspDecoderNew, 1}, - {"packbits_decoder", (PyCFunction)PyImaging_PackbitsDecoderNew, 1}, - {"pcd_decoder", (PyCFunction)PyImaging_PcdDecoderNew, 1}, - {"pcx_decoder", (PyCFunction)PyImaging_PcxDecoderNew, 1}, - {"pcx_encoder", (PyCFunction)PyImaging_PcxEncoderNew, 1}, - {"raw_decoder", (PyCFunction)PyImaging_RawDecoderNew, 1}, - {"raw_encoder", (PyCFunction)PyImaging_RawEncoderNew, 1}, - {"sun_rle_decoder", (PyCFunction)PyImaging_SunRleDecoderNew, 1}, - {"tga_rle_decoder", (PyCFunction)PyImaging_TgaRleDecoderNew, 1}, - {"xbm_decoder", (PyCFunction)PyImaging_XbmDecoderNew, 1}, - {"xbm_encoder", (PyCFunction)PyImaging_XbmEncoderNew, 1}, -#ifdef HAVE_LIBZ - {"zip_decoder", (PyCFunction)PyImaging_ZipDecoderNew, 1}, - {"zip_encoder", (PyCFunction)PyImaging_ZipEncoderNew, 1}, -#endif - - /* Memory mapping */ -#ifdef WITH_MAPPING -#ifdef WIN32 - {"map", (PyCFunction)PyImaging_Mapper, 1}, -#endif - {"map_buffer", (PyCFunction)PyImaging_MapBuffer, 1}, -#endif - - /* Display support */ -#ifdef WIN32 - {"display", (PyCFunction)PyImaging_DisplayWin32, 1}, - {"display_mode", (PyCFunction)PyImaging_DisplayModeWin32, 1}, - {"grabscreen", (PyCFunction)PyImaging_GrabScreenWin32, 1}, - {"grabclipboard", (PyCFunction)PyImaging_GrabClipboardWin32, 1}, - {"createwindow", (PyCFunction)PyImaging_CreateWindowWin32, 1}, - {"eventloop", (PyCFunction)PyImaging_EventLoopWin32, 1}, - {"listwindows", (PyCFunction)PyImaging_ListWindowsWin32, 1}, - {"drawwmf", (PyCFunction)PyImaging_DrawWmf, 1}, -#endif - - /* Utilities */ - {"crc32", (PyCFunction)_crc32, 1}, - {"getcodecstatus", (PyCFunction)_getcodecstatus, 1}, - - /* Debugging stuff */ - {"open_ppm", (PyCFunction)_open_ppm, 1}, - - /* Special effects (experimental) */ -#ifdef WITH_EFFECTS - {"effect_mandelbrot", (PyCFunction)_effect_mandelbrot, 1}, - {"effect_noise", (PyCFunction)_effect_noise, 1}, - {"linear_gradient", (PyCFunction)_linear_gradient, 1}, - {"radial_gradient", (PyCFunction)_radial_gradient, 1}, - {"wedge", (PyCFunction)_linear_gradient, 1}, /* Compatibility */ -#endif - - /* Drawing support stuff */ -#ifdef WITH_IMAGEDRAW - {"font", (PyCFunction)_font_new, 1}, - {"draw", (PyCFunction)_draw_new, 1}, -#endif - - /* Experimental path stuff */ -#ifdef WITH_IMAGEPATH - {"path", (PyCFunction)PyPath_Create, 1}, -#endif - - /* Experimental arrow graphics stuff */ -#ifdef WITH_ARROW - {"outline", (PyCFunction)PyOutline_Create, 1}, -#endif - - {NULL, NULL} /* sentinel */ -}; - -DL_EXPORT(void) -init_imaging(void) -{ - PyObject* m; - PyObject* d; - - /* Patch object type */ - Imaging_Type.ob_type = &PyType_Type; -#ifdef WITH_IMAGEDRAW - ImagingFont_Type.ob_type = &PyType_Type; - ImagingDraw_Type.ob_type = &PyType_Type; -#endif - PixelAccess_Type.ob_type = &PyType_Type; - - ImagingAccessInit(); - - m = Py_InitModule("_imaging", functions); - d = PyModule_GetDict(m); - -#ifdef HAVE_LIBJPEG - { - extern const char* ImagingJpegVersion(void); - PyDict_SetItemString(d, "jpeglib_version", PyString_FromString(ImagingJpegVersion())); - } -#endif - -#ifdef HAVE_LIBZ - { - extern const char* ImagingZipVersion(void); - PyDict_SetItemString(d, "zlib_version", PyString_FromString(ImagingZipVersion())); - } -#endif -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c deleted file mode 100755 index e9a3b00c596..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingcms.c +++ /dev/null @@ -1,608 +0,0 @@ -/* - * pyCMS - * a Python / PIL interface to the littleCMS ICC Color Management System - * Copyright (C) 2002-2003 Kevin Cazabon - * kevin@cazabon.com - * http://www.cazabon.com - * Adapted/reworked for PIL by Fredrik Lundh - * Copyright (c) 2009 Fredrik Lundh - * - * pyCMS home page: http://www.cazabon.com/pyCMS - * littleCMS home page: http://www.littlecms.com - * (littleCMS is Copyright (C) 1998-2001 Marti Maria) - * - * Originally released under LGPL. Graciously donated to PIL in - * March 2009, for distribution under the standard PIL license - */ - -#define COPYRIGHTINFO "\ -pyCMS\n\ -a Python / PIL interface to the littleCMS ICC Color Management System\n\ -Copyright (C) 2002-2003 Kevin Cazabon\n\ -kevin@cazabon.com\n\ -http://www.cazabon.com\n\ -" - -#include "Python.h" -#include "lcms.h" -#include "Imaging.h" - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#if LCMS_VERSION < 117 -#define LCMSBOOL BOOL -#endif - -#ifdef WIN32 -#include -#endif - -#define PYCMSVERSION "0.1.0 pil" - -/* version history */ - -/* - 0.1.0 pil integration & refactoring - 0.0.2 alpha: Minor updates, added interfaces to littleCMS features, Jan 6, 2003 - - fixed some memory holes in how transforms/profiles were created and passed back to Python - due to improper destructor setup for PyCObjects - - added buildProofTransformFromOpenProfiles() function - - eliminated some code redundancy, centralizing several common tasks with internal functions - - 0.0.1 alpha: First public release Dec 26, 2002 - -*/ - -/* known to-do list with current version: - - Verify that PILmode->littleCMStype conversion in findLCMStype is correct for all PIL modes (it probably isn't for the more obscure ones) - - Add support for creating custom RGB profiles on the fly - Add support for checking presence of a specific tag in a profile - Add support for other littleCMS features as required - -*/ - -/* - INTENT_PERCEPTUAL 0 - INTENT_RELATIVE_COLORIMETRIC 1 - INTENT_SATURATION 2 - INTENT_ABSOLUTE_COLORIMETRIC 3 -*/ - -/* -------------------------------------------------------------------- */ -/* wrapper classes */ - -/* a profile represents the ICC characteristics for a specific device */ - -typedef struct { - PyObject_HEAD - cmsHPROFILE profile; -} CmsProfileObject; - -staticforward PyTypeObject CmsProfile_Type; - -#define CmsProfile_Check(op) ((op)->ob_type == &CmsProfile_Type) - -static PyObject* -cms_profile_new(cmsHPROFILE profile) -{ - CmsProfileObject* self; - - self = PyObject_New(CmsProfileObject, &CmsProfile_Type); - if (!self) - return NULL; - - self->profile = profile; - - return (PyObject*) self; -} - -static PyObject* -cms_profile_open(PyObject* self, PyObject* args) -{ - cmsHPROFILE hProfile; - - char* sProfile; - if (!PyArg_ParseTuple(args, "s:profile_open", &sProfile)) - return NULL; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - hProfile = cmsOpenProfileFromFile(sProfile, "r"); - if (!hProfile) { - PyErr_SetString(PyExc_IOError, "cannot open profile file"); - return NULL; - } - - return cms_profile_new(hProfile); -} - -static PyObject* -cms_profile_fromstring(PyObject* self, PyObject* args) -{ - cmsHPROFILE hProfile; - - char* pProfile; - int nProfile; - if (!PyArg_ParseTuple(args, "s#:profile_fromstring", &pProfile, &nProfile)) - return NULL; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - hProfile = cmsOpenProfileFromMem(pProfile, nProfile); - if (!hProfile) - PyErr_SetString(PyExc_IOError, "cannot open profile from string"); - - return cms_profile_new(hProfile); -} - -static void -cms_profile_dealloc(CmsProfileObject* self) -{ - (void) cmsCloseProfile(self->profile); - PyObject_Del(self); -} - -/* a transform represents the mapping between two profiles */ - -typedef struct { - PyObject_HEAD - char mode_in[8]; - char mode_out[8]; - cmsHTRANSFORM transform; -} CmsTransformObject; - -staticforward PyTypeObject CmsTransform_Type; - -#define CmsTransform_Check(op) ((op)->ob_type == &CmsTransform_Type) - -static PyObject* -cms_transform_new(cmsHTRANSFORM transform, char* mode_in, char* mode_out) -{ - CmsTransformObject* self; - - self = PyObject_New(CmsTransformObject, &CmsTransform_Type); - if (!self) - return NULL; - - self->transform = transform; - - strcpy(self->mode_in, mode_in); - strcpy(self->mode_out, mode_out); - - return (PyObject*) self; -} - -static void -cms_transform_dealloc(CmsTransformObject* self) -{ - cmsDeleteTransform(self->transform); - PyObject_Del(self); -} - -/* -------------------------------------------------------------------- */ -/* internal functions */ - -static const char* -findICmode(icColorSpaceSignature cs) -{ - switch (cs) { - case icSigXYZData: return "XYZ"; - case icSigLabData: return "LAB"; - case icSigLuvData: return "LUV"; - case icSigYCbCrData: return "YCbCr"; - case icSigYxyData: return "YXY"; - case icSigRgbData: return "RGB"; - case icSigGrayData: return "L"; - case icSigHsvData: return "HSV"; - case icSigHlsData: return "HLS"; - case icSigCmykData: return "CMYK"; - case icSigCmyData: return "CMY"; - default: return ""; /* other TBA */ - } -} - -static DWORD -findLCMStype(char* PILmode) -{ - if (strcmp(PILmode, "RGB") == 0) { - return TYPE_RGBA_8; - } - else if (strcmp(PILmode, "RGBA") == 0) { - return TYPE_RGBA_8; - } - else if (strcmp(PILmode, "RGBX") == 0) { - return TYPE_RGBA_8; - } - else if (strcmp(PILmode, "RGBA;16B") == 0) { - return TYPE_RGBA_16; - } - else if (strcmp(PILmode, "CMYK") == 0) { - return TYPE_CMYK_8; - } - else if (strcmp(PILmode, "L") == 0) { - return TYPE_GRAY_8; - } - else if (strcmp(PILmode, "L;16") == 0) { - return TYPE_GRAY_16; - } - else if (strcmp(PILmode, "L;16B") == 0) { - return TYPE_GRAY_16_SE; - } - else if (strcmp(PILmode, "YCCA") == 0) { - return TYPE_YCbCr_8; - } - else if (strcmp(PILmode, "YCC") == 0) { - return TYPE_YCbCr_8; - } - - else { - /* take a wild guess... but you probably should fail instead. */ - return TYPE_GRAY_8; /* so there's no buffer overrun... */ - } -} - -static int -pyCMSdoTransform(Imaging im, Imaging imOut, cmsHTRANSFORM hTransform) -{ - int i; - - if (im->xsize > imOut->xsize || im->ysize > imOut->ysize) - return -1; - - Py_BEGIN_ALLOW_THREADS - - for (i = 0; i < im->ysize; i++) - cmsDoTransform(hTransform, im->image[i], imOut->image[i], im->xsize); - - Py_END_ALLOW_THREADS - - return 0; -} - -static cmsHTRANSFORM -_buildTransform(cmsHPROFILE hInputProfile, cmsHPROFILE hOutputProfile, char *sInMode, char *sOutMode, int iRenderingIntent, DWORD cmsFLAGS) -{ - cmsHTRANSFORM hTransform; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - Py_BEGIN_ALLOW_THREADS - - /* create the transform */ - hTransform = cmsCreateTransform(hInputProfile, - findLCMStype(sInMode), - hOutputProfile, - findLCMStype(sOutMode), - iRenderingIntent, cmsFLAGS); - - Py_END_ALLOW_THREADS - - if (!hTransform) - PyErr_SetString(PyExc_ValueError, "cannot build transform"); - - return hTransform; /* if NULL, an exception is set */ -} - -static cmsHTRANSFORM -_buildProofTransform(cmsHPROFILE hInputProfile, cmsHPROFILE hOutputProfile, cmsHPROFILE hProofProfile, char *sInMode, char *sOutMode, int iRenderingIntent, int iProofIntent, DWORD cmsFLAGS) -{ - cmsHTRANSFORM hTransform; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - Py_BEGIN_ALLOW_THREADS - - /* create the transform */ - hTransform = cmsCreateProofingTransform(hInputProfile, - findLCMStype(sInMode), - hOutputProfile, - findLCMStype(sOutMode), - hProofProfile, - iRenderingIntent, - iProofIntent, - cmsFLAGS); - - Py_END_ALLOW_THREADS - - if (!hTransform) - PyErr_SetString(PyExc_ValueError, "cannot build proof transform"); - - return hTransform; /* if NULL, an exception is set */ -} - -/* -------------------------------------------------------------------- */ -/* Python callable functions */ - -static PyObject * -buildTransform(PyObject *self, PyObject *args) { - CmsProfileObject *pInputProfile; - CmsProfileObject *pOutputProfile; - char *sInMode; - char *sOutMode; - int iRenderingIntent = 0; - int cmsFLAGS = 0; - - cmsHTRANSFORM transform = NULL; - - if (!PyArg_ParseTuple(args, "O!O!ss|ii:buildTransform", &CmsProfile_Type, &pInputProfile, &CmsProfile_Type, &pOutputProfile, &sInMode, &sOutMode, &iRenderingIntent, &cmsFLAGS)) - return NULL; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - transform = _buildTransform(pInputProfile->profile, pOutputProfile->profile, sInMode, sOutMode, iRenderingIntent, cmsFLAGS); - - if (!transform) - return NULL; - - return cms_transform_new(transform, sInMode, sOutMode); -} - -static PyObject * -buildProofTransform(PyObject *self, PyObject *args) -{ - CmsProfileObject *pInputProfile; - CmsProfileObject *pOutputProfile; - CmsProfileObject *pProofProfile; - char *sInMode; - char *sOutMode; - int iRenderingIntent = 0; - int iProofIntent = 0; - int cmsFLAGS = 0; - - cmsHTRANSFORM transform = NULL; - - if (!PyArg_ParseTuple(args, "O!O!O!ss|iii:buildProofTransform", &CmsProfile_Type, &pInputProfile, &CmsProfile_Type, &pOutputProfile, &CmsProfile_Type, &pProofProfile, &sInMode, &sOutMode, &iRenderingIntent, &iProofIntent, &cmsFLAGS)) - return NULL; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - transform = _buildProofTransform(pInputProfile->profile, pOutputProfile->profile, pProofProfile->profile, sInMode, sOutMode, iRenderingIntent, iProofIntent, cmsFLAGS); - - if (!transform) - return NULL; - - return cms_transform_new(transform, sInMode, sOutMode); - -} - -static PyObject * -cms_transform_apply(CmsTransformObject *self, PyObject *args) -{ - long idIn; - long idOut; - Imaging im; - Imaging imOut; - - int result; - - if (!PyArg_ParseTuple(args, "ll:apply", &idIn, &idOut)) - return NULL; - - im = (Imaging) idIn; - imOut = (Imaging) idOut; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - result = pyCMSdoTransform(im, imOut, self->transform); - - return Py_BuildValue("i", result); -} - -/* -------------------------------------------------------------------- */ -/* Python-Callable On-The-Fly profile creation functions */ - -static PyObject * -createProfile(PyObject *self, PyObject *args) -{ - char *sColorSpace; - cmsHPROFILE hProfile; - int iColorTemp = 0; - LPcmsCIExyY whitePoint = NULL; - LCMSBOOL result; - - if (!PyArg_ParseTuple(args, "s|i:createProfile", &sColorSpace, &iColorTemp)) - return NULL; - - cmsErrorAction(LCMS_ERROR_IGNORE); - - if (strcmp(sColorSpace, "LAB") == 0) { - if (iColorTemp > 0) { - result = cmsWhitePointFromTemp(iColorTemp, whitePoint); - if (!result) { - PyErr_SetString(PyExc_ValueError, "ERROR: Could not calculate white point from color temperature provided, must be integer in degrees Kelvin"); - return NULL; - } - hProfile = cmsCreateLabProfile(whitePoint); - } else - hProfile = cmsCreateLabProfile(NULL); - } - else if (strcmp(sColorSpace, "XYZ") == 0) - hProfile = cmsCreateXYZProfile(); - else if (strcmp(sColorSpace, "sRGB") == 0) - hProfile = cmsCreate_sRGBProfile(); - else - hProfile = NULL; - - if (!hProfile) { - PyErr_SetString(PyExc_ValueError, "failed to create requested color space"); - return NULL; - } - - return cms_profile_new(hProfile); -} - -/* -------------------------------------------------------------------- */ -/* profile methods */ - -static PyObject * -cms_profile_is_intent_supported(CmsProfileObject *self, PyObject *args) -{ - LCMSBOOL result; - - int intent; - int direction; - if (!PyArg_ParseTuple(args, "ii:is_intent_supported", &intent, &direction)) - return NULL; - - result = cmsIsIntentSupported(self->profile, intent, direction); - - /* printf("cmsIsIntentSupported(%p, %d, %d) => %d\n", self->profile, intent, direction, result); */ - - return PyInt_FromLong(result != 0); -} - -#ifdef WIN32 -static PyObject * -cms_get_display_profile_win32(PyObject* self, PyObject* args) -{ - char filename[MAX_PATH]; - DWORD filename_size; - BOOL ok; - - int handle = 0; - int is_dc = 0; - if (!PyArg_ParseTuple(args, "|ii:get_display_profile", &handle, &is_dc)) - return NULL; - - filename_size = sizeof(filename); - - if (is_dc) { - ok = GetICMProfile((HDC) handle, &filename_size, filename); - } else { - HDC dc = GetDC((HWND) handle); - ok = GetICMProfile(dc, &filename_size, filename); - ReleaseDC((HWND) handle, dc); - } - - if (ok) - return PyString_FromStringAndSize(filename, filename_size-1); - - Py_INCREF(Py_None); - return Py_None; -} -#endif - -/* -------------------------------------------------------------------- */ -/* Python interface setup */ - -static PyMethodDef pyCMSdll_methods[] = { - - {"profile_open", cms_profile_open, 1}, - {"profile_fromstring", cms_profile_fromstring, 1}, - - /* profile and transform functions */ - {"buildTransform", buildTransform, 1}, - {"buildProofTransform", buildProofTransform, 1}, - {"createProfile", createProfile, 1}, - - /* platform specific tools */ -#ifdef WIN32 - {"get_display_profile_win32", cms_get_display_profile_win32, 1}, -#endif - - {NULL, NULL} -}; - -static struct PyMethodDef cms_profile_methods[] = { - {"is_intent_supported", (PyCFunction) cms_profile_is_intent_supported, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -cms_profile_getattr(CmsProfileObject* self, char* name) -{ - if (!strcmp(name, "product_name")) - return PyString_FromString(cmsTakeProductName(self->profile)); - if (!strcmp(name, "product_desc")) - return PyString_FromString(cmsTakeProductDesc(self->profile)); - if (!strcmp(name, "product_info")) - return PyString_FromString(cmsTakeProductInfo(self->profile)); - if (!strcmp(name, "rendering_intent")) - return PyInt_FromLong(cmsTakeRenderingIntent(self->profile)); - if (!strcmp(name, "pcs")) - return PyString_FromString(findICmode(cmsGetPCS(self->profile))); - if (!strcmp(name, "color_space")) - return PyString_FromString(findICmode(cmsGetColorSpace(self->profile))); - /* FIXME: add more properties (creation_datetime etc) */ - - return Py_FindMethod(cms_profile_methods, (PyObject*) self, name); -} - -statichere PyTypeObject CmsProfile_Type = { - PyObject_HEAD_INIT(NULL) - 0, "CmsProfile", sizeof(CmsProfileObject), 0, - /* methods */ - (destructor) cms_profile_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc) cms_profile_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number */ - 0, /*tp_as_sequence */ - 0, /*tp_as_mapping */ - 0 /*tp_hash*/ -}; - -static struct PyMethodDef cms_transform_methods[] = { - {"apply", (PyCFunction) cms_transform_apply, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -cms_transform_getattr(CmsTransformObject* self, char* name) -{ - if (!strcmp(name, "inputMode")) - return PyString_FromString(self->mode_in); - if (!strcmp(name, "outputMode")) - return PyString_FromString(self->mode_out); - - return Py_FindMethod(cms_transform_methods, (PyObject*) self, name); -} - -statichere PyTypeObject CmsTransform_Type = { - PyObject_HEAD_INIT(NULL) - 0, "CmsTransform", sizeof(CmsTransformObject), 0, - /* methods */ - (destructor) cms_transform_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc) cms_transform_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number */ - 0, /*tp_as_sequence */ - 0, /*tp_as_mapping */ - 0 /*tp_hash*/ -}; - -DL_EXPORT(void) -init_imagingcms(void) -{ - PyObject *m; - PyObject *d; - PyObject *v; - - /* Patch up object types */ - CmsProfile_Type.ob_type = &PyType_Type; - CmsTransform_Type.ob_type = &PyType_Type; - - m = Py_InitModule("_imagingcms", pyCMSdll_methods); - d = PyModule_GetDict(m); - -#if PY_VERSION_HEX >= 0x02020000 - v = PyString_FromFormat("%d.%d", LCMS_VERSION / 100, LCMS_VERSION % 100); -#else - { - char buffer[100]; - sprintf(buffer, "%d.%d", LCMS_VERSION / 100, LCMS_VERSION % 100); - v = PyString_FromString(buffer); - } -#endif - PyDict_SetItemString(d, "littlecms_version", v); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c deleted file mode 100755 index 9358087180d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingft.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - * PIL FreeType Driver - * - * a FreeType 2.X driver for PIL - * - * history: - * 2001-02-17 fl Created (based on old experimental freetype 1.0 code) - * 2001-04-18 fl Fixed some egcs compiler nits - * 2002-11-08 fl Added unicode support; more font metrics, etc - * 2003-05-20 fl Fixed compilation under 1.5.2 and newer non-unicode builds - * 2003-09-27 fl Added charmap encoding support - * 2004-05-15 fl Fixed compilation for FreeType 2.1.8 - * 2004-09-10 fl Added support for monochrome bitmaps - * 2006-06-18 fl Fixed glyph bearing calculation - * 2007-12-23 fl Fixed crash in family/style attribute fetch - * 2008-01-02 fl Handle Unicode filenames properly - * - * Copyright (c) 1998-2007 by Secret Labs AB - */ - -#include "Python.h" -#include "Imaging.h" - -#if !defined(USE_FREETYPE_2_0) -/* undef/comment out to use freetype 2.0 */ -#define USE_FREETYPE_2_1 -#endif - -#if defined(USE_FREETYPE_2_1) -/* freetype 2.1 and newer */ -#include -#include FT_FREETYPE_H -#else -/* freetype 2.0 */ -#include -#endif - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#if PY_VERSION_HEX >= 0x01060000 -#if PY_VERSION_HEX < 0x02020000 || defined(Py_USING_UNICODE) -/* defining this enables unicode support (default under 1.6a1 and later) */ -#define HAVE_UNICODE -#endif -#endif - -#if !defined(Py_RETURN_NONE) -#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -#endif - -#if !defined(FT_LOAD_TARGET_MONO) -#define FT_LOAD_TARGET_MONO FT_LOAD_MONOCHROME -#endif - -/* -------------------------------------------------------------------- */ -/* error table */ - -#undef FTERRORS_H -#undef __FTERRORS_H__ - -#define FT_ERRORDEF( e, v, s ) { e, s }, -#define FT_ERROR_START_LIST { -#define FT_ERROR_END_LIST { 0, 0 } }; - -struct { - int code; - const char* message; -} ft_errors[] = - -#include - -/* -------------------------------------------------------------------- */ -/* font objects */ - -static FT_Library library; - -typedef struct { - PyObject_HEAD - FT_Face face; -} FontObject; - -staticforward PyTypeObject Font_Type; - -/* round a 26.6 pixel coordinate to the nearest larger integer */ -#define PIXEL(x) ((((x)+63) & -64)>>6) - -static PyObject* -geterror(int code) -{ - int i; - - for (i = 0; ft_errors[i].message; i++) - if (ft_errors[i].code == code) { - PyErr_SetString(PyExc_IOError, ft_errors[i].message); - return NULL; - } - - PyErr_SetString(PyExc_IOError, "unknown freetype error"); - return NULL; -} - -static PyObject* -getfont(PyObject* self_, PyObject* args, PyObject* kw) -{ - /* create a font object from a file name and a size (in pixels) */ - - FontObject* self; - int error; - - char* filename; - int size; - int index = 0; - unsigned char* encoding = NULL; - static char* kwlist[] = { - "filename", "size", "index", "encoding", NULL - }; - -#if defined(HAVE_UNICODE) && PY_VERSION_HEX >= 0x02020000 - if (!PyArg_ParseTupleAndKeywords(args, kw, "eti|is", kwlist, - Py_FileSystemDefaultEncoding, &filename, - &size, &index, &encoding)) - return NULL; -#else - if (!PyArg_ParseTupleAndKeywords(args, kw, "si|is", kwlist, - &filename, &size, &index, &encoding)) - return NULL; -#endif - - if (!library) { - PyErr_SetString( - PyExc_IOError, - "failed to initialize FreeType library" - ); - return NULL; - } - - self = PyObject_New(FontObject, &Font_Type); - if (!self) - return NULL; - - error = FT_New_Face(library, filename, index, &self->face); - - if (!error) - error = FT_Set_Pixel_Sizes(self->face, 0, size); - - if (!error && encoding && strlen((char*) encoding) == 4) { - FT_Encoding encoding_tag = FT_MAKE_TAG( - encoding[0], encoding[1], encoding[2], encoding[3] - ); - error = FT_Select_Charmap(self->face, encoding_tag); - } - - if (error) { - PyObject_Del(self); - return geterror(error); - } - - return (PyObject*) self; -} - -static int -font_getchar(PyObject* string, int index, FT_ULong* char_out) -{ -#if defined(HAVE_UNICODE) - if (PyUnicode_Check(string)) { - Py_UNICODE* p = PyUnicode_AS_UNICODE(string); - int size = PyUnicode_GET_SIZE(string); - if (index >= size) - return 0; - *char_out = p[index]; - return 1; - } -#endif - if (PyString_Check(string)) { - unsigned char* p = (unsigned char*) PyString_AS_STRING(string); - int size = PyString_GET_SIZE(string); - if (index >= size) - return 0; - *char_out = (unsigned char) p[index]; - return 1; - } - return 0; -} - -static PyObject* -font_getsize(FontObject* self, PyObject* args) -{ - int i, x; - FT_ULong ch; - FT_Face face; - int xoffset; - FT_Bool kerning = FT_HAS_KERNING(self->face); - FT_UInt last_index = 0; - - /* calculate size and bearing for a given string */ - - PyObject* string; - if (!PyArg_ParseTuple(args, "O:getsize", &string)) - return NULL; - -#if defined(HAVE_UNICODE) - if (!PyUnicode_Check(string) && !PyString_Check(string)) { -#else - if (!PyString_Check(string)) { -#endif - PyErr_SetString(PyExc_TypeError, "expected string"); - return NULL; - } - - face = NULL; - xoffset = 0; - - for (x = i = 0; font_getchar(string, i, &ch); i++) { - int index, error; - face = self->face; - index = FT_Get_Char_Index(face, ch); - if (kerning && last_index && index) { - FT_Vector delta; - FT_Get_Kerning(self->face, last_index, index, ft_kerning_default, - &delta); - x += delta.x; - } - error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); - if (error) - return geterror(error); - if (i == 0) - xoffset = face->glyph->metrics.horiBearingX; - x += face->glyph->metrics.horiAdvance; - last_index = index; - } - - if (face) { - int offset; - /* left bearing */ - if (xoffset < 0) - x -= xoffset; - else - xoffset = 0; - /* right bearing */ - offset = face->glyph->metrics.horiAdvance - - face->glyph->metrics.width - - face->glyph->metrics.horiBearingX; - if (offset < 0) - x -= offset; - } - - return Py_BuildValue( - "(ii)(ii)", - PIXEL(x), PIXEL(self->face->size->metrics.height), - PIXEL(xoffset), 0 - ); -} - -static PyObject* -font_getabc(FontObject* self, PyObject* args) -{ - FT_ULong ch; - FT_Face face; - double a, b, c; - - /* calculate ABC values for a given string */ - - PyObject* string; - if (!PyArg_ParseTuple(args, "O:getabc", &string)) - return NULL; - -#if defined(HAVE_UNICODE) - if (!PyUnicode_Check(string) && !PyString_Check(string)) { -#else - if (!PyString_Check(string)) { -#endif - PyErr_SetString(PyExc_TypeError, "expected string"); - return NULL; - } - - if (font_getchar(string, 0, &ch)) { - int index, error; - face = self->face; - index = FT_Get_Char_Index(face, ch); - error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); - if (error) - return geterror(error); - a = face->glyph->metrics.horiBearingX / 64.0; - b = face->glyph->metrics.width / 64.0; - c = (face->glyph->metrics.horiAdvance - - face->glyph->metrics.horiBearingX - - face->glyph->metrics.width) / 64.0; - } else - a = b = c = 0.0; - - return Py_BuildValue("ddd", a, b, c); -} - -static PyObject* -font_render(FontObject* self, PyObject* args) -{ - int i, x, y; - Imaging im; - int index, error, ascender; - int load_flags; - unsigned char *source; - FT_ULong ch; - FT_GlyphSlot glyph; - FT_Bool kerning = FT_HAS_KERNING(self->face); - FT_UInt last_index = 0; - - /* render string into given buffer (the buffer *must* have - the right size, or this will crash) */ - PyObject* string; - long id; - int mask = 0; - if (!PyArg_ParseTuple(args, "Ol|i:render", &string, &id, &mask)) - return NULL; - -#if defined(HAVE_UNICODE) - if (!PyUnicode_Check(string) && !PyString_Check(string)) { -#else - if (!PyString_Check(string)) { -#endif - PyErr_SetString(PyExc_TypeError, "expected string"); - return NULL; - } - - im = (Imaging) id; - - load_flags = FT_LOAD_RENDER; - if (mask) - load_flags |= FT_LOAD_TARGET_MONO; - - for (x = i = 0; font_getchar(string, i, &ch); i++) { - if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) - x = -PIXEL(self->face->glyph->metrics.horiBearingX); - index = FT_Get_Char_Index(self->face, ch); - if (kerning && last_index && index) { - FT_Vector delta; - FT_Get_Kerning(self->face, last_index, index, ft_kerning_default, - &delta); - x += delta.x >> 6; - } - error = FT_Load_Glyph(self->face, index, load_flags); - if (error) - return geterror(error); - glyph = self->face->glyph; - if (mask) { - /* use monochrome mask (on palette images, etc) */ - int xx, x0, x1; - source = (unsigned char*) glyph->bitmap.buffer; - ascender = PIXEL(self->face->size->metrics.ascender); - xx = x + glyph->bitmap_left; - x0 = 0; - x1 = glyph->bitmap.width; - if (xx < 0) - x0 = -xx; - if (xx + x1 > im->xsize) - x1 = im->xsize - xx; - for (y = 0; y < glyph->bitmap.rows; y++) { - int yy = y + ascender - glyph->bitmap_top; - if (yy >= 0 && yy < im->ysize) { - /* blend this glyph into the buffer */ - unsigned char *target = im->image8[yy] + xx; - int i, j, m = 128; - for (i = j = 0; j < x1; j++) { - if (j >= x0 && (source[i] & m)) - target[j] = 255; - if (!(m >>= 1)) { - m = 128; - i++; - } - } - } - source += glyph->bitmap.pitch; - } - } else { - /* use antialiased rendering */ - int xx, x0, x1; - source = (unsigned char*) glyph->bitmap.buffer; - ascender = PIXEL(self->face->size->metrics.ascender); - xx = x + glyph->bitmap_left; - x0 = 0; - x1 = glyph->bitmap.width; - if (xx < 0) - x0 = -xx; - if (xx + x1 > im->xsize) - x1 = im->xsize - xx; - for (y = 0; y < glyph->bitmap.rows; y++) { - int yy = y + ascender - glyph->bitmap_top; - if (yy >= 0 && yy < im->ysize) { - /* blend this glyph into the buffer */ - int i; - unsigned char *target = im->image8[yy] + xx; - for (i = x0; i < x1; i++) { - if (target[i] < source[i]) - target[i] = source[i]; - } - } - source += glyph->bitmap.pitch; - } - } - x += PIXEL(glyph->metrics.horiAdvance); - last_index = index; - } - - Py_RETURN_NONE; -} - -static void -font_dealloc(FontObject* self) -{ - FT_Done_Face(self->face); - PyObject_Del(self); -} - -static PyMethodDef font_methods[] = { - {"render", (PyCFunction) font_render, METH_VARARGS}, - {"getsize", (PyCFunction) font_getsize, METH_VARARGS}, - {"getabc", (PyCFunction) font_getabc, METH_VARARGS}, - {NULL, NULL} -}; - -static PyObject* -font_getattr(FontObject* self, char* name) -{ - PyObject* res; - - res = Py_FindMethod(font_methods, (PyObject*) self, name); - - if (res) - return res; - - PyErr_Clear(); - - /* attributes */ - if (!strcmp(name, "family")) { - if (self->face->family_name) - return PyString_FromString(self->face->family_name); - Py_RETURN_NONE; - } - if (!strcmp(name, "style")) { - if (self->face->style_name) - return PyString_FromString(self->face->style_name); - Py_RETURN_NONE; - } - if (!strcmp(name, "ascent")) - return PyInt_FromLong(PIXEL(self->face->size->metrics.ascender)); - if (!strcmp(name, "descent")) - return PyInt_FromLong(-PIXEL(self->face->size->metrics.descender)); - - if (!strcmp(name, "glyphs")) - /* number of glyphs provided by this font */ - return PyInt_FromLong(self->face->num_glyphs); - - PyErr_SetString(PyExc_AttributeError, name); - return NULL; -} - -statichere PyTypeObject Font_Type = { - PyObject_HEAD_INIT(NULL) - 0, "Font", sizeof(FontObject), 0, - /* methods */ - (destructor)font_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - (getattrfunc)font_getattr, /* tp_getattr */ -}; - -static PyMethodDef _functions[] = { - {"getfont", (PyCFunction) getfont, METH_VARARGS|METH_KEYWORDS}, - {NULL, NULL} -}; - -DL_EXPORT(void) -init_imagingft(void) -{ - PyObject* m; - PyObject* d; - PyObject* v; - int major, minor, patch; - - /* Patch object type */ - Font_Type.ob_type = &PyType_Type; - - m = Py_InitModule("_imagingft", _functions); - d = PyModule_GetDict(m); - - if (FT_Init_FreeType(&library)) - return; /* leave it uninitalized */ - - FT_Library_Version(library, &major, &minor, &patch); - -#if PY_VERSION_HEX >= 0x02020000 - v = PyString_FromFormat("%d.%d.%d", major, minor, patch); -#else - { - char buffer[100]; - sprintf(buffer, "%d.%d.%d", major, minor, patch); - v = PyString_FromString(buffer); - } -#endif - PyDict_SetItemString(d, "freetype2_version", v); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c deleted file mode 100755 index 928986bb323..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingmath.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * The Python Imaging Library - * - * a simple math add-on for the Python Imaging Library - * - * history: - * 1999-02-15 fl Created - * 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 - * - * Copyright (c) 1999-2005 by Secret Labs AB - * Copyright (c) 2005 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - -#include "Python.h" - -#include "Imaging.h" - -#include "math.h" -#include "float.h" - -#define MAX_INT32 2147483647.0 -#define MIN_INT32 -2147483648.0 - -#if defined(_MSC_VER) && _MSC_VER < 1500 -/* python 2.1/2.2/2.3 = VC98 = VER 1200 */ -/* python 2.4/2.5 = VS.NET 2003 = VER 1310 */ -/* python 2.6 = VS 9.0 = VER 1500 */ -#define powf(a, b) ((float) pow((double) (a), (double) (b))) -#endif - -#define UNOP(name, op, type)\ -void name(Imaging out, Imaging im1)\ -{\ - int x, y;\ - for (y = 0; y < out->ysize; y++) {\ - type* p0 = (type*) out->image[y];\ - type* p1 = (type*) im1->image[y];\ - for (x = 0; x < out->xsize; x++) {\ - *p0 = op(type, *p1);\ - p0++; p1++;\ - }\ - }\ -} - -#define BINOP(name, op, type)\ -void name(Imaging out, Imaging im1, Imaging im2)\ -{\ - int x, y;\ - for (y = 0; y < out->ysize; y++) {\ - type* p0 = (type*) out->image[y];\ - type* p1 = (type*) im1->image[y];\ - type* p2 = (type*) im2->image[y];\ - for (x = 0; x < out->xsize; x++) {\ - *p0 = op(type, *p1, *p2);\ - p0++; p1++; p2++;\ - }\ - }\ -} - -#define NEG(type, v1) -(v1) -#define INVERT(type, v1) ~(v1) - -#define ADD(type, v1, v2) (v1)+(v2) -#define SUB(type, v1, v2) (v1)-(v2) -#define MUL(type, v1, v2) (v1)*(v2) - -#define MIN(type, v1, v2) ((v1)<(v2))?(v1):(v2) -#define MAX(type, v1, v2) ((v1)>(v2))?(v1):(v2) - -#define AND(type, v1, v2) (v1)&(v2) -#define OR(type, v1, v2) (v1)|(v2) -#define XOR(type, v1, v2) (v1)^(v2) -#define LSHIFT(type, v1, v2) (v1)<<(v2) -#define RSHIFT(type, v1, v2) (v1)>>(v2) - -#define ABS_I(type, v1) abs((v1)) -#define ABS_F(type, v1) fabs((v1)) - -/* -------------------------------------------------------------------- - * some day, we should add FPE protection mechanisms. see pyfpe.h for - * details. - * - * PyFPE_START_PROTECT("Error in foobar", return 0) - * PyFPE_END_PROTECT(result) - */ - -#define DIV_I(type, v1, v2) ((v2)!=0)?(v1)/(v2):0 -#define DIV_F(type, v1, v2) ((v2)!=0.0F)?(v1)/(v2):0.0F - -#define MOD_I(type, v1, v2) ((v2)!=0)?(v1)%(v2):0 -#define MOD_F(type, v1, v2) ((v2)!=0.0F)?fmod((v1),(v2)):0.0F - -static int powi(int x, int y) -{ - double v = pow(x, y) + 0.5; - if (errno == EDOM) - return 0; - if (v < MIN_INT32) - v = MIN_INT32; - else if (v > MAX_INT32) - v = MAX_INT32; - return (int) v; -} - -#define POW_I(type, v1, v2) powi(v1, v2) -#define POW_F(type, v1, v2) powf(v1, v2) /* FIXME: EDOM handling */ - -#define DIFF_I(type, v1, v2) abs((v1)-(v2)) -#define DIFF_F(type, v1, v2) fabs((v1)-(v2)) - -#define EQ(type, v1, v2) (v1)==(v2) -#define NE(type, v1, v2) (v1)!=(v2) -#define LT(type, v1, v2) (v1)<(v2) -#define LE(type, v1, v2) (v1)<=(v2) -#define GT(type, v1, v2) (v1)>(v2) -#define GE(type, v1, v2) (v1)>=(v2) - -UNOP(abs_I, ABS_I, INT32) -UNOP(neg_I, NEG, INT32) - -BINOP(add_I, ADD, INT32) -BINOP(sub_I, SUB, INT32) -BINOP(mul_I, MUL, INT32) -BINOP(div_I, DIV_I, INT32) -BINOP(mod_I, MOD_I, INT32) -BINOP(pow_I, POW_I, INT32) -BINOP(diff_I, DIFF_I, INT32) - -UNOP(invert_I, INVERT, INT32) -BINOP(and_I, AND, INT32) -BINOP(or_I, OR, INT32) -BINOP(xor_I, XOR, INT32) -BINOP(lshift_I, LSHIFT, INT32) -BINOP(rshift_I, RSHIFT, INT32) - -BINOP(min_I, MIN, INT32) -BINOP(max_I, MAX, INT32) - -BINOP(eq_I, EQ, INT32) -BINOP(ne_I, NE, INT32) -BINOP(lt_I, LT, INT32) -BINOP(le_I, LE, INT32) -BINOP(gt_I, GT, INT32) -BINOP(ge_I, GE, INT32) - -UNOP(abs_F, ABS_F, FLOAT32) -UNOP(neg_F, NEG, FLOAT32) - -BINOP(add_F, ADD, FLOAT32) -BINOP(sub_F, SUB, FLOAT32) -BINOP(mul_F, MUL, FLOAT32) -BINOP(div_F, DIV_F, FLOAT32) -BINOP(mod_F, MOD_F, FLOAT32) -BINOP(pow_F, POW_F, FLOAT32) -BINOP(diff_F, DIFF_F, FLOAT32) - -BINOP(min_F, MIN, FLOAT32) -BINOP(max_F, MAX, FLOAT32) - -BINOP(eq_F, EQ, FLOAT32) -BINOP(ne_F, NE, FLOAT32) -BINOP(lt_F, LT, FLOAT32) -BINOP(le_F, LE, FLOAT32) -BINOP(gt_F, GT, FLOAT32) -BINOP(ge_F, GE, FLOAT32) - -static PyObject * -_unop(PyObject* self, PyObject* args) -{ - Imaging out; - Imaging im1; - void (*unop)(Imaging, Imaging); - - long op, i0, i1; - if (!PyArg_ParseTuple(args, "lll", &op, &i0, &i1)) - return NULL; - - out = (Imaging) i0; - im1 = (Imaging) i1; - - unop = (void*) op; - - unop(out, im1); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject * -_binop(PyObject* self, PyObject* args) -{ - Imaging out; - Imaging im1; - Imaging im2; - void (*binop)(Imaging, Imaging, Imaging); - - long op, i0, i1, i2; - if (!PyArg_ParseTuple(args, "llll", &op, &i0, &i1, &i2)) - return NULL; - - out = (Imaging) i0; - im1 = (Imaging) i1; - im2 = (Imaging) i2; - - binop = (void*) op; - - binop(out, im1, im2); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyMethodDef _functions[] = { - {"unop", _unop, 1}, - {"binop", _binop, 1}, - {NULL, NULL} -}; - -static void -install(PyObject *d, char* name, void* value) -{ - PyObject *v = PyInt_FromLong((long) value); - if (!v || PyDict_SetItemString(d, name, v)) - PyErr_Clear(); - Py_XDECREF(v); -} - -DL_EXPORT(void) -init_imagingmath(void) -{ - PyObject* m; - PyObject* d; - - m = Py_InitModule("_imagingmath", _functions); - d = PyModule_GetDict(m); - - install(d, "abs_I", abs_I); - install(d, "neg_I", neg_I); - install(d, "add_I", add_I); - install(d, "sub_I", sub_I); - install(d, "diff_I", diff_I); - install(d, "mul_I", mul_I); - install(d, "div_I", div_I); - install(d, "mod_I", mod_I); - install(d, "min_I", min_I); - install(d, "max_I", max_I); - install(d, "pow_I", pow_I); - - install(d, "invert_I", invert_I); - install(d, "and_I", and_I); - install(d, "or_I", or_I); - install(d, "xor_I", xor_I); - install(d, "lshift_I", lshift_I); - install(d, "rshift_I", rshift_I); - - install(d, "eq_I", eq_I); - install(d, "ne_I", ne_I); - install(d, "lt_I", lt_I); - install(d, "le_I", le_I); - install(d, "gt_I", gt_I); - install(d, "ge_I", ge_I); - - install(d, "abs_F", abs_F); - install(d, "neg_F", neg_F); - install(d, "add_F", add_F); - install(d, "sub_F", sub_F); - install(d, "diff_F", diff_F); - install(d, "mul_F", mul_F); - install(d, "div_F", div_F); - install(d, "mod_F", mod_F); - install(d, "min_F", min_F); - install(d, "max_F", max_F); - install(d, "pow_F", pow_F); - - install(d, "eq_F", eq_F); - install(d, "ne_F", ne_F); - install(d, "lt_F", lt_F); - install(d, "le_F", le_F); - install(d, "gt_F", gt_F); - install(d, "ge_F", ge_F); - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c deleted file mode 100755 index 6165a2acb93..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/_imagingtk.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * The Python Imaging Library. - * - * tkinter hooks - * - * history: - * 99-07-26 fl created - * 99-08-15 fl moved to its own support module - * - * Copyright (c) Secret Labs AB 1999. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Python.h" -#include "Imaging.h" - -#include "tk.h" - -/* must link with Tk/tkImaging.c */ -extern void TkImaging_Init(Tcl_Interp* interp); - -/* copied from _tkinter.c (this isn't as bad as it may seem: for new - versions, we use _tkinter's interpaddr hook instead, and all older - versions use this structure layout) */ - -typedef struct { - PyObject_HEAD - Tcl_Interp* interp; -} TkappObject; - -static PyObject* -_tkinit(PyObject* self, PyObject* args) -{ - Tcl_Interp* interp; - - long arg; - int is_interp; - if (!PyArg_ParseTuple(args, "li", &arg, &is_interp)) - return NULL; - - if (is_interp) - interp = (Tcl_Interp*) arg; - else { - TkappObject* app; - /* Do it the hard way. This will break if the TkappObject - layout changes */ - app = (TkappObject*) arg; - interp = app->interp; - } - - /* This will bomb if interp is invalid... */ - TkImaging_Init(interp); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyMethodDef functions[] = { - /* Tkinter interface stuff */ - {"tkinit", (PyCFunction)_tkinit, 1}, - {NULL, NULL} /* sentinel */ -}; - -DL_EXPORT(void) -init_imagingtk(void) -{ - Py_InitModule("_imagingtk", functions); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.exp b/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.exp deleted file mode 100755 index 7247036d7846cba448752fb860a08262cea605b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmY*XO;5r=5S@aGF&@Bp^w0wbh_We|h%p+8Uy+DtAmOwLS=hC1EZwGEp!y%YdGk;B z!@PJm(b+adnRMQ~d719)&ThxbL8JE8`?dhqAu)>x&NNFCgB^5^{$UcdHS`vKgp1MC zE%%LPtcYuTrgVWVD4v5Z6llFusSR`oHm54Zi zT{tck@DI~7wG9kvX2Go-hbmGJ+OG7fcBkFFfmb*w!FbN$;)rT@7-^=Z@~KwJi|Dn~ zBNbo90rR;CseY6p9|kPc&$OMMyH+Q4(gYC;I6tEIp>jhuv9F{jBD)eF9#rXH&w-4l z%(MG?%B8aF4sqzz@OC0Da|`1vs>`+xJMJ`d4L zmrZbm24<-ey1@(+FcZ#{w8~66Q|5OeJ{f1Bl)DaE9ZnYtlH^8AG?s%c#N{3S0vo-5 AWB>pF diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.lib b/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imaging.lib deleted file mode 100755 index c6fe61113dae7ec20238a1c100fb1862481fca66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1736 zcmcIl%}(1u5dLfzNG*h-(i@^O5>nwnN{r1^Mm>ZHwlQ#Ge96><}{TjlswC#ES zYT!gvS_;9Z?b2GfvJ@=Qk*MCFVLxh$4m!Cc%hqdJoYVJL2`Eh{VERny%_=d5ctQ3=kJ$pOGo9vPykr)GQa=vr zErzoLB;*U37*Fx>tM#aI5Ff^0o7RLsX?excTC#g<7$lw#@&%v@@hVFrS8agM(Lx)W zAulR%y+Q8A$3Jm(B?kEn6Z@w_qAmc5$9p14;$usONF3H70opq5jfCZ6JSgJZf%l5z zNk>5A)9}e@Hn!cSU7-3Oym|AF z__s{F>uj4M#!2Vxo0r+n?Cf4yIjC3O`h^_88YE^B!I@@hVDKKDqkotHZ56$ZAK_v+ zaY}baGqz;`e5G`bZP++5fvJ&+m+Bdq(S?_6)X~T zu`&^H0K0Hh%;PRoH??(K)YO7&ISN&z9<^QW@7Pz}-X*-kaS=u{4yP@uok66TmddAE zDL0}QQV&&p76;7dBBXjOLp}&tsGn&!ok68WYNP=o7SL(Y+fX?n^Xzl!ipVa<&BGn~ zTk}Ci6Xx1?dcvi$YgJOE4;^~a?NL|yPuRM^TY_fMOn>lirtOi!<4dll@9_O?PPh0H z%$_BPUV6;Kztk~GmCy;M7=W2{rleVB;+ZnL3GoS4=SrzpMXNz)t{_Qn#;nG2u!;D; F%O5MChW`Kn diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.lib b/tools/HitboxExpander/third_party/Imaging-1.1.7/build/temp.win32-2.7/Release/_imagingmath.lib deleted file mode 100755 index 725d4c008867b596b0bb6209e3b04d6e2073a741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmcIl!EVz)5Pfz+TPzM%LG7uMfg<2Q(ztfW0aY#(L{!(U-1LUznxsv9NF9~55-08z zM~-{}AA$M}960a+{f#oS@y2cvnxraYd3WdScz0&@&HCZ1@VMSu(~8DbDXms)%QDNQ zm8-Z^OSY9v>}vq-0ICk;JsO??GZ*{@L3L|q+ph&1Z+GAL)t%b59|Tc5Y(_`TcGztp z2)sSl9k#-ktXa>f_I}UX3^vwl>-1UF?oe|Sb+dLDMy8IcTG@+hv)MsXm>u_yOZp6I@oO<$q&xdE*x4>&Ozx0+o_dEhEJm@mHh z3konNas{Q(IQV$dT;A=ez&jdzl}ge(&|ep#M%WFPO*!>|2EXVfA_>V+>tN+Pu`4Gq z=4p_p{iGe^4vcd;I4t5WtI!9-e2V+}EKTsDEX?5ebbc$UAIG2K!>;kne{Q%{Z&S<; zH1|m74|xIFTa1YMf)}&I!Ia-3qj2hRyF+frr{8gTDL3WsSlCY$GI|FPp0^|-;^f_O z60z8Z0Q7C_6k+@cH;M4-z*?elr{V*(H)rh_E>6iF)3*Ed<|?XS&rjhc`#PFE4KbBA z8TPD7l-ct`DoM}m`G2gKstate, 0, sizeof(decoder->state)); - - /* Allocate decoder context */ - if (contextsize > 0) { - context = (void*) calloc(1, contextsize); - if (!context) { - Py_DECREF(decoder); - (void) PyErr_NoMemory(); - return NULL; - } - } else - context = 0; - - /* Initialize decoder context */ - decoder->state.context = context; - - /* Target image */ - decoder->lock = NULL; - decoder->im = NULL; - - return decoder; -} - -static void -_dealloc(ImagingDecoderObject* decoder) -{ - free(decoder->state.buffer); - free(decoder->state.context); - Py_XDECREF(decoder->lock); - PyObject_Del(decoder); -} - -static PyObject* -_decode(ImagingDecoderObject* decoder, PyObject* args) -{ - UINT8* buffer; - int bufsize, status; - - if (!PyArg_ParseTuple(args, "s#", &buffer, &bufsize)) - return NULL; - - status = decoder->decode(decoder->im, &decoder->state, buffer, bufsize); - - return Py_BuildValue("ii", status, decoder->state.errcode); -} - -extern Imaging PyImaging_AsImaging(PyObject *op); - -static PyObject* -_setimage(ImagingDecoderObject* decoder, PyObject* args) -{ - PyObject* op; - Imaging im; - ImagingCodecState state; - int x0, y0, x1, y1; - - x0 = y0 = x1 = y1 = 0; - - /* FIXME: should publish the ImagingType descriptor */ - if (!PyArg_ParseTuple(args, "O|(iiii)", &op, &x0, &y0, &x1, &y1)) - return NULL; - im = PyImaging_AsImaging(op); - if (!im) - return NULL; - - decoder->im = im; - - state = &decoder->state; - - /* Setup decoding tile extent */ - if (x0 == 0 && x1 == 0) { - state->xsize = im->xsize; - state->ysize = im->ysize; - } else { - state->xoff = x0; - state->yoff = y0; - state->xsize = x1 - x0; - state->ysize = y1 - y0; - } - - if (state->xsize <= 0 || - state->xsize + state->xoff > (int) im->xsize || - state->ysize <= 0 || - state->ysize + state->yoff > (int) im->ysize) { - PyErr_SetString(PyExc_ValueError, "tile cannot extend outside image"); - return NULL; - } - - /* Allocate memory buffer (if bits field is set) */ - if (state->bits > 0) { - if (!state->bytes) - state->bytes = (state->bits * state->xsize+7)/8; - state->buffer = (UINT8*) malloc(state->bytes); - if (!state->buffer) - return PyErr_NoMemory(); - } - - /* Keep a reference to the image object, to make sure it doesn't - go away before we do */ - Py_INCREF(op); - Py_XDECREF(decoder->lock); - decoder->lock = op; - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef methods[] = { - {"decode", (PyCFunction)_decode, 1}, - {"setimage", (PyCFunction)_setimage, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -_getattr(ImagingDecoderObject* self, char* name) -{ - return Py_FindMethod(methods, (PyObject*) self, name); -} - -statichere PyTypeObject ImagingDecoderType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingDecoder", /*tp_name*/ - sizeof(ImagingDecoderObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_hash*/ -}; - -/* -------------------------------------------------------------------- */ - -int -get_unpacker(ImagingDecoderObject* decoder, const char* mode, - const char* rawmode) -{ - int bits; - ImagingShuffler unpack; - - unpack = ImagingFindUnpacker(mode, rawmode, &bits); - if (!unpack) { - Py_DECREF(decoder); - PyErr_SetString(PyExc_ValueError, "unknown raw mode"); - return -1; - } - - decoder->state.shuffle = unpack; - decoder->state.bits = bits; - - return 0; -} - - -/* -------------------------------------------------------------------- */ -/* BIT (packed fields) */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_BitDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - int bits = 8; - int pad = 8; - int fill = 0; - int sign = 0; - int ystep = 1; - if (!PyArg_ParseTuple(args, "s|iiiii", &mode, &bits, &pad, &fill, - &sign, &ystep)) - return NULL; - - if (strcmp(mode, "F") != 0) { - PyErr_SetString(PyExc_ValueError, "bad image mode"); - return NULL; - } - - decoder = PyImaging_DecoderNew(sizeof(BITSTATE)); - if (decoder == NULL) - return NULL; - - decoder->decode = ImagingBitDecode; - - decoder->state.ystep = ystep; - - ((BITSTATE*)decoder->state.context)->bits = bits; - ((BITSTATE*)decoder->state.context)->pad = pad; - ((BITSTATE*)decoder->state.context)->fill = fill; - ((BITSTATE*)decoder->state.context)->sign = sign; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* FLI */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_FliDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - decoder->decode = ImagingFliDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* GIF */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_GifDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - int bits = 8; - int interlace = 0; - if (!PyArg_ParseTuple(args, "s|ii", &mode, &bits, &interlace)) - return NULL; - - if (strcmp(mode, "L") != 0 && strcmp(mode, "P") != 0) { - PyErr_SetString(PyExc_ValueError, "bad image mode"); - return NULL; - } - - decoder = PyImaging_DecoderNew(sizeof(GIFDECODERSTATE)); - if (decoder == NULL) - return NULL; - - decoder->decode = ImagingGifDecode; - - ((GIFDECODERSTATE*)decoder->state.context)->bits = bits; - ((GIFDECODERSTATE*)decoder->state.context)->interlace = interlace; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* HEX */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_HexDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - if (!PyArg_ParseTuple(args, "ss", &mode, &rawmode)) - return NULL; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingHexDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* LZW */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_TiffLzwDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - int filter = 0; - if (!PyArg_ParseTuple(args, "ss|i", &mode, &rawmode, &filter)) - return NULL; - - decoder = PyImaging_DecoderNew(sizeof(LZWSTATE)); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingLzwDecode; - - ((LZWSTATE*)decoder->state.context)->filter = filter; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* MSP */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_MspDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, "1", "1") < 0) - return NULL; - - decoder->decode = ImagingMspDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* PackBits */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_PackbitsDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - if (!PyArg_ParseTuple(args, "ss", &mode, &rawmode)) - return NULL; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingPackbitsDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* PCD */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_PcdDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - /* Unpack from PhotoYCC to RGB */ - if (get_unpacker(decoder, "RGB", "YCC;P") < 0) - return NULL; - - decoder->decode = ImagingPcdDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* PCX */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_PcxDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - int stride; - if (!PyArg_ParseTuple(args, "ssi", &mode, &rawmode, &stride)) - return NULL; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->state.bytes = stride; - - decoder->decode = ImagingPcxDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* RAW */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_RawDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - int stride = 0; - int ystep = 1; - if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &stride, &ystep)) - return NULL; - - decoder = PyImaging_DecoderNew(sizeof(RAWSTATE)); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingRawDecode; - - decoder->state.ystep = ystep; - - ((RAWSTATE*)decoder->state.context)->stride = stride; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* SUN RLE */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_SunRleDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - if (!PyArg_ParseTuple(args, "ss", &mode, &rawmode)) - return NULL; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingSunRleDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* TGA RLE */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_TgaRleDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - int ystep = 1; - int depth = 8; - if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &ystep, &depth)) - return NULL; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingTgaRleDecode; - - decoder->state.ystep = ystep; - decoder->state.count = depth / 8; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* XBM */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_XbmDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - decoder = PyImaging_DecoderNew(0); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, "1", "1;R") < 0) - return NULL; - - decoder->decode = ImagingXbmDecode; - - return (PyObject*) decoder; -} - - -/* -------------------------------------------------------------------- */ -/* ZIP */ -/* -------------------------------------------------------------------- */ - -#ifdef HAVE_LIBZ - -#include "Zip.h" - -PyObject* -PyImaging_ZipDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; - int interlaced = 0; - if (!PyArg_ParseTuple(args, "ss|i", &mode, &rawmode, &interlaced)) - return NULL; - - decoder = PyImaging_DecoderNew(sizeof(ZIPSTATE)); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingZipDecode; - - ((ZIPSTATE*)decoder->state.context)->interlaced = interlaced; - - return (PyObject*) decoder; -} -#endif - - -/* -------------------------------------------------------------------- */ -/* JPEG */ -/* -------------------------------------------------------------------- */ - -#ifdef HAVE_LIBJPEG - -/* We better define this decoder last in this file, so the following - undef's won't mess things up for the Imaging library proper. */ - -#undef HAVE_PROTOTYPES -#undef HAVE_STDDEF_H -#undef HAVE_STDLIB_H -#undef UINT8 -#undef UINT16 -#undef UINT32 -#undef INT8 -#undef INT16 -#undef INT32 - -#include "Jpeg.h" - -PyObject* -PyImaging_JpegDecoderNew(PyObject* self, PyObject* args) -{ - ImagingDecoderObject* decoder; - - char* mode; - char* rawmode; /* what we wan't from the decoder */ - char* jpegmode; /* what's in the file */ - int scale = 1; - int draft = 0; - if (!PyArg_ParseTuple(args, "ssz|ii", &mode, &rawmode, &jpegmode, - &scale, &draft)) - return NULL; - - if (!jpegmode) - jpegmode = ""; - - decoder = PyImaging_DecoderNew(sizeof(JPEGSTATE)); - if (decoder == NULL) - return NULL; - - if (get_unpacker(decoder, mode, rawmode) < 0) - return NULL; - - decoder->decode = ImagingJpegDecode; - - strncpy(((JPEGSTATE*)decoder->state.context)->rawmode, rawmode, 8); - strncpy(((JPEGSTATE*)decoder->state.context)->jpegmode, jpegmode, 8); - - ((JPEGSTATE*)decoder->state.context)->scale = scale; - ((JPEGSTATE*)decoder->state.context)->draft = draft; - - return (PyObject*) decoder; -} -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/display.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/display.c deleted file mode 100755 index 1a08fadd56e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/display.c +++ /dev/null @@ -1,836 +0,0 @@ -/* - * The Python Imaging Library. - * - * display support (and other windows-related stuff) - * - * History: - * 1996-05-13 fl Windows DIB support - * 1996-05-21 fl Added palette stuff - * 1996-05-28 fl Added display_mode stuff - * 1997-09-21 fl Added draw primitive - * 2001-09-17 fl Added ImagingGrabScreen (from _grabscreen.c) - * 2002-05-12 fl Added ImagingListWindows - * 2002-11-19 fl Added clipboard support - * 2002-11-25 fl Added GetDC/ReleaseDC helpers - * 2003-05-21 fl Added create window support (including window callback) - * 2003-09-05 fl Added fromstring/tostring methods - * 2009-03-14 fl Added WMF support (from pilwmf) - * - * Copyright (c) 1997-2003 by Secret Labs AB. - * Copyright (c) 1996-1997 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Python.h" - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#include "Imaging.h" - -/* -------------------------------------------------------------------- */ -/* Windows DIB support */ - -#ifdef WIN32 - -#include "ImDib.h" - -typedef struct { - PyObject_HEAD - ImagingDIB dib; -} ImagingDisplayObject; - -staticforward PyTypeObject ImagingDisplayType; - -static ImagingDisplayObject* -_new(const char* mode, int xsize, int ysize) -{ - ImagingDisplayObject *display; - - display = PyObject_New(ImagingDisplayObject, &ImagingDisplayType); - if (display == NULL) - return NULL; - - display->dib = ImagingNewDIB(mode, xsize, ysize); - if (!display->dib) { - Py_DECREF(display); - return NULL; - } - - return display; -} - -static void -_delete(ImagingDisplayObject* display) -{ - if (display->dib) - ImagingDeleteDIB(display->dib); - PyObject_Del(display); -} - -static PyObject* -_expose(ImagingDisplayObject* display, PyObject* args) -{ - int hdc; - if (!PyArg_ParseTuple(args, "i", &hdc)) - return NULL; - - ImagingExposeDIB(display->dib, hdc); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_draw(ImagingDisplayObject* display, PyObject* args) -{ - int hdc; - int dst[4]; - int src[4]; - if (!PyArg_ParseTuple(args, "i(iiii)(iiii)", &hdc, - dst+0, dst+1, dst+2, dst+3, - src+0, src+1, src+2, src+3)) - return NULL; - - ImagingDrawDIB(display->dib, hdc, dst, src); - - Py_INCREF(Py_None); - return Py_None; -} - -extern Imaging PyImaging_AsImaging(PyObject *op); - -static PyObject* -_paste(ImagingDisplayObject* display, PyObject* args) -{ - Imaging im; - - PyObject* op; - int xy[4]; - xy[0] = xy[1] = xy[2] = xy[3] = 0; - if (!PyArg_ParseTuple(args, "O|(iiii)", &op, xy+0, xy+1, xy+2, xy+3)) - return NULL; - im = PyImaging_AsImaging(op); - if (!im) - return NULL; - - if (xy[2] <= xy[0]) - xy[2] = xy[0] + im->xsize; - if (xy[3] <= xy[1]) - xy[3] = xy[1] + im->ysize; - - ImagingPasteDIB(display->dib, im, xy); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_query_palette(ImagingDisplayObject* display, PyObject* args) -{ - int hdc; - int status; - - if (!PyArg_ParseTuple(args, "i", &hdc)) - return NULL; - - status = ImagingQueryPaletteDIB(display->dib, hdc); - - return Py_BuildValue("i", status); -} - -static PyObject* -_getdc(ImagingDisplayObject* display, PyObject* args) -{ - int window; - HDC dc; - - if (!PyArg_ParseTuple(args, "i", &window)) - return NULL; - - dc = GetDC((HWND) window); - if (!dc) { - PyErr_SetString(PyExc_IOError, "cannot create dc"); - return NULL; - } - - return Py_BuildValue("i", (int) dc); -} - -static PyObject* -_releasedc(ImagingDisplayObject* display, PyObject* args) -{ - int window, dc; - - if (!PyArg_ParseTuple(args, "ii", &window, &dc)) - return NULL; - - ReleaseDC((HWND) window, (HDC) dc); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_fromstring(ImagingDisplayObject* display, PyObject* args) -{ - char* ptr; - int bytes; - if (!PyArg_ParseTuple(args, "s#:fromstring", &ptr, &bytes)) - return NULL; - - if (display->dib->ysize * display->dib->linesize != bytes) { - PyErr_SetString(PyExc_ValueError, "wrong size"); - return NULL; - } - - memcpy(display->dib->bits, ptr, bytes); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_tostring(ImagingDisplayObject* display, PyObject* args) -{ - if (!PyArg_ParseTuple(args, ":tostring")) - return NULL; - - return PyString_FromStringAndSize( - display->dib->bits, display->dib->ysize * display->dib->linesize - ); -} - -static struct PyMethodDef methods[] = { - {"draw", (PyCFunction)_draw, 1}, - {"expose", (PyCFunction)_expose, 1}, - {"paste", (PyCFunction)_paste, 1}, - {"query_palette", (PyCFunction)_query_palette, 1}, - {"getdc", (PyCFunction)_getdc, 1}, - {"releasedc", (PyCFunction)_releasedc, 1}, - {"fromstring", (PyCFunction)_fromstring, 1}, - {"tostring", (PyCFunction)_tostring, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -_getattr(ImagingDisplayObject* self, char* name) -{ - PyObject* res; - - res = Py_FindMethod(methods, (PyObject*) self, name); - if (res) - return res; - PyErr_Clear(); - if (!strcmp(name, "mode")) - return Py_BuildValue("s", self->dib->mode); - if (!strcmp(name, "size")) - return Py_BuildValue("ii", self->dib->xsize, self->dib->ysize); - PyErr_SetString(PyExc_AttributeError, name); - return NULL; -} - -statichere PyTypeObject ImagingDisplayType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingDisplay", /*tp_name*/ - sizeof(ImagingDisplayObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_delete, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_hash*/ -}; - -PyObject* -PyImaging_DisplayWin32(PyObject* self, PyObject* args) -{ - ImagingDisplayObject* display; - char *mode; - int xsize, ysize; - - if (!PyArg_ParseTuple(args, "s(ii)", &mode, &xsize, &ysize)) - return NULL; - - display = _new(mode, xsize, ysize); - if (display == NULL) - return NULL; - - return (PyObject*) display; -} - -PyObject* -PyImaging_DisplayModeWin32(PyObject* self, PyObject* args) -{ - char *mode; - int size[2]; - - mode = ImagingGetModeDIB(size); - - return Py_BuildValue("s(ii)", mode, size[0], size[1]); -} - -/* -------------------------------------------------------------------- */ -/* Windows screen grabber */ - -PyObject* -PyImaging_GrabScreenWin32(PyObject* self, PyObject* args) -{ - int width, height; - HBITMAP bitmap; - BITMAPCOREHEADER core; - HDC screen, screen_copy; - PyObject* buffer; - - /* step 1: create a memory DC large enough to hold the - entire screen */ - - screen = CreateDC("DISPLAY", NULL, NULL, NULL); - screen_copy = CreateCompatibleDC(screen); - - width = GetDeviceCaps(screen, HORZRES); - height = GetDeviceCaps(screen, VERTRES); - - bitmap = CreateCompatibleBitmap(screen, width, height); - if (!bitmap) - goto error; - - if (!SelectObject(screen_copy, bitmap)) - goto error; - - /* step 2: copy bits into memory DC bitmap */ - - if (!BitBlt(screen_copy, 0, 0, width, height, screen, 0, 0, SRCCOPY)) - goto error; - - /* step 3: extract bits from bitmap */ - - buffer = PyString_FromStringAndSize(NULL, height * ((width*3 + 3) & -4)); - if (!buffer) - return NULL; - - core.bcSize = sizeof(core); - core.bcWidth = width; - core.bcHeight = height; - core.bcPlanes = 1; - core.bcBitCount = 24; - if (!GetDIBits(screen_copy, bitmap, 0, height, PyString_AS_STRING(buffer), - (BITMAPINFO*) &core, DIB_RGB_COLORS)) - goto error; - - DeleteObject(bitmap); - DeleteDC(screen_copy); - DeleteDC(screen); - - return Py_BuildValue("(ii)N", width, height, buffer); - -error: - PyErr_SetString(PyExc_IOError, "screen grab failed"); - - DeleteDC(screen_copy); - DeleteDC(screen); - - return NULL; -} - -static BOOL CALLBACK list_windows_callback(HWND hwnd, LPARAM lParam) -{ - PyObject* window_list = (PyObject*) lParam; - PyObject* item; - PyObject* title; - RECT inner, outer; - int title_size; - int status; - - /* get window title */ - title_size = GetWindowTextLength(hwnd); - if (title_size > 0) { - title = PyString_FromStringAndSize(NULL, title_size); - if (title) - GetWindowText(hwnd, PyString_AS_STRING(title), title_size+1); - } else - title = PyString_FromString(""); - if (!title) - return 0; - - /* get bounding boxes */ - GetClientRect(hwnd, &inner); - GetWindowRect(hwnd, &outer); - - item = Py_BuildValue( - "lN(iiii)(iiii)", (long) hwnd, title, - inner.left, inner.top, inner.right, inner.bottom, - outer.left, outer.top, outer.right, outer.bottom - ); - if (!item) - return 0; - - status = PyList_Append(window_list, item); - - Py_DECREF(item); - - if (status < 0) - return 0; - - return 1; -} - -PyObject* -PyImaging_ListWindowsWin32(PyObject* self, PyObject* args) -{ - PyObject* window_list; - - window_list = PyList_New(0); - if (!window_list) - return NULL; - - EnumWindows(list_windows_callback, (LPARAM) window_list); - - if (PyErr_Occurred()) { - Py_DECREF(window_list); - return NULL; - } - - return window_list; -} - -/* -------------------------------------------------------------------- */ -/* Windows clipboard grabber */ - -PyObject* -PyImaging_GrabClipboardWin32(PyObject* self, PyObject* args) -{ - int clip; - HANDLE handle; - int size; - void* data; - PyObject* result; - - int verbose = 0; /* debugging; will be removed in future versions */ - if (!PyArg_ParseTuple(args, "|i", &verbose)) - return NULL; - - - clip = OpenClipboard(NULL); - /* FIXME: check error status */ - - if (verbose) { - UINT format = EnumClipboardFormats(0); - char buffer[200]; - char* result; - while (format != 0) { - if (GetClipboardFormatName(format, buffer, sizeof buffer) > 0) - result = buffer; - else - switch (format) { - case CF_BITMAP: - result = "CF_BITMAP"; - break; - case CF_DIB: - result = "CF_DIB"; - break; - case CF_DIF: - result = "CF_DIF"; - break; - case CF_ENHMETAFILE: - result = "CF_ENHMETAFILE"; - break; - case CF_HDROP: - result = "CF_HDROP"; - break; - case CF_LOCALE: - result = "CF_LOCALE"; - break; - case CF_METAFILEPICT: - result = "CF_METAFILEPICT"; - break; - case CF_OEMTEXT: - result = "CF_OEMTEXT"; - break; - case CF_OWNERDISPLAY: - result = "CF_OWNERDISPLAY"; - break; - case CF_PALETTE: - result = "CF_PALETTE"; - break; - case CF_PENDATA: - result = "CF_PENDATA"; - break; - case CF_RIFF: - result = "CF_RIFF"; - break; - case CF_SYLK: - result = "CF_SYLK"; - break; - case CF_TEXT: - result = "CF_TEXT"; - break; - case CF_WAVE: - result = "CF_WAVE"; - break; - case CF_TIFF: - result = "CF_TIFF"; - break; - case CF_UNICODETEXT: - result = "CF_UNICODETEXT"; - break; - default: - sprintf(buffer, "[%d]", format); - result = buffer; - break; - } - printf("%s (%d)\n", result, format); - format = EnumClipboardFormats(format); - } - } - - handle = GetClipboardData(CF_DIB); - if (!handle) { - /* FIXME: add CF_HDROP support to allow cut-and-paste from - the explorer */ - CloseClipboard(); - Py_INCREF(Py_None); - return Py_None; - } - - size = GlobalSize(handle); - data = GlobalLock(handle); - -#if 0 - /* calculate proper size for string formats */ - if (format == CF_TEXT || format == CF_OEMTEXT) - size = strlen(data); - else if (format == CF_UNICODETEXT) - size = wcslen(data) * 2; -#endif - - result = PyString_FromStringAndSize(data, size); - - GlobalUnlock(handle); - - CloseClipboard(); - - return result; -} - -/* -------------------------------------------------------------------- */ -/* Windows class */ - -#ifndef WM_MOUSEWHEEL -#define WM_MOUSEWHEEL 522 -#endif - -static int mainloop = 0; - -static void -callback_error(const char* handler) -{ - PyObject* sys_stderr; - - sys_stderr = PySys_GetObject("stderr"); - - if (sys_stderr) { - PyFile_WriteString("*** ImageWin: error in ", sys_stderr); - PyFile_WriteString((char*) handler, sys_stderr); - PyFile_WriteString(":\n", sys_stderr); - } - - PyErr_Print(); - PyErr_Clear(); -} - -static LRESULT CALLBACK -windowCallback(HWND wnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - PAINTSTRUCT ps; - PyObject* callback = NULL; - PyObject* result; - PyThreadState* threadstate; - PyThreadState* current_threadstate; - HDC dc; - RECT rect; - LRESULT status = 0; - - /* set up threadstate for messages that calls back into python */ - switch (message) { - case WM_CREATE: - mainloop++; - break; - case WM_DESTROY: - mainloop--; - /* fall through... */ - case WM_PAINT: - case WM_SIZE: - callback = (PyObject*) GetWindowLong(wnd, 0); - if (callback) { - threadstate = (PyThreadState*) - GetWindowLong(wnd, sizeof(PyObject*)); - current_threadstate = PyThreadState_Swap(NULL); - PyEval_RestoreThread(threadstate); - } else - return DefWindowProc(wnd, message, wParam, lParam); - } - - /* process message */ - switch (message) { - - case WM_PAINT: - /* redraw (part of) window. this generates a WCK-style - damage/clear/repair cascade */ - BeginPaint(wnd, &ps); - dc = GetDC(wnd); - GetWindowRect(wnd, &rect); /* in screen coordinates */ - - result = PyObject_CallFunction( - callback, "siiii", "damage", - ps.rcPaint.left, ps.rcPaint.top, - ps.rcPaint.right, ps.rcPaint.bottom - ); - if (result) - Py_DECREF(result); - else - callback_error("window damage callback"); - - result = PyObject_CallFunction( - callback, "siiiii", "clear", (int) dc, - 0, 0, rect.right-rect.left, rect.bottom-rect.top - ); - if (result) - Py_DECREF(result); - else - callback_error("window clear callback"); - - result = PyObject_CallFunction( - callback, "siiiii", "repair", (int) dc, - 0, 0, rect.right-rect.left, rect.bottom-rect.top - ); - if (result) - Py_DECREF(result); - else - callback_error("window repair callback"); - - ReleaseDC(wnd, dc); - EndPaint(wnd, &ps); - break; - - case WM_SIZE: - /* resize window */ - result = PyObject_CallFunction( - callback, "sii", "resize", LOWORD(lParam), HIWORD(lParam) - ); - if (result) { - InvalidateRect(wnd, NULL, 1); - Py_DECREF(result); - } else - callback_error("window resize callback"); - break; - - case WM_DESTROY: - /* destroy window */ - result = PyObject_CallFunction(callback, "s", "destroy"); - if (result) - Py_DECREF(result); - else - callback_error("window destroy callback"); - Py_DECREF(callback); - break; - - default: - status = DefWindowProc(wnd, message, wParam, lParam); - } - - if (callback) { - /* restore thread state */ - PyEval_SaveThread(); - PyThreadState_Swap(threadstate); - } - - return status; -} - -PyObject* -PyImaging_CreateWindowWin32(PyObject* self, PyObject* args) -{ - HWND wnd; - WNDCLASS windowClass; - - char* title; - PyObject* callback; - int width = 0, height = 0; - if (!PyArg_ParseTuple(args, "sO|ii", &title, &callback, &width, &height)) - return NULL; - - if (width <= 0) - width = CW_USEDEFAULT; - if (height <= 0) - height = CW_USEDEFAULT; - - /* register toplevel window class */ - windowClass.style = CS_CLASSDC; - windowClass.cbClsExtra = 0; - windowClass.cbWndExtra = sizeof(PyObject*) + sizeof(PyThreadState*); - windowClass.hInstance = GetModuleHandle(NULL); - /* windowClass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); */ - windowClass.hbrBackground = NULL; - windowClass.lpszMenuName = NULL; - windowClass.lpszClassName = "pilWindow"; - windowClass.lpfnWndProc = windowCallback; - windowClass.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(1)); - windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); /* CROSS? */ - - RegisterClass(&windowClass); /* FIXME: check return status */ - - wnd = CreateWindowEx( - 0, windowClass.lpszClassName, title, - WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, CW_USEDEFAULT, width, height, - HWND_DESKTOP, NULL, NULL, NULL - ); - - if (!wnd) { - PyErr_SetString(PyExc_IOError, "failed to create window"); - return NULL; - } - - /* register window callback */ - Py_INCREF(callback); - SetWindowLong(wnd, 0, (LONG) callback); - SetWindowLong(wnd, sizeof(callback), (LONG) PyThreadState_Get()); - - Py_BEGIN_ALLOW_THREADS - ShowWindow(wnd, SW_SHOWNORMAL); - SetForegroundWindow(wnd); /* to make sure it's visible */ - Py_END_ALLOW_THREADS - - return Py_BuildValue("l", (long) wnd); -} - -PyObject* -PyImaging_EventLoopWin32(PyObject* self, PyObject* args) -{ - MSG msg; - - Py_BEGIN_ALLOW_THREADS - while (mainloop && GetMessage(&msg, NULL, 0, 0)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - Py_END_ALLOW_THREADS - - Py_INCREF(Py_None); - return Py_None; -} - -/* -------------------------------------------------------------------- */ -/* windows WMF renderer */ - -#define GET32(p,o) ((DWORD*)(p+o))[0] - -PyObject * -PyImaging_DrawWmf(PyObject* self, PyObject* args) -{ - HBITMAP bitmap; - HENHMETAFILE meta; - BITMAPCOREHEADER core; - HDC dc; - RECT rect; - PyObject* buffer = NULL; - char* ptr; - - char* data; - int datasize; - int width, height; - int x0, y0, x1, y1; - if (!PyArg_ParseTuple(args, "s#(ii)(iiii):_load", &data, &datasize, - &width, &height, &x0, &x1, &y0, &y1)) - return NULL; - - /* step 1: copy metafile contents into METAFILE object */ - - if (datasize > 22 && GET32(data, 0) == 0x9ac6cdd7) { - - /* placeable windows metafile (22-byte aldus header) */ - meta = SetWinMetaFileBits(datasize-22, data+22, NULL, NULL); - - } else if (datasize > 80 && GET32(data, 0) == 1 && - GET32(data, 40) == 0x464d4520) { - - /* enhanced metafile */ - meta = SetEnhMetaFileBits(datasize, data); - - } else { - - /* unknown meta format */ - meta = NULL; - - } - - if (!meta) { - PyErr_SetString(PyExc_IOError, "cannot load metafile"); - return NULL; - } - - /* step 2: create bitmap */ - - core.bcSize = sizeof(core); - core.bcWidth = width; - core.bcHeight = height; - core.bcPlanes = 1; - core.bcBitCount = 24; - - dc = CreateCompatibleDC(NULL); - - bitmap = CreateDIBSection( - dc, (BITMAPINFO*) &core, DIB_RGB_COLORS, &ptr, NULL, 0 - ); - - if (!bitmap) { - PyErr_SetString(PyExc_IOError, "cannot create bitmap"); - goto error; - } - - if (!SelectObject(dc, bitmap)) { - PyErr_SetString(PyExc_IOError, "cannot select bitmap"); - goto error; - } - - /* step 3: render metafile into bitmap */ - - rect.left = rect.top = 0; - rect.right = width; - rect.bottom = height; - - /* FIXME: make background transparent? configurable? */ - FillRect(dc, &rect, GetStockObject(WHITE_BRUSH)); - - if (!PlayEnhMetaFile(dc, meta, &rect)) { - PyErr_SetString(PyExc_IOError, "cannot render metafile"); - goto error; - } - - /* step 4: extract bits from bitmap */ - - GdiFlush(); - - buffer = PyString_FromStringAndSize(ptr, height * ((width*3 + 3) & -4)); - -error: - DeleteEnhMetaFile(meta); - - if (bitmap) - DeleteObject(bitmap); - - DeleteDC(dc); - - return buffer; -} - -#endif /* WIN32 */ diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py deleted file mode 100755 index e8140ecdfdd..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/doctest.py +++ /dev/null @@ -1,1111 +0,0 @@ -# Module doctest version 0.9.6 -# Released to the public domain 16-Jan-2001, -# by Tim Peters (tim.one@home.com). - -# local modifications: -# 2001-02-13 fl: minor tweaks to make it run under both 1.5.2 and 2.0 - -# Provided as-is; use at your own risk; no warranty; no promises; enjoy! - -"""Module doctest -- a framework for running examples in docstrings. - -NORMAL USAGE - -In normal use, end each module M with: - -def _test(): - import doctest, M # replace M with your module's name - return doctest.testmod(M) # ditto - -if __name__ == "__main__": - _test() - -Then running the module as a script will cause the examples in the -docstrings to get executed and verified: - -python M.py - -This won't display anything unless an example fails, in which case the -failing example(s) and the cause(s) of the failure(s) are printed to stdout -(why not stderr? because stderr is a lame hack <0.2 wink>), and the final -line of output is "Test failed.". - -Run it with the -v switch instead: - -python M.py -v - -and a detailed report of all examples tried is printed to stdout, along -with assorted summaries at the end. - -You can force verbose mode by passing "verbose=1" to testmod, or prohibit -it by passing "verbose=0". In either of those cases, sys.argv is not -examined by testmod. - -In any case, testmod returns a 2-tuple of ints (f, t), where f is the -number of docstring examples that failed and t is the total number of -docstring examples attempted. - - -WHICH DOCSTRINGS ARE EXAMINED? - -+ M.__doc__. - -+ f.__doc__ for all functions f in M.__dict__.values(), except those - with private names. - -+ C.__doc__ for all classes C in M.__dict__.values(), except those with - private names. - -+ If M.__test__ exists and "is true", it must be a dict, and - each entry maps a (string) name to a function object, class object, or - string. Function and class object docstrings found from M.__test__ - are searched even if the name is private, and strings are searched - directly as if they were docstrings. In output, a key K in M.__test__ - appears with name - .__test__.K - -Any classes found are recursively searched similarly, to test docstrings in -their contained methods and nested classes. Private names reached from M's -globals are skipped, but all names reached from M.__test__ are searched. - -By default, a name is considered to be private if it begins with an -underscore (like "_my_func") but doesn't both begin and end with (at least) -two underscores (like "__init__"). You can change the default by passing -your own "isprivate" function to testmod. - -If you want to test docstrings in objects with private names too, stuff -them into an M.__test__ dict, or see ADVANCED USAGE below (e.g., pass your -own isprivate function to Tester's constructor, or call the rundoc method -of a Tester instance). - -Warning: imports can cause trouble; e.g., if you do - -from XYZ import XYZclass - -then XYZclass is a name in M.__dict__ too, and doctest has no way to know -that XYZclass wasn't *defined* in M. So it may try to execute the examples -in XYZclass's docstring, and those in turn may require a different set of -globals to work correctly. I prefer to do "import *"- friendly imports, -a la - -import XYY -_XYZclass = XYZ.XYZclass -del XYZ - -or (Python 2.0) - -from XYZ import XYZclass as _XYZclass - -and then the leading underscore stops testmod from going nuts. You may -prefer the method in the next section. - - -WHAT'S THE EXECUTION CONTEXT? - -By default, each time testmod finds a docstring to test, it uses a *copy* -of M's globals (so that running tests on a module doesn't change the -module's real globals, and so that one test in M can't leave behind crumbs -that accidentally allow another test to work). This means examples can -freely use any names defined at top-level in M. It also means that sloppy -imports (see above) can cause examples in external docstrings to use -globals inappropriate for them. - -You can force use of your own dict as the execution context by passing -"globs=your_dict" to testmod instead. Presumably this would be a copy of -M.__dict__ merged with the globals from other imported modules. - - -WHAT IF I WANT TO TEST A WHOLE PACKAGE? - -Piece o' cake, provided the modules do their testing from docstrings. -Here's the test.py I use for the world's most elaborate Rational/ -floating-base-conversion pkg (which I'll distribute some day): - -from Rational import Cvt -from Rational import Format -from Rational import machprec -from Rational import Rat -from Rational import Round -from Rational import utils - -modules = (Cvt, - Format, - machprec, - Rat, - Round, - utils) - -def _test(): - import doctest - import sys - verbose = "-v" in sys.argv - for mod in modules: - doctest.testmod(mod, verbose=verbose, report=0) - doctest.master.summarize() - -if __name__ == "__main__": - _test() - -IOW, it just runs testmod on all the pkg modules. testmod remembers the -names and outcomes (# of failures, # of tries) for each item it's seen, and -passing "report=0" prevents it from printing a summary in verbose mode. -Instead, the summary is delayed until all modules have been tested, and -then "doctest.master.summarize()" forces the summary at the end. - -So this is very nice in practice: each module can be tested individually -with almost no work beyond writing up docstring examples, and collections -of modules can be tested too as a unit with no more work than the above. - - -WHAT ABOUT EXCEPTIONS? - -No problem, as long as the only output generated by the example is the -traceback itself. For example: - - >>> a = [None] - >>> a[1] - Traceback (innermost last): - File "", line 1, in ? - IndexError: list index out of range - >>> - -Note that only the exception type and value are compared (specifically, -only the last line in the traceback). - - -ADVANCED USAGE - -doctest.testmod() captures the testing policy I find most useful most -often. You may want other policies. - -testmod() actually creates a local instance of class doctest.Tester, runs -appropriate methods of that class, and merges the results into global -Tester instance doctest.master. - -You can create your own instances of doctest.Tester, and so build your own -policies, or even run methods of doctest.master directly. See -doctest.Tester.__doc__ for details. - - -SO WHAT DOES A DOCSTRING EXAMPLE LOOK LIKE ALREADY!? - -Oh ya. It's easy! In most cases a copy-and-paste of an interactive -console session works fine -- just make sure the leading whitespace is -rigidly consistent (you can mix tabs and spaces if you're too lazy to do it -right, but doctest is not in the business of guessing what you think a tab -means). - - >>> # comments are ignored - >>> x = 12 - >>> x - 12 - >>> if x == 13: - ... print "yes" - ... else: - ... print "no" - ... print "NO" - ... print "NO!!!" - ... - no - NO - NO!!! - >>> - -Any expected output must immediately follow the final ">>>" or "..." line -containing the code, and the expected output (if any) extends to the next -">>>" or all-whitespace line. That's it. - -Bummers: - -+ Expected output cannot contain an all-whitespace line, since such a line - is taken to signal the end of expected output. - -+ Output to stdout is captured, but not output to stderr (exception - tracebacks are captured via a different means). - -+ If you continue a line via backslashing in an interactive session, or for - any other reason use a backslash, you need to double the backslash in the - docstring version. This is simply because you're in a string, and so the - backslash must be escaped for it to survive intact. Like: - ->>> if "yes" == \\ -... "y" + \\ -... "es": # in the source code you'll see the doubled backslashes -... print 'yes' -yes - -The starting column doesn't matter: - ->>> assert "Easy!" - >>> import math - >>> math.floor(1.9) - 1.0 - -and as many leading whitespace characters are stripped from the expected -output as appeared in the initial ">>>" line that triggered it. - -If you execute this very file, the examples above will be found and -executed, leading to this output in verbose mode: - -Running doctest.__doc__ -Trying: a = [None] -Expecting: nothing -ok -Trying: a[1] -Expecting: -Traceback (innermost last): - File "", line 1, in ? -IndexError: list index out of range -ok -Trying: x = 12 -Expecting: nothing -ok -Trying: x -Expecting: 12 -ok -Trying: -if x == 13: - print "yes" -else: - print "no" - print "NO" - print "NO!!!" -Expecting: -no -NO -NO!!! -ok -... and a bunch more like that, with this summary at the end: - -5 items had no tests: - doctest.Tester.__init__ - doctest.Tester.run__test__ - doctest.Tester.summarize - doctest.run_docstring_examples - doctest.testmod -12 items passed all tests: - 9 tests in doctest - 6 tests in doctest.Tester - 10 tests in doctest.Tester.merge - 7 tests in doctest.Tester.rundict - 3 tests in doctest.Tester.rundoc - 3 tests in doctest.Tester.runstring - 2 tests in doctest.__test__._TestClass - 2 tests in doctest.__test__._TestClass.__init__ - 2 tests in doctest.__test__._TestClass.get - 1 tests in doctest.__test__._TestClass.square - 2 tests in doctest.__test__.string - 7 tests in doctest.is_private -54 tests in 17 items. -54 passed and 0 failed. -Test passed. -""" - -# 0,0,1 06-Mar-1999 -# initial version posted -# 0,0,2 06-Mar-1999 -# loosened parsing: -# cater to stinkin' tabs -# don't insist on a blank after PS2 prefix -# so trailing "... " line from a compound stmt no longer -# breaks if the file gets whitespace-trimmed -# better error msgs for inconsistent leading whitespace -# 0,9,1 08-Mar-1999 -# exposed the Tester class and added client methods -# plus docstring examples of their use (eww - head-twisting!) -# fixed logic error in reporting total # of tests & failures -# added __test__ support to testmod (a pale reflection of Christian -# Tismer's vision ...) -# removed the "deep" argument; fiddle __test__ instead -# simplified endcase logic for extracting tests, and running them. -# before, if no output was expected but some was produced -# anyway via an eval'ed result, the discrepancy wasn't caught -# made TestClass private and used __test__ to get at it -# many doc updates -# speed _SpoofOut for long expected outputs -# 0,9,2 09-Mar-1999 -# throw out comments from examples, enabling use of the much simpler -# exec compile(... "single") ... -# for simulating the runtime; that barfs on comment-only lines -# used the traceback module to do a much better job of reporting -# exceptions -# run __doc__ values thru str(), "just in case" -# privateness of names now determined by an overridable "isprivate" -# function -# by default a name now considered to be private iff it begins with -# an underscore but doesn't both begin & end with two of 'em; so -# e.g. Class.__init__ etc are searched now -- as they always -# should have been -# 0,9,3 18-Mar-1999 -# added .flush stub to _SpoofOut (JPython buglet diagnosed by -# Hugh Emberson) -# repaired ridiculous docs about backslashes in examples -# minor internal changes -# changed source to Unix line-end conventions -# moved __test__ logic into new Tester.run__test__ method -# 0,9,4 27-Mar-1999 -# report item name and line # in failing examples -# 0,9,5 29-Jun-1999 -# allow straightforward exceptions in examples - thanks to Mark Hammond! -# 0,9,6 16-Jan-2001 -# fiddling for changes in Python 2.0: some of the embedded docstring -# examples no longer worked *exactly* as advertised, due to minor -# language changes, and running doctest on itself pointed that out. -# Hard to think of a better example of why this is useful . - -__version__ = 0, 9, 6 - -import types -_FunctionType = types.FunctionType -_ClassType = types.ClassType -_ModuleType = types.ModuleType -_StringType = types.StringType -del types - -import string -_string_find = string.find -_string_join = string.join -_string_split = string.split -_string_rindex = string.rindex -del string - -import re -PS1 = ">>>" -PS2 = "..." -_isPS1 = re.compile(r"(\s*)" + re.escape(PS1)).match -_isPS2 = re.compile(r"(\s*)" + re.escape(PS2)).match -_isEmpty = re.compile(r"\s*$").match -_isComment = re.compile(r"\s*#").match -del re - -__all__ = [] - -# Extract interactive examples from a string. Return a list of triples, -# (source, outcome, lineno). "source" is the source code, and ends -# with a newline iff the source spans more than one line. "outcome" is -# the expected output if any, else an empty string. When not empty, -# outcome always ends with a newline. "lineno" is the line number, -# 0-based wrt the start of the string, of the first source line. - -def _extract_examples(s): - isPS1, isPS2 = _isPS1, _isPS2 - isEmpty, isComment = _isEmpty, _isComment - examples = [] - lines = _string_split(s, "\n") - i, n = 0, len(lines) - while i < n: - line = lines[i] - i = i + 1 - m = isPS1(line) - if m is None: - continue - j = m.end(0) # beyond the prompt - if isEmpty(line, j) or isComment(line, j): - # a bare prompt or comment -- not interesting - continue - lineno = i - 1 - if line[j] != " ": - raise ValueError("line " + `lineno` + " of docstring lacks " - "blank after " + PS1 + ": " + line) - j = j + 1 - blanks = m.group(1) - nblanks = len(blanks) - # suck up this and following PS2 lines - source = [] - while 1: - source.append(line[j:]) - line = lines[i] - m = isPS2(line) - if m: - if m.group(1) != blanks: - raise ValueError("inconsistent leading whitespace " - "in line " + `i` + " of docstring: " + line) - i = i + 1 - else: - break - if len(source) == 1: - source = source[0] - else: - # get rid of useless null line from trailing empty "..." - if source[-1] == "": - del source[-1] - source = _string_join(source, "\n") + "\n" - # suck up response - if isPS1(line) or isEmpty(line): - expect = "" - else: - expect = [] - while 1: - if line[:nblanks] != blanks: - raise ValueError("inconsistent leading whitespace " - "in line " + `i` + " of docstring: " + line) - expect.append(line[nblanks:]) - i = i + 1 - line = lines[i] - if isPS1(line) or isEmpty(line): - break - expect = _string_join(expect, "\n") + "\n" - examples.append( (source, expect, lineno) ) - return examples - -# Capture stdout when running examples. - -class _SpoofOut: - def __init__(self): - self.clear() - def write(self, s): - self.buf.append(s) - def get(self): - return _string_join(self.buf, "") - def clear(self): - self.buf = [] - def flush(self): - # JPython calls flush - pass - -# Display some tag-and-msg pairs nicely, keeping the tag and its msg -# on the same line when that makes sense. - -def _tag_out(printer, *tag_msg_pairs): - for tag, msg in tag_msg_pairs: - printer(tag + ":") - msg_has_nl = msg[-1:] == "\n" - msg_has_two_nl = msg_has_nl and \ - _string_find(msg, "\n") < len(msg) - 1 - if len(tag) + len(msg) < 76 and not msg_has_two_nl: - printer(" ") - else: - printer("\n") - printer(msg) - if not msg_has_nl: - printer("\n") - -# Run list of examples, in context globs. "out" can be used to display -# stuff to "the real" stdout, and fakeout is an instance of _SpoofOut -# that captures the examples' std output. Return (#failures, #tries). - -def _run_examples_inner(out, fakeout, examples, globs, verbose, name): - import sys, traceback - OK, BOOM, FAIL = range(3) - NADA = "nothing" - stderr = _SpoofOut() - failures = 0 - for source, want, lineno in examples: - if verbose: - _tag_out(out, ("Trying", source), - ("Expecting", want or NADA)) - fakeout.clear() - try: - exec compile(source, "", "single") in globs - got = fakeout.get() - state = OK - except: - # See whether the exception was expected. - if _string_find(want, "Traceback (innermost last):\n") == 0 or\ - _string_find(want, "Traceback (most recent call last):\n") == 0: - # Only compare exception type and value - the rest of - # the traceback isn't necessary. - want = _string_split(want, '\n')[-2] + '\n' - exc_type, exc_val, exc_tb = sys.exc_info() - got = traceback.format_exception_only(exc_type, exc_val)[0] - state = OK - else: - # unexpected exception - stderr.clear() - traceback.print_exc(file=stderr) - state = BOOM - - if state == OK: - if got == want: - if verbose: - out("ok\n") - continue - state = FAIL - - assert state in (FAIL, BOOM) - failures = failures + 1 - out("*" * 65 + "\n") - _tag_out(out, ("Failure in example", source)) - out("from line #" + `lineno` + " of " + name + "\n") - if state == FAIL: - _tag_out(out, ("Expected", want or NADA), ("Got", got)) - else: - assert state == BOOM - _tag_out(out, ("Exception raised", stderr.get())) - - return failures, len(examples) - -# Run list of examples, in context globs. Return (#failures, #tries). - -def _run_examples(examples, globs, verbose, name): - import sys - saveout = sys.stdout - try: - sys.stdout = fakeout = _SpoofOut() - x = _run_examples_inner(saveout.write, fakeout, examples, - globs, verbose, name) - finally: - sys.stdout = saveout - return x - -def run_docstring_examples(f, globs, verbose=0, name="NoName"): - """f, globs, verbose=0, name="NoName" -> run examples from f.__doc__. - - Use dict globs as the globals for execution. - Return (#failures, #tries). - - If optional arg verbose is true, print stuff even if there are no - failures. - Use string name in failure msgs. - """ - - try: - doc = f.__doc__ - if not doc: - # docstring empty or None - return 0, 0 - # just in case CT invents a doc object that has to be forced - # to look like a string <0.9 wink> - doc = str(doc) - except: - return 0, 0 - - e = _extract_examples(doc) - if not e: - return 0, 0 - return _run_examples(e, globs, verbose, name) - -def is_private(prefix, base): - """prefix, base -> true iff name prefix + "." + base is "private". - - Prefix may be an empty string, and base does not contain a period. - Prefix is ignored (although functions you write conforming to this - protocol may make use of it). - Return true iff base begins with an (at least one) underscore, but - does not both begin and end with (at least) two underscores. - - >>> is_private("a.b", "my_func") - 0 - >>> is_private("____", "_my_func") - 1 - >>> is_private("someclass", "__init__") - 0 - >>> is_private("sometypo", "__init_") - 1 - >>> is_private("x.y.z", "_") - 1 - >>> is_private("_x.y.z", "__") - 0 - >>> is_private("", "") # senseless but consistent - 0 - """ - - return base[:1] == "_" and not base[:2] == "__" == base[-2:] - -class Tester: - """Class Tester -- runs docstring examples and accumulates stats. - -In normal use, function doctest.testmod() hides all this from you, -so use that if you can. Create your own instances of Tester to do -fancier things. - -Methods: - runstring(s, name) - Search string s for examples to run; use name for logging. - Return (#failures, #tries). - - rundoc(object, name=None) - Search object.__doc__ for examples to run; use name (or - object.__name__) for logging. Return (#failures, #tries). - - rundict(d, name) - Search for examples in docstrings in all of d.values(); use name - for logging. Return (#failures, #tries). - - run__test__(d, name) - Treat dict d like module.__test__. Return (#failures, #tries). - - summarize(verbose=None) - Display summary of testing results, to stdout. Return - (#failures, #tries). - - merge(other) - Merge in the test results from Tester instance "other". - ->>> from doctest import Tester ->>> t = Tester(globs={'x': 42}, verbose=0) ->>> t.runstring(r''' -... >>> x = x * 2 -... >>> print x -... 42 -... ''', 'XYZ') -***************************************************************** -Failure in example: print x -from line #2 of XYZ -Expected: 42 -Got: 84 -(1, 2) ->>> t.runstring(">>> x = x * 2\\n>>> print x\\n84\\n", 'example2') -(0, 2) ->>> t.summarize() -1 items had failures: - 1 of 2 in XYZ -***Test Failed*** 1 failures. -(1, 4) ->>> t.summarize(verbose=1) -1 items passed all tests: - 2 tests in example2 -1 items had failures: - 1 of 2 in XYZ -4 tests in 2 items. -3 passed and 1 failed. -***Test Failed*** 1 failures. -(1, 4) ->>> -""" - - def __init__(self, mod=None, globs=None, verbose=None, - isprivate=None): - """mod=None, globs=None, verbose=None, isprivate=None - -See doctest.__doc__ for an overview. - -Optional keyword arg "mod" is a module, whose globals are used for -executing examples. If not specified, globs must be specified. - -Optional keyword arg "globs" gives a dict to be used as the globals -when executing examples; if not specified, use the globals from -module mod. - -In either case, a copy of the dict is used for each docstring -examined. - -Optional keyword arg "verbose" prints lots of stuff if true, only -failures if false; by default, it's true iff "-v" is in sys.argv. - -Optional keyword arg "isprivate" specifies a function used to determine -whether a name is private. The default function is doctest.is_private; -see its docs for details. -""" - - if mod is None and globs is None: - raise TypeError("Tester.__init__: must specify mod or globs") - if mod is not None and type(mod) is not _ModuleType: - raise TypeError("Tester.__init__: mod must be a module; " + - `mod`) - if globs is None: - globs = mod.__dict__ - self.globs = globs - - if verbose is None: - import sys - verbose = "-v" in sys.argv - self.verbose = verbose - - if isprivate is None: - isprivate = is_private - self.isprivate = isprivate - - self.name2ft = {} # map name to (#failures, #trials) pair - - def runstring(self, s, name): - """ - s, name -> search string s for examples to run, logging as name. - - Use string name as the key for logging the outcome. - Return (#failures, #examples). - - >>> t = Tester(globs={}, verbose=1) - >>> test = r''' - ... # just an example - ... >>> x = 1 + 2 - ... >>> x - ... 3 - ... ''' - >>> t.runstring(test, "Example") - Running string Example - Trying: x = 1 + 2 - Expecting: nothing - ok - Trying: x - Expecting: 3 - ok - 0 of 2 examples failed in string Example - (0, 2) - """ - - if self.verbose: - print "Running string", name - f = t = 0 - e = _extract_examples(s) - if e: - f, t = _run_examples(e, self.globs.copy(), self.verbose, name) - if self.verbose: - print f, "of", t, "examples failed in string", name - self.__record_outcome(name, f, t) - return f, t - - def rundoc(self, object, name=None): - """ - object, name=None -> search object.__doc__ for examples to run. - - Use optional string name as the key for logging the outcome; - by default use object.__name__. - Return (#failures, #examples). - If object is a class object, search recursively for method - docstrings too. - object.__doc__ is examined regardless of name, but if object is - a class, whether private names reached from object are searched - depends on the constructor's "isprivate" argument. - - >>> t = Tester(globs={}, verbose=0) - >>> def _f(): - ... '''Trivial docstring example. - ... >>> assert 2 == 2 - ... ''' - ... return 32 - ... - >>> t.rundoc(_f) # expect 0 failures in 1 example - (0, 1) - """ - - if name is None: - try: - name = object.__name__ - except AttributeError: - raise ValueError("Tester.rundoc: name must be given " - "when object.__name__ doesn't exist; " + `object`) - if self.verbose: - print "Running", name + ".__doc__" - f, t = run_docstring_examples(object, self.globs.copy(), - self.verbose, name) - if self.verbose: - print f, "of", t, "examples failed in", name + ".__doc__" - self.__record_outcome(name, f, t) - if type(object) is _ClassType: - f2, t2 = self.rundict(object.__dict__, name) - f = f + f2 - t = t + t2 - return f, t - - def rundict(self, d, name): - """ - d. name -> search for docstring examples in all of d.values(). - - For k, v in d.items() such that v is a function or class, - do self.rundoc(v, name + "." + k). Whether this includes - objects with private names depends on the constructor's - "isprivate" argument. - Return aggregate (#failures, #examples). - - >>> def _f(): - ... '''>>> assert 1 == 1 - ... ''' - >>> def g(): - ... '''>>> assert 2 != 1 - ... ''' - >>> d = {"_f": _f, "g": g} - >>> t = Tester(globs={}, verbose=0) - >>> t.rundict(d, "rundict_test") # _f is skipped - (0, 1) - >>> t = Tester(globs={}, verbose=0, isprivate=lambda x,y: 0) - >>> t.rundict(d, "rundict_test_pvt") # both are searched - (0, 2) - """ - - if not hasattr(d, "items"): - raise TypeError("Tester.rundict: d must support .items(); " + - `d`) - f = t = 0 - for thisname, value in d.items(): - if type(value) in (_FunctionType, _ClassType): - f2, t2 = self.__runone(value, name + "." + thisname) - f = f + f2 - t = t + t2 - return f, t - - def run__test__(self, d, name): - """d, name -> Treat dict d like module.__test__. - - Return (#failures, #tries). - See testmod.__doc__ for details. - """ - - failures = tries = 0 - prefix = name + "." - savepvt = self.isprivate - try: - self.isprivate = lambda *args: 0 - for k, v in d.items(): - thisname = prefix + k - if type(v) is _StringType: - f, t = self.runstring(v, thisname) - elif type(v) in (_FunctionType, _ClassType): - f, t = self.rundoc(v, thisname) - else: - raise TypeError("Tester.run__test__: values in " - "dict must be strings, functions " - "or classes; " + `v`) - failures = failures + f - tries = tries + t - finally: - self.isprivate = savepvt - return failures, tries - - def summarize(self, verbose=None): - """ - verbose=None -> summarize results, return (#failures, #tests). - - Print summary of test results to stdout. - Optional arg 'verbose' controls how wordy this is. By - default, use the verbose setting established by the - constructor. - """ - - if verbose is None: - verbose = self.verbose - notests = [] - passed = [] - failed = [] - totalt = totalf = 0 - for x in self.name2ft.items(): - name, (f, t) = x - assert f <= t - totalt = totalt + t - totalf = totalf + f - if t == 0: - notests.append(name) - elif f == 0: - passed.append( (name, t) ) - else: - failed.append(x) - if verbose: - if notests: - print len(notests), "items had no tests:" - notests.sort() - for thing in notests: - print " ", thing - if passed: - print len(passed), "items passed all tests:" - passed.sort() - for thing, count in passed: - print " %3d tests in %s" % (count, thing) - if failed: - print len(failed), "items had failures:" - failed.sort() - for thing, (f, t) in failed: - print " %3d of %3d in %s" % (f, t, thing) - if verbose: - print totalt, "tests in", len(self.name2ft), "items." - print totalt - totalf, "passed and", totalf, "failed." - if totalf: - print "***Test Failed***", totalf, "failures." - elif verbose: - print "Test passed." - return totalf, totalt - - def merge(self, other): - """ - other -> merge in test results from the other Tester instance. - - If self and other both have a test result for something - with the same name, the (#failures, #tests) results are - summed, and a warning is printed to stdout. - - >>> from doctest import Tester - >>> t1 = Tester(globs={}, verbose=0) - >>> t1.runstring(''' - ... >>> x = 12 - ... >>> print x - ... 12 - ... ''', "t1example") - (0, 2) - >>> - >>> t2 = Tester(globs={}, verbose=0) - >>> t2.runstring(''' - ... >>> x = 13 - ... >>> print x - ... 13 - ... ''', "t2example") - (0, 2) - >>> common = ">>> assert 1 + 2 == 3\\n" - >>> t1.runstring(common, "common") - (0, 1) - >>> t2.runstring(common, "common") - (0, 1) - >>> t1.merge(t2) - *** Tester.merge: 'common' in both testers; summing outcomes. - >>> t1.summarize(1) - 3 items passed all tests: - 2 tests in common - 2 tests in t1example - 2 tests in t2example - 6 tests in 3 items. - 6 passed and 0 failed. - Test passed. - (0, 6) - >>> - """ - - d = self.name2ft - for name, (f, t) in other.name2ft.items(): - if d.has_key(name): - print "*** Tester.merge: '" + name + "' in both" \ - " testers; summing outcomes." - f2, t2 = d[name] - f = f + f2 - t = t + t2 - d[name] = f, t - - def __record_outcome(self, name, f, t): - if self.name2ft.has_key(name): - print "*** Warning: '" + name + "' was tested before;", \ - "summing outcomes." - f2, t2 = self.name2ft[name] - f = f + f2 - t = t + t2 - self.name2ft[name] = f, t - - def __runone(self, target, name): - if "." in name: - i = _string_rindex(name, ".") - prefix, base = name[:i], name[i+1:] - else: - prefix, base = "", base - if self.isprivate(prefix, base): - return 0, 0 - return self.rundoc(target, name) - -master = None - -def testmod(m, name=None, globs=None, verbose=None, isprivate=None, - report=1): - """m, name=None, globs=None, verbose=None, isprivate=None, report=1 - - Test examples in docstrings in functions and classes reachable from - module m, starting with m.__doc__. Private names are skipped. - - Also test examples reachable from dict m.__test__ if it exists and is - not None. m.__dict__ maps names to functions, classes and strings; - function and class docstrings are tested even if the name is private; - strings are tested directly, as if they were docstrings. - - Return (#failures, #tests). - - See doctest.__doc__ for an overview. - - Optional keyword arg "name" gives the name of the module; by default - use m.__name__. - - Optional keyword arg "globs" gives a dict to be used as the globals - when executing examples; by default, use m.__dict__. A copy of this - dict is actually used for each docstring, so that each docstring's - examples start with a clean slate. - - Optional keyword arg "verbose" prints lots of stuff if true, prints - only failures if false; by default, it's true iff "-v" is in sys.argv. - - Optional keyword arg "isprivate" specifies a function used to - determine whether a name is private. The default function is - doctest.is_private; see its docs for details. - - Optional keyword arg "report" prints a summary at the end when true, - else prints nothing at the end. In verbose mode, the summary is - detailed, else very brief (in fact, empty if all tests passed). - - Advanced tomfoolery: testmod runs methods of a local instance of - class doctest.Tester, then merges the results into (or creates) - global Tester instance doctest.master. Methods of doctest.master - can be called directly too, if you want to do something unusual. - Passing report=0 to testmod is especially useful then, to delay - displaying a summary. Invoke doctest.master.summarize(verbose) - when you're done fiddling. - """ - - global master - - if type(m) is not _ModuleType: - raise TypeError("testmod: module required; " + `m`) - if name is None: - name = m.__name__ - tester = Tester(m, globs=globs, verbose=verbose, isprivate=isprivate) - failures, tries = tester.rundoc(m, name) - f, t = tester.rundict(m.__dict__, name) - failures = failures + f - tries = tries + t - if hasattr(m, "__test__"): - testdict = m.__test__ - if testdict: - if not hasattr(testdict, "items"): - raise TypeError("testmod: module.__test__ must support " - ".items(); " + `testdict`) - f, t = tester.run__test__(testdict, name + ".__test__") - failures = failures + f - tries = tries + t - if report: - tester.summarize() - if master is None: - master = tester - else: - master.merge(tester) - return failures, tries - -class _TestClass: - """ - A pointless class, for sanity-checking of docstring testing. - - Methods: - square() - get() - - >>> _TestClass(13).get() + _TestClass(-12).get() - 1 - >>> hex(_TestClass(13).square().get()) - '0xa9' - """ - - def __init__(self, val): - """val -> _TestClass object with associated value val. - - >>> t = _TestClass(123) - >>> print t.get() - 123 - """ - - self.val = val - - def square(self): - """square() -> square TestClass's associated value - - >>> _TestClass(13).square().get() - 169 - """ - - self.val = self.val ** 2 - return self - - def get(self): - """get() -> return TestClass's associated value. - - >>> x = _TestClass(-42) - >>> print x.get() - -42 - """ - - return self.val - -__test__ = {"_TestClass": _TestClass, - "string": r""" - Example of a string object, searched as-is. - >>> x = 1; y = 2 - >>> x + y, x * y - (3, 2) - """ - } - -def _test(): - import doctest - return doctest.testmod(doctest) - -if __name__ == "__main__": - _test() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c deleted file mode 100755 index 2ae13ad7281..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/encode.c +++ /dev/null @@ -1,540 +0,0 @@ -/* - * The Python Imaging Library. - * - * standard encoder interfaces for the Imaging library - * - * History: - * 1996-04-19 fl Based on decoders.c - * 1996-05-12 fl Compile cleanly as C++ - * 1996-12-30 fl Plugged potential memory leak for tiled images - * 1997-01-03 fl Added GIF encoder - * 1997-01-05 fl Plugged encoder buffer leaks - * 1997-01-11 fl Added encode_to_file method - * 1998-03-09 fl Added mode/rawmode argument to encoders - * 1998-07-09 fl Added interlace argument to GIF encoder - * 1999-02-07 fl Added PCX encoder - * - * Copyright (c) 1997-2001 by Secret Labs AB - * Copyright (c) 1996-1997 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - -/* FIXME: make these pluggable! */ - -#include "Python.h" - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#include "Imaging.h" -#include "Gif.h" - -#ifdef HAVE_UNISTD_H -#include /* write */ -#endif - -/* -------------------------------------------------------------------- */ -/* Common */ -/* -------------------------------------------------------------------- */ - -typedef struct { - PyObject_HEAD - int (*encode)(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); - struct ImagingCodecStateInstance state; - Imaging im; - PyObject* lock; -} ImagingEncoderObject; - -staticforward PyTypeObject ImagingEncoderType; - -static ImagingEncoderObject* -PyImaging_EncoderNew(int contextsize) -{ - ImagingEncoderObject *encoder; - void *context; - - ImagingEncoderType.ob_type = &PyType_Type; - - encoder = PyObject_New(ImagingEncoderObject, &ImagingEncoderType); - if (encoder == NULL) - return NULL; - - /* Clear the encoder state */ - memset(&encoder->state, 0, sizeof(encoder->state)); - - /* Allocate encoder context */ - if (contextsize > 0) { - context = (void*) calloc(1, contextsize); - if (!context) { - Py_DECREF(encoder); - (void) PyErr_NoMemory(); - return NULL; - } - } else - context = 0; - - /* Initialize encoder context */ - encoder->state.context = context; - - /* Target image */ - encoder->lock = NULL; - encoder->im = NULL; - - return encoder; -} - -static void -_dealloc(ImagingEncoderObject* encoder) -{ - free(encoder->state.buffer); - free(encoder->state.context); - Py_XDECREF(encoder->lock); - PyObject_Del(encoder); -} - -static PyObject* -_encode(ImagingEncoderObject* encoder, PyObject* args) -{ - PyObject* buf; - PyObject* result; - int status; - - /* Encode to a Python string (allocated by this method) */ - - int bufsize = 16384; - - if (!PyArg_ParseTuple(args, "|i", &bufsize)) - return NULL; - - buf = PyString_FromStringAndSize(NULL, bufsize); - if (!buf) - return NULL; - - status = encoder->encode(encoder->im, &encoder->state, - (UINT8*) PyString_AsString(buf), bufsize); - - /* adjust string length to avoid slicing in encoder */ - if (_PyString_Resize(&buf, (status > 0) ? status : 0) < 0) - return NULL; - - result = Py_BuildValue("iiO", status, encoder->state.errcode, buf); - - Py_DECREF(buf); /* must release buffer!!! */ - - return result; -} - -static PyObject* -_encode_to_file(ImagingEncoderObject* encoder, PyObject* args) -{ - UINT8* buf; - int status; - ImagingSectionCookie cookie; - - /* Encode to a file handle */ - - int fh; - int bufsize = 16384; - - if (!PyArg_ParseTuple(args, "i|i", &fh, &bufsize)) - return NULL; - - /* Allocate an encoder buffer */ - buf = (UINT8*) malloc(bufsize); - if (!buf) - return PyErr_NoMemory(); - - ImagingSectionEnter(&cookie); - - do { - - /* This replaces the inner loop in the ImageFile _save - function. */ - - status = encoder->encode(encoder->im, &encoder->state, buf, bufsize); - - if (status > 0) - if (write(fh, buf, status) < 0) { - ImagingSectionLeave(&cookie); - free(buf); - return PyErr_SetFromErrno(PyExc_IOError); - } - - } while (encoder->state.errcode == 0); - - ImagingSectionLeave(&cookie); - - free(buf); - - return Py_BuildValue("i", encoder->state.errcode); -} - -extern Imaging PyImaging_AsImaging(PyObject *op); - -static PyObject* -_setimage(ImagingEncoderObject* encoder, PyObject* args) -{ - PyObject* op; - Imaging im; - ImagingCodecState state; - int x0, y0, x1, y1; - - /* Define where image data should be stored */ - - x0 = y0 = x1 = y1 = 0; - - /* FIXME: should publish the ImagingType descriptor */ - if (!PyArg_ParseTuple(args, "O|(iiii)", &op, &x0, &y0, &x1, &y1)) - return NULL; - im = PyImaging_AsImaging(op); - if (!im) - return NULL; - - encoder->im = im; - - state = &encoder->state; - - if (x0 == 0 && x1 == 0) { - state->xsize = im->xsize; - state->ysize = im->ysize; - } else { - state->xoff = x0; - state->yoff = y0; - state->xsize = x1 - x0; - state->ysize = y1 - y0; - } - - if (state->xsize <= 0 || - state->xsize + state->xoff > im->xsize || - state->ysize <= 0 || - state->ysize + state->yoff > im->ysize) { - PyErr_SetString(PyExc_SystemError, "tile cannot extend outside image"); - return NULL; - } - - /* Allocate memory buffer (if bits field is set) */ - if (state->bits > 0) { - state->bytes = (state->bits * state->xsize+7)/8; - state->buffer = (UINT8*) malloc(state->bytes); - if (!state->buffer) - return PyErr_NoMemory(); - } - - /* Keep a reference to the image object, to make sure it doesn't - go away before we do */ - Py_INCREF(op); - Py_XDECREF(encoder->lock); - encoder->lock = op; - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef methods[] = { - {"encode", (PyCFunction)_encode, 1}, - {"encode_to_file", (PyCFunction)_encode_to_file, 1}, - {"setimage", (PyCFunction)_setimage, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -_getattr(ImagingEncoderObject* self, char* name) -{ - return Py_FindMethod(methods, (PyObject*) self, name); -} - -statichere PyTypeObject ImagingEncoderType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingEncoder", /*tp_name*/ - sizeof(ImagingEncoderObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_hash*/ -}; - -/* -------------------------------------------------------------------- */ - -int -get_packer(ImagingEncoderObject* encoder, const char* mode, - const char* rawmode) -{ - int bits; - ImagingShuffler pack; - - pack = ImagingFindPacker(mode, rawmode, &bits); - if (!pack) { - Py_DECREF(encoder); - PyErr_SetString(PyExc_SystemError, "unknown raw mode"); - return -1; - } - - encoder->state.shuffle = pack; - encoder->state.bits = bits; - - return 0; -} - - -/* -------------------------------------------------------------------- */ -/* EPS */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_EpsEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - encoder = PyImaging_EncoderNew(0); - if (encoder == NULL) - return NULL; - - encoder->encode = ImagingEpsEncode; - - return (PyObject*) encoder; -} - - -/* -------------------------------------------------------------------- */ -/* GIF */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_GifEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - char *mode; - char *rawmode; - int bits = 8; - int interlace = 0; - if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &bits, &interlace)) - return NULL; - - encoder = PyImaging_EncoderNew(sizeof(GIFENCODERSTATE)); - if (encoder == NULL) - return NULL; - - if (get_packer(encoder, mode, rawmode) < 0) - return NULL; - - encoder->encode = ImagingGifEncode; - - ((GIFENCODERSTATE*)encoder->state.context)->bits = bits; - ((GIFENCODERSTATE*)encoder->state.context)->interlace = interlace; - - return (PyObject*) encoder; -} - - -/* -------------------------------------------------------------------- */ -/* PCX */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_PcxEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - char *mode; - char *rawmode; - int bits = 8; - if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &bits)) - return NULL; - - encoder = PyImaging_EncoderNew(0); - if (encoder == NULL) - return NULL; - - if (get_packer(encoder, mode, rawmode) < 0) - return NULL; - - encoder->encode = ImagingPcxEncode; - - return (PyObject*) encoder; -} - - -/* -------------------------------------------------------------------- */ -/* RAW */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_RawEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - char *mode; - char *rawmode; - int stride = 0; - int ystep = 1; - - if (!PyArg_ParseTuple(args, "ss|ii", &mode, &rawmode, &stride, &ystep)) - return NULL; - - encoder = PyImaging_EncoderNew(0); - if (encoder == NULL) - return NULL; - - if (get_packer(encoder, mode, rawmode) < 0) - return NULL; - - encoder->encode = ImagingRawEncode; - - encoder->state.ystep = ystep; - encoder->state.count = stride; - - return (PyObject*) encoder; -} - - -/* -------------------------------------------------------------------- */ -/* XBM */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyImaging_XbmEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - encoder = PyImaging_EncoderNew(0); - if (encoder == NULL) - return NULL; - - if (get_packer(encoder, "1", "1;R") < 0) - return NULL; - - encoder->encode = ImagingXbmEncode; - - return (PyObject*) encoder; -} - - -/* -------------------------------------------------------------------- */ -/* ZIP */ -/* -------------------------------------------------------------------- */ - -#ifdef HAVE_LIBZ - -#include "Zip.h" - -PyObject* -PyImaging_ZipEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - char* mode; - char* rawmode; - int optimize = 0; - char* dictionary = NULL; - int dictionary_size = 0; - if (!PyArg_ParseTuple(args, "ss|is#", &mode, &rawmode, &optimize, - &dictionary, &dictionary_size)) - return NULL; - - encoder = PyImaging_EncoderNew(sizeof(ZIPSTATE)); - if (encoder == NULL) - return NULL; - - if (get_packer(encoder, mode, rawmode) < 0) - return NULL; - - encoder->encode = ImagingZipEncode; - - if (rawmode[0] == 'P') - /* disable filtering */ - ((ZIPSTATE*)encoder->state.context)->mode = ZIP_PNG_PALETTE; - - ((ZIPSTATE*)encoder->state.context)->optimize = optimize; - ((ZIPSTATE*)encoder->state.context)->dictionary = dictionary; - ((ZIPSTATE*)encoder->state.context)->dictionary_size = dictionary_size; - - return (PyObject*) encoder; -} -#endif - - -/* -------------------------------------------------------------------- */ -/* JPEG */ -/* -------------------------------------------------------------------- */ - -#ifdef HAVE_LIBJPEG - -/* We better define this encoder last in this file, so the following - undef's won't mess things up for the Imaging library proper. */ - -#undef HAVE_PROTOTYPES -#undef HAVE_STDDEF_H -#undef HAVE_STDLIB_H -#undef UINT8 -#undef UINT16 -#undef UINT32 -#undef INT8 -#undef INT16 -#undef INT32 - -#include "Jpeg.h" - -PyObject* -PyImaging_JpegEncoderNew(PyObject* self, PyObject* args) -{ - ImagingEncoderObject* encoder; - - char *mode; - char *rawmode; - int quality = 0; - int progressive = 0; - int smooth = 0; - int optimize = 0; - int streamtype = 0; /* 0=interchange, 1=tables only, 2=image only */ - int xdpi = 0, ydpi = 0; - int subsampling = -1; /* -1=default, 0=none, 1=medium, 2=high */ - char* extra = NULL; int extra_size; - if (!PyArg_ParseTuple(args, "ss|iiiiiiiis#", &mode, &rawmode, &quality, - &progressive, &smooth, &optimize, &streamtype, - &xdpi, &ydpi, &subsampling, &extra, &extra_size)) - return NULL; - - encoder = PyImaging_EncoderNew(sizeof(JPEGENCODERSTATE)); - if (encoder == NULL) - return NULL; - - if (get_packer(encoder, mode, rawmode) < 0) - return NULL; - - if (extra && extra_size > 0) { - char* p = malloc(extra_size); - if (!p) - return PyErr_NoMemory(); - memcpy(p, extra, extra_size); - extra = p; - } else - extra = NULL; - - encoder->encode = ImagingJpegEncode; - - ((JPEGENCODERSTATE*)encoder->state.context)->quality = quality; - ((JPEGENCODERSTATE*)encoder->state.context)->subsampling = subsampling; - ((JPEGENCODERSTATE*)encoder->state.context)->progressive = progressive; - ((JPEGENCODERSTATE*)encoder->state.context)->smooth = smooth; - ((JPEGENCODERSTATE*)encoder->state.context)->optimize = optimize; - ((JPEGENCODERSTATE*)encoder->state.context)->streamtype = streamtype; - ((JPEGENCODERSTATE*)encoder->state.context)->xdpi = xdpi; - ((JPEGENCODERSTATE*)encoder->state.context)->ydpi = ydpi; - ((JPEGENCODERSTATE*)encoder->state.context)->extra = extra; - ((JPEGENCODERSTATE*)encoder->state.context)->extra_size = extra_size; - - return (PyObject*) encoder; -} - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c deleted file mode 100755 index 5ebc9b6f36d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Access.c +++ /dev/null @@ -1,255 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * imaging access objects - * - * Copyright (c) Fredrik Lundh 2009. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -/* use Tests/make_hash.py to calculate these values */ -#define ACCESS_TABLE_SIZE 21 -#define ACCESS_TABLE_HASH 30197 - -static struct ImagingAccessInstance access_table[ACCESS_TABLE_SIZE]; - -static inline UINT32 -hash(const char* mode) -{ - UINT32 i = ACCESS_TABLE_HASH; - while (*mode) - i = ((i<<5) + i) ^ (UINT8) *mode++; - return i % ACCESS_TABLE_SIZE; -} - -static ImagingAccess -add_item(const char* mode) -{ - UINT32 i = hash(mode); - /* printf("hash %s => %d\n", mode, i); */ - if (access_table[i].mode) { - fprintf(stderr, "AccessInit: hash collision: %d for both %s and %s\n", - i, mode, access_table[i].mode); - exit(1); - } - access_table[i].mode = mode; - return &access_table[i]; -} - -/* fetch pointer to pixel line */ - -static void* -line_8(Imaging im, int x, int y) -{ - return &im->image8[y][x]; -} - -static void* -line_16(Imaging im, int x, int y) -{ - return &im->image8[y][x+x]; -} - -static void* -line_32(Imaging im, int x, int y) -{ - return &im->image32[y][x]; -} - -/* fetch individual pixel */ - -static void -get_pixel(Imaging im, int x, int y, void* color) -{ - char* out = color; - - /* generic pixel access*/ - - if (im->image8) { - out[0] = im->image8[y][x]; - } else { - UINT8* p = (UINT8*) &im->image32[y][x]; - if (im->type == IMAGING_TYPE_UINT8 && im->bands == 2) { - out[0] = p[0]; - out[1] = p[3]; - return; - } - memcpy(out, p, im->pixelsize); - } -} - -static void -get_pixel_8(Imaging im, int x, int y, void* color) -{ - char* out = color; - out[0] = im->image8[y][x]; -} - -static void -get_pixel_16L(Imaging im, int x, int y, void* color) -{ - UINT8* in = (UINT8*) &im->image[y][x+x]; - INT16* out = color; -#ifdef WORDS_BIGENDIAN - out[0] = in[0] + (in[1]<<8); -#else - out[0] = *(INT16*) in; -#endif -} - -static void -get_pixel_16B(Imaging im, int x, int y, void* color) -{ - UINT8* in = (UINT8*) &im->image[y][x+x]; - INT16* out = color; -#ifdef WORDS_BIGENDIAN - out[0] = *(INT16*) in; -#else - out[0] = in[1] + (in[0]<<8); -#endif -} - -static void -get_pixel_32(Imaging im, int x, int y, void* color) -{ - INT32* out = color; - out[0] = im->image32[y][x]; -} - -static void -get_pixel_32L(Imaging im, int x, int y, void* color) -{ - UINT8* in = (UINT8*) &im->image[y][x*4]; - INT32* out = color; -#ifdef WORDS_BIGENDIAN - out[0] = in[0] + (in[1]<<8) + (in[2]<<16) + (in[3]<<24); -#else - out[0] = *(INT32*) in; -#endif -} - -static void -get_pixel_32B(Imaging im, int x, int y, void* color) -{ - UINT8* in = (UINT8*) &im->image[y][x*4]; - INT32* out = color; -#ifdef WORDS_BIGENDIAN - out[0] = *(INT32*) in; -#else - out[0] = in[3] + (in[2]<<8) + (in[1]<<16) + (in[0]<<24); -#endif -} - -/* store individual pixel */ - -static void -put_pixel(Imaging im, int x, int y, const void* color) -{ - if (im->image8) - im->image8[y][x] = *((UINT8*) color); - else - im->image32[y][x] = *((INT32*) color); -} - -static void -put_pixel_8(Imaging im, int x, int y, const void* color) -{ - im->image8[y][x] = *((UINT8*) color); -} - -static void -put_pixel_16L(Imaging im, int x, int y, const void* color) -{ - const char* in = color; - UINT8* out = (UINT8*) &im->image8[y][x+x]; - out[0] = in[0]; - out[1] = in[1]; -} - -static void -put_pixel_16B(Imaging im, int x, int y, const void* color) -{ - const char* in = color; - UINT8* out = (UINT8*) &im->image8[y][x+x]; - out[0] = in[1]; - out[1] = in[0]; -} - -static void -put_pixel_32L(Imaging im, int x, int y, const void* color) -{ - const char* in = color; - UINT8* out = (UINT8*) &im->image8[y][x*4]; - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = in[3]; -} - -static void -put_pixel_32B(Imaging im, int x, int y, const void* color) -{ - const char* in = color; - UINT8* out = (UINT8*) &im->image8[y][x*4]; - out[0] = in[3]; - out[1] = in[2]; - out[2] = in[1]; - out[3] = in[0]; -} - -static void -put_pixel_32(Imaging im, int x, int y, const void* color) -{ - im->image32[y][x] = *((INT32*) color); -} - -void -ImagingAccessInit() -{ -#define ADD(mode_, line_, get_pixel_, put_pixel_) \ - { ImagingAccess access = add_item(mode_); \ - access->line = line_; \ - access->get_pixel = get_pixel_; \ - access->put_pixel = put_pixel_; \ - } - - /* populate access table */ - ADD("1", line_8, get_pixel_8, put_pixel_8); - ADD("L", line_8, get_pixel_8, put_pixel_8); - ADD("LA", line_32, get_pixel, put_pixel); - ADD("I", line_32, get_pixel_32, put_pixel_32); - ADD("I;16", line_16, get_pixel_16L, put_pixel_16L); - ADD("I;16L", line_16, get_pixel_16L, put_pixel_16L); - ADD("I;16B", line_16, get_pixel_16B, put_pixel_16B); - ADD("I;32L", line_32, get_pixel_32L, put_pixel_32L); - ADD("I;32B", line_32, get_pixel_32B, put_pixel_32B); - ADD("F", line_32, get_pixel_32, put_pixel_32); - ADD("P", line_8, get_pixel_8, put_pixel_8); - ADD("PA", line_32, get_pixel, put_pixel); - ADD("RGB", line_32, get_pixel_32, put_pixel_32); - ADD("RGBA", line_32, get_pixel_32, put_pixel_32); - ADD("RGBa", line_32, get_pixel_32, put_pixel_32); - ADD("RGBX", line_32, get_pixel_32, put_pixel_32); - ADD("CMYK", line_32, get_pixel_32, put_pixel_32); - ADD("YCbCr", line_32, get_pixel_32, put_pixel_32); -} - -ImagingAccess -ImagingAccessNew(Imaging im) -{ - ImagingAccess access = &access_table[hash(im->mode)]; - if (im->mode[0] != access->mode[0] || strcmp(im->mode, access->mode) != 0) - return NULL; - return access; -} - -void -_ImagingAccessDelete(Imaging im, ImagingAccess access) -{ - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c deleted file mode 100755 index 53dfa352251..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Antialias.c +++ /dev/null @@ -1,307 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * pilopen antialiasing support - * - * history: - * 2002-03-09 fl Created (for PIL 1.1.3) - * 2002-03-10 fl Added support for mode "F" - * - * Copyright (c) 1997-2002 by Secret Labs AB - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -#include - -/* resampling filters (from antialias.py) */ - -struct filter { - float (*filter)(float x); - float support; -}; - -static inline float sinc_filter(float x) -{ - if (x == 0.0) - return 1.0; - x = x * M_PI; - return sin(x) / x; -} - -static inline float antialias_filter(float x) -{ - /* lanczos (truncated sinc) */ - if (-3.0 <= x && x < 3.0) - return sinc_filter(x) * sinc_filter(x/3); - return 0.0; -} - -static struct filter ANTIALIAS = { antialias_filter, 3.0 }; - -static inline float nearest_filter(float x) -{ - if (-0.5 <= x && x < 0.5) - return 1.0; - return 0.0; -} - -static struct filter NEAREST = { nearest_filter, 0.5 }; - -static inline float bilinear_filter(float x) -{ - if (x < 0.0) - x = -x; - if (x < 1.0) - return 1.0-x; - return 0.0; -} - -static struct filter BILINEAR = { bilinear_filter, 1.0 }; - -static inline float bicubic_filter(float x) -{ - /* FIXME: double-check this algorithm */ - /* FIXME: for best results, "a" should be -0.5 to -1.0, but we'll - set it to zero for now, to match the 1.1 magnifying filter */ -#define a 0.0 - if (x < 0.0) - x = -x; - if (x < 1.0) - return (((a + 2.0) * x) - (a + 3.0)) * x*x + 1; - if (x < 2.0) - return (((a * x) - 5*a) * x + 8) * x - 4*a; - return 0.0; -#undef a -} - -static struct filter BICUBIC = { bicubic_filter, 2.0 }; - -Imaging -ImagingStretch(Imaging imOut, Imaging imIn, int filter) -{ - /* FIXME: this is a quick and straightforward translation from a - python prototype. might need some further C-ification... */ - - ImagingSectionCookie cookie; - struct filter *filterp; - float support, scale, filterscale; - float center, ww, ss, ymin, ymax, xmin, xmax; - int xx, yy, x, y, b; - float *k; - - /* check modes */ - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - - /* check filter */ - switch (filter) { - case IMAGING_TRANSFORM_NEAREST: - filterp = &NEAREST; - break; - case IMAGING_TRANSFORM_ANTIALIAS: - filterp = &ANTIALIAS; - break; - case IMAGING_TRANSFORM_BILINEAR: - filterp = &BILINEAR; - break; - case IMAGING_TRANSFORM_BICUBIC: - filterp = &BICUBIC; - break; - default: - return (Imaging) ImagingError_ValueError( - "unsupported resampling filter" - ); - } - - if (imIn->ysize == imOut->ysize) { - /* prepare for horizontal stretch */ - filterscale = scale = (float) imIn->xsize / imOut->xsize; - } else if (imIn->xsize == imOut->xsize) { - /* prepare for vertical stretch */ - filterscale = scale = (float) imIn->ysize / imOut->ysize; - } else - return (Imaging) ImagingError_Mismatch(); - - /* determine support size (length of resampling filter) */ - support = filterp->support; - - if (filterscale < 1.0) { - filterscale = 1.0; - support = 0.5; - } - - support = support * filterscale; - - /* coefficient buffer (with rounding safety margin) */ - k = malloc(((int) support * 2 + 10) * sizeof(float)); - if (!k) - return (Imaging) ImagingError_MemoryError(); - - ImagingSectionEnter(&cookie); - if (imIn->xsize == imOut->xsize) { - /* vertical stretch */ - for (yy = 0; yy < imOut->ysize; yy++) { - center = (yy + 0.5) * scale; - ww = 0.0; - ss = 1.0 / filterscale; - /* calculate filter weights */ - ymin = floor(center - support); - if (ymin < 0.0) - ymin = 0.0; - ymax = ceil(center + support); - if (ymax > (float) imIn->ysize) - ymax = (float) imIn->ysize; - for (y = (int) ymin; y < (int) ymax; y++) { - float w = filterp->filter((y - center + 0.5) * ss) * ss; - k[y - (int) ymin] = w; - ww = ww + w; - } - if (ww == 0.0) - ww = 1.0; - else - ww = 1.0 / ww; - if (imIn->image8) { - /* 8-bit grayscale */ - for (xx = 0; xx < imOut->xsize; xx++) { - ss = 0.0; - for (y = (int) ymin; y < (int) ymax; y++) - ss = ss + imIn->image8[y][xx] * k[y - (int) ymin]; - ss = ss * ww + 0.5; - if (ss < 0.5) - imOut->image8[yy][xx] = 0; - else if (ss >= 255.0) - imOut->image8[yy][xx] = 255; - else - imOut->image8[yy][xx] = (UINT8) ss; - } - } else - switch(imIn->type) { - case IMAGING_TYPE_UINT8: - /* n-bit grayscale */ - for (xx = 0; xx < imOut->xsize*4; xx++) { - /* FIXME: skip over unused pixels */ - ss = 0.0; - for (y = (int) ymin; y < (int) ymax; y++) - ss = ss + (UINT8) imIn->image[y][xx] * k[y-(int) ymin]; - ss = ss * ww + 0.5; - if (ss < 0.5) - imOut->image[yy][xx] = (UINT8) 0; - else if (ss >= 255.0) - imOut->image[yy][xx] = (UINT8) 255; - else - imOut->image[yy][xx] = (UINT8) ss; - } - break; - case IMAGING_TYPE_INT32: - /* 32-bit integer */ - for (xx = 0; xx < imOut->xsize; xx++) { - ss = 0.0; - for (y = (int) ymin; y < (int) ymax; y++) - ss = ss + IMAGING_PIXEL_I(imIn, xx, y) * k[y - (int) ymin]; - IMAGING_PIXEL_I(imOut, xx, yy) = (int) ss * ww; - } - break; - case IMAGING_TYPE_FLOAT32: - /* 32-bit float */ - for (xx = 0; xx < imOut->xsize; xx++) { - ss = 0.0; - for (y = (int) ymin; y < (int) ymax; y++) - ss = ss + IMAGING_PIXEL_F(imIn, xx, y) * k[y - (int) ymin]; - IMAGING_PIXEL_F(imOut, xx, yy) = ss * ww; - } - break; - default: - ImagingSectionLeave(&cookie); - return (Imaging) ImagingError_ModeError(); - } - } - } else { - /* horizontal stretch */ - for (xx = 0; xx < imOut->xsize; xx++) { - center = (xx + 0.5) * scale; - ww = 0.0; - ss = 1.0 / filterscale; - xmin = floor(center - support); - if (xmin < 0.0) - xmin = 0.0; - xmax = ceil(center + support); - if (xmax > (float) imIn->xsize) - xmax = (float) imIn->xsize; - for (x = (int) xmin; x < (int) xmax; x++) { - float w = filterp->filter((x - center + 0.5) * ss) * ss; - k[x - (int) xmin] = w; - ww = ww + w; - } - if (ww == 0.0) - ww = 1.0; - else - ww = 1.0 / ww; - if (imIn->image8) { - /* 8-bit grayscale */ - for (yy = 0; yy < imOut->ysize; yy++) { - ss = 0.0; - for (x = (int) xmin; x < (int) xmax; x++) - ss = ss + imIn->image8[yy][x] * k[x - (int) xmin]; - ss = ss * ww + 0.5; - if (ss < 0.5) - imOut->image8[yy][xx] = (UINT8) 0; - else if (ss >= 255.0) - imOut->image8[yy][xx] = (UINT8) 255; - else - imOut->image8[yy][xx] = (UINT8) ss; - } - } else - switch(imIn->type) { - case IMAGING_TYPE_UINT8: - /* n-bit grayscale */ - for (yy = 0; yy < imOut->ysize; yy++) { - for (b = 0; b < imIn->bands; b++) { - if (imIn->bands == 2 && b) - b = 3; /* hack to deal with LA images */ - ss = 0.0; - for (x = (int) xmin; x < (int) xmax; x++) - ss = ss + (UINT8) imIn->image[yy][x*4+b] * k[x - (int) xmin]; - ss = ss * ww + 0.5; - if (ss < 0.5) - imOut->image[yy][xx*4+b] = (UINT8) 0; - else if (ss >= 255.0) - imOut->image[yy][xx*4+b] = (UINT8) 255; - else - imOut->image[yy][xx*4+b] = (UINT8) ss; - } - } - break; - case IMAGING_TYPE_INT32: - /* 32-bit integer */ - for (yy = 0; yy < imOut->ysize; yy++) { - ss = 0.0; - for (x = (int) xmin; x < (int) xmax; x++) - ss = ss + IMAGING_PIXEL_I(imIn, x, yy) * k[x - (int) xmin]; - IMAGING_PIXEL_I(imOut, xx, yy) = (int) ss * ww; - } - break; - case IMAGING_TYPE_FLOAT32: - /* 32-bit float */ - for (yy = 0; yy < imOut->ysize; yy++) { - ss = 0.0; - for (x = (int) xmin; x < (int) xmax; x++) - ss = ss + IMAGING_PIXEL_F(imIn, x, yy) * k[x - (int) xmin]; - IMAGING_PIXEL_F(imOut, xx, yy) = ss * ww; - } - break; - default: - ImagingSectionLeave(&cookie); - return (Imaging) ImagingError_ModeError(); - } - } - } - ImagingSectionLeave(&cookie); - - free(k); - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c deleted file mode 100755 index fdfc6ae9581..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bands.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * stuff to extract and paste back individual bands - * - * history: - * 1996-03-20 fl Created - * 1997-08-27 fl Fixed putband for single band targets. - * 2003-09-26 fl Fixed getband/putband for 2-band images (LA, PA). - * - * Copyright (c) 1997-2003 by Secret Labs AB. - * Copyright (c) 1996-1997 by Fredrik Lundh. - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - - -#define CLIP(x) ((x) <= 0 ? 0 : (x) < 256 ? (x) : 255) - - -Imaging -ImagingGetBand(Imaging imIn, int band) -{ - Imaging imOut; - int x, y; - - /* Check arguments */ - if (!imIn || imIn->type != IMAGING_TYPE_UINT8) - return (Imaging) ImagingError_ModeError(); - - if (band < 0 || band >= imIn->bands) - return (Imaging) ImagingError_ValueError("band index out of range"); - - /* Shortcuts */ - if (imIn->bands == 1) - return ImagingCopy(imIn); - - /* Special case for LXXA etc */ - if (imIn->bands == 2 && band == 1) - band = 3; - - imOut = ImagingNew("L", imIn->xsize, imIn->ysize); - if (!imOut) - return NULL; - - /* Extract band from image */ - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = (UINT8*) imIn->image[y] + band; - UINT8* out = imOut->image8[y]; - for (x = 0; x < imIn->xsize; x++) { - out[x] = *in; - in += 4; - } - } - - return imOut; -} - -Imaging -ImagingPutBand(Imaging imOut, Imaging imIn, int band) -{ - int x, y; - - /* Check arguments */ - if (!imIn || imIn->bands != 1 || !imOut) - return (Imaging) ImagingError_ModeError(); - - if (band < 0 || band >= imOut->bands) - return (Imaging) ImagingError_ValueError("band index out of range"); - - if (imIn->type != imOut->type || - imIn->xsize != imOut->xsize || - imIn->ysize != imOut->ysize) - return (Imaging) ImagingError_Mismatch(); - - /* Shortcuts */ - if (imOut->bands == 1) - return ImagingCopy2(imOut, imIn); - - /* Special case for LXXA etc */ - if (imOut->bands == 2 && band == 1) - band = 3; - - /* Insert band into image */ - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = imIn->image8[y]; - UINT8* out = (UINT8*) imOut->image[y] + band; - for (x = 0; x < imIn->xsize; x++) { - *out = in[x]; - out += 4; - } - } - - return imOut; -} - -Imaging -ImagingFillBand(Imaging imOut, int band, int color) -{ - int x, y; - - /* Check arguments */ - if (!imOut || imOut->type != IMAGING_TYPE_UINT8) - return (Imaging) ImagingError_ModeError(); - - if (band < 0 || band >= imOut->bands) - return (Imaging) ImagingError_ValueError("band index out of range"); - - /* Special case for LXXA etc */ - if (imOut->bands == 2 && band == 1) - band = 3; - - color = CLIP(color); - - /* Insert color into image */ - for (y = 0; y < imOut->ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y] + band; - for (x = 0; x < imOut->xsize; x++) { - *out = (UINT8) color; - out += 4; - } - } - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h deleted file mode 100755 index 56e3a17d2e7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Bit.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Bit.h */ - -typedef struct { - - /* CONFIGURATION */ - - /* Number of bits per pixel */ - int bits; - - /* Line padding (0 or 8) */ - int pad; - - /* Fill order */ - /* 0=msb/msb, 1=msbfill/lsbshift, 2=lsbfill/msbshift, 3=lsb/lsb */ - int fill; - - /* Signed integers (0=unsigned, 1=signed) */ - int sign; - - /* Lookup table (not implemented) */ - unsigned long lutsize; - FLOAT32* lut; - - /* INTERNAL */ - unsigned long mask; - unsigned long signmask; - unsigned long bitbuffer; - int bitcount; - -} BITSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c deleted file mode 100755 index 572926f0079..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/BitDecode.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for packed bitfields (converts to floating point) - * - * history: - * 97-05-31 fl created (much more than originally intended) - * - * Copyright (c) Fredrik Lundh 1997. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#include "Bit.h" - - -int -ImagingBitDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - BITSTATE* bitstate = state->context; - UINT8* ptr; - - if (state->state == 0) { - - /* Initialize context variables */ - - /* this decoder only works for float32 image buffers */ - if (im->type != IMAGING_TYPE_FLOAT32) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - - /* sanity check */ - if (bitstate->bits < 1 || bitstate->bits >= 32) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - - bitstate->mask = (1<bits)-1; - - if (bitstate->sign) - bitstate->signmask = (1<<(bitstate->bits-1)); - - /* check image orientation */ - if (state->ystep < 0) { - state->y = state->ysize-1; - state->ystep = -1; - } else - state->ystep = 1; - - state->state = 1; - - } - - ptr = buf; - - while (bytes > 0) { - - UINT8 byte = *ptr; - - ptr++; - bytes--; - - /* get a byte from the input stream and insert in the bit buffer */ - if (bitstate->fill&1) - /* fill MSB first */ - bitstate->bitbuffer |= (unsigned long) byte << bitstate->bitcount; - else - /* fill LSB first */ - bitstate->bitbuffer = (bitstate->bitbuffer << 8) | byte; - - bitstate->bitcount += 8; - - while (bitstate->bitcount >= bitstate->bits) { - - /* get a pixel from the bit buffer */ - unsigned long data; - FLOAT32 pixel; - - if (bitstate->fill&2) { - /* store LSB first */ - data = bitstate->bitbuffer & bitstate->mask; - if (bitstate->bitcount > 32) - /* bitbuffer overflow; restore it from last input byte */ - bitstate->bitbuffer = byte >> (8 - (bitstate->bitcount - - bitstate->bits)); - else - bitstate->bitbuffer >>= bitstate->bits; - } else - /* store MSB first */ - data = (bitstate->bitbuffer >> (bitstate->bitcount - - bitstate->bits)) - & bitstate->mask; - - bitstate->bitcount -= bitstate->bits; - - if (bitstate->lutsize > 0) { - /* map through lookup table */ - if (data <= 0) - pixel = bitstate->lut[0]; - else if (data >= bitstate->lutsize) - pixel = bitstate->lut[bitstate->lutsize-1]; - else - pixel = bitstate->lut[data]; - } else { - /* convert */ - if (data & bitstate->signmask) - /* image memory contains signed data */ - pixel = (FLOAT32) (INT32) (data | ~bitstate->mask); - else - pixel = (FLOAT32) data; - } - - *(FLOAT32*)(&im->image32[state->y][state->x]) = pixel; - - /* step forward */ - if (++state->x >= state->xsize) { - /* new line */ - state->y += state->ystep; - if (state->y < 0 || state->y >= state->ysize) { - /* end of file (errcode = 0) */ - return -1; - } - state->x = 0; - /* reset bit buffer */ - if (bitstate->pad > 0) - bitstate->bitcount = 0; - } - } - } - - return ptr - buf; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c deleted file mode 100755 index 0861c8ef4fb..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Blend.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * interpolate between two existing images - * - * history: - * 96-03-20 fl Created - * 96-05-18 fl Simplified blend expression - * 96-10-05 fl Fixed expression bug, special case for interpolation - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - - -Imaging -ImagingBlend(Imaging imIn1, Imaging imIn2, float alpha) -{ - Imaging imOut; - int x, y; - - /* Check arguments */ - if (!imIn1 || !imIn2 || imIn1->type != IMAGING_TYPE_UINT8) - return ImagingError_ModeError(); - if (imIn1->type != imIn2->type || - imIn1->bands != imIn2->bands || - imIn1->xsize != imIn2->xsize || - imIn1->ysize != imIn2->ysize) - return ImagingError_Mismatch(); - - /* Shortcuts */ - if (alpha == 0.0) - return ImagingCopy(imIn1); - else if (alpha == 1.0) - return ImagingCopy(imIn2); - - imOut = ImagingNew(imIn1->mode, imIn1->xsize, imIn1->ysize); - if (!imOut) - return NULL; - - ImagingCopyInfo(imOut, imIn1); - - if (alpha >= 0 && alpha <= 1.0) { - /* Interpolate between bands */ - for (y = 0; y < imIn1->ysize; y++) { - UINT8* in1 = (UINT8*) imIn1->image[y]; - UINT8* in2 = (UINT8*) imIn2->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - for (x = 0; x < imIn1->linesize; x++) - out[x] = (UINT8) - ((int) in1[x] + alpha * ((int) in2[x] - (int) in1[x])); - } - } else { - /* Extrapolation; must make sure to clip resulting values */ - for (y = 0; y < imIn1->ysize; y++) { - UINT8* in1 = (UINT8*) imIn1->image[y]; - UINT8* in2 = (UINT8*) imIn2->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - for (x = 0; x < imIn1->linesize; x++) { - float temp = (float) - ((int) in1[x] + alpha * ((int) in2[x] - (int) in1[x])); - if (temp <= 0.0) - out[x] = 0; - else if (temp >= 255.0) - out[x] = 255; - else - out[x] = (UINT8) temp; - } - } - } - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c deleted file mode 100755 index e5993195a03..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Chops.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * basic channel operations - * - * history: - * 1996-03-28 fl Created - * 1996-08-13 fl Added and/or/xor for "1" images - * 1996-12-14 fl Added add_modulo, sub_modulo - * 2005-09-10 fl Fixed output values from and/or/xor - * - * Copyright (c) 1996 by Fredrik Lundh. - * Copyright (c) 1997 by Secret Labs AB. - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - -#define CHOP(operation, mode)\ - int x, y;\ - Imaging imOut;\ - imOut = create(imIn1, imIn2, mode);\ - if (!imOut)\ - return NULL;\ - for (y = 0; y < imOut->ysize; y++) {\ - UINT8* out = (UINT8*) imOut->image[y];\ - UINT8* in1 = (UINT8*) imIn1->image[y];\ - UINT8* in2 = (UINT8*) imIn2->image[y];\ - for (x = 0; x < imOut->linesize; x++) {\ - int temp = operation;\ - if (temp <= 0)\ - out[x] = 0;\ - else if (temp >= 255)\ - out[x] = 255;\ - else\ - out[x] = temp;\ - }\ - }\ - return imOut; - -#define CHOP2(operation, mode)\ - int x, y;\ - Imaging imOut;\ - imOut = create(imIn1, imIn2, mode);\ - if (!imOut)\ - return NULL;\ - for (y = 0; y < imOut->ysize; y++) {\ - UINT8* out = (UINT8*) imOut->image[y];\ - UINT8* in1 = (UINT8*) imIn1->image[y];\ - UINT8* in2 = (UINT8*) imIn2->image[y];\ - for (x = 0; x < imOut->linesize; x++) {\ - out[x] = operation;\ - }\ - }\ - return imOut; - -static Imaging -create(Imaging im1, Imaging im2, char* mode) -{ - int xsize, ysize; - - if (!im1 || !im2 || im1->type != IMAGING_TYPE_UINT8 || - (mode != NULL && (strcmp(im1->mode, "1") || strcmp(im2->mode, "1")))) - return (Imaging) ImagingError_ModeError(); - if (im1->type != im2->type || - im1->bands != im2->bands) - return (Imaging) ImagingError_Mismatch(); - - xsize = (im1->xsize < im2->xsize) ? im1->xsize : im2->xsize; - ysize = (im1->ysize < im2->ysize) ? im1->ysize : im2->ysize; - - return ImagingNew(im1->mode, xsize, ysize); -} - -Imaging -ImagingChopLighter(Imaging imIn1, Imaging imIn2) -{ - CHOP((in1[x] > in2[x]) ? in1[x] : in2[x], NULL); -} - -Imaging -ImagingChopDarker(Imaging imIn1, Imaging imIn2) -{ - CHOP((in1[x] < in2[x]) ? in1[x] : in2[x], NULL); -} - -Imaging -ImagingChopDifference(Imaging imIn1, Imaging imIn2) -{ - CHOP(abs((int) in1[x] - (int) in2[x]), NULL); -} - -Imaging -ImagingChopMultiply(Imaging imIn1, Imaging imIn2) -{ - CHOP((int) in1[x] * (int) in2[x] / 255, NULL); -} - -Imaging -ImagingChopScreen(Imaging imIn1, Imaging imIn2) -{ - CHOP(255 - ((int) (255 - in1[x]) * (int) (255 - in2[x])) / 255, NULL); -} - -Imaging -ImagingChopAdd(Imaging imIn1, Imaging imIn2, float scale, int offset) -{ - CHOP(((int) in1[x] + (int) in2[x]) / scale + offset, NULL); -} - -Imaging -ImagingChopSubtract(Imaging imIn1, Imaging imIn2, float scale, int offset) -{ - CHOP(((int) in1[x] - (int) in2[x]) / scale + offset, NULL); -} - -Imaging -ImagingChopAnd(Imaging imIn1, Imaging imIn2) -{ - CHOP2((in1[x] && in2[x]) ? 255 : 0, "1"); -} - -Imaging -ImagingChopOr(Imaging imIn1, Imaging imIn2) -{ - CHOP2((in1[x] || in2[x]) ? 255 : 0, "1"); -} - -Imaging -ImagingChopXor(Imaging imIn1, Imaging imIn2) -{ - CHOP2(((in1[x] != 0) ^ (in2[x] != 0)) ? 255 : 0, "1"); -} - -Imaging -ImagingChopAddModulo(Imaging imIn1, Imaging imIn2) -{ - CHOP2(in1[x] + in2[x], NULL); -} - -Imaging -ImagingChopSubtractModulo(Imaging imIn1, Imaging imIn2) -{ - CHOP2(in1[x] - in2[x], NULL); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c deleted file mode 100755 index 25299aa8280..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Convert.c +++ /dev/null @@ -1,1132 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * convert images - * - * history: - * 1995-06-15 fl created - * 1995-11-28 fl added some "RGBA" and "CMYK" conversions - * 1996-04-22 fl added "1" conversions (same as "L") - * 1996-05-05 fl added palette conversions (hack) - * 1996-07-23 fl fixed "1" conversions to zero/non-zero convention - * 1996-11-01 fl fixed "P" to "L" and "RGB" to "1" conversions - * 1996-12-29 fl set alpha byte in RGB converters - * 1997-05-12 fl added ImagingConvert2 - * 1997-05-30 fl added floating point support - * 1997-08-27 fl added "P" to "1" and "P" to "F" conversions - * 1998-01-11 fl added integer support - * 1998-07-01 fl added "YCbCr" support - * 1998-07-02 fl added "RGBX" conversions (sort of) - * 1998-07-04 fl added floyd-steinberg dithering - * 1998-07-12 fl changed "YCrCb" to "YCbCr" (!) - * 1998-12-29 fl added basic "I;16" and "I;16B" conversions - * 1999-02-03 fl added "RGBa", and "BGR" conversions (experimental) - * 2003-09-26 fl added "LA" and "PA" conversions (experimental) - * 2005-05-05 fl fixed "P" to "1" threshold - * 2005-12-08 fl fixed palette memory leak in topalette - * - * Copyright (c) 1997-2005 by Secret Labs AB. - * Copyright (c) 1995-1997 by Fredrik Lundh. - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - -#define CLIP(v) ((v) <= 0 ? 0 : (v) >= 255 ? 255 : (v)) -#define CLIP16(v) ((v) <= -32768 ? -32768 : (v) >= 32767 ? 32767 : (v)) - -/* like (a * b + 127) / 255), but much faster on most platforms */ -#define MULDIV255(a, b, tmp)\ - (tmp = (a) * (b) + 128, ((((tmp) >> 8) + (tmp)) >> 8)) - -/* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ -#define L(rgb)\ - ((INT32) (rgb)[0]*299 + (INT32) (rgb)[1]*587 + (INT32) (rgb)[2]*114) - -/* ------------------- */ -/* 1 (bit) conversions */ -/* ------------------- */ - -static void -bit2l(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) - *out++ = (*in++ != 0) ? 255 : 0; -} - -static void -bit2rgb(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - UINT8 v = (*in++ != 0) ? 255 : 0; - *out++ = v; - *out++ = v; - *out++ = v; - *out++ = 255; - } -} - -static void -bit2cmyk(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - *out++ = 0; - *out++ = 0; - *out++ = 0; - *out++ = (*in++ != 0) ? 0 : 255; - } -} - -static void -bit2ycbcr(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - *out++ = (*in++ != 0) ? 255 : 0; - *out++ = 128; - *out++ = 128; - *out++ = 255; - } -} - -/* ----------------- */ -/* RGB/L conversions */ -/* ----------------- */ - -static void -l2bit(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) - *out++ = (*in++ >= 128) ? 255 : 0; -} - -static void -l2la(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - UINT8 v = *in++; - *out++ = v; - *out++ = v; - *out++ = v; - *out++ = 255; - } -} - -static void -l2rgb(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - UINT8 v = *in++; - *out++ = v; - *out++ = v; - *out++ = v; - *out++ = 255; - } -} - -static void -la2l(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) - *out++ = in[0]; -} - -static void -la2rgb(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) { - UINT8 v = in[0]; - *out++ = v; - *out++ = v; - *out++ = v; - *out++ = in[3]; - } -} - -static void -rgb2bit(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) - /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ - *out++ = (L(in) >= 128000) ? 255 : 0; -} - -static void -rgb2l(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) - /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ - *out++ = L(in) / 1000; -} - -static void -rgb2la(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4, out += 4) { - /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ - out[0] = out[1] = out[2] = L(in) / 1000; - out[3] = 255; - } -} - -static void -rgb2i(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++, in += 4) - *out++ = L(in) / 1000; -} - -static void -rgb2f(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - FLOAT32* out = (FLOAT32*) out_; - for (x = 0; x < xsize; x++, in += 4) - *out++ = (float) L(in) / 1000.0F; -} - -static void -rgb2bgr15(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - UINT16* out = (UINT16*) out_; - for (x = 0; x < xsize; x++, in += 4) - *out++ = - ((((UINT16)in[0])<<7)&0x7c00) + - ((((UINT16)in[1])<<2)&0x03e0) + - ((((UINT16)in[2])>>3)&0x001f); -} - -static void -rgb2bgr16(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - UINT16* out = (UINT16*) out_; - for (x = 0; x < xsize; x++, in += 4) - *out++ = - ((((UINT16)in[0])<<8)&0xf800) + - ((((UINT16)in[1])<<3)&0x07e0) + - ((((UINT16)in[2])>>3)&0x001f); -} - -static void -rgb2bgr24(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) { - *out++ = in[2]; - *out++ = in[1]; - *out++ = in[0]; - } -} - -/* ---------------- */ -/* RGBA conversions */ -/* ---------------- */ - -static void -rgb2rgba(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - *out++ = *in++; - *out++ = *in++; - *out++ = *in++; - *out++ = 255; in++; - } -} - -static void -rgba2la(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4, out += 4) { - /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */ - out[0] = out[1] = out[2] = L(in) / 1000; - out[3] = in[3]; - } -} - -static void -rgba2rgb(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - *out++ = *in++; - *out++ = *in++; - *out++ = *in++; - *out++ = 255; in++; - } -} - -static void -rgba2rgba(UINT8* out, const UINT8* in, int xsize) -{ - int x; - unsigned int alpha, tmp; - for (x = 0; x < xsize; x++) { - alpha = in[3]; - *out++ = MULDIV255(*in++, alpha, tmp); - *out++ = MULDIV255(*in++, alpha, tmp); - *out++ = MULDIV255(*in++, alpha, tmp); - *out++ = *in++; - } -} - -/* ---------------- */ -/* CMYK conversions */ -/* ---------------- */ - -static void -l2cmyk(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - *out++ = 0; - *out++ = 0; - *out++ = 0; - *out++ = ~(*in++); - } -} - -static void -rgb2cmyk(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - /* Note: no undercolour removal */ - *out++ = ~(*in++); - *out++ = ~(*in++); - *out++ = ~(*in++); - *out++ = 0; in++; - } -} - -static void -cmyk2rgb(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) { - *out++ = CLIP(255 - (in[0] + in[3])); - *out++ = CLIP(255 - (in[1] + in[3])); - *out++ = CLIP(255 - (in[2] + in[3])); - *out++ = 255; - } -} - -/* ------------- */ -/* I conversions */ -/* ------------- */ - -static void -bit2i(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (*in++ != 0) ? 255 : 0; -} - -static void -l2i(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (INT32) *in++; -} - -static void -i2l(UINT8* out, const UINT8* in_, int xsize) -{ - int x; - INT32* in = (INT32*) in_; - for (x = 0; x < xsize; x++, in++, out++) { - if (*in <= 0) - *out = 0; - else if (*in >= 255) - *out = 255; - else - *out = (UINT8) *in; - } -} - -static void -i2f(UINT8* out_, const UINT8* in_, int xsize) -{ - int x; - INT32* in = (INT32*) in_; - FLOAT32* out = (FLOAT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (FLOAT32) *in++; -} - -/* ------------- */ -/* F conversions */ -/* ------------- */ - -static void -bit2f(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - FLOAT32* out = (FLOAT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (*in++ != 0) ? 255.0F : 0.0F; -} - -static void -l2f(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - FLOAT32* out = (FLOAT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (FLOAT32) *in++; -} - -static void -f2l(UINT8* out, const UINT8* in_, int xsize) -{ - int x; - FLOAT32* in = (FLOAT32*) in_; - for (x = 0; x < xsize; x++, in++, out++) { - if (*in <= 0.0) - *out = 0; - else if (*in >= 255.0) - *out = 255; - else - *out = (UINT8) *in; - } -} - -static void -f2i(UINT8* out_, const UINT8* in_, int xsize) -{ - int x; - FLOAT32* in = (FLOAT32*) in_; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (INT32) *in++; -} - -/* ----------------- */ -/* YCbCr conversions */ -/* ----------------- */ - -/* See ConvertYCbCr.c for RGB/YCbCr tables */ - -static void -l2ycbcr(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++) { - *out++ = *in++; - *out++ = 128; - *out++ = 128; - *out++ = 255; - } -} - -static void -ycbcr2l(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) - *out++ = in[0]; -} - -/* ------------------------- */ -/* I;16 (16-bit) conversions */ -/* ------------------------- */ - -static void -I_I16L(UINT8* out, const UINT8* in_, int xsize) -{ - int x, v; - INT32* in = (INT32*) in_; - for (x = 0; x < xsize; x++, in++) { - v = CLIP16(*in); - *out++ = (UINT8) v; - *out++ = (UINT8) (v >> 8); - } -} - -static void -I_I16B(UINT8* out, const UINT8* in_, int xsize) -{ - int x, v; - INT32* in = (INT32*) in_; - for (x = 0; x < xsize; x++, in++) { - v = CLIP16(*in); - *out++ = (UINT8) (v >> 8); - *out++ = (UINT8) v; - } -} - - -static void -I16L_I(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++, in += 2) - *out++ = in[0] + ((int) in[1] << 8); -} - - -static void -I16B_I(UINT8* out_, const UINT8* in, int xsize) -{ - int x; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++, in += 2) - *out++ = in[1] + ((int) in[0] << 8); -} - -static void -L_I16L(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in++) { - *out++ = *in; - *out++ = 0; - } -} - -static void -L_I16B(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in++) { - *out++ = 0; - *out++ = *in; - } -} - -static void -I16L_L(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 2) - if (in[1] != 0) - *out++ = 255; - else - *out++ = in[0]; -} - -static void -I16B_L(UINT8* out, const UINT8* in, int xsize) -{ - int x; - for (x = 0; x < xsize; x++, in += 2) - if (in[0] != 0) - *out++ = 255; - else - *out++ = in[1]; -} - -static struct { - const char* from; - const char* to; - ImagingShuffler convert; -} converters[] = { - - { "1", "L", bit2l }, - { "1", "I", bit2i }, - { "1", "F", bit2f }, - { "1", "RGB", bit2rgb }, - { "1", "RGBA", bit2rgb }, - { "1", "RGBX", bit2rgb }, - { "1", "CMYK", bit2cmyk }, - { "1", "YCbCr", bit2ycbcr }, - - { "L", "1", l2bit }, - { "L", "LA", l2la }, - { "L", "I", l2i }, - { "L", "F", l2f }, - { "L", "RGB", l2rgb }, - { "L", "RGBA", l2rgb }, - { "L", "RGBX", l2rgb }, - { "L", "CMYK", l2cmyk }, - { "L", "YCbCr", l2ycbcr }, - - { "LA", "L", la2l }, - { "LA", "RGB", la2rgb }, - { "LA", "RGBX", la2rgb }, - { "LA", "RGBA", la2rgb }, - - { "I", "L", i2l }, - { "I", "F", i2f }, - - { "F", "L", f2l }, - { "F", "I", f2i }, - - { "RGB", "1", rgb2bit }, - { "RGB", "L", rgb2l }, - { "RGB", "LA", rgb2la }, - { "RGB", "I", rgb2i }, - { "RGB", "F", rgb2f }, - { "RGB", "BGR;15", rgb2bgr15 }, - { "RGB", "BGR;16", rgb2bgr16 }, - { "RGB", "BGR;24", rgb2bgr24 }, - { "RGB", "RGBA", rgb2rgba }, - { "RGB", "RGBX", rgb2rgba }, - { "RGB", "CMYK", rgb2cmyk }, - { "RGB", "YCbCr", ImagingConvertRGB2YCbCr }, - - { "RGBA", "1", rgb2bit }, - { "RGBA", "L", rgb2l }, - { "RGBA", "LA", rgba2la }, - { "RGBA", "I", rgb2i }, - { "RGBA", "F", rgb2f }, - { "RGBA", "RGB", rgba2rgb }, - { "RGBA", "RGBa", rgba2rgba }, - { "RGBA", "RGBX", rgb2rgba }, - { "RGBA", "CMYK", rgb2cmyk }, - { "RGBA", "YCbCr", ImagingConvertRGB2YCbCr }, - - { "RGBX", "1", rgb2bit }, - { "RGBX", "L", rgb2l }, - { "RGBA", "I", rgb2i }, - { "RGBA", "F", rgb2f }, - { "RGBX", "RGB", rgba2rgb }, - { "RGBX", "CMYK", rgb2cmyk }, - { "RGBX", "YCbCr", ImagingConvertRGB2YCbCr }, - - { "CMYK", "RGB", cmyk2rgb }, - { "CMYK", "RGBA", cmyk2rgb }, - { "CMYK", "RGBX", cmyk2rgb }, - - { "YCbCr", "L", ycbcr2l }, - { "YCbCr", "RGB", ImagingConvertYCbCr2RGB }, - - { "I", "I;16", I_I16L }, - { "I;16", "I", I16L_I }, - { "L", "I;16", L_I16L }, - { "I;16", "L", I16L_L }, - - { "I", "I;16L", I_I16L }, - { "I;16L", "I", I16L_I }, - { "I", "I;16B", I_I16B }, - { "I;16B", "I", I16B_I }, - - { "L", "I;16L", L_I16L }, - { "I;16L", "L", I16L_L }, - { "L", "I;16B", L_I16B }, - { "I;16B", "L", I16B_L }, - - { NULL } -}; - -/* FIXME: translate indexed versions to pointer versions below this line */ - -/* ------------------- */ -/* Palette conversions */ -/* ------------------- */ - -static void -p2bit(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - /* FIXME: precalculate greyscale palette? */ - for (x = 0; x < xsize; x++) - *out++ = (L(&palette[in[x]*4]) >= 128000) ? 255 : 0; -} - -static void -p2l(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - /* FIXME: precalculate greyscale palette? */ - for (x = 0; x < xsize; x++) - *out++ = L(&palette[in[x]*4]) / 1000; -} - -static void -pa2la(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - /* FIXME: precalculate greyscale palette? */ - for (x = 0; x < xsize; x++, in += 2) { - *out++ = L(&palette[in[0]*4]) / 1000; - *out++ = in[1]; - } -} - -static void -p2i(UINT8* out_, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - INT32* out = (INT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = L(&palette[in[x]*4]) / 1000; -} - -static void -p2f(UINT8* out_, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - FLOAT32* out = (FLOAT32*) out_; - for (x = 0; x < xsize; x++) - *out++ = (float) L(&palette[in[x]*4]) / 1000.0F; -} - -static void -p2rgb(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - for (x = 0; x < xsize; x++) { - const UINT8* rgb = &palette[*in++ * 4]; - *out++ = rgb[0]; - *out++ = rgb[1]; - *out++ = rgb[2]; - *out++ = 255; - } -} - -static void -p2rgba(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - for (x = 0; x < xsize; x++) { - const UINT8* rgba = &palette[*in++ * 4]; - *out++ = rgba[0]; - *out++ = rgba[1]; - *out++ = rgba[2]; - *out++ = rgba[3]; - } -} - -static void -pa2rgba(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - int x; - for (x = 0; x < xsize; x++, in += 4) { - const UINT8* rgb = &palette[in[0] * 4]; - *out++ = rgb[0]; - *out++ = rgb[1]; - *out++ = rgb[2]; - *out++ = in[3]; - } -} - -static void -p2cmyk(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - p2rgb(out, in, xsize, palette); - rgb2cmyk(out, out, xsize); -} - -static void -p2ycbcr(UINT8* out, const UINT8* in, int xsize, const UINT8* palette) -{ - p2rgb(out, in, xsize, palette); - ImagingConvertRGB2YCbCr(out, out, xsize); -} - -static Imaging -frompalette(Imaging imOut, Imaging imIn, const char *mode) -{ - ImagingSectionCookie cookie; - int alpha; - int y; - void (*convert)(UINT8*, const UINT8*, int, const UINT8*); - - /* Map palette image to L, RGB, RGBA, or CMYK */ - - if (!imIn->palette) - return (Imaging) ImagingError_ValueError("no palette"); - - alpha = !strcmp(imIn->mode, "PA"); - - if (strcmp(mode, "1") == 0) - convert = p2bit; - else if (strcmp(mode, "L") == 0) - convert = p2l; - else if (strcmp(mode, "LA") == 0) - convert = (alpha) ? pa2la : p2l; - else if (strcmp(mode, "I") == 0) - convert = p2i; - else if (strcmp(mode, "F") == 0) - convert = p2f; - else if (strcmp(mode, "RGB") == 0) - convert = p2rgb; - else if (strcmp(mode, "RGBA") == 0) - convert = (alpha) ? pa2rgba : p2rgba; - else if (strcmp(mode, "RGBX") == 0) - convert = p2rgba; - else if (strcmp(mode, "CMYK") == 0) - convert = p2cmyk; - else if (strcmp(mode, "YCbCr") == 0) - convert = p2ycbcr; - else - return (Imaging) ImagingError_ValueError("conversion not supported"); - - imOut = ImagingNew2(mode, imOut, imIn); - if (!imOut) - return NULL; - - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) - (*convert)((UINT8*) imOut->image[y], (UINT8*) imIn->image[y], - imIn->xsize, imIn->palette->palette); - ImagingSectionLeave(&cookie); - - return imOut; -} - -static Imaging -topalette(Imaging imOut, Imaging imIn, ImagingPalette inpalette, int dither) -{ - ImagingSectionCookie cookie; - int x, y; - ImagingPalette palette = inpalette;; - - /* Map L or RGB/RGBX/RGBA to palette image */ - if (strcmp(imIn->mode, "L") != 0 && strncmp(imIn->mode, "RGB", 3) != 0) - return (Imaging) ImagingError_ValueError("conversion not supported"); - - if (palette == NULL) { - /* FIXME: make user configurable */ - if (imIn->bands == 1) - palette = ImagingPaletteNew("RGB"); /* Initialised to grey ramp */ - else - palette = ImagingPaletteNewBrowser(); /* Standard colour cube */ - } - - if (!palette) - return (Imaging) ImagingError_ValueError("no palette"); - - imOut = ImagingNew2("P", imOut, imIn); - if (!imOut) { - if (palette != inpalette) - ImagingPaletteDelete(palette); - return NULL; - } - - ImagingPaletteDelete(imOut->palette); - imOut->palette = ImagingPaletteDuplicate(palette); - - if (imIn->bands == 1) { - /* greyscale image */ - - /* Greyscale palette: copy data as is */ - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) - memcpy(imOut->image[y], imIn->image[y], imIn->linesize); - ImagingSectionLeave(&cookie); - - } else { - /* colour image */ - - /* Create mapping cache */ - if (ImagingPaletteCachePrepare(palette) < 0) { - ImagingDelete(imOut); - if (palette != inpalette) - ImagingPaletteDelete(palette); - return NULL; - } - - if (dither) { - /* floyd-steinberg dither */ - - int* errors; - errors = calloc(imIn->xsize + 1, sizeof(int) * 3); - if (!errors) { - ImagingDelete(imOut); - return ImagingError_MemoryError(); - } - - /* Map each pixel to the nearest palette entry */ - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - int r, r0, r1, r2; - int g, g0, g1, g2; - int b, b0, b1, b2; - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = imOut->image8[y]; - int* e = errors; - - r = r0 = r1 = 0; - g = g0 = g1 = 0; - b = b0 = b1 = b2 = 0; - - for (x = 0; x < imIn->xsize; x++, in += 4) { - int d2; - INT16* cache; - - r = CLIP(in[0] + (r + e[3+0])/16); - g = CLIP(in[1] + (g + e[3+1])/16); - b = CLIP(in[2] + (b + e[3+2])/16); - - /* get closest colour */ - cache = &ImagingPaletteCache(palette, r, g, b); - if (cache[0] == 0x100) - ImagingPaletteCacheUpdate(palette, r, g, b); - out[x] = (UINT8) cache[0]; - - r -= (int) palette->palette[cache[0]*4]; - g -= (int) palette->palette[cache[0]*4+1]; - b -= (int) palette->palette[cache[0]*4+2]; - - /* propagate errors (don't ask ;-) */ - r2 = r; d2 = r + r; r += d2; e[0] = r + r0; - r += d2; r0 = r + r1; r1 = r2; r += d2; - g2 = g; d2 = g + g; g += d2; e[1] = g + g0; - g += d2; g0 = g + g1; g1 = g2; g += d2; - b2 = b; d2 = b + b; b += d2; e[2] = b + b0; - b += d2; b0 = b + b1; b1 = b2; b += d2; - - e += 3; - - } - - e[0] = b0; - e[1] = b1; - e[2] = b2; - - } - ImagingSectionLeave(&cookie); - free(errors); - - } else { - - /* closest colour */ - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - int r, g, b; - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = imOut->image8[y]; - - for (x = 0; x < imIn->xsize; x++, in += 4) { - INT16* cache; - - r = in[0]; g = in[1]; b = in[2]; - - /* get closest colour */ - cache = &ImagingPaletteCache(palette, r, g, b); - if (cache[0] == 0x100) - ImagingPaletteCacheUpdate(palette, r, g, b); - out[x] = (UINT8) cache[0]; - - } - } - ImagingSectionLeave(&cookie); - - } - if (inpalette != palette) - ImagingPaletteCacheDelete(palette); - } - - if (inpalette != palette) - ImagingPaletteDelete(palette); - - return imOut; -} - -static Imaging -tobilevel(Imaging imOut, Imaging imIn, int dither) -{ - ImagingSectionCookie cookie; - int x, y; - int* errors; - - /* Map L or RGB to dithered 1 image */ - if (strcmp(imIn->mode, "L") != 0 && strcmp(imIn->mode, "RGB") != 0) - return (Imaging) ImagingError_ValueError("conversion not supported"); - - imOut = ImagingNew2("1", imOut, imIn); - if (!imOut) - return NULL; - - errors = calloc(imIn->xsize + 1, sizeof(int)); - if (!errors) { - ImagingDelete(imOut); - return ImagingError_MemoryError(); - } - - if (imIn->bands == 1) { - - /* map each pixel to black or white, using error diffusion */ - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - int l, l0, l1, l2, d2; - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = imOut->image8[y]; - - l = l0 = l1 = 0; - - for (x = 0; x < imIn->xsize; x++) { - - /* pick closest colour */ - l = CLIP(in[x] + (l + errors[x+1])/16); - out[x] = (l > 128) ? 255 : 0; - - /* propagate errors */ - l -= (int) out[x]; - l2 = l; d2 = l + l; l += d2; errors[x] = l + l0; - l += d2; l0 = l + l1; l1 = l2; l += d2; - } - - errors[x] = l0; - - } - ImagingSectionLeave(&cookie); - - } else { - - /* map each pixel to black or white, using error diffusion */ - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - int l, l0, l1, l2, d2; - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = imOut->image8[y]; - - l = l0 = l1 = 0; - - for (x = 0; x < imIn->xsize; x++, in += 4) { - - /* pick closest colour */ - l = CLIP(L(in)/1000 + (l + errors[x+1])/16); - out[x] = (l > 128) ? 255 : 0; - - /* propagate errors */ - l -= (int) out[x]; - l2 = l; d2 = l + l; l += d2; errors[x] = l + l0; - l += d2; l0 = l + l1; l1 = l2; l += d2; - - } - - errors[x] = l0; - - } - ImagingSectionLeave(&cookie); - } - - free(errors); - - return imOut; -} - - -static Imaging -convert(Imaging imOut, Imaging imIn, const char *mode, - ImagingPalette palette, int dither) -{ - ImagingSectionCookie cookie; - ImagingShuffler convert; - int y; - - if (!imIn) - return (Imaging) ImagingError_ModeError(); - - if (!mode) { - /* Map palette image to full depth */ - if (!imIn->palette) - return (Imaging) ImagingError_ModeError(); - mode = imIn->palette->mode; - } else - /* Same mode? */ - if (!strcmp(imIn->mode, mode)) - return ImagingCopy2(imOut, imIn); - - - /* test for special conversions */ - - if (strcmp(imIn->mode, "P") == 0 || strcmp(imIn->mode, "PA") == 0) - return frompalette(imOut, imIn, mode); - - if (strcmp(mode, "P") == 0) - return topalette(imOut, imIn, palette, dither); - - if (dither && strcmp(mode, "1") == 0) - return tobilevel(imOut, imIn, dither); - - - /* standard conversion machinery */ - - convert = NULL; - - for (y = 0; converters[y].from; y++) - if (!strcmp(imIn->mode, converters[y].from) && - !strcmp(mode, converters[y].to)) { - convert = converters[y].convert; - break; - } - - if (!convert) -#ifdef notdef - return (Imaging) ImagingError_ValueError("conversion not supported"); -#else - { - static char buf[256]; - /* FIXME: may overflow if mode is too large */ - sprintf(buf, "conversion from %s to %s not supported", imIn->mode, mode); - return (Imaging) ImagingError_ValueError(buf); - } -#endif - - imOut = ImagingNew2(mode, imOut, imIn); - if (!imOut) - return NULL; - - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) - (*convert)((UINT8*) imOut->image[y], (UINT8*) imIn->image[y], - imIn->xsize); - ImagingSectionLeave(&cookie); - - return imOut; -} - -Imaging -ImagingConvert(Imaging imIn, const char *mode, - ImagingPalette palette, int dither) -{ - return convert(NULL, imIn, mode, palette, dither); -} - -Imaging -ImagingConvert2(Imaging imOut, Imaging imIn) -{ - return convert(imOut, imIn, imOut->mode, NULL, 0); -} - -Imaging -ImagingConvertInPlace(Imaging imIn, const char* mode) -{ - ImagingSectionCookie cookie; - ImagingShuffler convert; - int y; - - /* limited support for inplace conversion */ - if (strcmp(imIn->mode, "L") == 0 && strcmp(mode, "1") == 0) - convert = l2bit; - else if (strcmp(imIn->mode, "1") == 0 && strcmp(mode, "L") == 0) - convert = bit2l; - else - return ImagingError_ModeError(); - - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) - (*convert)((UINT8*) imIn->image[y], (UINT8*) imIn->image[y], - imIn->xsize); - ImagingSectionLeave(&cookie); - - return imIn; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c deleted file mode 100755 index 40cd01780d9..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ConvertYCbCr.c +++ /dev/null @@ -1,387 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * code to convert YCbCr data - * - * history: - * 98-07-01 hk Created - * - * Copyright (c) Secret Labs AB 1998 - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -/* JPEG/JFIF YCbCr conversions - - Y = R * 0.29900 + G * 0.58700 + B * 0.11400 - Cb = R * -0.16874 + G * -0.33126 + B * 0.50000 + 128 - Cr = R * 0.50000 + G * -0.41869 + B * -0.08131 + 128 - - R = Y + + (Cr - 128) * 1.40200 - G = Y + (Cb - 128) * -0.34414 + (Cr - 128) * -0.71414 - B = Y + (Cb - 128) * 1.77200 - -*/ - -#define SCALE 6 /* bits */ - -static INT16 Y_R[] = { 0, 19, 38, 57, 77, 96, 115, 134, 153, 172, 191, -210, 230, 249, 268, 287, 306, 325, 344, 364, 383, 402, 421, 440, 459, -478, 498, 517, 536, 555, 574, 593, 612, 631, 651, 670, 689, 708, 727, -746, 765, 785, 804, 823, 842, 861, 880, 899, 919, 938, 957, 976, 995, -1014, 1033, 1052, 1072, 1091, 1110, 1129, 1148, 1167, 1186, 1206, -1225, 1244, 1263, 1282, 1301, 1320, 1340, 1359, 1378, 1397, 1416, -1435, 1454, 1473, 1493, 1512, 1531, 1550, 1569, 1588, 1607, 1627, -1646, 1665, 1684, 1703, 1722, 1741, 1761, 1780, 1799, 1818, 1837, -1856, 1875, 1894, 1914, 1933, 1952, 1971, 1990, 2009, 2028, 2048, -2067, 2086, 2105, 2124, 2143, 2162, 2182, 2201, 2220, 2239, 2258, -2277, 2296, 2315, 2335, 2354, 2373, 2392, 2411, 2430, 2449, 2469, -2488, 2507, 2526, 2545, 2564, 2583, 2602, 2622, 2641, 2660, 2679, -2698, 2717, 2736, 2756, 2775, 2794, 2813, 2832, 2851, 2870, 2890, -2909, 2928, 2947, 2966, 2985, 3004, 3023, 3043, 3062, 3081, 3100, -3119, 3138, 3157, 3177, 3196, 3215, 3234, 3253, 3272, 3291, 3311, -3330, 3349, 3368, 3387, 3406, 3425, 3444, 3464, 3483, 3502, 3521, -3540, 3559, 3578, 3598, 3617, 3636, 3655, 3674, 3693, 3712, 3732, -3751, 3770, 3789, 3808, 3827, 3846, 3865, 3885, 3904, 3923, 3942, -3961, 3980, 3999, 4019, 4038, 4057, 4076, 4095, 4114, 4133, 4153, -4172, 4191, 4210, 4229, 4248, 4267, 4286, 4306, 4325, 4344, 4363, -4382, 4401, 4420, 4440, 4459, 4478, 4497, 4516, 4535, 4554, 4574, -4593, 4612, 4631, 4650, 4669, 4688, 4707, 4727, 4746, 4765, 4784, -4803, 4822, 4841, 4861, 4880 }; - -static INT16 Y_G[] = { 0, 38, 75, 113, 150, 188, 225, 263, 301, 338, -376, 413, 451, 488, 526, 564, 601, 639, 676, 714, 751, 789, 826, 864, -902, 939, 977, 1014, 1052, 1089, 1127, 1165, 1202, 1240, 1277, 1315, -1352, 1390, 1428, 1465, 1503, 1540, 1578, 1615, 1653, 1691, 1728, -1766, 1803, 1841, 1878, 1916, 1954, 1991, 2029, 2066, 2104, 2141, -2179, 2217, 2254, 2292, 2329, 2367, 2404, 2442, 2479, 2517, 2555, -2592, 2630, 2667, 2705, 2742, 2780, 2818, 2855, 2893, 2930, 2968, -3005, 3043, 3081, 3118, 3156, 3193, 3231, 3268, 3306, 3344, 3381, -3419, 3456, 3494, 3531, 3569, 3607, 3644, 3682, 3719, 3757, 3794, -3832, 3870, 3907, 3945, 3982, 4020, 4057, 4095, 4132, 4170, 4208, -4245, 4283, 4320, 4358, 4395, 4433, 4471, 4508, 4546, 4583, 4621, -4658, 4696, 4734, 4771, 4809, 4846, 4884, 4921, 4959, 4997, 5034, -5072, 5109, 5147, 5184, 5222, 5260, 5297, 5335, 5372, 5410, 5447, -5485, 5522, 5560, 5598, 5635, 5673, 5710, 5748, 5785, 5823, 5861, -5898, 5936, 5973, 6011, 6048, 6086, 6124, 6161, 6199, 6236, 6274, -6311, 6349, 6387, 6424, 6462, 6499, 6537, 6574, 6612, 6650, 6687, -6725, 6762, 6800, 6837, 6875, 6913, 6950, 6988, 7025, 7063, 7100, -7138, 7175, 7213, 7251, 7288, 7326, 7363, 7401, 7438, 7476, 7514, -7551, 7589, 7626, 7664, 7701, 7739, 7777, 7814, 7852, 7889, 7927, -7964, 8002, 8040, 8077, 8115, 8152, 8190, 8227, 8265, 8303, 8340, -8378, 8415, 8453, 8490, 8528, 8566, 8603, 8641, 8678, 8716, 8753, -8791, 8828, 8866, 8904, 8941, 8979, 9016, 9054, 9091, 9129, 9167, -9204, 9242, 9279, 9317, 9354, 9392, 9430, 9467, 9505, 9542, 9580 }; - -static INT16 Y_B[] = { 0, 7, 15, 22, 29, 36, 44, 51, 58, 66, 73, 80, -88, 95, 102, 109, 117, 124, 131, 139, 146, 153, 161, 168, 175, 182, -190, 197, 204, 212, 219, 226, 233, 241, 248, 255, 263, 270, 277, 285, -292, 299, 306, 314, 321, 328, 336, 343, 350, 358, 365, 372, 379, 387, -394, 401, 409, 416, 423, 430, 438, 445, 452, 460, 467, 474, 482, 489, -496, 503, 511, 518, 525, 533, 540, 547, 554, 562, 569, 576, 584, 591, -598, 606, 613, 620, 627, 635, 642, 649, 657, 664, 671, 679, 686, 693, -700, 708, 715, 722, 730, 737, 744, 751, 759, 766, 773, 781, 788, 795, -803, 810, 817, 824, 832, 839, 846, 854, 861, 868, 876, 883, 890, 897, -905, 912, 919, 927, 934, 941, 948, 956, 963, 970, 978, 985, 992, 1000, -1007, 1014, 1021, 1029, 1036, 1043, 1051, 1058, 1065, 1073, 1080, -1087, 1094, 1102, 1109, 1116, 1124, 1131, 1138, 1145, 1153, 1160, -1167, 1175, 1182, 1189, 1197, 1204, 1211, 1218, 1226, 1233, 1240, -1248, 1255, 1262, 1270, 1277, 1284, 1291, 1299, 1306, 1313, 1321, -1328, 1335, 1342, 1350, 1357, 1364, 1372, 1379, 1386, 1394, 1401, -1408, 1415, 1423, 1430, 1437, 1445, 1452, 1459, 1466, 1474, 1481, -1488, 1496, 1503, 1510, 1518, 1525, 1532, 1539, 1547, 1554, 1561, -1569, 1576, 1583, 1591, 1598, 1605, 1612, 1620, 1627, 1634, 1642, -1649, 1656, 1663, 1671, 1678, 1685, 1693, 1700, 1707, 1715, 1722, -1729, 1736, 1744, 1751, 1758, 1766, 1773, 1780, 1788, 1795, 1802, -1809, 1817, 1824, 1831, 1839, 1846, 1853, 1860 }; - -static INT16 Cb_R[] = { 0, -10, -21, -31, -42, -53, -64, -75, -85, --96, -107, -118, -129, -139, -150, -161, -172, -183, -193, -204, -215, --226, -237, -247, -258, -269, -280, -291, -301, -312, -323, -334, --345, -355, -366, -377, -388, -399, -409, -420, -431, -442, -453, --463, -474, -485, -496, -507, -517, -528, -539, -550, -561, -571, --582, -593, -604, -615, -625, -636, -647, -658, -669, -679, -690, --701, -712, -723, -733, -744, -755, -766, -777, -787, -798, -809, --820, -831, -841, -852, -863, -874, -885, -895, -906, -917, -928, --939, -949, -960, -971, -982, -993, -1003, -1014, -1025, -1036, -1047, --1057, -1068, -1079, -1090, -1101, -1111, -1122, -1133, -1144, -1155, --1165, -1176, -1187, -1198, -1209, -1219, -1230, -1241, -1252, -1263, --1273, -1284, -1295, -1306, -1317, -1327, -1338, -1349, -1360, -1371, --1381, -1392, -1403, -1414, -1425, -1435, -1446, -1457, -1468, -1479, --1489, -1500, -1511, -1522, -1533, -1543, -1554, -1565, -1576, -1587, --1597, -1608, -1619, -1630, -1641, -1651, -1662, -1673, -1684, -1694, --1705, -1716, -1727, -1738, -1748, -1759, -1770, -1781, -1792, -1802, --1813, -1824, -1835, -1846, -1856, -1867, -1878, -1889, -1900, -1910, --1921, -1932, -1943, -1954, -1964, -1975, -1986, -1997, -2008, -2018, --2029, -2040, -2051, -2062, -2072, -2083, -2094, -2105, -2116, -2126, --2137, -2148, -2159, -2170, -2180, -2191, -2202, -2213, -2224, -2234, --2245, -2256, -2267, -2278, -2288, -2299, -2310, -2321, -2332, -2342, --2353, -2364, -2375, -2386, -2396, -2407, -2418, -2429, -2440, -2450, --2461, -2472, -2483, -2494, -2504, -2515, -2526, -2537, -2548, -2558, --2569, -2580, -2591, -2602, -2612, -2623, -2634, -2645, -2656, -2666, --2677, -2688, -2699, -2710, -2720, -2731, -2742, -2753 }; - -static INT16 Cb_G[] = { 0, -20, -41, -63, -84, -105, -126, -147, -169, --190, -211, -232, -253, -275, -296, -317, -338, -359, -381, -402, --423, -444, -465, -487, -508, -529, -550, -571, -593, -614, -635, --656, -677, -699, -720, -741, -762, -783, -805, -826, -847, -868, --889, -911, -932, -953, -974, -995, -1017, -1038, -1059, -1080, -1101, --1123, -1144, -1165, -1186, -1207, -1229, -1250, -1271, -1292, -1313, --1335, -1356, -1377, -1398, -1419, -1441, -1462, -1483, -1504, -1525, --1547, -1568, -1589, -1610, -1631, -1653, -1674, -1695, -1716, -1737, --1759, -1780, -1801, -1822, -1843, -1865, -1886, -1907, -1928, -1949, --1971, -1992, -2013, -2034, -2055, -2077, -2098, -2119, -2140, -2161, --2183, -2204, -2225, -2246, -2267, -2289, -2310, -2331, -2352, -2373, --2395, -2416, -2437, -2458, -2479, -2501, -2522, -2543, -2564, -2585, --2607, -2628, -2649, -2670, -2691, -2713, -2734, -2755, -2776, -2797, --2819, -2840, -2861, -2882, -2903, -2925, -2946, -2967, -2988, -3009, --3031, -3052, -3073, -3094, -3115, -3137, -3158, -3179, -3200, -3221, --3243, -3264, -3285, -3306, -3328, -3349, -3370, -3391, -3412, -3434, --3455, -3476, -3497, -3518, -3540, -3561, -3582, -3603, -3624, -3646, --3667, -3688, -3709, -3730, -3752, -3773, -3794, -3815, -3836, -3858, --3879, -3900, -3921, -3942, -3964, -3985, -4006, -4027, -4048, -4070, --4091, -4112, -4133, -4154, -4176, -4197, -4218, -4239, -4260, -4282, --4303, -4324, -4345, -4366, -4388, -4409, -4430, -4451, -4472, -4494, --4515, -4536, -4557, -4578, -4600, -4621, -4642, -4663, -4684, -4706, --4727, -4748, -4769, -4790, -4812, -4833, -4854, -4875, -4896, -4918, --4939, -4960, -4981, -5002, -5024, -5045, -5066, -5087, -5108, -5130, --5151, -5172, -5193, -5214, -5236, -5257, -5278, -5299, -5320, -5342, --5363, -5384, -5405 }; - -static INT16 Cb_B[] = { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, -320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, -768, 800, 832, 864, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, -1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, -1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, -1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176, 2208, -2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, 2528, 2560, -2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, 2912, -2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, -3296, 3328, 3360, 3392, 3424, 3456, 3488, 3520, 3552, 3584, 3616, -3648, 3680, 3712, 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968, -4000, 4032, 4064, 4096, 4128, 4160, 4192, 4224, 4256, 4288, 4320, -4352, 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608, 4640, 4672, -4704, 4736, 4768, 4800, 4832, 4864, 4896, 4928, 4960, 4992, 5024, -5056, 5088, 5120, 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376, -5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632, 5664, 5696, 5728, -5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, -6112, 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, -6464, 6496, 6528, 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784, -6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040, 7072, 7104, 7136, -7168, 7200, 7232, 7264, 7296, 7328, 7360, 7392, 7424, 7456, 7488, -7520, 7552, 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808, 7840, -7872, 7904, 7936, 7968, 8000, 8032, 8064, 8096, 8128, 8160 }; - -#define Cr_R Cb_B - -static INT16 Cr_G[] = { 0, -26, -53, -79, -106, -133, -160, -187, --213, -240, -267, -294, -321, -347, -374, -401, -428, -455, -481, --508, -535, -562, -589, -615, -642, -669, -696, -722, -749, -776, --803, -830, -856, -883, -910, -937, -964, -990, -1017, -1044, -1071, --1098, -1124, -1151, -1178, -1205, -1232, -1258, -1285, -1312, -1339, --1366, -1392, -1419, -1446, -1473, -1500, -1526, -1553, -1580, -1607, --1634, -1660, -1687, -1714, -1741, -1768, -1794, -1821, -1848, -1875, --1902, -1928, -1955, -1982, -2009, -2036, -2062, -2089, -2116, -2143, --2169, -2196, -2223, -2250, -2277, -2303, -2330, -2357, -2384, -2411, --2437, -2464, -2491, -2518, -2545, -2571, -2598, -2625, -2652, -2679, --2705, -2732, -2759, -2786, -2813, -2839, -2866, -2893, -2920, -2947, --2973, -3000, -3027, -3054, -3081, -3107, -3134, -3161, -3188, -3215, --3241, -3268, -3295, -3322, -3349, -3375, -3402, -3429, -3456, -3483, --3509, -3536, -3563, -3590, -3616, -3643, -3670, -3697, -3724, -3750, --3777, -3804, -3831, -3858, -3884, -3911, -3938, -3965, -3992, -4018, --4045, -4072, -4099, -4126, -4152, -4179, -4206, -4233, -4260, -4286, --4313, -4340, -4367, -4394, -4420, -4447, -4474, -4501, -4528, -4554, --4581, -4608, -4635, -4662, -4688, -4715, -4742, -4769, -4796, -4822, --4849, -4876, -4903, -4929, -4956, -4983, -5010, -5037, -5063, -5090, --5117, -5144, -5171, -5197, -5224, -5251, -5278, -5305, -5331, -5358, --5385, -5412, -5439, -5465, -5492, -5519, -5546, -5573, -5599, -5626, --5653, -5680, -5707, -5733, -5760, -5787, -5814, -5841, -5867, -5894, --5921, -5948, -5975, -6001, -6028, -6055, -6082, -6109, -6135, -6162, --6189, -6216, -6243, -6269, -6296, -6323, -6350, -6376, -6403, -6430, --6457, -6484, -6510, -6537, -6564, -6591, -6618, -6644, -6671, -6698, --6725, -6752, -6778, -6805, -6832 }; - -static INT16 Cr_B[] = { 0, -4, -9, -15, -20, -25, -30, -35, -41, -46, --51, -56, -61, -67, -72, -77, -82, -87, -93, -98, -103, -108, -113, --119, -124, -129, -134, -140, -145, -150, -155, -160, -166, -171, --176, -181, -186, -192, -197, -202, -207, -212, -218, -223, -228, --233, -238, -244, -249, -254, -259, -264, -270, -275, -280, -285, --290, -296, -301, -306, -311, -316, -322, -327, -332, -337, -342, --348, -353, -358, -363, -368, -374, -379, -384, -389, -394, -400, --405, -410, -415, -421, -426, -431, -436, -441, -447, -452, -457, --462, -467, -473, -478, -483, -488, -493, -499, -504, -509, -514, --519, -525, -530, -535, -540, -545, -551, -556, -561, -566, -571, --577, -582, -587, -592, -597, -603, -608, -613, -618, -623, -629, --634, -639, -644, -649, -655, -660, -665, -670, -675, -681, -686, --691, -696, -702, -707, -712, -717, -722, -728, -733, -738, -743, --748, -754, -759, -764, -769, -774, -780, -785, -790, -795, -800, --806, -811, -816, -821, -826, -832, -837, -842, -847, -852, -858, --863, -868, -873, -878, -884, -889, -894, -899, -904, -910, -915, --920, -925, -930, -936, -941, -946, -951, -957, -962, -967, -972, --977, -983, -988, -993, -998, -1003, -1009, -1014, -1019, -1024, --1029, -1035, -1040, -1045, -1050, -1055, -1061, -1066, -1071, -1076, --1081, -1087, -1092, -1097, -1102, -1107, -1113, -1118, -1123, -1128, --1133, -1139, -1144, -1149, -1154, -1159, -1165, -1170, -1175, -1180, --1185, -1191, -1196, -1201, -1206, -1211, -1217, -1222, -1227, -1232, --1238, -1243, -1248, -1253, -1258, -1264, -1269, -1274, -1279, -1284, --1290, -1295, -1300, -1305, -1310, -1316, -1321, -1326 }; - -static INT16 R_Cr[] = { -11484, -11394, -11305, -11215, -11125, --11036, -10946, -10856, -10766, -10677, -10587, -10497, -10407, --10318, -10228, -10138, -10049, -9959, -9869, -9779, -9690, -9600, --9510, -9420, -9331, -9241, -9151, -9062, -8972, -8882, -8792, -8703, --8613, -8523, -8433, -8344, -8254, -8164, -8075, -7985, -7895, -7805, --7716, -7626, -7536, -7446, -7357, -7267, -7177, -7088, -6998, -6908, --6818, -6729, -6639, -6549, -6459, -6370, -6280, -6190, -6101, -6011, --5921, -5831, -5742, -5652, -5562, -5472, -5383, -5293, -5203, -5113, --5024, -4934, -4844, -4755, -4665, -4575, -4485, -4396, -4306, -4216, --4126, -4037, -3947, -3857, -3768, -3678, -3588, -3498, -3409, -3319, --3229, -3139, -3050, -2960, -2870, -2781, -2691, -2601, -2511, -2422, --2332, -2242, -2152, -2063, -1973, -1883, -1794, -1704, -1614, -1524, --1435, -1345, -1255, -1165, -1076, -986, -896, -807, -717, -627, -537, --448, -358, -268, -178, -89, 0, 90, 179, 269, 359, 449, 538, 628, 718, -808, 897, 987, 1077, 1166, 1256, 1346, 1436, 1525, 1615, 1705, 1795, -1884, 1974, 2064, 2153, 2243, 2333, 2423, 2512, 2602, 2692, 2782, -2871, 2961, 3051, 3140, 3230, 3320, 3410, 3499, 3589, 3679, 3769, -3858, 3948, 4038, 4127, 4217, 4307, 4397, 4486, 4576, 4666, 4756, -4845, 4935, 5025, 5114, 5204, 5294, 5384, 5473, 5563, 5653, 5743, -5832, 5922, 6012, 6102, 6191, 6281, 6371, 6460, 6550, 6640, 6730, -6819, 6909, 6999, 7089, 7178, 7268, 7358, 7447, 7537, 7627, 7717, -7806, 7896, 7986, 8076, 8165, 8255, 8345, 8434, 8524, 8614, 8704, -8793, 8883, 8973, 9063, 9152, 9242, 9332, 9421, 9511, 9601, 9691, -9780, 9870, 9960, 10050, 10139, 10229, 10319, 10408, 10498, 10588, -10678, 10767, 10857, 10947, 11037, 11126, 11216, 11306, 11395 }; - -static INT16 G_Cb[] = { 2819, 2797, 2775, 2753, 2731, 2709, 2687, -2665, 2643, 2621, 2599, 2577, 2555, 2533, 2511, 2489, 2467, 2445, -2423, 2401, 2379, 2357, 2335, 2313, 2291, 2269, 2247, 2225, 2202, -2180, 2158, 2136, 2114, 2092, 2070, 2048, 2026, 2004, 1982, 1960, -1938, 1916, 1894, 1872, 1850, 1828, 1806, 1784, 1762, 1740, 1718, -1696, 1674, 1652, 1630, 1608, 1586, 1564, 1542, 1520, 1498, 1476, -1454, 1432, 1410, 1388, 1366, 1344, 1321, 1299, 1277, 1255, 1233, -1211, 1189, 1167, 1145, 1123, 1101, 1079, 1057, 1035, 1013, 991, 969, -947, 925, 903, 881, 859, 837, 815, 793, 771, 749, 727, 705, 683, 661, -639, 617, 595, 573, 551, 529, 507, 485, 463, 440, 418, 396, 374, 352, -330, 308, 286, 264, 242, 220, 198, 176, 154, 132, 110, 88, 66, 44, 22, -0, -21, -43, -65, -87, -109, -131, -153, -175, -197, -219, -241, -263, --285, -307, -329, -351, -373, -395, -417, -439, -462, -484, -506, --528, -550, -572, -594, -616, -638, -660, -682, -704, -726, -748, --770, -792, -814, -836, -858, -880, -902, -924, -946, -968, -990, --1012, -1034, -1056, -1078, -1100, -1122, -1144, -1166, -1188, -1210, --1232, -1254, -1276, -1298, -1320, -1343, -1365, -1387, -1409, -1431, --1453, -1475, -1497, -1519, -1541, -1563, -1585, -1607, -1629, -1651, --1673, -1695, -1717, -1739, -1761, -1783, -1805, -1827, -1849, -1871, --1893, -1915, -1937, -1959, -1981, -2003, -2025, -2047, -2069, -2091, --2113, -2135, -2157, -2179, -2201, -2224, -2246, -2268, -2290, -2312, --2334, -2356, -2378, -2400, -2422, -2444, -2466, -2488, -2510, -2532, --2554, -2576, -2598, -2620, -2642, -2664, -2686, -2708, -2730, -2752, --2774, -2796 }; - -static INT16 G_Cr[] = { 5850, 5805, 5759, 5713, 5667, 5622, 5576, -5530, 5485, 5439, 5393, 5347, 5302, 5256, 5210, 5165, 5119, 5073, -5028, 4982, 4936, 4890, 4845, 4799, 4753, 4708, 4662, 4616, 4570, -4525, 4479, 4433, 4388, 4342, 4296, 4251, 4205, 4159, 4113, 4068, -4022, 3976, 3931, 3885, 3839, 3794, 3748, 3702, 3656, 3611, 3565, -3519, 3474, 3428, 3382, 3336, 3291, 3245, 3199, 3154, 3108, 3062, -3017, 2971, 2925, 2879, 2834, 2788, 2742, 2697, 2651, 2605, 2559, -2514, 2468, 2422, 2377, 2331, 2285, 2240, 2194, 2148, 2102, 2057, -2011, 1965, 1920, 1874, 1828, 1782, 1737, 1691, 1645, 1600, 1554, -1508, 1463, 1417, 1371, 1325, 1280, 1234, 1188, 1143, 1097, 1051, -1006, 960, 914, 868, 823, 777, 731, 686, 640, 594, 548, 503, 457, 411, -366, 320, 274, 229, 183, 137, 91, 46, 0, -45, -90, -136, -182, -228, --273, -319, -365, -410, -456, -502, -547, -593, -639, -685, -730, --776, -822, -867, -913, -959, -1005, -1050, -1096, -1142, -1187, --1233, -1279, -1324, -1370, -1416, -1462, -1507, -1553, -1599, -1644, --1690, -1736, -1781, -1827, -1873, -1919, -1964, -2010, -2056, -2101, --2147, -2193, -2239, -2284, -2330, -2376, -2421, -2467, -2513, -2558, --2604, -2650, -2696, -2741, -2787, -2833, -2878, -2924, -2970, -3016, --3061, -3107, -3153, -3198, -3244, -3290, -3335, -3381, -3427, -3473, --3518, -3564, -3610, -3655, -3701, -3747, -3793, -3838, -3884, -3930, --3975, -4021, -4067, -4112, -4158, -4204, -4250, -4295, -4341, -4387, --4432, -4478, -4524, -4569, -4615, -4661, -4707, -4752, -4798, -4844, --4889, -4935, -4981, -5027, -5072, -5118, -5164, -5209, -5255, -5301, --5346, -5392, -5438, -5484, -5529, -5575, -5621, -5666, -5712, -5758, --5804 }; - -static INT16 B_Cb[] = { -14515, -14402, -14288, -14175, -14062, --13948, -13835, -13721, -13608, -13495, -13381, -13268, -13154, --13041, -12928, -12814, -12701, -12587, -12474, -12360, -12247, --12134, -12020, -11907, -11793, -11680, -11567, -11453, -11340, --11226, -11113, -11000, -10886, -10773, -10659, -10546, -10433, --10319, -10206, -10092, -9979, -9865, -9752, -9639, -9525, -9412, --9298, -9185, -9072, -8958, -8845, -8731, -8618, -8505, -8391, -8278, --8164, -8051, -7938, -7824, -7711, -7597, -7484, -7371, -7257, -7144, --7030, -6917, -6803, -6690, -6577, -6463, -6350, -6236, -6123, -6010, --5896, -5783, -5669, -5556, -5443, -5329, -5216, -5102, -4989, -4876, --4762, -4649, -4535, -4422, -4309, -4195, -4082, -3968, -3855, -3741, --3628, -3515, -3401, -3288, -3174, -3061, -2948, -2834, -2721, -2607, --2494, -2381, -2267, -2154, -2040, -1927, -1814, -1700, -1587, -1473, --1360, -1246, -1133, -1020, -906, -793, -679, -566, -453, -339, -226, --112, 0, 113, 227, 340, 454, 567, 680, 794, 907, 1021, 1134, 1247, -1361, 1474, 1588, 1701, 1815, 1928, 2041, 2155, 2268, 2382, 2495, -2608, 2722, 2835, 2949, 3062, 3175, 3289, 3402, 3516, 3629, 3742, -3856, 3969, 4083, 4196, 4310, 4423, 4536, 4650, 4763, 4877, 4990, -5103, 5217, 5330, 5444, 5557, 5670, 5784, 5897, 6011, 6124, 6237, -6351, 6464, 6578, 6691, 6804, 6918, 7031, 7145, 7258, 7372, 7485, -7598, 7712, 7825, 7939, 8052, 8165, 8279, 8392, 8506, 8619, 8732, -8846, 8959, 9073, 9186, 9299, 9413, 9526, 9640, 9753, 9866, 9980, -10093, 10207, 10320, 10434, 10547, 10660, 10774, 10887, 11001, 11114, -11227, 11341, 11454, 11568, 11681, 11794, 11908, 12021, 12135, 12248, -12361, 12475, 12588, 12702, 12815, 12929, 13042, 13155, 13269, 13382, -13496, 13609, 13722, 13836, 13949, 14063, 14176, 14289, 14403 }; - - -void -ImagingConvertRGB2YCbCr(UINT8* out, const UINT8* in, int pixels) -{ - int x; - UINT8 a; - int r, g, b; - int y, cr, cb; - - for (x = 0; x < pixels; x++, in +=4, out += 4) { - - r = in[0]; - g = in[1]; - b = in[2]; - a = in[3]; - - y = (Y_R[r] + Y_G[g] + Y_B[b]) >> SCALE; - cb = ((Cb_R[r] + Cb_G[g] + Cb_B[b]) >> SCALE) + 128; - cr = ((Cr_R[r] + Cr_G[g] + Cr_B[b]) >> SCALE) + 128; - - out[0] = (UINT8) y; - out[1] = (UINT8) cb; - out[2] = (UINT8) cr; - out[3] = a; - } -} - -void -ImagingConvertYCbCr2RGB(UINT8* out, const UINT8* in, int pixels) -{ - int x; - UINT8 a; - int r, g, b; - int y, cr, cb; - - for (x = 0; x < pixels; x++, in += 4, out += 4) { - - y = in[0]; - cb = in[1]; - cr = in[2]; - a = in[3]; - - r = y + (( R_Cr[cr]) >> SCALE); - g = y + ((G_Cb[cb] + G_Cr[cr]) >> SCALE); - b = y + ((B_Cb[cb] ) >> SCALE); - - out[0] = (r <= 0) ? 0 : (r >= 255) ? 255 : r; - out[1] = (g <= 0) ? 0 : (g >= 255) ? 255 : g; - out[2] = (b <= 0) ? 0 : (b >= 255) ? 255 : b; - out[3] = a; - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c deleted file mode 100755 index 4a1fc248974..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Copy.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * copy image - * - * history: - * 95-11-26 fl Moved from Imaging.c - * 97-05-12 fl Added ImagingCopy2 - * 97-08-28 fl Allow imOut == NULL in ImagingCopy2 - * - * Copyright (c) Fredrik Lundh 1995-97. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - - -static Imaging -_copy(Imaging imOut, Imaging imIn) -{ - ImagingSectionCookie cookie; - int y; - - if (!imIn) - return (Imaging) ImagingError_ValueError(NULL); - - imOut = ImagingNew2(imIn->mode, imOut, imIn); - if (!imOut) - return NULL; - - ImagingCopyInfo(imOut, imIn); - - ImagingSectionEnter(&cookie); - if (imIn->block != NULL && imOut->block != NULL) - memcpy(imOut->block, imIn->block, imIn->ysize * imIn->linesize); - else - for (y = 0; y < imIn->ysize; y++) - memcpy(imOut->image[y], imIn->image[y], imIn->linesize); - ImagingSectionLeave(&cookie); - - return imOut; -} - -Imaging -ImagingCopy(Imaging imIn) -{ - return _copy(NULL, imIn); -} - -Imaging -ImagingCopy2(Imaging imOut, Imaging imIn) -{ - return _copy(imOut, imIn); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c deleted file mode 100755 index d83d0fbacb0..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crc32.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * calculate ISO 3307 checksum - * - * history: - * 96-12-10 fl: Created (based on example in the PNG spec) - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -/* Precalculated CRC values (created by makecrctable.py) */ - -static UINT32 crc32table[] = { 0x0, 0x77073096L, 0xEE0E612CL, -0x990951BAL, 0x76DC419L, 0x706AF48FL, 0xE963A535L, 0x9E6495A3L, -0xEDB8832L, 0x79DCB8A4L, 0xE0D5E91EL, 0x97D2D988L, 0x9B64C2BL, -0x7EB17CBDL, 0xE7B82D07L, 0x90BF1D91L, 0x1DB71064L, 0x6AB020F2L, -0xF3B97148L, 0x84BE41DEL, 0x1ADAD47DL, 0x6DDDE4EBL, 0xF4D4B551L, -0x83D385C7L, 0x136C9856L, 0x646BA8C0L, 0xFD62F97AL, 0x8A65C9ECL, -0x14015C4FL, 0x63066CD9L, 0xFA0F3D63L, 0x8D080DF5L, 0x3B6E20C8L, -0x4C69105EL, 0xD56041E4L, 0xA2677172L, 0x3C03E4D1L, 0x4B04D447L, -0xD20D85FDL, 0xA50AB56BL, 0x35B5A8FAL, 0x42B2986CL, 0xDBBBC9D6L, -0xACBCF940L, 0x32D86CE3L, 0x45DF5C75L, 0xDCD60DCFL, 0xABD13D59L, -0x26D930ACL, 0x51DE003AL, 0xC8D75180L, 0xBFD06116L, 0x21B4F4B5L, -0x56B3C423L, 0xCFBA9599L, 0xB8BDA50FL, 0x2802B89EL, 0x5F058808L, -0xC60CD9B2L, 0xB10BE924L, 0x2F6F7C87L, 0x58684C11L, 0xC1611DABL, -0xB6662D3DL, 0x76DC4190L, 0x1DB7106L, 0x98D220BCL, 0xEFD5102AL, -0x71B18589L, 0x6B6B51FL, 0x9FBFE4A5L, 0xE8B8D433L, 0x7807C9A2L, -0xF00F934L, 0x9609A88EL, 0xE10E9818L, 0x7F6A0DBBL, 0x86D3D2DL, -0x91646C97L, 0xE6635C01L, 0x6B6B51F4L, 0x1C6C6162L, 0x856530D8L, -0xF262004EL, 0x6C0695EDL, 0x1B01A57BL, 0x8208F4C1L, 0xF50FC457L, -0x65B0D9C6L, 0x12B7E950L, 0x8BBEB8EAL, 0xFCB9887CL, 0x62DD1DDFL, -0x15DA2D49L, 0x8CD37CF3L, 0xFBD44C65L, 0x4DB26158L, 0x3AB551CEL, -0xA3BC0074L, 0xD4BB30E2L, 0x4ADFA541L, 0x3DD895D7L, 0xA4D1C46DL, -0xD3D6F4FBL, 0x4369E96AL, 0x346ED9FCL, 0xAD678846L, 0xDA60B8D0L, -0x44042D73L, 0x33031DE5L, 0xAA0A4C5FL, 0xDD0D7CC9L, 0x5005713CL, -0x270241AAL, 0xBE0B1010L, 0xC90C2086L, 0x5768B525L, 0x206F85B3L, -0xB966D409L, 0xCE61E49FL, 0x5EDEF90EL, 0x29D9C998L, 0xB0D09822L, -0xC7D7A8B4L, 0x59B33D17L, 0x2EB40D81L, 0xB7BD5C3BL, 0xC0BA6CADL, -0xEDB88320L, 0x9ABFB3B6L, 0x3B6E20CL, 0x74B1D29AL, 0xEAD54739L, -0x9DD277AFL, 0x4DB2615L, 0x73DC1683L, 0xE3630B12L, 0x94643B84L, -0xD6D6A3EL, 0x7A6A5AA8L, 0xE40ECF0BL, 0x9309FF9DL, 0xA00AE27L, -0x7D079EB1L, 0xF00F9344L, 0x8708A3D2L, 0x1E01F268L, 0x6906C2FEL, -0xF762575DL, 0x806567CBL, 0x196C3671L, 0x6E6B06E7L, 0xFED41B76L, -0x89D32BE0L, 0x10DA7A5AL, 0x67DD4ACCL, 0xF9B9DF6FL, 0x8EBEEFF9L, -0x17B7BE43L, 0x60B08ED5L, 0xD6D6A3E8L, 0xA1D1937EL, 0x38D8C2C4L, -0x4FDFF252L, 0xD1BB67F1L, 0xA6BC5767L, 0x3FB506DDL, 0x48B2364BL, -0xD80D2BDAL, 0xAF0A1B4CL, 0x36034AF6L, 0x41047A60L, 0xDF60EFC3L, -0xA867DF55L, 0x316E8EEFL, 0x4669BE79L, 0xCB61B38CL, 0xBC66831AL, -0x256FD2A0L, 0x5268E236L, 0xCC0C7795L, 0xBB0B4703L, 0x220216B9L, -0x5505262FL, 0xC5BA3BBEL, 0xB2BD0B28L, 0x2BB45A92L, 0x5CB36A04L, -0xC2D7FFA7L, 0xB5D0CF31L, 0x2CD99E8BL, 0x5BDEAE1DL, 0x9B64C2B0L, -0xEC63F226L, 0x756AA39CL, 0x26D930AL, 0x9C0906A9L, 0xEB0E363FL, -0x72076785L, 0x5005713L, 0x95BF4A82L, 0xE2B87A14L, 0x7BB12BAEL, -0xCB61B38L, 0x92D28E9BL, 0xE5D5BE0DL, 0x7CDCEFB7L, 0xBDBDF21L, -0x86D3D2D4L, 0xF1D4E242L, 0x68DDB3F8L, 0x1FDA836EL, 0x81BE16CDL, -0xF6B9265BL, 0x6FB077E1L, 0x18B74777L, 0x88085AE6L, 0xFF0F6A70L, -0x66063BCAL, 0x11010B5CL, 0x8F659EFFL, 0xF862AE69L, 0x616BFFD3L, -0x166CCF45L, 0xA00AE278L, 0xD70DD2EEL, 0x4E048354L, 0x3903B3C2L, -0xA7672661L, 0xD06016F7L, 0x4969474DL, 0x3E6E77DBL, 0xAED16A4AL, -0xD9D65ADCL, 0x40DF0B66L, 0x37D83BF0L, 0xA9BCAE53L, 0xDEBB9EC5L, -0x47B2CF7FL, 0x30B5FFE9L, 0xBDBDF21CL, 0xCABAC28AL, 0x53B39330L, -0x24B4A3A6L, 0xBAD03605L, 0xCDD70693L, 0x54DE5729L, 0x23D967BFL, -0xB3667A2EL, 0xC4614AB8L, 0x5D681B02L, 0x2A6F2B94L, 0xB40BBE37L, -0xC30C8EA1L, 0x5A05DF1BL, 0x2D02EF8DL }; - - -UINT32 -ImagingCRC32(UINT32 crc, UINT8* buffer, int bytes) -{ - int i; - - crc ^= 0xFFFFFFFFL; - - for (i = 0; i < bytes; i++) - crc = crc32table[(UINT8) crc ^ buffer[i]] ^ (crc >> 8); - - return crc ^ 0xFFFFFFFFL; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c deleted file mode 100755 index 5acacd4c47c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Crop.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * cut region from image - * - * history: - * 95-11-27 fl Created - * 98-07-10 fl Fixed "null result" error - * 99-02-05 fl Rewritten to use Paste primitive - * - * Copyright (c) Secret Labs AB 1997-99. - * Copyright (c) Fredrik Lundh 1995. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -Imaging -ImagingCrop(Imaging imIn, int sx0, int sy0, int sx1, int sy1) -{ - Imaging imOut; - int xsize, ysize; - int dx0, dy0, dx1, dy1; - INT32 zero = 0; - - if (!imIn) - return (Imaging) ImagingError_ModeError(); - - xsize = sx1 - sx0; - if (xsize < 0) - xsize = 0; - ysize = sy1 - sy0; - if (ysize < 0) - ysize = 0; - - imOut = ImagingNew(imIn->mode, xsize, ysize); - if (!imOut) - return NULL; - - ImagingCopyInfo(imOut, imIn); - - if (sx0 < 0 || sy0 < 0 || sx1 > imIn->xsize || sy1 > imIn->ysize) - (void) ImagingFill(imOut, &zero); - - dx0 = -sx0; - dy0 = -sy0; - dx1 = imIn->xsize - sx0; - dy1 = imIn->ysize - sy0; - - /* paste the source image on top of the output image!!! */ - if (ImagingPaste(imOut, imIn, NULL, dx0, dy0, dx1, dy1) < 0) { - ImagingDelete(imOut); - return NULL; - } - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c deleted file mode 100755 index 36dc24ef3ac..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Dib.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * imaging display object for Windows - * - * history: - * 1996-05-12 fl Created - * 1996-05-17 fl Up and running - * 1996-05-21 fl Added palette stuff - * 1996-05-26 fl Added query palette and mode inquery - * 1997-09-21 fl Added draw primitive - * 1998-01-20 fl Use StretchDIBits instead of StretchBlt - * 1998-12-30 fl Plugged a resource leak in DeleteDIB (from Roger Burnham) - * - * Copyright (c) Secret Labs AB 1997-2001. - * Copyright (c) Fredrik Lundh 1996. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#ifdef WIN32 - -#include "ImDib.h" - - -char* -ImagingGetModeDIB(int size_out[2]) -{ - /* Get device characteristics */ - - HDC dc; - char* mode; - - dc = CreateCompatibleDC(NULL); - - mode = "P"; - if (!(GetDeviceCaps(dc, RASTERCAPS) & RC_PALETTE)) { - mode = "RGB"; - if (GetDeviceCaps(dc, BITSPIXEL) == 1) - mode = "1"; - } - - if (size_out) { - size_out[0] = GetDeviceCaps(dc, HORZRES); - size_out[1] = GetDeviceCaps(dc, VERTRES); - } - - DeleteDC(dc); - - return mode; -} - - -ImagingDIB -ImagingNewDIB(const char *mode, int xsize, int ysize) -{ - /* Create a Windows bitmap */ - - ImagingDIB dib; - RGBQUAD *palette; - int i; - - /* Check mode */ - if (strcmp(mode, "1") != 0 && strcmp(mode, "L") != 0 && - strcmp(mode, "RGB") != 0) - return (ImagingDIB) ImagingError_ModeError(); - - /* Create DIB context and info header */ - dib = (ImagingDIB) malloc(sizeof(*dib)); - if (!dib) - return (ImagingDIB) ImagingError_MemoryError(); - dib->info = (BITMAPINFO*) malloc(sizeof(BITMAPINFOHEADER) + - 256 * sizeof(RGBQUAD)); - if (!dib->info) { - free(dib); - return (ImagingDIB) ImagingError_MemoryError(); - } - - memset(dib->info, 0, sizeof(BITMAPINFOHEADER)); - dib->info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - dib->info->bmiHeader.biWidth = xsize; - dib->info->bmiHeader.biHeight = ysize; - dib->info->bmiHeader.biPlanes = 1; - dib->info->bmiHeader.biBitCount = strlen(mode)*8; - dib->info->bmiHeader.biCompression = BI_RGB; - - /* Create DIB */ - dib->dc = CreateCompatibleDC(NULL); - if (!dib->dc) { - free(dib->info); - free(dib); - return (ImagingDIB) ImagingError_MemoryError(); - } - - dib->bitmap = CreateDIBSection(dib->dc, dib->info, DIB_RGB_COLORS, - &dib->bits, NULL, 0); - if (!dib->bitmap) { - free(dib->info); - free(dib); - return (ImagingDIB) ImagingError_MemoryError(); - } - - strcpy(dib->mode, mode); - dib->xsize = xsize; - dib->ysize = ysize; - - dib->pixelsize = strlen(mode); - dib->linesize = (xsize * dib->pixelsize + 3) & -4; - - if (dib->pixelsize == 1) - dib->pack = dib->unpack = (ImagingShuffler) memcpy; - else { - dib->pack = ImagingPackBGR; - dib->unpack = ImagingPackBGR; - } - - /* Bind the DIB to the device context */ - dib->old_bitmap = SelectObject(dib->dc, dib->bitmap); - - palette = dib->info->bmiColors; - - /* Bind a palette to it as well (only required for 8-bit DIBs) */ - if (dib->pixelsize == 1) { - for (i = 0; i < 256; i++) { - palette[i].rgbRed = - palette[i].rgbGreen = - palette[i].rgbBlue = i; - palette[i].rgbReserved = 0; - } - SetDIBColorTable(dib->dc, 0, 256, palette); - } - - /* Create an associated palette (for 8-bit displays only) */ - if (strcmp(ImagingGetModeDIB(NULL), "P") == 0) { - - char palbuf[sizeof(LOGPALETTE)+256*sizeof(PALETTEENTRY)]; - LPLOGPALETTE pal = (LPLOGPALETTE) palbuf; - int i, r, g, b; - - /* Load system palette */ - pal->palVersion = 0x300; - pal->palNumEntries = 256; - GetSystemPaletteEntries(dib->dc, 0, 256, pal->palPalEntry); - - if (strcmp(mode, "L") == 0) { - - /* Greyscale DIB. Fill all 236 slots with a greyscale ramp - * (this is usually overkill on Windows since VGA only offers - * 6 bits greyscale resolution). Ignore the slots already - * allocated by Windows */ - - i = 10; - for (r = 0; r < 236; r++) { - pal->palPalEntry[i].peRed = - pal->palPalEntry[i].peGreen = - pal->palPalEntry[i].peBlue = i; - i++; - } - - dib->palette = CreatePalette(pal); - - } else if (strcmp(mode, "RGB") == 0) { - -#ifdef CUBE216 - - /* Colour DIB. Create a 6x6x6 colour cube (216 entries) and - * add 20 extra greylevels for best result with greyscale - * images. */ - - i = 10; - for (r = 0; r < 256; r += 51) - for (g = 0; g < 256; g += 51) - for (b = 0; b < 256; b += 51) { - pal->palPalEntry[i].peRed = r; - pal->palPalEntry[i].peGreen = g; - pal->palPalEntry[i].peBlue = b; - i++; - } - for (r = 1; r < 22-1; r++) { - /* Black and white are already provided by the cube. */ - pal->palPalEntry[i].peRed = - pal->palPalEntry[i].peGreen = - pal->palPalEntry[i].peBlue = r * 255 / (22-1); - i++; - } - -#else - - /* Colour DIB. Alternate palette. */ - - i = 10; - for (r = 0; r < 256; r += 37) - for (g = 0; g < 256; g += 32) - for (b = 0; b < 256; b += 64) { - pal->palPalEntry[i].peRed = r; - pal->palPalEntry[i].peGreen = g; - pal->palPalEntry[i].peBlue = b; - i++; - } - -#endif - -#if 0 - { - /* DEBUG: dump palette to file */ - FILE *err = fopen("dib.pal", "w"); - for (i = 0; i < 256; i++) - fprintf(err, "%d: %d/%d/%d\n", i, - pal->palPalEntry[i].peRed, - pal->palPalEntry[i].peGreen, - pal->palPalEntry[i].peBlue); - fclose(err); - } -#endif - - dib->palette = CreatePalette(pal); - - } - - } - - return dib; -} - -void -ImagingPasteDIB(ImagingDIB dib, Imaging im, int xy[4]) -{ - /* Paste image data into a bitmap */ - - /* FIXME: check size! */ - - int y; - for (y = 0; y < im->ysize; y++) - dib->pack(dib->bits + dib->linesize*(dib->ysize-(xy[1]+y)-1) + - xy[0]*dib->pixelsize, im->image[y], im->xsize); - -} - -void -ImagingExposeDIB(ImagingDIB dib, int dc) -{ - /* Copy bitmap to display */ - - if (dib->palette != 0) - SelectPalette((HDC) dc, dib->palette, FALSE); - BitBlt((HDC) dc, 0, 0, dib->xsize, dib->ysize, dib->dc, 0, 0, SRCCOPY); -} - -void -ImagingDrawDIB(ImagingDIB dib, int dc, int dst[4], int src[4]) -{ - /* Copy bitmap to printer/display */ - - if (GetDeviceCaps((HDC) dc, RASTERCAPS) & RC_STRETCHDIB) { - /* stretchdib (printers) */ - StretchDIBits((HDC) dc, dst[0], dst[1], dst[2]-dst[0], dst[3]-dst[1], - src[0], src[1], src[2]-src[0], src[3]-src[1], dib->bits, - dib->info, DIB_RGB_COLORS, SRCCOPY); - } else { - /* stretchblt (displays) */ - if (dib->palette != 0) - SelectPalette((HDC) dc, dib->palette, FALSE); - StretchBlt((HDC) dc, dst[0], dst[1], dst[2]-dst[0], dst[3]-dst[1], - dib->dc, src[0], src[1], src[2]-src[0], src[3]-src[1], - SRCCOPY); - } -} - -int -ImagingQueryPaletteDIB(ImagingDIB dib, int dc) -{ - /* Install bitmap palette */ - - int n; - - if (dib->palette != 0) { - - /* Realize associated palette */ - HPALETTE now = SelectPalette((HDC) dc, dib->palette, FALSE); - n = RealizePalette((HDC) dc); - - /* Restore palette */ - SelectPalette((HDC) dc, now, FALSE); - - } else - n = 0; - - return n; /* number of colours that was changed */ -} - -void -ImagingDeleteDIB(ImagingDIB dib) -{ - /* Clean up */ - - if (dib->palette) - DeleteObject(dib->palette); - if (dib->bitmap) { - SelectObject(dib->dc, dib->old_bitmap); - DeleteObject(dib->bitmap); - } - if (dib->dc) - DeleteDC(dib->dc); - free(dib->info); -} - -#endif /* WIN32 */ diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c deleted file mode 100755 index bdf17e18aa6..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Draw.c +++ /dev/null @@ -1,1167 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * a simple drawing package for the Imaging library - * - * history: - * 1996-04-13 fl Created. - * 1996-04-30 fl Added transforms and polygon support. - * 1996-08-12 fl Added filled polygons. - * 1996-11-05 fl Fixed float/int confusion in polygon filler - * 1997-07-04 fl Support 32-bit images (C++ would have been nice) - * 1998-09-09 fl Eliminated qsort casts; improved rectangle clipping - * 1998-09-10 fl Fixed fill rectangle to include lower edge (!) - * 1998-12-29 fl Added arc, chord, and pieslice primitives - * 1999-01-10 fl Added some level 2 ("arrow") stuff (experimental) - * 1999-02-06 fl Added bitmap primitive - * 1999-07-26 fl Eliminated a compiler warning - * 1999-07-31 fl Pass ink as void* instead of int - * 2002-12-10 fl Added experimental RGBA-on-RGB drawing - * 2004-09-04 fl Support simple wide lines (no joins) - * 2005-05-25 fl Fixed line width calculation - * - * Copyright (c) 1996-2006 by Fredrik Lundh - * Copyright (c) 1997-2006 by Secret Labs AB. - * - * See the README file for information on usage and redistribution. - */ - -/* FIXME: support fill/outline attribute for all filled shapes */ -/* FIXME: support zero-winding fill */ -/* FIXME: add drawing context, support affine transforms */ -/* FIXME: support clip window (and mask?) */ - -#include "Imaging.h" - -#include - -#define CEIL(v) (int) ceil(v) -#define FLOOR(v) ((v) >= 0.0 ? (int) (v) : (int) floor(v)) - -#define INK8(ink) (*(UINT8*)ink) -#define INK32(ink) (*(INT32*)ink) - -/* like (a * b + 127) / 255), but much faster on most platforms */ -#define MULDIV255(a, b, tmp)\ - (tmp = (a) * (b) + 128, ((((tmp) >> 8) + (tmp)) >> 8)) - -#define BLEND(mask, in1, in2, tmp1, tmp2)\ - (MULDIV255(in1, 255 - mask, tmp1) + MULDIV255(in2, mask, tmp2)) - -/* -------------------------------------------------------------------- */ -/* Primitives */ -/* -------------------------------------------------------------------- */ - -typedef struct { - /* edge descriptor for polygon engine */ - int d; - int x0, y0; - int xmin, ymin, xmax, ymax; - float dx; -} Edge; - -static inline void -point8(Imaging im, int x, int y, int ink) -{ - if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize) - im->image8[y][x] = (UINT8) ink; -} - -static inline void -point32(Imaging im, int x, int y, int ink) -{ - if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize) - im->image32[y][x] = ink; -} - -static inline void -point32rgba(Imaging im, int x, int y, int ink) -{ - unsigned int tmp1, tmp2; - - if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize) { - UINT8* out = (UINT8*) im->image[y]+x*4; - UINT8* in = (UINT8*) &ink; - out[0] = BLEND(in[3], out[0], in[0], tmp1, tmp2); - out[1] = BLEND(in[3], out[1], in[1], tmp1, tmp2); - out[2] = BLEND(in[3], out[2], in[2], tmp1, tmp2); - } -} - -static inline void -hline8(Imaging im, int x0, int y0, int x1, int ink) -{ - int tmp; - - if (y0 >= 0 && y0 < im->ysize) { - if (x0 > x1) - tmp = x0, x0 = x1, x1 = tmp; - if (x0 < 0) - x0 = 0; - else if (x0 >= im->xsize) - return; - if (x1 < 0) - return; - else if (x1 >= im->xsize) - x1 = im->xsize-1; - if (x0 <= x1) - memset(im->image8[y0] + x0, (UINT8) ink, x1 - x0 + 1); - } -} - -static inline void -hline32(Imaging im, int x0, int y0, int x1, int ink) -{ - int tmp; - INT32* p; - - if (y0 >= 0 && y0 < im->ysize) { - if (x0 > x1) - tmp = x0, x0 = x1, x1 = tmp; - if (x0 < 0) - x0 = 0; - else if (x0 >= im->xsize) - return; - if (x1 < 0) - return; - else if (x1 >= im->xsize) - x1 = im->xsize-1; - p = im->image32[y0]; - while (x0 <= x1) - p[x0++] = ink; - } -} - -static inline void -hline32rgba(Imaging im, int x0, int y0, int x1, int ink) -{ - int tmp; - unsigned int tmp1, tmp2; - - if (y0 >= 0 && y0 < im->ysize) { - if (x0 > x1) - tmp = x0, x0 = x1, x1 = tmp; - if (x0 < 0) - x0 = 0; - else if (x0 >= im->xsize) - return; - if (x1 < 0) - return; - else if (x1 >= im->xsize) - x1 = im->xsize-1; - if (x0 <= x1) { - UINT8* out = (UINT8*) im->image[y0]+x0*4; - UINT8* in = (UINT8*) &ink; - while (x0 <= x1) { - out[0] = BLEND(in[3], out[0], in[0], tmp1, tmp2); - out[1] = BLEND(in[3], out[1], in[1], tmp1, tmp2); - out[2] = BLEND(in[3], out[2], in[2], tmp1, tmp2); - x0++; out += 4; - } - } - } -} - -static inline void -line8(Imaging im, int x0, int y0, int x1, int y1, int ink) -{ - int i, n, e; - int dx, dy; - int xs, ys; - - /* normalize coordinates */ - dx = x1-x0; - if (dx < 0) - dx = -dx, xs = -1; - else - xs = 1; - dy = y1-y0; - if (dy < 0) - dy = -dy, ys = -1; - else - ys = 1; - - n = (dx > dy) ? dx : dy; - - if (dx == 0) - - /* vertical */ - for (i = 0; i < dy; i++) { - point8(im, x0, y0, ink); - y0 += ys; - } - - else if (dy == 0) - - /* horizontal */ - for (i = 0; i < dx; i++) { - point8(im, x0, y0, ink); - x0 += xs; - } - - else if (dx > dy) { - - /* bresenham, horizontal slope */ - n = dx; - dy += dy; - e = dy - dx; - dx += dx; - - for (i = 0; i < n; i++) { - point8(im, x0, y0, ink); - if (e >= 0) { - y0 += ys; - e -= dx; - } - e += dy; - x0 += xs; - } - - } else { - - /* bresenham, vertical slope */ - n = dy; - dx += dx; - e = dx - dy; - dy += dy; - - for (i = 0; i < n; i++) { - point8(im, x0, y0, ink); - if (e >= 0) { - x0 += xs; - e -= dy; - } - e += dx; - y0 += ys; - } - - } -} - -static inline void -line32(Imaging im, int x0, int y0, int x1, int y1, int ink) -{ - int i, n, e; - int dx, dy; - int xs, ys; - - /* normalize coordinates */ - dx = x1-x0; - if (dx < 0) - dx = -dx, xs = -1; - else - xs = 1; - dy = y1-y0; - if (dy < 0) - dy = -dy, ys = -1; - else - ys = 1; - - n = (dx > dy) ? dx : dy; - - if (dx == 0) - - /* vertical */ - for (i = 0; i < dy; i++) { - point32(im, x0, y0, ink); - y0 += ys; - } - - else if (dy == 0) - - /* horizontal */ - for (i = 0; i < dx; i++) { - point32(im, x0, y0, ink); - x0 += xs; - } - - else if (dx > dy) { - - /* bresenham, horizontal slope */ - n = dx; - dy += dy; - e = dy - dx; - dx += dx; - - for (i = 0; i < n; i++) { - point32(im, x0, y0, ink); - if (e >= 0) { - y0 += ys; - e -= dx; - } - e += dy; - x0 += xs; - } - - } else { - - /* bresenham, vertical slope */ - n = dy; - dx += dx; - e = dx - dy; - dy += dy; - - for (i = 0; i < n; i++) { - point32(im, x0, y0, ink); - if (e >= 0) { - x0 += xs; - e -= dy; - } - e += dx; - y0 += ys; - } - - } -} - -static inline void -line32rgba(Imaging im, int x0, int y0, int x1, int y1, int ink) -{ - int i, n, e; - int dx, dy; - int xs, ys; - - /* normalize coordinates */ - dx = x1-x0; - if (dx < 0) - dx = -dx, xs = -1; - else - xs = 1; - dy = y1-y0; - if (dy < 0) - dy = -dy, ys = -1; - else - ys = 1; - - n = (dx > dy) ? dx : dy; - - if (dx == 0) - - /* vertical */ - for (i = 0; i < dy; i++) { - point32rgba(im, x0, y0, ink); - y0 += ys; - } - - else if (dy == 0) - - /* horizontal */ - for (i = 0; i < dx; i++) { - point32rgba(im, x0, y0, ink); - x0 += xs; - } - - else if (dx > dy) { - - /* bresenham, horizontal slope */ - n = dx; - dy += dy; - e = dy - dx; - dx += dx; - - for (i = 0; i < n; i++) { - point32rgba(im, x0, y0, ink); - if (e >= 0) { - y0 += ys; - e -= dx; - } - e += dy; - x0 += xs; - } - - } else { - - /* bresenham, vertical slope */ - n = dy; - dx += dx; - e = dx - dy; - dy += dy; - - for (i = 0; i < n; i++) { - point32rgba(im, x0, y0, ink); - if (e >= 0) { - x0 += xs; - e -= dy; - } - e += dx; - y0 += ys; - } - - } -} - -static int -x_cmp(const void *x0, const void *x1) -{ - float diff = *((float*)x0) - *((float*)x1); - if (diff < 0) - return -1; - else if (diff > 0) - return 1; - else - return 0; -} - -static inline int -polygon8(Imaging im, int n, Edge *e, int ink, int eofill) -{ - int i, j; - float *xx; - int ymin, ymax; - float y; - - if (n <= 0) - return 0; - - /* Find upper and lower polygon boundary (within image) */ - - ymin = e[0].ymin; - ymax = e[0].ymax; - for (i = 1; i < n; i++) { - if (e[i].ymin < ymin) ymin = e[i].ymin; - if (e[i].ymax > ymax) ymax = e[i].ymax; - } - - if (ymin < 0) - ymin = 0; - if (ymax >= im->ysize) - ymax = im->ysize-1; - - /* Process polygon edges */ - - xx = malloc(n * sizeof(float)); - if (!xx) - return -1; - - for (;ymin <= ymax; ymin++) { - y = ymin+0.5F; - for (i = j = 0; i < n; i++) - if (y >= e[i].ymin && y <= e[i].ymax) { - if (e[i].d == 0) - hline8(im, e[i].xmin, ymin, e[i].xmax, ink); - else - xx[j++] = (y-e[i].y0) * e[i].dx + e[i].x0; - } - if (j == 2) { - if (xx[0] < xx[1]) - hline8(im, CEIL(xx[0]-0.5), ymin, FLOOR(xx[1]+0.5), ink); - else - hline8(im, CEIL(xx[1]-0.5), ymin, FLOOR(xx[0]+0.5), ink); - } else { - qsort(xx, j, sizeof(float), x_cmp); - for (i = 0; i < j-1 ; i += 2) - hline8(im, CEIL(xx[i]-0.5), ymin, FLOOR(xx[i+1]+0.5), ink); - } - } - - free(xx); - - return 0; -} - -static inline int -polygon32(Imaging im, int n, Edge *e, int ink, int eofill) -{ - int i, j; - float *xx; - int ymin, ymax; - float y; - - if (n <= 0) - return 0; - - /* Find upper and lower polygon boundary (within image) */ - - ymin = e[0].ymin; - ymax = e[0].ymax; - for (i = 1; i < n; i++) { - if (e[i].ymin < ymin) ymin = e[i].ymin; - if (e[i].ymax > ymax) ymax = e[i].ymax; - } - - if (ymin < 0) - ymin = 0; - if (ymax >= im->ysize) - ymax = im->ysize-1; - - /* Process polygon edges */ - - xx = malloc(n * sizeof(float)); - if (!xx) - return -1; - - for (;ymin <= ymax; ymin++) { - y = ymin+0.5F; - for (i = j = 0; i < n; i++) { - if (y >= e[i].ymin && y <= e[i].ymax) { - if (e[i].d == 0) - hline32(im, e[i].xmin, ymin, e[i].xmax, ink); - else - xx[j++] = (y-e[i].y0) * e[i].dx + e[i].x0; - } - } - if (j == 2) { - if (xx[0] < xx[1]) - hline32(im, CEIL(xx[0]-0.5), ymin, FLOOR(xx[1]+0.5), ink); - else - hline32(im, CEIL(xx[1]-0.5), ymin, FLOOR(xx[0]+0.5), ink); - } else { - qsort(xx, j, sizeof(float), x_cmp); - for (i = 0; i < j-1 ; i += 2) - hline32(im, CEIL(xx[i]-0.5), ymin, FLOOR(xx[i+1]+0.5), ink); - } - } - - free(xx); - - return 0; -} - -static inline int -polygon32rgba(Imaging im, int n, Edge *e, int ink, int eofill) -{ - int i, j; - float *xx; - int ymin, ymax; - float y; - - if (n <= 0) - return 0; - - /* Find upper and lower polygon boundary (within image) */ - - ymin = e[0].ymin; - ymax = e[0].ymax; - for (i = 1; i < n; i++) { - if (e[i].ymin < ymin) ymin = e[i].ymin; - if (e[i].ymax > ymax) ymax = e[i].ymax; - } - - if (ymin < 0) - ymin = 0; - if (ymax >= im->ysize) - ymax = im->ysize-1; - - /* Process polygon edges */ - - xx = malloc(n * sizeof(float)); - if (!xx) - return -1; - - for (;ymin <= ymax; ymin++) { - y = ymin+0.5F; - for (i = j = 0; i < n; i++) { - if (y >= e[i].ymin && y <= e[i].ymax) { - if (e[i].d == 0) - hline32rgba(im, e[i].xmin, ymin, e[i].xmax, ink); - else - xx[j++] = (y-e[i].y0) * e[i].dx + e[i].x0; - } - } - if (j == 2) { - if (xx[0] < xx[1]) - hline32rgba(im, CEIL(xx[0]-0.5), ymin, FLOOR(xx[1]+0.5), ink); - else - hline32rgba(im, CEIL(xx[1]-0.5), ymin, FLOOR(xx[0]+0.5), ink); - } else { - qsort(xx, j, sizeof(float), x_cmp); - for (i = 0; i < j-1 ; i += 2) - hline32rgba(im, CEIL(xx[i]-0.5), ymin, FLOOR(xx[i+1]+0.5), ink); - } - } - - free(xx); - - return 0; -} - -static inline void -add_edge(Edge *e, int x0, int y0, int x1, int y1) -{ - /* printf("edge %d %d %d %d\n", x0, y0, x1, y1); */ - - if (x0 <= x1) - e->xmin = x0, e->xmax = x1; - else - e->xmin = x1, e->xmax = x0; - - if (y0 <= y1) - e->ymin = y0, e->ymax = y1; - else - e->ymin = y1, e->ymax = y0; - - if (y0 == y1) { - e->d = 0; - e->dx = 0.0; - } else { - e->dx = ((float)(x1-x0)) / (y1-y0); - if (y0 == e->ymin) - e->d = 1; - else - e->d = -1; - } - - e->x0 = x0; - e->y0 = y0; -} - -typedef struct { - void (*point)(Imaging im, int x, int y, int ink); - void (*hline)(Imaging im, int x0, int y0, int x1, int ink); - void (*line)(Imaging im, int x0, int y0, int x1, int y1, int ink); - int (*polygon)(Imaging im, int n, Edge *e, int ink, int eofill); -} DRAW; - -DRAW draw8 = { point8, hline8, line8, polygon8 }; -DRAW draw32 = { point32, hline32, line32, polygon32 }; -DRAW draw32rgba = { point32rgba, hline32rgba, line32rgba, polygon32rgba }; - -/* -------------------------------------------------------------------- */ -/* Interface */ -/* -------------------------------------------------------------------- */ - -#define DRAWINIT()\ - if (im->image8) {\ - draw = &draw8;\ - ink = INK8(ink_);\ - } else {\ - draw = (op) ? &draw32rgba : &draw32; \ - ink = INK32(ink_);\ - } - -int -ImagingDrawPoint(Imaging im, int x0, int y0, const void* ink_, int op) -{ - DRAW* draw; - INT32 ink; - - DRAWINIT(); - - draw->point(im, x0, y0, ink); - - return 0; -} - -int -ImagingDrawLine(Imaging im, int x0, int y0, int x1, int y1, const void* ink_, - int op) -{ - DRAW* draw; - INT32 ink; - - DRAWINIT(); - - draw->line(im, x0, y0, x1, y1, ink); - - return 0; -} - -int -ImagingDrawWideLine(Imaging im, int x0, int y0, int x1, int y1, - const void* ink_, int width, int op) -{ - DRAW* draw; - INT32 ink; - - Edge e[4]; - - int dx, dy; - double d; - - DRAWINIT(); - - if (width <= 1) { - draw->line(im, x0, y0, x1, y1, ink); - return 0; - } - - dx = x1-x0; - dy = y1-y0; - - if (dx == 0 && dy == 0) { - draw->point(im, x0, y0, ink); - return 0; - } - - d = width / sqrt((float) (dx*dx + dy*dy)) / 2.0; - - dx = (int) floor(d * (y1-y0) + 0.5); - dy = (int) floor(d * (x1-x0) + 0.5); - - add_edge(e+0, x0 - dx, y0 + dy, x1 - dx, y1 + dy); - add_edge(e+1, x1 - dx, y1 + dy, x1 + dx, y1 - dy); - add_edge(e+2, x1 + dx, y1 - dy, x0 + dx, y0 - dy); - add_edge(e+3, x0 + dx, y0 - dy, x0 - dx, y0 + dy); - - draw->polygon(im, 4, e, ink, 0); - - return 0; -} - -int -ImagingDrawRectangle(Imaging im, int x0, int y0, int x1, int y1, - const void* ink_, int fill, int op) -{ - int y; - int tmp; - DRAW* draw; - INT32 ink; - - DRAWINIT(); - - if (y0 > y1) - tmp = y0, y0 = y1, y1 = tmp; - - if (fill) { - - if (y0 < 0) - y0 = 0; - else if (y0 >= im->ysize) - return 0; - - if (y1 < 0) - return 0; - else if (y1 > im->ysize) - y1 = im->ysize; - - for (y = y0; y <= y1; y++) - draw->hline(im, x0, y, x1, ink); - - } else { - - /* outline */ - draw->line(im, x0, y0, x1, y0, ink); - draw->line(im, x1, y0, x1, y1, ink); - draw->line(im, x1, y1, x0, y1, ink); - draw->line(im, x0, y1, x0, y0, ink); - - } - - return 0; -} - -int -ImagingDrawPolygon(Imaging im, int count, int* xy, const void* ink_, - int fill, int op) -{ - int i, n; - DRAW* draw; - INT32 ink; - - if (count <= 0) - return 0; - - DRAWINIT(); - - if (fill) { - - /* Build edge list */ - Edge* e = malloc(count * sizeof(Edge)); - if (!e) { - (void) ImagingError_MemoryError(); - return -1; - } - for (i = n = 0; i < count-1; i++) - add_edge(&e[n++], xy[i+i], xy[i+i+1], xy[i+i+2], xy[i+i+3]); - if (xy[i+i] != xy[0] || xy[i+i+1] != xy[1]) - add_edge(&e[n++], xy[i+i], xy[i+i+1], xy[0], xy[1]); - draw->polygon(im, n, e, ink, 0); - free(e); - - } else { - - /* Outline */ - for (i = 0; i < count-1; i++) - draw->line(im, xy[i+i], xy[i+i+1], xy[i+i+2], xy[i+i+3], ink); - draw->line(im, xy[i+i], xy[i+i+1], xy[0], xy[1], ink); - - } - - return 0; -} - -int -ImagingDrawBitmap(Imaging im, int x0, int y0, Imaging bitmap, const void* ink, - int op) -{ - return ImagingFill2( - im, ink, bitmap, - x0, y0, x0 + bitmap->xsize, y0 + bitmap->ysize - ); -} - -/* -------------------------------------------------------------------- */ -/* standard shapes */ - -#define ARC 0 -#define CHORD 1 -#define PIESLICE 2 - -static int -ellipse(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink_, int fill, - int mode, int op) -{ - int i, n; - int cx, cy; - int w, h; - int x = 0, y = 0; - int lx = 0, ly = 0; - int sx = 0, sy = 0; - DRAW* draw; - INT32 ink; - - w = x1 - x0; - h = y1 - y0; - if (w < 0 || h < 0) - return 0; - - DRAWINIT(); - - cx = (x0 + x1) / 2; - cy = (y0 + y1) / 2; - - while (end < start) - end += 360; - - if (mode != ARC && fill) { - - /* Build edge list */ - Edge* e = malloc((end - start + 3) * sizeof(Edge)); - if (!e) { - ImagingError_MemoryError(); - return -1; - } - - n = 0; - - for (i = start; i <= end; i++) { - x = FLOOR((cos(i*M_PI/180) * w/2) + cx + 0.5); - y = FLOOR((sin(i*M_PI/180) * h/2) + cy + 0.5); - if (i != start) - add_edge(&e[n++], lx, ly, x, y); - else - sx = x, sy = y; - lx = x, ly = y; - } - - if (n > 0) { - /* close and draw polygon */ - if (mode == PIESLICE) { - if (x != cx || y != cy) { - add_edge(&e[n++], x, y, cx, cy); - add_edge(&e[n++], cx, cy, sx, sy); - } - } else { - if (x != sx || y != sy) - add_edge(&e[n++], x, y, sx, sy); - } - draw->polygon(im, n, e, ink, 0); - } - - free(e); - - } else { - - for (i = start; i <= end; i++) { - x = FLOOR((cos(i*M_PI/180) * w/2) + cx + 0.5); - y = FLOOR((sin(i*M_PI/180) * h/2) + cy + 0.5); - if (i != start) - draw->line(im, lx, ly, x, y, ink); - else - sx = x, sy = y; - lx = x, ly = y; - } - - if (i != start) { - if (mode == PIESLICE) { - if (x != cx || y != cy) { - draw->line(im, x, y, cx, cy, ink); - draw->line(im, cx, cy, sx, sy, ink); - } - } else if (mode == CHORD) { - if (x != sx || y != sy) - draw->line(im, x, y, sx, sy, ink); - } - } - } - - return 0; -} - -int -ImagingDrawArc(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink, int op) -{ - return ellipse(im, x0, y0, x1, y1, start, end, ink, 0, ARC, op); -} - -int -ImagingDrawChord(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink, int fill, int op) -{ - return ellipse(im, x0, y0, x1, y1, start, end, ink, fill, CHORD, op); -} - -int -ImagingDrawEllipse(Imaging im, int x0, int y0, int x1, int y1, - const void* ink, int fill, int op) -{ - return ellipse(im, x0, y0, x1, y1, 0, 360, ink, fill, CHORD, op); -} - -int -ImagingDrawPieslice(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink, int fill, int op) -{ - return ellipse(im, x0, y0, x1, y1, start, end, ink, fill, PIESLICE, op); -} - -/* -------------------------------------------------------------------- */ - -/* experimental level 2 ("arrow") graphics stuff. this implements - portions of the arrow api on top of the Edge structure. the - semantics are ok, except that "curve" flattens the bezier curves by - itself */ - -#if 1 /* ARROW_GRAPHICS */ - -struct ImagingOutlineInstance { - - float x0, y0; - - float x, y; - - int count; - Edge *edges; - - int size; - -}; - - -ImagingOutline -ImagingOutlineNew(void) -{ - ImagingOutline outline; - - outline = calloc(1, sizeof(struct ImagingOutlineInstance)); - if (!outline) - return (ImagingOutline) ImagingError_MemoryError(); - - outline->edges = NULL; - outline->count = outline->size = 0; - - ImagingOutlineMove(outline, 0, 0); - - return outline; -} - -void -ImagingOutlineDelete(ImagingOutline outline) -{ - if (!outline) - return; - - if (outline->edges) - free(outline->edges); - - free(outline); -} - - -static Edge* -allocate(ImagingOutline outline, int extra) -{ - Edge* e; - - if (outline->count + extra > outline->size) { - /* expand outline buffer */ - outline->size += extra + 25; - if (!outline->edges) - e = malloc(outline->size * sizeof(Edge)); - else - e = realloc(outline->edges, outline->size * sizeof(Edge)); - if (!e) - return NULL; - outline->edges = e; - } - - e = outline->edges + outline->count; - - outline->count += extra; - - return e; -} - -int -ImagingOutlineMove(ImagingOutline outline, float x0, float y0) -{ - outline->x = outline->x0 = x0; - outline->y = outline->y0 = y0; - - return 0; -} - -int -ImagingOutlineLine(ImagingOutline outline, float x1, float y1) -{ - Edge* e; - - e = allocate(outline, 1); - if (!e) - return -1; /* out of memory */ - - add_edge(e, (int) outline->x, (int) outline->y, (int) x1, (int) y1); - - outline->x = x1; - outline->y = y1; - - return 0; -} - -int -ImagingOutlineCurve(ImagingOutline outline, float x1, float y1, - float x2, float y2, float x3, float y3) -{ - Edge* e; - int i; - float xo, yo; - -#define STEPS 32 - - e = allocate(outline, STEPS); - if (!e) - return -1; /* out of memory */ - - xo = outline->x; - yo = outline->y; - - /* flatten the bezier segment */ - - for (i = 1; i <= STEPS; i++) { - - float t = ((float) i) / STEPS; - float t2 = t*t; - float t3 = t2*t; - - float u = 1.0F - t; - float u2 = u*u; - float u3 = u2*u; - - float x = outline->x*u3 + 3*(x1*t*u2 + x2*t2*u) + x3*t3 + 0.5; - float y = outline->y*u3 + 3*(y1*t*u2 + y2*t2*u) + y3*t3 + 0.5; - - add_edge(e++, xo, yo, (int) x, (int) y); - - xo = x, yo = y; - - } - - outline->x = xo; - outline->y = yo; - - return 0; -} - -int -ImagingOutlineCurve2(ImagingOutline outline, float cx, float cy, - float x3, float y3) -{ - /* add bezier curve based on three control points (as - in the Flash file format) */ - - return ImagingOutlineCurve( - outline, - (outline->x + cx + cx)/3, (outline->y + cy + cy)/3, - (cx + cx + x3)/3, (cy + cy + y3)/3, - x3, y3); -} - -int -ImagingOutlineClose(ImagingOutline outline) -{ - if (outline->x == outline->x0 && outline->y == outline->y0) - return 0; - return ImagingOutlineLine(outline, outline->x0, outline->y0); -} - -int -ImagingOutlineTransform(ImagingOutline outline, double a[6]) -{ - Edge *eIn; - Edge *eOut; - int i, n; - int x0, y0, x1, y1; - int X0, Y0, X1, Y1; - - double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; - double a3 = a[3]; double a4 = a[4]; double a5 = a[5]; - - eIn = outline->edges; - n = outline->count; - - /* FIXME: ugly! */ - outline->edges = NULL; - outline->count = outline->size = 0; - - eOut = allocate(outline, n); - if (!eOut) { - outline->edges = eIn; - outline->count = outline->size = n; - ImagingError_MemoryError(); - return -1; - } - - for (i = 0; i < n; i++) { - - x0 = eIn->x0; - y0 = eIn->y0; - - /* FIXME: ouch! */ - if (eIn->x0 == eIn->xmin) - x1 = eIn->xmax; - else - x1 = eIn->xmin; - if (eIn->y0 == eIn->ymin) - y1 = eIn->ymax; - else - y1 = eIn->ymin; - - /* full moon tonight! if this doesn't work, you may need to - upgrade your compiler (make sure you have the right service - pack) */ - - X0 = (int) (a0*x0 + a1*y0 + a2); - Y0 = (int) (a3*x0 + a4*y0 + a5); - X1 = (int) (a0*x1 + a1*y1 + a2); - Y1 = (int) (a3*x1 + a4*y1 + a5); - - add_edge(eOut, X0, Y0, X1, Y1); - - eIn++; - eOut++; - - } - - free(eIn); - - return 0; -} - -int -ImagingDrawOutline(Imaging im, ImagingOutline outline, const void* ink_, - int fill, int op) -{ - DRAW* draw; - INT32 ink; - - DRAWINIT(); - - draw->polygon(im, outline->count, outline->edges, ink, 0); - - return 0; -} - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c deleted file mode 100755 index 1b964ac408f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Effects.c +++ /dev/null @@ -1,373 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * various special effects and image generators - * - * history: - * 1997-05-21 fl Just for fun - * 1997-06-05 fl Added mandelbrot generator - * 2003-05-24 fl Added perlin_turbulence generator (in progress) - * - * Copyright (c) 1997-2003 by Fredrik Lundh. - * Copyright (c) 1997 by Secret Labs AB. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#include - -Imaging -ImagingEffectMandelbrot(int xsize, int ysize, double extent[4], int quality) -{ - /* Generate a Mandelbrot set covering the given extent */ - - Imaging im; - int x, y, k; - double width, height; - double x1, y1, xi2, yi2, cr, ci, radius; - double dr, di; - - /* Check arguments */ - width = extent[2] - extent[0]; - height = extent[3] - extent[1]; - if (width < 0.0 || height < 0.0 || quality < 2) - return (Imaging) ImagingError_ValueError(NULL); - - im = ImagingNew("L", xsize, ysize); - if (!im) - return NULL; - - dr = width/(xsize-1); - di = height/(ysize-1); - - radius = 100.0; - - for (y = 0; y < ysize; y++) { - UINT8* buf = im->image8[y]; - for (x = 0; x < xsize; x++) { - x1 = y1 = xi2 = yi2 = 0.0; - cr = x*dr + extent[0]; - ci = y*di + extent[1]; - for (k = 1;; k++) { - y1 = 2*x1*y1 + ci; - x1 = xi2 - yi2 + cr; - xi2 = x1*x1; - yi2 = y1*y1; - if ((xi2 + yi2) > radius) { - buf[x] = k*255/quality; - break; - } - if (k > quality) { - buf[x] = 0; - break; - } - } - } - } - return im; -} - -Imaging -ImagingEffectNoise(int xsize, int ysize, float sigma) -{ - /* Generate gaussian noise centered around 128 */ - - Imaging imOut; - int x, y; - int nextok; - double this, next; - - imOut = ImagingNew("L", xsize, ysize); - if (!imOut) - return NULL; - - next = 0.0; - nextok = 0; - - for (y = 0; y < imOut->ysize; y++) { - UINT8* out = imOut->image8[y]; - for (x = 0; x < imOut->xsize; x++) { - if (nextok) { - this = next; - nextok = 0; - } else { - /* after numerical recepies */ - double v1, v2, radius, factor; - do { - v1 = rand()*(2.0/32767.0) - 1.0; - v2 = rand()*(2.0/32767.0) - 1.0; - radius= v1*v1 + v2*v2; - } while (radius >= 1.0); - factor = sqrt(-2.0*log(radius)/radius); - this = factor * v1; - next = factor * v2; - } - out[x] = (unsigned char) (128 + sigma * this); - } - } - - return imOut; -} - -Imaging -ImagingEffectPerlinTurbulence(int xsize, int ysize) -{ - /* Perlin turbulence (In progress) */ - - return NULL; -} - -Imaging -ImagingEffectSpread(Imaging imIn, int distance) -{ - /* Randomly spread pixels in an image */ - - Imaging imOut; - int x, y; - - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - - if (!imOut) - return NULL; - -#define SPREAD(type, image)\ - for (y = 0; y < imIn->ysize; y++)\ - for (x = 0; x < imIn->xsize; x++) {\ - int xx = x + (rand() % distance) - distance/2;\ - int yy = y + (rand() % distance) - distance/2;\ - if (xx >= 0 && xx < imIn->xsize && yy >= 0 && yy < imIn->ysize) {\ - imOut->image[yy][xx] = imIn->image[y][x];\ - imOut->image[y][x] = imIn->image[yy][xx];\ - } else\ - imOut->image[y][x] = imIn->image[y][x];\ - } - - if (imIn->image8) { - SPREAD(UINT8, image8); - } else { - SPREAD(INT32, image32); - } - - ImagingCopyInfo(imOut, imIn); - - return imOut; -} - -/* -------------------------------------------------------------------- */ -/* Taken from the "C" code in the W3C SVG specification. Translated - to C89 by Fredrik Lundh */ - -#if 0 - -/* Produces results in the range [1, 2**31 - 2]. -Algorithm is: r = (a * r) mod m -where a = 16807 and m = 2**31 - 1 = 2147483647 -See [Park & Miller], CACM vol. 31 no. 10 p. 1195, Oct. 1988 -To test: the algorithm should produce the result 1043618065 -as the 10,000th generated number if the original seed is 1. -*/ -#define RAND_m 2147483647 /* 2**31 - 1 */ -#define RAND_a 16807 /* 7**5; primitive root of m */ -#define RAND_q 127773 /* m / a */ -#define RAND_r 2836 /* m % a */ - -static long -perlin_setup_seed(long lSeed) -{ - if (lSeed <= 0) lSeed = -(lSeed % (RAND_m - 1)) + 1; - if (lSeed > RAND_m - 1) lSeed = RAND_m - 1; - return lSeed; -} - -static long -perlin_random(long lSeed) -{ - long result; - result = RAND_a * (lSeed % RAND_q) - RAND_r * (lSeed / RAND_q); - if (result <= 0) result += RAND_m; - return result; -} - -#define BSize 0x100 -#define BM 0xff -#define PerlinN 0x1000 -#define NP 12 /* 2^PerlinN */ -#define NM 0xfff -static int perlin_uLatticeSelector[BSize + BSize + 2]; -static double perlin_fGradient[4][BSize + BSize + 2][2]; -typedef struct -{ - int nWidth; /* How much to subtract to wrap for stitching. */ - int nHeight; - int nWrapX; /* Minimum value to wrap. */ - int nWrapY; -} StitchInfo; - -static void -perlin_init(long lSeed) -{ - double s; - int i, j, k; - lSeed = perlin_setup_seed(lSeed); - for(k = 0; k < 4; k++) - { - for(i = 0; i < BSize; i++) - { - perlin_uLatticeSelector[i] = i; - for (j = 0; j < 2; j++) - perlin_fGradient[k][i][j] = (double)(((lSeed = perlin_random(lSeed)) % (BSize + BSize)) - BSize) / BSize; - s = (double) (sqrt(perlin_fGradient[k][i][0] * perlin_fGradient[k][i][0] + perlin_fGradient[k][i][1] * perlin_fGradient[k][i][1])); - perlin_fGradient[k][i][0] /= s; - perlin_fGradient[k][i][1] /= s; - } - } - while(--i) - { - k = perlin_uLatticeSelector[i]; - perlin_uLatticeSelector[i] = perlin_uLatticeSelector[j = (lSeed = perlin_random(lSeed)) % BSize]; - perlin_uLatticeSelector[j] = k; - } - for(i = 0; i < BSize + 2; i++) - { - perlin_uLatticeSelector[BSize + i] = perlin_uLatticeSelector[i]; - for(k = 0; k < 4; k++) - for(j = 0; j < 2; j++) - perlin_fGradient[k][BSize + i][j] = perlin_fGradient[k][i][j]; - } -} - -#define s_curve(t) ( t * t * (3. - 2. * t) ) -#define lerp(t, a, b) ( a + t * (b - a) ) -static double -perlin_noise2(int nColorChannel, double vec[2], StitchInfo *pStitchInfo) -{ - int bx0, bx1, by0, by1, b00, b10, b01, b11; - double rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v; - register int i, j; - - t = vec[0] + (double) PerlinN; - bx0 = (int)t; - bx1 = bx0+1; - rx0 = t - (int)t; - rx1 = rx0 - 1.0f; - t = vec[1] + (double) PerlinN; - by0 = (int)t; - by1 = by0+1; - ry0 = t - (int)t; - ry1 = ry0 - 1.0f; - - /* If stitching, adjust lattice points accordingly. */ - if(pStitchInfo != NULL) - { - if(bx0 >= pStitchInfo->nWrapX) - bx0 -= pStitchInfo->nWidth; - if(bx1 >= pStitchInfo->nWrapX) - bx1 -= pStitchInfo->nWidth; - if(by0 >= pStitchInfo->nWrapY) - by0 -= pStitchInfo->nHeight; - if(by1 >= pStitchInfo->nWrapY) - by1 -= pStitchInfo->nHeight; - } - - bx0 &= BM; - bx1 &= BM; - by0 &= BM; - by1 &= BM; - - i = perlin_uLatticeSelector[bx0]; - j = perlin_uLatticeSelector[bx1]; - b00 = perlin_uLatticeSelector[i + by0]; - b10 = perlin_uLatticeSelector[j + by0]; - b01 = perlin_uLatticeSelector[i + by1]; - b11 = perlin_uLatticeSelector[j + by1]; - sx = (double) (s_curve(rx0)); - sy = (double) (s_curve(ry0)); - q = perlin_fGradient[nColorChannel][b00]; u = rx0 * q[0] + ry0 * q[1]; - q = perlin_fGradient[nColorChannel][b10]; v = rx1 * q[0] + ry0 * q[1]; - a = lerp(sx, u, v); - q = perlin_fGradient[nColorChannel][b01]; u = rx0 * q[0] + ry1 * q[1]; - q = perlin_fGradient[nColorChannel][b11]; v = rx1 * q[0] + ry1 * q[1]; - b = lerp(sx, u, v); - return lerp(sy, a, b); -} - -double -perlin_turbulence( - int nColorChannel, double *point, double fBaseFreqX, double fBaseFreqY, - int nNumOctaves, int bFractalSum, int bDoStitching, - double fTileX, double fTileY, double fTileWidth, double fTileHeight) -{ - StitchInfo stitch; - StitchInfo *pStitchInfo = NULL; /* Not stitching when NULL. */ - - double fSum = 0.0f; - double vec[2]; - double ratio = 1; - - int nOctave; - - vec[0] = point[0] * fBaseFreqX; - vec[1] = point[1] * fBaseFreqY; - - /* Adjust the base frequencies if necessary for stitching. */ - if(bDoStitching) - { - /* When stitching tiled turbulence, the frequencies must be adjusted */ - /* so that the tile borders will be continuous. */ - if(fBaseFreqX != 0.0) - { - double fLoFreq = (double) (floor(fTileWidth * fBaseFreqX)) / fTileWidth; - double fHiFreq = (double) (ceil(fTileWidth * fBaseFreqX)) / fTileWidth; - if(fBaseFreqX / fLoFreq < fHiFreq / fBaseFreqX) - fBaseFreqX = fLoFreq; - else - fBaseFreqX = fHiFreq; - } - - if(fBaseFreqY != 0.0) - { - double fLoFreq = (double) (floor(fTileHeight * fBaseFreqY)) / fTileHeight; - double fHiFreq = (double) (ceil(fTileHeight * fBaseFreqY)) / fTileHeight; - if(fBaseFreqY / fLoFreq < fHiFreq / fBaseFreqY) - fBaseFreqY = fLoFreq; - else - fBaseFreqY = fHiFreq; - } - - /* Set up initial stitch values. */ - pStitchInfo = &stitch; - stitch.nWidth = (int) (fTileWidth * fBaseFreqX + 0.5f); - stitch.nWrapX = (int) (fTileX * fBaseFreqX + PerlinN + stitch.nWidth); - stitch.nHeight = (int) (fTileHeight * fBaseFreqY + 0.5f); - stitch.nWrapY = (int) (fTileY * fBaseFreqY + PerlinN + stitch.nHeight); - } - - for(nOctave = 0; nOctave < nNumOctaves; nOctave++) - { - if(bFractalSum) - fSum += (double) (perlin_noise2(nColorChannel, vec, pStitchInfo) / ratio); - else - fSum += (double) (fabs(perlin_noise2(nColorChannel, vec, pStitchInfo)) / ratio); - - vec[0] *= 2; - vec[1] *= 2; - ratio *= 2; - - if(pStitchInfo != NULL) - { - /* Update stitch values. Subtracting PerlinN before the multiplication and */ - /* adding it afterward simplifies to subtracting it once. */ - stitch.nWidth *= 2; - stitch.nWrapX = 2 * stitch.nWrapX - PerlinN; - stitch.nHeight *= 2; - stitch.nWrapY = 2 * stitch.nWrapY - PerlinN; - } - } - return fSum; -} - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c deleted file mode 100755 index 704d5a6567d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/EpsEncode.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * encoder for EPS hex data - * - * history: - * 96-04-19 fl created - * 96-06-27 fl don't drop last block of encoded data - * - * notes: - * FIXME: rename to HexEncode.c ?? - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingEpsEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - enum { HEXBYTE=1, NEWLINE }; - const char *hex = "0123456789abcdef"; - - UINT8* ptr = buf; - UINT8* in, i; - - if (!state->state) { - state->state = HEXBYTE; - state->xsize *= im->pixelsize; /* Hack! */ - } - - in = (UINT8*) im->image[state->y]; - - for (;;) { - - if (state->state == NEWLINE) { - if (bytes < 1) - break; - *ptr++ = '\n'; - bytes--; - state->state = HEXBYTE; - } - - if (bytes < 2) - break; - - i = in[state->x++]; - *ptr++ = hex[(i>>4)&15]; - *ptr++ = hex[i&15]; - bytes -= 2; - - /* Skip junk bytes */ - if (im->bands == 3 && (state->x & 3) == 3) - state->x++; - - if (++state->count >= 79/2) { - state->state = NEWLINE; - state->count = 0; - } - - if (state->x >= state->xsize) { - state->x = 0; - if (++state->y >= state->ysize) { - state->errcode = IMAGING_CODEC_END; - break; - } - in = (UINT8*) im->image[state->y]; - } - - } - - return ptr - buf; - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c deleted file mode 100755 index 635435d576c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Except.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * default exception handling - * - * This module is usually overridden by application code (e.g. - * _imaging.c for PIL's standard Python bindings). If you get - * linking errors, remove this file from your project/library. - * - * history: - * 1995-06-15 fl Created - * 1998-12-29 fl Minor tweaks - * 2003-09-13 fl Added ImagingEnter/LeaveSection() - * - * Copyright (c) 1997-2003 by Secret Labs AB. - * Copyright (c) 1995-2003 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -/* exception state */ - -void * -ImagingError_IOError(void) -{ - fprintf(stderr, "*** exception: file access error\n"); - return NULL; -} - -void * -ImagingError_MemoryError(void) -{ - fprintf(stderr, "*** exception: out of memory\n"); - return NULL; -} - -void * -ImagingError_ModeError(void) -{ - return ImagingError_ValueError("bad image mode"); - return NULL; -} - -void * -ImagingError_Mismatch(void) -{ - return ImagingError_ValueError("images don't match"); - return NULL; -} - -void * -ImagingError_ValueError(const char *message) -{ - if (!message) - message = "exception: bad argument to function"; - fprintf(stderr, "*** %s\n", message); - return NULL; -} - -void -ImagingError_Clear(void) -{ - /* nop */; -} - -/* thread state */ - -void -ImagingSectionEnter(ImagingSectionCookie* cookie) -{ - /* pass */ -} - -void -ImagingSectionLeave(ImagingSectionCookie* cookie) -{ - /* pass */ -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c deleted file mode 100755 index 6f454d1ca5d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/File.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * built-in image file handling - * - * history: - * 1995-11-26 fl Created, supports PGM/PPM - * 1996-08-07 fl Write "1" images as PGM - * 1999-02-21 fl Don't write non-standard modes - * - * Copyright (c) 1997-99 by Secret Labs AB. - * Copyright (c) 1995-96 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#include - -Imaging -ImagingOpenPPM(const char* infile) -{ - FILE* fp; - int i, c, v; - char* mode; - int x, y, max; - Imaging im; - - if (!infile) - return ImagingError_ValueError(NULL); - - fp = fopen(infile, "rb"); - if (!fp) - return ImagingError_IOError(); - - /* PPM magic */ - if (fgetc(fp) != 'P') - goto error; - switch (fgetc(fp)) { - case '4': /* FIXME: 1-bit images are not yet supported */ - goto error; - case '5': - mode = "L"; - break; - case '6': - mode = "RGB"; - break; - default: - goto error; - } - - i = 0; - c = fgetc(fp); - - x = y = max = 0; - - while (i < 3) { - - /* Ignore optional comment fields */ - while (c == '\n') { - c = fgetc(fp); - if (c == '#') { - do { - c = fgetc(fp); - if (c == EOF) - goto error; - } while (c != '\n'); - c = fgetc(fp); - } - } - - /* Skip forward to next value */ - while (isspace(c)) - c = fgetc(fp); - - /* And parse it */ - v = 0; - while (isdigit(c)) { - v = v * 10 + (c - '0'); - c = fgetc(fp); - } - - if (c == EOF) - goto error; - - switch (i++) { - case 0: - x = v; - break; - case 1: - y = v; - break; - case 2: - max = v; - break; - } - } - - im = ImagingNew(mode, x, y); - if (!im) - return NULL; - - /* if (max != 255) ... FIXME: does anyone ever use this feature? */ - - if (strcmp(im->mode, "L") == 0) { - - /* PPM "L" */ - for (y = 0; y < im->ysize; y++) - if (fread(im->image[y], im->xsize, 1, fp) != 1) - goto error; - - } else { - - /* PPM "RGB" or PyPPM mode */ - for (y = 0; y < im->ysize; y++) - for (x = i = 0; x < im->xsize; x++, i += im->pixelsize) - if (fread(im->image[y]+i, im->bands, 1, fp) != 1) - goto error; - } - - fclose(fp); - - return im; - -error: - fclose(fp); - return ImagingError_IOError(); -} - - -int -ImagingSaveRaw(Imaging im, FILE* fp) -{ - int x, y, i; - - if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) { - - /* @PIL227: FIXME: for mode "1", map != 0 to 255 */ - - /* PGM "L" */ - for (y = 0; y < im->ysize; y++) - fwrite(im->image[y], 1, im->xsize, fp); - - } else { - - /* PPM "RGB" or other internal format */ - for (y = 0; y < im->ysize; y++) - for (x = i = 0; x < im->xsize; x++, i += im->pixelsize) - fwrite(im->image[y]+i, 1, im->bands, fp); - - } - - return 1; -} - - -int -ImagingSavePPM(Imaging im, const char* outfile) -{ - FILE* fp; - - if (!im) { - (void) ImagingError_ValueError(NULL); - return 0; - } - - fp = fopen(outfile, "wb"); - if (!fp) { - (void) ImagingError_IOError(); - return 0; - } - - if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) { - /* Write "PGM" */ - fprintf(fp, "P5\n%d %d\n255\n", im->xsize, im->ysize); - } else if (strcmp(im->mode, "RGB") == 0) { - /* Write "PPM" */ - fprintf(fp, "P6\n%d %d\n255\n", im->xsize, im->ysize); - } else { - (void) ImagingError_ModeError(); - return 0; - } - - ImagingSaveRaw(im, fp); - - fclose(fp); - - return 1; -} - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c deleted file mode 100755 index ce00e6c157c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Fill.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * fill image with constant pixel value - * - * history: - * 95-11-26 fl moved from Imaging.c - * 96-05-17 fl added radial fill, renamed wedge to linear - * 98-06-23 fl changed ImageFill signature - * - * Copyright (c) Secret Labs AB 1997-98. All rights reserved. - * Copyright (c) Fredrik Lundh 1995-96. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#include "math.h" - -Imaging -ImagingFill(Imaging im, const void* colour) -{ - int x, y; - - if (im->type == IMAGING_TYPE_SPECIAL) { - /* use generic API */ - ImagingAccess access = ImagingAccessNew(im); - if (access) { - for (y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++) - access->put_pixel(im, x, y, colour); - ImagingAccessDelete(im, access); - } else { - /* wipe the image */ - for (y = 0; y < im->ysize; y++) - memset(im->image[y], 0, im->linesize); - } - } else { - INT32 c = 0L; - memcpy(&c, colour, im->pixelsize); - if (im->image32 && c != 0L) { - for (y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++) - im->image32[y][x] = c; - } else { - unsigned char cc = (unsigned char) *(UINT8*) colour; - for (y = 0; y < im->ysize; y++) - memset(im->image[y], cc, im->linesize); - } - } - - return im; -} - -Imaging -ImagingFillLinearGradient(const char *mode) -{ - Imaging im; - int y; - - if (strlen(mode) != 1) - return (Imaging) ImagingError_ModeError(); - - im = ImagingNew(mode, 256, 256); - if (!im) - return NULL; - - for (y = 0; y < 256; y++) - memset(im->image8[y], (unsigned char) y, 256); - - return im; -} - -Imaging -ImagingFillRadialGradient(const char *mode) -{ - Imaging im; - int x, y; - int d; - - if (strlen(mode) != 1) - return (Imaging) ImagingError_ModeError(); - - im = ImagingNew(mode, 256, 256); - if (!im) - return NULL; - - for (y = 0; y < 256; y++) - for (x = 0; x < 256; x++) { - d = (int) sqrt((double) ((x-128)*(x-128) + (y-128)*(y-128)) * 2.0); - if (d >= 255) - im->image8[y][x] = 255; - else - im->image8[y][x] = d; - } - - return im; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c deleted file mode 100755 index 45c9bf0606f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Filter.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * apply convolution kernel to image - * - * history: - * 1995-11-26 fl Created, supports 3x3 kernels - * 1995-11-27 fl Added 5x5 kernels, copy border - * 1999-07-26 fl Eliminated a few compiler warnings - * 2002-06-09 fl Moved kernel definitions to Python - * 2002-06-11 fl Support floating point kernels - * 2003-09-15 fl Added ImagingExpand helper - * - * Copyright (c) Secret Labs AB 1997-2002. All rights reserved. - * Copyright (c) Fredrik Lundh 1995. - * - * See the README file for information on usage and redistribution. - */ - -/* - * FIXME: Support RGB and RGBA/CMYK modes as well - * FIXME: Expand image border (current version leaves border as is) - * FIXME: Implement image processing gradient filters - */ - -#include "Imaging.h" - -Imaging -ImagingExpand(Imaging imIn, int xmargin, int ymargin, int mode) -{ - Imaging imOut; - int x, y; - - if (xmargin < 0 && ymargin < 0) - return (Imaging) ImagingError_ValueError("bad kernel size"); - - imOut = ImagingNew( - imIn->mode, imIn->xsize+2*xmargin, imIn->ysize+2*ymargin - ); - if (!imOut) - return NULL; - -#define EXPAND_LINE(type, image, yin, yout) {\ - for (x = 0; x < xmargin; x++)\ - imOut->image[yout][x] = imIn->image[yin][0];\ - for (x = 0; x < imIn->xsize; x++)\ - imOut->image[yout][x+xmargin] = imIn->image[yin][x];\ - for (x = 0; x < xmargin; x++)\ - imOut->image[yout][xmargin+imIn->xsize+x] =\ - imIn->image[yin][imIn->xsize-1];\ - } - -#define EXPAND(type, image) {\ - for (y = 0; y < ymargin; y++)\ - EXPAND_LINE(type, image, 0, y);\ - for (y = 0; y < imIn->ysize; y++)\ - EXPAND_LINE(type, image, y, y+ymargin);\ - for (y = 0; y < ymargin; y++)\ - EXPAND_LINE(type, image, imIn->ysize-1, ymargin+imIn->ysize+y);\ - } - - if (imIn->image8) { - EXPAND(UINT8, image8); - } else { - EXPAND(INT32, image32); - } - - ImagingCopyInfo(imOut, imIn); - - return imOut; -} - -Imaging -ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32* kernel, - FLOAT32 offset, FLOAT32 divisor) -{ - Imaging imOut; - int x, y; - FLOAT32 sum; - - if (!im || strcmp(im->mode, "L") != 0) - return (Imaging) ImagingError_ModeError(); - - if (im->xsize < xsize || im->ysize < ysize) - return ImagingCopy(im); - - if ((xsize != 3 && xsize != 5) || xsize != ysize) - return (Imaging) ImagingError_ValueError("bad kernel size"); - - imOut = ImagingNew(im->mode, im->xsize, im->ysize); - if (!imOut) - return NULL; - - /* brute force kernel implementations */ -#define KERNEL3x3(image, kernel, d) ( \ - (int) image[y+1][x-d] * kernel[0] + \ - (int) image[y+1][x] * kernel[1] + \ - (int) image[y+1][x+d] * kernel[2] + \ - (int) image[y][x-d] * kernel[3] + \ - (int) image[y][x] * kernel[4] + \ - (int) image[y][x+d] * kernel[5] + \ - (int) image[y-1][x-d] * kernel[6] + \ - (int) image[y-1][x] * kernel[7] + \ - (int) image[y-1][x+d] * kernel[8]) - -#define KERNEL5x5(image, kernel, d) ( \ - (int) image[y+2][x-d-d] * kernel[0] + \ - (int) image[y+2][x-d] * kernel[1] + \ - (int) image[y+2][x] * kernel[2] + \ - (int) image[y+2][x+d] * kernel[3] + \ - (int) image[y+2][x+d+d] * kernel[4] + \ - (int) image[y+1][x-d-d] * kernel[5] + \ - (int) image[y+1][x-d] * kernel[6] + \ - (int) image[y+1][x] * kernel[7] + \ - (int) image[y+1][x+d] * kernel[8] + \ - (int) image[y+1][x+d+d] * kernel[9] + \ - (int) image[y][x-d-d] * kernel[10] + \ - (int) image[y][x-d] * kernel[11] + \ - (int) image[y][x] * kernel[12] + \ - (int) image[y][x+d] * kernel[13] + \ - (int) image[y][x+d+d] * kernel[14] + \ - (int) image[y-1][x-d-d] * kernel[15] + \ - (int) image[y-1][x-d] * kernel[16] + \ - (int) image[y-1][x] * kernel[17] + \ - (int) image[y-1][x+d] * kernel[18] + \ - (int) image[y-1][x+d+d] * kernel[19] + \ - (int) image[y-2][x-d-d] * kernel[20] + \ - (int) image[y-2][x-d] * kernel[21] + \ - (int) image[y-2][x] * kernel[22] + \ - (int) image[y-2][x+d] * kernel[23] + \ - (int) image[y-2][x+d+d] * kernel[24]) - - if (xsize == 3) { - /* 3x3 kernel. */ - for (x = 0; x < im->xsize; x++) - imOut->image[0][x] = im->image8[0][x]; - for (y = 1; y < im->ysize-1; y++) { - imOut->image[y][0] = im->image8[y][0]; - for (x = 1; x < im->xsize-1; x++) { - sum = KERNEL3x3(im->image8, kernel, 1) / divisor + offset; - if (sum <= 0) - imOut->image8[y][x] = 0; - else if (sum >= 255) - imOut->image8[y][x] = 255; - else - imOut->image8[y][x] = (UINT8) sum; - } - imOut->image8[y][x] = im->image8[y][x]; - } - for (x = 0; x < im->xsize; x++) - imOut->image8[y][x] = im->image8[y][x]; - } else { - /* 5x5 kernel. */ - for (y = 0; y < 2; y++) - for (x = 0; x < im->xsize; x++) - imOut->image8[y][x] = im->image8[y][x]; - for (; y < im->ysize-2; y++) { - for (x = 0; x < 2; x++) - imOut->image8[y][x] = im->image8[y][x]; - for (; x < im->xsize-2; x++) { - sum = KERNEL5x5(im->image8, kernel, 1) / divisor + offset; - if (sum <= 0) - imOut->image8[y][x] = 0; - else if (sum >= 255) - imOut->image8[y][x] = 255; - else - imOut->image8[y][x] = (UINT8) sum; - } - for (; x < im->xsize; x++) - imOut->image8[y][x] = im->image8[y][x]; - } - for (; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++) - imOut->image8[y][x] = im->image8[y][x]; - } - return imOut; -} - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c deleted file mode 100755 index 75eebe86c90..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/FliDecode.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for Autodesk Animator FLI/FLC animations - * - * history: - * 97-01-03 fl Created - * 97-01-17 fl Added SS2 support (FLC) - * - * Copyright (c) Fredrik Lundh 1997. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -#define I16(ptr)\ - ((ptr)[0] + ((ptr)[1] << 8)) - -#define I32(ptr)\ - ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) - - -int -ImagingFliDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8* ptr; - int framesize; - int c, chunks; - int l, lines; - int i, j, x = 0, y, ymax; - - /* If not even the chunk size is present, we'd better leave */ - - if (bytes < 4) - return 0; - - /* We don't decode anything unless we have a full chunk in the - input buffer (on the other hand, the Python part of the driver - makes sure this is always the case) */ - - ptr = buf; - - framesize = I32(ptr); - if (framesize < I32(ptr)) - return 0; - - /* Make sure this is a frame chunk. The Python driver takes - case of other chunk types. */ - - if (I16(ptr+4) != 0xF1FA) { - state->errcode = IMAGING_CODEC_UNKNOWN; - return -1; - } - - chunks = I16(ptr+6); - ptr += 16; - - /* Process subchunks */ - for (c = 0; c < chunks; c++) { - UINT8 *data = ptr + 6; - switch (I16(ptr+4)) { - case 4: case 11: - /* FLI COLOR chunk */ - break; /* ignored; handled by Python code */ - case 7: - /* FLI SS2 chunk (word delta) */ - lines = I16(data); data += 2; - for (l = y = 0; l < lines && y < state->ysize; l++, y++) { - UINT8* buf = (UINT8*) im->image[y]; - int p, packets; - packets = I16(data); data += 2; - while (packets & 0x8000) { - /* flag word */ - if (packets & 0x4000) { - y += 65536 - packets; /* skip lines */ - if (y >= state->ysize) { - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - buf = (UINT8*) im->image[y]; - } else { - /* store last byte (used if line width is odd) */ - buf[state->xsize-1] = (UINT8) packets; - } - packets = I16(data); data += 2; - } - for (p = x = 0; p < packets; p++) { - x += data[0]; /* pixel skip */ - if (data[1] >= 128) { - i = 256-data[1]; /* run */ - if (x + i + i > state->xsize) - break; - for (j = 0; j < i; j++) { - buf[x++] = data[2]; - buf[x++] = data[3]; - } - data += 2 + 2; - } else { - i = 2 * (int) data[1]; /* chunk */ - if (x + i > state->xsize) - break; - memcpy(buf + x, data + 2, i); - data += 2 + i; - x += i; - } - } - if (p < packets) - break; /* didn't process all packets */ - } - if (l < lines) { - /* didn't process all lines */ - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - break; - case 12: - /* FLI LC chunk (byte delta) */ - y = I16(data); ymax = y + I16(data+2); data += 4; - for (; y < ymax && y < state->ysize; y++) { - UINT8* out = (UINT8*) im->image[y]; - int p, packets = *data++; - for (p = x = 0; p < packets; p++, x += i) { - x += data[0]; /* skip pixels */ - if (data[1] & 0x80) { - i = 256-data[1]; /* run */ - if (x + i > state->xsize) - break; - memset(out + x, data[2], i); - data += 3; - } else { - i = data[1]; /* chunk */ - if (x + i > state->xsize) - break; - memcpy(out + x, data + 2, i); - data += i + 2; - } - } - if (p < packets) - break; /* didn't process all packets */ - } - if (y < ymax) { - /* didn't process all lines */ - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - break; - case 13: - /* FLI BLACK chunk */ - for (y = 0; y < state->ysize; y++) - memset(im->image[y], 0, state->xsize); - break; - case 15: - /* FLI BRUN chunk */ - for (y = 0; y < state->ysize; y++) { - UINT8* out = (UINT8*) im->image[y]; - data += 1; /* ignore packetcount byte */ - for (x = 0; x < state->xsize; x += i) { - if (data[0] & 0x80) { - i = 256 - data[0]; - if (x + i > state->xsize) - break; /* safety first */ - memcpy(out + x, data + 1, i); - data += i + 1; - } else { - i = data[0]; - if (x + i > state->xsize) - break; /* safety first */ - memset(out + x, data[1], i); - data += 2; - } - } - if (x != state->xsize) { - /* didn't unpack whole line */ - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - } - break; - case 16: - /* COPY chunk */ - for (y = 0; y < state->ysize; y++) { - UINT8* buf = (UINT8*) im->image[y]; - memcpy(buf+x, data, state->xsize); - data += state->xsize; - } - break; - case 18: - /* PSTAMP chunk */ - break; /* ignored */ - default: - /* unknown chunk */ - /* printf("unknown FLI/FLC chunk: %d\n", I16(ptr+4)); */ - state->errcode = IMAGING_CODEC_UNKNOWN; - return -1; - } - ptr += I32(ptr); - } - - return -1; /* end of frame */ -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c deleted file mode 100755 index 41f535b562d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Geometry.c +++ /dev/null @@ -1,959 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * the imaging geometry methods - * - * history: - * 1995-06-15 fl Created - * 1996-04-15 fl Changed origin - * 1996-05-18 fl Fixed rotate90/270 for rectangular images - * 1996-05-27 fl Added general purpose transform - * 1996-11-22 fl Don't crash when resizing from outside source image - * 1997-08-09 fl Fixed rounding error in resize - * 1998-09-21 fl Incorporated transformation patches (from Zircon #2) - * 1998-09-22 fl Added bounding box to transform engines - * 1999-02-03 fl Fixed bicubic filtering for RGB images - * 1999-02-16 fl Added fixed-point version of affine transform - * 2001-03-28 fl Fixed transform(EXTENT) for xoffset < 0 - * 2003-03-10 fl Compiler tweaks - * 2004-09-19 fl Fixed bilinear/bicubic filtering of LA images - * - * Copyright (c) 1997-2003 by Secret Labs AB - * Copyright (c) 1995-1997 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -/* Undef if you don't need resampling filters */ -#define WITH_FILTERS - -#define COORD(v) ((v) < 0.0 ? -1 : ((int)(v))) -#define FLOOR(v) ((v) < 0.0 ? ((int)floor(v)) : ((int)(v))) - -/* -------------------------------------------------------------------- */ -/* Transpose operations */ - -Imaging -ImagingFlipLeftRight(Imaging imOut, Imaging imIn) -{ - ImagingSectionCookie cookie; - int x, y, xr; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - if (imIn->xsize != imOut->xsize || imIn->ysize != imOut->ysize) - return (Imaging) ImagingError_Mismatch(); - - ImagingCopyInfo(imOut, imIn); - -#define FLIP_HORIZ(image)\ - for (y = 0; y < imIn->ysize; y++) {\ - xr = imIn->xsize-1;\ - for (x = 0; x < imIn->xsize; x++, xr--)\ - imOut->image[y][x] = imIn->image[y][xr];\ - } - - ImagingSectionEnter(&cookie); - - if (imIn->image8) - FLIP_HORIZ(image8) - else - FLIP_HORIZ(image32) - - ImagingSectionLeave(&cookie); - - return imOut; -} - - -Imaging -ImagingFlipTopBottom(Imaging imOut, Imaging imIn) -{ - ImagingSectionCookie cookie; - int y, yr; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - if (imIn->xsize != imOut->xsize || imIn->ysize != imOut->ysize) - return (Imaging) ImagingError_Mismatch(); - - ImagingCopyInfo(imOut, imIn); - - ImagingSectionEnter(&cookie); - - yr = imIn->ysize-1; - for (y = 0; y < imIn->ysize; y++, yr--) - memcpy(imOut->image[yr], imIn->image[y], imIn->linesize); - - ImagingSectionLeave(&cookie); - - return imOut; -} - - -Imaging -ImagingRotate90(Imaging imOut, Imaging imIn) -{ - ImagingSectionCookie cookie; - int x, y, xr; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - if (imIn->xsize != imOut->ysize || imIn->ysize != imOut->xsize) - return (Imaging) ImagingError_Mismatch(); - - ImagingCopyInfo(imOut, imIn); - -#define ROTATE_90(image)\ - for (y = 0; y < imIn->ysize; y++) {\ - xr = imIn->xsize-1;\ - for (x = 0; x < imIn->xsize; x++, xr--)\ - imOut->image[xr][y] = imIn->image[y][x];\ - } - - ImagingSectionEnter(&cookie); - - if (imIn->image8) - ROTATE_90(image8) - else - ROTATE_90(image32) - - ImagingSectionLeave(&cookie); - - return imOut; -} - - -Imaging -ImagingRotate180(Imaging imOut, Imaging imIn) -{ - ImagingSectionCookie cookie; - int x, y, xr, yr; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - if (imIn->xsize != imOut->xsize || imIn->ysize != imOut->ysize) - return (Imaging) ImagingError_Mismatch(); - - ImagingCopyInfo(imOut, imIn); - - yr = imIn->ysize-1; - -#define ROTATE_180(image)\ - for (y = 0; y < imIn->ysize; y++, yr--) {\ - xr = imIn->xsize-1;\ - for (x = 0; x < imIn->xsize; x++, xr--)\ - imOut->image[y][x] = imIn->image[yr][xr];\ - } - - ImagingSectionEnter(&cookie); - - if (imIn->image8) - ROTATE_180(image8) - else - ROTATE_180(image32) - - ImagingSectionLeave(&cookie); - - return imOut; -} - - -Imaging -ImagingRotate270(Imaging imOut, Imaging imIn) -{ - ImagingSectionCookie cookie; - int x, y, yr; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - if (imIn->xsize != imOut->ysize || imIn->ysize != imOut->xsize) - return (Imaging) ImagingError_Mismatch(); - - ImagingCopyInfo(imOut, imIn); - - yr = imIn->ysize - 1; - -#define ROTATE_270(image)\ - for (y = 0; y < imIn->ysize; y++, yr--)\ - for (x = 0; x < imIn->xsize; x++)\ - imOut->image[x][y] = imIn->image[yr][x]; - - ImagingSectionEnter(&cookie); - - if (imIn->image8) - ROTATE_270(image8) - else - ROTATE_270(image32) - - ImagingSectionLeave(&cookie); - - return imOut; -} - - -/* -------------------------------------------------------------------- */ -/* Transforms */ - -/* transform primitives (ImagingTransformMap) */ - -static int -affine_transform(double* xin, double* yin, int x, int y, void* data) -{ - /* full moon tonight. your compiler will generate bogus code - for simple expressions, unless you reorganize the code, or - install Service Pack 3 */ - - double* a = (double*) data; - double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; - double a3 = a[3]; double a4 = a[4]; double a5 = a[5]; - - xin[0] = a0 + a1*x + a2*y; - yin[0] = a3 + a4*x + a5*y; - - return 1; -} - -static int -perspective_transform(double* xin, double* yin, int x, int y, void* data) -{ - double* a = (double*) data; - double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; - double a3 = a[3]; double a4 = a[4]; double a5 = a[5]; - double a6 = a[6]; double a7 = a[7]; - - xin[0] = (a0 + a1*x + a2*y) / (a6*x + a7*y + 1); - yin[0] = (a3 + a4*x + a5*y) / (a6*x + a7*y + 1); - - return 1; -} - -#if 0 -static int -quadratic_transform(double* xin, double* yin, int x, int y, void* data) -{ - double* a = (double*) data; - - double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; double a3 = a[3]; - double a4 = a[4]; double a5 = a[5]; double a6 = a[6]; double a7 = a[7]; - double a8 = a[8]; double a9 = a[9]; double a10 = a[10]; double a11 = a[11]; - - xin[0] = a0 + a1*x + a2*y + a3*x*x + a4*x*y + a5*y*y; - yin[0] = a6 + a7*x + a8*y + a9*x*x + a10*x*y + a11*y*y; - - return 1; -} -#endif - -static int -quad_transform(double* xin, double* yin, int x, int y, void* data) -{ - /* quad warp: map quadrilateral to rectangle */ - - double* a = (double*) data; - double a0 = a[0]; double a1 = a[1]; double a2 = a[2]; double a3 = a[3]; - double a4 = a[4]; double a5 = a[5]; double a6 = a[6]; double a7 = a[7]; - - xin[0] = a0 + a1*x + a2*y + a3*x*y; - yin[0] = a4 + a5*x + a6*y + a7*x*y; - - return 1; -} - -/* transform filters (ImagingTransformFilter) */ - -#ifdef WITH_FILTERS - -static int -nearest_filter8(void* out, Imaging im, double xin, double yin, void* data) -{ - int x = COORD(xin); - int y = COORD(yin); - if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) - return 0; - ((UINT8*)out)[0] = im->image8[y][x]; - return 1; -} - -static int -nearest_filter16(void* out, Imaging im, double xin, double yin, void* data) -{ - int x = COORD(xin); - int y = COORD(yin); - if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) - return 0; - ((INT16*)out)[0] = ((INT16*)(im->image8[y]))[x]; - return 1; -} - -static int -nearest_filter32(void* out, Imaging im, double xin, double yin, void* data) -{ - int x = COORD(xin); - int y = COORD(yin); - if (x < 0 || x >= im->xsize || y < 0 || y >= im->ysize) - return 0; - ((INT32*)out)[0] = im->image32[y][x]; - return 1; -} - -#define XCLIP(im, x) ( ((x) < 0) ? 0 : ((x) < im->xsize) ? (x) : im->xsize-1 ) -#define YCLIP(im, y) ( ((y) < 0) ? 0 : ((y) < im->ysize) ? (y) : im->ysize-1 ) - -#define BILINEAR(v, a, b, d)\ - (v = (a) + ( (b) - (a) ) * (d)) - -#define BILINEAR_HEAD(type)\ - int x, y;\ - int x0, x1;\ - double v1, v2;\ - double dx, dy;\ - type* in;\ - if (xin < 0.0 || xin >= im->xsize || yin < 0.0 || yin >= im->ysize)\ - return 0;\ - xin -= 0.5;\ - yin -= 0.5;\ - x = FLOOR(xin);\ - y = FLOOR(yin);\ - dx = xin - x;\ - dy = yin - y; - -#define BILINEAR_BODY(type, image, step, offset) {\ - in = (type*) ((image)[YCLIP(im, y)] + offset);\ - x0 = XCLIP(im, x+0)*step;\ - x1 = XCLIP(im, x+1)*step;\ - BILINEAR(v1, in[x0], in[x1], dx);\ - if (y+1 >= 0 && y+1 < im->ysize) {\ - in = (type*) ((image)[y+1] + offset);\ - BILINEAR(v2, in[x0], in[x1], dx);\ - } else\ - v2 = v1;\ - BILINEAR(v1, v1, v2, dy);\ -} - -static int -bilinear_filter8(void* out, Imaging im, double xin, double yin, void* data) -{ - BILINEAR_HEAD(UINT8); - BILINEAR_BODY(UINT8, im->image8, 1, 0); - ((UINT8*)out)[0] = (UINT8) v1; - return 1; -} - -static int -bilinear_filter32I(void* out, Imaging im, double xin, double yin, void* data) -{ - BILINEAR_HEAD(INT32); - BILINEAR_BODY(INT32, im->image32, 1, 0); - ((INT32*)out)[0] = (INT32) v1; - return 1; -} - -static int -bilinear_filter32F(void* out, Imaging im, double xin, double yin, void* data) -{ - BILINEAR_HEAD(FLOAT32); - BILINEAR_BODY(FLOAT32, im->image32, 1, 0); - ((FLOAT32*)out)[0] = (FLOAT32) v1; - return 1; -} - -static int -bilinear_filter32LA(void* out, Imaging im, double xin, double yin, void* data) -{ - BILINEAR_HEAD(UINT8); - BILINEAR_BODY(UINT8, im->image, 4, 0); - ((UINT8*)out)[0] = (UINT8) v1; - ((UINT8*)out)[1] = (UINT8) v1; - ((UINT8*)out)[2] = (UINT8) v1; - BILINEAR_BODY(UINT8, im->image, 4, 3); - ((UINT8*)out)[3] = (UINT8) v1; - return 1; -} - -static int -bilinear_filter32RGB(void* out, Imaging im, double xin, double yin, void* data) -{ - int b; - BILINEAR_HEAD(UINT8); - for (b = 0; b < im->bands; b++) { - BILINEAR_BODY(UINT8, im->image, 4, b); - ((UINT8*)out)[b] = (UINT8) v1; - } - return 1; -} - -#define BICUBIC(v, v1, v2, v3, v4, d) {\ - double p1 = v2;\ - double p2 = -v1 + v3;\ - double p3 = 2*(v1 - v2) + v3 - v4;\ - double p4 = -v1 + v2 - v3 + v4;\ - v = p1 + (d)*(p2 + (d)*(p3 + (d)*p4));\ -} - -#define BICUBIC_HEAD(type)\ - int x = FLOOR(xin);\ - int y = FLOOR(yin);\ - int x0, x1, x2, x3;\ - double v1, v2, v3, v4;\ - double dx, dy;\ - type* in;\ - if (xin < 0.0 || xin >= im->xsize || yin < 0.0 || yin >= im->ysize)\ - return 0;\ - xin -= 0.5;\ - yin -= 0.5;\ - x = FLOOR(xin);\ - y = FLOOR(yin);\ - dx = xin - x;\ - dy = yin - y;\ - x--; y--; - -#define BICUBIC_BODY(type, image, step, offset) {\ - in = (type*) ((image)[YCLIP(im, y)] + offset);\ - x0 = XCLIP(im, x+0)*step;\ - x1 = XCLIP(im, x+1)*step;\ - x2 = XCLIP(im, x+2)*step;\ - x3 = XCLIP(im, x+3)*step;\ - BICUBIC(v1, in[x0], in[x1], in[x2], in[x3], dx);\ - if (y+1 >= 0 && y+1 < im->ysize) {\ - in = (type*) ((image)[y+1] + offset);\ - BICUBIC(v2, in[x0], in[x1], in[x2], in[x3], dx);\ - } else\ - v2 = v1;\ - if (y+2 >= 0 && y+2 < im->ysize) {\ - in = (type*) ((image)[y+2] + offset);\ - BICUBIC(v3, in[x0], in[x1], in[x2], in[x3], dx);\ - } else\ - v3 = v2;\ - if (y+3 >= 0 && y+3 < im->ysize) {\ - in = (type*) ((image)[y+3] + offset);\ - BICUBIC(v4, in[x0], in[x1], in[x2], in[x3], dx);\ - } else\ - v4 = v3;\ - BICUBIC(v1, v1, v2, v3, v4, dy);\ -} - - -static int -bicubic_filter8(void* out, Imaging im, double xin, double yin, void* data) -{ - BICUBIC_HEAD(UINT8); - BICUBIC_BODY(UINT8, im->image8, 1, 0); - if (v1 <= 0.0) - ((UINT8*)out)[0] = 0; - else if (v1 >= 255.0) - ((UINT8*)out)[0] = 255; - else - ((UINT8*)out)[0] = (UINT8) v1; - return 1; -} - -static int -bicubic_filter32I(void* out, Imaging im, double xin, double yin, void* data) -{ - BICUBIC_HEAD(INT32); - BICUBIC_BODY(INT32, im->image32, 1, 0); - ((INT32*)out)[0] = (INT32) v1; - return 1; -} - -static int -bicubic_filter32F(void* out, Imaging im, double xin, double yin, void* data) -{ - BICUBIC_HEAD(FLOAT32); - BICUBIC_BODY(FLOAT32, im->image32, 1, 0); - ((FLOAT32*)out)[0] = (FLOAT32) v1; - return 1; -} - -static int -bicubic_filter32LA(void* out, Imaging im, double xin, double yin, void* data) -{ - BICUBIC_HEAD(UINT8); - BICUBIC_BODY(UINT8, im->image, 4, 0); - if (v1 <= 0.0) { - ((UINT8*)out)[0] = 0; - ((UINT8*)out)[1] = 0; - ((UINT8*)out)[2] = 0; - } else if (v1 >= 255.0) { - ((UINT8*)out)[0] = 255; - ((UINT8*)out)[1] = 255; - ((UINT8*)out)[2] = 255; - } else { - ((UINT8*)out)[0] = (UINT8) v1; - ((UINT8*)out)[1] = (UINT8) v1; - ((UINT8*)out)[2] = (UINT8) v1; - } - BICUBIC_BODY(UINT8, im->image, 4, 3); - if (v1 <= 0.0) - ((UINT8*)out)[3] = 0; - else if (v1 >= 255.0) - ((UINT8*)out)[3] = 255; - else - ((UINT8*)out)[3] = (UINT8) v1; - return 1; -} - -static int -bicubic_filter32RGB(void* out, Imaging im, double xin, double yin, void* data) -{ - int b; - BICUBIC_HEAD(UINT8); - for (b = 0; b < im->bands; b++) { - BICUBIC_BODY(UINT8, im->image, 4, b); - if (v1 <= 0.0) - ((UINT8*)out)[b] = 0; - else if (v1 >= 255.0) - ((UINT8*)out)[b] = 255; - else - ((UINT8*)out)[b] = (UINT8) v1; - } - return 1; -} - -static ImagingTransformFilter -getfilter(Imaging im, int filterid) -{ - switch (filterid) { - case IMAGING_TRANSFORM_NEAREST: - if (im->image8) - switch (im->type) { - case IMAGING_TYPE_UINT8: - return (ImagingTransformFilter) nearest_filter8; - case IMAGING_TYPE_SPECIAL: - switch (im->pixelsize) { - case 1: - return (ImagingTransformFilter) nearest_filter8; - case 2: - return (ImagingTransformFilter) nearest_filter16; - case 4: - return (ImagingTransformFilter) nearest_filter32; - } - } - else - return (ImagingTransformFilter) nearest_filter32; - break; - case IMAGING_TRANSFORM_BILINEAR: - if (im->image8) - return (ImagingTransformFilter) bilinear_filter8; - else if (im->image32) { - switch (im->type) { - case IMAGING_TYPE_UINT8: - if (im->bands == 2) - return (ImagingTransformFilter) bilinear_filter32LA; - else - return (ImagingTransformFilter) bilinear_filter32RGB; - case IMAGING_TYPE_INT32: - return (ImagingTransformFilter) bilinear_filter32I; - case IMAGING_TYPE_FLOAT32: - return (ImagingTransformFilter) bilinear_filter32F; - } - } - break; - case IMAGING_TRANSFORM_BICUBIC: - if (im->image8) - return (ImagingTransformFilter) bicubic_filter8; - else if (im->image32) { - switch (im->type) { - case IMAGING_TYPE_UINT8: - if (im->bands == 2) - return (ImagingTransformFilter) bicubic_filter32LA; - else - return (ImagingTransformFilter) bicubic_filter32RGB; - case IMAGING_TYPE_INT32: - return (ImagingTransformFilter) bicubic_filter32I; - case IMAGING_TYPE_FLOAT32: - return (ImagingTransformFilter) bicubic_filter32F; - } - } - break; - } - /* no such filter */ - return NULL; -} - -#else -#define getfilter(im, id) NULL -#endif - -/* transformation engines */ - -Imaging -ImagingTransform( - Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, - ImagingTransformMap transform, void* transform_data, - ImagingTransformFilter filter, void* filter_data, - int fill) -{ - /* slow generic transformation. use ImagingTransformAffine or - ImagingScaleAffine where possible. */ - - ImagingSectionCookie cookie; - int x, y; - char *out; - double xx, yy; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - - ImagingCopyInfo(imOut, imIn); - - ImagingSectionEnter(&cookie); - - if (x0 < 0) - x0 = 0; - if (y0 < 0) - y0 = 0; - if (x1 > imOut->xsize) - x1 = imOut->xsize; - if (y1 > imOut->ysize) - y1 = imOut->ysize; - - for (y = y0; y < y1; y++) { - out = imOut->image[y] + x0*imOut->pixelsize; - for (x = x0; x < x1; x++) { - if (!transform(&xx, &yy, x-x0, y-y0, transform_data) || - !filter(out, imIn, xx, yy, filter_data)) { - if (fill) - memset(out, 0, imOut->pixelsize); - } - out += imOut->pixelsize; - } - } - - ImagingSectionLeave(&cookie); - - return imOut; -} - -static Imaging -ImagingScaleAffine(Imaging imOut, Imaging imIn, - int x0, int y0, int x1, int y1, - double a[6], int fill) -{ - /* scale, nearest neighbour resampling */ - - ImagingSectionCookie cookie; - int x, y; - int xin; - double xo, yo; - int xmin, xmax; - int *xintab; - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - - ImagingCopyInfo(imOut, imIn); - - if (x0 < 0) - x0 = 0; - if (y0 < 0) - y0 = 0; - if (x1 > imOut->xsize) - x1 = imOut->xsize; - if (y1 > imOut->ysize) - y1 = imOut->ysize; - - xintab = (int*) malloc(imOut->xsize * sizeof(int)); - if (!xintab) { - ImagingDelete(imOut); - return (Imaging) ImagingError_MemoryError(); - } - - xo = a[0]; - yo = a[3]; - - xmin = x1; - xmax = x0; - - /* Pretabulate horizontal pixel positions */ - for (x = x0; x < x1; x++) { - xin = COORD(xo); - if (xin >= 0 && xin < (int) imIn->xsize) { - xmax = x+1; - if (x < xmin) - xmin = x; - xintab[x] = xin; - } - xo += a[1]; - } - -#define AFFINE_SCALE(pixel, image)\ - for (y = y0; y < y1; y++) {\ - int yi = COORD(yo);\ - pixel *in, *out;\ - out = imOut->image[y];\ - if (fill && x1 > x0)\ - memset(out+x0, 0, (x1-x0)*sizeof(pixel));\ - if (yi >= 0 && yi < imIn->ysize) {\ - in = imIn->image[yi];\ - for (x = xmin; x < xmax; x++)\ - out[x] = in[xintab[x]];\ - }\ - yo += a[5];\ - } - - ImagingSectionEnter(&cookie); - - if (imIn->image8) { - AFFINE_SCALE(UINT8, image8); - } else { - AFFINE_SCALE(INT32, image32); - } - - ImagingSectionLeave(&cookie); - - free(xintab); - - return imOut; -} - -static inline int -check_fixed(double a[6], int x, int y) -{ - return (fabs(a[0] + x*a[1] + y*a[2]) < 32768.0 && - fabs(a[3] + x*a[4] + y*a[5]) < 32768.0); -} - -static inline Imaging -affine_fixed(Imaging imOut, Imaging imIn, - int x0, int y0, int x1, int y1, - double a[6], int filterid, int fill) -{ - /* affine transform, nearest neighbour resampling, fixed point - arithmetics */ - - int x, y; - int xin, yin; - int xsize, ysize; - int xx, yy; - int a0, a1, a2, a3, a4, a5; - - ImagingCopyInfo(imOut, imIn); - - xsize = (int) imIn->xsize; - ysize = (int) imIn->ysize; - -/* use 16.16 fixed point arithmetics */ -#define FIX(v) FLOOR((v)*65536.0 + 0.5) - - a0 = FIX(a[0]); a1 = FIX(a[1]); a2 = FIX(a[2]); - a3 = FIX(a[3]); a4 = FIX(a[4]); a5 = FIX(a[5]); - -#define AFFINE_TRANSFORM_FIXED(pixel, image)\ - for (y = y0; y < y1; y++) {\ - pixel *out;\ - xx = a0;\ - yy = a3;\ - out = imOut->image[y];\ - if (fill && x1 > x0)\ - memset(out+x0, 0, (x1-x0)*sizeof(pixel));\ - for (x = x0; x < x1; x++, out++) {\ - xin = xx >> 16;\ - if (xin >= 0 && xin < xsize) {\ - yin = yy >> 16;\ - if (yin >= 0 && yin < ysize)\ - *out = imIn->image[yin][xin];\ - }\ - xx += a1;\ - yy += a4;\ - }\ - a0 += a2;\ - a3 += a5;\ - } - - if (imIn->image8) - AFFINE_TRANSFORM_FIXED(UINT8, image8) - else - AFFINE_TRANSFORM_FIXED(INT32, image32) - - return imOut; -} - -Imaging -ImagingTransformAffine(Imaging imOut, Imaging imIn, - int x0, int y0, int x1, int y1, - double a[6], int filterid, int fill) -{ - /* affine transform, nearest neighbour resampling, floating point - arithmetics*/ - - ImagingSectionCookie cookie; - int x, y; - int xin, yin; - int xsize, ysize; - double xx, yy; - double xo, yo; - - if (filterid || imIn->type == IMAGING_TYPE_SPECIAL) { - /* Filtered transform */ - ImagingTransformFilter filter = getfilter(imIn, filterid); - if (!filter) - return (Imaging) ImagingError_ValueError("unknown filter"); - return ImagingTransform( - imOut, imIn, - x0, y0, x1, y1, - affine_transform, a, - filter, NULL, fill); - } - - if (a[2] == 0 && a[4] == 0) - /* Scaling */ - return ImagingScaleAffine(imOut, imIn, x0, y0, x1, y1, a, fill); - - if (!imOut || !imIn || strcmp(imIn->mode, imOut->mode) != 0) - return (Imaging) ImagingError_ModeError(); - - if (x0 < 0) - x0 = 0; - if (y0 < 0) - y0 = 0; - if (x1 > imOut->xsize) - x1 = imOut->xsize; - if (y1 > imOut->ysize) - y1 = imOut->ysize; - - ImagingCopyInfo(imOut, imIn); - - /* translate all four corners to check if they are within the - range that can be represented by the fixed point arithmetics */ - - if (check_fixed(a, 0, 0) && check_fixed(a, x1-x0, y1-y0) && - check_fixed(a, 0, y1-y0) && check_fixed(a, x1-x0, 0)) - return affine_fixed(imOut, imIn, x0, y0, x1, y1, a, filterid, fill); - - /* FIXME: cannot really think of any reasonable case when the - following code is used. maybe we should fall back on the slow - generic transform engine in this case? */ - - xsize = (int) imIn->xsize; - ysize = (int) imIn->ysize; - - xo = a[0]; - yo = a[3]; - -#define AFFINE_TRANSFORM(pixel, image)\ - for (y = y0; y < y1; y++) {\ - pixel *out;\ - xx = xo;\ - yy = yo;\ - out = imOut->image[y];\ - if (fill && x1 > x0)\ - memset(out+x0, 0, (x1-x0)*sizeof(pixel));\ - for (x = x0; x < x1; x++, out++) {\ - xin = COORD(xx);\ - if (xin >= 0 && xin < xsize) {\ - yin = COORD(yy);\ - if (yin >= 0 && yin < ysize)\ - *out = imIn->image[yin][xin];\ - }\ - xx += a[1];\ - yy += a[4];\ - }\ - xo += a[2];\ - yo += a[5];\ - } - - ImagingSectionEnter(&cookie); - - if (imIn->image8) - AFFINE_TRANSFORM(UINT8, image8) - else - AFFINE_TRANSFORM(INT32, image32) - - ImagingSectionLeave(&cookie); - - return imOut; -} - -Imaging -ImagingTransformPerspective(Imaging imOut, Imaging imIn, - int x0, int y0, int x1, int y1, - double a[8], int filterid, int fill) -{ - ImagingTransformFilter filter = getfilter(imIn, filterid); - if (!filter) - return (Imaging) ImagingError_ValueError("bad filter number"); - - return ImagingTransform( - imOut, imIn, - x0, y0, x1, y1, - perspective_transform, a, - filter, NULL, - fill); -} - -Imaging -ImagingTransformQuad(Imaging imOut, Imaging imIn, - int x0, int y0, int x1, int y1, - double a[8], int filterid, int fill) -{ - ImagingTransformFilter filter = getfilter(imIn, filterid); - if (!filter) - return (Imaging) ImagingError_ValueError("bad filter number"); - - return ImagingTransform( - imOut, imIn, - x0, y0, x1, y1, - quad_transform, a, - filter, NULL, - fill); -} - -/* -------------------------------------------------------------------- */ -/* Convenience functions */ - -Imaging -ImagingResize(Imaging imOut, Imaging imIn, int filterid) -{ - double a[6]; - - if (imOut->xsize == imIn->xsize && imOut->ysize == imIn->ysize) - return ImagingCopy2(imOut, imIn); - - memset(a, 0, sizeof a); - a[1] = (double) imIn->xsize / imOut->xsize; - a[5] = (double) imIn->ysize / imOut->ysize; - - if (!filterid && imIn->type != IMAGING_TYPE_SPECIAL) - return ImagingScaleAffine( - imOut, imIn, - 0, 0, imOut->xsize, imOut->ysize, - a, 1); - - return ImagingTransformAffine( - imOut, imIn, - 0, 0, imOut->xsize, imOut->ysize, - a, filterid, 1); -} - -Imaging -ImagingRotate(Imaging imOut, Imaging imIn, double theta, int filterid) -{ - int xsize, ysize; - double sintheta, costheta; - double a[6]; - - /* Setup an affine transform to rotate around the image center */ - theta = -theta * M_PI / 180.0; - sintheta = sin(theta); - costheta = cos(theta); - - xsize = imOut->xsize; - ysize = imOut->ysize; - - a[0] = -costheta * xsize/2 - sintheta * ysize/2 + xsize/2; - a[1] = costheta; - a[2] = sintheta; - a[3] = sintheta * xsize/2 - costheta * ysize/2 + ysize/2; - a[4] = -sintheta; - a[5] = costheta; - - return ImagingTransformAffine( - imOut, imIn, - 0, 0, imOut->xsize, imOut->ysize, - a, filterid, 1); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c deleted file mode 100755 index d1722fe1488..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GetBBox.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * helpers to bounding boxes, min/max values, number of colors, etc. - * - * history: - * 1996-07-22 fl Created - * 1996-12-30 fl Added projection stuff - * 1998-07-12 fl Added extrema stuff - * 2004-09-17 fl Added colors stuff - * - * Copyright (c) 1997-2004 by Secret Labs AB. - * Copyright (c) 1996-2004 by Fredrik Lundh. - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingGetBBox(Imaging im, int bbox[4]) -{ - /* Get the bounding box for any non-zero data in the image.*/ - - int x, y; - int has_data; - - /* Initialize bounding box to max values */ - bbox[0] = im->xsize; - bbox[1] = -1; - bbox[2] = bbox[3] = 0; - -#define GETBBOX(image, mask)\ - for (y = 0; y < im->ysize; y++) {\ - has_data = 0;\ - for (x = 0; x < im->xsize; x++)\ - if (im->image[y][x] & mask) {\ - has_data = 1;\ - if (x < bbox[0])\ - bbox[0] = x;\ - if (x >= bbox[2])\ - bbox[2] = x+1;\ - }\ - if (has_data) {\ - if (bbox[1] < 0)\ - bbox[1] = y;\ - bbox[3] = y+1;\ - }\ - } - - if (im->image8) { - GETBBOX(image8, 0xff); - } else { - INT32 mask = 0xffffffff; - if (im->bands == 3) - ((UINT8*) &mask)[3] = 0; - GETBBOX(image32, mask); - } - - /* Check that we got a box */ - if (bbox[1] < 0) - return 0; /* no data */ - - return 1; /* ok */ -} - - -int -ImagingGetProjection(Imaging im, UINT8* xproj, UINT8* yproj) -{ - /* Get projection arrays for non-zero data in the image.*/ - - int x, y; - int has_data; - - /* Initialize projection arrays */ - memset(xproj, 0, im->xsize); - memset(yproj, 0, im->ysize); - -#define GETPROJ(image, mask)\ - for (y = 0; y < im->ysize; y++) {\ - has_data = 0;\ - for (x = 0; x < im->xsize; x++)\ - if (im->image[y][x] & mask) {\ - has_data = 1;\ - xproj[x] = 1;\ - }\ - if (has_data)\ - yproj[y] = 1;\ - } - - if (im->image8) { - GETPROJ(image8, 0xff); - } else { - INT32 mask = 0xffffffff; - if (im->bands == 3) - ((UINT8*) &mask)[3] = 0; - GETPROJ(image32, mask); - } - - return 1; /* ok */ -} - - -int -ImagingGetExtrema(Imaging im, void *extrema) -{ - int x, y; - INT32 imin, imax; - FLOAT32 fmin, fmax; - - if (im->bands != 1) { - (void) ImagingError_ModeError(); - return -1; /* mismatch */ - } - - if (!im->xsize || !im->ysize) - return 0; /* zero size */ - - switch (im->type) { - case IMAGING_TYPE_UINT8: - imin = imax = im->image8[0][0]; - for (y = 0; y < im->ysize; y++) { - UINT8* in = im->image8[y]; - for (x = 0; x < im->xsize; x++) { - if (imin > in[x]) - imin = in[x]; - else if (imax < in[x]) - imax = in[x]; - } - } - ((UINT8*) extrema)[0] = (UINT8) imin; - ((UINT8*) extrema)[1] = (UINT8) imax; - break; - case IMAGING_TYPE_INT32: - imin = imax = im->image32[0][0]; - for (y = 0; y < im->ysize; y++) { - INT32* in = im->image32[y]; - for (x = 0; x < im->xsize; x++) { - if (imin > in[x]) - imin = in[x]; - else if (imax < in[x]) - imax = in[x]; - } - } - ((INT32*) extrema)[0] = imin; - ((INT32*) extrema)[1] = imax; - break; - case IMAGING_TYPE_FLOAT32: - fmin = fmax = ((FLOAT32*) im->image32[0])[0]; - for (y = 0; y < im->ysize; y++) { - FLOAT32* in = (FLOAT32*) im->image32[y]; - for (x = 0; x < im->xsize; x++) { - if (fmin > in[x]) - fmin = in[x]; - else if (fmax < in[x]) - fmax = in[x]; - } - } - ((FLOAT32*) extrema)[0] = fmin; - ((FLOAT32*) extrema)[1] = fmax; - break; - case IMAGING_TYPE_SPECIAL: - if (strcmp(im->mode, "I;16") == 0) { - imin = imax = ((UINT16*) im->image8[0])[0]; - for (y = 0; y < im->ysize; y++) { - UINT16* in = (UINT16 *) im->image[y]; - for (x = 0; x < im->xsize; x++) { - if (imin > in[x]) - imin = in[x]; - else if (imax < in[x]) - imax = in[x]; - } - } - ((UINT16*) extrema)[0] = (UINT16) imin; - ((UINT16*) extrema)[1] = (UINT16) imax; - break; - } - /* FALL THROUGH */ - default: - (void) ImagingError_ModeError(); - return -1; - } - return 1; /* ok */ -} - - -/* static ImagingColorItem* getcolors8(Imaging im, int maxcolors, int* size);*/ -static ImagingColorItem* getcolors32(Imaging im, int maxcolors, int* size); - -ImagingColorItem* -ImagingGetColors(Imaging im, int maxcolors, int* size) -{ - /* FIXME: add support for 8-bit images */ - return getcolors32(im, maxcolors, size); -} - -static ImagingColorItem* -getcolors32(Imaging im, int maxcolors, int* size) -{ - unsigned int h; - unsigned int i, incr; - int colors; - INT32 pixel_mask; - int x, y; - ImagingColorItem* table; - ImagingColorItem* v; - - unsigned int code_size; - unsigned int code_poly; - unsigned int code_mask; - - /* note: the hash algorithm used here is based on the dictionary - code in Python 2.1.3; the exact implementation is borrowed from - Python's Unicode property database (written by yours truly) /F */ - - static int SIZES[] = { - 4,3, 8,3, 16,3, 32,5, 64,3, 128,3, 256,29, 512,17, 1024,9, 2048,5, - 4096,83, 8192,27, 16384,43, 32768,3, 65536,45, 131072,9, 262144,39, - 524288,39, 1048576,9, 2097152,5, 4194304,3, 8388608,33, 16777216,27, - 33554432,9, 67108864,71, 134217728,39, 268435456,9, 536870912,5, - 1073741824,83, 0 - }; - - code_size = code_poly = code_mask = 0; - - for (i = 0; SIZES[i]; i += 2) { - if (SIZES[i] > maxcolors) { - code_size = SIZES[i]; - code_poly = SIZES[i+1]; - code_mask = code_size - 1; - break; - } - } - - /* printf("code_size=%d\n", code_size); */ - /* printf("code_poly=%d\n", code_poly); */ - - if (!code_size) - return ImagingError_MemoryError(); /* just give up */ - - if (!im->image32) - return ImagingError_ModeError(); - - table = calloc(code_size + 1, sizeof(ImagingColorItem)); - if (!table) - return ImagingError_MemoryError(); - - pixel_mask = 0xffffffff; - if (im->bands == 3) - ((UINT8*) &pixel_mask)[3] = 0; - - colors = 0; - - for (y = 0; y < im->ysize; y++) { - INT32* p = im->image32[y]; - for (x = 0; x < im->xsize; x++) { - INT32 pixel = p[x] & pixel_mask; - h = (pixel); /* null hashing */ - i = (~h) & code_mask; - v = &table[i]; - if (!v->count) { - /* add to table */ - if (colors++ == maxcolors) - goto overflow; - v->x = x; v->y = y; - v->pixel = pixel; - v->count = 1; - continue; - } else if (v->pixel == pixel) { - v->count++; - continue; - } - incr = (h ^ (h >> 3)) & code_mask; - if (!incr) - incr = code_mask; - for (;;) { - i = (i + incr) & code_mask; - v = &table[i]; - if (!v->count) { - /* add to table */ - if (colors++ == maxcolors) - goto overflow; - v->x = x; v->y = y; - v->pixel = pixel; - v->count = 1; - break; - } else if (v->pixel == pixel) { - v->count++; - break; - } - incr = incr << 1; - if (incr > code_mask) - incr = incr ^ code_poly; - } - } - } - -overflow: - - /* pack the table */ - for (x = y = 0; x < (int) code_size; x++) - if (table[x].count) { - if (x != y) - table[y] = table[x]; - y++; - } - table[y].count = 0; /* mark end of table */ - - *size = colors; - - return table; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h deleted file mode 100755 index 85d428b0d2d..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Gif.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * Declarations for a fast, suspendable GIF decoder. - * - * Copyright (c) Fredrik Lundh 1995-96. - */ - - -/* Max size for a LZW code word. */ - -#define GIFBITS 12 - -#define GIFTABLE (1< -#include /* memcpy() */ - -#include "Gif.h" - - -#define NEWLINE(state, context) {\ - state->x = 0;\ - state->y += context->step;\ - while (state->y >= state->ysize)\ - switch (context->interlace) {\ - case 1:\ - context->repeat = state->y = 4;\ - context->interlace = 2;\ - break;\ - case 2:\ - context->step = 4;\ - context->repeat = state->y = 2;\ - context->interlace = 3;\ - break;\ - case 3:\ - context->step = 2;\ - context->repeat = state->y = 1;\ - context->interlace = 0;\ - break;\ - default:\ - return -1;\ - }\ - if (state->y < state->ysize)\ - out = im->image8[state->y + state->yoff] + state->xoff;\ -} - - -int -ImagingGifDecode(Imaging im, ImagingCodecState state, UINT8* buffer, int bytes) -{ - UINT8* p; - UINT8* out; - int c, i; - int thiscode; - GIFDECODERSTATE *context = (GIFDECODERSTATE*) state->context; - - UINT8 *ptr = buffer; - - if (!state->state) { - - /* Initialise state */ - if (context->bits < 0 || context->bits > 8) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - - /* Clear code */ - context->clear = 1 << context->bits; - - /* End code */ - context->end = context->clear + 1; - - /* Interlace */ - if (context->interlace) { - context->interlace = 1; - context->step = context->repeat = 8; - } else - context->step = 1; - - state->state = 1; - } - - out = im->image8[state->y + state->yoff] + state->xoff + state->x; - - for (;;) { - - if (state->state == 1) { - - /* First free entry in table */ - context->next = context->clear + 2; - - /* Initial code size */ - context->codesize = context->bits + 1; - context->codemask = (1 << context->codesize) - 1; - - /* Buffer pointer. We fill the buffer from right, which - allows us to return all of it in one operation. */ - context->bufferindex = GIFBUFFER; - - state->state = 2; - } - - if (context->bufferindex < GIFBUFFER) { - - /* Return whole buffer in one chunk */ - i = GIFBUFFER - context->bufferindex; - p = &context->buffer[context->bufferindex]; - - context->bufferindex = GIFBUFFER; - - } else { - - /* Get current symbol */ - - while (context->bitcount < context->codesize) { - - if (context->blocksize > 0) { - - /* Read next byte */ - c = *ptr++; bytes--; - - context->blocksize--; - - /* New bits are shifted in from from the left. */ - context->bitbuffer |= (INT32) c << context->bitcount; - context->bitcount += 8; - - } else { - - /* New GIF block */ - - /* We don't start decoding unless we have a full block */ - if (bytes < 1) - return ptr - buffer; - c = *ptr; - if (bytes < c+1) - return ptr - buffer; - - context->blocksize = c; - - ptr++; bytes--; - - } - } - - /* Extract current symbol from bit buffer. */ - c = (int) context->bitbuffer & context->codemask; - - /* Adjust buffer */ - context->bitbuffer >>= context->codesize; - context->bitcount -= context->codesize; - - /* If c is less than "clear", it's a data byte. Otherwise, - it's either clear/end or a code symbol which should be - expanded. */ - - if (c == context->clear) { - if (state->state != 2) - state->state = 1; - continue; - } - - if (c == context->end) - break; - - i = 1; - p = &context->lastdata; - - if (state->state == 2) { - - /* First valid symbol after clear; use as is */ - if (c > context->clear) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - context->lastdata = context->lastcode = c; - state->state = 3; - - } else { - - thiscode = c; - - if (c > context->next) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - if (c == context->next) { - - /* c == next is allowed. not sure why. */ - - if (context->bufferindex <= 0) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - context->buffer[--context->bufferindex] = - context->lastdata; - - c = context->lastcode; - - } - - while (c >= context->clear) { - - /* Copy data string to buffer (beginning from right) */ - - if (context->bufferindex <= 0 || c >= GIFTABLE) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - context->buffer[--context->bufferindex] = - context->data[c]; - - c = context->link[c]; - } - - context->lastdata = c; - - if (context->next < GIFTABLE) { - - /* We'll only add this symbol if we have room - for it (take advise, Netscape!) */ - context->data[context->next] = c; - context->link[context->next] = context->lastcode; - - if (context->next == context->codemask && - context->codesize < GIFBITS) { - - /* Expand code size */ - context->codesize++; - context->codemask = (1 << context->codesize) - 1; - } - - context->next++; - - } - - context->lastcode = thiscode; - - } - } - - /* Copy the bytes into the image */ - if (state->y >= state->ysize) { - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - /* To squeeze some extra pixels out of this loop, we test for - some common cases and handle them separately. */ - - /* FIXME: should we handle the transparency index in here??? */ - - if (i == 1) { - if (state->x < state->xsize-1) { - /* Single pixel, not at the end of the line. */ - *out++ = p[0]; - state->x++; - continue; - } - } else if (state->x + i <= state->xsize) { - /* This string fits into current line. */ - memcpy(out, p, i); - out += i; - state->x += i; - if (state->x == state->xsize) { - NEWLINE(state, context); - } - continue; - } - - /* No shortcut, copy pixel by pixel */ - for (c = 0; c < i; c++) { - *out++ = p[c]; - if (++state->x >= state->xsize) { - NEWLINE(state, context); - } - } - } - - return ptr - buffer; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c deleted file mode 100755 index f4d07598fce..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/GifEncode.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * encoder for uncompressed GIF data - * - * history: - * 97-01-05 fl created (writes uncompressed data) - * 97-08-27 fl fixed off-by-one error in buffer size test - * 98-07-09 fl added interlace write support - * 99-02-07 fl rewritten, now uses a run-length encoding strategy - * 99-02-08 fl improved run-length encoding for long runs - * - * Copyright (c) Secret Labs AB 1997-99. - * Copyright (c) Fredrik Lundh 1997. - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -#include "Gif.h" - -/* codes from 0 to 255 are literals */ -#define CLEAR_CODE 256 -#define EOF_CODE 257 -#define FIRST_CODE 258 -#define LAST_CODE 511 - -enum { INIT, ENCODE, ENCODE_EOF, FLUSH, EXIT }; - -/* to make things a little less complicated, we use a simple output - queue to hold completed blocks. the following inlined function - adds a byte to the current block. it allocates a new block if - necessary. */ - -static inline int -emit(GIFENCODERSTATE *context, int byte) -{ - /* write a byte to the output buffer */ - - if (!context->block || context->block->size == 255) { - GIFENCODERBLOCK* block; - - /* no room in the current block (or no current block); - allocate a new one */ - - /* add current block to end of flush queue */ - if (context->block) { - block = context->flush; - while (block && block->next) - block = block->next; - if (block) - block->next = context->block; - else - context->flush = context->block; - } - - /* get a new block */ - if (context->free) { - block = context->free; - context->free = NULL; - } else { - block = malloc(sizeof(GIFENCODERBLOCK)); - if (!block) - return 0; - } - - block->size = 0; - block->next = NULL; - - context->block = block; - - } - - /* write new byte to block */ - context->block->data[context->block->size++] = byte; - - return 1; -} - -/* write a code word to the current block. this is a macro to make - sure it's inlined on all platforms */ - -#define EMIT(code) {\ - context->bitbuffer |= ((INT32) (code)) << context->bitcount;\ - context->bitcount += 9;\ - while (context->bitcount >= 8) {\ - if (!emit(context, (UINT8) context->bitbuffer)) {\ - state->errcode = IMAGING_CODEC_MEMORY;\ - return 0;\ - }\ - context->bitbuffer >>= 8;\ - context->bitcount -= 8;\ - }\ -} - -/* write a run. we use a combination of literals and combinations of - literals. this can give quite decent compression for images with - long stretches of identical pixels. but remember: if you want - really good compression, use another file format. */ - -#define EMIT_RUN(label) {\ -label:\ - while (context->count > 0) {\ - int run = 2;\ - EMIT(context->last);\ - context->count--;\ - if (state->count++ == LAST_CODE) {\ - EMIT(CLEAR_CODE);\ - state->count = FIRST_CODE;\ - goto label;\ - }\ - while (context->count >= run) {\ - EMIT(state->count - 1);\ - context->count -= run;\ - run++;\ - if (state->count++ == LAST_CODE) {\ - EMIT(CLEAR_CODE);\ - state->count = FIRST_CODE;\ - goto label;\ - }\ - }\ - if (context->count > 1) {\ - EMIT(state->count - 1 - (run - context->count));\ - context->count = 0;\ - if (state->count++ == LAST_CODE) {\ - EMIT(CLEAR_CODE);\ - state->count = FIRST_CODE;\ - }\ - break;\ - }\ - }\ -} - -int -ImagingGifEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8* ptr; - int this; - - GIFENCODERBLOCK* block; - GIFENCODERSTATE *context = (GIFENCODERSTATE*) state->context; - - if (!state->state) { - - /* place a clear code in the output buffer */ - context->bitbuffer = CLEAR_CODE; - context->bitcount = 9; - - state->count = FIRST_CODE; - - if (context->interlace) { - context->interlace = 1; - context->step = 8; - } else - context->step = 1; - - context->last = -1; - - /* sanity check */ - if (state->xsize <= 0 || state->ysize <= 0) - state->state = ENCODE_EOF; - - } - - ptr = buf; - - for (;;) - - switch (state->state) { - - case INIT: - case ENCODE: - - /* identify and store a run of pixels */ - - if (state->x == 0 || state->x >= state->xsize) { - - if (!context->interlace && state->y >= state->ysize) { - state->state = ENCODE_EOF; - break; - } - - if (context->flush) { - state->state = FLUSH; - break; - } - - /* get another line of data */ - state->shuffle( - state->buffer, - (UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->xsize - ); - - state->x = 0; - - if (state->state == INIT) { - /* preload the run-length buffer and get going */ - context->last = state->buffer[0]; - context->count = state->x = 1; - state->state = ENCODE; - } - - /* step forward, according to the interlace settings */ - state->y += context->step; - while (context->interlace && state->y >= state->ysize) - switch (context->interlace) { - case 1: - state->y = 4; - context->interlace = 2; - break; - case 2: - context->step = 4; - state->y = 2; - context->interlace = 3; - break; - case 3: - context->step = 2; - state->y = 1; - context->interlace = 0; - break; - default: - /* just make sure we don't loop forever */ - context->interlace = 0; - } - - } - - this = state->buffer[state->x++]; - - if (this == context->last) - context->count++; - else { - EMIT_RUN(label1); - context->last = this; - context->count = 1; - } - break; - - - case ENCODE_EOF: - - /* write the final run */ - EMIT_RUN(label2); - - /* write an end of image marker */ - EMIT(EOF_CODE); - - /* empty the bit buffer */ - while (context->bitcount > 0) { - if (!emit(context, (UINT8) context->bitbuffer)) { - state->errcode = IMAGING_CODEC_MEMORY; - return 0; - } - context->bitbuffer >>= 8; - context->bitcount -= 8; - } - - /* flush the last block, and exit */ - if (context->block) { - GIFENCODERBLOCK* block; - block = context->flush; - while (block && block->next) - block = block->next; - if (block) - block->next = context->block; - else - context->flush = context->block; - context->block = NULL; - } - - state->state = EXIT; - - /* fall through... */ - - case EXIT: - case FLUSH: - - while (context->flush) { - - /* get a block from the flush queue */ - block = context->flush; - - if (block->size > 0) { - - /* make sure it fits into the output buffer */ - if (bytes < block->size+1) - return ptr - buf; - - ptr[0] = block->size; - memcpy(ptr+1, block->data, block->size); - - ptr += block->size+1; - bytes -= block->size+1; - - } - - context->flush = block->next; - - if (context->free) - free(context->free); - context->free = block; - - } - - if (state->state == EXIT) { - /* this was the last block! */ - if (context->free) - free(context->free); - state->errcode = IMAGING_CODEC_END; - return ptr - buf; - } - - state->state = ENCODE; - break; - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c deleted file mode 100755 index 14f5241dc5e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/HexDecode.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for hex encoded image data - * - * history: - * 96-05-16 fl Created - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#define HEX(v) ((v >= '0' && v <= '9') ? v - '0' :\ - (v >= 'a' && v <= 'f') ? v - 'a' + 10 :\ - (v >= 'A' && v <= 'F') ? v - 'A' + 10 : -1) - -int -ImagingHexDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8* ptr; - int a, b; - - ptr = buf; - - for (;;) { - - if (bytes < 2) - return ptr - buf; - - a = HEX(ptr[0]); - b = HEX(ptr[1]); - - if (a < 0 || b < 0) { - - ptr++; - bytes--; - - } else { - - ptr += 2; - bytes -= 2; - - state->buffer[state->x] = (a<<4) + b; - - if (++state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y], state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - } - - } - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c deleted file mode 100755 index 513c844756e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Histo.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * histogram support - * - * history: - * 1995-06-15 fl Created. - * 1996-04-05 fl Fixed histogram for multiband images. - * 1997-02-23 fl Added mask support - * 1998-07-01 fl Added basic 32-bit float/integer support - * - * Copyright (c) 1997-2003 by Secret Labs AB. - * Copyright (c) 1995-2003 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -/* HISTOGRAM */ -/* -------------------------------------------------------------------- - * Take a histogram of an image. Returns a histogram object containing - * 256 slots per band in the input image. - */ - -void -ImagingHistogramDelete(ImagingHistogram h) -{ - if (h->histogram) - free(h->histogram); - free(h); -} - -ImagingHistogram -ImagingHistogramNew(Imaging im) -{ - ImagingHistogram h; - - /* Create histogram descriptor */ - h = calloc(1, sizeof(struct ImagingHistogramInstance)); - strcpy(h->mode, im->mode); - h->bands = im->bands; - h->histogram = calloc(im->pixelsize, 256 * sizeof(long)); - - return h; -} - -ImagingHistogram -ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) -{ - ImagingSectionCookie cookie; - int x, y, i; - ImagingHistogram h; - INT32 imin, imax; - FLOAT32 fmin, fmax, scale; - - if (!im) - return ImagingError_ModeError(); - - if (imMask) { - /* Validate mask */ - if (im->xsize != imMask->xsize || im->ysize != imMask->ysize) - return ImagingError_Mismatch(); - if (strcmp(imMask->mode, "1") != 0 && strcmp(imMask->mode, "L") != 0) - return ImagingError_ValueError("bad transparency mask"); - } - - h = ImagingHistogramNew(im); - - if (imMask) { - /* mask */ - if (im->image8) { - ImagingSectionEnter(&cookie); - for (y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++) - if (imMask->image8[y][x] != 0) - h->histogram[im->image8[y][x]]++; - ImagingSectionLeave(&cookie); - } else { /* yes, we need the braces. C isn't Python! */ - if (im->type != IMAGING_TYPE_UINT8) - return ImagingError_ModeError(); - ImagingSectionEnter(&cookie); - for (y = 0; y < im->ysize; y++) { - UINT8* in = (UINT8*) im->image32[y]; - for (x = 0; x < im->xsize; x++) - if (imMask->image8[y][x] != 0) { - h->histogram[(*in++)]++; - h->histogram[(*in++)+256]++; - h->histogram[(*in++)+512]++; - h->histogram[(*in++)+768]++; - } else - in += 4; - } - ImagingSectionLeave(&cookie); - } - } else { - /* mask not given; process pixels in image */ - if (im->image8) { - ImagingSectionEnter(&cookie); - for (y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++) - h->histogram[im->image8[y][x]]++; - ImagingSectionLeave(&cookie); - } else { - switch (im->type) { - case IMAGING_TYPE_UINT8: - ImagingSectionEnter(&cookie); - for (y = 0; y < im->ysize; y++) { - UINT8* in = (UINT8*) im->image[y]; - for (x = 0; x < im->xsize; x++) { - h->histogram[(*in++)]++; - h->histogram[(*in++)+256]++; - h->histogram[(*in++)+512]++; - h->histogram[(*in++)+768]++; - } - } - ImagingSectionLeave(&cookie); - break; - case IMAGING_TYPE_INT32: - if (!minmax) - return ImagingError_ValueError("min/max not given"); - if (!im->xsize || !im->ysize) - break; - imin = ((INT32*) minmax)[0]; - imax = ((INT32*) minmax)[1]; - if (imin >= imax) - break; - ImagingSectionEnter(&cookie); - scale = 255.0F / (imax - imin); - for (y = 0; y < im->ysize; y++) { - INT32* in = im->image32[y]; - for (x = 0; x < im->xsize; x++) { - i = (int) (((*in++)-imin)*scale); - if (i >= 0 && i < 256) - h->histogram[i]++; - } - } - ImagingSectionLeave(&cookie); - break; - case IMAGING_TYPE_FLOAT32: - if (!minmax) - return ImagingError_ValueError("min/max not given"); - if (!im->xsize || !im->ysize) - break; - fmin = ((FLOAT32*) minmax)[0]; - fmax = ((FLOAT32*) minmax)[1]; - if (fmin >= fmax) - break; - ImagingSectionEnter(&cookie); - scale = 255.0F / (fmax - fmin); - for (y = 0; y < im->ysize; y++) { - FLOAT32* in = (FLOAT32*) im->image32[y]; - for (x = 0; x < im->xsize; x++) { - i = (int) (((*in++)-fmin)*scale); - if (i >= 0 && i < 256) - h->histogram[i]++; - } - } - ImagingSectionLeave(&cookie); - break; - } - } - } - - return h; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h deleted file mode 100755 index 2effd387044..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImDib.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * Windows DIB specifics - * - * Copyright (c) Secret Labs AB 1997-98. - * Copyright (c) Fredrik Lundh 1996. - * - * See the README file for information on usage and redistribution. - */ - -#ifdef WIN32 - -#if (defined(_MSC_VER) && _MSC_VER >= 1200) || (defined __GNUC__) -/* already defined in basetsd.h */ -#undef INT32 -#undef INT64 -#undef UINT32 -#endif - -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -struct ImagingDIBInstance { - /* Windows interface */ - HDC dc; - HBITMAP bitmap; - HGDIOBJ old_bitmap; - BITMAPINFO *info; - UINT8 *bits; - HPALETTE palette; - /* Used by cut and paste */ - char mode[4]; - int xsize, ysize; - int pixelsize; - int linesize; - ImagingShuffler pack; - ImagingShuffler unpack; -}; - -typedef struct ImagingDIBInstance* ImagingDIB; - -extern char* ImagingGetModeDIB(int size_out[2]); - -extern ImagingDIB ImagingNewDIB(const char *mode, int xsize, int ysize); - -extern void ImagingDeleteDIB(ImagingDIB im); - -extern void ImagingDrawDIB(ImagingDIB dib, int dc, int dst[4], int src[4]); -extern void ImagingExposeDIB(ImagingDIB dib, int dc); - -extern int ImagingQueryPaletteDIB(ImagingDIB dib, int dc); - -extern void ImagingPasteDIB(ImagingDIB dib, Imaging im, int xy[4]); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h deleted file mode 100755 index 4ffd6fdef9e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ImPlatform.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * platform declarations for the imaging core library - * - * Copyright (c) Fredrik Lundh 1995-2003. - */ - -#include "Python.h" - -/* Check that we have an ANSI compliant compiler */ -#ifndef HAVE_PROTOTYPES -#error Sorry, this library requires support for ANSI prototypes. -#endif -#ifndef STDC_HEADERS -#error Sorry, this library requires ANSI header files. -#endif - -#if defined(_MSC_VER) -#ifndef WIN32 -#define WIN32 -#endif -/* VC++ 4.0 is a bit annoying when it comes to precision issues (like - claiming that "float a = 0.0;" would lead to loss of precision). I - don't like to see warnings from my code, but since I still want to - keep it readable, I simply switch off a few warnings instead of adding - the tons of casts that VC++ seem to require. This code is compiled - with numerous other compilers as well, so any real errors are likely - to be catched anyway. */ -#pragma warning(disable: 4244) /* conversion from 'float' to 'int' */ -#endif - -#if defined(_MSC_VER) -#define inline __inline -#elif !defined(USE_INLINE) -#define inline -#endif - -#if SIZEOF_SHORT == 2 -#define INT16 short -#elif SIZEOF_INT == 2 -#define INT16 int -#else -#define INT16 short /* most things works just fine anyway... */ -#endif - -#if SIZEOF_SHORT == 4 -#define INT32 short -#elif SIZEOF_INT == 4 -#define INT32 int -#elif SIZEOF_LONG == 4 -#define INT32 long -#else -#error Cannot find required 32-bit integer type -#endif - -#if SIZEOF_LONG == 8 -#define INT64 long -#elif SIZEOF_LONG_LONG == 8 -#define INT64 long -#endif - -/* assume IEEE; tweak if necessary (patches are welcome) */ -#define FLOAT32 float -#define FLOAT64 double - -#define INT8 signed char -#define UINT8 unsigned char - -#define UINT16 unsigned INT16 -#define UINT32 unsigned INT32 diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h deleted file mode 100755 index 4609376adda..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Imaging.h +++ /dev/null @@ -1,497 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * declarations for the imaging core library - * - * Copyright (c) 1997-2005 by Secret Labs AB - * Copyright (c) 1995-2005 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - - -#include "ImPlatform.h" - - -#if defined(__cplusplus) -extern "C" { -#endif - - -#ifndef M_PI -#define M_PI 3.14159265359 -#endif - - -/* -------------------------------------------------------------------- */ - -/* - * Image data organization: - * - * mode bytes byte order - * ------------------------------- - * 1 1 1 - * L 1 L - * P 1 P - * I 4 I (32-bit integer, native byte order) - * F 4 F (32-bit IEEE float, native byte order) - * RGB 4 R, G, B, - - * RGBA 4 R, G, B, A - * CMYK 4 C, M, Y, K - * YCbCr 4 Y, Cb, Cr, - - * - * experimental modes (incomplete): - * LA 4 L, -, -, A - * PA 4 P, -, -, A - * I;16 2 I (16-bit integer, native byte order) - * - * "P" is an 8-bit palette mode, which should be mapped through the - * palette member to get an output image. Check palette->mode to - * find the corresponding "real" mode. - * - * For information on how to access Imaging objects from your own C - * extensions, see http://www.effbot.org/zone/pil-extending.htm - */ - -/* Handles */ - -typedef struct ImagingMemoryInstance* Imaging; - -typedef struct ImagingAccessInstance* ImagingAccess; -typedef struct ImagingHistogramInstance* ImagingHistogram; -typedef struct ImagingOutlineInstance* ImagingOutline; -typedef struct ImagingPaletteInstance* ImagingPalette; - -/* handle magics (used with PyCObject). */ -#define IMAGING_MAGIC "PIL Imaging" - -/* pixel types */ -#define IMAGING_TYPE_UINT8 0 -#define IMAGING_TYPE_INT32 1 -#define IMAGING_TYPE_FLOAT32 2 -#define IMAGING_TYPE_SPECIAL 3 /* check mode for details */ - -struct ImagingMemoryInstance { - - /* Format */ - char mode[4+1]; /* Band names ("1", "L", "P", "RGB", "RGBA", "CMYK") */ - int type; /* Data type (IMAGING_TYPE_*) */ - int depth; /* Depth (ignored in this version) */ - int bands; /* Number of bands (1, 2, 3, or 4) */ - int xsize; /* Image dimension. */ - int ysize; - - /* Colour palette (for "P" images only) */ - ImagingPalette palette; - - /* Data pointers */ - UINT8 **image8; /* Set for 8-bit images (pixelsize=1). */ - INT32 **image32; /* Set for 32-bit images (pixelsize=4). */ - - /* Internals */ - char **image; /* Actual raster data. */ - char *block; /* Set if data is allocated in a single block. */ - - int pixelsize; /* Size of a pixel, in bytes (1, 2 or 4) */ - int linesize; /* Size of a line, in bytes (xsize * pixelsize) */ - - /* Virtual methods */ - void (*destroy)(Imaging im); -}; - - -#define IMAGING_PIXEL_1(im,x,y) ((im)->image8[(y)][(x)]) -#define IMAGING_PIXEL_L(im,x,y) ((im)->image8[(y)][(x)]) -#define IMAGING_PIXEL_LA(im,x,y) ((im)->image[(y)][(x)*4]) -#define IMAGING_PIXEL_P(im,x,y) ((im)->image8[(y)][(x)]) -#define IMAGING_PIXEL_PA(im,x,y) ((im)->image[(y)][(x)*4]) -#define IMAGING_PIXEL_I(im,x,y) ((im)->image32[(y)][(x)]) -#define IMAGING_PIXEL_F(im,x,y) (((FLOAT32*)(im)->image32[y])[x]) -#define IMAGING_PIXEL_RGB(im,x,y) ((im)->image[(y)][(x)*4]) -#define IMAGING_PIXEL_RGBA(im,x,y) ((im)->image[(y)][(x)*4]) -#define IMAGING_PIXEL_CMYK(im,x,y) ((im)->image[(y)][(x)*4]) -#define IMAGING_PIXEL_YCbCr(im,x,y) ((im)->image[(y)][(x)*4]) - -#define IMAGING_PIXEL_UINT8(im,x,y) ((im)->image8[(y)][(x)]) -#define IMAGING_PIXEL_INT32(im,x,y) ((im)->image32[(y)][(x)]) -#define IMAGING_PIXEL_FLOAT32(im,x,y) (((FLOAT32*)(im)->image32[y])[x]) - -struct ImagingAccessInstance { - const char* mode; - void* (*line)(Imaging im, int x, int y); - void (*get_pixel)(Imaging im, int x, int y, void* pixel); - void (*put_pixel)(Imaging im, int x, int y, const void* pixel); -}; - -struct ImagingHistogramInstance { - - /* Format */ - char mode[4+1]; /* Band names (of corresponding source image) */ - int bands; /* Number of bands (1, 3, or 4) */ - - /* Data */ - long *histogram; /* Histogram (bands*256 longs) */ - -}; - - -struct ImagingPaletteInstance { - - /* Format */ - char mode[4+1]; /* Band names */ - - /* Data */ - UINT8 palette[1024];/* Palette data (same format as image data) */ - - INT16* cache; /* Palette cache (used for predefined palettes) */ - int keep_cache; /* This palette will be reused; keep cache */ - -}; - - -/* Objects */ -/* ------- */ - -extern int ImagingNewCount; - -extern Imaging ImagingNew(const char* mode, int xsize, int ysize); -extern Imaging ImagingNew2(const char* mode, Imaging imOut, Imaging imIn); -extern void ImagingDelete(Imaging im); - -extern Imaging ImagingNewBlock(const char* mode, int xsize, int ysize); -extern Imaging ImagingNewArray(const char* mode, int xsize, int ysize); -extern Imaging ImagingNewMap(const char* filename, int readonly, - const char* mode, int xsize, int ysize); - -extern Imaging ImagingNewPrologue(const char *mode, - unsigned xsize, unsigned ysize); -extern Imaging ImagingNewPrologueSubtype(const char *mode, - unsigned xsize, unsigned ysize, - int structure_size); -extern Imaging ImagingNewEpilogue(Imaging im); - -extern void ImagingCopyInfo(Imaging destination, Imaging source); - -extern void ImagingHistogramDelete(ImagingHistogram histogram); - -extern void ImagingAccessInit(void); -extern ImagingAccess ImagingAccessNew(Imaging im); -extern void _ImagingAccessDelete(Imaging im, ImagingAccess access); -#define ImagingAccessDelete(im, access) /* nop, for now */ -/*#define ImagingAccessDelete(im, access) \ - ((access)->dynamic ? _ImagingAccessDelete((im), (access)), 0 : 0)) */ - -extern ImagingPalette ImagingPaletteNew(const char *mode); -extern ImagingPalette ImagingPaletteNewBrowser(void); -extern ImagingPalette ImagingPaletteDuplicate(ImagingPalette palette); -extern void ImagingPaletteDelete(ImagingPalette palette); - -extern int ImagingPaletteCachePrepare(ImagingPalette palette); -extern void ImagingPaletteCacheUpdate(ImagingPalette palette, - int r, int g, int b); -extern void ImagingPaletteCacheDelete(ImagingPalette palette); - -#define ImagingPaletteCache(p, r, g, b)\ - p->cache[(r>>2) + (g>>2)*64 + (b>>2)*64*64] - -extern Imaging ImagingQuantize(Imaging im, int colours, int mode, int kmeans); - -/* Threading */ -/* --------- */ - -typedef void* ImagingSectionCookie; - -extern void ImagingSectionEnter(ImagingSectionCookie* cookie); -extern void ImagingSectionLeave(ImagingSectionCookie* cookie); - -/* Exceptions */ -/* ---------- */ - -extern void* ImagingError_IOError(void); -extern void* ImagingError_MemoryError(void); -extern void* ImagingError_ModeError(void); /* maps to ValueError by default */ -extern void* ImagingError_Mismatch(void); /* maps to ValueError by default */ -extern void* ImagingError_ValueError(const char* message); -extern void ImagingError_Clear(void); - -/* Transform callbacks */ -/* ------------------- */ - -/* standard transforms */ -#define IMAGING_TRANSFORM_AFFINE 0 -#define IMAGING_TRANSFORM_PERSPECTIVE 2 -#define IMAGING_TRANSFORM_QUAD 3 - - -/* standard filters */ -#define IMAGING_TRANSFORM_NEAREST 0 -#define IMAGING_TRANSFORM_ANTIALIAS 1 -#define IMAGING_TRANSFORM_BILINEAR 2 -#define IMAGING_TRANSFORM_BICUBIC 3 - -typedef int (*ImagingTransformMap)(double* X, double* Y, - int x, int y, void* data); -typedef int (*ImagingTransformFilter)(void* out, Imaging im, - double x, double y, - void* data); - -/* Image Manipulation Methods */ -/* -------------------------- */ - -extern Imaging ImagingBlend(Imaging imIn1, Imaging imIn2, float alpha); -extern Imaging ImagingCopy(Imaging im); -extern Imaging ImagingConvert(Imaging im, const char* mode, ImagingPalette palette, int dither); -extern Imaging ImagingConvertInPlace(Imaging im, const char* mode); -extern Imaging ImagingConvertMatrix(Imaging im, const char *mode, float m[]); -extern Imaging ImagingCrop(Imaging im, int x0, int y0, int x1, int y1); -extern Imaging ImagingExpand(Imaging im, int x, int y, int mode); -extern Imaging ImagingFill(Imaging im, const void* ink); -extern int ImagingFill2( - Imaging into, const void* ink, Imaging mask, - int x0, int y0, int x1, int y1); -extern Imaging ImagingFillBand(Imaging im, int band, int color); -extern Imaging ImagingFillLinearGradient(const char* mode); -extern Imaging ImagingFillRadialGradient(const char* mode); -extern Imaging ImagingFilter( - Imaging im, int xsize, int ysize, const FLOAT32* kernel, - FLOAT32 offset, FLOAT32 divisor); -extern Imaging ImagingFlipLeftRight(Imaging imOut, Imaging imIn); -extern Imaging ImagingFlipTopBottom(Imaging imOut, Imaging imIn); -extern Imaging ImagingGaussianBlur(Imaging im, Imaging imOut, float radius); -extern Imaging ImagingGetBand(Imaging im, int band); -extern int ImagingGetBBox(Imaging im, int bbox[4]); -typedef struct { int x, y; INT32 count; INT32 pixel; } ImagingColorItem; -extern ImagingColorItem* ImagingGetColors(Imaging im, int maxcolors, - int *colors); -extern int ImagingGetExtrema(Imaging im, void *extrema); -extern int ImagingGetProjection(Imaging im, UINT8* xproj, UINT8* yproj); -extern ImagingHistogram ImagingGetHistogram( - Imaging im, Imaging mask, void *extrema); -extern Imaging ImagingModeFilter(Imaging im, int size); -extern Imaging ImagingNegative(Imaging im); -extern Imaging ImagingOffset(Imaging im, int xoffset, int yoffset); -extern int ImagingPaste( - Imaging into, Imaging im, Imaging mask, - int x0, int y0, int x1, int y1); -extern Imaging ImagingPoint( - Imaging im, const char* tablemode, const void* table); -extern Imaging ImagingPointTransform( - Imaging imIn, double scale, double offset); -extern Imaging ImagingPutBand(Imaging im, Imaging imIn, int band); -extern Imaging ImagingRankFilter(Imaging im, int size, int rank); -extern Imaging ImagingResize(Imaging imOut, Imaging imIn, int filter); -extern Imaging ImagingRotate( - Imaging imOut, Imaging imIn, double theta, int filter); -extern Imaging ImagingRotate90(Imaging imOut, Imaging imIn); -extern Imaging ImagingRotate180(Imaging imOut, Imaging imIn); -extern Imaging ImagingRotate270(Imaging imOut, Imaging imIn); -extern Imaging ImagingStretch(Imaging imOut, Imaging imIn, int filter); -extern Imaging ImagingTransformPerspective( - Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, - double a[8], int filter, int fill); -extern Imaging ImagingTransformAffine( - Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, - double a[6], int filter, int fill); -extern Imaging ImagingTransformQuad( - Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, - double a[8], int filter, int fill); -extern Imaging ImagingTransform( - Imaging imOut, Imaging imIn, int x0, int y0, int x1, int y1, - ImagingTransformMap transform, void* transform_data, - ImagingTransformFilter filter, void* filter_data, - int fill); -extern Imaging ImagingUnsharpMask( - Imaging im, Imaging imOut, float radius, int percent, int threshold); - -extern Imaging ImagingCopy2(Imaging imOut, Imaging imIn); -extern Imaging ImagingConvert2(Imaging imOut, Imaging imIn); - -/* Channel operations */ -/* any mode, except "F" */ -extern Imaging ImagingChopLighter(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopDarker(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopDifference(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopMultiply(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopScreen(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopAdd( - Imaging imIn1, Imaging imIn2, float scale, int offset); -extern Imaging ImagingChopSubtract( - Imaging imIn1, Imaging imIn2, float scale, int offset); -extern Imaging ImagingChopAddModulo(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopSubtractModulo(Imaging imIn1, Imaging imIn2); - -/* "1" images only */ -extern Imaging ImagingChopAnd(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopOr(Imaging imIn1, Imaging imIn2); -extern Imaging ImagingChopXor(Imaging imIn1, Imaging imIn2); - -/* Image measurement */ -extern void ImagingCrack(Imaging im, int x0, int y0); - -/* Graphics */ -struct ImagingAffineMatrixInstance { - float a[9]; -}; - -typedef struct ImagingAffineMatrixInstance *ImagingAffineMatrix; - -extern int ImagingDrawArc(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink, int op); -extern int ImagingDrawBitmap(Imaging im, int x0, int y0, Imaging bitmap, - const void* ink, int op); -extern int ImagingDrawChord(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink, int fill, - int op); -extern int ImagingDrawEllipse(Imaging im, int x0, int y0, int x1, int y1, - const void* ink, int fill, int op); -extern int ImagingDrawLine(Imaging im, int x0, int y0, int x1, int y1, - const void* ink, int op); -extern int ImagingDrawWideLine(Imaging im, int x0, int y0, int x1, int y1, - const void* ink, int width, int op); -extern int ImagingDrawPieslice(Imaging im, int x0, int y0, int x1, int y1, - int start, int end, const void* ink, int fill, - int op); -extern int ImagingDrawPoint(Imaging im, int x, int y, const void* ink, int op); -extern int ImagingDrawPolygon(Imaging im, int points, int *xy, - const void* ink, int fill, int op); -extern int ImagingDrawRectangle(Imaging im, int x0, int y0, int x1, int y1, - const void* ink, int fill, int op); - -/* Level 2 graphics (WORK IN PROGRESS) */ -extern ImagingOutline ImagingOutlineNew(void); -extern void ImagingOutlineDelete(ImagingOutline outline); - -extern int ImagingDrawOutline(Imaging im, ImagingOutline outline, - const void* ink, int fill, int op); - -extern int ImagingOutlineMove(ImagingOutline outline, float x, float y); -extern int ImagingOutlineLine(ImagingOutline outline, float x, float y); -extern int ImagingOutlineCurve(ImagingOutline outline, float x1, float y1, - float x2, float y2, float x3, float y3); -extern int ImagingOutlineTransform(ImagingOutline outline, double a[6]); - -extern int ImagingOutlineClose(ImagingOutline outline); - -/* Special effects */ -extern Imaging ImagingEffectSpread(Imaging imIn, int distance); -extern Imaging ImagingEffectNoise(int xsize, int ysize, float sigma); -extern Imaging ImagingEffectMandelbrot(int xsize, int ysize, - double extent[4], int quality); - -/* Obsolete */ -extern int ImagingToString(Imaging im, int orientation, char *buffer); -extern int ImagingFromString(Imaging im, int orientation, char *buffer); - - -/* File I/O */ -/* -------- */ - -/* Built-in drivers */ -extern Imaging ImagingOpenPPM(const char* filename); -extern int ImagingSavePPM(Imaging im, const char* filename); - -/* Utility functions */ -extern UINT32 ImagingCRC32(UINT32 crc, UINT8* buffer, int bytes); - -/* Codecs */ -typedef struct ImagingCodecStateInstance *ImagingCodecState; -typedef int (*ImagingCodec)(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); - -extern int ImagingBitDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingEpsEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingFliDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingGifDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingGifEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingHexDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -#ifdef HAVE_LIBJPEG -extern int ImagingJpegDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingJpegEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -#endif -extern int ImagingLzwDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -#ifdef HAVE_LIBMPEG -extern int ImagingMpegDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -#endif -extern int ImagingMspDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingPackbitsDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingPcdDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingPcxDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingPcxEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingRawDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingRawEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingSunRleDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingTgaRleDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingXbmDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingXbmEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -#ifdef HAVE_LIBZ -extern int ImagingZipDecode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -extern int ImagingZipEncode(Imaging im, ImagingCodecState state, - UINT8* buffer, int bytes); -#endif - -typedef void (*ImagingShuffler)(UINT8* out, const UINT8* in, int pixels); - -/* Public shufflers */ -extern void ImagingPackRGB(UINT8* out, const UINT8* in, int pixels); -extern void ImagingPackBGR(UINT8* out, const UINT8* in, int pixels); -extern void ImagingUnpackRGB(UINT8* out, const UINT8* in, int pixels); -extern void ImagingUnpackBGR(UINT8* out, const UINT8* in, int pixels); -extern void ImagingUnpackYCC(UINT8* out, const UINT8* in, int pixels); -extern void ImagingUnpackYCCA(UINT8* out, const UINT8* in, int pixels); -extern void ImagingUnpackYCbCr(UINT8* out, const UINT8* in, int pixels); - -extern void ImagingConvertRGB2YCbCr(UINT8* out, const UINT8* in, int pixels); -extern void ImagingConvertYCbCr2RGB(UINT8* out, const UINT8* in, int pixels); - -extern ImagingShuffler ImagingFindUnpacker(const char* mode, - const char* rawmode, int* bits_out); -extern ImagingShuffler ImagingFindPacker(const char* mode, - const char* rawmode, int* bits_out); - -struct ImagingCodecStateInstance { - int count; - int state; - int errcode; - int x, y; - int ystep; - int xsize, ysize, xoff, yoff; - ImagingShuffler shuffle; - int bits, bytes; - UINT8 *buffer; - void *context; -}; - -/* Errcodes */ -#define IMAGING_CODEC_END 1 -#define IMAGING_CODEC_OVERRUN -1 -#define IMAGING_CODEC_BROKEN -2 -#define IMAGING_CODEC_UNKNOWN -3 -#define IMAGING_CODEC_CONFIG -8 -#define IMAGING_CODEC_MEMORY -9 - -#if defined(__cplusplus) -} -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h deleted file mode 100755 index d39165f3cfd..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Jpeg.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * declarations for the IJG JPEG codec interface. - * - * Copyright (c) 1995-2001 by Secret Labs AB - * Copyright (c) 1995-1996 by Fredrik Lundh - */ - -#include "jpeglib.h" - -#include - - -typedef struct { - struct jpeg_error_mgr pub; /* "public" fields */ - jmp_buf setjmp_buffer; /* for return to caller */ -} JPEGERROR; - - -/* -------------------------------------------------------------------- */ -/* Decoder */ - -typedef struct { - struct jpeg_source_mgr pub; - int skip; -} JPEGSOURCE; - -typedef struct { - - /* CONFIGURATION */ - - /* Jpeg file mode (empty if not known) */ - char jpegmode[8+1]; - - /* Converter output mode (input to the shuffler). If empty, - convert conversions are disabled */ - char rawmode[8+1]; - - /* If set, trade quality for speed */ - int draft; - - /* Scale factor (1, 2, 4, 8) */ - int scale; - - /* PRIVATE CONTEXT (set by decoder) */ - - struct jpeg_decompress_struct cinfo; - - JPEGERROR error; - - JPEGSOURCE source; - -} JPEGSTATE; - - -/* -------------------------------------------------------------------- */ -/* Encoder */ - -typedef struct { - struct jpeg_destination_mgr pub; - /* might add something some other day */ -} JPEGDESTINATION; - -typedef struct { - - /* CONFIGURATION */ - - /* Quality (1-100, 0 means default) */ - int quality; - - /* Progressive mode */ - int progressive; - - /* Smoothing factor (1-100, 0 means none) */ - int smooth; - - /* Optimize Huffman tables (slow) */ - int optimize; - - /* Stream type (0=full, 1=tables only, 2=image only) */ - int streamtype; - - /* DPI setting (0=square pixels, otherwide DPI) */ - int xdpi, ydpi; - - /* Chroma Subsampling (-1=default, 0=none, 1=medium, 2=high) */ - int subsampling; - - /* Extra data (to be injected after header) */ - char* extra; int extra_size; - - /* PRIVATE CONTEXT (set by encoder) */ - - struct jpeg_compress_struct cinfo; - - JPEGERROR error; - - JPEGDESTINATION destination; - - int extra_offset; - -} JPEGENCODERSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c deleted file mode 100755 index 11b2767ba2f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegDecode.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for JPEG image data. - * - * history: - * 1996-05-02 fl Created - * 1996-05-05 fl Handle small JPEG files correctly - * 1996-05-28 fl Added "draft mode" support - * 1997-01-25 fl Added colour conversion override - * 1998-01-31 fl Adapted to libjpeg 6a - * 1998-07-12 fl Extended YCbCr support - * 1998-12-29 fl Added new state to handle suspension in multipass modes - * 2000-10-12 fl Suppress warnings - * 2000-12-04 fl Suppress errors beyond end of image data - * - * Copyright (c) 1998-2000 Secret Labs AB - * Copyright (c) 1996-2000 Fredrik Lundh - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - -#ifdef HAVE_LIBJPEG - -#undef HAVE_PROTOTYPES -#undef HAVE_STDLIB_H -#undef HAVE_STDDEF_H -#undef UINT8 -#undef UINT16 -#undef UINT32 -#undef INT16 -#undef INT32 - -#include "Jpeg.h" - - -/* -------------------------------------------------------------------- */ -/* Suspending input handler */ -/* -------------------------------------------------------------------- */ - -METHODDEF(void) -stub(j_decompress_ptr cinfo) -{ - /* empty */ -} - -METHODDEF(boolean) -fill_input_buffer(j_decompress_ptr cinfo) -{ - /* Suspension */ - return FALSE; -} - -METHODDEF(void) -skip_input_data(j_decompress_ptr cinfo, long num_bytes) -{ - JPEGSOURCE* source = (JPEGSOURCE*) cinfo->src; - - if (num_bytes > (long) source->pub.bytes_in_buffer) { - /* We need to skip more data than we have in the buffer. - This will force the JPEG library to suspend decoding. */ - source->skip = num_bytes - source->pub.bytes_in_buffer; - source->pub.next_input_byte += source->pub.bytes_in_buffer; - source->pub.bytes_in_buffer = 0; - } else { - /* Skip portion of the buffer */ - source->pub.bytes_in_buffer -= num_bytes; - source->pub.next_input_byte += num_bytes; - source->skip = 0; - } -} - - -GLOBAL(void) -jpeg_buffer_src(j_decompress_ptr cinfo, JPEGSOURCE* source) -{ - cinfo->src = (void*) source; - - /* Prepare for suspending reader */ - source->pub.init_source = stub; - source->pub.fill_input_buffer = fill_input_buffer; - source->pub.skip_input_data = skip_input_data; - source->pub.resync_to_restart = jpeg_resync_to_restart; - source->pub.term_source = stub; - source->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ - - source->skip = 0; -} - - -/* -------------------------------------------------------------------- */ -/* Error handler */ -/* -------------------------------------------------------------------- */ - -METHODDEF(void) -error(j_common_ptr cinfo) -{ - JPEGERROR* error; - error = (JPEGERROR*) cinfo->err; - longjmp(error->setjmp_buffer, 1); -} - -METHODDEF(void) -output(j_common_ptr cinfo) -{ - /* nothing */ -} - -/* -------------------------------------------------------------------- */ -/* Decoder */ -/* -------------------------------------------------------------------- */ - -int -ImagingJpegDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - JPEGSTATE* context = (JPEGSTATE*) state->context; - int ok; - - if (setjmp(context->error.setjmp_buffer)) { - /* JPEG error handler */ - jpeg_destroy_decompress(&context->cinfo); - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - if (!state->state) { - - /* Setup decompression context */ - context->cinfo.err = jpeg_std_error(&context->error.pub); - context->error.pub.error_exit = error; - context->error.pub.output_message = output; - jpeg_create_decompress(&context->cinfo); - jpeg_buffer_src(&context->cinfo, &context->source); - - /* Ready to decode */ - state->state = 1; - - } - - /* Load the source buffer */ - context->source.pub.next_input_byte = buf; - context->source.pub.bytes_in_buffer = bytes; - - if (context->source.skip > 0) { - skip_input_data(&context->cinfo, context->source.skip); - if (context->source.skip > 0) - return context->source.pub.next_input_byte - buf; - } - - switch (state->state) { - - case 1: - - /* Read JPEG header, until we find an image body. */ - do { - - /* Note that we cannot return unless we have decoded - as much data as possible. */ - ok = jpeg_read_header(&context->cinfo, FALSE); - - } while (ok == JPEG_HEADER_TABLES_ONLY); - - if (ok == JPEG_SUSPENDED) - break; - - /* Decoder settings */ - - /* jpegmode indicates whats in the file; if not set, we'll - trust the decoder */ - if (strcmp(context->jpegmode, "L") == 0) - context->cinfo.jpeg_color_space = JCS_GRAYSCALE; - else if (strcmp(context->jpegmode, "RGB") == 0) - context->cinfo.jpeg_color_space = JCS_RGB; - else if (strcmp(context->jpegmode, "CMYK") == 0) - context->cinfo.jpeg_color_space = JCS_CMYK; - else if (strcmp(context->jpegmode, "YCbCr") == 0) - context->cinfo.jpeg_color_space = JCS_YCbCr; - else if (strcmp(context->jpegmode, "YCbCrK") == 0) { - context->cinfo.jpeg_color_space = JCS_YCCK; - } - - /* rawmode indicates what we want from the decoder. if not - set, conversions are disabled */ - if (strcmp(context->rawmode, "L") == 0) - context->cinfo.out_color_space = JCS_GRAYSCALE; - else if (strcmp(context->rawmode, "RGB") == 0) - context->cinfo.out_color_space = JCS_RGB; - else if (strcmp(context->rawmode, "CMYK") == 0 || - strcmp(context->rawmode, "CMYK;I") == 0) - context->cinfo.out_color_space = JCS_CMYK; - else if (strcmp(context->rawmode, "YCbCr") == 0) - context->cinfo.out_color_space = JCS_YCbCr; - else if (strcmp(context->rawmode, "YCbCrK") == 0) - context->cinfo.out_color_space = JCS_YCCK; - else { - /* Disable decoder conversions */ - context->cinfo.jpeg_color_space = JCS_UNKNOWN; - context->cinfo.out_color_space = JCS_UNKNOWN; - } - - if (context->scale > 1) { - context->cinfo.scale_num = 1; - context->cinfo.scale_denom = context->scale; - } - if (context->draft) { - context->cinfo.do_fancy_upsampling = FALSE; - context->cinfo.dct_method = JDCT_FASTEST; - } - - state->state++; - /* fall through */ - - case 2: - - /* Set things up for decompression (this processes the entire - file if necessary to return data line by line) */ - if (!jpeg_start_decompress(&context->cinfo)) - break; - - state->state++; - /* fall through */ - - case 3: - - /* Decompress a single line of data */ - ok = 1; - while (state->y < state->ysize) { - ok = jpeg_read_scanlines(&context->cinfo, &state->buffer, 1); - if (ok != 1) - break; - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - state->y++; - } - if (ok != 1) - break; - state->state++; - /* fall through */ - - case 4: - - /* Finish decompression */ - if (!jpeg_finish_decompress(&context->cinfo)) { - /* FIXME: add strictness mode test */ - if (state->y < state->ysize) - break; - } - - /* Clean up */ - jpeg_destroy_decompress(&context->cinfo); - /* if (jerr.pub.num_warnings) return BROKEN; */ - return -1; - - } - - /* Return number of bytes consumed */ - return context->source.pub.next_input_byte - buf; - -} - -#endif - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c deleted file mode 100755 index 1e2191a69b0..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/JpegEncode.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * coder for JPEG data - * - * history: - * 1996-05-06 fl created - * 1996-07-16 fl don't drop last block of encoded data - * 1996-12-30 fl added quality and progressive settings - * 1997-01-08 fl added streamtype settings - * 1998-01-31 fl adapted to libjpeg 6a - * 1998-07-12 fl added YCbCr support - * 2001-04-16 fl added DPI write support - * - * Copyright (c) 1997-2001 by Secret Labs AB - * Copyright (c) 1995-1997 by Fredrik Lundh - * - * See the README file for details on usage and redistribution. - */ - - -#include "Imaging.h" - -#ifdef HAVE_LIBJPEG - -#undef HAVE_PROTOTYPES -#undef HAVE_STDLIB_H -#undef HAVE_STDDEF_H -#undef UINT8 -#undef UINT16 -#undef UINT32 -#undef INT16 -#undef INT32 - -#include "Jpeg.h" - -/* -------------------------------------------------------------------- */ -/* Suspending output handler */ -/* -------------------------------------------------------------------- */ - -METHODDEF(void) -stub(j_compress_ptr cinfo) -{ - /* empty */ -} - -METHODDEF(boolean) -empty_output_buffer (j_compress_ptr cinfo) -{ - /* Suspension */ - return FALSE; -} - -GLOBAL(void) -jpeg_buffer_dest(j_compress_ptr cinfo, JPEGDESTINATION* destination) -{ - cinfo->dest = (void*) destination; - - destination->pub.init_destination = stub; - destination->pub.empty_output_buffer = empty_output_buffer; - destination->pub.term_destination = stub; -} - - -/* -------------------------------------------------------------------- */ -/* Error handler */ -/* -------------------------------------------------------------------- */ - -METHODDEF(void) -error(j_common_ptr cinfo) -{ - JPEGERROR* error; - error = (JPEGERROR*) cinfo->err; - (*cinfo->err->output_message) (cinfo); - longjmp(error->setjmp_buffer, 1); -} - - -/* -------------------------------------------------------------------- */ -/* Encoder */ -/* -------------------------------------------------------------------- */ - -int -ImagingJpegEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - JPEGENCODERSTATE* context = (JPEGENCODERSTATE*) state->context; - int ok; - - if (setjmp(context->error.setjmp_buffer)) { - /* JPEG error handler */ - jpeg_destroy_compress(&context->cinfo); - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - if (!state->state) { - - /* Setup compression context (very similar to the decoder) */ - context->cinfo.err = jpeg_std_error(&context->error.pub); - context->error.pub.error_exit = error; - jpeg_create_compress(&context->cinfo); - jpeg_buffer_dest(&context->cinfo, &context->destination); - - context->extra_offset = 0; - - /* Ready to encode */ - state->state = 1; - - } - - /* Load the destination buffer */ - context->destination.pub.next_output_byte = buf; - context->destination.pub.free_in_buffer = bytes; - - switch (state->state) { - - case 1: - - context->cinfo.image_width = state->xsize; - context->cinfo.image_height = state->ysize; - - switch (state->bits) { - case 8: - context->cinfo.input_components = 1; - context->cinfo.in_color_space = JCS_GRAYSCALE; - break; - case 24: - context->cinfo.input_components = 3; - if (strcmp(im->mode, "YCbCr") == 0) - context->cinfo.in_color_space = JCS_YCbCr; - else - context->cinfo.in_color_space = JCS_RGB; - break; - case 32: - context->cinfo.input_components = 4; - context->cinfo.in_color_space = JCS_CMYK; - break; - default: - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - - /* Compressor configuration */ - jpeg_set_defaults(&context->cinfo); - if (context->quality > 0) - jpeg_set_quality(&context->cinfo, context->quality, 1); - - /* Set subsampling options */ - switch (context->subsampling) - { - case 0: /* 1x1 1x1 1x1 (4:4:4) : None */ - { - context->cinfo.comp_info[0].h_samp_factor = 1; - context->cinfo.comp_info[0].v_samp_factor = 1; - context->cinfo.comp_info[1].h_samp_factor = 1; - context->cinfo.comp_info[1].v_samp_factor = 1; - context->cinfo.comp_info[2].h_samp_factor = 1; - context->cinfo.comp_info[2].v_samp_factor = 1; - break; - } - case 1: /* 2x1, 1x1, 1x1 (4:2:2) : Medium */ - { - context->cinfo.comp_info[0].h_samp_factor = 2; - context->cinfo.comp_info[0].v_samp_factor = 1; - context->cinfo.comp_info[1].h_samp_factor = 1; - context->cinfo.comp_info[1].v_samp_factor = 1; - context->cinfo.comp_info[2].h_samp_factor = 1; - context->cinfo.comp_info[2].v_samp_factor = 1; - break; - } - case 2: /* 2x2, 1x1, 1x1 (4:1:1) : High */ - { - context->cinfo.comp_info[0].h_samp_factor = 2; - context->cinfo.comp_info[0].v_samp_factor = 2; - context->cinfo.comp_info[1].h_samp_factor = 1; - context->cinfo.comp_info[1].v_samp_factor = 1; - context->cinfo.comp_info[2].h_samp_factor = 1; - context->cinfo.comp_info[2].v_samp_factor = 1; - break; - } - default: - { - /* Use the lib's default */ - break; - } - } - if (context->progressive) - jpeg_simple_progression(&context->cinfo); - context->cinfo.smoothing_factor = context->smooth; - context->cinfo.optimize_coding = (boolean) context->optimize; - if (context->xdpi > 0 && context->ydpi > 0) { - context->cinfo.density_unit = 1; /* dots per inch */ - context->cinfo.X_density = context->xdpi; - context->cinfo.Y_density = context->ydpi; - } - switch (context->streamtype) { - case 1: - /* tables only -- not yet implemented */ - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - case 2: - /* image only */ - jpeg_suppress_tables(&context->cinfo, TRUE); - jpeg_start_compress(&context->cinfo, FALSE); - /* suppress extra section */ - context->extra_offset = context->extra_size; - break; - default: - /* interchange stream */ - jpeg_start_compress(&context->cinfo, TRUE); - break; - } - state->state++; - /* fall through */ - - case 2: - - if (context->extra) { - /* copy extra buffer to output buffer */ - unsigned int n = context->extra_size - context->extra_offset; - if (n > context->destination.pub.free_in_buffer) - n = context->destination.pub.free_in_buffer; - memcpy(context->destination.pub.next_output_byte, - context->extra + context->extra_offset, n); - context->destination.pub.next_output_byte += n; - context->destination.pub.free_in_buffer -= n; - context->extra_offset += n; - if (context->extra_offset >= context->extra_size) - state->state++; - else - break; - } else - state->state++; - - case 3: - - ok = 1; - while (state->y < state->ysize) { - state->shuffle(state->buffer, - (UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->xsize); - ok = jpeg_write_scanlines(&context->cinfo, &state->buffer, 1); - if (ok != 1) - break; - state->y++; - } - - if (ok != 1) - break; - state->state++; - /* fall through */ - - case 4: - - /* Finish compression */ - if (context->destination.pub.free_in_buffer < 100) - break; - jpeg_finish_compress(&context->cinfo); - - /* Clean up */ - if (context->extra) - free(context->extra); - jpeg_destroy_compress(&context->cinfo); - /* if (jerr.pub.num_warnings) return BROKEN; */ - state->errcode = IMAGING_CODEC_END; - break; - - } - - /* Return number of bytes in output buffer */ - return context->destination.pub.next_output_byte - buf; - -} - -const char* -ImagingJpegVersion(void) -{ - static char version[20]; - sprintf(version, "%d.%d", JPEG_LIB_VERSION / 10, JPEG_LIB_VERSION % 10); - return version; -} - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h deleted file mode 100755 index 7d087ac4779..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Lzw.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * declarations for the TIFF LZW decoder. - * - * Copyright (c) Fredrik Lundh 1995-96. - */ - - -/* Max size for LZW code words */ - -#define LZWBITS 12 - -#define LZWTABLE (1< -#include /* memcpy() */ - -#include "Lzw.h" - - -int -ImagingLzwDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8* p; - int c, i; - int thiscode; - LZWSTATE* context = (LZWSTATE*) state->context; - - unsigned char *ptr = buf; - - if (!state->state) { - - /* Clear code */ - context->clear = 1 << 8; - - /* End code */ - context->end = context->clear + 1; - - state->state = 1; - } - - for (;;) { - - if (state->state == 1) { - - /* First free entry in table */ - context->next = context->clear + 2; - - /* Initial code size */ - context->codesize = 8 + 1; - context->codemask = (1 << context->codesize) - 1; - - /* Buffer pointer. We fill the buffer from right, which - allows us to return all of it in one operation. */ - context->bufferindex = LZWBUFFER; - - state->state = 2; - } - - if (context->bufferindex < LZWBUFFER) { - - /* Return whole buffer in one chunk */ - i = LZWBUFFER - context->bufferindex; - p = &context->buffer[context->bufferindex]; - - context->bufferindex = LZWBUFFER; - - } else { - - /* Get current symbol */ - while (context->bitcount < context->codesize) { - - if (bytes < 1) - return ptr - buf;; - - /* Read next byte */ - c = *ptr++; bytes--; - - /* New bits are shifted in from from the right. */ - context->bitbuffer = (context->bitbuffer << 8) | c; - context->bitcount += 8; - - } - - /* Extract current symbol from bit buffer. */ - c = (context->bitbuffer >> (context->bitcount - - context->codesize)) - & context->codemask; - - /* Adjust buffer */ - context->bitcount -= context->codesize; - - /* If c is less than clear, it's a data byte. Otherwise, - it's either clear/end or a code symbol which should be - expanded. */ - - if (c == context->clear) { - if (state->state != 2) - state->state = 1; - continue; - } - - if (c == context->end) - break; - - i = 1; - p = &context->lastdata; - - if (state->state == 2) { - - /* First valid symbol after clear; use as is */ - if (c > context->clear) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - context->lastdata = context->lastcode = c; - state->state = 3; - - } else { - - thiscode = c; - - if (c > context->next) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - if (c == context->next) { - - /* c == next is allowed, by some strange reason */ - if (context->bufferindex <= 0) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - context->buffer[--context->bufferindex] = context->lastdata; - c = context->lastcode; - } - - while (c >= context->clear) { - - /* Copy data string to buffer (beginning from right) */ - - if (context->bufferindex <= 0 || c >= LZWTABLE) { - state->errcode = IMAGING_CODEC_BROKEN; - return -1; - } - - context->buffer[--context->bufferindex] = - context->data[c]; - c = context->link[c]; - } - - context->lastdata = c; - - if (context->next < LZWTABLE) { - - /* While we still have room for it, add this - symbol to the table. */ - context->data[context->next] = c; - context->link[context->next] = context->lastcode; - - context->next++; - - if (context->next == context->codemask && - context->codesize < LZWBITS) { - - /* Expand code size */ - context->codesize++; - context->codemask = (1 << context->codesize) - 1; - - } - } - context->lastcode = thiscode; - } - } - - /* Update the output image */ - for (c = 0; c < i; c++) { - - state->buffer[state->x] = p[c]; - - if (++state->x >= state->bytes) { - - int x, bpp; - - /* Apply filter */ - switch (context->filter) { - case 2: - /* Horizontal differing ("prior") */ - bpp = (state->bits + 7) / 8; - for (x = bpp; x < state->bytes; x++) - state->buffer[x] += state->buffer[x-bpp]; - } - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) - /* End of file (errcode = 0) */ - return -1; - } - } - } - - return ptr - buf; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c deleted file mode 100755 index 5d2f031cf3c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Matrix.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * colour and luminance matrix transforms - * - * history: - * 1996-05-18 fl: created (brute force implementation) - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -#define CLIPF(v) ((v <= 0.0) ? 0 : (v >= 255.0F) ? 255 : (UINT8) v) - - -Imaging -ImagingConvertMatrix(Imaging im, const char *mode, float m[]) -{ - Imaging imOut; - int x, y; - - /* Assume there's enough data in the buffer */ - if (!im) - return (Imaging) ImagingError_ModeError(); - - if (strcmp(mode, "L") == 0 && im->bands == 3) { - - imOut = ImagingNew("L", im->xsize, im->ysize); - if (!imOut) - return NULL; - - for (y = 0; y < im->ysize; y++) { - UINT8* in = (UINT8*) im->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - - for (x = 0; x < im->xsize; x++) { - float v = m[0]*in[0] + m[1]*in[1] + m[2]*in[2] + m[3] + 0.5; - out[x] = CLIPF(v); - in += 4; - } - } - - } else if (strlen(mode) == 3 && im->bands == 3) { - - imOut = ImagingNew(mode, im->xsize, im->ysize); - if (!imOut) - return NULL; - - for (y = 0; y < im->ysize; y++) { - UINT8* in = (UINT8*) im->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - - for (x = 0; x < im->xsize; x++) { - float v0 = m[0]*in[0] + m[1]*in[1] + m[2]*in[2] + m[3] + 0.5; - float v1 = m[4]*in[0] + m[5]*in[1] + m[6]*in[2] + m[7] + 0.5; - float v2 = m[8]*in[0] + m[9]*in[1] + m[10]*in[2] + m[11] + 0.5; - out[0] = CLIPF(v0); - out[1] = CLIPF(v1); - out[2] = CLIPF(v2); - in += 4; out += 4; - } - } - } else - return (Imaging) ImagingError_ModeError(); - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c deleted file mode 100755 index ad11d87d4a3..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ModeFilter.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * mode filter - * - * history: - * 2002-06-08 fl Created (based on code from IFUNC95) - * 2004-10-05 fl Rewritten; use a simpler brute-force algorithm - * - * Copyright (c) Secret Labs AB 2002-2004. All rights reserved. - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -Imaging -ImagingModeFilter(Imaging im, int size) -{ - Imaging imOut; - int x, y, i; - int xx, yy; - int maxcount; - UINT8 maxpixel; - int histogram[256]; - - if (!im || im->bands != 1 || im->type != IMAGING_TYPE_UINT8) - return (Imaging) ImagingError_ModeError(); - - imOut = ImagingNew(im->mode, im->xsize, im->ysize); - if (!imOut) - return NULL; - - size = size / 2; - - for (y = 0; y < imOut->ysize; y++) { - UINT8* out = &IMAGING_PIXEL_L(imOut, 0, y); - for (x = 0; x < imOut->xsize; x++) { - - /* calculate histogram over current area */ - - /* FIXME: brute force! to improve, update the histogram - incrementally. may also add a "frequent list", like in - the old implementation, but I'm not sure that's worth - the added complexity... */ - - memset(histogram, 0, sizeof(histogram)); - for (yy = y - size; yy <= y + size; yy++) - if (yy >= 0 && yy < imOut->ysize) { - UINT8* in = &IMAGING_PIXEL_L(im, 0, yy); - for (xx = x - size; xx <= x + size; xx++) - if (xx >= 0 && xx < imOut->xsize) - histogram[in[xx]]++; - } - - /* find most frequent pixel value in this region */ - maxpixel = 0; - maxcount = histogram[maxpixel]; - for (i = 1; i < 256; i++) - if (histogram[i] > maxcount) { - maxcount = histogram[i]; - maxpixel = (UINT8) i; - } - - if (maxcount > 2) - out[x] = maxpixel; - else - out[x] = IMAGING_PIXEL_L(im, x, y); - - } - - } - - ImagingCopyInfo(imOut, im); - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c deleted file mode 100755 index b611098d874..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/MspDecode.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for MSP version 2 data. - * - * history: - * 97-01-03 fl Created - * - * Copyright (c) Fredrik Lundh 1997. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingMspDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - int n; - UINT8* ptr; - - ptr = buf; - - for (;;) { - - if (bytes < 1) - return ptr - buf; - - if (ptr[0] == 0) { - - /* Run (3 bytes block) */ - if (bytes < 3) - break; - - n = ptr[1]; - - if (state->x + n > state->bytes) { - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - memset(state->buffer + state->x, ptr[2], n); - - ptr += 3; - bytes -= 3; - - } else { - - /* Literal (1+n bytes block) */ - n = ptr[0]; - - if (bytes < 1 + n) - break; - - if (state->x + n > state->bytes) { - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - memcpy(state->buffer + state->x, ptr + 1, n); - - ptr += 1 + n; - bytes -= 1 + n; - - } - - state->x += n; - - if (state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - } - - } - - return ptr - buf; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c deleted file mode 100755 index eaa790768f0..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Negative.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * negate image - * - * to do: - * FIXME: Maybe this should be implemented using ImagingPoint() - * - * history: - * 95-11-27 fl: Created - * - * Copyright (c) Fredrik Lundh 1995. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -Imaging -ImagingNegative(Imaging im) -{ - Imaging imOut; - int x, y; - - if (!im) - return (Imaging) ImagingError_ModeError(); - - imOut = ImagingNew(im->mode, im->xsize, im->ysize); - if (!imOut) - return NULL; - - for (y = 0; y < im->ysize; y++) - for (x = 0; x < im->linesize; x++) - imOut->image[y][x] = ~im->image[y][x]; - - return imOut; -} - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c deleted file mode 100755 index f6d6e510e5c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Offset.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * offset an image in x and y directions - * - * history: - * 96-07-22 fl: Created - * 98-11-01 cgw@pgt.com: Fixed negative-array index bug - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -Imaging -ImagingOffset(Imaging im, int xoffset, int yoffset) -{ - int x, y; - Imaging imOut; - - if (!im) - return (Imaging) ImagingError_ModeError(); - - imOut = ImagingNew(im->mode, im->xsize, im->ysize); - if (!imOut) - return NULL; - - ImagingCopyInfo(imOut, im); - - /* make offsets positive to avoid negative coordinates */ - xoffset %= im->xsize; - xoffset = im->xsize - xoffset; - if (xoffset < 0) - xoffset += im->xsize; - - yoffset %= im->ysize; - yoffset = im->ysize - yoffset; - if (yoffset < 0) - yoffset += im->ysize; - -#define OFFSET(image)\ - for (y = 0; y < im->ysize; y++)\ - for (x = 0; x < im->xsize; x++) {\ - int yi = (y + yoffset) % im->ysize;\ - int xi = (x + xoffset) % im->xsize;\ - imOut->image[y][x] = im->image[yi][xi];\ - } - - if (im->image8) - OFFSET(image8) - else - OFFSET(image32) - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c deleted file mode 100755 index 478de74996c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Pack.c +++ /dev/null @@ -1,566 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * code to pack raw data - * - * history: - * 1996-04-30 fl Created - * 1996-05-12 fl Published a few RGB packers - * 1996-11-01 fl More RGB packers (Tk booster stuff) - * 1996-12-30 fl Added P;1, P;2 and P;4 packers - * 1997-06-02 fl Added F (F;32NF) packer - * 1997-08-28 fl Added 1 as L packer - * 1998-02-08 fl Added I packer - * 1998-03-09 fl Added mode field, RGBA/RGBX as RGB packers - * 1998-07-01 fl Added YCbCr support - * 1998-07-12 fl Added I 16 packer - * 1999-02-03 fl Added BGR packers - * 2003-09-26 fl Added LA/PA packers - * 2006-06-22 fl Added CMYK;I packer - * - * Copyright (c) 1997-2006 by Secret Labs AB. - * Copyright (c) 1996-1997 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#define R 0 -#define G 1 -#define B 2 -#define X 3 -#define A 3 - -#define C 0 -#define M 1 -#define Y 2 -#define K 3 - -/* byte swapping macros */ - -#define C16N\ - (out[0]=tmp[0], out[1]=tmp[1]); -#define C16S\ - (out[1]=tmp[0], out[0]=tmp[1]); -#define C32N\ - (out[0]=tmp[0], out[1]=tmp[1], out[2]=tmp[2], out[3]=tmp[3]); -#define C32S\ - (out[3]=tmp[0], out[2]=tmp[1], out[1]=tmp[2], out[0]=tmp[3]); -#define C64N\ - (out[0]=tmp[0], out[1]=tmp[1], out[2]=tmp[2], out[3]=tmp[3],\ - out[4]=tmp[4], out[5]=tmp[5], out[6]=tmp[6], out[7]=tmp[7]); -#define C64S\ - (out[7]=tmp[0], out[6]=tmp[1], out[5]=tmp[2], out[4]=tmp[3],\ - out[3]=tmp[4], out[2]=tmp[5], out[1]=tmp[6], out[0]=tmp[7]); - -#ifdef WORDS_BIGENDIAN -#define C16B C16N -#define C16L C16S -#define C32B C32N -#define C32L C32S -#define C64B C64N -#define C64L C64S -#else -#define C16B C16S -#define C16L C16N -#define C32B C32S -#define C32L C32N -#define C64B C64S -#define C64L C64N -#endif - -static void -pack1(UINT8* out, const UINT8* in, int pixels) -{ - int i, m, b; - /* bilevel (black is 0) */ - b = 0; m = 128; - for (i = 0; i < pixels; i++) { - if (in[i] != 0) - b |= m; - m >>= 1; - if (m == 0) { - *out++ = b; - b = 0; m = 128; - } - } - if (m != 128) - *out++ = b; -} - -static void -pack1I(UINT8* out, const UINT8* in, int pixels) -{ - int i, m, b; - /* bilevel (black is 1) */ - b = 0; m = 128; - for (i = 0; i < pixels; i++) { - if (in[i] == 0) - b |= m; - m >>= 1; - if (m == 0) { - *out++ = b; - b = 0; m = 128; - } - } - if (m != 128) - *out++ = b; -} - -static void -pack1R(UINT8* out, const UINT8* in, int pixels) -{ - int i, m, b; - /* bilevel, lsb first (black is 0) */ - b = 0; m = 1; - for (i = 0; i < pixels; i++) { - if (in[i] != 0) - b |= m; - m <<= 1; - if (m == 256){ - *out++ = b; - b = 0; m = 1; - } - } - if (m != 1) - *out++ = b; -} - -static void -pack1IR(UINT8* out, const UINT8* in, int pixels) -{ - int i, m, b; - /* bilevel, lsb first (black is 1) */ - b = 0; m = 1; - for (i = 0; i < pixels; i++) { - if (in[i] == 0) - b |= m; - m <<= 1; - if (m == 256){ - *out++ = b; - b = 0; m = 1; - } - } - if (m != 1) - *out++ = b; -} - -static void -pack1L(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* bilevel, stored as bytes */ - for (i = 0; i < pixels; i++) - out[i] = (in[i] != 0) ? 255 : 0; -} - -static void -packP4(UINT8* out, const UINT8* in, int pixels) -{ - while (pixels >= 2) { - *out++ = (in[0] << 4) | - (in[1] & 15); - in += 2; pixels -= 2; - } - - if (pixels) - out[0] = (in[0] << 4); -} - -static void -packP2(UINT8* out, const UINT8* in, int pixels) -{ - while (pixels >= 4) { - *out++ = (in[0] << 6) | - ((in[1] & 3) << 4) | - ((in[2] & 3) << 2) | - (in[3] & 3); - in += 4; pixels -= 4; - } - - switch (pixels) { - case 3: - out[0] = (in[0] << 6) | - ((in[1] & 3) << 4) | - ((in[2] & 3) << 2); - break; - case 2: - out[0] = (in[0] << 6) | - ((in[1] & 3) << 4); - case 1: - out[0] = (in[0] << 6); - } -} - -static void -packLA(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* LA, pixel interleaved */ - for (i = 0; i < pixels; i++) { - out[0] = in[R]; - out[1] = in[A]; - out += 2; in += 4; - } -} - -static void -packLAL(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* LA, line interleaved */ - for (i = 0; i < pixels; i++) { - out[i] = in[R]; - out[i+pixels] = in[A]; - in += 4; - } -} - -void -ImagingPackRGB(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB triplets */ - for (i = 0; i < pixels; i++) { - out[0] = in[R]; - out[1] = in[G]; - out[2] = in[B]; - out += 3; in += 4; - } -} - -void -ImagingPackXRGB(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* XRGB, triplets with left padding */ - for (i = 0; i < pixels; i++) { - out[0] = 0; - out[1] = in[R]; - out[2] = in[G]; - out[3] = in[B]; - out += 4; in += 4; - } -} - -void -ImagingPackBGR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, reversed bytes */ - for (i = 0; i < pixels; i++) { - out[0] = in[B]; - out[1] = in[G]; - out[2] = in[R]; - out += 3; in += 4; - } -} - -void -ImagingPackBGRX(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* BGRX, reversed bytes with right padding */ - for (i = 0; i < pixels; i++) { - out[0] = in[B]; - out[1] = in[G]; - out[2] = in[R]; - out[3] = 0; - out += 4; in += 4; - } -} - -void -ImagingPackXBGR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* XBGR, reversed bytes with left padding */ - for (i = 0; i < pixels; i++) { - out[0] = 0; - out[1] = in[B]; - out[2] = in[G]; - out[3] = in[R]; - out += 4; in += 4; - } -} - -void -ImagingPackBGRA(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* BGRX, reversed bytes with right padding */ - for (i = 0; i < pixels; i++) { - out[0] = in[B]; - out[1] = in[G]; - out[2] = in[R]; - out[3] = in[A]; - out += 4; in += 4; - } -} - -void -ImagingPackABGR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* XBGR, reversed bytes with left padding */ - for (i = 0; i < pixels; i++) { - out[0] = in[A]; - out[1] = in[B]; - out[2] = in[G]; - out[3] = in[R]; - out += 4; in += 4; - } -} - -static void -packRGBL(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, line interleaved */ - for (i = 0; i < pixels; i++) { - out[i] = in[R]; - out[i+pixels] = in[G]; - out[i+pixels+pixels] = in[B]; - in += 4; - } -} - -static void -packRGBXL(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGBX, line interleaved */ - for (i = 0; i < pixels; i++) { - out[i] = in[R]; - out[i+pixels] = in[G]; - out[i+pixels+pixels] = in[B]; - out[i+pixels+pixels+pixels] = in[X]; - in += 4; - } -} - -static void -packI16B(UINT8* out, const UINT8* in_, int pixels) -{ - int i; - INT32* in = (INT32*) in_; - UINT16 tmp_; - UINT8* tmp = (UINT8*) &tmp_; - for (i = 0; i < pixels; i++) { - if (in[0] <= 0) - tmp_ = 0; - else if (in[0] > 65535) - tmp_ = 65535; - else - tmp_ = in[0]; - C16B; - out += 2; in++; - } -} - -static void -packI32S(UINT8* out, const UINT8* in, int pixels) -{ - int i; - UINT8* tmp = (UINT8*) in; - for (i = 0; i < pixels; i++) { - C32L; - out += 4; tmp += 4; - } -} - -static void -copy1(UINT8* out, const UINT8* in, int pixels) -{ - /* L, P */ - memcpy(out, in, pixels); -} - -static void -copy2(UINT8* out, const UINT8* in, int pixels) -{ - /* I;16, etc */ - memcpy(out, in, pixels*2); -} - -static void -copy3(UINT8* out, const UINT8* in, int pixels) -{ - /* BGR;24, etc */ - memcpy(out, in, pixels*3); -} - -static void -copy4(UINT8* out, const UINT8* in, int pixels) -{ - /* RGBA, CMYK quadruples */ - memcpy(out, in, 4*pixels); -} - -static void -copy4I(UINT8* out, const UINT8* in, int pixels) -{ - /* RGBA, CMYK quadruples, inverted */ - int i; - for (i = 0; i < pixels*4; i++) - out[i] = ~in[i]; -} - -static void -band0(UINT8* out, const UINT8* in, int pixels) -{ - int i; - for (i = 0; i < pixels; i++, in += 4) - out[i] = in[0]; -} - -static void -band1(UINT8* out, const UINT8* in, int pixels) -{ - int i; - for (i = 0; i < pixels; i++, in += 4) - out[i] = in[1]; -} - -static void -band2(UINT8* out, const UINT8* in, int pixels) -{ - int i; - for (i = 0; i < pixels; i++, in += 4) - out[i] = in[2]; -} - -static void -band3(UINT8* out, const UINT8* in, int pixels) -{ - int i; - for (i = 0; i < pixels; i++, in += 4) - out[i] = in[3]; -} - -static struct { - const char* mode; - const char* rawmode; - int bits; - ImagingShuffler pack; -} packers[] = { - - /* bilevel */ - {"1", "1", 1, pack1}, - {"1", "1;I", 1, pack1I}, - {"1", "1;R", 1, pack1R}, - {"1", "1;IR", 1, pack1IR}, - {"1", "L", 8, pack1L}, - - /* greyscale */ - {"L", "L", 8, copy1}, - - /* greyscale w. alpha */ - {"LA", "LA", 16, packLA}, - {"LA", "LA;L", 16, packLAL}, - - /* palette */ - {"P", "P;1", 1, pack1}, - {"P", "P;2", 2, packP2}, - {"P", "P;4", 4, packP4}, - {"P", "P", 8, copy1}, - - /* palette w. alpha */ - {"PA", "PA", 16, packLA}, - {"PA", "PA;L", 16, packLAL}, - - /* true colour */ - {"RGB", "RGB", 24, ImagingPackRGB}, - {"RGB", "RGBX", 32, copy4}, - {"RGB", "XRGB", 32, ImagingPackXRGB}, - {"RGB", "BGR", 24, ImagingPackBGR}, - {"RGB", "BGRX", 32, ImagingPackBGRX}, - {"RGB", "XBGR", 32, ImagingPackXBGR}, - {"RGB", "RGB;L", 24, packRGBL}, - {"RGB", "R", 8, band0}, - {"RGB", "G", 8, band1}, - {"RGB", "B", 8, band2}, - - /* true colour w. alpha */ - {"RGBA", "RGBA", 32, copy4}, - {"RGBA", "RGBA;L", 32, packRGBXL}, - {"RGBA", "RGB", 24, ImagingPackRGB}, - {"RGBA", "BGR", 24, ImagingPackBGR}, - {"RGBA", "BGRA", 32, ImagingPackBGRA}, - {"RGBA", "ABGR", 32, ImagingPackABGR}, - {"RGBA", "R", 8, band0}, - {"RGBA", "G", 8, band1}, - {"RGBA", "B", 8, band2}, - {"RGBA", "A", 8, band3}, - - /* true colour w. padding */ - {"RGBX", "RGBX", 32, copy4}, - {"RGBX", "RGBX;L", 32, packRGBXL}, - {"RGBX", "RGB", 32, ImagingPackRGB}, - {"RGBX", "BGR", 32, ImagingPackBGR}, - {"RGBX", "BGRX", 32, ImagingPackBGRX}, - {"RGBX", "XBGR", 32, ImagingPackXBGR}, - {"RGBX", "R", 8, band0}, - {"RGBX", "G", 8, band1}, - {"RGBX", "B", 8, band2}, - {"RGBX", "X", 8, band3}, - - /* colour separation */ - {"CMYK", "CMYK", 32, copy4}, - {"CMYK", "CMYK;I", 32, copy4I}, - {"CMYK", "CMYK;L", 32, packRGBXL}, - {"CMYK", "C", 8, band0}, - {"CMYK", "M", 8, band1}, - {"CMYK", "Y", 8, band2}, - {"CMYK", "K", 8, band3}, - - /* video (YCbCr) */ - {"YCbCr", "YCbCr", 24, ImagingPackRGB}, - {"YCbCr", "YCbCr;L", 24, packRGBL}, - {"YCbCr", "YCbCrX", 32, copy4}, - {"YCbCr", "YCbCrK", 32, copy4}, - {"YCbCr", "Y", 8, band0}, - {"YCbCr", "Cb", 8, band1}, - {"YCbCr", "Cr", 8, band2}, - - /* integer */ - {"I", "I", 32, copy4}, - {"I", "I;16B", 16, packI16B}, - {"I", "I;32S", 32, packI32S}, - {"I", "I;32NS", 32, copy4}, - - /* floating point */ - {"F", "F", 32, copy4}, - {"F", "F;32F", 32, packI32S}, - {"F", "F;32NF", 32, copy4}, - - /* storage modes */ - {"I;16", "I;16", 16, copy2}, - {"I;16B", "I;16B", 16, copy2}, - {"I;16L", "I;16L", 16, copy2}, - {"BGR;15", "BGR;15", 16, copy2}, - {"BGR;16", "BGR;16", 16, copy2}, - {"BGR;24", "BGR;24", 24, copy3}, - - {NULL} /* sentinel */ -}; - - -ImagingShuffler -ImagingFindPacker(const char* mode, const char* rawmode, int* bits_out) -{ - int i; - - /* find a suitable pixel packer */ - for (i = 0; packers[i].rawmode; i++) - if (strcmp(packers[i].mode, mode) == 0 && - strcmp(packers[i].rawmode, rawmode) == 0) { - if (bits_out) - *bits_out = packers[i].bits; - return packers[i].pack; - } - return NULL; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c deleted file mode 100755 index aea8f04e301..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PackDecode.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for PackBits image data. - * - * history: - * 96-04-19 fl Created - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -int -ImagingPackbitsDecode(Imaging im, ImagingCodecState state, - UINT8* buf, int bytes) -{ - UINT8 n; - UINT8* ptr; - int i; - - ptr = buf; - - for (;;) { - - if (bytes < 1) - return ptr - buf; - - if (ptr[0] & 0x80) { - - if (ptr[0] == 0x80) { - /* Nop */ - ptr++; bytes--; - continue; - } - - /* Run */ - if (bytes < 2) - return ptr - buf; - - for (n = 257 - ptr[0]; n > 0; n--) { - if (state->x >= state->bytes) { - /* state->errcode = IMAGING_CODEC_OVERRUN; */ - break; - } - state->buffer[state->x++] = ptr[1]; - } - - ptr += 2; bytes -= 2; - - } else { - - /* Literal */ - n = ptr[0]+2; - - if (bytes < n) - return ptr - buf; - - for (i = 1; i < n; i++) { - if (state->x >= state->bytes) { - /* state->errcode = IMAGING_CODEC_OVERRUN; */ - break; - } - state->buffer[state->x++] = ptr[i]; - } - - ptr += n; bytes -= n; - - } - - if (state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - } - - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c deleted file mode 100755 index bd4f4f1d637..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Palette.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * imaging palette object - * - * history: - * 1996-05-05 fl Added to library - * 1996-05-27 fl Added colour mapping stuff - * 1997-05-12 fl Support RGBA palettes - * 2005-02-09 fl Removed grayscale entries from web palette - * - * Copyright (c) Secret Labs AB 1997-2005. All rights reserved. - * Copyright (c) Fredrik Lundh 1995-1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#include - - -ImagingPalette -ImagingPaletteNew(const char* mode) -{ - /* Create a palette object */ - - int i; - ImagingPalette palette; - - if (strcmp(mode, "RGB") && strcmp(mode, "RGBA")) - return (ImagingPalette) ImagingError_ModeError(); - - palette = calloc(1, sizeof(struct ImagingPaletteInstance)); - if (!palette) - return (ImagingPalette) ImagingError_MemoryError(); - - strcpy(palette->mode, mode); - - /* Initialize to ramp */ - for (i = 0; i < 256; i++) { - palette->palette[i*4+0] = - palette->palette[i*4+1] = - palette->palette[i*4+2] = (UINT8) i; - palette->palette[i*4+3] = 255; /* opaque */ - } - - return palette; -} - -ImagingPalette -ImagingPaletteNewBrowser(void) -{ - /* Create a standard "browser" palette object */ - - int i, r, g, b; - ImagingPalette palette; - - palette = ImagingPaletteNew("RGB"); - if (!palette) - return NULL; - - /* Blank out unused entries */ - /* FIXME: Add 10-level windows palette here? */ - - for (i = 0; i < 10; i++) { - palette->palette[i*4+0] = - palette->palette[i*4+1] = - palette->palette[i*4+2] = 0; - } - - /* Simple 6x6x6 colour cube */ - - for (b = 0; b < 256; b += 51) - for (g = 0; g < 256; g += 51) - for (r = 0; r < 256; r += 51) { - palette->palette[i*4+0] = r; - palette->palette[i*4+1] = g; - palette->palette[i*4+2] = b; - i++; - } - - /* Blank out unused entries */ - /* FIXME: add 30-level greyscale wedge here? */ - - for (; i < 256; i++) { - palette->palette[i*4+0] = - palette->palette[i*4+1] = - palette->palette[i*4+2] = 0; - } - - return palette; -} - -ImagingPalette -ImagingPaletteDuplicate(ImagingPalette palette) -{ - /* Duplicate palette descriptor */ - - ImagingPalette new_palette; - - if (!palette) - return NULL; - - new_palette = malloc(sizeof(struct ImagingPaletteInstance)); - if (!new_palette) - return (ImagingPalette) ImagingError_MemoryError(); - - memcpy(new_palette, palette, sizeof(struct ImagingPaletteInstance)); - - /* Don't share the cache */ - new_palette->cache = NULL; - - return new_palette; -} - -void -ImagingPaletteDelete(ImagingPalette palette) -{ - /* Destroy palette object */ - - if (palette) { - if (palette->cache) - free(palette->cache); - free(palette); - } -} - - -/* -------------------------------------------------------------------- */ -/* Colour mapping */ -/* -------------------------------------------------------------------- */ - -/* This code is used to map RGB triplets to palette indices, using - a palette index cache. */ - -/* - * This implementation is loosely based on the corresponding code in - * the IJG JPEG library by Thomas G. Lane. Original algorithms by - * Paul Heckbert and Spencer W. Thomas. - * - * The IJG JPEG library is copyright (C) 1991-1995, Thomas G. Lane. */ - -#define DIST(a, b, s) (a - b) * (a - b) * s - -/* Colour weights (no scaling, for now) */ -#define RSCALE 1 -#define GSCALE 1 -#define BSCALE 1 - -/* Calculated scaled distances */ -#define RDIST(a, b) DIST(a, b, RSCALE*RSCALE) -#define GDIST(a, b) DIST(a, b, GSCALE*GSCALE) -#define BDIST(a, b) DIST(a, b, BSCALE*BSCALE) - -/* Incremental steps */ -#define RSTEP (4 * RSCALE) -#define GSTEP (4 * GSCALE) -#define BSTEP (4 * BSCALE) - -#define BOX 8 - -#define BOXVOLUME BOX*BOX*BOX - -void -ImagingPaletteCacheUpdate(ImagingPalette palette, int r, int g, int b) -{ - int i, j; - unsigned int dmin[256], dmax; - int r0, g0, b0; - int r1, g1, b1; - int rc, gc, bc; - unsigned int d[BOXVOLUME]; - UINT8 c[BOXVOLUME]; - - /* Get box boundaries for the given (r,g,b)-triplet. Each box - covers eight cache slots (32 colour values, that is). */ - - r0 = r & 0xe0; r1 = r0 + 0x1f; rc = (r0 + r1) / 2; - g0 = g & 0xe0; g1 = g0 + 0x1f; gc = (g0 + g1) / 2; - b0 = b & 0xe0; b1 = b0 + 0x1f; bc = (b0 + b1) / 2; - - /* Step 1 -- Select relevant palette entries (after Heckbert) */ - - /* For each palette entry, calculate the min and max distances to - * any position in the box given by the colour we're looking for. */ - - dmax = (unsigned int) ~0; - - for (i = 0; i < 256; i++) { - - int r, g, b; - unsigned int tmin, tmax; - - /* Find min and max distances to any point in the box */ - r = palette->palette[i*4+0]; - tmin = (r < r0) ? RDIST(r, r1) : (r > r1) ? RDIST(r, r0) : 0; - tmax = (r <= rc) ? RDIST(r, r1) : RDIST(r, r0); - - g = palette->palette[i*4+1]; - tmin += (g < g0) ? GDIST(g, g1) : (g > g1) ? GDIST(g, g0) : 0; - tmax += (g <= gc) ? GDIST(g, g1) : GDIST(g, g0); - - b = palette->palette[i*4+2]; - tmin += (b < b0) ? BDIST(b, b1) : (b > b1) ? BDIST(b, b0) : 0; - tmax += (b <= bc) ? BDIST(b, b1) : BDIST(b, b0); - - dmin[i] = tmin; - if (tmax < dmax) - dmax = tmax; /* keep the smallest max distance only */ - - } - - /* Step 2 -- Incrementally update cache slot (after Thomas) */ - - /* Find the box containing the nearest palette entry, and update - * all slots in that box. We only check boxes for which the min - * distance is less than or equal the smallest max distance */ - - for (i = 0; i < BOXVOLUME; i++) - d[i] = (unsigned int) ~0; - - for (i = 0; i < 256; i++) - - if (dmin[i] <= dmax) { - - int rd, gd, bd; - int ri, gi, bi; - int rx, gx, bx; - - ri = (r0 - palette->palette[i*4+0]) * RSCALE; - gi = (g0 - palette->palette[i*4+1]) * GSCALE; - bi = (b0 - palette->palette[i*4+2]) * BSCALE; - - rd = ri*ri + gi*gi + bi*bi; - - ri = ri * (2 * RSTEP) + RSTEP * RSTEP; - gi = gi * (2 * GSTEP) + GSTEP * GSTEP; - bi = bi * (2 * BSTEP) + BSTEP * BSTEP; - - rx = ri; - for (r = j = 0; r < BOX; r++) { - gd = rd; gx = gi; - for (g = 0; g < BOX; g++) { - bd = gd; bx = bi; - for (b = 0; b < BOX; b++) { - if ((unsigned int) bd < d[j]) { - d[j] = bd; - c[j] = (UINT8) i; - } - bd += bx; - bx += 2 * BSTEP * BSTEP; - j++; - } - gd += gx; - gx += 2 * GSTEP * GSTEP; - } - rd += rx; - rx += 2 * RSTEP * RSTEP; - } - } - - /* Step 3 -- Update cache */ - - /* The c array now contains the closest match for each - * cache slot in the box. Update the cache. */ - - j = 0; - for (r = r0; r < r1; r+=4) - for (g = g0; g < g1; g+=4) - for (b = b0; b < b1; b+=4) - ImagingPaletteCache(palette, r, g, b) = c[j++]; -} - - -int -ImagingPaletteCachePrepare(ImagingPalette palette) -{ - /* Add a colour cache to a palette */ - - int i; - int entries = 64*64*64; - - if (palette->cache == NULL) { - - /* The cache is 512k. It might be a good idea to break it - up into a pointer array (e.g. an 8-bit image?) */ - - palette->cache = (INT16*) malloc(entries * sizeof(INT16)); - if (!palette->cache) { - (void) ImagingError_MemoryError(); - return -1; - } - - /* Mark all entries as empty */ - for (i = 0; i < entries; i++) - palette->cache[i] = 0x100; - - } - - return 0; -} - - -void -ImagingPaletteCacheDelete(ImagingPalette palette) -{ - /* Release the colour cache, if any */ - - if (palette && palette->cache) { - free(palette->cache); - palette->cache = NULL; - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c deleted file mode 100755 index b89dd640453..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Paste.c +++ /dev/null @@ -1,555 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * paste image on another image - * - * history: - * 96-03-27 fl Created - * 96-07-16 fl Support "1", "L" and "RGBA" masks - * 96-08-16 fl Merged with opaque paste - * 97-01-17 fl Faster blending, added support for RGBa images - * 97-08-27 fl Faster masking for 32-bit images - * 98-02-02 fl Fixed MULDIV255 macro for gcc - * 99-02-02 fl Added "RGBa" mask support - * 99-02-06 fl Rewritten. Added support for masked fill operations. - * 99-12-08 fl Fixed matte fill. - * - * Copyright (c) Fredrik Lundh 1996-97. - * Copyright (c) Secret Labs AB 1997-99. - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -/* like (a * b + 127) / 255), but much faster on most platforms */ -#define MULDIV255NEW(a, b, tmp)\ - (tmp = (a) * (b) + 128, ((((tmp) >> 8) + (tmp)) >> 8)) - -#define MULDIV255OLD(a, b, tmp)\ - (((a) * (b) + 127) / 255) - -#define MULDIV255 MULDIV255NEW - -#define BLEND(mask, in1, in2, tmp1, tmp2)\ - (MULDIV255(in1, 255 - mask, tmp1) + MULDIV255(in2, mask, tmp2)) - -#define PREBLEND(mask, in1, in2, tmp1)\ - (MULDIV255(in1, 255 - mask, tmp1) + in2) - -static inline void -paste(Imaging imOut, Imaging imIn, int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* paste opaque region */ - - int y; - - dx *= pixelsize; - sx *= pixelsize; - - xsize *= pixelsize; - - for (y = 0; y < ysize; y++) - memcpy(imOut->image[y+dy]+dx, imIn->image[y+sy]+sx, xsize); -} - -static inline void -paste_mask_1(Imaging imOut, Imaging imIn, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* paste with mode "1" mask */ - - int x, y; - - if (imOut->image8) { - - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* in = imIn->image8[y+sy]+sx; - UINT8* mask = imMask->image8[y+sy]+sx; - for (x = 0; x < xsize; x++) { - if (*mask++) - *out = *in; - out++, in++; - } - } - - } else { - - for (y = 0; y < ysize; y++) { - INT32* out = imOut->image32[y+dy]+dx; - INT32* in = imIn->image32[y+sy]+sx; - UINT8* mask = imMask->image8[y+sy]+sx; - for (x = 0; x < xsize; x++) { - if (*mask++) - *out = *in; - out++, in++; - } - } - } -} - -static inline void -paste_mask_L(Imaging imOut, Imaging imIn, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* paste with mode "L" matte */ - - int x, y, i; - unsigned int tmp1, tmp2; - - if (imOut->image8) { - - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* in = imIn->image8[y+sy]+sx; - UINT8* mask = imMask->image8[y+sy]+sx; - for (x = 0; x < xsize; x++) { - *out = BLEND(*mask, *out, *in, tmp1, tmp2); - out++, in++, mask++; - } - } - - } else { - - for (y = 0; y < ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; - UINT8* in = (UINT8*) imIn->image[y+sy]+sx*pixelsize; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; - for (x = 0; x < xsize; x++) { - for (i = 0; i < pixelsize; i++) { - *out = BLEND(*mask, *out, *in, tmp1, tmp2); - out++, in++; - } - mask++; - } - } - } -} - -static inline void -paste_mask_RGBA(Imaging imOut, Imaging imIn, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* paste with mode "RGBA" matte */ - - int x, y, i; - unsigned int tmp1, tmp2; - - if (imOut->image8) { - - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* in = imIn->image8[y+sy]+sx; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; - for (x = 0; x < xsize; x++) { - *out = BLEND(*mask, *out, *in, tmp1, tmp2); - out++, in++, mask += 4; - } - } - - } else { - - for (y = 0; y < ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; - UINT8* in = (UINT8*) imIn->image[y+sy]+sx*pixelsize; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; - for (x = 0; x < xsize; x++) { - for (i = 0; i < pixelsize; i++) { - *out = BLEND(*mask, *out, *in, tmp1, tmp2); - out++, in++; - } - mask += 4; - } - } - } -} - - -static inline void -paste_mask_RGBa(Imaging imOut, Imaging imIn, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* paste with mode "RGBa" matte */ - - int x, y, i; - unsigned int tmp1; - - if (imOut->image8) { - - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* in = imIn->image8[y+sy]+sx; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; - for (x = 0; x < xsize; x++) { - *out = PREBLEND(*mask, *out, *in, tmp1); - out++, in++, mask += 4; - } - } - - } else { - - for (y = 0; y < ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; - UINT8* in = (UINT8*) imIn->image[y+sy]+sx*pixelsize; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx*4+3; - for (x = 0; x < xsize; x++) { - for (i = 0; i < pixelsize; i++) { - *out = PREBLEND(*mask, *out, *in, tmp1); - out++, in++; - } - mask += 4; - } - } - } -} - -int -ImagingPaste(Imaging imOut, Imaging imIn, Imaging imMask, - int dx0, int dy0, int dx1, int dy1) -{ - int xsize, ysize; - int pixelsize; - int sx0, sy0; - ImagingSectionCookie cookie; - - if (!imOut || !imIn) { - (void) ImagingError_ModeError(); - return -1; - } - - pixelsize = imOut->pixelsize; - - xsize = dx1 - dx0; - ysize = dy1 - dy0; - - if (xsize != imIn->xsize || ysize != imIn->ysize || - pixelsize != imIn->pixelsize) { - (void) ImagingError_Mismatch(); - return -1; - } - - if (imMask && (xsize != imMask->xsize || ysize != imMask->ysize)) { - (void) ImagingError_Mismatch(); - return -1; - } - - /* Determine which region to copy */ - sx0 = sy0 = 0; - if (dx0 < 0) - xsize += dx0, sx0 = -dx0, dx0 = 0; - if (dx0 + xsize > imOut->xsize) - xsize = imOut->xsize - dx0; - if (dy0 < 0) - ysize += dy0, sy0 = -dy0, dy0 = 0; - if (dy0 + ysize > imOut->ysize) - ysize = imOut->ysize - dy0; - - if (xsize <= 0 || ysize <= 0) - return 0; - - if (!imMask) { - ImagingSectionEnter(&cookie); - paste(imOut, imIn, dx0, dy0, sx0, sy0, xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "1") == 0) { - ImagingSectionEnter(&cookie); - paste_mask_1(imOut, imIn, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "L") == 0) { - ImagingSectionEnter(&cookie); - paste_mask_L(imOut, imIn, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "RGBA") == 0) { - ImagingSectionEnter(&cookie); - paste_mask_RGBA(imOut, imIn, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "RGBa") == 0) { - ImagingSectionEnter(&cookie); - paste_mask_RGBa(imOut, imIn, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else { - (void) ImagingError_ValueError("bad transparency mask"); - return -1; - } - - return 0; -} - -static inline void -fill(Imaging imOut, const void* ink_, int dx, int dy, - int xsize, int ysize, int pixelsize) -{ - /* fill opaque region */ - - int x, y; - UINT8 ink8 = 0; - INT32 ink32 = 0L; - - memcpy(&ink32, ink_, pixelsize); - memcpy(&ink8, ink_, sizeof(ink8)); - - if (imOut->image8 || ink32 == 0L) { - - dx *= pixelsize; - xsize *= pixelsize; - for (y = 0; y < ysize; y++) - memset(imOut->image[y+dy]+dx, ink8, xsize); - - } else { - - for (y = 0; y < ysize; y++) { - INT32* out = imOut->image32[y+dy]+dx; - for (x = 0; x < xsize; x++) - out[x] = ink32; - } - - } -} - -static inline void -fill_mask_1(Imaging imOut, const void* ink_, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* fill with mode "1" mask */ - - int x, y; - UINT8 ink8 = 0; - INT32 ink32 = 0L; - - memcpy(&ink32, ink_, pixelsize); - memcpy(&ink8, ink_, sizeof(ink8)); - - if (imOut->image8) { - - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* mask = imMask->image8[y+sy]+sx; - for (x = 0; x < xsize; x++) { - if (*mask++) - *out = ink8; - out++; - } - } - - } else { - - for (y = 0; y < ysize; y++) { - INT32* out = imOut->image32[y+dy]+dx; - UINT8* mask = imMask->image8[y+sy]+sx; - for (x = 0; x < xsize; x++) { - if (*mask++) - *out = ink32; - out++; - } - } - } -} - -static inline void -fill_mask_L(Imaging imOut, const UINT8* ink, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* fill with mode "L" matte */ - - int x, y, i; - unsigned int tmp1, tmp2; - - if (imOut->image8) { - - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* mask = imMask->image8[y+sy]+sx; - for (x = 0; x < xsize; x++) { - *out = BLEND(*mask, *out, ink[0], tmp1, tmp2); - out++, mask++; - } - } - - } else { - - for (y = 0; y < ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y+dy]+dx*pixelsize; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; - for (x = 0; x < xsize; x++) { - for (i = 0; i < pixelsize; i++) { - *out = BLEND(*mask, *out, ink[i], tmp1, tmp2); - out++; - } - mask++; - } - } - } -} - -static inline void -fill_mask_RGBA(Imaging imOut, const UINT8* ink, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* fill with mode "RGBA" matte */ - - int x, y, i; - unsigned int tmp1, tmp2; - - if (imOut->image8) { - - sx = sx*4+3; - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; - for (x = 0; x < xsize; x++) { - *out = BLEND(*mask, *out, ink[0], tmp1, tmp2); - out++, mask += 4; - } - } - - } else { - - dx *= pixelsize; - sx = sx*4 + 3; - for (y = 0; y < ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y+dy]+dx; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; - for (x = 0; x < xsize; x++) { - for (i = 0; i < pixelsize; i++) { - *out = BLEND(*mask, *out, ink[i], tmp1, tmp2); - out++; - } - mask += 4; - } - } - } -} - -static inline void -fill_mask_RGBa(Imaging imOut, const UINT8* ink, Imaging imMask, - int dx, int dy, int sx, int sy, - int xsize, int ysize, int pixelsize) -{ - /* fill with mode "RGBa" matte */ - - int x, y, i; - unsigned int tmp1; - - if (imOut->image8) { - - sx = sx*4 + 3; - for (y = 0; y < ysize; y++) { - UINT8* out = imOut->image8[y+dy]+dx; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; - for (x = 0; x < xsize; x++) { - *out = PREBLEND(*mask, *out, ink[0], tmp1); - out++, mask += 4; - } - } - - } else { - - dx *= pixelsize; - sx = sx*4 + 3; - for (y = 0; y < ysize; y++) { - UINT8* out = (UINT8*) imOut->image[y+dy]+dx; - UINT8* mask = (UINT8*) imMask->image[y+sy]+sx; - for (x = 0; x < xsize; x++) { - for (i = 0; i < pixelsize; i++) { - *out = PREBLEND(*mask, *out, ink[i], tmp1); - out++; - } - mask += 4; - } - } - } -} - -int -ImagingFill2(Imaging imOut, const void* ink, Imaging imMask, - int dx0, int dy0, int dx1, int dy1) -{ - ImagingSectionCookie cookie; - int xsize, ysize; - int pixelsize; - int sx0, sy0; - - if (!imOut || !ink) { - (void) ImagingError_ModeError(); - return -1; - } - - pixelsize = imOut->pixelsize; - - xsize = dx1 - dx0; - ysize = dy1 - dy0; - - if (imMask && (xsize != imMask->xsize || ysize != imMask->ysize)) { - (void) ImagingError_Mismatch(); - return -1; - } - - /* Determine which region to fill */ - sx0 = sy0 = 0; - if (dx0 < 0) - xsize += dx0, sx0 = -dx0, dx0 = 0; - if (dx0 + xsize > imOut->xsize) - xsize = imOut->xsize - dx0; - if (dy0 < 0) - ysize += dy0, sy0 = -dy0, dy0 = 0; - if (dy0 + ysize > imOut->ysize) - ysize = imOut->ysize - dy0; - - if (xsize <= 0 || ysize <= 0) - return 0; - - if (!imMask) { - ImagingSectionEnter(&cookie); - fill(imOut, ink, dx0, dy0, xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "1") == 0) { - ImagingSectionEnter(&cookie); - fill_mask_1(imOut, ink, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "L") == 0) { - ImagingSectionEnter(&cookie); - fill_mask_L(imOut, ink, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "RGBA") == 0) { - ImagingSectionEnter(&cookie); - fill_mask_RGBA(imOut, ink, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else if (strcmp(imMask->mode, "RGBa") == 0) { - ImagingSectionEnter(&cookie); - fill_mask_RGBa(imOut, ink, imMask, dx0, dy0, sx0, sy0, - xsize, ysize, pixelsize); - ImagingSectionLeave(&cookie); - - } else { - (void) ImagingError_ValueError("bad transparency mask"); - return -1; - } - - return 0; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c deleted file mode 100755 index b6898e301d1..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcdDecode.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for uncompressed PCD image data. - * - * history: - * 96-05-10 fl Created - * 96-05-18 fl New tables - * 97-01-25 fl Use PhotoYCC unpacker - * - * notes: - * This driver supports uncompressed PCD modes only - * (resolutions up to 768x512). - * - * Copyright (c) Fredrik Lundh 1996-97. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - int x; - int chunk; - UINT8* out; - UINT8* ptr; - - ptr = buf; - - chunk = 3 * state->xsize; - - for (;;) { - - /* We need data for two full lines before we can do anything */ - if (bytes < chunk) - return ptr - buf; - - /* Unpack first line */ - out = state->buffer; - for (x = 0; x < state->xsize; x++) { - out[0] = ptr[x]; - out[1] = ptr[(x+4*state->xsize)/2]; - out[2] = ptr[(x+5*state->xsize)/2]; - out += 4; - } - - state->shuffle((UINT8*) im->image[state->y], - state->buffer, state->xsize); - - if (++state->y >= state->ysize) - return -1; /* This can hardly happen */ - - /* Unpack second line */ - out = state->buffer; - for (x = 0; x < state->xsize; x++) { - out[0] = ptr[x+state->xsize]; - out[1] = ptr[(x+4*state->xsize)/2]; - out[2] = ptr[(x+5*state->xsize)/2]; - out += 4; - } - - state->shuffle((UINT8*) im->image[state->y], - state->buffer, state->xsize); - - if (++state->y >= state->ysize) - return -1; - - ptr += chunk; - bytes -= chunk; - - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c deleted file mode 100755 index ab82b23adcc..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxDecode.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for PCX image data. - * - * history: - * 95-09-14 fl Created - * - * Copyright (c) Fredrik Lundh 1995. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -int -ImagingPcxDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8 n; - UINT8* ptr; - - ptr = buf; - - for (;;) { - - if (bytes < 1) - return ptr - buf; - - if ((*ptr & 0xC0) == 0xC0) { - - /* Run */ - if (bytes < 2) - return ptr - buf; - - n = ptr[0] & 0x3F; - - while (n > 0) { - if (state->x >= state->bytes) { - state->errcode = IMAGING_CODEC_OVERRUN; - break; - } - state->buffer[state->x++] = ptr[1]; - n--; - } - - ptr += 2; bytes -= 2; - - } else { - - /* Literal */ - state->buffer[state->x++] = ptr[0]; - ptr++; bytes--; - - } - - if (state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - } - - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c deleted file mode 100755 index 87d59946388..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/PcxEncode.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * encoder for PCX data - * - * history: - * 99-02-07 fl created - * - * Copyright (c) Fredrik Lundh 1999. - * Copyright (c) Secret Labs AB 1999. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -enum { INIT, FETCH, ENCODE }; - -/* we're reusing "ystep" to store the last value */ -#define LAST ystep - -int -ImagingPcxEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8* ptr; - int this; - - ptr = buf; - - if (!state->state) { - - /* sanity check */ - if (state->xsize <= 0 || state->ysize <= 0) { - state->errcode = IMAGING_CODEC_END; - return 0; - } - - state->bytes = (state->xsize*state->bits + 7) / 8; - state->state = FETCH; - - } - - for (;;) - - switch (state->state) { - case FETCH: - - /* get a line of data */ - if (state->y >= state->ysize) { - state->errcode = IMAGING_CODEC_END; - return ptr - buf; - } - - state->shuffle(state->buffer, - (UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->xsize); - - state->y++; - - state->count = 1; - state->LAST = state->buffer[0]; - - state->x = 1; - - state->state = ENCODE; - /* fall through */ - - case ENCODE: - - /* compress this line */ - - /* when we arrive here, "count" contains the number of - bytes having the value of "LAST" that we've already - seen */ - - while (state->x < state->bytes) { - - if (state->count == 63) { - - /* this run is full; flush it */ - if (bytes < 2) - return ptr - buf; - *ptr++ = 0xff; - *ptr++ = state->LAST; - bytes -= 2; - - state->count = 0; - - } - - this = state->buffer[state->x]; - - if (this == state->LAST) { - - /* extend the current run */ - state->x++; - state->count++; - - } else { - - /* start a new run */ - if (state->count == 1 && (state->LAST < 0xc0)) { - if (bytes < 1) - return ptr - buf; - *ptr++ = state->LAST; - bytes--; - } else { - if (state->count > 0) { - if (bytes < 2) - return ptr - buf; - *ptr++ = 0xc0 | state->count; - *ptr++ = state->LAST; - bytes -= 2; - } - } - - state->LAST = this; - state->count = 1; - - state->x++; - - } - } - - /* end of line; flush the current run */ - if (state->count == 1 && (state->LAST < 0xc0)) { - if (bytes < 1) - return ptr - buf; - *ptr++ = state->LAST; - bytes--; - } else { - if (state->count > 0) { - if (bytes < 2) - return ptr - buf; - *ptr++ = 0xc0 | state->count; - *ptr++ = state->LAST; - bytes -= 2; - } - } - - /* read next line */ - state->state = FETCH; - break; - - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c deleted file mode 100755 index 2593dca57ec..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Point.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * point (pixel) translation - * - * history: - * 1995-11-27 fl Created - * 1996-03-31 fl Fixed colour support - * 1996-08-13 fl Support 8-bit to "1" thresholding - * 1997-05-31 fl Added floating point transform - * 1998-07-02 fl Added integer point transform - * 1998-07-17 fl Support L to anything lookup - * 2004-12-18 fl Refactored; added I to L lookup - * - * Copyright (c) 1997-2004 by Secret Labs AB. - * Copyright (c) 1995-2004 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -typedef struct { - const void* table; -} im_point_context; - -static void -im_point_8_8(Imaging imOut, Imaging imIn, im_point_context* context) -{ - int x, y; - /* 8-bit source, 8-bit destination */ - UINT8* table = (UINT8*) context->table; - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = imIn->image8[y]; - UINT8* out = imOut->image8[y]; - for (x = 0; x < imIn->xsize; x++) - out[x] = table[in[x]]; - } -} - -static void -im_point_2x8_2x8(Imaging imOut, Imaging imIn, im_point_context* context) -{ - int x, y; - /* 2x8-bit source, 2x8-bit destination */ - UINT8* table = (UINT8*) context->table; - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - for (x = 0; x < imIn->xsize; x++) { - out[0] = table[in[0]]; - out[3] = table[in[3]+256]; - in += 4; out += 4; - } - } -} - -static void -im_point_3x8_3x8(Imaging imOut, Imaging imIn, im_point_context* context) -{ - int x, y; - /* 3x8-bit source, 3x8-bit destination */ - UINT8* table = (UINT8*) context->table; - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - for (x = 0; x < imIn->xsize; x++) { - out[0] = table[in[0]]; - out[1] = table[in[1]+256]; - out[2] = table[in[2]+512]; - in += 4; out += 4; - } - } -} - -static void -im_point_4x8_4x8(Imaging imOut, Imaging imIn, im_point_context* context) -{ - int x, y; - /* 4x8-bit source, 4x8-bit destination */ - UINT8* table = (UINT8*) context->table; - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = (UINT8*) imIn->image[y]; - UINT8* out = (UINT8*) imOut->image[y]; - for (x = 0; x < imIn->xsize; x++) { - out[0] = table[in[0]]; - out[1] = table[in[1]+256]; - out[2] = table[in[2]+512]; - out[3] = table[in[3]+768]; - in += 4; out += 4; - } - } -} - -static void -im_point_8_32(Imaging imOut, Imaging imIn, im_point_context* context) -{ - int x, y; - /* 8-bit source, 32-bit destination */ - INT32* table = (INT32*) context->table; - for (y = 0; y < imIn->ysize; y++) { - UINT8* in = imIn->image8[y]; - INT32* out = imOut->image32[y]; - for (x = 0; x < imIn->xsize; x++) - out[x] = table[in[x]]; - } -} - -static void -im_point_32_8(Imaging imOut, Imaging imIn, im_point_context* context) -{ - int x, y; - /* 32-bit source, 8-bit destination */ - UINT8* table = (UINT8*) context->table; - for (y = 0; y < imIn->ysize; y++) { - INT32* in = imIn->image32[y]; - UINT8* out = imOut->image8[y]; - for (x = 0; x < imIn->xsize; x++) { - int v = in[x]; - if (v < 0) - v = 0; - else if (v > 65535) - v = 65535; - out[x] = table[v]; - } - } -} - -Imaging -ImagingPoint(Imaging imIn, const char* mode, const void* table) -{ - /* lookup table transform */ - - ImagingSectionCookie cookie; - Imaging imOut; - im_point_context context; - void (*point)(Imaging imIn, Imaging imOut, im_point_context* context); - - if (!imIn) - return (Imaging) ImagingError_ModeError(); - - if (!mode) - mode = imIn->mode; - - if (imIn->type != IMAGING_TYPE_UINT8) { - if (imIn->type != IMAGING_TYPE_INT32 || strcmp(mode, "L") != 0) - goto mode_mismatch; - } else if (!imIn->image8 && strcmp(imIn->mode, mode) != 0) - goto mode_mismatch; - - imOut = ImagingNew(mode, imIn->xsize, imIn->ysize); - if (!imOut) - return NULL; - - /* find appropriate handler */ - if (imIn->type == IMAGING_TYPE_UINT8) { - if (imIn->bands == imOut->bands && imIn->type == imOut->type) { - switch (imIn->bands) { - case 1: - point = im_point_8_8; - break; - case 2: - point = im_point_2x8_2x8; - break; - case 3: - point = im_point_3x8_3x8; - break; - case 4: - point = im_point_4x8_4x8; - break; - default: - /* this cannot really happen */ - point = im_point_8_8; - break; - } - } else - point = im_point_8_32; - } else - point = im_point_32_8; - - ImagingCopyInfo(imOut, imIn); - - ImagingSectionEnter(&cookie); - - context.table = table; - point(imOut, imIn, &context); - - ImagingSectionLeave(&cookie); - - return imOut; - - mode_mismatch: - return (Imaging) ImagingError_ValueError( - "point operation not supported for this mode" - ); -} - - -Imaging -ImagingPointTransform(Imaging imIn, double scale, double offset) -{ - /* scale/offset transform */ - - ImagingSectionCookie cookie; - Imaging imOut; - int x, y; - - if (!imIn || (strcmp(imIn->mode, "I") != 0 && - strcmp(imIn->mode, "I;16") != 0 && - strcmp(imIn->mode, "F") != 0)) - return (Imaging) ImagingError_ModeError(); - - imOut = ImagingNew(imIn->mode, imIn->xsize, imIn->ysize); - if (!imOut) - return NULL; - - ImagingCopyInfo(imOut, imIn); - - switch (imIn->type) { - case IMAGING_TYPE_INT32: - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - INT32* in = imIn->image32[y]; - INT32* out = imOut->image32[y]; - /* FIXME: add clipping? */ - for (x = 0; x < imIn->xsize; x++) - out[x] = in[x] * scale + offset; - } - ImagingSectionLeave(&cookie); - break; - case IMAGING_TYPE_FLOAT32: - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - FLOAT32* in = (FLOAT32*) imIn->image32[y]; - FLOAT32* out = (FLOAT32*) imOut->image32[y]; - for (x = 0; x < imIn->xsize; x++) - out[x] = in[x] * scale + offset; - } - ImagingSectionLeave(&cookie); - break; - case IMAGING_TYPE_SPECIAL: - if (strcmp(imIn->mode,"I;16") == 0) { - ImagingSectionEnter(&cookie); - for (y = 0; y < imIn->ysize; y++) { - UINT16* in = (UINT16 *)imIn->image[y]; - UINT16* out = (UINT16 *)imOut->image[y]; - /* FIXME: add clipping? */ - for (x = 0; x < imIn->xsize; x++) - out[x] = in[x] * scale + offset; - } - ImagingSectionLeave(&cookie); - break; - } - /* FALL THROUGH */ - default: - ImagingDelete(imOut); - return (Imaging) ImagingError_ValueError("internal error"); - } - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c deleted file mode 100755 index 1b76a6a0fab..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.c +++ /dev/null @@ -1,1610 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * image quantizer - * - * history: - * 1998-09-10 tjs Contributed - * 1998-12-29 fl Added to PIL 1.0b1 - * 2004-02-21 fl Fixed bogus free() on quantization error - * 2005-02-07 fl Limit number of colors to 256 - * - * Written by Toby J Sargeant . - * - * Copyright (c) 1998 by Toby J Sargeant - * Copyright (c) 1998-2004 by Secret Labs AB. All rights reserved. - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -#include -#include -#include -#include - -#include "Quant.h" - -#include "QuantDefines.h" -#include "QuantHash.h" -#include "QuantHeap.h" - -#define NO_OUTPUT - -typedef struct { - unsigned long scale; -} PixelHashData; - -typedef struct _PixelList { - struct _PixelList *next[3],*prev[3]; - Pixel p; - unsigned int flag:1; - int count; -} PixelList; - -typedef struct _BoxNode { - struct _BoxNode *l,*r; - PixelList *head[3],*tail[3]; - int axis; - int volume; - unsigned long pixelCount; -} BoxNode; - -#define _SQR(x) ((x)*(x)) -#define _DISTSQR(p1,p2) \ - _SQR((int)((p1)->c.r)-(int)((p2)->c.r))+ \ - _SQR((int)((p1)->c.g)-(int)((p2)->c.g))+ \ - _SQR((int)((p1)->c.b)-(int)((p2)->c.b)) - -#define MAX_HASH_ENTRIES 65536 - -#define PIXEL_HASH(r,g,b) \ - (((unsigned int)(r) )*463 ^ \ - ((unsigned int)(g)<< 8)*10069 ^ \ - ((unsigned int)(b)<<16)*64997) - -#define PIXEL_UNSCALE(p,q,s) \ - ((q)->c.r=(p)->c.r<<(s)), \ - ((q)->c.g=(p)->c.g<<(s)), \ - ((q)->c.b=(p)->c.b<<(s)) - -#define PIXEL_SCALE(p,q,s)\ - ((q)->c.r=(p)->c.r>>(s)), \ - ((q)->c.g=(p)->c.g>>(s)), \ - ((q)->c.b=(p)->c.b>>(s)) - -static unsigned long -unshifted_pixel_hash(const HashTable h, const void *p) -{ - Pixel *pixel=(Pixel *)&p; - unsigned long hash=PIXEL_HASH(pixel->c.r, - pixel->c.g, - pixel->c.b); - return hash; -} - -static int -unshifted_pixel_cmp(const HashTable h, const void *a, const void *b) -{ - Pixel *pixel1=(Pixel *)&a; - Pixel *pixel2=(Pixel *)&b; - if (pixel1->c.r==pixel2->c.r) { - if (pixel1->c.g==pixel2->c.g) { - if (pixel1->c.b==pixel2->c.b) { - return 0; - } else { - return (int)(pixel1->c.b)-(int)(pixel2->c.b); - } - } else { - return (int)(pixel1->c.g)-(int)(pixel2->c.g); - } - } else { - return (int)(pixel1->c.r)-(int)(pixel2->c.r); - } -} - -static unsigned long -pixel_hash(const HashTable h,const void *p) -{ - PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); - Pixel *pixel=(Pixel *)&p; - unsigned long hash=PIXEL_HASH(pixel->c.r>>d->scale, - pixel->c.g>>d->scale, - pixel->c.b>>d->scale); - return hash; -} - -static int -pixel_cmp(const HashTable h,const void *a,const void *b) -{ - PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); - Pixel *pixel1=(Pixel *)&a; - Pixel *pixel2=(Pixel *)&b; - unsigned long A,B; - A=PIXEL_HASH(pixel1->c.r>>d->scale, - pixel1->c.g>>d->scale, - pixel1->c.b>>d->scale); - B=PIXEL_HASH(pixel2->c.r>>d->scale, - pixel2->c.g>>d->scale, - pixel2->c.b>>d->scale); - return (A==B)?0:((Ascale=0; - timer=timer3=clock(); - for (i=0;iMAX_HASH_ENTRIES) { - d->scale++; -#ifndef NO_OUTPUT - printf ("rehashing - new scale: %d\n",(int)d->scale); -#endif - timer2=clock(); - hashtable_rehash_compute(hash,rehash_collide); - timer2=clock()-timer2; -#ifndef NO_OUTPUT - printf ("rehash took %f sec\n",timer2/(double)CLOCKS_PER_SEC); -#endif - timer+=timer2; - } - } -#ifndef NO_OUTPUT - printf ("inserts took %f sec\n",(clock()-timer)/(double)CLOCKS_PER_SEC); -#endif -#ifndef NO_OUTPUT - printf ("total %f sec\n",(clock()-timer3)/(double)CLOCKS_PER_SEC); -#endif - return hash; -} - -static void -destroy_pixel_hash(HashTable hash) -{ - PixelHashData *d=(PixelHashData *)hashtable_get_user_data(hash); - if (d) free(d); - hashtable_free(hash); -} - - -/* 1. hash quantized pixels. */ -/* 2. create R,G,B lists of sorted quantized pixels. */ -/* 3. median cut. */ -/* 4. build hash table from median cut boxes. */ -/* 5. for each pixel, compute entry in hash table, and hence median cut box. */ -/* 6. compute median cut box pixel averages. */ -/* 7. map each pixel to nearest average. */ - -static int -compute_box_volume(BoxNode *b) -{ - unsigned char rl,rh,gl,gh,bl,bh; - if (b->volume>=0) return b->volume; - if (!b->head[0]) { - b->volume=0; - } else { - rh=b->head[0]->p.c.r; - rl=b->tail[0]->p.c.r; - gh=b->head[1]->p.c.g; - gl=b->tail[1]->p.c.g; - bh=b->head[2]->p.c.b; - bl=b->tail[2]->p.c.b; - b->volume=(rh-rl+1)*(gh-gl+1)*(bh-bl+1); - } - return b->volume; -} - -static void -hash_to_list(HashTable h, const void *key, const void *val, void *u) -{ - PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); - PixelList **pl=(PixelList **)u; - PixelList *p; - Pixel *pixel=(Pixel *)&key; - int i; - Pixel q; - int count=*(int *)&val; - - PIXEL_SCALE(pixel,&q,d->scale); - - p=malloc(sizeof(PixelList)); - if (!p) return; - - p->flag=0; - p->p=q; - p->count=count; - for (i=0;i<3;i++) { - p->next[i]=pl[i]; - p->prev[i]=NULL; - if (pl[i]) pl[i]->prev[i]=p; - pl[i]=p; - } -} - -static PixelList * -mergesort_pixels(PixelList *head, int i) -{ - PixelList *c,*t,*a,*b,*p; - if (!head||!head->next[i]) { - if (head) { - head->next[i]=NULL; - head->prev[i]=NULL; - } - return head; - } - for (c=t=head;c&&t;c=c->next[i],t=(t->next[i])?t->next[i]->next[i]:NULL); - if (c) { - if (c->prev[i]) c->prev[i]->next[i]=NULL; - c->prev[i]=NULL; - } - a=mergesort_pixels(head,i); - b=mergesort_pixels(c,i); - head=NULL; - p=NULL; - while (a&&b) { - if (a->p.a.v[i]>b->p.a.v[i]) { - c=a; - a=a->next[i]; - } else { - c=b; - b=b->next[i]; - } - c->prev[i]=p; - c->next[i]=NULL; - if (p) p->next[i]=c; - p=c; - if (!head) head=c; - } - if (a) { - c->next[i]=a; - a->prev[i]=c; - } else if (b) { - c->next[i]=b; - b->prev[i]=c; - } - return head; -} - -#if defined(TEST_MERGESORT) || defined(TEST_SORTED) -static int -test_sorted(PixelList *pl[3]) -{ - int i,n,l; - PixelList *t; - - for(i=0;i<3;i++) { - n=0; - l=256; - for (t=pl[i];t;t=t->next[i]) { - if (lp.a.v[i]) return 0; - l=t->p.a.v[i]; - } - } - return 1; -} -#endif - -static int -box_heap_cmp(const Heap h, const void *A, const void *B) -{ - BoxNode *a=(BoxNode *)A; - BoxNode *b=(BoxNode *)B; - return (int)a->pixelCount-(int)b->pixelCount; -} - -#define LUMINANCE(p) (77*(p)->c.r+150*(p)->c.g+29*(p)->c.b) - -static int -splitlists(PixelList *h[3], - PixelList *t[3], - PixelList *nh[2][3], - PixelList *nt[2][3], - unsigned long nCount[2], - int axis, - unsigned long pixelCount) -{ - unsigned long left; - - PixelList *l,*r,*c,*n; - int i; - int nRight,nLeft; - int splitColourVal; - -#ifdef TEST_SPLIT - { - PixelList *_prevTest,*_nextTest; - int _i,_nextCount[3],_prevCount[3]; - for (_i=0;_i<3;_i++) { - for (_nextCount[_i]=0,_nextTest=h[_i];_nextTest&&_nextTest->next[_i];_nextTest=_nextTest->next[_i],_nextCount[_i]++); - for (_prevCount[_i]=0,_prevTest=t[_i];_prevTest&&_prevTest->prev[_i];_prevTest=_prevTest->prev[_i],_prevCount[_i]++); - if (_nextTest!=t[_i]) { - printf ("next-list of axis %d does not end at tail\n",_i); - exit(1); - } - if (_prevTest!=h[_i]) { - printf ("prev-list of axis %d does not end at head\n",_i); - exit(1); - } - for (;_nextTest&&_nextTest->prev[_i];_nextTest=_nextTest->prev[_i]); - for (;_prevTest&&_prevTest->next[_i];_prevTest=_prevTest->next[_i]); - if (_nextTest!=h[_i]) { - printf ("next-list of axis %d does not loop back to head\n",_i); - exit(1); - } - if (_prevTest!=t[_i]) { - printf ("prev-list of axis %d does not loop back to tail\n",_i); - exit(1); - } - } - for (_i=1;_i<3;_i++) { - if (_prevCount[_i]!=_prevCount[_i-1] || - _nextCount[_i]!=_nextCount[_i-1] || - _prevCount[_i]!=_nextCount[_i]) { - printf ("{%d %d %d} {%d %d %d}\n", - _prevCount[0], - _prevCount[1], - _prevCount[2], - _nextCount[0], - _nextCount[1], - _nextCount[2]); - exit(1); - } - } - } -#endif - nCount[0]=nCount[1]=0; - nLeft=nRight=0; - for (left=0,c=h[axis];c;) { - left=left+c->count; - nCount[0]+=c->count; - c->flag=0; - nLeft++; - c=c->next[axis]; - if (left*2>pixelCount) { - break; - } - } - if (c) { - splitColourVal=c->prev[axis]->p.a.v[axis]; - for (;c;c=c->next[axis]) { - if (splitColourVal!=c->p.a.v[axis]) { - break; - } - c->flag=0; - nLeft++; - nCount[0]+=c->count; - } - } - for (;c;c=c->next[axis]) { - c->flag=1; - nRight++; - nCount[1]+=c->count; - } - if (!nRight) { - for (c=t[axis],splitColourVal=t[axis]->p.a.v[axis];c;c=c->prev[axis]) { - if (splitColourVal!=c->p.a.v[axis]) { - break; - } - c->flag=1; - nRight++; - nLeft--; - nCount[0]-=c->count; - nCount[1]+=c->count; - } - } -#ifndef NO_OUTPUT - if (!nLeft) { - for (c=h[axis];c;c=c->next[axis]) { - printf ("[%d %d %d]\n",c->p.c.r,c->p.c.g,c->p.c.b); - } - printf ("warning... trivial split\n"); - } -#endif - - for (i=0;i<3;i++) { - l=r=NULL; - nh[0][i]=nt[0][i]=NULL; - nh[1][i]=nt[1][i]=NULL; - for (c=h[i];c;c=n) { - n=c->next[i]; - if (c->flag) { /* move pixel to right list*/ - if (r) r->next[i]=c; else nh[1][i]=c; - c->prev[i]=r; - r=c; - } else { /* move pixel to left list */ - if (l) l->next[i]=c; else nh[0][i]=c; - c->prev[i]=l; - l=c; - } - } - if (l) l->next[i]=NULL; - if (r) r->next[i]=NULL; - nt[0][i]=l; - nt[1][i]=r; - } - return 1; -} - -static int -split(BoxNode *node) -{ - unsigned char rl,rh,gl,gh,bl,bh; - int f[3]; - int best,axis; - int i; - PixelList *heads[2][3]; - PixelList *tails[2][3]; - unsigned long newCounts[2]; - BoxNode *left,*right; - - rh=node->head[0]->p.c.r; - rl=node->tail[0]->p.c.r; - gh=node->head[1]->p.c.g; - gl=node->tail[1]->p.c.g; - bh=node->head[2]->p.c.b; - bl=node->tail[2]->p.c.b; -#ifdef TEST_SPLIT - printf ("splitting node [%d %d %d] [%d %d %d] ",rl,gl,bl,rh,gh,bh); -#endif - f[0]=(rh-rl)*77; - f[1]=(gh-gl)*150; - f[2]=(bh-bl)*29; - - best=f[0]; - axis=0; - for (i=1;i<3;i++) { - if (besttail[_i]->next[_i]) { - printf ("tail is not tail\n"); - printf ("node->tail[%d]->next[%d]=%p\n",_i,_i,node->tail[_i]->next[_i]); - } - if (node->head[_i]->prev[_i]) { - printf ("head is not head\n"); - printf ("node->head[%d]->prev[%d]=%p\n",_i,_i,node->head[_i]->prev[_i]); - } - } - - for (_i=0;_i<3;_i++) { - for (_nextCount[_i]=0,_nextTest=node->head[_i];_nextTest&&_nextTest->next[_i];_nextTest=_nextTest->next[_i],_nextCount[_i]++); - for (_prevCount[_i]=0,_prevTest=node->tail[_i];_prevTest&&_prevTest->prev[_i];_prevTest=_prevTest->prev[_i],_prevCount[_i]++); - if (_nextTest!=node->tail[_i]) { - printf ("next-list of axis %d does not end at tail\n",_i); - } - if (_prevTest!=node->head[_i]) { - printf ("prev-list of axis %d does not end at head\n",_i); - } - for (;_nextTest&&_nextTest->prev[_i];_nextTest=_nextTest->prev[_i]); - for (;_prevTest&&_prevTest->next[_i];_prevTest=_prevTest->next[_i]); - if (_nextTest!=node->head[_i]) { - printf ("next-list of axis %d does not loop back to head\n",_i); - } - if (_prevTest!=node->tail[_i]) { - printf ("prev-list of axis %d does not loop back to tail\n",_i); - } - } - for (_i=1;_i<3;_i++) { - if (_prevCount[_i]!=_prevCount[_i-1] || - _nextCount[_i]!=_nextCount[_i-1] || - _prevCount[_i]!=_nextCount[_i]) { - printf ("{%d %d %d} {%d %d %d}\n", - _prevCount[0], - _prevCount[1], - _prevCount[2], - _nextCount[0], - _nextCount[1], - _nextCount[2]); - } - } - } -#endif - node->axis=axis; - if (!splitlists(node->head, - node->tail, - heads, - tails, - newCounts, - axis, - node->pixelCount)) { -#ifndef NO_OUTPUT - printf ("list split failed.\n"); -#endif - return 0; - } -#ifdef TEST_SPLIT - if (!test_sorted(heads[0])) { - printf ("bug in split"); - exit(1); - } - if (!test_sorted(heads[1])) { - printf ("bug in split"); - exit(1); - } -#endif - left=malloc(sizeof(BoxNode)); - right=malloc(sizeof(BoxNode)); - if (!left||!right) { - return 0; - } - for(i=0;i<3;i++) { - left->head[i]=heads[0][i]; - left->tail[i]=tails[0][i]; - right->head[i]=heads[1][i]; - right->tail[i]=tails[1][i]; - node->head[i]=NULL; - node->tail[i]=NULL; - } -#ifdef TEST_SPLIT - if (left->head[0]) { - rh=left->head[0]->p.c.r; - rl=left->tail[0]->p.c.r; - gh=left->head[1]->p.c.g; - gl=left->tail[1]->p.c.g; - bh=left->head[2]->p.c.b; - bl=left->tail[2]->p.c.b; - printf (" left node [%3d %3d %3d] [%3d %3d %3d]\n",rl,gl,bl,rh,gh,bh); - } - if (right->head[0]) { - rh=right->head[0]->p.c.r; - rl=right->tail[0]->p.c.r; - gh=right->head[1]->p.c.g; - gl=right->tail[1]->p.c.g; - bh=right->head[2]->p.c.b; - bl=right->tail[2]->p.c.b; - printf (" right node [%3d %3d %3d] [%3d %3d %3d]\n",rl,gl,bl,rh,gh,bh); - } -#endif - left->l=left->r=NULL; - right->l=right->r=NULL; - left->axis=right->axis=-1; - left->volume=right->volume=-1; - left->pixelCount=newCounts[0]; - right->pixelCount=newCounts[1]; - node->l=left; - node->r=right; - return 1; -} - -static BoxNode * -median_cut(PixelList *hl[3], - unsigned long imPixelCount, - int nPixels) -{ - PixelList *tl[3]; - int i; - BoxNode *root; - Heap h; - BoxNode *thisNode; - - h=ImagingQuantHeapNew(box_heap_cmp); - root=malloc(sizeof(BoxNode)); - if (!root) { ImagingQuantHeapFree(h); return NULL; } - for(i=0;i<3;i++) { - for (tl[i]=hl[i];tl[i]&&tl[i]->next[i];tl[i]=tl[i]->next[i]); - root->head[i]=hl[i]; - root->tail[i]=tl[i]; - } - root->l=root->r=NULL; - root->axis=-1; - root->volume=-1; - root->pixelCount=imPixelCount; - - ImagingQuantHeapAdd(h,(void *)root); - while (--nPixels) { - do { - if (!ImagingQuantHeapRemove(h,(void **)&thisNode)) { - goto done; - } - } while (compute_box_volume(thisNode)==1); - if (!split(thisNode)) { -#ifndef NO_OUTPUT - printf ("Oops, split failed...\n"); -#endif - exit (1); - } - ImagingQuantHeapAdd(h,(void *)(thisNode->l)); - ImagingQuantHeapAdd(h,(void *)(thisNode->r)); - } -done: - ImagingQuantHeapFree(h); - return root; -} - -static void -free_box_tree(BoxNode *n) -{ - PixelList *p,*pp; - if (n->l) free_box_tree(n->l); - if (n->r) free_box_tree(n->r); - for (p=n->head[0];p;p=pp) { - pp=p->next[0]; - free(p); - } - free(n); -} - -#ifdef TEST_SPLIT_INTEGRITY -static int -checkContained(BoxNode *n,Pixel *pp) -{ - if (n->l&&n->r) { - return checkContained(n->l,pp)+checkContained(n->r,pp); - } - if (n->l||n->r) { -#ifndef NO_OUTPUT - printf ("box tree is dead\n"); -#endif - return 0; - } - if ( - pp->c.r<=n->head[0]->p.c.r && - pp->c.r>=n->tail[0]->p.c.r && - pp->c.g<=n->head[1]->p.c.g && - pp->c.g>=n->tail[1]->p.c.g && - pp->c.b<=n->head[2]->p.c.b && - pp->c.b>=n->tail[2]->p.c.b) { - return 1; - } - return 0; -} -#endif - -static int -annotate_hash_table(BoxNode *n,HashTable h,unsigned long *box) -{ - PixelList *p; - PixelHashData *d=(PixelHashData *)hashtable_get_user_data(h); - Pixel q; - if (n->l&&n->r) { - return annotate_hash_table(n->l,h,box) && annotate_hash_table(n->r,h,box); - } - if (n->l||n->r) { -#ifndef NO_OUTPUT - printf ("box tree is dead\n"); -#endif - return 0; - } - for (p=n->head[0];p;p=p->next[0]) { - PIXEL_UNSCALE(&(p->p),&q,d->scale); - if (!hashtable_insert(h,(void *)q.v,(void *)*box)) { -#ifndef NO_OUTPUT - printf ("hashtable insert failed\n"); -#endif - return 0; - } - } - if (n->head[0]) (*box)++; - return 1; -} - -static int -_sort_ulong_ptr_keys(const void *a, const void *b) -{ - unsigned long A=**(unsigned long **)a; - unsigned long B=**(unsigned long **)b; - return (A==B)?0:((A*(skRow[k]));k--) { - skRow[k]=skRow[k-1]; - } - if (k!=j) skRow[k]=skElt; - } - } - return 1; -} - -static int -build_distance_tables(unsigned long *avgDist, - unsigned long **avgDistSortKey, - Pixel *p, - unsigned long nEntries) -{ - unsigned long i,j; - - for (i=0;i1) { - printf ("pixel in two boxes\n"); - for(i=0;i<3;i++) free (avg[i]); - free(count); - return 0; - } -#endif - if (!hashtable_lookup(medianBoxHash,(void *)pixelData[i].v,(void **)&paletteEntry)) { -#ifndef NO_OUTPUT - printf ("pixel lookup failed\n"); -#endif - for(i=0;i<3;i++) free (avg[i]); - free(count); - return 0; - } - if (paletteEntry>=nPaletteEntries) { -#ifndef NO_OUTPUT - printf ("panic - paletteEntry>=nPaletteEntries (%d>=%d)\n",(int)paletteEntry,(int)nPaletteEntries); -#endif - for(i=0;i<3;i++) free (avg[i]); - free(count); - return 0; - } - avg[0][paletteEntry]+=pixelData[i].c.r; - avg[1][paletteEntry]+=pixelData[i].c.g; - avg[2][paletteEntry]+=pixelData[i].c.b; - count[paletteEntry]++; - } - p=malloc(sizeof(Pixel)*nPaletteEntries); - if (!p) { - for(i=0;i<3;i++) free (avg[i]); - free(count); - return 0; - } - for (i=0;i=nPaletteEntries) { -#ifndef NO_OUTPUT - printf ("scream\n"); -#endif - return 0; - } - avg[0][qp[i]]+=pixelData[i].c.r; - avg[1][qp[i]]+=pixelData[i].c.g; - avg[2][qp[i]]+=pixelData[i].c.b; - count[qp[i]]++; - } - for (i=0;i - { - unsigned long bestmatch,bestdist,dist; - HashTable h2; - printf ("nearest neighbour search (full search)..."); fflush(stdout); timer=clock(); - h2=hashtable_new(unshifted_pixel_hash,unshifted_pixel_cmp); - for (i=0;inew),pixel); - if (data->secondPixel || newDistdata->furthestDistance) { - data->furthestDistance=oldDist; - data->furthest.v=pixel->v; - } -} - -int -quantize2(Pixel *pixelData, - unsigned long nPixels, - unsigned long nQuantPixels, - Pixel **palette, - unsigned long *paletteLength, - unsigned long **quantizedPixels, - int kmeans) -{ - HashTable h; - unsigned long i; - unsigned long mean[3]; - Pixel *p; - DistanceData data; - - unsigned long *qp; - unsigned long *avgDist; - unsigned long **avgDistSortKey; - - p=malloc(sizeof(Pixel)*nQuantPixels); - if (!p) return 0; - mean[0]=mean[1]=mean[2]=0; - h=hashtable_new(unshifted_pixel_hash,unshifted_pixel_cmp); - for (i=0;i 256) - /* FIXME: for colors > 256, consider returning an RGB image - instead (see @PIL205) */ - return (Imaging) ImagingError_ValueError("bad number of colors"); - - if (strcmp(im->mode, "L") != 0 && strcmp(im->mode, "P") != 0 && - strcmp(im->mode, "RGB")) - return ImagingError_ModeError(); - - p = malloc(sizeof(Pixel) * im->xsize * im->ysize); - if (!p) - return ImagingError_MemoryError(); - - /* collect statistics */ - - /* FIXME: maybe we could load the hash tables directly from the - image data? */ - - if (!strcmp(im->mode, "L")) { - /* greyscale */ - - /* FIXME: converting a "L" image to "P" with 256 colors - should be done by a simple copy... */ - - for (i = y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++, i++) - p[i].c.r = p[i].c.g = p[i].c.b = im->image8[y][x]; - - } else if (!strcmp(im->mode, "P")) { - /* palette */ - - pp = im->palette->palette; - - for (i = y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++, i++) { - v = im->image8[y][x]; - p[i].c.r = pp[v*4+0]; - p[i].c.g = pp[v*4+1]; - p[i].c.b = pp[v*4+2]; - } - - } else if (!strcmp(im->mode, "RGB")) { - /* true colour */ - - for (i = y = 0; y < im->ysize; y++) - for (x = 0; x < im->xsize; x++, i++) - p[i].v = im->image32[y][x]; - - } else { - free(p); - return (Imaging) ImagingError_ValueError("internal error"); - } - - switch (mode) { - case 0: - /* median cut */ - result = quantize( - p, - im->xsize*im->ysize, - colors, - &palette, - &paletteLength, - &newData, - kmeans - ); - break; - case 1: - /* maximum coverage */ - result = quantize2( - p, - im->xsize*im->ysize, - colors, - &palette, - &paletteLength, - &newData, - kmeans - ); - break; - default: - result = 0; - break; - } - - free(p); - - if (result) { - - imOut = ImagingNew("P", im->xsize, im->ysize); - - for (i = y = 0; y < im->ysize; y++) - for (x=0; x < im->xsize; x++) - imOut->image8[y][x] = (unsigned char) newData[i++]; - - free(newData); - - pp = imOut->palette->palette; - - for (i = j = 0; i < (int) paletteLength; i++) { - *pp++ = palette[i].c.r; - *pp++ = palette[i].c.g; - *pp++ = palette[i].c.b; - *pp++ = 255; - } - for (; i < 256; i++) { - *pp++ = 0; - *pp++ = 0; - *pp++ = 0; - *pp++ = 255; - } - - free(palette); - - return imOut; - - } else { - - return (Imaging) ImagingError_ValueError("quantization error"); - - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h deleted file mode 100755 index 0de485a1a1a..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Quant.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * image quantizer - * - * Written by Toby J Sargeant . - * - * See the README file for information on usage and redistribution. - */ - -#ifndef __QUANT_H__ -#define __QUANT_H__ - -typedef union { - struct { - unsigned char r,g,b,a; - } c; - struct { - unsigned char v[4]; - } a; - unsigned long v; -} Pixel; - -int quantize(Pixel *, - unsigned long, - unsigned long, - Pixel **, - unsigned long *, - unsigned long **, - int); - -int quantize2(Pixel *, - unsigned long, - unsigned long, - Pixel **, - unsigned long *, - unsigned long **, - int); -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h deleted file mode 100755 index 5b080104e1a..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantDefines.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * image quantizer - * - * Written by Toby J Sargeant . - * - * See the README file for information on usage and redistribution. - */ - -#ifndef __DEFINES_H__ -#define __DEFINES_H__ - -#if 0 - -void *newMalloc(size_t,const char *,const char *,int); -void newFree(void *,const char *,const char *,int); -void print_malloc_stats(); -#define malloc(x) newMalloc(x,__FILE__,__FUNCTION__,__LINE__) -#define free(x) newFree(x,__FILE__,__FUNCTION__,__LINE__) - -#endif - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c deleted file mode 100755 index e6438402dd7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.c +++ /dev/null @@ -1,477 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * hash tables used by the image quantizer - * - * history: - * 98-09-10 tjs Contributed - * 98-12-29 fl Added to PIL 1.0b1 - * - * Written by Toby J Sargeant . - * - * Copyright (c) 1998 by Toby J Sargeant - * Copyright (c) 1998 by Secret Labs AB - * - * See the README file for information on usage and redistribution. - */ - -#include -#include -#include -#include - -#include "QuantHash.h" -#include "QuantDefines.h" - -typedef struct _IntHashNode { - struct _IntHashNode *next; - void *key,*value; -} IntHashNode; - -typedef struct _IntHashTable { - IntHashNode **table; - unsigned long length; - unsigned long count; - HashFunc hashFunc; - HashCmpFunc cmpFunc; - DestroyFunc keyDestroyFunc; - DestroyFunc valDestroyFunc; - void *userData; -} IntHashTable; - -#define MIN_LENGTH 11 -#define RESIZE_FACTOR 3 - -static int _hashtable_insert_node(IntHashTable *,IntHashNode *,int,int,CollisionFunc); -#if 0 -static int _hashtable_test(IntHashTable *); -#endif - -HashTable hashtable_new(HashFunc hf,HashCmpFunc cf) { - IntHashTable *h; - h=malloc(sizeof(IntHashTable)); - if (!h) { return NULL; } - h->hashFunc=hf; - h->cmpFunc=cf; - h->keyDestroyFunc=NULL; - h->valDestroyFunc=NULL; - h->length=MIN_LENGTH; - h->count=0; - h->userData=NULL; - h->table=malloc(sizeof(IntHashNode *)*h->length); - if (!h->table) { free(h); return NULL; } - memset (h->table,0,sizeof(IntHashNode *)*h->length); - return (HashTable)h; -} - -static void _hashtable_destroy(HashTable H,const void *key,const void *val,void *u) { - IntHashTable *h=(IntHashTable *)H; - if (h->keyDestroyFunc&&key) { - h->keyDestroyFunc((HashTable)h,(void *)key); - } - if (h->valDestroyFunc&&val) { - h->valDestroyFunc((HashTable)h,(void *)val); - } -} - -static unsigned long _findPrime(unsigned long start,int dir) { - static int unit[]={0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0}; - unsigned long t; - while (start>1) { - if (!unit[start&0x0f]) { - start+=dir; - continue; - } - for (t=2;t=sqrt((double)start)) { - break; - } - start+=dir; - } - return start; -} - -static void _hashtable_rehash(IntHashTable *h, - CollisionFunc cf, - unsigned long newSize) { - IntHashNode **oldTable=h->table; - unsigned long i; - IntHashNode *n,*nn; - unsigned long oldSize; - oldSize=h->length; - h->table=malloc(sizeof(IntHashNode *)*newSize); - if (!h->table) { - h->table=oldTable; - return; - } - h->length=newSize; - h->count=0; - memset (h->table,0,sizeof(IntHashNode *)*h->length); - for (i=0;inext; - _hashtable_insert_node(h,n,0,0,cf); - } - } - free(oldTable); -} - -static void _hashtable_resize(IntHashTable *h) { - unsigned long newSize; - unsigned long oldSize; - oldSize=h->length; - newSize=oldSize; - if (h->count*RESIZE_FACTORlength) { - newSize=_findPrime(h->length/2-1,-1); - } else if (h->length*RESIZE_FACTORcount) { - newSize=_findPrime(h->length*2+1,+1); - } - if (newSizelength;i++) { - for (n=h->table[i];n&&n->next;n=n->next) { - j=h->cmpFunc((HashTable)h,n->key,n->next->key); - printf ("%c",j?(j<0?'-':'+'):'='); - } - printf ("\n"); - } - return 0; -} -#endif - -static int _hashtable_insert_node(IntHashTable *h,IntHashNode *node,int resize,int update,CollisionFunc cf) { - unsigned long hash=h->hashFunc((HashTable)h,node->key)%h->length; - IntHashNode **n,*nv; - int i; - - for (n=&(h->table[hash]);*n;n=&((*n)->next)) { - nv=*n; - i=h->cmpFunc((HashTable)h,nv->key,node->key); - if (!i) { - if (cf) { - nv->key=node->key; - cf((HashTable)h,&(nv->key),&(nv->value),node->key,node->value); - free(node); - return 1; - } else { - if (h->valDestroyFunc) { - h->valDestroyFunc((HashTable)h,nv->value); - } - if (h->keyDestroyFunc) { - h->keyDestroyFunc((HashTable)h,nv->key); - } - nv->key=node->key; - nv->value=node->value; - free(node); - return 1; - } - } else if (i>0) { - break; - } - } - if (!update) { - node->next=*n; - *n=node; - h->count++; - if (resize) _hashtable_resize(h); - return 1; - } else { - return 0; - } -} - -static int _hashtable_insert(IntHashTable *h,void *key,void *val,int resize,int update) { - IntHashNode **n,*nv; - IntHashNode *t; - int i; - unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; - - for (n=&(h->table[hash]);*n;n=&((*n)->next)) { - nv=*n; - i=h->cmpFunc((HashTable)h,nv->key,key); - if (!i) { - if (h->valDestroyFunc) { h->valDestroyFunc((HashTable)h,nv->value); } - nv->value=val; - return 1; - } else if (i>0) { - break; - } - } - if (!update) { - t=malloc(sizeof(IntHashNode)); - if (!t) return 0; - t->next=*n; - *n=t; - t->key=key; - t->value=val; - h->count++; - if (resize) _hashtable_resize(h); - return 1; - } else { - return 0; - } -} - -static int _hashtable_lookup_or_insert(IntHashTable *h,void *key,void **retVal,void *newVal,int resize) { - IntHashNode **n,*nv; - IntHashNode *t; - int i; - unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; - - for (n=&(h->table[hash]);*n;n=&((*n)->next)) { - nv=*n; - i=h->cmpFunc((HashTable)h,nv->key,key); - if (!i) { - *retVal=nv->value; - return 1; - } else if (i>0) { - break; - } - } - t=malloc(sizeof(IntHashNode)); - if (!t) return 0; - t->next=*n; - *n=t; - t->key=key; - t->value=newVal; - *retVal=newVal; - h->count++; - if (resize) _hashtable_resize(h); - return 1; -} - -int hashtable_insert_or_update_computed(HashTable H, - void *key, - ComputeFunc newFunc, - ComputeFunc existsFunc) { - IntHashTable *h=(IntHashTable *)H; - IntHashNode **n,*nv; - IntHashNode *t; - int i; - unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; - - for (n=&(h->table[hash]);*n;n=&((*n)->next)) { - nv=*n; - i=h->cmpFunc((HashTable)h,nv->key,key); - if (!i) { - void *old=nv->value; - if (existsFunc) { - existsFunc(H,nv->key,&(nv->value)); - if (nv->value!=old) { - if (h->valDestroyFunc) { - h->valDestroyFunc((HashTable)h,old); - } - } - } else { - return 0; - } - return 1; - } else if (i>0) { - break; - } - } - t=malloc(sizeof(IntHashNode)); - if (!t) return 0; - t->key=key; - t->next=*n; - *n=t; - if (newFunc) { - newFunc(H,t->key,&(t->value)); - } else { - free(t); - return 0; - } - h->count++; - _hashtable_resize(h); - return 1; -} - -int hashtable_update(HashTable H,void *key,void *val) { - IntHashTable *h=(IntHashTable *)H; - return _hashtable_insert(h,key,val,1,0); -} - -int hashtable_insert(HashTable H,void *key,void *val) { - IntHashTable *h=(IntHashTable *)H; - return _hashtable_insert(h,key,val,1,0); -} - -void hashtable_foreach_update(HashTable H,IteratorUpdateFunc i,void *u) { - IntHashTable *h=(IntHashTable *)H; - IntHashNode *n; - unsigned long x; - - if (h->table) { - for (x=0;xlength;x++) { - for (n=h->table[x];n;n=n->next) { - i((HashTable)h,n->key,(void **)&(n->value),u); - } - } - } -} - -void hashtable_foreach(HashTable H,IteratorFunc i,void *u) { - IntHashTable *h=(IntHashTable *)H; - IntHashNode *n; - unsigned long x; - - if (h->table) { - for (x=0;xlength;x++) { - for (n=h->table[x];n;n=n->next) { - i((HashTable)h,n->key,n->value,u); - } - } - } -} - -void hashtable_free(HashTable H) { - IntHashTable *h=(IntHashTable *)H; - IntHashNode *n,*nn; - unsigned long i; - - if (h->table) { - if (h->keyDestroyFunc || h->keyDestroyFunc) { - hashtable_foreach(H,_hashtable_destroy,NULL); - } - for (i=0;ilength;i++) { - for (n=h->table[i];n;n=nn) { - nn=n->next; - free(n); - } - } - free(h->table); - } - free(h); -} - -DestroyFunc hashtable_set_value_destroy_func(HashTable H,DestroyFunc d) { - IntHashTable *h=(IntHashTable *)H; - DestroyFunc r=h->valDestroyFunc; - h->valDestroyFunc=d; - return r; -} - -DestroyFunc hashtable_set_key_destroy_func(HashTable H,DestroyFunc d) { - IntHashTable *h=(IntHashTable *)H; - DestroyFunc r=h->keyDestroyFunc; - h->keyDestroyFunc=d; - return r; -} - -static int _hashtable_remove(IntHashTable *h, - const void *key, - void **keyRet, - void **valRet, - int resize) { - unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; - IntHashNode *n,*p; - int i; - - for (p=NULL,n=h->table[hash];n;p=n,n=n->next) { - i=h->cmpFunc((HashTable)h,n->key,key); - if (!i) { - if (p) p=n->next; else h->table[hash]=n->next; - *keyRet=n->key; - *valRet=n->value; - free(n); - h->count++; - return 1; - } else if (i>0) { - break; - } - } - return 0; -} - -static int _hashtable_delete(IntHashTable *h,const void *key,int resize) { - unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; - IntHashNode *n,*p; - int i; - - for (p=NULL,n=h->table[hash];n;p=n,n=n->next) { - i=h->cmpFunc((HashTable)h,n->key,key); - if (!i) { - if (p) p=n->next; else h->table[hash]=n->next; - if (h->valDestroyFunc) { h->valDestroyFunc((HashTable)h,n->value); } - if (h->keyDestroyFunc) { h->keyDestroyFunc((HashTable)h,n->key); } - free(n); - h->count++; - return 1; - } else if (i>0) { - break; - } - } - return 0; -} - -int hashtable_remove(HashTable H,const void *key,void **keyRet,void **valRet) { - IntHashTable *h=(IntHashTable *)H; - return _hashtable_remove(h,key,keyRet,valRet,1); -} - -int hashtable_delete(HashTable H,const void *key) { - IntHashTable *h=(IntHashTable *)H; - return _hashtable_delete(h,key,1); -} - -void hashtable_rehash_compute(HashTable H,CollisionFunc cf) { - IntHashTable *h=(IntHashTable *)H; - _hashtable_rehash(h,cf,h->length); -} - -void hashtable_rehash(HashTable H) { - IntHashTable *h=(IntHashTable *)H; - _hashtable_rehash(h,NULL,h->length); -} - -int hashtable_lookup_or_insert(HashTable H,void *key,void **valp,void *val) { - IntHashTable *h=(IntHashTable *)H; - return _hashtable_lookup_or_insert(h,key,valp,val,1); -} - -int hashtable_lookup(const HashTable H,const void *key,void **valp) { - IntHashTable *h=(IntHashTable *)H; - unsigned long hash=h->hashFunc((HashTable)h,key)%h->length; - IntHashNode *n; - int i; - - for (n=h->table[hash];n;n=n->next) { - i=h->cmpFunc((HashTable)h,n->key,key); - if (!i) { - *valp=n->value; - return 1; - } else if (i>0) { - break; - } - } - return 0; -} - -unsigned long hashtable_get_count(const HashTable H) { - IntHashTable *h=(IntHashTable *)H; - return h->count; -} - -void *hashtable_get_user_data(const HashTable H) { - IntHashTable *h=(IntHashTable *)H; - return h->userData; -} - -void *hashtable_set_user_data(HashTable H,void *data) { - IntHashTable *h=(IntHashTable *)H; - void *r=h->userData; - h->userData=data; - return r; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h deleted file mode 100755 index b98b56eaa4c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHash.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * image quantizer - * - * Written by Toby J Sargeant . - * - * See the README file for information on usage and redistribution. - */ - -#ifndef __HASH_H__ -#define __HASH_H__ - -#include "QuantTypes.h" - -HashTable hashtable_new(HashFunc,HashCmpFunc); -void hashtable_free(HashTable); -void hashtable_foreach(HashTable,IteratorFunc,void *); -void hashtable_foreach_update(HashTable,IteratorUpdateFunc,void *); -int hashtable_insert(HashTable,void *,void *); -int hashtable_update(HashTable,void *,void *); -int hashtable_lookup(const HashTable,const void *,void **); -int hashtable_lookup_or_insert(HashTable,void *,void **,void *); -int hashtable_insert_or_update_computed(HashTable,void *,ComputeFunc,ComputeFunc); -int hashtable_delete(HashTable,const void *); -int hashtable_remove(HashTable,const void *,void **,void **); -void *hashtable_set_user_data(HashTable,void *); -void *hashtable_get_user_data(const HashTable); -DestroyFunc hashtable_set_key_destroy_func(HashTable,DestroyFunc); -DestroyFunc hashtable_set_value_destroy_func(HashTable,DestroyFunc); -unsigned long hashtable_get_count(const HashTable); -void hashtable_rehash(HashTable); -void hashtable_rehash_compute(HashTable,CollisionFunc); - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c deleted file mode 100755 index 9332a5cd71f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * heap data type used by the image quantizer - * - * history: - * 98-09-10 tjs Contributed - * 98-12-29 fl Added to PIL 1.0b1 - * - * Written by Toby J Sargeant . - * - * Copyright (c) 1998 by Toby J Sargeant - * Copyright (c) 1998 by Secret Labs AB - * - * See the README file for information on usage and redistribution. - */ - -#include -#include -#include -#include - -#include "QuantHash.h" -#include "QuantDefines.h" - -typedef struct { - void **heap; - int heapsize; - int heapcount; - HeapCmpFunc cf; -} IntHeap; - -#define INITIAL_SIZE 256 - -#define DEBUG - -#ifdef DEBUG -static int _heap_test(Heap); -#endif - -void ImagingQuantHeapFree(Heap H) { - IntHeap *h=(IntHeap *)H; - free(h->heap); - free(h); -} - -static int _heap_grow(IntHeap *h,int newsize) { - void *newheap; - if (!newsize) newsize=h->heapsize<<1; - if (newsizeheapsize) return 0; - newheap=malloc(sizeof(void *)*newsize); - if (!newheap) return 0; - memcpy(newheap,h->heap,sizeof(void *)*h->heapsize); - free(h->heap); - h->heap=newheap; - h->heapsize=newsize; - return 1; -} - -#ifdef DEBUG -static int _heap_test(Heap H) { - IntHeap *h=(IntHeap *)H; - int k; - for (k=1;k*2<=h->heapcount;k++) { - if (h->cf(H,h->heap[k],h->heap[k*2])<0) { - printf ("heap is bad\n"); - return 0; - } - if (k*2+1<=h->heapcount && h->cf(H,h->heap[k],h->heap[k*2+1])<0) { - printf ("heap is bad\n"); - return 0; - } - } - return 1; -} -#endif - -int ImagingQuantHeapRemove(Heap H,void **r) { - IntHeap *h=(IntHeap *)H; - int k,l; - void *v; - - if (!h->heapcount) { - return 0; - } - *r=h->heap[1]; - v=h->heap[h->heapcount--]; - for (k=1;k*2<=h->heapcount;k=l) { - l=k*2; - if (lheapcount) { - if (h->cf(H,h->heap[l],h->heap[l+1])<0) { - l++; - } - } - if (h->cf(H,v,h->heap[l])>0) { - break; - } - h->heap[k]=h->heap[l]; - } - h->heap[k]=v; -#ifdef DEBUG - if (!_heap_test(H)) { printf ("oops - heap_remove messed up the heap\n"); exit(1); } -#endif - return 1; -} - -int ImagingQuantHeapAdd(Heap H,void *val) { - IntHeap *h=(IntHeap *)H; - int k; - if (h->heapcount==h->heapsize-1) { - _heap_grow(h,0); - } - k=++h->heapcount; - while (k!=1) { - if (h->cf(H,val,h->heap[k/2])<=0) { - break; - } - h->heap[k]=h->heap[k/2]; - k>>=1; - } - h->heap[k]=val; -#ifdef DEBUG - if (!_heap_test(H)) { printf ("oops - heap_add messed up the heap\n"); exit(1); } -#endif - return 1; -} - -int ImagingQuantHeapTop(Heap H,void **r) { - IntHeap *h=(IntHeap *)H; - if (!h->heapcount) { - return 0; - } - *r=h->heap[1]; - return 1; -} - -Heap *ImagingQuantHeapNew(HeapCmpFunc cf) { - IntHeap *h; - - h=malloc(sizeof(IntHeap)); - if (!h) return NULL; - h->heapsize=INITIAL_SIZE; - h->heap=malloc(sizeof(void *)*h->heapsize); - if (!h->heap) { free(h); return NULL; } - h->heapcount=0; - h->cf=cf; - return (Heap)h; -} - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h deleted file mode 100755 index 5a213c42ab8..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantHeap.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * image quantizer - * - * Written by Toby J Sargeant . - * - * See the README file for information on usage and redistribution. - */ - -#ifndef __HEAP_H__ -#define __HEAP_H__ - -#include "QuantTypes.h" - -void ImagingQuantHeapFree(Heap); -int ImagingQuantHeapRemove(Heap,void **); -int ImagingQuantHeapAdd(Heap,void *); -int ImagingQuantHeapTop(Heap,void **); -Heap *ImagingQuantHeapNew(HeapCmpFunc); - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h deleted file mode 100755 index 308b51c1324..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/QuantTypes.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * image quantizer - * - * Written by Toby J Sargeant . - * - * See the README file for information on usage and redistribution. - */ - -#ifndef __TYPES_H__ -#define __TYPES_H__ - -typedef void *HashTable; -typedef void *Heap; - -typedef unsigned long (*HashFunc)(const HashTable,const void *); -typedef int (*HashCmpFunc)(const HashTable,const void *,const void *); -typedef void (*IteratorFunc)(const HashTable,const void *,const void *,void *); -typedef void (*IteratorUpdateFunc)(const HashTable,const void *,void **,void *); -typedef void (*DestroyFunc)(const HashTable,void *); -typedef void (*ComputeFunc)(const HashTable,const void *,void **); -typedef void (*CollisionFunc)(const HashTable,void **,void **,void *,void *); - -typedef int (*HeapCmpFunc)(const Heap,const void *,const void *); - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c deleted file mode 100755 index 84090f7510e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RankFilter.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * min, max, median filters - * - * history: - * 2002-06-08 fl Created - * - * Copyright (c) Secret Labs AB 2002. All rights reserved. - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - -/* Fast rank algorithm (due to Wirth), based on public domain code - by Nicolas Devillard, available at http://ndevilla.free.fr */ - -#define SWAP(type,a,b) { register type t=(a);(a)=(b);(b)=t; } - -#define MakeRankFunction(type)\ -static type Rank##type(type a[], int n, int k)\ -{\ - register int i, j, l, m;\ - register type x;\ - l = 0; m = n-1;\ - while (l < m) {\ - x = a[k];\ - i = l;\ - j = m;\ - do {\ - while (a[i] < x) i++;\ - while (x < a[j]) j--;\ - if (i <= j) {\ - SWAP(type, a[i], a[j]);\ - i++; j--;\ - }\ - } while (i <= j);\ - if (j < k) l = i;\ - if (k < i) m = j;\ - }\ - return a[k];\ -} - -MakeRankFunction(UINT8) -MakeRankFunction(INT32) -MakeRankFunction(FLOAT32) - -Imaging -ImagingRankFilter(Imaging im, int size, int rank) -{ - Imaging imOut = NULL; - int x, y; - int i, margin, size2; - - if (!im || im->bands != 1 || im->type == IMAGING_TYPE_SPECIAL) - return (Imaging) ImagingError_ModeError(); - - if (!(size & 1)) - return (Imaging) ImagingError_ValueError("bad filter size"); - - size2 = size * size; - margin = (size-1) / 2; - - if (rank < 0 || rank >= size2) - return (Imaging) ImagingError_ValueError("bad rank value"); - - imOut = ImagingNew(im->mode, im->xsize - 2*margin, im->ysize - 2*margin); - if (!imOut) - return NULL; - -#define RANK_BODY(type) do {\ - type* buf = malloc(size2 * sizeof(type));\ - if (!buf)\ - goto nomemory;\ - for (y = 0; y < imOut->ysize; y++)\ - for (x = 0; x < imOut->xsize; x++) {\ - for (i = 0; i < size; i++)\ - memcpy(buf + i*size, &IMAGING_PIXEL_##type(im, x, y+i),\ - size * sizeof(type));\ - IMAGING_PIXEL_##type(imOut, x, y) = Rank##type(buf, size2, rank);\ - }\ -} while (0) - - if (im->image8) - RANK_BODY(UINT8); - else if (im->type == IMAGING_TYPE_INT32) - RANK_BODY(INT32); - else if (im->type == IMAGING_TYPE_FLOAT32) - RANK_BODY(FLOAT32); - else { - /* safety net (we shouldn't end up here) */ - ImagingDelete(imOut); - return (Imaging) ImagingError_ModeError(); - } - - ImagingCopyInfo(imOut, im); - - return imOut; - -nomemory: - ImagingDelete(imOut); - return (Imaging) ImagingError_MemoryError(); -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h deleted file mode 100755 index 4d28fa54665..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Raw.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Raw.h */ - -typedef struct { - - /* CONFIGURATION */ - - /* Distance between lines (0=no padding) */ - int stride; - - /* PRIVATE (initialized by decoder) */ - - /* Padding between lines */ - int skip; - -} RAWSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c deleted file mode 100755 index 5aadb2b44d7..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawDecode.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for raw (uncompressed) image data - * - * history: - * 96-03-07 fl rewritten - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#include "Raw.h" - - -int -ImagingRawDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - enum { LINE = 1, SKIP }; - RAWSTATE* rawstate = state->context; - - UINT8* ptr; - - if (state->state == 0) { - - /* Initialize context variables */ - - /* get size of image data and padding */ - state->bytes = (state->xsize * state->bits + 7) / 8; - rawstate->skip = (rawstate->stride) ? - rawstate->stride - state->bytes : 0; - - /* check image orientation */ - if (state->ystep < 0) { - state->y = state->ysize-1; - state->ystep = -1; - } else - state->ystep = 1; - - state->state = LINE; - - } - - ptr = buf; - - for (;;) { - - if (state->state == SKIP) { - - /* Skip padding between lines */ - - if (bytes < rawstate->skip) - return ptr - buf; - - ptr += rawstate->skip; - bytes -= rawstate->skip; - - state->state = LINE; - - } - - if (bytes < state->bytes) - return ptr - buf; - - /* Unpack data */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, ptr, state->xsize); - - ptr += state->bytes; - bytes -= state->bytes; - - state->y += state->ystep; - - if (state->y < 0 || state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - - state->state = SKIP; - - } - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c deleted file mode 100755 index a3b74b8cffc..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/RawEncode.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * coder for raw data - * - * FIXME: This encoder will fail if the buffer is not large enough to - * hold one full line of data. There's a workaround for this problem - * in ImageFile.py, but it should be solved here instead. - * - * history: - * 96-04-30 fl created - * 97-01-03 fl fixed padding - * - * Copyright (c) Fredrik Lundh 1996-97. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. */ - - -#include "Imaging.h" - -int -ImagingRawEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - UINT8* ptr; - - if (!state->state) { - - /* The "count" field holds the stride, if specified. Fix - things up so "bytes" is the full size, and "count" the - packed size */ - - if (state->count > 0) { - int bytes = state->count; - - /* stride must not be less than real size */ - if (state->count < state->bytes) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - state->count = state->bytes; - state->bytes = bytes; - } else - state->count = state->bytes; - - /* The "ystep" field specifies the orientation */ - - if (state->ystep < 0) { - state->y = state->ysize-1; - state->ystep = -1; - } else - state->ystep = 1; - - state->state = 1; - - } - - if (bytes < state->bytes) { - state->errcode = IMAGING_CODEC_CONFIG; - return 0; - } - - ptr = buf; - - while (bytes >= state->bytes) { - - state->shuffle(ptr, (UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->xsize); - - if (state->bytes > state->count) - /* zero-pad the buffer, if necessary */ - memset(ptr + state->count, 0, state->bytes - state->count); - - ptr += state->bytes; - bytes -= state->bytes; - - state->y += state->ystep; - - if (state->y < 0 || state->y >= state->ysize) { - state->errcode = IMAGING_CODEC_END; - break; - } - - } - - return ptr - buf; - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c deleted file mode 100755 index 76a66c2a5b1..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Storage.c +++ /dev/null @@ -1,413 +0,0 @@ -/* - * The Python Imaging Library - * $Id$ - * - * imaging storage object - * - * This baseline implementation is designed to efficiently handle - * large images, provided they fit into the available memory. - * - * history: - * 1995-06-15 fl Created - * 1995-09-12 fl Updated API, compiles silently under ANSI C++ - * 1995-11-26 fl Compiles silently under Borland 4.5 as well - * 1996-05-05 fl Correctly test status from Prologue - * 1997-05-12 fl Increased THRESHOLD (to speed up Tk interface) - * 1997-05-30 fl Added support for floating point images - * 1997-11-17 fl Added support for "RGBX" images - * 1998-01-11 fl Added support for integer images - * 1998-03-05 fl Exported Prologue/Epilogue functions - * 1998-07-01 fl Added basic "YCrCb" support - * 1998-07-03 fl Attach palette in prologue for "P" images - * 1998-07-09 hk Don't report MemoryError on zero-size images - * 1998-07-12 fl Change "YCrCb" to "YCbCr" (!) - * 1998-10-26 fl Added "I;16" and "I;16B" storage modes (experimental) - * 1998-12-29 fl Fixed allocation bug caused by previous fix - * 1999-02-03 fl Added "RGBa" and "BGR" modes (experimental) - * 2001-04-22 fl Fixed potential memory leak in ImagingCopyInfo - * 2003-09-26 fl Added "LA" and "PA" modes (experimental) - * 2005-10-02 fl Added image counter - * - * Copyright (c) 1998-2005 by Secret Labs AB - * Copyright (c) 1995-2005 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int ImagingNewCount = 0; - -/* -------------------------------------------------------------------- - * Standard image object. - */ - -Imaging -ImagingNewPrologueSubtype(const char *mode, unsigned xsize, unsigned ysize, - int size) -{ - Imaging im; - ImagingSectionCookie cookie; - - im = (Imaging) calloc(1, size); - if (!im) - return (Imaging) ImagingError_MemoryError(); - - /* Setup image descriptor */ - im->xsize = xsize; - im->ysize = ysize; - - im->type = IMAGING_TYPE_UINT8; - - if (strcmp(mode, "1") == 0) { - /* 1-bit images */ - im->bands = im->pixelsize = 1; - im->linesize = xsize; - - } else if (strcmp(mode, "P") == 0) { - /* 8-bit palette mapped images */ - im->bands = im->pixelsize = 1; - im->linesize = xsize; - im->palette = ImagingPaletteNew("RGB"); - - } else if (strcmp(mode, "PA") == 0) { - /* 8-bit palette with alpha */ - im->bands = 2; - im->pixelsize = 4; /* store in image32 memory */ - im->linesize = xsize * 4; - im->palette = ImagingPaletteNew("RGB"); - - } else if (strcmp(mode, "L") == 0) { - /* 8-bit greyscale (luminance) images */ - im->bands = im->pixelsize = 1; - im->linesize = xsize; - - } else if (strcmp(mode, "LA") == 0) { - /* 8-bit greyscale (luminance) with alpha */ - im->bands = 2; - im->pixelsize = 4; /* store in image32 memory */ - im->linesize = xsize * 4; - - } else if (strcmp(mode, "F") == 0) { - /* 32-bit floating point images */ - im->bands = 1; - im->pixelsize = 4; - im->linesize = xsize * 4; - im->type = IMAGING_TYPE_FLOAT32; - - } else if (strcmp(mode, "I") == 0) { - /* 32-bit integer images */ - im->bands = 1; - im->pixelsize = 4; - im->linesize = xsize * 4; - im->type = IMAGING_TYPE_INT32; - - } else if (strcmp(mode, "I;16") == 0 || strcmp(mode, "I;16L") == 0 || strcmp(mode, "I;16B") == 0) { - /* EXPERIMENTAL */ - /* 16-bit raw integer images */ - im->bands = 1; - im->pixelsize = 2; - im->linesize = xsize * 2; - im->type = IMAGING_TYPE_SPECIAL; - - } else if (strcmp(mode, "RGB") == 0) { - /* 24-bit true colour images */ - im->bands = 3; - im->pixelsize = 4; - im->linesize = xsize * 4; - - } else if (strcmp(mode, "BGR;15") == 0) { - /* EXPERIMENTAL */ - /* 15-bit true colour */ - im->bands = 1; - im->pixelsize = 2; - im->linesize = (xsize*2 + 3) & -4; - im->type = IMAGING_TYPE_SPECIAL; - - } else if (strcmp(mode, "BGR;16") == 0) { - /* EXPERIMENTAL */ - /* 16-bit reversed true colour */ - im->bands = 1; - im->pixelsize = 2; - im->linesize = (xsize*2 + 3) & -4; - im->type = IMAGING_TYPE_SPECIAL; - - } else if (strcmp(mode, "BGR;24") == 0) { - /* EXPERIMENTAL */ - /* 24-bit reversed true colour */ - im->bands = 1; - im->pixelsize = 3; - im->linesize = (xsize*3 + 3) & -4; - im->type = IMAGING_TYPE_SPECIAL; - - } else if (strcmp(mode, "BGR;32") == 0) { - /* EXPERIMENTAL */ - /* 32-bit reversed true colour */ - im->bands = 1; - im->pixelsize = 4; - im->linesize = (xsize*4 + 3) & -4; - im->type = IMAGING_TYPE_SPECIAL; - - } else if (strcmp(mode, "RGBX") == 0) { - /* 32-bit true colour images with padding */ - im->bands = im->pixelsize = 4; - im->linesize = xsize * 4; - - } else if (strcmp(mode, "RGBA") == 0) { - /* 32-bit true colour images with alpha */ - im->bands = im->pixelsize = 4; - im->linesize = xsize * 4; - - } else if (strcmp(mode, "RGBa") == 0) { - /* EXPERIMENTAL */ - /* 32-bit true colour images with premultiplied alpha */ - im->bands = im->pixelsize = 4; - im->linesize = xsize * 4; - - } else if (strcmp(mode, "CMYK") == 0) { - /* 32-bit colour separation */ - im->bands = im->pixelsize = 4; - im->linesize = xsize * 4; - - } else if (strcmp(mode, "YCbCr") == 0) { - /* 24-bit video format */ - im->bands = 3; - im->pixelsize = 4; - im->linesize = xsize * 4; - - } else { - free(im); - return (Imaging) ImagingError_ValueError("unrecognized mode"); - } - - /* Setup image descriptor */ - strcpy(im->mode, mode); - - ImagingSectionEnter(&cookie); - - /* Pointer array (allocate at least one line, to avoid MemoryError - exceptions on platforms where calloc(0, x) returns NULL) */ - im->image = (char **) calloc((ysize > 0) ? ysize : 1, sizeof(void *)); - - ImagingSectionLeave(&cookie); - - if (!im->image) { - free(im); - return (Imaging) ImagingError_MemoryError(); - } - - ImagingNewCount++; - - return im; -} - -Imaging -ImagingNewPrologue(const char *mode, unsigned xsize, unsigned ysize) -{ - return ImagingNewPrologueSubtype( - mode, xsize, ysize, sizeof(struct ImagingMemoryInstance) - ); -} - -Imaging -ImagingNewEpilogue(Imaging im) -{ - /* If the raster data allocator didn't setup a destructor, - assume that it couldn't allocate the required amount of - memory. */ - if (!im->destroy) - return (Imaging) ImagingError_MemoryError(); - - /* Initialize alias pointers to pixel data. */ - switch (im->pixelsize) { - case 1: case 2: case 3: - im->image8 = (UINT8 **) im->image; - break; - case 4: - im->image32 = (INT32 **) im->image; - break; - } - - return im; -} - -void -ImagingDelete(Imaging im) -{ - if (!im) - return; - - if (im->palette) - ImagingPaletteDelete(im->palette); - - if (im->destroy) - im->destroy(im); - - if (im->image) - free(im->image); - - free(im); -} - - -/* Array Storage Type */ -/* ------------------ */ -/* Allocate image as an array of line buffers. */ - -static void -ImagingDestroyArray(Imaging im) -{ - int y; - - if (im->image) - for (y = 0; y < im->ysize; y++) - if (im->image[y]) - free(im->image[y]); -} - -Imaging -ImagingNewArray(const char *mode, int xsize, int ysize) -{ - Imaging im; - ImagingSectionCookie cookie; - - int y; - char* p; - - im = ImagingNewPrologue(mode, xsize, ysize); - if (!im) - return NULL; - - ImagingSectionEnter(&cookie); - - /* Allocate image as an array of lines */ - for (y = 0; y < im->ysize; y++) { - p = (char *) malloc(im->linesize); - if (!p) { - ImagingDestroyArray(im); - break; - } - im->image[y] = p; - } - - ImagingSectionLeave(&cookie); - - if (y == im->ysize) - im->destroy = ImagingDestroyArray; - - return ImagingNewEpilogue(im); -} - - -/* Block Storage Type */ -/* ------------------ */ -/* Allocate image as a single block. */ - -static void -ImagingDestroyBlock(Imaging im) -{ - if (im->block) - free(im->block); -} - -Imaging -ImagingNewBlock(const char *mode, int xsize, int ysize) -{ - Imaging im; - int y, i; - int bytes; - - im = ImagingNewPrologue(mode, xsize, ysize); - if (!im) - return NULL; - - /* Use a single block */ - bytes = im->ysize * im->linesize; - if (bytes <= 0) - /* some platforms return NULL for malloc(0); this fix - prevents MemoryError on zero-sized images on such - platforms */ - bytes = 1; - im->block = (char *) malloc(bytes); - - if (im->block) { - - for (y = i = 0; y < im->ysize; y++) { - im->image[y] = im->block + i; - i += im->linesize; - } - - im->destroy = ImagingDestroyBlock; - - } - - return ImagingNewEpilogue(im); -} - -/* -------------------------------------------------------------------- - * Create a new, internally allocated, image. - */ -#if defined(IMAGING_SMALL_MODEL) -#define THRESHOLD 16384L -#else -#define THRESHOLD (2048*2048*4L) -#endif - -Imaging -ImagingNew(const char* mode, int xsize, int ysize) -{ - int bytes; - Imaging im; - - if (strlen(mode) == 1) { - if (mode[0] == 'F' || mode[0] == 'I') - bytes = 4; - else - bytes = 1; - } else - bytes = strlen(mode); /* close enough */ - - if ((long) xsize * ysize * bytes <= THRESHOLD) { - im = ImagingNewBlock(mode, xsize, ysize); - if (im) - return im; - /* assume memory error; try allocating in array mode instead */ - ImagingError_Clear(); - } - - return ImagingNewArray(mode, xsize, ysize); -} - -Imaging -ImagingNew2(const char* mode, Imaging imOut, Imaging imIn) -{ - /* allocate or validate output image */ - - if (imOut) { - /* make sure images match */ - if (strcmp(imOut->mode, mode) != 0 - || imOut->xsize != imIn->xsize - || imOut->ysize != imIn->ysize) { - return ImagingError_Mismatch(); - } - } else { - /* create new image */ - imOut = ImagingNew(mode, imIn->xsize, imIn->ysize); - if (!imOut) - return NULL; - } - - return imOut; -} - -void -ImagingCopyInfo(Imaging destination, Imaging source) -{ - if (source->palette) { - if (destination->palette) - ImagingPaletteDelete(destination->palette); - destination->palette = ImagingPaletteDuplicate(source->palette); - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c deleted file mode 100755 index bf34d93821f..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/SunRleDecode.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * THIS IS WORK IN PROGRESS - * - * The Python Imaging Library. - * $Id$ - * - * decoder for SUN RLE data. - * - * history: - * 97-01-04 fl Created - * - * Copyright (c) Fredrik Lundh 1997. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingSunRleDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - int n; - UINT8* ptr; - - ptr = buf; - - for (;;) { - - if (bytes < 1) - return ptr - buf; - - if (ptr[0] == 0x80) { - - if (bytes < 2) - break; - - n = ptr[1]; - - if (n == 0) { - - /* Literal 0x80 (2 bytes) */ - n = 1; - - state->buffer[state->x] = 0x80; - - ptr += 2; - bytes -= 2; - - } else { - - /* Run (3 bytes) */ - if (bytes < 3) - break; - - if (state->x + n > state->bytes) { - /* FIXME: is this correct? */ - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - memset(state->buffer + state->x, ptr[2], n); - - ptr += 3; - bytes -= 3; - - } - - } else { - - /* Literal (1+n bytes block) */ - n = ptr[0]; - - if (bytes < 1 + n) - break; - - if (state->x + n > state->bytes) { - /* FIXME: is this correct? */ - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - memcpy(state->buffer + state->x, ptr + 1, n); - - ptr += 1 + n; - bytes -= 1 + n; - - } - - state->x += n; - - if (state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - } - - } - - return ptr - buf; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c deleted file mode 100755 index cad6bc3bcfe..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/TgaRleDecode.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for Targa RLE data. - * - * history: - * 97-01-04 fl created - * 98-09-11 fl don't one byte per pixel; take orientation into account - * - * Copyright (c) Fredrik Lundh 1997. - * Copyright (c) Secret Labs AB 1997-98. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingTgaRleDecode(Imaging im, ImagingCodecState state, - UINT8* buf, int bytes) -{ - int n, depth; - UINT8* ptr; - - ptr = buf; - - if (state->state == 0) { - - /* check image orientation */ - if (state->ystep < 0) { - state->y = state->ysize-1; - state->ystep = -1; - } else - state->ystep = 1; - - state->state = 1; - - } - - depth = state->count; - - for (;;) { - - if (bytes < 1) - return ptr - buf; - - if (ptr[0] & 0x80) { - - /* Run (1 + pixelsize bytes) */ - - if (bytes < 1 + depth) - break; - - n = depth * ((ptr[0] & 0x7f) + 1); - - if (state->x + n > state->bytes) { - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - if (depth == 1) - memset(state->buffer + state->x, ptr[1], n); - else { - int i; - for (i = 0; i < n; i += depth) - memcpy(state->buffer + state->x + i, ptr+1, depth); - } - - ptr += 1 + depth; - bytes -= 1 + depth; - - } else { - - /* Literal (1+n+1 bytes block) */ - n = depth * (ptr[0] + 1); - - if (bytes < 1 + n) - break; - - if (state->x + n > state->bytes) { - state->errcode = IMAGING_CODEC_OVERRUN; - return -1; - } - - memcpy(state->buffer + state->x, ptr + 1, n); - - ptr += 1 + n; - bytes -= 1 + n; - - } - - state->x += n; - - if (state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->buffer, - state->xsize); - - state->x = 0; - - state->y += state->ystep; - - if (state->y < 0 || state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - - } - - } - - return ptr - buf; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c deleted file mode 100755 index 90a76feb341..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Unpack.c +++ /dev/null @@ -1,1028 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * code to unpack raw data from various file formats - * - * history: - * 1996-03-07 fl Created (from various decoders) - * 1996-04-19 fl Added band unpackers - * 1996-05-12 fl Published RGB unpackers - * 1996-05-27 fl Added nibble unpacker - * 1996-12-10 fl Added complete set of PNG unpackers - * 1996-12-29 fl Set alpha byte in RGB unpackers - * 1997-01-05 fl Added remaining TGA unpackers - * 1997-01-18 fl Added inverting band unpackers - * 1997-01-25 fl Added FlashPix unpackers - * 1997-05-31 fl Added floating point unpackers - * 1998-02-08 fl Added I unpacker - * 1998-07-01 fl Added YCbCr unpacker - * 1998-07-02 fl Added full set of integer unpackers - * 1998-12-29 fl Added mode field, I;16 unpackers - * 1998-12-30 fl Added RGBX modes - * 1999-02-04 fl Fixed I;16 unpackers - * 2003-05-13 fl Added L/RGB reversed unpackers - * 2003-09-26 fl Added LA/PA and RGBa->RGB unpackers - * - * Copyright (c) 1997-2003 by Secret Labs AB. - * Copyright (c) 1996-1997 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - -#include "Imaging.h" - - -#define R 0 -#define G 1 -#define B 2 -#define X 3 - -#define A 3 - -#define C 0 -#define M 1 -#define Y 2 -#define K 3 - -#define CLIP(x) ((x) <= 0 ? 0 : (x) < 256 ? (x) : 255) - -/* byte-swapping macros */ - -#define C16N\ - (tmp[0]=in[0], tmp[1]=in[1]); -#define C16S\ - (tmp[1]=in[0], tmp[0]=in[1]); -#define C32N\ - (tmp[0]=in[0], tmp[1]=in[1], tmp[2]=in[2], tmp[3]=in[3]); -#define C32S\ - (tmp[3]=in[0], tmp[2]=in[1], tmp[1]=in[2], tmp[0]=in[3]); -#define C64N\ - (tmp[0]=in[0], tmp[1]=in[1], tmp[2]=in[2], tmp[3]=in[3],\ - tmp[4]=in[4], tmp[5]=in[5], tmp[6]=in[6], tmp[7]=in[7]); -#define C64S\ - (tmp[7]=in[0], tmp[6]=in[1], tmp[5]=in[2], tmp[4]=in[3],\ - tmp[3]=in[4], tmp[2]=in[5], tmp[1]=in[6], tmp[0]=in[7]); - -#ifdef WORDS_BIGENDIAN -#define C16B C16N -#define C16L C16S -#define C32B C32N -#define C32L C32S -#define C64B C64N -#define C64L C64S -#else -#define C16B C16S -#define C16L C16N -#define C32B C32S -#define C32L C32N -#define C64B C64S -#define C64L C64N -#endif - -/* bit-swapping */ - -static UINT8 BITFLIP[] = { - 0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, - 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, - 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, - 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, - 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, - 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, - 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, - 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, - 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, - 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, - 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, - 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, - 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, - 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, - 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, - 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, - 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, - 255 -}; - -/* Unpack to "1" image */ - -static void -unpack1(UINT8* out, const UINT8* in, int pixels) -{ - /* bits (msb first, white is non-zero) */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 7: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 6: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 5: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 4: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 3: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 2: *out++ = (byte & 128) ? 255 : 0; byte <<= 1; - case 1: *out++ = (byte & 128) ? 255 : 0; - } - pixels -= 8; - } -} - -static void -unpack1I(UINT8* out, const UINT8* in, int pixels) -{ - /* bits (msb first, white is zero) */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 7: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 6: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 5: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 4: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 3: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 2: *out++ = (byte & 128) ? 0 : 255; byte <<= 1; - case 1: *out++ = (byte & 128) ? 0 : 255; - } - pixels -= 8; - } -} - -static void -unpack1R(UINT8* out, const UINT8* in, int pixels) -{ - /* bits (lsb first, white is non-zero) */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 7: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 6: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 5: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 4: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 3: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 2: *out++ = (byte & 1) ? 255 : 0; byte >>= 1; - case 1: *out++ = (byte & 1) ? 255 : 0; - } - pixels -= 8; - } -} - -static void -unpack1IR(UINT8* out, const UINT8* in, int pixels) -{ - /* bits (lsb first, white is zero) */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 7: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 6: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 5: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 4: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 3: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 2: *out++ = (byte & 1) ? 0 : 255; byte >>= 1; - case 1: *out++ = (byte & 1) ? 0 : 255; - } - pixels -= 8; - } -} - - -/* Unpack to "L" image */ - -static void -unpackL2(UINT8* out, const UINT8* in, int pixels) -{ - /* nibbles */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = ((byte >> 6) & 3) * 255 / 3; byte <<= 2; - case 3: *out++ = ((byte >> 6) & 3) * 255 / 3; byte <<= 2; - case 2: *out++ = ((byte >> 6) & 3) * 255 / 3; byte <<= 2; - case 1: *out++ = ((byte >> 6) & 3) * 255 / 3; - } - pixels -= 4; - } -} - -static void -unpackL4(UINT8* out, const UINT8* in, int pixels) -{ - /* nibbles */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = ((byte >> 4) & 15) * 255 / 15; byte <<= 4; - case 1: *out++ = ((byte >> 4) & 15) * 255 / 15; - } - pixels -= 2; - } -} - -static void -unpackLA(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* LA, pixel interleaved */ - for (i = 0; i < pixels; i++) { - out[R] = out[G] = out[B] = in[0]; - out[A] = in[1]; - in += 2; out += 4; - } -} - -static void -unpackLAL(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* LA, line interleaved */ - for (i = 0; i < pixels; i++) { - out[R] = out[G] = out[B] = in[i]; - out[A] = in[i+pixels]; - out += 4; - } -} - -static void -unpackLI(UINT8* out, const UINT8* in, int pixels) -{ - /* negative */ - int i; - for (i = 0; i < pixels; i++) - out[i] = ~in[i]; -} - -static void -unpackLR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, bit reversed */ - for (i = 0; i < pixels; i++) { - out[i] = BITFLIP[in[i]]; - } -} - -static void -unpackL16(UINT8* out, const UINT8* in, int pixels) -{ - /* int16 (upper byte, little endian) */ - int i; - for (i = 0; i < pixels; i++) { - out[i] = in[1]; - in += 2; - } -} - -static void -unpackL16B(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* int16 (upper byte, big endian) */ - for (i = 0; i < pixels; i++) { - out[i] = in[0]; - in += 2; - } -} - - -/* Unpack to "P" image */ - -static void -unpackP1(UINT8* out, const UINT8* in, int pixels) -{ - /* bits */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte >> 7) & 1; byte <<= 1; - case 7: *out++ = (byte >> 7) & 1; byte <<= 1; - case 6: *out++ = (byte >> 7) & 1; byte <<= 1; - case 5: *out++ = (byte >> 7) & 1; byte <<= 1; - case 4: *out++ = (byte >> 7) & 1; byte <<= 1; - case 3: *out++ = (byte >> 7) & 1; byte <<= 1; - case 2: *out++ = (byte >> 7) & 1; byte <<= 1; - case 1: *out++ = (byte >> 7) & 1; - } - pixels -= 8; - } -} - -static void -unpackP2(UINT8* out, const UINT8* in, int pixels) -{ - /* bit pairs */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte >> 6) & 3; byte <<= 2; - case 3: *out++ = (byte >> 6) & 3; byte <<= 2; - case 2: *out++ = (byte >> 6) & 3; byte <<= 2; - case 1: *out++ = (byte >> 6) & 3; - } - pixels -= 4; - } -} - -static void -unpackP4(UINT8* out, const UINT8* in, int pixels) -{ - /* nibbles */ - while (pixels > 0) { - UINT8 byte = *in++; - switch (pixels) { - default: *out++ = (byte >> 4) & 15; byte <<= 4; - case 1: *out++ = (byte >> 4) & 15; - } - pixels -= 2; - } -} - -static void -unpackP2L(UINT8* out, const UINT8* in, int pixels) -{ - int i, j, m, s; - /* bit layers */ - m = 128; - s = (pixels+7)/8; - for (i = j = 0; i < pixels; i++) { - out[i] = ((in[j] & m) ? 1 : 0) + ((in[j + s] & m) ? 2 : 0); - if ((m >>= 1) == 0) { - m = 128; - j++; - } - } -} - -static void -unpackP4L(UINT8* out, const UINT8* in, int pixels) -{ - int i, j, m, s; - /* bit layers (trust the optimizer ;-) */ - m = 128; - s = (pixels+7)/8; - for (i = j = 0; i < pixels; i++) { - out[i] = ((in[j] & m) ? 1 : 0) + ((in[j + s] & m) ? 2 : 0) + - ((in[j + 2*s] & m) ? 4 : 0) + ((in[j + 3*s] & m) ? 8 : 0); - if ((m >>= 1) == 0) { - m = 128; - j++; - } - } -} - -/* Unpack to "RGB" image */ - -void -ImagingUnpackRGB(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB triplets */ - for (i = 0; i < pixels; i++) { - out[R] = in[0]; - out[G] = in[1]; - out[B] = in[2]; - out[A] = 255; - out += 4; in += 3; - } -} - -void -unpackRGB16B(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* 16-bit RGB triplets, big-endian order */ - for (i = 0; i < pixels; i++) { - out[R] = in[0]; - out[G] = in[2]; - out[B] = in[4]; - out[A] = 255; - out += 4; in += 6; - } -} - -static void -unpackRGBL(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, line interleaved */ - for (i = 0; i < pixels; i++) { - out[R] = in[i]; - out[G] = in[i+pixels]; - out[B] = in[i+pixels+pixels]; - out[A] = 255; - out += 4; - } -} - -static void -unpackRGBR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, bit reversed */ - for (i = 0; i < pixels; i++) { - out[R] = BITFLIP[in[0]]; - out[G] = BITFLIP[in[1]]; - out[B] = BITFLIP[in[2]]; - out[A] = 255; - out += 4; in += 3; - } -} - -void -ImagingUnpackBGR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, reversed bytes */ - for (i = 0; i < pixels; i++) { - out[R] = in[2]; - out[G] = in[1]; - out[B] = in[0]; - out[A] = 255; - out += 4; in += 3; - } -} - -void -ImagingUnpackBGR15(UINT8* out, const UINT8* in, int pixels) -{ - int i, pixel; - /* RGB, reversed bytes, 5 bits per pixel */ - for (i = 0; i < pixels; i++) { - pixel = in[0] + (in[1] << 8); - out[B] = (pixel & 31) * 255 / 31; - out[G] = ((pixel>>5) & 31) * 255 / 31; - out[R] = ((pixel>>10) & 31) * 255 / 31; - out[A] = 255; - out += 4; in += 2; - } -} - -void -ImagingUnpackBGR16(UINT8* out, const UINT8* in, int pixels) -{ - int i, pixel; - /* RGB, reversed bytes, 5/6/5 bits per pixel */ - for (i = 0; i < pixels; i++) { - pixel = in[0] + (in[1] << 8); - out[B] = (pixel & 31) * 255 / 31; - out[G] = ((pixel>>5) & 63) * 255 / 63; - out[R] = ((pixel>>11) & 31) * 255 / 31; - out[A] = 255; - out += 4; in += 2; - } -} - -static void -ImagingUnpackBGRX(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, reversed bytes with padding */ - for (i = 0; i < pixels; i++) { - out[R] = in[2]; - out[G] = in[1]; - out[B] = in[0]; - out[A] = 255; - out += 4; in += 4; - } -} - -static void -ImagingUnpackXRGB(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, leading pad */ - for (i = 0; i < pixels; i++) { - out[R] = in[1]; - out[G] = in[2]; - out[B] = in[3]; - out[A] = 255; - out += 4; in += 4; - } -} - -static void -ImagingUnpackXBGR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGB, reversed bytes, leading pad */ - for (i = 0; i < pixels; i++) { - out[R] = in[3]; - out[G] = in[2]; - out[B] = in[1]; - out[A] = 255; - out += 4; in += 4; - } -} - -/* Unpack to "RGBA" image */ - -static void -unpackRGBALA(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* greyscale with alpha */ - for (i = 0; i < pixels; i++) { - out[R] = out[G] = out[B] = in[0]; - out[A] = in[1]; - out += 4; in += 2; - } -} - -static void -unpackRGBALA16B(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* 16-bit greyscale with alpha, big-endian */ - for (i = 0; i < pixels; i++) { - out[R] = out[G] = out[B] = in[0]; - out[A] = in[2]; - out += 4; in += 4; - } -} - -static void -unpackRGBa(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* premultiplied RGBA */ - for (i = 0; i < pixels; i++) { - int a = in[3]; - if (!a) - out[R] = out[G] = out[B] = out[A] = 0; - else { - out[R] = CLIP(in[0] * 255 / a); - out[G] = CLIP(in[1] * 255 / a); - out[B] = CLIP(in[2] * 255 / a); - out[A] = a; - } - out += 4; in += 4; - } -} - -static void -unpackRGBAI(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGBA, inverted RGB bytes (FlashPix) */ - for (i = 0; i < pixels; i++) { - out[R] = ~in[0]; - out[G] = ~in[1]; - out[B] = ~in[2]; - out[A] = in[3]; - out += 4; in += 4; - } -} - -static void -unpackRGBAL(UINT8* out, const UINT8* in, int pixels) -{ - int i; - - /* RGBA, line interleaved */ - for (i = 0; i < pixels; i++) { - out[R] = in[i]; - out[G] = in[i+pixels]; - out[B] = in[i+pixels+pixels]; - out[A] = in[i+pixels+pixels+pixels]; - out += 4; - } -} - -void -unpackRGBA16B(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* 16-bit RGBA, big-endian order */ - for (i = 0; i < pixels; i++) { - out[R] = in[0]; - out[G] = in[2]; - out[B] = in[4]; - out[A] = in[6]; - out += 4; in += 8; - } -} - -static void -unpackARGB(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGBA, leading pad */ - for (i = 0; i < pixels; i++) { - out[R] = in[1]; - out[G] = in[2]; - out[B] = in[3]; - out[A] = in[0]; - out += 4; in += 4; - } -} - -static void -unpackABGR(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGBA, reversed bytes */ - for (i = 0; i < pixels; i++) { - out[R] = in[3]; - out[G] = in[2]; - out[B] = in[1]; - out[A] = in[0]; - out += 4; in += 4; - } -} - -static void -unpackBGRA(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* RGBA, reversed bytes */ - for (i = 0; i < pixels; i++) { - out[R] = in[2]; - out[G] = in[1]; - out[B] = in[0]; - out[A] = in[3]; - out += 4; in += 4; - } -} - - -/* Unpack to "CMYK" image */ - -static void -unpackCMYKI(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* CMYK, inverted bytes (Photoshop 2.5) */ - for (i = 0; i < pixels; i++) { - out[C] = ~in[0]; - out[M] = ~in[1]; - out[Y] = ~in[2]; - out[K] = ~in[3]; - out += 4; in += 4; - } -} - -static void -copy1(UINT8* out, const UINT8* in, int pixels) -{ - /* L, P */ - memcpy(out, in, pixels); -} - -static void -copy2(UINT8* out, const UINT8* in, int pixels) -{ - /* I;16 */ - memcpy(out, in, pixels*2); -} - -static void -copy4(UINT8* out, const UINT8* in, int pixels) -{ - /* RGBA, CMYK quadruples */ - memcpy(out, in, 4 * pixels); -} - - -/* Unpack to "I" and "F" images */ - -#define UNPACK_RAW(NAME, GET, INTYPE, OUTTYPE)\ -static void NAME(UINT8* out_, const UINT8* in, int pixels)\ -{\ - int i;\ - OUTTYPE* out = (OUTTYPE*) out_;\ - for (i = 0; i < pixels; i++, in += sizeof(INTYPE))\ - out[i] = (OUTTYPE) ((INTYPE) GET);\ -} - -#define UNPACK(NAME, COPY, INTYPE, OUTTYPE)\ -static void NAME(UINT8* out_, const UINT8* in, int pixels)\ -{\ - int i;\ - OUTTYPE* out = (OUTTYPE*) out_;\ - INTYPE tmp_;\ - UINT8* tmp = (UINT8*) &tmp_;\ - for (i = 0; i < pixels; i++, in += sizeof(INTYPE)) {\ - COPY;\ - out[i] = (OUTTYPE) tmp_;\ - }\ -} - -UNPACK_RAW(unpackI8, in[0], UINT8, INT32) -UNPACK_RAW(unpackI8S, in[0], INT8, INT32) -UNPACK(unpackI16, C16L, UINT16, INT32) -UNPACK(unpackI16S, C16L, INT16, INT32) -UNPACK(unpackI16B, C16B, UINT16, INT32) -UNPACK(unpackI16BS, C16B, INT16, INT32) -UNPACK(unpackI16N, C16N, UINT16, INT32) -UNPACK(unpackI16NS, C16N, INT16, INT32) -UNPACK(unpackI32, C32L, UINT32, INT32) -UNPACK(unpackI32S, C32L, INT32, INT32) -UNPACK(unpackI32B, C32B, UINT32, INT32) -UNPACK(unpackI32BS, C32B, INT32, INT32) -UNPACK(unpackI32N, C32N, UINT32, INT32) -UNPACK(unpackI32NS, C32N, INT32, INT32) - -UNPACK_RAW(unpackF8, in[0], UINT8, FLOAT32) -UNPACK_RAW(unpackF8S, in[0], INT8, FLOAT32) -UNPACK(unpackF16, C16L, UINT16, FLOAT32) -UNPACK(unpackF16S, C16L, INT16, FLOAT32) -UNPACK(unpackF16B, C16B, UINT16, FLOAT32) -UNPACK(unpackF16BS, C16B, INT16, FLOAT32) -UNPACK(unpackF16N, C16N, UINT16, FLOAT32) -UNPACK(unpackF16NS, C16N, INT16, FLOAT32) -UNPACK(unpackF32, C32L, UINT32, FLOAT32) -UNPACK(unpackF32S, C32L, INT32, FLOAT32) -UNPACK(unpackF32B, C32B, UINT32, FLOAT32) -UNPACK(unpackF32BS, C32B, INT32, FLOAT32) -UNPACK(unpackF32N, C32N, UINT32, FLOAT32) -UNPACK(unpackF32NS, C32N, INT32, FLOAT32) -UNPACK(unpackF32F, C32L, FLOAT32, FLOAT32) -UNPACK(unpackF32BF, C32B, FLOAT32, FLOAT32) -UNPACK(unpackF32NF, C32N, FLOAT32, FLOAT32) -#ifdef FLOAT64 -UNPACK(unpackF64F, C64L, FLOAT64, FLOAT32) -UNPACK(unpackF64BF, C64B, FLOAT64, FLOAT32) -UNPACK(unpackF64NF, C64N, FLOAT64, FLOAT32) -#endif - - -/* Misc. unpackers */ - -static void -band0(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* band 0 only */ - for (i = 0; i < pixels; i++) { - out[0] = in[i]; - out += 4; - } -} - -static void -band1(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* band 1 only */ - for (i = 0; i < pixels; i++) { - out[1] = in[i]; - out += 4; - } -} - -static void -band2(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* band 2 only */ - for (i = 0; i < pixels; i++) { - out[2] = in[i]; - out += 4; - } -} - -static void -band3(UINT8* out, const UINT8* in, int pixels) -{ - /* band 3 only */ - int i; - for (i = 0; i < pixels; i++) { - out[3] = in[i]; - out += 4; - } -} - -static void -band0I(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* band 0 only */ - for (i = 0; i < pixels; i++) { - out[0] = ~in[i]; - out += 4; - } -} - -static void -band1I(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* band 1 only */ - for (i = 0; i < pixels; i++) { - out[1] = ~in[i]; - out += 4; - } -} - -static void -band2I(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* band 2 only */ - for (i = 0; i < pixels; i++) { - out[2] = ~in[i]; - out += 4; - } -} - -static void -band3I(UINT8* out, const UINT8* in, int pixels) -{ - /* band 3 only */ - int i; - for (i = 0; i < pixels; i++) { - out[3] = ~in[i]; - out += 4; - } -} - -static struct { - const char* mode; - const char* rawmode; - int bits; - ImagingShuffler unpack; -} unpackers[] = { - - /* raw mode syntax is ";" where "bits" defaults - depending on mode (1 for "1", 8 for "P" and "L", etc), and - "flags" should be given in alphabetical order. if both bits - and flags have their default values, the ; should be left out */ - - /* flags: "I" inverted data; "R" reversed bit order; "B" big - endian byte order (default is little endian); "L" line - interleave, "S" signed, "F" floating point */ - - /* bilevel */ - {"1", "1", 1, unpack1}, - {"1", "1;I", 1, unpack1I}, - {"1", "1;R", 1, unpack1R}, - {"1", "1;IR", 1, unpack1IR}, - - /* greyscale */ - {"L", "L;2", 2, unpackL2}, - {"L", "L;4", 4, unpackL4}, - {"L", "L", 8, copy1}, - {"L", "L;I", 8, unpackLI}, - {"L", "L;R", 8, unpackLR}, - {"L", "L;16", 16, unpackL16}, - {"L", "L;16B", 16, unpackL16B}, - - /* greyscale w. alpha */ - {"LA", "LA", 16, unpackLA}, - {"LA", "LA;L", 16, unpackLAL}, - - /* palette */ - {"P", "P;1", 1, unpackP1}, - {"P", "P;2", 2, unpackP2}, - {"P", "P;2L", 2, unpackP2L}, - {"P", "P;4", 4, unpackP4}, - {"P", "P;4L", 4, unpackP4L}, - {"P", "P", 8, copy1}, - {"P", "P;R", 8, unpackLR}, - - /* palette w. alpha */ - {"PA", "PA", 16, unpackLA}, - {"PA", "PA;L", 16, unpackLAL}, - - /* true colour */ - {"RGB", "RGB", 24, ImagingUnpackRGB}, - {"RGB", "RGB;L", 24, unpackRGBL}, - {"RGB", "RGB;R", 24, unpackRGBR}, - {"RGB", "RGB;16B", 48, unpackRGB16B}, - {"RGB", "BGR", 24, ImagingUnpackBGR}, - {"RGB", "BGR;15", 16, ImagingUnpackBGR15}, - {"RGB", "BGR;16", 16, ImagingUnpackBGR16}, - {"RGB", "BGR;5", 16, ImagingUnpackBGR15}, /* compat */ - {"RGB", "RGBX", 32, copy4}, - {"RGB", "RGBX;L", 32, unpackRGBAL}, - {"RGB", "BGRX", 32, ImagingUnpackBGRX}, - {"RGB", "XRGB", 24, ImagingUnpackXRGB}, - {"RGB", "XBGR", 32, ImagingUnpackXBGR}, - {"RGB", "YCC;P", 24, ImagingUnpackYCC}, - {"RGB", "R", 8, band0}, - {"RGB", "G", 8, band1}, - {"RGB", "B", 8, band2}, - - /* true colour w. alpha */ - {"RGBA", "LA", 16, unpackRGBALA}, - {"RGBA", "LA;16B", 32, unpackRGBALA16B}, - {"RGBA", "RGBA", 32, copy4}, - {"RGBA", "RGBa", 32, unpackRGBa}, - {"RGBA", "RGBA;I", 32, unpackRGBAI}, - {"RGBA", "RGBA;L", 32, unpackRGBAL}, - {"RGBA", "RGBA;16B", 64, unpackRGBA16B}, - {"RGBA", "BGRA", 32, unpackBGRA}, - {"RGBA", "ARGB", 32, unpackARGB}, - {"RGBA", "ABGR", 32, unpackABGR}, - {"RGBA", "YCCA;P", 32, ImagingUnpackYCCA}, - {"RGBA", "R", 8, band0}, - {"RGBA", "G", 8, band1}, - {"RGBA", "B", 8, band2}, - {"RGBA", "A", 8, band3}, - - /* true colour w. padding */ - {"RGBX", "RGB", 24, ImagingUnpackRGB}, - {"RGBX", "RGB;L", 24, unpackRGBL}, - {"RGBX", "RGB;16B", 48, unpackRGB16B}, - {"RGBX", "BGR", 24, ImagingUnpackBGR}, - {"RGBX", "BGR;15", 16, ImagingUnpackBGR15}, - {"RGB", "BGR;16", 16, ImagingUnpackBGR16}, - {"RGBX", "BGR;5", 16, ImagingUnpackBGR15}, /* compat */ - {"RGBX", "RGBX", 32, copy4}, - {"RGBX", "RGBX;L", 32, unpackRGBAL}, - {"RGBX", "BGRX", 32, ImagingUnpackBGRX}, - {"RGBX", "XRGB", 24, ImagingUnpackXRGB}, - {"RGBX", "XBGR", 32, ImagingUnpackXBGR}, - {"RGBX", "YCC;P", 24, ImagingUnpackYCC}, - {"RGBX", "R", 8, band0}, - {"RGBX", "G", 8, band1}, - {"RGBX", "B", 8, band2}, - {"RGBX", "X", 8, band3}, - - /* colour separation */ - {"CMYK", "CMYK", 32, copy4}, - {"CMYK", "CMYK;I", 32, unpackCMYKI}, - {"CMYK", "CMYK;L", 32, unpackRGBAL}, - {"CMYK", "C", 8, band0}, - {"CMYK", "M", 8, band1}, - {"CMYK", "Y", 8, band2}, - {"CMYK", "K", 8, band3}, - {"CMYK", "C;I", 8, band0I}, - {"CMYK", "M;I", 8, band1I}, - {"CMYK", "Y;I", 8, band2I}, - {"CMYK", "K;I", 8, band3I}, - - /* video (YCbCr) */ - {"YCbCr", "YCbCr", 24, ImagingUnpackRGB}, - {"YCbCr", "YCbCr;L", 24, unpackRGBL}, - {"YCbCr", "YCbCrX", 32, copy4}, - {"YCbCr", "YCbCrK", 32, copy4}, - - /* integer variations */ - {"I", "I", 32, copy4}, - {"I", "I;8", 8, unpackI8}, - {"I", "I;8S", 8, unpackI8S}, - {"I", "I;16", 16, unpackI16}, - {"I", "I;16S", 16, unpackI16S}, - {"I", "I;16B", 16, unpackI16B}, - {"I", "I;16BS", 16, unpackI16BS}, - {"I", "I;16N", 16, unpackI16N}, - {"I", "I;16NS", 16, unpackI16NS}, - {"I", "I;32", 32, unpackI32}, - {"I", "I;32S", 32, unpackI32S}, - {"I", "I;32B", 32, unpackI32B}, - {"I", "I;32BS", 32, unpackI32BS}, - {"I", "I;32N", 32, unpackI32N}, - {"I", "I;32NS", 32, unpackI32NS}, - - /* floating point variations */ - {"F", "F", 32, copy4}, - {"F", "F;8", 8, unpackF8}, - {"F", "F;8S", 8, unpackF8S}, - {"F", "F;16", 16, unpackF16}, - {"F", "F;16S", 16, unpackF16S}, - {"F", "F;16B", 16, unpackF16B}, - {"F", "F;16BS", 16, unpackF16BS}, - {"F", "F;16N", 16, unpackF16N}, - {"F", "F;16NS", 16, unpackF16NS}, - {"F", "F;32", 32, unpackF32}, - {"F", "F;32S", 32, unpackF32S}, - {"F", "F;32B", 32, unpackF32B}, - {"F", "F;32BS", 32, unpackF32BS}, - {"F", "F;32N", 32, unpackF32N}, - {"F", "F;32NS", 32, unpackF32NS}, - {"F", "F;32F", 32, unpackF32F}, - {"F", "F;32BF", 32, unpackF32BF}, - {"F", "F;32NF", 32, unpackF32NF}, -#ifdef FLOAT64 - {"F", "F;64F", 64, unpackF64F}, - {"F", "F;64BF", 64, unpackF64BF}, - {"F", "F;64NF", 64, unpackF64NF}, -#endif - - /* storage modes */ - {"I;16", "I;16", 16, copy2}, - {"I;16B", "I;16B", 16, copy2}, - {"I;16L", "I;16L", 16, copy2}, - - {NULL} /* sentinel */ -}; - - -ImagingShuffler -ImagingFindUnpacker(const char* mode, const char* rawmode, int* bits_out) -{ - int i; - - /* find a suitable pixel unpacker */ - for (i = 0; unpackers[i].rawmode; i++) - if (strcmp(unpackers[i].mode, mode) == 0 && - strcmp(unpackers[i].rawmode, rawmode) == 0) { - if (bits_out) - *bits_out = unpackers[i].bits; - return unpackers[i].unpack; - } - - /* FIXME: configure a general unpacker based on the type codes... */ - - return NULL; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c deleted file mode 100755 index 19da1f65443..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnpackYCC.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * code to convert and unpack PhotoYCC data - * - * history: - * 97-01-25 fl Moved from PcdDecode.c - * - * Copyright (c) Fredrik Lundh 1996-97. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -/* Tables generated by pcdtables.py, based on transforms taken from - the "Colour Space Conversions FAQ" by Roberts/Ford. */ - -static INT16 L[] = { 0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16, 18, -19, 20, 22, 23, 24, 26, 27, 29, 30, 31, 33, 34, 35, 37, 38, 39, 41, -42, 43, 45, 46, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 62, 64, -65, 67, 68, 69, 71, 72, 73, 75, 76, 77, 79, 80, 82, 83, 84, 86, 87, -88, 90, 91, 92, 94, 95, 96, 98, 99, 101, 102, 103, 105, 106, 107, 109, -110, 111, 113, 114, 115, 117, 118, 120, 121, 122, 124, 125, 126, 128, -129, 130, 132, 133, 134, 136, 137, 139, 140, 141, 143, 144, 145, 147, -148, 149, 151, 152, 153, 155, 156, 158, 159, 160, 162, 163, 164, 166, -167, 168, 170, 171, 173, 174, 175, 177, 178, 179, 181, 182, 183, 185, -186, 187, 189, 190, 192, 193, 194, 196, 197, 198, 200, 201, 202, 204, -205, 206, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 223, -224, 225, 227, 228, 230, 231, 232, 234, 235, 236, 238, 239, 240, 242, -243, 245, 246, 247, 249, 250, 251, 253, 254, 255, 257, 258, 259, 261, -262, 264, 265, 266, 268, 269, 270, 272, 273, 274, 276, 277, 278, 280, -281, 283, 284, 285, 287, 288, 289, 291, 292, 293, 295, 296, 297, 299, -300, 302, 303, 304, 306, 307, 308, 310, 311, 312, 314, 315, 317, 318, -319, 321, 322, 323, 325, 326, 327, 329, 330, 331, 333, 334, 336, 337, -338, 340, 341, 342, 344, 345, 346 }; - -static INT16 CB[] = { -345, -343, -341, -338, -336, -334, -332, -329, --327, -325, -323, -321, -318, -316, -314, -312, -310, -307, -305, --303, -301, -298, -296, -294, -292, -290, -287, -285, -283, -281, --278, -276, -274, -272, -270, -267, -265, -263, -261, -258, -256, --254, -252, -250, -247, -245, -243, -241, -239, -236, -234, -232, --230, -227, -225, -223, -221, -219, -216, -214, -212, -210, -207, --205, -203, -201, -199, -196, -194, -192, -190, -188, -185, -183, --181, -179, -176, -174, -172, -170, -168, -165, -163, -161, -159, --156, -154, -152, -150, -148, -145, -143, -141, -139, -137, -134, --132, -130, -128, -125, -123, -121, -119, -117, -114, -112, -110, --108, -105, -103, -101, -99, -97, -94, -92, -90, -88, -85, -83, -81, --79, -77, -74, -72, -70, -68, -66, -63, -61, -59, -57, -54, -52, -50, --48, -46, -43, -41, -39, -37, -34, -32, -30, -28, -26, -23, -21, -19, --17, -15, -12, -10, -8, -6, -3, -1, 0, 2, 4, 7, 9, 11, 13, 16, 18, 20, -22, 24, 27, 29, 31, 33, 35, 38, 40, 42, 44, 47, 49, 51, 53, 55, 58, -60, 62, 64, 67, 69, 71, 73, 75, 78, 80, 82, 84, 86, 89, 91, 93, 95, -98, 100, 102, 104, 106, 109, 111, 113, 115, 118, 120, 122, 124, 126, -129, 131, 133, 135, 138, 140, 142, 144, 146, 149, 151, 153, 155, 157, -160, 162, 164, 166, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, -191, 193, 195, 197, 200, 202, 204, 206, 208, 211, 213, 215, 217, 220 }; - -static INT16 GB[] = { 67, 67, 66, 66, 65, 65, 65, 64, 64, 63, 63, 62, -62, 62, 61, 61, 60, 60, 59, 59, 59, 58, 58, 57, 57, 56, 56, 56, 55, -55, 54, 54, 53, 53, 52, 52, 52, 51, 51, 50, 50, 49, 49, 49, 48, 48, -47, 47, 46, 46, 46, 45, 45, 44, 44, 43, 43, 43, 42, 42, 41, 41, 40, -40, 40, 39, 39, 38, 38, 37, 37, 37, 36, 36, 35, 35, 34, 34, 34, 33, -33, 32, 32, 31, 31, 31, 30, 30, 29, 29, 28, 28, 28, 27, 27, 26, 26, -25, 25, 25, 24, 24, 23, 23, 22, 22, 22, 21, 21, 20, 20, 19, 19, 19, -18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, -11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, -1, 1, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -3, -3, -4, -4, -5, -5, -5, --6, -6, -7, -7, -8, -8, -8, -9, -9, -10, -10, -11, -11, -11, -12, -12, --13, -13, -14, -14, -14, -15, -15, -16, -16, -17, -17, -18, -18, -18, --19, -19, -20, -20, -21, -21, -21, -22, -22, -23, -23, -24, -24, -24, --25, -25, -26, -26, -27, -27, -27, -28, -28, -29, -29, -30, -30, -30, --31, -31, -32, -32, -33, -33, -33, -34, -34, -35, -35, -36, -36, -36, --37, -37, -38, -38, -39, -39, -39, -40, -40, -41, -41, -42 }; - -static INT16 CR[] = { -249, -247, -245, -243, -241, -239, -238, -236, --234, -232, -230, -229, -227, -225, -223, -221, -219, -218, -216, --214, -212, -210, -208, -207, -205, -203, -201, -199, -198, -196, --194, -192, -190, -188, -187, -185, -183, -181, -179, -178, -176, --174, -172, -170, -168, -167, -165, -163, -161, -159, -157, -156, --154, -152, -150, -148, -147, -145, -143, -141, -139, -137, -136, --134, -132, -130, -128, -127, -125, -123, -121, -119, -117, -116, --114, -112, -110, -108, -106, -105, -103, -101, -99, -97, -96, -94, --92, -90, -88, -86, -85, -83, -81, -79, -77, -76, -74, -72, -70, -68, --66, -65, -63, -61, -59, -57, -55, -54, -52, -50, -48, -46, -45, -43, --41, -39, -37, -35, -34, -32, -30, -28, -26, -25, -23, -21, -19, -17, --15, -14, -12, -10, -8, -6, -4, -3, -1, 0, 2, 4, 5, 7, 9, 11, 13, 15, -16, 18, 20, 22, 24, 26, 27, 29, 31, 33, 35, 36, 38, 40, 42, 44, 46, -47, 49, 51, 53, 55, 56, 58, 60, 62, 64, 66, 67, 69, 71, 73, 75, 77, -78, 80, 82, 84, 86, 87, 89, 91, 93, 95, 97, 98, 100, 102, 104, 106, -107, 109, 111, 113, 115, 117, 118, 120, 122, 124, 126, 128, 129, 131, -133, 135, 137, 138, 140, 142, 144, 146, 148, 149, 151, 153, 155, 157, -158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 179, 180, 182, -184, 186, 188, 189, 191, 193, 195, 197, 199, 200, 202, 204, 206, 208, -209, 211, 213, 215 }; - -static INT16 GR[] = { 127, 126, 125, 124, 123, 122, 121, 121, 120, 119, -118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 108, 107, 106, -105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 95, 94, 93, 92, 91, -90, 89, 88, 87, 86, 85, 84, 83, 83, 82, 81, 80, 79, 78, 77, 76, 75, -74, 73, 72, 71, 70, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, -58, 57, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 45, 44, -43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 28, -27, 26, 25, 24, 23, 22, 21, 20, 19, 19, 18, 17, 16, 15, 14, 13, 12, -11, 10, 9, 8, 7, 6, 6, 5, 4, 3, 2, 1, 0, 0, -1, -2, -3, -4, -5, -5, --6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -18, -19, --20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -31, -32, --33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -44, -45, --46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -56, -57, -58, --59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -69, -70, -71, --72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -82, -83, -84, --85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -94, -95, -96, -97, --98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -107, -108 }; - -#define R 0 -#define G 1 -#define B 2 -#define A 3 - -#define YCC2RGB(rgb, y, cb, cr) {\ - int l = L[y];\ - int r = l + CR[cr];\ - int g = l + GR[cr] + GB[cb];\ - int b = l + CB[cb];\ - rgb[0] = (r <= 0) ? 0 : (r >= 255) ? 255 : r;\ - rgb[1] = (g <= 0) ? 0 : (g >= 255) ? 255 : g;\ - rgb[2] = (b <= 0) ? 0 : (b >= 255) ? 255 : b;\ -} - -void -ImagingUnpackYCC(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* PhotoYCC triplets */ - for (i = 0; i < pixels; i++) { - YCC2RGB(out, in[0], in[1], in[2]); - out[A] = 255; - out += 4; in += 3; - } -} - -void -ImagingUnpackYCCA(UINT8* out, const UINT8* in, int pixels) -{ - int i; - /* PhotoYCC triplets plus premultiplied alpha */ - for (i = 0; i < pixels; i++) { - /* Divide by alpha */ - UINT8 rgb[3]; - rgb[0] = (in[3] == 0) ? 0 : (((int) in[0] * 255) / in[3]); - rgb[1] = (in[3] == 0) ? 0 : (((int) in[1] * 255) / in[3]); - rgb[2] = (in[3] == 0) ? 0 : (((int) in[2] * 255) / in[3]); - /* Convert non-multiplied data to RGB */ - YCC2RGB(out, rgb[0], rgb[1], rgb[2]); - out[A] = in[3]; - out += 4; in += 4; - } -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c deleted file mode 100755 index 2318262450e..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/UnsharpMask.c +++ /dev/null @@ -1,398 +0,0 @@ -/* PILusm, a gaussian blur and unsharp masking library for PIL - By Kevin Cazabon, copyright 2003 - kevin_cazabon@hotmail.com - kevin@cazabon.com */ - -/* Originally released under LGPL. Graciously donated to PIL - for distribution under the standard PIL license in 2009." */ - -#include "Python.h" -#include "Imaging.h" - -#define PILUSMVERSION "0.6.1" - -/* version history - -0.6.1 converted to C and added to PIL 1.1.7 - -0.6.0 fixed/improved float radius support (oops!) - now that radius can be a float (properly), changed radius value to - be an actual radius (instead of diameter). So, you should get - similar results from PIL_usm as from other paint programs when - using the SAME values (no doubling of radius required any more). - Be careful, this may "break" software if you had it set for 2x - or 5x the radius as was recommended with earlier versions. - made PILusm thread-friendly (release GIL before lengthly operations, - and re-acquire it before returning to Python). This makes a huge - difference with multi-threaded applications on dual-processor - or "Hyperthreading"-enabled systems (Pentium4, Xeon, etc.) - -0.5.0 added support for float radius values! - -0.4.0 tweaked gaussian curve calculation to be closer to consistent shape - across a wide range of radius values - -0.3.0 changed deviation calculation in gausian algorithm to be dynamic - _gblur now adds 1 to the user-supplied radius before using it so - that a value of "0" returns the original image instead of a - black one. - fixed handling of alpha channel in RGBX, RGBA images - improved speed of gblur by reducing unnecessary checks and assignments - -0.2.0 fixed L-mode image support - -0.1.0 initial release - -*/ - -static inline UINT8 clip(double in) -{ - if (in >= 255.0) - return (UINT8) 255; - if (in <= 0.0) - return (UINT8) 0; - return (UINT8) in; -} - -static Imaging -gblur(Imaging im, Imaging imOut, float floatRadius, int channels, int padding) -{ - ImagingSectionCookie cookie; - - float *maskData = NULL; - int y = 0; - int x = 0; - float z = 0; - float sum = 0.0; - float dev = 0.0; - - float *buffer = NULL; - - int *line = NULL; - UINT8 *line8 = NULL; - - int pix = 0; - float newPixel[4]; - int channel = 0; - int offset = 0; - INT32 newPixelFinals; - - int radius = 0; - float remainder = 0.0; - - int i; - - /* Do the gaussian blur */ - - /* For a symmetrical gaussian blur, instead of doing a radius*radius - matrix lookup, you get the EXACT same results by doing a radius*1 - transform, followed by a 1*radius transform. This reduces the - number of lookups exponentially (10 lookups per pixel for a - radius of 5 instead of 25 lookups). So, we blur the lines first, - then we blur the resulting columns. */ - - /* first, round radius off to the next higher integer and hold the - remainder this is used so we can support float radius values - properly. */ - - remainder = floatRadius - ((int) floatRadius); - floatRadius = ceil(floatRadius); - - /* Next, double the radius and offset by 2.0... that way "0" returns - the original image instead of a black one. We multiply it by 2.0 - so that it is a true "radius", not a diameter (the results match - other paint programs closer that way too). */ - radius = (int) ((floatRadius * 2.0) + 2.0); - - /* create the maskData for the gaussian curve */ - maskData = malloc(radius * sizeof(float)); - /* FIXME: error checking */ - for (x = 0; x < radius; x++) { - z = ((float) (x + 2) / ((float) radius)); - dev = 0.5 + (((float) (radius * radius)) * 0.001); - /* you can adjust this factor to change the shape/center-weighting - of the gaussian */ - maskData[x] = (float) pow((1.0 / sqrt(2.0 * 3.14159265359 * dev)), - ((-(z - 1.0) * -(x - 1.0)) / - (2.0 * dev))); - } - - /* if there's any remainder, multiply the first/last values in - MaskData it. this allows us to support float radius values. */ - if (remainder > 0.0) { - maskData[0] *= remainder; - maskData[radius - 1] *= remainder; - } - - for (x = 0; x < radius; x++) { - /* this is done separately now due to the correction for float - radius values above */ - sum += maskData[x]; - } - - for (i = 0; i < radius; i++) { - maskData[i] *= (1.0 / sum); - /* printf("%f\n", maskData[i]); */ - } - - /* create a temporary memory buffer for the data for the first pass - memset the buffer to 0 so we can use it directly with += */ - - /* don't bother about alpha/padding */ - buffer = calloc((size_t) (im->xsize * im->ysize * channels), - sizeof(float)); - if (buffer == NULL) - return ImagingError_MemoryError(); - - /* be nice to other threads while you go off to lala land */ - ImagingSectionEnter(&cookie); - - /* memset(buffer, 0, sizeof(buffer)); */ - - newPixel[0] = newPixel[1] = newPixel[2] = newPixel[3] = 0; - - /* perform a blur on each line, and place in the temporary storage buffer */ - for (y = 0; y < im->ysize; y++) { - if (channels == 1 && im->image8 != NULL) { - line8 = (UINT8 *) im->image8[y]; - } else { - line = im->image32[y]; - } - for (x = 0; x < im->xsize; x++) { - newPixel[0] = newPixel[1] = newPixel[2] = newPixel[3] = 0; - /* for each neighbor pixel, factor in its value/weighting to the - current pixel */ - for (pix = 0; pix < radius; pix++) { - /* figure the offset of this neighbor pixel */ - offset = - (int) ((-((float) radius / 2.0) + (float) pix) + 0.5); - if (x + offset < 0) - offset = -x; - else if (x + offset >= im->xsize) - offset = im->xsize - x - 1; - - /* add (neighbor pixel value * maskData[pix]) to the current - pixel value */ - if (channels == 1) { - buffer[(y * im->xsize) + x] += - ((float) ((UINT8 *) & line8[x + offset])[0]) * - (maskData[pix]); - } else { - for (channel = 0; channel < channels; channel++) { - buffer[(y * im->xsize * channels) + - (x * channels) + channel] += - ((float) ((UINT8 *) & line[x + offset]) - [channel]) * (maskData[pix]); - } - } - } - } - } - - /* perform a blur on each column in the buffer, and place in the - output image */ - for (x = 0; x < im->xsize; x++) { - for (y = 0; y < im->ysize; y++) { - newPixel[0] = newPixel[1] = newPixel[2] = newPixel[3] = 0; - /* for each neighbor pixel, factor in its value/weighting to the - current pixel */ - for (pix = 0; pix < radius; pix++) { - /* figure the offset of this neighbor pixel */ - offset = - (int) (-((float) radius / 2.0) + (float) pix + 0.5); - if (y + offset < 0) - offset = -y; - else if (y + offset >= im->ysize) - offset = im->ysize - y - 1; - /* add (neighbor pixel value * maskData[pix]) to the current - pixel value */ - for (channel = 0; channel < channels; channel++) { - newPixel[channel] += - (buffer - [((y + offset) * im->xsize * channels) + - (x * channels) + channel]) * (maskData[pix]); - } - } - /* if the image is RGBX or RGBA, copy the 4th channel data to - newPixel, so it gets put in imOut */ - if (strcmp(im->mode, "RGBX") == 0 - || strcmp(im->mode, "RGBA") == 0) { - newPixel[3] = (float) ((UINT8 *) & line[x + offset])[3]; - } - - /* pack the channels into an INT32 so we can put them back in - the PIL image */ - newPixelFinals = 0; - if (channels == 1) { - newPixelFinals = clip(newPixel[0]); - } else { - /* for RGB, the fourth channel isn't used anyways, so just - pack a 0 in there, this saves checking the mode for each - pixel. */ - /* this doesn't work on little-endian machines... fix it! */ - newPixelFinals = - clip(newPixel[0]) | clip(newPixel[1]) << 8 | - clip(newPixel[2]) << 16 | clip(newPixel[3]) << 24; - } - /* set the resulting pixel in imOut */ - if (channels == 1) { - imOut->image8[y][x] = (UINT8) newPixelFinals; - } else { - imOut->image32[y][x] = newPixelFinals; - } - } - } - - /* free the buffer */ - free(buffer); - - /* get the GIL back so Python knows who you are */ - ImagingSectionLeave(&cookie); - - return imOut; -} - -Imaging ImagingGaussianBlur(Imaging im, Imaging imOut, float radius) -{ - int channels = 0; - int padding = 0; - - if (strcmp(im->mode, "RGB") == 0) { - channels = 3; - padding = 1; - } else if (strcmp(im->mode, "RGBA") == 0) { - channels = 3; - padding = 1; - } else if (strcmp(im->mode, "RGBX") == 0) { - channels = 3; - padding = 1; - } else if (strcmp(im->mode, "CMYK") == 0) { - channels = 4; - padding = 0; - } else if (strcmp(im->mode, "L") == 0) { - channels = 1; - padding = 0; - } else - return ImagingError_ModeError(); - - return gblur(im, imOut, radius, channels, padding); -} - -Imaging -ImagingUnsharpMask(Imaging im, Imaging imOut, float radius, int percent, - int threshold) -{ - ImagingSectionCookie cookie; - - Imaging result; - int channel = 0; - int channels = 0; - int padding = 0; - - int x = 0; - int y = 0; - - int *lineIn = NULL; - int *lineOut = NULL; - UINT8 *lineIn8 = NULL; - UINT8 *lineOut8 = NULL; - - int diff = 0; - - INT32 newPixel = 0; - - if (strcmp(im->mode, "RGB") == 0) { - channels = 3; - padding = 1; - } else if (strcmp(im->mode, "RGBA") == 0) { - channels = 3; - padding = 1; - } else if (strcmp(im->mode, "RGBX") == 0) { - channels = 3; - padding = 1; - } else if (strcmp(im->mode, "CMYK") == 0) { - channels = 4; - padding = 0; - } else if (strcmp(im->mode, "L") == 0) { - channels = 1; - padding = 0; - } else - return ImagingError_ModeError(); - - /* first, do a gaussian blur on the image, putting results in imOut - temporarily */ - result = gblur(im, imOut, radius, channels, padding); - if (!result) - return NULL; - - /* now, go through each pixel, compare "normal" pixel to blurred - pixel. if the difference is more than threshold values, apply - the OPPOSITE correction to the amount of blur, multiplied by - percent. */ - - ImagingSectionEnter(&cookie); - - for (y = 0; y < im->ysize; y++) { - if (channels == 1) { - lineIn8 = im->image8[y]; - lineOut8 = imOut->image8[y]; - } else { - lineIn = im->image32[y]; - lineOut = imOut->image32[y]; - } - for (x = 0; x < im->xsize; x++) { - newPixel = 0; - /* compare in/out pixels, apply sharpening */ - if (channels == 1) { - diff = - ((UINT8 *) & lineIn8[x])[0] - - ((UINT8 *) & lineOut8[x])[0]; - if (abs(diff) > threshold) { - /* add the diff*percent to the original pixel */ - imOut->image8[y][x] = - clip((((UINT8 *) & lineIn8[x])[0]) + - (diff * ((float) percent) / 100.0)); - } else { - /* newPixel is the same as imIn */ - imOut->image8[y][x] = ((UINT8 *) & lineIn8[x])[0]; - } - } - - else { - for (channel = 0; channel < channels; channel++) { - diff = (int) ((((UINT8 *) & lineIn[x])[channel]) - - (((UINT8 *) & lineOut[x])[channel])); - if (abs(diff) > threshold) { - /* add the diff*percent to the original pixel - this may not work for little-endian systems, fix it! */ - newPixel = - newPixel | - clip((float) (((UINT8 *) & lineIn[x])[channel]) - + - (diff * - (((float) percent / - 100.0)))) << (channel * 8); - } else { - /* newPixel is the same as imIn - this may not work for little-endian systems, fix it! */ - newPixel = - newPixel | ((UINT8 *) & lineIn[x])[channel] << - (channel * 8); - } - } - if (strcmp(im->mode, "RGBX") == 0 - || strcmp(im->mode, "RGBA") == 0) { - /* preserve the alpha channel - this may not work for little-endian systems, fix it! */ - newPixel = - newPixel | ((UINT8 *) & lineIn[x])[channel] << 24; - } - imOut->image32[y][x] = newPixel; - } - } - } - - ImagingSectionLeave(&cookie); - - return imOut; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c deleted file mode 100755 index 8a203841bef..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmDecode.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for XBM hex image data - * - * history: - * 96-04-13 fl Created - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#define HEX(v) ((v >= '0' && v <= '9') ? v - '0' :\ - (v >= 'a' && v <= 'f') ? v - 'a' + 10 :\ - (v >= 'A' && v <= 'F') ? v - 'A' + 10 : 0) - -int -ImagingXbmDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - enum { BYTE = 1, SKIP }; - - UINT8* ptr; - - if (!state->state) - state->state = SKIP; - - ptr = buf; - - for (;;) { - - if (state->state == SKIP) { - - /* Skip forward until next 'x' */ - - while (bytes > 0) { - if (*ptr == 'x') - break; - ptr++; - bytes--; - } - - if (bytes == 0) - return ptr - buf; - - state->state = BYTE; - - } - - if (bytes < 3) - return ptr - buf; - - state->buffer[state->x] = (HEX(ptr[1])<<4) + HEX(ptr[2]); - - if (++state->x >= state->bytes) { - - /* Got a full line, unpack it */ - state->shuffle((UINT8*) im->image[state->y], state->buffer, - state->xsize); - - state->x = 0; - - if (++state->y >= state->ysize) { - /* End of file (errcode = 0) */ - return -1; - } - } - - ptr += 3; - bytes -= 3; - - state->state = SKIP; - - } - -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c deleted file mode 100755 index e066fd6b583..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/XbmEncode.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * encoder for Xbm data - * - * history: - * 96-11-01 fl created - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - - -int -ImagingXbmEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - const char *hex = "0123456789abcdef"; - - UINT8* ptr = buf; - int i, n; - - if (!state->state) { - - /* 8 pixels are stored in no more than 6 bytes */ - state->bytes = 6*(state->xsize+7)/8; - - state->state = 1; - - } - - if (bytes < state->bytes) { - state->errcode = IMAGING_CODEC_MEMORY; - return 0; - } - - ptr = buf; - - while (bytes >= state->bytes) { - - state->shuffle(state->buffer, - (UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, state->xsize); - - if (state->y < state->ysize-1) { - - /* any line but the last */ - for (n = 0; n < state->xsize; n += 8) { - - i = state->buffer[n/8]; - - *ptr++ = '0'; - *ptr++ = 'x'; - *ptr++ = hex[(i>>4)&15]; - *ptr++ = hex[i&15]; - *ptr++ = ','; - bytes -= 5; - - if (++state->count >= 79/5) { - *ptr++ = '\n'; - bytes--; - state->count = 0; - } - - } - - state->y++; - - } else { - - /* last line */ - for (n = 0; n < state->xsize; n += 8) { - - i = state->buffer[n/8]; - - *ptr++ = '0'; - *ptr++ = 'x'; - *ptr++ = hex[(i>>4)&15]; - *ptr++ = hex[i&15]; - - if (n < state->xsize-8) { - *ptr++ = ','; - if (++state->count >= 79/5) { - *ptr++ = '\n'; - bytes--; - state->count = 0; - } - } else - *ptr++ = '\n'; - - bytes -= 5; - - } - - state->errcode = IMAGING_CODEC_END; - break; - } - } - - return ptr - buf; -} diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h deleted file mode 100755 index d961407e31b..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/Zip.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * declarations for the ZIP codecs - * - * Copyright (c) Fredrik Lundh 1996. - */ - - -#include "zlib.h" - - -/* modes */ -#define ZIP_PNG 0 /* continuous, filtered image data */ -#define ZIP_PNG_PALETTE 1 /* non-continuous data, disable filtering */ -#define ZIP_TIFF_PREDICTOR 2 /* TIFF, with predictor */ -#define ZIP_TIFF 3 /* TIFF, without predictor */ - - -typedef struct { - - /* CONFIGURATION */ - - /* Codec mode */ - int mode; - - /* Optimize (max compression) SLOW!!! */ - int optimize; - - /* Predefined dictionary (experimental) */ - char* dictionary; - int dictionary_size; - - /* PRIVATE CONTEXT (set by decoder/encoder) */ - - z_stream z_stream; /* (de)compression stream */ - - UINT8* previous; /* previous line (allocated) */ - - int last_output; /* # bytes last output by inflate */ - - /* Compressor specific stuff */ - UINT8* prior; /* filter storage (allocated) */ - UINT8* up; - UINT8* average; - UINT8* paeth; - - UINT8* output; /* output data */ - - int prefix; /* size of filter prefix (0 for TIFF data) */ - - int interlaced; /* is the image interlaced? (PNG) */ - - int pass; /* current pass of the interlaced image (PNG) */ - -} ZIPSTATE; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c deleted file mode 100755 index 08cdc718964..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipDecode.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * decoder for ZIP (deflated) image data. - * - * history: - * 1996-12-14 fl Created (for PNG) - * 1997-01-15 fl Prepared to read TIFF/ZIP - * 2001-11-19 fl PNG incomplete read patch (from Bernhard Herzog) - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997-2001. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#ifdef HAVE_LIBZ - -#include "Zip.h" - -static const int OFFSET[] = { 7, 3, 3, 1, 1, 0, 0 }; -static const int STARTING_COL[] = { 0, 4, 0, 2, 0, 1, 0 }; -static const int STARTING_ROW[] = { 0, 0, 4, 0, 2, 0, 1 }; -static const int COL_INCREMENT[] = { 8, 8, 4, 4, 2, 2, 1 }; -static const int ROW_INCREMENT[] = { 8, 8, 8, 4, 4, 2, 2 }; - -/* Get the length in bytes of a scanline in the pass specified, - * for interlaced images */ -static int get_row_len(ImagingCodecState state, int pass) -{ - int row_len = (state->xsize + OFFSET[pass]) / COL_INCREMENT[pass]; - return ((row_len * state->bits) + 7) / 8; -} - -/* -------------------------------------------------------------------- */ -/* Decoder */ -/* -------------------------------------------------------------------- */ - -int -ImagingZipDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - ZIPSTATE* context = (ZIPSTATE*) state->context; - int err; - int n; - UINT8* ptr; - int i, bpp; - int row_len; - - if (!state->state) { - - /* Initialization */ - if (context->mode == ZIP_PNG || context->mode == ZIP_PNG_PALETTE) - context->prefix = 1; /* PNG */ - - /* Expand standard buffer to make room for the (optional) filter - prefix, and allocate a buffer to hold the previous line */ - free(state->buffer); - state->buffer = (UINT8*) malloc(state->bytes+1); - context->previous = (UINT8*) malloc(state->bytes+1); - if (!state->buffer || !context->previous) { - state->errcode = IMAGING_CODEC_MEMORY; - return -1; - } - - context->last_output = 0; - - /* Initialize to black */ - memset(context->previous, 0, state->bytes+1); - - /* Setup decompression context */ - context->z_stream.zalloc = (alloc_func) NULL; - context->z_stream.zfree = (free_func) NULL; - context->z_stream.opaque = (voidpf) NULL; - - err = inflateInit(&context->z_stream); - if (err < 0) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - - if (context->interlaced) { - context->pass = 0; - state->y = STARTING_ROW[context->pass]; - } - - /* Ready to decode */ - state->state = 1; - - } - - if (context->interlaced) { - row_len = get_row_len(state, context->pass); - } else { - row_len = state->bytes; - } - - /* Setup the source buffer */ - context->z_stream.next_in = buf; - context->z_stream.avail_in = bytes; - - /* Decompress what we've got this far */ - while (context->z_stream.avail_in > 0) { - - context->z_stream.next_out = state->buffer + context->last_output; - context->z_stream.avail_out = - row_len + context->prefix - context->last_output; - - err = inflate(&context->z_stream, Z_NO_FLUSH); - - if (err < 0) { - /* Something went wrong inside the compression library */ - if (err == Z_DATA_ERROR) - state->errcode = IMAGING_CODEC_BROKEN; - else if (err == Z_MEM_ERROR) - state->errcode = IMAGING_CODEC_MEMORY; - else - state->errcode = IMAGING_CODEC_CONFIG; - free(context->previous); - inflateEnd(&context->z_stream); - return -1; - } - - n = row_len + context->prefix - context->z_stream.avail_out; - - if (n < row_len + context->prefix) { - context->last_output = n; - break; /* need more input data */ - } - - /* Apply predictor */ - switch (context->mode) { - case ZIP_PNG: - switch (state->buffer[0]) { - case 0: - break; - case 1: - /* prior */ - bpp = (state->bits + 7) / 8; - for (i = bpp+1; i <= row_len; i++) - state->buffer[i] += state->buffer[i-bpp]; - break; - case 2: - /* up */ - for (i = 1; i <= row_len; i++) - state->buffer[i] += context->previous[i]; - break; - case 3: - /* average */ - bpp = (state->bits + 7) / 8; - for (i = 1; i <= bpp; i++) - state->buffer[i] += context->previous[i]/2; - for (; i <= row_len; i++) - state->buffer[i] += - (state->buffer[i-bpp] + context->previous[i])/2; - break; - case 4: - /* paeth filtering */ - bpp = (state->bits + 7) / 8; - for (i = 1; i <= bpp; i++) - state->buffer[i] += context->previous[i]; - for (; i <= row_len; i++) { - int a, b, c; - int pa, pb, pc; - - /* fetch pixels */ - a = state->buffer[i-bpp]; - b = context->previous[i]; - c = context->previous[i-bpp]; - - /* distances to surrounding pixels */ - pa = abs(b - c); - pb = abs(a - c); - pc = abs(a + b - 2*c); - - /* pick predictor with the shortest distance */ - state->buffer[i] += - (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c; - - } - break; - default: - state->errcode = IMAGING_CODEC_UNKNOWN; - free(context->previous); - inflateEnd(&context->z_stream); - return -1; - } - break; - case ZIP_TIFF_PREDICTOR: - bpp = (state->bits + 7) / 8; - for (i = bpp+1; i <= row_len; i++) - state->buffer[i] += state->buffer[i-bpp]; - break; - } - - /* Stuff data into the image */ - if (context->interlaced) { - int col = STARTING_COL[context->pass]; - if (state->bits >= 8) { - /* Stuff pixels in their correct location, one by one */ - for (i = 0; i < row_len; i += ((state->bits + 7) / 8)) { - state->shuffle((UINT8*) im->image[state->y] + - col * im->pixelsize, - state->buffer + context->prefix + i, 1); - col += COL_INCREMENT[context->pass]; - } - } else { - /* Handle case with more than a pixel in each byte */ - int row_bits = ((state->xsize + OFFSET[context->pass]) - / COL_INCREMENT[context->pass]) * state->bits; - for (i = 0; i < row_bits; i += state->bits) { - UINT8 byte = *(state->buffer + context->prefix + (i / 8)); - byte <<= (i % 8); - state->shuffle((UINT8*) im->image[state->y] + - col * im->pixelsize, &byte, 1); - col += COL_INCREMENT[context->pass]; - } - } - /* Find next valid scanline */ - state->y += ROW_INCREMENT[context->pass]; - while (state->y >= state->ysize || row_len <= 0) { - context->pass++; - if (context->pass == 7) { - /* Force exit below */ - state->y = state->ysize; - break; - } - state->y = STARTING_ROW[context->pass]; - row_len = get_row_len(state, context->pass); - /* Since we're moving to the "first" line, the previous line - * should be black to make filters work corectly */ - memset(state->buffer, 0, state->bytes+1); - } - } else { - state->shuffle((UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, - state->buffer + context->prefix, - state->xsize); - state->y++; - } - - /* all inflate output has been consumed */ - context->last_output = 0; - - if (state->y >= state->ysize || err == Z_STREAM_END) { - - /* The image and the data should end simultaneously */ - /* if (state->y < state->ysize || err != Z_STREAM_END) - state->errcode = IMAGING_CODEC_BROKEN; */ - - free(context->previous); - inflateEnd(&context->z_stream); - return -1; /* end of file (errcode=0) */ - - } - - /* Swap buffer pointers */ - ptr = state->buffer; - state->buffer = context->previous; - context->previous = ptr; - - } - - return bytes; /* consumed all of it */ - -} - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c deleted file mode 100755 index 19b2b778783..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/libImaging/ZipEncode.c +++ /dev/null @@ -1,341 +0,0 @@ -/* - * The Python Imaging Library. - * $Id$ - * - * coder for ZIP (deflated) image data - * - * History: - * 96-12-29 fl created - * 96-12-30 fl adaptive filter selection, encoder tuning - * - * Copyright (c) Fredrik Lundh 1996. - * Copyright (c) Secret Labs AB 1997. - * - * See the README file for information on usage and redistribution. - */ - - -#include "Imaging.h" - -#ifdef HAVE_LIBZ - -#include "Zip.h" - -int -ImagingZipEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) -{ - ZIPSTATE* context = (ZIPSTATE*) state->context; - int err; - UINT8* ptr; - int i, bpp, s, sum; - ImagingSectionCookie cookie; - - if (!state->state) { - - /* Initialization */ - - /* Valid modes are ZIP_PNG, ZIP_PNG_PALETTE, and ZIP_TIFF */ - - /* Expand standard buffer to make room for the filter selector, - and allocate filter buffers */ - free(state->buffer); - state->buffer = (UINT8*) malloc(state->bytes+1); - context->previous = (UINT8*) malloc(state->bytes+1); - context->prior = (UINT8*) malloc(state->bytes+1); - context->up = (UINT8*) malloc(state->bytes+1); - context->average = (UINT8*) malloc(state->bytes+1); - context->paeth = (UINT8*) malloc(state->bytes+1); - if (!state->buffer || !context->previous || !context->prior || - !context->up || !context->average || !context->paeth) { - free(context->paeth); - free(context->average); - free(context->up); - free(context->prior); - free(context->previous); - state->errcode = IMAGING_CODEC_MEMORY; - return -1; - } - - /* Initalise filter buffers */ - state->buffer[0] = 0; - context->prior[0] = 1; - context->up[0] = 2; - context->average[0] = 3; - context->paeth[0] = 4; - - /* Initialise previous buffer to black */ - memset(context->previous, 0, state->bytes+1); - - /* Setup compression context */ - context->z_stream.zalloc = (alloc_func)0; - context->z_stream.zfree = (free_func)0; - context->z_stream.opaque = (voidpf)0; - context->z_stream.next_in = 0; - context->z_stream.avail_in = 0; - - err = deflateInit2(&context->z_stream, - /* compression level */ - (context->optimize) ? Z_BEST_COMPRESSION - : Z_DEFAULT_COMPRESSION, - /* compression method */ - Z_DEFLATED, - /* compression memory resources */ - 15, 9, - /* compression strategy (image data are filtered)*/ - (context->mode == ZIP_PNG) ? Z_FILTERED - : Z_DEFAULT_STRATEGY); - if (err < 0) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - - if (context->dictionary && context->dictionary_size > 0) { - err = deflateSetDictionary(&context->z_stream, (unsigned char *)context->dictionary, - context->dictionary_size); - if (err < 0) { - state->errcode = IMAGING_CODEC_CONFIG; - return -1; - } - } - - /* Ready to decode */ - state->state = 1; - - } - - /* Setup the destination buffer */ - context->z_stream.next_out = buf; - context->z_stream.avail_out = bytes; - if (context->z_stream.next_in && context->z_stream.avail_in > 0) { - /* We have some data from previous round, deflate it first */ - err = deflate(&context->z_stream, Z_NO_FLUSH); - - if (err < 0) { - /* Something went wrong inside the compression library */ - if (err == Z_DATA_ERROR) - state->errcode = IMAGING_CODEC_BROKEN; - else if (err == Z_MEM_ERROR) - state->errcode = IMAGING_CODEC_MEMORY; - else - state->errcode = IMAGING_CODEC_CONFIG; - free(context->paeth); - free(context->average); - free(context->up); - free(context->prior); - free(context->previous); - deflateEnd(&context->z_stream); - return -1; - } - } - - ImagingSectionEnter(&cookie); - for (;;) { - - switch (state->state) { - - case 1: - - /* Compress image data */ - while (context->z_stream.avail_out > 0) { - - if (state->y >= state->ysize) { - /* End of image; now flush compressor buffers */ - state->state = 2; - break; - - } - - /* Stuff image data into the compressor */ - state->shuffle(state->buffer+1, - (UINT8*) im->image[state->y + state->yoff] + - state->xoff * im->pixelsize, - state->xsize); - - state->y++; - - context->output = state->buffer; - - if (context->mode == ZIP_PNG) { - - /* Filter the image data. For each line, select - the filter that gives the least total distance - from zero for the filtered data (taken from - LIBPNG) */ - - bpp = (state->bits + 7) / 8; - - /* 0. No filter */ - for (i = 1, sum = 0; i <= state->bytes; i++) { - UINT8 v = state->buffer[i]; - sum += (v < 128) ? v : 256 - v; - } - - /* 2. Up. We'll test this first to save time when - an image line is identical to the one above. */ - if (sum > 0) { - for (i = 1, s = 0; i <= state->bytes; i++) { - UINT8 v = state->buffer[i] - context->previous[i]; - context->up[i] = v; - s += (v < 128) ? v : 256 - v; - } - if (s < sum) { - context->output = context->up; - sum = s; /* 0 if line was duplicated */ - } - } - - /* 1. Prior */ - if (sum > 0) { - for (i = 1, s = 0; i <= bpp; i++) { - UINT8 v = state->buffer[i]; - context->prior[i] = v; - s += (v < 128) ? v : 256 - v; - } - for (; i <= state->bytes; i++) { - UINT8 v = state->buffer[i] - state->buffer[i-bpp]; - context->prior[i] = v; - s += (v < 128) ? v : 256 - v; - } - if (s < sum) { - context->output = context->prior; - sum = s; /* 0 if line is solid */ - } - } - - /* 3. Average (not very common in real-life images, - so its only used with the optimize option) */ - if (context->optimize && sum > 0) { - for (i = 1, s = 0; i <= bpp; i++) { - UINT8 v = state->buffer[i] - context->previous[i]/2; - context->average[i] = v; - s += (v < 128) ? v : 256 - v; - } - for (; i <= state->bytes; i++) { - UINT8 v = state->buffer[i] - - (state->buffer[i-bpp] + context->previous[i])/2; - context->average[i] = v; - s += (v < 128) ? v : 256 - v; - } - if (s < sum) { - context->output = context->average; - sum = s; - } - } - - /* 4. Paeth */ - if (sum > 0) { - for (i = 1, s = 0; i <= bpp; i++) { - UINT8 v = state->buffer[i] - context->previous[i]; - context->paeth[i] = v; - s += (v < 128) ? v : 256 - v; - } - for (; i <= state->bytes; i++) { - UINT8 v; - int a, b, c; - int pa, pb, pc; - - /* fetch pixels */ - a = state->buffer[i-bpp]; - b = context->previous[i]; - c = context->previous[i-bpp]; - - /* distances to surrounding pixels */ - pa = abs(b - c); - pb = abs(a - c); - pc = abs(a + b - 2*c); - - /* pick predictor with the shortest distance */ - v = state->buffer[i] - - ((pa <= pb && pa <= pc) ? a : - (pb <= pc) ? b : c); - context->paeth[i] = v; - s += (v < 128) ? v : 256 - v; - } - if (s < sum) { - context->output = context->paeth; - sum = s; - } - } - } - - /* Compress this line */ - context->z_stream.next_in = context->output; - context->z_stream.avail_in = state->bytes+1; - - err = deflate(&context->z_stream, Z_NO_FLUSH); - - if (err < 0) { - /* Something went wrong inside the compression library */ - if (err == Z_DATA_ERROR) - state->errcode = IMAGING_CODEC_BROKEN; - else if (err == Z_MEM_ERROR) - state->errcode = IMAGING_CODEC_MEMORY; - else - state->errcode = IMAGING_CODEC_CONFIG; - free(context->paeth); - free(context->average); - free(context->up); - free(context->prior); - free(context->previous); - deflateEnd(&context->z_stream); - ImagingSectionLeave(&cookie); - return -1; - } - - /* Swap buffer pointers */ - ptr = state->buffer; - state->buffer = context->previous; - context->previous = ptr; - - } - - if (context->z_stream.avail_out == 0) - break; /* Buffer full */ - - case 2: - - /* End of image data; flush compressor buffers */ - - while (context->z_stream.avail_out > 0) { - - err = deflate(&context->z_stream, Z_FINISH); - - if (err == Z_STREAM_END) { - - free(context->paeth); - free(context->average); - free(context->up); - free(context->prior); - free(context->previous); - - deflateEnd(&context->z_stream); - - state->errcode = IMAGING_CODEC_END; - - break; - } - - if (context->z_stream.avail_out == 0) - break; /* Buffer full */ - - } - - } - ImagingSectionLeave(&cookie); - return bytes - context->z_stream.avail_out; - - } - - /* Should never ever arrive here... */ - state->errcode = IMAGING_CODEC_CONFIG; - ImagingSectionLeave(&cookie); - return -1; -} - -const char* -ImagingZipVersion(void) -{ - return ZLIB_VERSION; -} - -#endif diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/map.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/map.c deleted file mode 100755 index f15b8200f8a..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/map.c +++ /dev/null @@ -1,379 +0,0 @@ -/* - * The Python Imaging Library. - * - * standard memory mapping interface for the Imaging library - * - * history: - * 1998-03-05 fl added Win32 read mapping - * 1999-02-06 fl added "I;16" support - * 2003-04-21 fl added PyImaging_MapBuffer primitive - * - * Copyright (c) 1998-2003 by Secret Labs AB. - * Copyright (c) 2003 by Fredrik Lundh. - * - * See the README file for information on usage and redistribution. - */ - -/* - * FIXME: should move the memory mapping primitives into libImaging! - */ - -#include "Python.h" - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#include "Imaging.h" - -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#undef INT32 -#undef INT64 -#undef UINT32 -#include "windows.h" -#endif - -/* compatibility wrappers (defined in _imaging.c) */ -extern int PyImaging_CheckBuffer(PyObject* buffer); -extern int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr); - -/* -------------------------------------------------------------------- */ -/* Standard mapper */ - -typedef struct { - PyObject_HEAD - char* base; - int size; - int offset; -#ifdef WIN32 - HANDLE hFile; - HANDLE hMap; -#endif -} ImagingMapperObject; - -staticforward PyTypeObject ImagingMapperType; - -ImagingMapperObject* -PyImaging_MapperNew(const char* filename, int readonly) -{ - ImagingMapperObject *mapper; - - ImagingMapperType.ob_type = &PyType_Type; - - mapper = PyObject_New(ImagingMapperObject, &ImagingMapperType); - if (mapper == NULL) - return NULL; - - mapper->base = NULL; - mapper->size = mapper->offset = 0; - -#ifdef WIN32 - mapper->hFile = (HANDLE)-1; - mapper->hMap = (HANDLE)-1; - - /* FIXME: currently supports readonly mappings only */ - mapper->hFile = CreateFile( - filename, - GENERIC_READ, - FILE_SHARE_READ, - NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, - NULL); - if (mapper->hFile == (HANDLE)-1) { - PyErr_SetString(PyExc_IOError, "cannot open file"); - PyObject_Del(mapper); - return NULL; - } - - mapper->hMap = CreateFileMapping( - mapper->hFile, NULL, - PAGE_READONLY, - 0, 0, NULL); - if (mapper->hMap == (HANDLE)-1) { - CloseHandle(mapper->hFile); - PyErr_SetString(PyExc_IOError, "cannot map file"); - PyObject_Del(mapper); - return NULL; - } - - mapper->base = (char*) MapViewOfFile( - mapper->hMap, - FILE_MAP_READ, - 0, 0, 0); - - mapper->size = GetFileSize(mapper->hFile, 0); -#endif - - return mapper; -} - -static void -mapping_dealloc(ImagingMapperObject* mapper) -{ -#ifdef WIN32 - if (mapper->base != 0) - UnmapViewOfFile(mapper->base); - if (mapper->hMap != (HANDLE)-1) - CloseHandle(mapper->hMap); - if (mapper->hFile != (HANDLE)-1) - CloseHandle(mapper->hFile); - mapper->base = 0; - mapper->hMap = mapper->hFile = (HANDLE)-1; -#endif - PyObject_Del(mapper); -} - -/* -------------------------------------------------------------------- */ -/* standard file operations */ - -static PyObject* -mapping_read(ImagingMapperObject* mapper, PyObject* args) -{ - PyObject* buf; - - int size = -1; - if (!PyArg_ParseTuple(args, "|i", &size)) - return NULL; - - /* check size */ - if (size < 0 || mapper->offset + size > mapper->size) - size = mapper->size - mapper->offset; - if (size < 0) - size = 0; - - buf = PyString_FromStringAndSize(NULL, size); - if (!buf) - return NULL; - - if (size > 0) { - memcpy(PyString_AsString(buf), mapper->base + mapper->offset, size); - mapper->offset += size; - } - - return buf; -} - -static PyObject* -mapping_seek(ImagingMapperObject* mapper, PyObject* args) -{ - int offset; - int whence = 0; - if (!PyArg_ParseTuple(args, "i|i", &offset, &whence)) - return NULL; - - switch (whence) { - case 0: /* SEEK_SET */ - mapper->offset = offset; - break; - case 1: /* SEEK_CUR */ - mapper->offset += offset; - break; - case 2: /* SEEK_END */ - mapper->offset = mapper->size + offset; - break; - default: - /* FIXME: raise ValueError? */ - break; - } - - Py_INCREF(Py_None); - return Py_None; -} - -/* -------------------------------------------------------------------- */ -/* map entire image */ - -extern PyObject*PyImagingNew(Imaging im); - -static void -ImagingDestroyMap(Imaging im) -{ - return; /* nothing to do! */ -} - -static PyObject* -mapping_readimage(ImagingMapperObject* mapper, PyObject* args) -{ - int y, size; - Imaging im; - - char* mode; - int xsize; - int ysize; - int stride; - int orientation; - if (!PyArg_ParseTuple(args, "s(ii)ii", &mode, &xsize, &ysize, - &stride, &orientation)) - return NULL; - - if (stride <= 0) { - /* FIXME: maybe we should call ImagingNewPrologue instead */ - if (!strcmp(mode, "L") || !strcmp(mode, "P")) - stride = xsize; - else if (!strcmp(mode, "I;16") || !strcmp(mode, "I;16B")) - stride = xsize * 2; - else - stride = xsize * 4; - } - - size = ysize * stride; - - if (mapper->offset + size > mapper->size) { - PyErr_SetString(PyExc_IOError, "image file truncated"); - return NULL; - } - - im = ImagingNewPrologue(mode, xsize, ysize); - if (!im) - return NULL; - - /* setup file pointers */ - if (orientation > 0) - for (y = 0; y < ysize; y++) - im->image[y] = mapper->base + mapper->offset + y * stride; - else - for (y = 0; y < ysize; y++) - im->image[ysize-y-1] = mapper->base + mapper->offset + y * stride; - - im->destroy = ImagingDestroyMap; - - if (!ImagingNewEpilogue(im)) - return NULL; - - mapper->offset += size; - - return PyImagingNew(im); -} - -static struct PyMethodDef methods[] = { - /* standard file interface */ - {"read", (PyCFunction)mapping_read, 1}, - {"seek", (PyCFunction)mapping_seek, 1}, - /* extensions */ - {"readimage", (PyCFunction)mapping_readimage, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -mapping_getattr(ImagingMapperObject* self, char* name) -{ - return Py_FindMethod(methods, (PyObject*) self, name); -} - -statichere PyTypeObject ImagingMapperType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "ImagingMapper", /*tp_name*/ - sizeof(ImagingMapperObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)mapping_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)mapping_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_hash*/ -}; - -PyObject* -PyImaging_Mapper(PyObject* self, PyObject* args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename)) - return NULL; - - return (PyObject*) PyImaging_MapperNew(filename, 1); -} - -/* -------------------------------------------------------------------- */ -/* Buffer mapper */ - -typedef struct ImagingBufferInstance { - struct ImagingMemoryInstance im; - PyObject* target; -} ImagingBufferInstance; - -static void -mapping_destroy_buffer(Imaging im) -{ - ImagingBufferInstance* buffer = (ImagingBufferInstance*) im; - - Py_XDECREF(buffer->target); -} - -PyObject* -PyImaging_MapBuffer(PyObject* self, PyObject* args) -{ - int y, size; - Imaging im; - char* ptr; - int bytes; - - PyObject* target; - char* mode; - char* codec; - PyObject* bbox; - int offset; - int xsize, ysize; - int stride; - int ystep; - - if (!PyArg_ParseTuple(args, "O(ii)sOi(sii)", &target, &xsize, &ysize, - &codec, &bbox, &offset, &mode, &stride, &ystep)) - return NULL; - - if (!PyImaging_CheckBuffer(target)) { - PyErr_SetString(PyExc_TypeError, "expected string or buffer"); - return NULL; - } - - if (stride <= 0) { - if (!strcmp(mode, "L") || !strcmp(mode, "P")) - stride = xsize; - else if (!strncmp(mode, "I;16", 4)) - stride = xsize * 2; - else - stride = xsize * 4; - } - - size = ysize * stride; - - /* check buffer size */ - bytes = PyImaging_ReadBuffer(target, (const void**) &ptr); - if (bytes < 0) { - PyErr_SetString(PyExc_ValueError, "buffer has negative size"); - return NULL; - } - if (offset + size > bytes) { - PyErr_SetString(PyExc_ValueError, "buffer is not large enough"); - return NULL; - } - - im = ImagingNewPrologueSubtype( - mode, xsize, ysize, sizeof(ImagingBufferInstance) - ); - if (!im) - return NULL; - - /* setup file pointers */ - if (ystep > 0) - for (y = 0; y < ysize; y++) - im->image[y] = ptr + offset + y * stride; - else - for (y = 0; y < ysize; y++) - im->image[ysize-y-1] = ptr + offset + y * stride; - - im->destroy = mapping_destroy_buffer; - - Py_INCREF(target); - ((ImagingBufferInstance*) im)->target = target; - - if (!ImagingNewEpilogue(im)) - return NULL; - - return PyImagingNew(im); -} - diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c deleted file mode 100755 index 6bb2ebb547c..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/outline.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * THIS IS WORK IN PROGRESS. - * - * The Python Imaging Library. - * - * "arrow" outline stuff. the contents of this module - * will be merged with the path module and the rest of - * the arrow graphics package, but not before PIL 1.1. - * use at your own risk. - * - * history: - * 99-01-10 fl Added to PIL (experimental) - * - * Copyright (c) Secret Labs AB 1999. - * Copyright (c) Fredrik Lundh 1999. - * - * See the README file for information on usage and redistribution. - */ - -#include "Python.h" - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#include "Imaging.h" - - -/* -------------------------------------------------------------------- */ -/* Class */ - -typedef struct { - PyObject_HEAD - ImagingOutline outline; -} OutlineObject; - -staticforward PyTypeObject OutlineType; - -#define PyOutline_Check(op) ((op)->ob_type == &OutlineType) - -static OutlineObject* -_outline_new(void) -{ - OutlineObject *self; - - self = PyObject_New(OutlineObject, &OutlineType); - if (self == NULL) - return NULL; - - self->outline = ImagingOutlineNew(); - - return self; -} - -static void -_outline_dealloc(OutlineObject* self) -{ - ImagingOutlineDelete(self->outline); - PyObject_Del(self); -} - -ImagingOutline -PyOutline_AsOutline(PyObject* outline) -{ - if (PyOutline_Check(outline)) - return ((OutlineObject*) outline)->outline; - - return NULL; -} - - -/* -------------------------------------------------------------------- */ -/* Factories */ - -PyObject* -PyOutline_Create(PyObject* self, PyObject* args) -{ - if (!PyArg_ParseTuple(args, ":outline")) - return NULL; - - return (PyObject*) _outline_new(); -} - - -/* -------------------------------------------------------------------- */ -/* Methods */ - -static PyObject* -_outline_move(OutlineObject* self, PyObject* args) -{ - float x0, y0; - if (!PyArg_ParseTuple(args, "ff", &x0, &y0)) - return NULL; - - ImagingOutlineMove(self->outline, x0, y0); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_outline_line(OutlineObject* self, PyObject* args) -{ - float x1, y1; - if (!PyArg_ParseTuple(args, "ff", &x1, &y1)) - return NULL; - - ImagingOutlineLine(self->outline, x1, y1); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_outline_curve(OutlineObject* self, PyObject* args) -{ - float x1, y1, x2, y2, x3, y3; - if (!PyArg_ParseTuple(args, "ffffff", &x1, &y1, &x2, &y2, &x3, &y3)) - return NULL; - - ImagingOutlineCurve(self->outline, x1, y1, x2, y2, x3, y3); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_outline_close(OutlineObject* self, PyObject* args) -{ - if (!PyArg_ParseTuple(args, ":close")) - return NULL; - - ImagingOutlineClose(self->outline); - - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject* -_outline_transform(OutlineObject* self, PyObject* args) -{ - double a[6]; - if (!PyArg_ParseTuple(args, "(dddddd)", a+0, a+1, a+2, a+3, a+4, a+5)) - return NULL; - - ImagingOutlineTransform(self->outline, a); - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef _outline_methods[] = { - {"line", (PyCFunction)_outline_line, 1}, - {"curve", (PyCFunction)_outline_curve, 1}, - {"move", (PyCFunction)_outline_move, 1}, - {"close", (PyCFunction)_outline_close, 1}, - {"transform", (PyCFunction)_outline_transform, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -_outline_getattr(OutlineObject* self, char* name) -{ - return Py_FindMethod(_outline_methods, (PyObject*) self, name); -} - -statichere PyTypeObject OutlineType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Outline", /*tp_name*/ - sizeof(OutlineObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)_outline_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)_outline_getattr, /*tp_getattr*/ - 0 /*tp_setattr*/ -}; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/path.c b/tools/HitboxExpander/third_party/Imaging-1.1.7/path.c deleted file mode 100755 index f083b971d04..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/path.c +++ /dev/null @@ -1,587 +0,0 @@ -/* - * The Python Imaging Library. - * - * 2D path utilities - * - * history: - * 1996-11-04 fl Added to PIL (incomplete) - * 1996-11-05 fl Added sequence semantics - * 1997-02-28 fl Fixed getbbox - * 1997-06-12 fl Added id attribute - * 1997-06-14 fl Added slicing and setitem - * 1998-12-29 fl Improved sequence handling (from Richard Jones) - * 1999-01-10 fl Fixed IndexError test for 1.5 (from Fred Drake) - * 2000-10-12 fl Added special cases for tuples and lists - * 2002-10-27 fl Added clipping boilerplate - * 2004-09-19 fl Added tolist(flat) variant - * 2005-05-06 fl Added buffer interface support to path constructor - * - * notes: - * FIXME: fill in remaining slots in the sequence api - * - * Copyright (c) 1997-2005 by Secret Labs AB - * Copyright (c) 1997-2005 by Fredrik Lundh - * - * See the README file for information on usage and redistribution. - */ - - -#include "Python.h" - -#include - -#if PY_VERSION_HEX < 0x01060000 -#define PyObject_New PyObject_NEW -#define PyObject_Del PyMem_DEL -#endif - -#if PY_VERSION_HEX < 0x02050000 -#define Py_ssize_t int -#define lenfunc inquiry -#define ssizeargfunc intargfunc -#define ssizessizeargfunc intintargfunc -#define ssizeobjargproc intobjargproc -#define ssizessizeobjargproc intintobjargproc -#endif - -/* compatibility wrappers (defined in _imaging.c) */ -extern int PyImaging_CheckBuffer(PyObject* buffer); -extern int PyImaging_ReadBuffer(PyObject* buffer, const void** ptr); - -/* -------------------------------------------------------------------- */ -/* Class */ -/* -------------------------------------------------------------------- */ - -typedef struct { - PyObject_HEAD - Py_ssize_t count; - double *xy; - int index; /* temporary use, e.g. in decimate */ -} PyPathObject; - -staticforward PyTypeObject PyPathType; - -static double* -alloc_array(int count) -{ - double* xy; - if (count < 0) { - PyErr_NoMemory(); - return NULL; - } - xy = malloc(2 * count * sizeof(double) + 1); - if (!xy) - PyErr_NoMemory(); - return xy; -} - -static PyPathObject* -path_new(Py_ssize_t count, double* xy, int duplicate) -{ - PyPathObject *path; - - if (duplicate) { - /* duplicate path */ - double* p = alloc_array(count); - if (!p) - return NULL; - memcpy(p, xy, count * 2 * sizeof(double)); - xy = p; - } - - path = PyObject_New(PyPathObject, &PyPathType); - if (path == NULL) - return NULL; - - path->count = count; - path->xy = xy; - - return path; -} - -static void -path_dealloc(PyPathObject* path) -{ - free(path->xy); - PyObject_Del(path); -} - -/* -------------------------------------------------------------------- */ -/* Helpers */ -/* -------------------------------------------------------------------- */ - -#define PyPath_Check(op) ((op)->ob_type == &PyPathType) - -int -PyPath_Flatten(PyObject* data, double **pxy) -{ - int i, j, n; - double *xy; - - if (PyPath_Check(data)) { - /* This was another path object. */ - PyPathObject *path = (PyPathObject*) data; - xy = alloc_array(path->count); - if (!xy) - return -1; - memcpy(xy, path->xy, 2 * path->count * sizeof(double)); - *pxy = xy; - return path->count; - } - - if (PyImaging_CheckBuffer(data)) { - /* Assume the buffer contains floats */ - float* ptr; - int n = PyImaging_ReadBuffer(data, (const void**) &ptr); - n /= 2 * sizeof(float); - xy = alloc_array(n); - if (!xy) - return -1; - for (i = 0; i < n+n; i++) - xy[i] = ptr[i]; - *pxy = xy; - return n; - } - - if (!PySequence_Check(data)) { - PyErr_SetString(PyExc_TypeError, "argument must be sequence"); - return -1; - } - - j = 0; - n = PyObject_Length(data); - /* Just in case __len__ breaks (or doesn't exist) */ - if (PyErr_Occurred()) - return -1; - - /* Allocate for worst case */ - xy = alloc_array(n); - if (!xy) - return -1; - - /* Copy table to path array */ - if (PyList_Check(data)) { - for (i = 0; i < n; i++) { - double x, y; - PyObject *op = PyList_GET_ITEM(data, i); - if (PyFloat_Check(op)) - xy[j++] = PyFloat_AS_DOUBLE(op); - else if (PyInt_Check(op)) - xy[j++] = (float) PyInt_AS_LONG(op); - else if (PyNumber_Check(op)) - xy[j++] = PyFloat_AsDouble(op); - else if (PyArg_ParseTuple(op, "dd", &x, &y)) { - xy[j++] = x; - xy[j++] = y; - } else { - free(xy); - return -1; - } - } - } else if (PyTuple_Check(data)) { - for (i = 0; i < n; i++) { - double x, y; - PyObject *op = PyTuple_GET_ITEM(data, i); - if (PyFloat_Check(op)) - xy[j++] = PyFloat_AS_DOUBLE(op); - else if (PyInt_Check(op)) - xy[j++] = (float) PyInt_AS_LONG(op); - else if (PyNumber_Check(op)) - xy[j++] = PyFloat_AsDouble(op); - else if (PyArg_ParseTuple(op, "dd", &x, &y)) { - xy[j++] = x; - xy[j++] = y; - } else { - free(xy); - return -1; - } - } - } else { - for (i = 0; i < n; i++) { - double x, y; - PyObject *op = PySequence_GetItem(data, i); - if (!op) { - /* treat IndexError as end of sequence */ - if (PyErr_Occurred() && - PyErr_ExceptionMatches(PyExc_IndexError)) { - PyErr_Clear(); - break; - } else { - free(xy); - return -1; - } - } - if (PyFloat_Check(op)) - xy[j++] = PyFloat_AS_DOUBLE(op); - else if (PyInt_Check(op)) - xy[j++] = (float) PyInt_AS_LONG(op); - else if (PyNumber_Check(op)) - xy[j++] = PyFloat_AsDouble(op); - else if (PyArg_ParseTuple(op, "dd", &x, &y)) { - xy[j++] = x; - xy[j++] = y; - } else { - Py_DECREF(op); - free(xy); - return -1; - } - Py_DECREF(op); - } - } - - if (j & 1) { - PyErr_SetString(PyExc_ValueError, "wrong number of coordinates"); - free(xy); - return -1; - } - - *pxy = xy; - return j/2; -} - - -/* -------------------------------------------------------------------- */ -/* Factories */ -/* -------------------------------------------------------------------- */ - -PyObject* -PyPath_Create(PyObject* self, PyObject* args) -{ - PyObject* data; - Py_ssize_t count; - double *xy; - - if (PyArg_ParseTuple(args, "i:Path", &count)) { - - /* number of vertices */ - xy = alloc_array(count); - if (!xy) - return NULL; - - } else { - - /* sequence or other path */ - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "O", &data)) - return NULL; - - count = PyPath_Flatten(data, &xy); - if (count < 0) - return NULL; - } - - return (PyObject*) path_new(count, xy, 0); -} - - -/* -------------------------------------------------------------------- */ -/* Methods */ -/* -------------------------------------------------------------------- */ - -static PyObject* -path_compact(PyPathObject* self, PyObject* args) -{ - /* Simple-minded method to shorten path. A point is removed if - the city block distance to the previous point is less than the - given distance */ - int i, j; - double *xy; - - double cityblock = 2.0; - - if (!PyArg_ParseTuple(args, "|d:compact", &cityblock)) - return NULL; - - xy = self->xy; - - /* remove bogus vertices */ - for (i = j = 1; i < self->count; i++) { - if (fabs(xy[j+j-2]-xy[i+i]) + fabs(xy[j+j-1]-xy[i+i+1]) >= cityblock) { - xy[j+j] = xy[i+i]; - xy[j+j+1] = xy[i+i+1]; - j++; - } - } - - i = self->count - j; - self->count = j; - - /* shrink coordinate array */ - self->xy = realloc(self->xy, 2 * self->count * sizeof(double)); - - return Py_BuildValue("i", i); /* number of removed vertices */ -} - -static PyObject* -path_clip_polygon(PyPathObject* self, PyObject* args) -{ - /* Clip path representing a single polygon */ - PyErr_SetString(PyExc_RuntimeError, "not yet implemented"); - return NULL; -} - -static PyObject* -path_clip_polyline(PyPathObject* self, PyObject* args) -{ - /* Clip path representing a single polyline (outline) */ - PyErr_SetString(PyExc_RuntimeError, "not yet implemented"); - return NULL; -} - -static PyObject* -path_getbbox(PyPathObject* self, PyObject* args) -{ - /* Find bounding box */ - int i; - double *xy; - double x0, y0, x1, y1; - - if (!PyArg_ParseTuple(args, ":getbbox")) - return NULL; - - xy = self->xy; - - x0 = x1 = xy[0]; - y0 = y1 = xy[1]; - - for (i = 1; i < self->count; i++) { - if (xy[i+i] < x0) - x0 = xy[i+i]; - if (xy[i+i] > x1) - x1 = xy[i+i]; - if (xy[i+i+1] < y0) - y0 = xy[i+i+1]; - if (xy[i+i+1] > y1) - y1 = xy[i+i+1]; - } - - return Py_BuildValue("dddd", x0, y0, x1, y1); -} - -static PyObject* -path_getitem(PyPathObject* self, int i) -{ - if (i < 0 || i >= self->count) { - PyErr_SetString(PyExc_IndexError, "path index out of range"); - return NULL; - } - - return Py_BuildValue("dd", self->xy[i+i], self->xy[i+i+1]); -} - -static PyObject* -path_getslice(PyPathObject* self, Py_ssize_t ilow, Py_ssize_t ihigh) -{ - /* adjust arguments */ - if (ilow < 0) - ilow = 0; - else if (ilow >= self->count) - ilow = self->count; - if (ihigh < 0) - ihigh = 0; - if (ihigh < ilow) - ihigh = ilow; - else if (ihigh > self->count) - ihigh = self->count; - - return (PyObject*) path_new(ihigh - ilow, self->xy + ilow * 2, 1); -} - -static Py_ssize_t -path_len(PyPathObject* self) -{ - return self->count; -} - -static PyObject* -path_map(PyPathObject* self, PyObject* args) -{ - /* Map coordinate set through function */ - int i; - double *xy; - PyObject* function; - - if (!PyArg_ParseTuple(args, "O:map", &function)) - return NULL; - - xy = self->xy; - - /* apply function to coordinate set */ - for (i = 0; i < self->count; i++) { - double x = xy[i+i]; - double y = xy[i+i+1]; - PyObject* item = PyObject_CallFunction(function, "dd", x, y); - if (!item || !PyArg_ParseTuple(item, "dd", &x, &y)) { - Py_XDECREF(item); - return NULL; - } - xy[i+i] = x; - xy[i+i+1] = y; - Py_DECREF(item); - } - - Py_INCREF(Py_None); - return Py_None; -} - -static int -path_setitem(PyPathObject* self, int i, PyObject* op) -{ - double* xy; - - if (i < 0 || i >= self->count) { - PyErr_SetString(PyExc_IndexError, - "path assignment index out of range"); - return -1; - } - - if (op == NULL) { - PyErr_SetString(PyExc_TypeError, - "cannot delete from path"); - return -1; - } - - xy = &self->xy[i+i]; - - if (!PyArg_ParseTuple(op, "dd", &xy[0], &xy[1])) - return -1; - - return 0; -} - -static PyObject* -path_tolist(PyPathObject* self, PyObject* args) -{ - PyObject *list; - int i; - - int flat = 0; - if (!PyArg_ParseTuple(args, "|i:tolist", &flat)) - return NULL; - - if (flat) { - list = PyList_New(self->count*2); - for (i = 0; i < self->count*2; i++) { - PyObject* item; - item = PyFloat_FromDouble(self->xy[i]); - if (!item) - goto error; - PyList_SetItem(list, i, item); - } - } else { - list = PyList_New(self->count); - for (i = 0; i < self->count; i++) { - PyObject* item; - item = Py_BuildValue("dd", self->xy[i+i], self->xy[i+i+1]); - if (!item) - goto error; - PyList_SetItem(list, i, item); - } - } - - return list; - -error: - Py_DECREF(list); - return NULL; -} - -static PyObject* -path_transform(PyPathObject* self, PyObject* args) -{ - /* Apply affine transform to coordinate set */ - int i; - double *xy; - double a, b, c, d, e, f; - - double wrap = 0.0; - - if (!PyArg_ParseTuple(args, "(dddddd)|d:transform", - &a, &b, &c, &d, &e, &f, - &wrap)) - return NULL; - - xy = self->xy; - - /* transform the coordinate set */ - if (b == 0.0 && d == 0.0) - /* scaling */ - for (i = 0; i < self->count; i++) { - xy[i+i] = a*xy[i+i]+c; - xy[i+i+1] = e*xy[i+i+1]+f; - } - else - /* affine transform */ - for (i = 0; i < self->count; i++) { - double x = xy[i+i]; - double y = xy[i+i+1]; - xy[i+i] = a*x+b*y+c; - xy[i+i+1] = d*x+e*y+f; - } - - /* special treatment of geographical map data */ - if (wrap != 0.0) - for (i = 0; i < self->count; i++) - xy[i+i] = fmod(xy[i+i], wrap); - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef methods[] = { - {"getbbox", (PyCFunction)path_getbbox, 1}, - {"tolist", (PyCFunction)path_tolist, 1}, - {"clip_polygon", (PyCFunction)path_clip_polygon, 1}, - {"clip_polyline", (PyCFunction)path_clip_polyline, 1}, - {"compact", (PyCFunction)path_compact, 1}, - {"map", (PyCFunction)path_map, 1}, - {"transform", (PyCFunction)path_transform, 1}, - {NULL, NULL} /* sentinel */ -}; - -static PyObject* -path_getattr(PyPathObject* self, char* name) -{ - PyObject* res; - - res = Py_FindMethod(methods, (PyObject*) self, name); - if (res) - return res; - - PyErr_Clear(); - - if (strcmp(name, "id") == 0) - return Py_BuildValue("l", (long) self->xy); - - PyErr_SetString(PyExc_AttributeError, name); - return NULL; -} - -static PySequenceMethods path_as_sequence = { - (lenfunc)path_len, /*sq_length*/ - (binaryfunc)0, /*sq_concat*/ - (ssizeargfunc)0, /*sq_repeat*/ - (ssizeargfunc)path_getitem, /*sq_item*/ - (ssizessizeargfunc)path_getslice, /*sq_slice*/ - (ssizeobjargproc)path_setitem, /*sq_ass_item*/ - (ssizessizeobjargproc)0, /*sq_ass_slice*/ -}; - -statichere PyTypeObject PyPathType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Path", /*tp_name*/ - sizeof(PyPathObject), /*tp_size*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)path_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)path_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number */ - &path_as_sequence, /*tp_as_sequence */ - 0, /*tp_as_mapping */ - 0, /*tp_hash*/ -}; diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py deleted file mode 100755 index 22bbe433bf6..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/selftest.py +++ /dev/null @@ -1,202 +0,0 @@ -# minimal sanity check - -ROOT = "." - -import os, sys -sys.path.insert(0, ROOT) - -from PIL import Image -from PIL import ImageDraw -from PIL import ImageFilter -from PIL import ImageMath - -try: - Image.core.ping -except ImportError, v: - print "***", v - sys.exit() -except AttributeError: - pass - -def _info(im): - im.load() - return im.format, im.mode, im.size - -def testimage(): - """ - PIL lets you create in-memory images with various pixel types: - - >>> im = Image.new("1", (128, 128)) # monochrome - >>> _info(im) - (None, '1', (128, 128)) - >>> _info(Image.new("L", (128, 128))) # grayscale (luminance) - (None, 'L', (128, 128)) - >>> _info(Image.new("P", (128, 128))) # palette - (None, 'P', (128, 128)) - >>> _info(Image.new("RGB", (128, 128))) # truecolor - (None, 'RGB', (128, 128)) - >>> _info(Image.new("I", (128, 128))) # 32-bit integer - (None, 'I', (128, 128)) - >>> _info(Image.new("F", (128, 128))) # 32-bit floating point - (None, 'F', (128, 128)) - - Or open existing files: - - >>> im = Image.open(os.path.join(ROOT, "Images/lena.gif")) - >>> _info(im) - ('GIF', 'P', (128, 128)) - >>> _info(Image.open(os.path.join(ROOT, "Images/lena.ppm"))) - ('PPM', 'RGB', (128, 128)) - >>> try: - ... _info(Image.open(os.path.join(ROOT, "Images/lena.jpg"))) - ... except IOError, v: - ... print v - ('JPEG', 'RGB', (128, 128)) - - PIL doesn't actually load the image data until it's needed, - or you call the "load" method: - - >>> im = Image.open(os.path.join(ROOT, "Images/lena.ppm")) - >>> print im.im # internal image attribute - None - >>> a = im.load() - >>> type(im.im) - - - You can apply many different operations on images. Most - operations return a new image: - - >>> im = Image.open(os.path.join(ROOT, "Images/lena.ppm")) - >>> _info(im.convert("L")) - (None, 'L', (128, 128)) - >>> _info(im.copy()) - (None, 'RGB', (128, 128)) - >>> _info(im.crop((32, 32, 96, 96))) - (None, 'RGB', (64, 64)) - >>> _info(im.filter(ImageFilter.BLUR)) - (None, 'RGB', (128, 128)) - >>> im.getbands() - ('R', 'G', 'B') - >>> im.getbbox() - (0, 0, 128, 128) - >>> len(im.getdata()) - 16384 - >>> im.getextrema() - ((61, 255), (26, 234), (44, 223)) - >>> im.getpixel((0, 0)) - (223, 162, 133) - >>> len(im.getprojection()) - 2 - >>> len(im.histogram()) - 768 - >>> _info(im.point(range(256)*3)) - (None, 'RGB', (128, 128)) - >>> _info(im.resize((64, 64))) - (None, 'RGB', (64, 64)) - >>> _info(im.rotate(45)) - (None, 'RGB', (128, 128)) - >>> map(_info, im.split()) - [(None, 'L', (128, 128)), (None, 'L', (128, 128)), (None, 'L', (128, 128))] - >>> len(im.convert("1").tobitmap()) - 10456 - >>> len(im.tostring()) - 49152 - >>> _info(im.transform((512, 512), Image.AFFINE, (1,0,0,0,1,0))) - (None, 'RGB', (512, 512)) - >>> _info(im.transform((512, 512), Image.EXTENT, (32,32,96,96))) - (None, 'RGB', (512, 512)) - - The ImageDraw module lets you draw stuff in raster images: - - >>> im = Image.new("L", (128, 128), 64) - >>> d = ImageDraw.ImageDraw(im) - >>> d.line((0, 0, 128, 128), fill=128) - >>> d.line((0, 128, 128, 0), fill=128) - >>> im.getextrema() - (64, 128) - - In 1.1.4, you can specify colors in a number of ways: - - >>> xy = 0, 0, 128, 128 - >>> im = Image.new("RGB", (128, 128), 0) - >>> d = ImageDraw.ImageDraw(im) - >>> d.rectangle(xy, "#f00") - >>> im.getpixel((0, 0)) - (255, 0, 0) - >>> d.rectangle(xy, "#ff0000") - >>> im.getpixel((0, 0)) - (255, 0, 0) - >>> d.rectangle(xy, "rgb(255,0,0)") - >>> im.getpixel((0, 0)) - (255, 0, 0) - >>> d.rectangle(xy, "rgb(100%,0%,0%)") - >>> im.getpixel((0, 0)) - (255, 0, 0) - >>> d.rectangle(xy, "hsl(0, 100%, 50%)") - >>> im.getpixel((0, 0)) - (255, 0, 0) - >>> d.rectangle(xy, "red") - >>> im.getpixel((0, 0)) - (255, 0, 0) - - In 1.1.6, you can use the ImageMath module to do image - calculations. - - >>> im = ImageMath.eval("float(im + 20)", im=im.convert("L")) - >>> im.mode, im.size - ('F', (128, 128)) - - PIL can do many other things, but I'll leave that for another - day. If you're curious, check the handbook, available from: - - http://www.pythonware.com - - Cheers /F - """ - - -def check_module(feature, module): - try: - __import__("PIL." + module) - except ImportError: - print "***", feature, "support not installed" - else: - print "---", feature, "support ok" - -def check_codec(feature, codec): - if codec + "_encoder" not in dir(Image.core): - print "***", feature, "support not installed" - else: - print "---", feature, "support ok" - - -if __name__ == "__main__": - # check build sanity - - exit_status = 0 - - print "-"*68 - print "PIL", Image.VERSION, "TEST SUMMARY " - print "-"*68 - print "Python modules loaded from", os.path.dirname(Image.__file__) - print "Binary modules loaded from", os.path.dirname(Image.core.__file__) - print "-"*68 - check_module("PIL CORE", "_imaging") - check_module("TKINTER", "_imagingtk") - check_codec("JPEG", "jpeg") - check_codec("ZLIB (PNG/ZIP)", "zip") - check_module("FREETYPE2", "_imagingft") - check_module("LITTLECMS", "_imagingcms") - print "-"*68 - - # use doctest to make sure the test program behaves as documented! - import doctest, selftest - print "Running selftest:" - status = doctest.testmod(selftest) - if status[0]: - print "*** %s tests of %d failed." % status - exit_status = 1 - else: - print "--- %s tests passed." % status[1] - - sys.exit(exit_status) diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py b/tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py deleted file mode 100755 index a76954e0313..00000000000 --- a/tools/HitboxExpander/third_party/Imaging-1.1.7/setup.py +++ /dev/null @@ -1,487 +0,0 @@ -#!/usr/bin/env python -# -# Setup script for PIL 1.1.5 and later -# -# Usage: python setup.py install -# - -import glob, os, re, struct, string, sys - -# make it possible to run the setup script from another directory -try: - os.chdir(os.path.dirname(sys.argv[0])) -except OSError: - pass - -def libinclude(root): - # map root to (root/lib, root/include) - return os.path.join(root, "lib"), os.path.join(root, "include") - -# -------------------------------------------------------------------- -# Library pointers. -# -# Use None to look for the libraries in well-known library locations. -# Use a string to specify a single directory, for both the library and -# the include files. Use a tuple to specify separate directories: -# (libpath, includepath). Examples: -# -# JPEG_ROOT = "/home/libraries/jpeg-6b" -# TIFF_ROOT = "/opt/tiff/lib", "/opt/tiff/include" -# -# If you have "lib" and "include" directories under a common parent, -# you can use the "libinclude" helper: -# -# TIFF_ROOT = libinclude("/opt/tiff") - -TCL_ROOT = None -JPEG_ROOT = None -ZLIB_ROOT = libinclude(os.path.abspath("../zlib")) -TIFF_ROOT = None -FREETYPE_ROOT = None -LCMS_ROOT = None - -# FIXME: add mechanism to explicitly *disable* the use of a library - -# -------------------------------------------------------------------- -# Identification - -NAME = "PIL" -DESCRIPTION = "Python Imaging Library" -AUTHOR = "Secret Labs AB (PythonWare)", "info@pythonware.com" -HOMEPAGE = "http://www.pythonware.com/products/pil" -DOWNLOAD_URL = "http://effbot.org/downloads/%s-%s.tar.gz" # name, version - -# -------------------------------------------------------------------- -# Core library - -IMAGING = [ - "decode", "encode", "map", "display", "outline", "path", - ] - -LIBIMAGING = [ - "Access", "Antialias", "Bands", "BitDecode", "Blend", "Chops", - "Convert", "ConvertYCbCr", "Copy", "Crc32", "Crop", "Dib", "Draw", - "Effects", "EpsEncode", "File", "Fill", "Filter", "FliDecode", - "Geometry", "GetBBox", "GifDecode", "GifEncode", "HexDecode", - "Histo", "JpegDecode", "JpegEncode", "LzwDecode", "Matrix", - "ModeFilter", "MspDecode", "Negative", "Offset", "Pack", - "PackDecode", "Palette", "Paste", "Quant", "QuantHash", - "QuantHeap", "PcdDecode", "PcxDecode", "PcxEncode", "Point", - "RankFilter", "RawDecode", "RawEncode", "Storage", "SunRleDecode", - "TgaRleDecode", "Unpack", "UnpackYCC", "UnsharpMask", "XbmDecode", - "XbmEncode", "ZipDecode", "ZipEncode" - ] - -# -------------------------------------------------------------------- -# Override settings - -try: - from setup_site import * -except ImportError: - pass - -# -------------------------------------------------------------------- - -from distutils import sysconfig -from distutils.core import Extension, setup -from distutils.command.build_ext import build_ext - -try: - import _tkinter -except ImportError: - _tkinter = None - -def add_directory(path, dir, where=None): - if dir and os.path.isdir(dir) and dir not in path: - if where is None: - path.append(dir) - else: - path.insert(where, dir) - -def find_include_file(self, include): - for directory in self.compiler.include_dirs: - if os.path.isfile(os.path.join(directory, include)): - return 1 - return 0 - -def find_library_file(self, library): - return self.compiler.find_library_file(self.compiler.library_dirs, library) - -def find_version(filename): - for line in open(filename).readlines(): - m = re.search("VERSION\s*=\s*\"([^\"]+)\"", line) - if m: - return m.group(1) - return None - -VERSION = find_version("PIL/Image.py") - -class pil_build_ext(build_ext): - - def build_extensions(self): - - global TCL_ROOT - - library_dirs = [] - include_dirs = [] - - add_directory(include_dirs, "libImaging") - - # - # add platform directories - - if sys.platform == "cygwin": - # pythonX.Y.dll.a is in the /usr/lib/pythonX.Y/config directory - add_directory(library_dirs, os.path.join( - "/usr/lib", "python%s" % sys.version[:3], "config" - )) - - elif sys.platform == "darwin": - # attempt to make sure we pick freetype2 over other versions - add_directory(include_dirs, "/sw/include/freetype2") - add_directory(include_dirs, "/sw/lib/freetype2/include") - # fink installation directories - add_directory(library_dirs, "/sw/lib") - add_directory(include_dirs, "/sw/include") - # darwin ports installation directories - add_directory(library_dirs, "/opt/local/lib") - add_directory(include_dirs, "/opt/local/include") - - add_directory(library_dirs, "/usr/local/lib") - # FIXME: check /opt/stuff directories here? - - prefix = sysconfig.get_config_var("prefix") - if prefix: - add_directory(library_dirs, os.path.join(prefix, "lib")) - add_directory(include_dirs, os.path.join(prefix, "include")) - - # - # locate tkinter libraries - - if _tkinter: - TCL_VERSION = _tkinter.TCL_VERSION[:3] - - if _tkinter and not TCL_ROOT: - # we have Tkinter but the TCL_ROOT variable was not set; - # try to locate appropriate Tcl/Tk libraries - PYVERSION = sys.version[0] + sys.version[2] - TCLVERSION = TCL_VERSION[0] + TCL_VERSION[2] - roots = [ - # common installation directories, mostly for Windows - # (for Unix-style platforms, we'll check in well-known - # locations later) - os.path.join("/py" + PYVERSION, "Tcl"), - os.path.join("/python" + PYVERSION, "Tcl"), - "/Tcl", "/Tcl" + TCLVERSION, "/Tcl" + TCL_VERSION, - os.path.join(os.environ.get("ProgramFiles", ""), "Tcl"), - ] - for TCL_ROOT in roots: - TCL_ROOT = os.path.abspath(TCL_ROOT) - if os.path.isfile(os.path.join(TCL_ROOT, "include", "tk.h")): - # FIXME: use distutils logging (?) - print "--- using Tcl/Tk libraries at", TCL_ROOT - print "--- using Tcl/Tk version", TCL_VERSION - TCL_ROOT = libinclude(TCL_ROOT) - break - else: - TCL_ROOT = None - - # - # add configured kits - - for root in (TCL_ROOT, JPEG_ROOT, TCL_ROOT, TIFF_ROOT, ZLIB_ROOT, - FREETYPE_ROOT, LCMS_ROOT): - if isinstance(root, type(())): - lib_root, include_root = root - else: - lib_root = include_root = root - add_directory(library_dirs, lib_root) - add_directory(include_dirs, include_root) - - # - # add standard directories - - # look for tcl specific subdirectory (e.g debian) - if _tkinter: - tcl_dir = "/usr/include/tcl" + TCL_VERSION - if os.path.isfile(os.path.join(tcl_dir, "tk.h")): - add_directory(include_dirs, tcl_dir) - - # standard locations - add_directory(library_dirs, "/usr/local/lib") - add_directory(include_dirs, "/usr/local/include") - - add_directory(library_dirs, "/usr/lib") - add_directory(include_dirs, "/usr/include") - - # - # insert new dirs *before* default libs, to avoid conflicts - # between Python PYD stub libs and real libraries - - self.compiler.library_dirs = library_dirs + self.compiler.library_dirs - self.compiler.include_dirs = include_dirs + self.compiler.include_dirs - - # - # look for available libraries - - class feature: - zlib = jpeg = tiff = freetype = tcl = tk = lcms = None - feature = feature() - - if find_include_file(self, "zlib.h"): - if find_library_file(self, "z"): - feature.zlib = "z" - elif sys.platform == "win32" and find_library_file(self, "zdll"): - feature.zlib = "zdll" # alternative name - - if find_include_file(self, "jpeglib.h"): - if find_library_file(self, "jpeg"): - feature.jpeg = "jpeg" - elif sys.platform == "win32" and find_library_file(self, "libjpeg"): - feature.jpeg = "libjpeg" # alternative name - - if find_library_file(self, "tiff"): - feature.tiff = "tiff" - - if find_library_file(self, "freetype"): - # look for freetype2 include files - freetype_version = 0 - for dir in self.compiler.include_dirs: - if os.path.isfile(os.path.join(dir, "ft2build.h")): - freetype_version = 21 - dir = os.path.join(dir, "freetype2") - break - dir = os.path.join(dir, "freetype2") - if os.path.isfile(os.path.join(dir, "ft2build.h")): - freetype_version = 21 - break - if os.path.isdir(os.path.join(dir, "freetype")): - freetype_version = 20 - break - if freetype_version: - feature.freetype = "freetype" - feature.freetype_version = freetype_version - if dir: - add_directory(self.compiler.include_dirs, dir, 0) - - if find_include_file(self, "lcms.h"): - if find_library_file(self, "lcms"): - feature.lcms = "lcms" - - if _tkinter and find_include_file(self, "tk.h"): - # the library names may vary somewhat (e.g. tcl84 or tcl8.4) - version = TCL_VERSION[0] + TCL_VERSION[2] - if find_library_file(self, "tcl" + version): - feature.tcl = "tcl" + version - elif find_library_file(self, "tcl" + TCL_VERSION): - feature.tcl = "tcl" + TCL_VERSION - if find_library_file(self, "tk" + version): - feature.tk = "tk" + version - elif find_library_file(self, "tk" + TCL_VERSION): - feature.tk = "tk" + TCL_VERSION - - # - # core library - - files = ["_imaging.c"] - for file in IMAGING: - files.append(file + ".c") - for file in LIBIMAGING: - files.append(os.path.join("libImaging", file + ".c")) - - libs = [] - defs = [] - if feature.jpeg: - libs.append(feature.jpeg) - defs.append(("HAVE_LIBJPEG", None)) - if feature.zlib: - libs.append(feature.zlib) - defs.append(("HAVE_LIBZ", None)) - if sys.platform == "win32": - libs.extend(["kernel32", "user32", "gdi32"]) - if struct.unpack("h", "\0\1")[0] == 1: - defs.append(("WORDS_BIGENDIAN", None)) - - exts = [(Extension( - "_imaging", files, libraries=libs, define_macros=defs - ))] - - # - # additional libraries - - if feature.freetype: - defs = [] - if feature.freetype_version == 20: - defs.append(("USE_FREETYPE_2_0", None)) - exts.append(Extension( - "_imagingft", ["_imagingft.c"], libraries=["freetype"], - define_macros=defs - )) - - if os.path.isfile("_imagingtiff.c") and feature.tiff: - exts.append(Extension( - "_imagingtiff", ["_imagingtiff.c"], libraries=["tiff"] - )) - - if os.path.isfile("_imagingcms.c") and feature.lcms: - extra = [] - if sys.platform == "win32": - extra.extend(["user32", "gdi32"]) - exts.append(Extension( - "_imagingcms", ["_imagingcms.c"], libraries=["lcms"] + extra - )) - - if sys.platform == "darwin": - # locate Tcl/Tk frameworks - frameworks = [] - framework_roots = [ - "/Library/Frameworks", - "/System/Library/Frameworks" - ] - for root in framework_roots: - if (os.path.exists(os.path.join(root, "Tcl.framework")) and - os.path.exists(os.path.join(root, "Tk.framework"))): - print "--- using frameworks at", root - frameworks = ["-framework", "Tcl", "-framework", "Tk"] - dir = os.path.join(root, "Tcl.framework", "Headers") - add_directory(self.compiler.include_dirs, dir, 0) - dir = os.path.join(root, "Tk.framework", "Headers") - add_directory(self.compiler.include_dirs, dir, 1) - break - if frameworks: - exts.append(Extension( - "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], - extra_compile_args=frameworks, extra_link_args=frameworks - )) - feature.tcl = feature.tk = 1 # mark as present - elif feature.tcl and feature.tk: - exts.append(Extension( - "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], - libraries=[feature.tcl, feature.tk] - )) - - if os.path.isfile("_imagingmath.c"): - exts.append(Extension("_imagingmath", ["_imagingmath.c"])) - - self.extensions[:] = exts - - build_ext.build_extensions(self) - - # - # sanity and security checks - - unsafe_zlib = None - - if feature.zlib: - unsafe_zlib = self.check_zlib_version(self.compiler.include_dirs) - - self.summary_report(feature, unsafe_zlib) - - def summary_report(self, feature, unsafe_zlib): - - print "-" * 68 - print "PIL", VERSION, "SETUP SUMMARY" - print "-" * 68 - print "version ", VERSION - v = string.split(sys.version, "[") - print "platform ", sys.platform, string.strip(v[0]) - for v in v[1:]: - print " ", string.strip("[" + v) - print "-" * 68 - - options = [ - (feature.tcl and feature.tk, "TKINTER"), - (feature.jpeg, "JPEG"), - (feature.zlib, "ZLIB (PNG/ZIP)"), - # (feature.tiff, "experimental TIFF G3/G4 read"), - (feature.freetype, "FREETYPE2"), - (feature.lcms, "LITTLECMS"), - ] - - all = 1 - for option in options: - if option[0]: - print "---", option[1], "support available" - else: - print "***", option[1], "support not available", - if option[1] == "TKINTER" and _tkinter: - version = _tkinter.TCL_VERSION - print "(Tcl/Tk %s libraries needed)" % version, - print - all = 0 - - if feature.zlib and unsafe_zlib: - print - print "*** Warning: zlib", unsafe_zlib, - print "may contain a security vulnerability." - print "*** Consider upgrading to zlib 1.2.3 or newer." - print "*** See: http://www.kb.cert.org/vuls/id/238678" - print " http://www.kb.cert.org/vuls/id/680620" - print " http://www.gzip.org/zlib/advisory-2002-03-11.txt" - print - - print "-" * 68 - - if not all: - print "To add a missing option, make sure you have the required" - print "library, and set the corresponding ROOT variable in the" - print "setup.py script." - print - - print "To check the build, run the selftest.py script." - - def check_zlib_version(self, include_dirs): - # look for unsafe versions of zlib - for dir in include_dirs: - zlibfile = os.path.join(dir, "zlib.h") - if os.path.isfile(zlibfile): - break - else: - return - for line in open(zlibfile).readlines(): - m = re.match('#define\s+ZLIB_VERSION\s+"([^"]*)"', line) - if not m: - continue - if m.group(1) < "1.2.3": - return m.group(1) - -# -# build! - -if __name__ == "__main__": - - try: - # add necessary to distutils (for backwards compatibility) - from distutils.dist import DistributionMetadata - DistributionMetadata.classifiers = None - DistributionMetadata.download_url = None - DistributionMetadata.platforms = None - except: - pass - - setup( - author=AUTHOR[0], author_email=AUTHOR[1], - classifiers=[ - "Development Status :: 6 - Mature", - "Topic :: Multimedia :: Graphics", - "Topic :: Multimedia :: Graphics :: Capture :: Digital Camera", - "Topic :: Multimedia :: Graphics :: Capture :: Scanners", - "Topic :: Multimedia :: Graphics :: Capture :: Screen Capture", - "Topic :: Multimedia :: Graphics :: Graphics Conversion", - "Topic :: Multimedia :: Graphics :: Viewers", - ], - cmdclass = {"build_ext": pil_build_ext}, - description=DESCRIPTION, - download_url=DOWNLOAD_URL % (NAME, VERSION), - ext_modules = [Extension("_imaging", ["_imaging.c"])], # dummy - extra_path = "PIL", - license="Python (MIT style)", - long_description=DESCRIPTION, - name=NAME, - package_dir={"": "PIL"}, - packages=[""], - platforms="Python 1.5.2 and later.", - scripts = glob.glob("Scripts/pil*.py"), - url=HOMEPAGE, - version=VERSION, - ) diff --git a/tools/HitboxExpander/third_party/zlib.zip b/tools/HitboxExpander/third_party/zlib.zip new file mode 100755 index 0000000000000000000000000000000000000000..af4a2fd4c5c572708cd852aec5e6b1bcef08169a GIT binary patch literal 141415 zcmV)PK()V6O9KQH00ICA07tfiL$6ltL)8NS0Cfid015yA08&LkL`_95ba-@)Ro_qB zNDzKU;(r+N0+sNFBtU6SNDZ{0ASk`2<*IwB*7i7F*dOlhI&S#uZ^m{~D817;d05*s z-^_gT&3Jq3uTsX{03~|d-a7qxZEpd5E)iT&s7y%>e_zkehT`4z_4XG3=C1bH#)YjP zwMt=$J}75lC`RIhpUS0FTBaI7Mkr&fCWArKG-C0nD&hQMz;1&cv%*YKI2jp2+8lg) zl=^vYzg`??jtG(Rm09LYCGASt1yHu%E~bBq_#<`^z67~gWBsewm-+Pa{ZF5>TIn2= zE!@*2*!$es=v7)r%pqODm9+3d-A5yB5bVhorcxUHgl_=U@yT)093Liz;xyw?vdA*n zyF5RC1&88DjM?g1rC$0~@6j5PL+j~l89?@7N3RcGCqwq=lBHrO zi9GyQ*o6M?rt_OSvTn;5$Y98DU}VfnG5;T~vkw=L%mgI2;|&P$q-8|Hp;IBl$+5`# zQse_dQb42Zcr>`7yMm|@4EXWW`-|Dv(-*kM|__UvkU zy0Z!ApsT>`v~e#K=|`{jq43VY-F!`sRu*CJZaz9VI0EOPR0|q{S3PB{<;2LWB&*5S zlVeD%G&o_g4n?jtBsmuCt)K%Wu8xyOdM@Y*xBlE!D^G|Ktcxo9jea|MtgZG)0>d|N zj*`*A@Bpq*+C;m$f=ikny=rISM*0Vs=A@=hTc1l6Ah;qn(j(Bh@@}be(&DZRi3+>> zM0G4FGjd-6{-`{Lz@;ivX@xn1kgu0Et^~l$Qm%kYw2>UC#C9-hLhu1nq!mHR(yE>1 zf>0PVmxcx^w1e(d;OS{;X4g9K_MqdFH2bmmh~B8sE(&_N;0!43=or&cTj<2z&s;Y# ztJ+sC;64K>o9Q~|u-sMj?WU3ymDeqiu-{V0$T}ib9=o-IxeER0(lbUXJR++k)agBD zkzKfm!fEXq4nX9QN7kZFx-y2MTana4Wna_^rVefUnLH}jBR2rK)IVV5>dpI3agb@L zm^s>${I>BfcFU>5r@}TY!mMa*UXav7Q8tq0kk?sc257%MSl4LG7lzwQ?-{tafZSy@ zKkxQ#<7#Sjy2c_lJ*{QgE;-T?MdO-0ey+eA5iX;Lms?L&< z4XK#SB;{OZW!Ii3MD;)aua?}2Rn^LHxS*pQJB@5dXL5}354a-C)sM0wbW<3 zQ3IviOZ3GE_Se%X1h{95x9e{iY%U|&;;q!Ru}Wkdmo^gSHG}^HP)h>@6aWGM2mnX6 zgF|4lpg|)9002)5000R90031}K}SU{ba-^dR^LzKI1qkE;(r+Rt#&&)c+J%Rcu6=0|&&)U9_syjHdlP9a5rWGlJl#w# zPU6d(oBh2nTR!`H0EsHs-8rxdY|dc*IDfdBg3`UK(-EXxGisGy$NPKk`^{`rffcto zOgYucsLaB5ZYm-mIXc>2|I02=a1uk^h6iA(vJ{-9kTa4p4H*~Az~CRj7jZrSB2&De zN@jTFPPBXz5~(o0I;cJy=)5&+NXb`UhN8T%^7%FG{6tS5&KF6He$cWm&%@ zrnX867+!*Vd=ldg7^VS7eIABlE0oiY*#TTc0ROr6!r_X6HXAGy)14D&gL!kq$D zTCU_rrbyPy6_+2*o5RsXa|2RYNSWbFi8LXamC`REYseS_JRp`PJ%Cvo%L>Se0d5Vb zl?0b+;l)syr!oRb3e1;0UO%})zXN}vv~bS*)VBElm&8ufRlYeNKD~4DJ8$*ehR2<+ zhXjTchM9}|%jvsN+8e&L;C8boO1?5I_t`0%O~=@jE{KhqbREKEHXe`Mi8mOj%CeCv zI&jS>_K|LxfZo%=2i!I*u_@Z8_pG-W+jQHOBfzb)%y{HO@6SS|m6P4(!~)R_^U4=w z$XjePVNn?i3x>@WCGwUAB!L_PXT!zXG9UscqF~a(L6|=j?y$$yf>L}h1~H2@Vq3=a z?bG_cTKt3!`W)s-=DI?7CXf8Df~@`E4}uSBCUMk=pQ?=(>T$Yfe&{~=!oOrClm0L^ z;~5Pj%j7H9%J&+ztA~^bz0{mo=3)!-!o0`Y&5Fz5badQ_9Br!XngD}EsE4vH#9b`qAF!@U@Dpe5_LO!zJ5w()4Tht z`8*1jle@zJ#Wjy`m?R7I_XYxIl;H+eO#Q>NrcS9_~qmky$+^il;a;(&4{TD`Y%vR0|XQR z0ssgAN4A4QvWwRFtmyy%0Hgr`2><{9dTeQ8F)n0mZ0!9He3RALI1cAd0!<-s2MJiU zO5N&41s$0<$-r6KrXUb3LXas{#$4w%+?3`96athxfu0?L-9*Q;sl$!!VH?jgd_-Ch zHEFx1RVMv6D1U^C6%xXv{IUPQ=Dn`#+)2{{ZqN7k`@Qey^S&>e&Hd-x=UnGH*Z*_Q zb)1iu=?prZ&Itd-Vme)gPW;Q({p){g;lJTy_72zWO8xuo71FG~-#+iD9~Eajv-D>_ zT>8DIGrs@5pZ@e`?u^Ah$XKfUG~-7<&B%LbZpPC;d-4Z&4;wZlQ>&xEq0`NhhUm7Q zD4P?nw^cX%t3xIIXx%p@oo*}qHyq%x!V3$20Qb7^V!GA~xFrpK`j??S9HOUw!2|If z{;`N6^b?SDp~3K5FX^`8FI46=T%(f~y{>EUmmr~C(xqMFabAO@yYwZW-R=It3OD@j znji^)u&>7cWfticExP;3@43IH;hOpm-P3(b>Q^pXHz9EMQcHeS{;xmCl48UDa;(-9HlLwraSfavQG!U+%;6@OnHA zu-1>w*C^*+Qml;{;g-t1e69W#Fa17(WYF~y!j@~5`@xc*K|vZr7)yfhm8;6-=>C87 zpNoAuS3PSD88eZ>!e5M+bgYUQGsAP6bvobC-#_(EWbyBxgg+ICGq)*3_?{3@tF4a} zRuz@O_w%6w3wN1)jmio>O1Cqz*cR|LuKvDyM&h@YHbfRPdKk6%-Cxr|Lt&^Q)})>_ zhVn9TG<5K5#M)LoKJJ!|#_l!n)zfd^`rUiKao1;!whPXLqzkN*c8=<}ct8!0${YmZ7JMf6rsGk|_7njR?Fw}k#ZesQJi_6Zl^vrPKI1pol zurwiZ&{K)4XS6F@pnb!jCGi1FH2OB)MMlM9F$C4p8d(f@FyRk&%iydU1E6mx(MolS* zES7y65u-#iG3eZ#;Uz$J+|h;&&;X@pG8n7yKThaya9Bv~HMno}b+~V0UA*uTSGu_8 zN@x()1#rgL*}^LLnz=KL@h|@ZU$PK9#LttS=YA23(QuQ-lk>Ww|Aq7!jy3_7@?$u_ z>(}TAnB>o92|!?&LbC5?(4^Wc$-W}ExCYc?PSE$*GTbJ;4Uf9+o4;HkxFRE=O8>Hf z&HJxtP($_vCe6E=1vJXl=Mw=%XwWuBoF!W3ydtb+UBK~8l(^GA?18Y_j&l3wfOhQU^?x6c5TX9Ij6hxWblmqqegs{)fD{1l6ryx z%RNz8RpPPybrewA`V6SQu2_av!X-n~Ndr{6>udg%lDHE6#^?RSv& zJ6QWo(SA+ZZ>sh?MEf18{hGDkVcPF-?N?R<7QB=`0AVfr+%WbP*pHGLgs$^ry6Njr zL+2++or`y9!#9u(JQkhu06P&pZAm?#^;q6L*l#uoH2F&qNpfy2bg|?zJ$aj+4AQLJM*8s!Wsb zs9gFA6nGDZfVFg1;du$XBPjy!SwBclFRtoZ@tlNEs5eI@nG3tapzxmo31xj(sME< z>Ezt{k{j-d18b~VhBw^>6GErhpM44&~7u>7qdzrPMCIfv2 zx)B;C^@^WQ%nTpB4J2xp1f{HayTpbzN5y48vYgivt>KPpmVz(l!V6XveJeWbYI*v9 z1^$7+BWyIp(B=yh|BVjZ+`j{VnQ)yB{BnZmfMz)K=@+n{3R!(HZ1&I655tS$exnpT zbCXnGMg4nZ{@jwYW)$6Z%y$+zjJ*`bzy5akD{m@6+s}6it~1n%f9^%$E=(amK4aDr zN3i#!2DQ?-U2^O1`DQ~{xyUBIt%f8umZ2OivXOo^ zzD-4~>_~Jl+z%+dM=RX|g^AzeRa>FzYm|@I-qPVi=q2|({3Yy?uhE^wMdyy#Izn`X z)eQviEquZ0+lDSizwYI>SRBd`0HxtNARg^&lB$Q|@h0E@Up6WG&}!s990r?DyvM&K z)i_L~8_MGLVMR7_1Sn}u9@+vlqG(hUnteyz4{!zTg^&ZCLD0^f_3k@6stj&B$kFKF zGQ1oo?;fgFNw%Q8yDk_u-DC7)ogieDk2~wt>NILlYmd25*N8Bv#Eu8UY4=R@Va@kEYrJRTJK0ac)x?*wp9JvR zS*N_ax#YAcXW>)c!SC*%+t1SOnerBW_MGXSDKF7yQ+)JU7wg5(PQ^bH&56&>rC}S? zni-p+)_nh))-2a-4L%SJQhBXOHJXv!p!NT(!L$Jl_OLE_cSjt17H)m1U-zt{wK?f( zFykKUTlA$>e0dPq{4*GV9zeQ)mKzE6^6rE87^(GpjG`^$Tlj@~d5pXvTWD8acuYN$ z!5Y+)W7LmZ{i}v%h(R|jdjj6t>eMqv<~kNUqgN{>=4$2E7u29+t7J{kXcQW~fQ^1K zu+g{rHTo(xI@#H(1i9;&f65E$Ndq(jrme3|_HF>v7Bru&5%^o)ZN3rO89?->ixQA7#XBYAn<9UJG|3VKM?8XNe z2-+^@+0PC!XDu&YVsO+lrHvO)$?6@awAmePvicBm#7O?U(HE1wEqIeV$yR6YWsX*! z>z3Dz!ADA~0ep@bMyZDDnJa+0J+9DBq)Wh20iKi2v(v~${)!%jKe+Gr!G-i~>3I`W z#9!Ps8agy(5?kr^8*jw->t923&s@TbCuKD-XDd^V$-9li`OF2pcpiiHoGl!mHgn|| z%bhOo&KoXqrA^-LY+;^y=GxVC%GUl>M>D*O8dXQD#9g~UW=_Wf+;a?o=5w=~TIJod z?$dv@c%rQq%KFVZ!^}Lat=wM3rYx1qU9ClIg!=R@i92^OjzAim^=h|%`G0XweMxK( zn(7+@2&sW*8!;g8Cf?+ZkL&;(m!bXR>yUj*pqwp6&UG1Jkh}JCK)W&1Z?&*_!Ws(i zx&=^`yM)i3m9_Gjtd$G1y0DkIOZ>(g47qtsX=S}spBmQ7H{L*40am;%@`6Sr^{Z zqkqzaf93oh1XgPIPrNVTKpHc{v703wdlRcrs}~CCx(UnMYl}b2s>!M>siC`r^0W(v z+(}>onv%Z`!q-y2uZf1x@XDEh1r}UDJ`S*)36VPBkmR@U6bc;bP88UV1-e;h*7?X{ zxD@uzSP^XiTLg@fXVTHS*t`S!yV`1BX_50+T6{5OSR#BtL4)}go@=I-aDXf&zE$}f&o{ArOTP-r`r;j=y_WDo6JO~r)2L?s20h|?36cZS z^mM**A`r1f-*oEsL$-Eaoc-0@c|eL%07f51(pOi+%&Uu-1zgYE@$6vMhj$G|l-9`W zOR%QgMS^RPA^BEBW!S*q+y)m#}jBiU*;VoBRAwpRMeNn@bJt%JuWF4CPA_fbg zRuBx#)dp-VZ%_afH3l#t^#dofgTQg>XA;ky&WaZ?XEmQW5yUQ^3&g#Rc>>7MGbb@u zGoQPF74BrtdOmX=1B!N4qkJmd2~rcd7gz^)ekTLe71k32kJR(R7G&Vs+rd4X2F%Oy zr-N7k7JeMqmpgZ=Pj8cW;Wpn<_T5FwTWDZ@03wS+n^Tu?SF5j4_Wl5wVD3U&T~@uX zam65jL~6h|2b-0N!9jC88uK)g%{|DdtJ7KTLN+BcJmb&s=n<=ZK2Xwp3smOAkpYRY z!h-CTf;LY;tzII`92{_t;{yJng{y@6kZ~#w8;(z@6*}1n7ARo+#mzXE!Cyp-Gb)Kl zKO@=e0qN>FN#Gk`0er(3AS@zxqnR~#5_hy2a+id17m|Kvl<>IJT`T}B9g9OZgQT^4QuNqbN_JO1NUqa4LN0t5(4k+NC#`MctkhB)= zy}E@P2DG4zwZQi$r3eU;B(zV+)0%nmeex_G~`|+ z?i!c-WDzsY*W_PVDm9NLQBnuehfxuE_b*ToBFhO8ct1+O3)so>07}VgNx&6Q6?3!z zPJs8a>eVxPQrK?fM|c^K>>vwsmn^jdP4Jb#cy37#cxpP$XXe>@zY11N@pS*hXZg%* zrtIRLUA%arT>ilAH6XU0<;t!iHW*ml*9dhf|HC~kSfS@wDEBGy#x=|VTl=2=Hzn7b z|9KS!mi=KMjejWh(YSAzCbaSdFMfvg8XANl;sm)9N_^s}z6J?nSZ z7xW9SCFm35^jrB$#_8IEKJo4MZlnGErPW#Qv$<|tBb&J-D@gdBJ4vb}Q+yUV4~fw{_PeX_y=Ut{u6tqt*R{rx z^qt{|q}J;p>FWt3#k=RbJtl>u zfvGSK@3Np{>M{F{Dsn$BvZ%}#vlc1yDNVPvb> zZYt@kQ+BDIYHb#i=Z_EN)4C*kuh7%aBJo2ihZ$@EM8@p2$WM{MRvYh>eNVy_5ho4*s!Su# zoxohXFf>r{F@_&@vD^uf%|v0d`0Tu*P~OyDoz9=9>&0Tpv-;-D@ZVD*I_ZS=>wZcYH0nq9?B(}WG~`c7`eQ_D3@msX5<;g4cZsW$oyZG z@CT+7?4R$T5ef8OH6lXbUa!x;It8?y5=*8x?lOV&)C2k-P6vc{s?VqCmGj(TW;yA$ zK=OP|qWoM8L>J<+uOW~1`3v;PSD@Y-287svjQCQdj?;X;W#?tJQg445EzPBe_{-S9dzSd*Ue+P|WqI~x*4@;~ z8o=WJs>9;9-pHs_Q)^M``ijwFuvfugLn)6X>$0-f7Kr+<1K&XWAZFHWr1e1-wr(w5 zSlPNVx=3R=s}N~o{R!DqCJfm-P5z}RtUVYu_!sI2`Ewo!h6nrV{6+(Fw9DR4@Y@H| zQBvdNE1xPt=x>XtjQbY2yD89FueJ_WpPL}NR~a1bYPCsNlT*`~<18;cTX6%eNppV$ z*Bs-V?!i3Qss^mwbCy4m4sWdNki2^&Sm0`vD>Ul&>0{{_>nEexNtRWZ~E`1n0bCcgX+HceoXzFuIP#d>iQ3FFF zxwMEv16vIYF0ASs{{?;e(SsxaQsElouf_&}fLMJU1?h{e*w5#p-Q@je3R*5`p&m}b z$fS|y8|9ZAO|tJk84V_ysX1kU%lTu~t~=RnZ1q^s^0M~~`IQdY+emX456a#_M!a}T z_TFN`iyz9~-(lsmt>`uXflOPYFQ81YH3D?<=1RY{(Qkers{yP8sS%VWJomH?l3&Fa zS+2Ip&NeX75QzE4lAd2<;MMCgpi}Gq9$#Oo1>w9E)R;l`{t}w!>ruX-8UmvA8?$3p z-*ylr{(@ezuOBf88Zn{C`aeiKD=olzG1<2lSL@}E#Tom^f0MFu1E^c*rT0~wlO+h0 z^|ruTPZP)uhK1&*?UVqCn^vJZ1V_yK-Jxh)PT=`gzS;!id?u~bn!@M9z*|aZ=_P!% z+Ej89T?C{8Q|YV}J)dnVohKR8fRW`}!LI#Y7@JS?1y&CtX$5BWYO4+`+{h?w258;4 z97!t%M1T8m9J4`1W$vuF%{ow+A@>g7jKu&){~V4hvBJHl;ro?ftorVXCHf5#a+e4s zoH&iPCYXutHW;!9^=@?bvAu`^$8txO`xDs!o^Mz~?VvwQ6mK zrc8W|dwrH1lkBKvwVfwfEp#=jz99@W9}F8=W$@&ntV+O@S~-Sh8ch@zaUByFk^BXE zHs1V8iCqS+Nkvlt%Tv6RT$q0|IO1K;Zj070I zp0FQsm=qk4f8-8yndhhT9B8c>S)&_=b#?}T%ACjK@)_3nRNFDTvqfHi4AJaqVGZ1K zEc#6$e;>3EXl8q<8GuX&VZm2tK=b&u8j{%R412e{{Z4!fa}Zh@7VEbK zCPb*i+X(1!PlMhdK3e#LeT{x4C4rBNzZigz?|^`rJlo7bT6ixE!Np`yL-apjD8N?& zKpq|sf!PnD_#-?q3 z;h;?eLxwL?APBnmG6fCSCxV7hIn*d`4q~vkQeydT1`UAp#hn57<7DIV^{hP{YemES z7|J-%0KXU{0)?vwk#N)?lQ%3vwE;fO{3Vg^i%b8)5iwTSEbpGoJm9Lp#VwPb0CALu ziICXx zMBb$sI1UX(%EiElA(_7j@C-wu;Wew?05XyWhFlq*-xoZaeXVE-h;JEb{x4cS~%uqT3XR!3jiBLdb?2C8$o^E3RkZ`qj5Nz1(C{5ja|osT747* zoPWBWxapX@;qAc~d7L=`1Q`l3x*(keip+V8&AzTEed4I*E07Y1^mLMVpzF`#?PUt_ zFlsQeB8dk_8w!Wa|Fv-VSf3CM2mJ$t!~Gz7CeJqm-^t!jv8mbVAcL+c9HPhubq!;>vm@`%UZO@N_Oh7hmeinRKZ2w- zdx`8Vr^!oY3$VZLBk0=WZZI5w&ONO_BZX~fgvJv|7C zI4O>n(;---QHyuZzgD~x8awO1ibd-90AeTv_7GDzKS#zZY(w^Fjhw(~lWVEYN!?#E z(z5S`D~Sk}_sVsu_`K^&tN2M@w2!21Auhs+EXV0xT352+$sXX*d!Y8~shUfNgsQpx zC1vWhGJCrcbO=QFAQGVq9toQn?aED)kp#L1y^$?%nn0I>-&k9L3wgkTi`@3FhhEY~ z~nW6?vAYdY%OV^JEu!E=s!5%eX@Gf^kjd92r zxT(n-B60DnH=(5$G~m7+@OnVEUe?q86&Mfo+dAerhBM^PkC$$$>ugXz)~nB3B)?I+ zGpf(0_uZMKp!$5KbW>wzqk0m2@)00$OGgM~KwtR7M(jA=(~anxUfj#&4-ZC;%%6dP4aXAUFZHP zf7mK)b$z^)RX}1OlNTKt=&sH^21PuQW6%1l zP4{((9Ow(`3pe9xjcO$I(H-Q-j6O=SyL_2R4cFxv<>{+c+6|-C z){bK>B9m7|okQ?ati1NW*FQcx{ojknJ)aKV-D&l5%xzXLr!F(o_tArBV_|G87#`yd zC}&iU#Yk_~?EA?EM1`5J#Q+9KNGN3AfGBXUuz?UU=@h5^w^+n|AEV!&95wr26k*dD zdiDY>JuBzrZbEv8rTaIC4FQS&aeCmYmCg&_BRf~7uL-1rhlUFzpT8buCeO& zij9Aj(XyX>VCD*FP5T=Nlh_9pSswd0nj9)n12NR(tOhyBf9i{yDfQO;BO( zSQwbt+)Vg_=j2`carU(zPrBA)v=sehIDWqY*6Gq=@#i^@8oDk!#3>v<44B07} z+yk}N3fcAa3)!vxwoQrnj_&MrH}KpHEu;@Uoym(ceI4$}s;4bh zF__de@MRsew&HfRTc$l6s|TqO%m3(sr_mzpGA;X>pu7#8hi#3~a40u(=dtkO=)O>H zMj2d$aw)za{ev1aDgS^<*3_%rDMe+g>!6X;HMnb3km?@QbIiErP3|}*?*F8An<`R? zQfg6yR*&x6u#CuewV>9-A;{pa7Vc~Y`B5W#r@;H7_aq(5O>a8Qrcc1t%LQo!IZF#= z(-^T8gqh5dkzer6FTv6uiyHx-)xfV8QJ_G&e(c1^8v9n`CwU* zKx7o|1cG3NCZGwR5Fm?4%crqe#T6vOa*W)p0KZO)!hm~+6Tv^c5-))MpeDZJ^GiK_ z^9h!I6pK`fvlRnKv-@9?=F9|X*2!KUhOlr_O7{K~BgMTjw?*wul{ewKBte3|eRr@H zuN+7$ghsJ>SH*}yZaNY}8V!e_iBR?gnSRD&%7;+)#Mm1ADG(25iHGyV!v%x1X7q8Z zZf#OCY+4^_OdCKN)A~qbT7S|AZHQAvXakNmCIVs8^5V2Wtz;+D#IJ}Z*7VWDLuNM3 zBzxDPzFPxyu}WP7bg>NRVrhT6cme5xZ9t-6d*Z}%>5KT)nFJY${p#Fh)@CE(s_#ZI+i;cs z^Br}6iZMYDgi4#3i0^Q>a6L2d93#s$q6v{};yGppZWLG}xfYxj%LQ8_4dB5qb3wdk zu-ptjBa_X{- zZ=kcOv@y^Shc5mBt)8^RaA)_Y1QbhC`{-oqfVWEPmq-y18wnAyo`gofZ#}K71}K3~ zn}qR@HZ1i>HnPoOyj+uquK9=BTCN(J6mJFBmCqQ@=T3quq&ix(G7s0kp1}>lxPyZ~ zG@eh(#)sN#Fm!&5Zy%b)=jQQgd3|5utB3Fv_(%_#(HYgeYkcu7eDR2h=USxtak;eM zhp3$e{l;vdQSimP22lXwL$)Dps7^QN5{A+?WYQ&4`GyHYaqg9s6A}Lki8yi`XBmLP zYCGd}wf~E2?9ai;KnGd{HN@^x=0Xwg|fQHkkOhPsjEuthxa?s%`oF! zBiXTLVbxM!j=ZMR)g|vgpxr-Ko?QSp;`p5pnh#n>avg3@VF_? z<)6sA1F=kBW=Ui*dSKAIc>oE)H!;%|3+KaKBnNGnP`>$%=Rohjp>-4P5#`a>6ZhFj z+tFY2-6L;BOXBz7BA|HrDaLs*e@Q+C10s(n?#I&o?8JRGYV62&`tFfIXr(^c%lT&3 zgA6ej9^8+h$lfkm?$|4P3nh_o!POexcA78?1i3;IILFY>pH|VC86>>U5jD+J$0^D({sBeA!KL`|8L;BQtgQWNV2yB`#9Si zL5mjAfE#%hitaByML46pCGcuM>KB6d0Z~Nlim{;kdBAvti6kd9)`@sY{7Y~oMxDaQ zQjFzKaLAOJiPZYhMBz`FEQKUuGn%s}rs4!)=h zq4cnRVy*Ao}OTdanPw+v{ol()MtFKOx6Gst+}0TR=mE zwXjNDDIM`=%2}Q>sb7A8>j(=a(^rSf&So)5eSX%JiYGx*xsUUlg1t-O>ajvlG+q4XRLB5&6r10k%3^e`s;^zb0 z8__Glq>-X{JP1t3D_1!}1MS;M@oZoIXXat|r>CKNvR-UX1mVpN$m_m7U81%w+NGF@&Ao=r|Ux?T|j58sKdh_)0q?hl7)T|MeJWjdcb5%}#PvFPhSuUKQXVRf%&aYWXNbRQcK zj-d$B+zfQoFbs;uPS-Ig^FvfYjRb=GuMwPR1ZEo!V+HWbyKgA9;HJR2X|`C_`-Yhr z(ZN#4-m`2XtIz5}m&I?i$JGEJ+DUQvkA6Y81{YNA(yck5q{T-oH^Z=U0n44oRxXH4 z#|B5$VlqFnHg+5nf+r^MLb=IGuaHKKd=5CG^_Hw=uI(uJFa8ztc=nSt0k3xTx~HgJ zS7h&AniTv(WE4~{OFaKc_e$vfaz1|nVCg%FAUaUUXLr%k5mu$VN8YzKD7{+#8~KVh zD1G}wz)4oSF3Z0EB!_t-j`x3SL;7d!>&x2L4QM#!KM5$vs$}(@Er$F>Y&6R^+5!NT zvO_Z(<5kD=mrTqYNFL$R%LD;IqHQi(vUl@3N;HIpzKGF2t-MOY)}sSUBaCxmaq_ao zX#F40&%l*mC%|I1VN{njMTa8)OI7y5)@3ufqcy8V_@c+878=@olK!SLT7bRg5Ie#y zb5Dzs1*R~Ls$u>Ds1q1#{sNXiPxhX{5KS2+w4s90pfzaU+C>` z&uaNDaKX0PCAnR=5b_(~x{d^c^l9uYC?h+(q&#kueKBP?FP;dt%>kfTa7Suwf#|b5 zHw{;MKZ$&qy9hqS6@&1h@*!a*TEL6bK+dep6mmrBhz=L>(O|IGFvGI3>_S$h-knT|+dI0c)6oNc{{4J*5IT%GHkF&B-&vJy zZ(lP7te{F;K$>fm=9-uRI(Hv8K*P$%eC9;p(-b}zY5ObCu@8Dh$Bt?QP*??^x7#|R zl_cM70eqB{-!GBRYtjIvcJ1}Kai#yMkUg^RD-J|AZEV#uO(~RPx4c9Ro`FhsGE-3Tkqp!5l z{t0a4IBO!vBHts)3i1d!;?H7({vE|JGljoEyaG0|m;h~!l=Su&j4vL#ns|QJ zDL!?PF39V1Om<_WsuI1BN-&96V8b@eH$AIKmM=8LGft~xgxH_fM-O8)6SuCaOaf79hd4bzwG~W?cILO_QX`5f^!98!q3;CjCh-XXyNdyT~1<*Zn#1u;8vr5#=R|rDQ8)pE@sHj1SL_Lmh?T5kl$>w*ZQrNVv8D)FrDLW zsZ?*Dow>9f+GF)m6+3TLBa77!Vu=9;H8cYZzeq;E`Mybsd0!DFz^T2X0p+1p&q>VF=6;(GW`(V+@ECG6*@T5{lO1h*HBLAg zhmc#}!WM!61qJ-KW(q%4x>HzH)@8Ly!f3Wjyw<{7KgNu)gQdrf(&Hwn5Y!TPwPY2x zvBBuuyMN6KkJ$paRMYzaF1C_igxNx_%GeUQS=VS;)5|b^%xnv z#{l6J8r<1$n10fOR0O?4PP!3mJJe4fW71$vpT z8R2O;Dv2|TN#l9|9&Pk7noVZXf>@(IMiWUH%jb^ex#?*Brvd*b?15YuzDodCU%nvG z@#77NjyE-k8Yim#4fp8zxMlS5b|$OW@|&b3dd^pZay2GzxtJNR=LVVxebU||dq1Kr5$uq15P?~_C@bXN z8@Gg32}?+~o}8c3Ufhz}CHp!^oj(a2S_Ys-e+A@&@V7#Z^ z(TT8GvcW}rbi*(ED42_l{Q?`Smwk*p&nF`%$n#o2b}JBZUtDUj520J}!uVoGiQMqI|C*s z8IcXxuVY{bqU@#(bGg$|M1L+;8%@qlD}IJ4Z7c-C4B})OpE(blSuo!HMk%X4tHy8C zbC(%RzG0z+{w)7f8jXtWG5ztTZi^X**6r(;A-)*1+b@i@pWUP)m54 zur%E(B*h$kiQEXcmEPP1Z)_c8h2A3)2HQHIK`Gb7fbLqL3P6!bGgKXlMWk1UVSff_ z#@3N+c>T{mVW2+~B(S@OzQBBfz9G1!sUy-X>@hHuHKUHt%md%%DHH%W13@If4p54} zG+)PxJMEpTz6MnAHIP?81;r*-Og?r?_&Lo-`g2yN`*v`K4zS+nL6m9(^0uY^9fm)M zChRXUQw($$9Qp8M3jeo)%2d1n*8RQLh==u!_q#Enzr^PE8wRSdWjc)x$bZ1lJdLmN zW71~sdxRU4i4lUi^Vq?x8vFTWw_#$-QoTqMspc+_)LgKr{(v3GofkdCy3`M2rH<2n z$7zwkGT8=1JpUM(AS}swofMkyXD7cVY%pbQZf!dli1*)1kJG>oNu5<_rjGpz){q%IO$9^osBrpvgj{_`7b6 z6x~6-5`=3;P2Qv!ZC6E&K(onaAqi1`#YVM(RI+!m8qZz6!0Ie`x^@+mSH=iB0fLDv zBO^GR)g?U04Ur!ZDPmBq9oK1Syi%N?$d!3uJQr!=NL!yk#CVUrcMZDewyTKotf<_* zJ*!jp-X%T&vDES0-$5+(g3o?6T|WCh(B*FG^M7|ypJBv)9;xls@>$XR`86ia(SxeH zdOva^9&Sv;!;Sssk7!7S!c&^1e~e_*&R&pG2Qf9r@_L*eQDj^~(h|mvDLi*p^zD9R zHLa)5{ZbA_U%Tf1_<@r^!U!LjFCxw_VIe3#wii!v=a7G`JSgbnPIcu1oqL2>de#!= zox-j78k%uhW<~N@4??rWQ@~tZnH~K#n9M7)mGbB>5crM#fd6@S67a7?mS~J|?fI*J z$6h7)!Cswi>wq4triHKo=*bSvosW>1$F7X#E5~A3;Djz=b}g*E#?DaSYIitc)Y@wk zM(t7$y@hIpIh)rWz6IV2|4FRZoSRI&jj|6X!T_+VY4}c{;jfWe9Z17t1?28$L7+Yy z7pRH&##QwDMhMkv{C)8(ituViw&x#-Sn*OQ78xvre*kGfmcNT8fQ!n)Z-1^$Y&}Ad z&5G>nO%bb@`_RP=V za8W51GBt_?s)X;RRyIGK<&3ojLOE7kyufB;vPUO|a%gTmlq06q?c}`n&rd)}!70-i zG4arnYP=Elt; zxTyQ#u_eI?gW#=mA3n*R$Xo#^p$6wM$Nmber=+qSmz}vP;4yRVR4bP-*Df_YRPDN9 z*)7~9mWu%ZYy^AOm;_)f(^v0}EEemlp%_{O(L)-2x|(^;*vXE7ykXfOik}mrqS!`A zkNGdu-a*TTm3RUYZM4~jyXOSJ56nFLhMQ zyK^MD{9%0&bM26K*V~(9^?(5q3uv%q8jk$ZYS|g!>q0~2>#44pjBxRaT zs%NCzd;Hdy<=sQ%@}>GxC)7FvK4`EXk=H**d)<|{xYOcywb2}pIWy)m1B3sVE6v!$ zWwZFh^O#c4T(wa@wD(Du`f*CrIm+_9N>9LiUBkyU;AuK39ipNS>8Yiop!EDoni?wFdk^4ULMBUmwher+b^wh7__d_s=Nw#C4}o85Yf|(=(k};RrRtSsvRHk z8xrfmuUolZ-teSBt6Z`8!E>8Mo|{&AWG1agXEo3Q>sF(~)sM#js!D=5&TRT3))fp7 zQd`GhZnc~zSr2p6L&@NoA?it4tuzMD4KL}w4U4*JS;0bR3w=IM{cZ9FatHxzc;Tt% zp5{>YQ{vzt7G&+rRSlpmzZ0F(lL`345_F+&{Fg6mI>{e;N^;dRrCKgm>eZ-0F5jG* z;fpNBFx*2=si#tknER1uf=|~QCOfN_{zdJ+0lMO;XSK_L`J17%j!Fk4;EtkD-kfK2 zx@8e$oSdhKe)n-#MQG~06y(RLOW4#|YVaBE*u|W$aOX}K2P=2If)Zw=Fzw8MJ<7Hm zU*lt#Bxc`E;ciJMZr=c&zl5He?pB@P5h?Nn?mD>&`LYkiZsdJj%*SfL-0Z<5>a-vK zUi@PRkMsuG5M@Fx%uag~tJPz*(f>qg<7^J)q}Ag?i5~v4kEBC7T=pAXi^UuP?%dCo z8d;77cdX1XGreGUd(L?F{3Q11l;R=ahE$Go1=yVN7@EryzWt5gLuqQpB*q|39Q*lT zlts@PX?cD#UonXYdzJV%`$Pt|88eBb8avBxSjIGJWYv!ojXE~ zYO)xdAOvcev)16;-t>cN?ySc3>CWx9cjKm_VAIpp+yPJP4UQdtBS;Vv@%nU-Albn7 zTZ@=uo4h;7K{f>KAIRzsVqWIj8l882en^rh+_nAoo~APf*A9>-Tmiu~BrZ&Zh=ST1 zq=WY3^7?6l+5h`$W|zG$X)5LTDkDm9#AIYzuPP|l4mNz1u$ND?~- zz1wh(LO+aB*6V?+BTZl6Zm9s7lQ|QGIhjT+S&>qP(4hitJEh21aRZUF8T8DYY}tz% z52pgS5{Nzs`txZRVfzu*Dd!)tUzGDNi;DJV^)lDSc+8~iJwcbQjgqHL^6cl|&Ccq{ zx{P^^p~nBBpo{V*cUk;24PnHSkg&h3QhBvcy!{3j(f}1eMbC`o4^CvyjAuY*K;PV% zhOMC=j4}*3Xd@yEPtsxs>0{_g}*+xnl>QtqCxe&0PW1(-!QkbAPD>^&_7< z_p46_q>v8PP~^{q^ELs*XskpDu!B$%b!bS33No_(%GGsuIJRfFha=BORAw=hfoItw z%#`4g;`Akw4l7(v9;-3Ruw?I4fzLvmA&UF7lNyrxwc29l0GM83&i%| zM4mksQ4QRyVO!9Rz&28gI1dO|Je!szAuA#(KbC!UsHmq;cQ3UcUN#5RU1r=qyoUTm z{V}<)zWD1v{wJ(t5@Id61_rufxtz3p*rd>!UW?r3Ik%B4 zdmrSM6pUM!4bUx02)iA+A0{Do?amn-)%L1l1v-}ZFS?W@vaZn~gR>g?gd=W za|e6hF#k#W{HJ8K5Y5N=v-s?J(9~WrJ6Ydnx-mq75VP{`^Y)8NbE41uAJ~6=H5{jr zeD7Mlex^h8+KCdHKZpQ9^U)WJ)E;?xM%G2>MAJDw`>7%}Z}u~M{vwn$v!4R{G=fKu zK`D#u{XV9PR(nQ(cW6MR1`JfI22<=G03*pNiC?8Udi$5~kE|Yz8+TWURItB3_?(y< z%qir56zkL3)I9gI_NL;wI9Oj1_PPV>|4h_xL1WC3;Lj{y2k_@r{m1QMe>Moy{^99Z z)n1@V){rpJo3omT@uaDFtN{=qgn0pYMfN%4Ot<>Y=A;aE$|K=pJdX;8BQi;=xwSlox#J;Ik>ecR;a)D@U z3-)csQyi%0JgT3<9hlJ)+VQ}*0bCw%h=k$ zsqiSnvEA$3E_-7_k7DTd5}q9r;O2GAtYQxEn&mKB`!Ri{bN@KceuHbj-C6ISc#qp^ z3yA!hW__s{PoA@PK?jv)Lt#D7$6cg(eE!(Tov6!?fMuEWek5PhPD&bDhu@tDHY81( zOw7c!@R~+itvLe)W3@yc`@!nsfSSS`k(NuSq6A~UFJph(^GKIh}L_Wd@zh+uxx1+6qR7LDItWW;_*F|~*x_r{DviG+aQA$-j zgX{B@Z-4;;*2h?H-1Ug8#R*t&g^ow)Y!;<9VSAl8rx_HQ_mi6Ne&SA#V;2xI_&B7e z!R6u3SIGO(vh9S;<7h{1T0%)U`+ziE6t%l{@u^F|P#R3N7jQ=fEe_4gw6a#sM)-PC9KOkB(R zY0?ho23ve_a^7_x#k`>)2Xkilwq0bsXC2h$409*&nPa7Tdo9bI;C_l1j|Y)^e%T=D0-HO2z%*6n zPAQZ-A!!>xQ>(q5<&Is>0GOr|5#Bom=C_h4|R*whLBbrclKS;BG(Sk5fyh+fwhQw!yYy=Jp|C}lGvo3IpIMY3}uKE@{l|B}`X8zIm`ucRBluka?6q-6#05)FyOo+pm z9&eI&{t^NjIjaDe3xJkH9Rld7=6J^u=&1tesRHP!0_c(i&?S99(|W1i zYpkC$Uw8c+UrG5Ca6bk`Yc8<%V2@F4l`$`J?>FSx?f(2OwJSy5K+%|Kw89i4Ch&Ky z^t%FoxfA>w2!GR-uxSNs8saZS)FJRUP2g{uz~3~1zi9%0(**uDB=EN(j=#upTx8rq zkjvf?w4V}H(jz9eJd?sakuo$i1`IeUKL?c6@iZ ze<)FmMBuu^{VFX-OxHGli3xpUxSNhiaId8`f^)|*T8W0E;<%(qG@5@H zkf?ygGZ<{R{{D9Jb^B-e^8U?D^smvqgy&`gc*?)izrN04DOsCqNfYNl(Agbd(#eHa zchVd0g9~(`{It@d65*DJvybSRmz!U3q)U!uYW5!i~9|=#czd|-i}XUbtpFsIOY`n zq5O2r^VIBa1_dkT58A(YackKs@y*?f+`}SxpSa#EBEm-y~%C3;0^TWy@wd9xnTS3>SM)7)!OOhgkl2_YeeJ_Vr%D zH4X8jdn4!2d+JtCQy}~4{W!Sy;AsAXf?7DZLyF4q!8`KxhnF3I5d_~4hSU-dru!bH zgdxq)>R>h}J0uOKsn@a_aVWLXMmtj{$0x+H5g}9HE4!nb9g*`L)%F%J@{kRuAvDea z8G0xd1b)EQ`z9XICGg{D&T>^tu0U3kbTF$RJ2K-75i%{94nn5TeyDgNcH;|i)ZiiL zn;_dyhhN<{bsu(9eTEMDk`ox$sam;7ck)MMu+iY1EHu1b539noYiA9Qd|V z^8g)cu8iq5Cr=$Oug}0S+Jm|h5Hiw&c&GrQ{s%849Q{oq7|Q4LgMI2i*t7mmV9&k^ zc0hedk7+{Ky4qX%W*Q4nd`(}Vg&0NP5KozQ?Ek7`-?c()yD)wjVh(TdT!ikIL|SqB zxiJ}5Q5}Gb;%Og%Mb%j-!nT5{V?FT-YnOv)_Ob)cMyL`a zfu+|2)8N==4;3#&z@nFl(gj8zl;biqWQwB|9Ljwtqc+}N-xQ`Z?y3MU;lZAfz8j@D_`y6%o`|FAtJ8_%&rab(XNdNklw2 z4^W$+<6Zq}u!M-FK0de@Yd!!&QOlegi|62Y4(}lvq_KTzXfg$Qb`7M!4e`p7D6lp` zfg9O@wVryNNOJ(gSXpv7HO zZArY^=}Fc0qs2HOqUzW;&a;t~3c?e#m=!{4AZW4NQH$NASrNrT#97}_nE`qOY#*Z1 zVI$*I3KSZWMj?65zpTkC6NdEW*AJe5|*WYxfjlu zbKk8#X92uVKtbuExtA=;vWkilROAb)CTuHEKjuuJ>;3qRk_B{9auQ7n?%W?dX+rBG zlIAy?lB^HEQ6h7sd2&IT?AtH`wRg3qpO|NdEk;V}mbj9_>g(3d zetrG9>C5{HgR$Q}Jze%nXji%_z@OdnLL%n!bIN!-Y&nVk{6x(|!Cu8DcU`mcVe!hH z`_*&9X&P!wVs!!ZT3DoFk%7NJLOeXZe>j`-WH3Ag{nLQ4#8Xc`>(qtvhBcVLzvni2 z!?NKt=Ao(L&WiHPS(dcIz(V3|R^JMP z*KbV7tiKQF^bPUan;FSqp1p`U)*5o2#DQ^a#8=r*apy*mSN2+2b@qsvEeEZHnT{)A z-X+;^3jCIc#A?ZRsK33Q7BW z(M2M#OWqxTadGTh{x{ZDiuM^i6t(pNLeCeeU9!C4cP0wcHk|=sGS0IPhGF(IDB2~K z{}gMd&@(Z>Z2Qoi_AMAf z#FVfKLwW<9e8OF0UQeYF z?Q2Ow*P)}vD0_#{`6BZ2Z(&0%7yAsYIKRDPynf@X2OS(V(6a>)qKj5)^ma`9UvG=u zp)=x6Nn!Y+-oq*F$m<5tF3FEY7yI>h#+NmDfPAXvDVW?;_Pq(ZtrO~Q#c*KLP@zZX zWPtTJRLDAX{`6P^G_?C3&|mm*JSkWyE-}GUrH)UvxH_gb!~H?4W0_xM%lD6#O`F72DeOpZPRz#*~U(5keEwcAFdcid} z!(&?=E35@U!aTb$zEQZ3PCT#$5(PK16)~u{{n7NedI5+S;p; z2Y?4-FjfO^WqW_{Fkbp4@TDiimvI$*F7OYp1>cJZpF_ZhYrp!zr)4kGp?;u)w*+3l zpg3Dar0rb1Fsmo7MV5Oa)0^Nz=KHRTkgK1q(Z@e3kn=Xq!9^i#Lku)!0H^2BS77Ixj)!k`^ za*?lKUfu9oTV141AmGaa6VEM;2PPtmp|sjP5;*r9j%bhwc#yZR<`+m~Jh!h&Ii8Vz9jJ9cqLt-)1m2N>WJWurS2 zC>uV3PYY|y#Qbi$zBFB;sbJ-TMyWXAST6x!6!`G{<}9vWB2F*Uur+6by8s&PpW!SVg=(tXi8slXx{u4*NT)yZa6F0c6x@5 zjx8;~EaOv27)SED>C|`%!tm@gjj(|nhG=z(2RUhxRzY#e^yWW%osa*%e89)KBK$!e zrp;AgtAK!;ZN$|fT_a@g?eWzi^|(6Z09aDR_n~arVHjvJ4W^0a{t|k!bN|v$G*jpR zuA&0NC*<(beBT-MTna`<*QkM^!80i^j8ctV*~s2ng#oj5PYK3Y>vUT0YS(=eOhXiPHG;2`?_6nBJ>8c1iH{I7ca?EY%HRpkE229PWqFGKP|% z)hwws+=o>{eYhk5O1nxyQuxjJqKiOZ))Jtp$qrmc;q+#KYv|l%_q%D{xm0w}ZA0P( zUIxdu+_m4I_v|y`Yj6Zxm}I4WpOaoSu|T`8ox zK91mocXKF(R@^m3h-%2e&z`0G1r*B`OZc)2)|TO&Si+|x=ij$2(k~LLo-?4uANlba z94*KGFEdQ0kzw*53bgl#g-uI~+}R-jq?z$ne`03*!AM_a#sQVlg{9PSiZ0S2x)#-TaBY_Obyfy_EI9#vzGoS>=x*X+fWpQnU)4- z)azjZ=f7o;z3xuvrm1O>ZJ&!3VtoPJkp5=uyECkFWCr-g)2 zD$slfGI$Bwi~KN*a_}ZBQF=OQV7;3X1N%(!^P;}z3r=hGlN_6InqtNX9fk~ow0u(_ zaoN~*jzfIVizFmoE`;4tAS9a zm&<3({wZ^MBd=4;q#|yRiY~l#iXI9>^`X9Cfag?Fm%rB6()Nf`U*U^2j%sDBXbc%u~8Jcq3_e!C)Yk- z;@?~U!*eE5Qi#69(hcyY|Ir6Y3xnP&y4HEJmcAtyjaTiT6z5l*@pbTN;}zNf@BWBC zGMR}O$^tP<7>$6q;&Wc1WE(M)qE$qa&xhE0!iq z3K=M^UR-;%+UnF;3d^0uR!))Euf{0yIY4!5@SMT#Z1=nGKVOOofj}+V&nuVw%OyM@ ztPaZ;wyLL7;451!dMo%F6^OR1TD8jnp4!U+HH7)8$J;xL$I81G-rufv>v8IIQk8p{ z_o%zELL}^swm{u#w*fwg{+$#O+<{bMzh8_O1m+#2hb zKls|`Gur~{w}&b1c%sY{U7@@=P?enDUy}$xjkK=gX0gU&z~TzaXnJ`AGryVAe(c$P#+4dXDM*-d|`d;M^JfApsajHJ~H{ zFCo>w_&KHGw;kn4m%VY8#3Q+(*xI4?a8 zZcoM6i_+F$I;h)e2|1cYmiHF%b4(obp=G7h($a?zxI6=wKM|K< zxLhqRPr>Dr;<61cUl*4r;c|nxY=z4Tad{jrUlW(d;L1NcRS%LGLwoVFF0S~Kf8s52d0~sV zKfdBW;O2;b;n>mnvKyr%SmM{Z+Va)oyo{en`4snX`I?M08G5iNYeikPuj zE??-{rB;C#kG}yV-Dd9EP9~Y``#X9dp7am}5oo^a9rSJ3J4?vPw{pi0yBPO;`r)bI z<>7GKE9Klu=G@4FO+WDRLN9ZyMW@GOlGv+gUC5h#m`Jw7UsFONwN&x^$K z0*s4q2nYbUV=Z%Svo(e&*dcPGyuvOs#};jQewkc;4|q@8?sRUgal8n|CF6K;k>^J4C*SPVCFE_Hr^@9Mb4#5sa_2VkbSMq(IOkU8DsB1%>f6FvI$M}y zXVYn1XYbj}y4aztmf**F=G+diw>F*Q&dq+a%sm^k4*Sh7uoLp`!WWVLOK*~QyLJ?@ zXZ59XB!gq8!MWXUodlBWRJ<+jDpey=(wOLdN5d)126qkW4G7)ttRf- zCYR@Vn$@sWurxKzdnR8GqBs5LIOv#usN&N7g#-!d$#aG zz{^h7r1D3r!Lq!yOwLbq5BbOAk01s#hJa z=y~BQk(_0Kk@t`bf&WOhWK~7}i203x0xM9#2$B}L?C3J&L(0hh5AaxgNF8h8 ziqV^jcYhUG45f(j>2F1^c(R0^;9ptG(;qcj08v(H?wUl=S#+d|cgw2`)f& zK+lc80(ncsLQ=N00E8~EjFo%R{6;@znKdB&r+~?`u?GP~)T2ER`Bma}7zI0e5-`Z# zU&nJlMIK3%qM*s*K9FQD=Dvxxh__^J-=^(yT)uaf|Si`iLA#Jj2n9yqdVBQ&u*? zttj``Zjtpw=y&uswiJNn>fh50-$`}Mb(YVoFxwBa!gf3_^MyatMA%v8Y4%TinJKN& z>6*Q_xpX1U_!XYTeS_ucFBY-FBVa{?PCrs)|IX5%x!2%kET!3Re!%W*XY+QN<&Bu^ zxg>-wL4ELa^&Y5Z5me)U795SU{1vK`DNx~*U$Me41F7#h0&k#!-xk>mk1T!Foezy* zTi6hHg`st5uJ{)?1?@V<0Cu%HQ=~5`JSOknXjuTgo3t?vf8-56LZ)mM^9B3p6}$ZH zS0>QQeCWrtgHT_Da_G5^`QIZ*ld9~WzemfbyZ{^+S2dV0JjcYJG4n|wwZN(!4W`bs z;<@W|c+;k=!Dtk1k5OECPmCJb!94ZRJJEjU_)(45fUxNN&q>V75i=}E6C&(weC-}p zq)u6me;6Bx%RNjmi}+egC?*LX)# z6CgKJ^jYc-T+&8utKHI?3=mYdfUQyOl^8u-vj;q__+GsW(ZA3(#(M79&OOy^nvor7 zi01=>u5^R@jrrHrbCPn76Bf8K`<<j^Ky zNpBTz_>1#s!CpP{zBmtGZhUb8lFN)ATJ zTOgC;db7>c=~Bl&T&Bh9(Hjg%w4lqmZ_@j?0!z-RWId(cd*~BqEeGoXloLT)#GcUu zcyA&^;VKNr62!Qa`-My#MjB?^{D<2rtNjHrCg7$H@l>{1MX32S6JKToVEGCYH{qnl zGe(|mVV(-++{KigG{aUKQl|`!Q%`o{Dlc(0J#jTFaaEAGnwPj*pj`o}l9(*;@qNCoEqB;T+chuWmfWN8wRnv-8Z!Y#ovb!om4$NSxTVv*)o#R{;9GKiw z4TENIRCCWR(A4r@DZG*5MloFcsc0Ce> zW1oM|uRv=0-@uhJ+!;{MNWheRnuorM! zyPf9QJ@r|gtXD3#%YW^Z-W0u5>XFKzaR4g-6a>DIr`|n;^$4h=TjX-02MLTDu#^qz zcj7lKaFZRsIRZC1@tb3ClNY}^4mbJnn^w4)9=|yWH#6clZE!Oyesc&Z%3+@L%64<~6m{+a`RAs^VVv;Di9M?gC zjpAx%wQ8%B+R_k#p8L~v%DIMU5lb%zxiMMUzPd)OUZ5qV+8!Olyl<0e^Pp&xlSG@4 zo=Nfy1S!a~I<-d<5_Cb1Xr5r3|4pKPrJB`f^v?=+`S+0= zj@}+}>=TXxkn296OYYhwt;2TJka4o7+U?*sVj=@FH1pQ$ufq@ETvYu0J=0lh3(Pr6_xSAcCc-?m|5Z3rcc;mzQCH=4RWoBm15CS^B8$|=^oTA zD@>(e535yrP~&WYm2bfs_uzzP*5Rg@`kBPKwU7L>Zf7h`+0fOFKDy> zyfQO$wX=hAc^N|0bc#>6re5IB07~dVsdc!#yNposjHz_qa7hj7IeakPO2`;T4K($z zgIalBwvTXfqlOb0gm=Nl+)D`QvA-|-(+P~SeYp6|)!uXx8-%ZS;@3q?IScK8VmteP zwPD=qvgsF?=O=0a#*)jAvJ*|GQ+r`#*?FzGQuB@R@rE{Ljh56(J=M+%tfIcG2KCJF zrpqu$MQjTV8$HIwHM21h9}bG`C>V6_qQSc7=M>h%F@mni{_pnorP9^nxjjSV7wi(@ zr4leegd#>M>$3f@ylFCFXG;LFbG+%4Tuw9w)QhBgp2kHZ)!ULmzl}&$X}^k8d$F?` zosMZ&yN7ARvgr#%%^8DS-UHZSmzzG}(@m)twO*E{kBHa40BRp8B~=PI0`z1ZR-?n3 zVsT=o*O3XhWTz?eaG$>htSc}xm}oh2AHJIVgr7DRn34 zLVG=yT)&E%YawnaA$3dj|1*e-(^RUw33ubFXNLY?L0sxU#C2ZQ^79izHk|~j9!eee zn`P0ohKR@xwBzUrYm&>wvn^K=_|`}VWZUt+8er7>;Zc6UfP{&If28RXHE2kHui^Qr z%kg+Fb(9LF3@nt3Fl!j^-(G)+Lsy^YqMps*6-Pszo>LTlPN%{Hw6JHaxD&U_j(`Q|@ ze<1tadU6Wo@>_snuB{p1MjP6MX1JPaVo7S@9*t@ymtj|B6%)ksE!(J@>2pB?@hx;> zHo&nveIyvTz7AH{B6}B55bMqCS0am{w@eB9UwP9=LC0b}D{KaDmIV4Zr4^9k|25J5 zEkMi!IZD$L?6O8)rRg9<483P?A_3th4E~Tn;X?66Vhgz}eMOMv_*yG<{-lwx*uImiwvx$X3+cL~~#poW~N$Z)?PQW6#-fQ{HNY`f1Fw zj^mK8B1Vq^ngJcyJ;e1;XL}#MlWFxnNv+Ye+A~(ZQ^RQ1`N%`K0IvK2jCVJkMi`U3 zs6m0ja&|cwO+kYEO=NL|Q>S80r=`P1Lp|+rRu?_Kfokjk&OBU{3RXzD(%xSd*vMD` z4&JRJm%kmiJp3zi0q~L4;=r@RS?8N#{(0X_ptCHQ_pd(hm>ocgW8#_!H_4m+h>~Es z6~?_n(*u2c0yhiE*nqJIAppn))e%}-LC2!0P@g6t;D+Ln5AIy$@py(@mw;o75`FPMQe#qS_=5 z@2ZnGQT~Pj&|-?L>DI_&*EnC4yG;Idn`zG`9&PPkSDK2~nRLAh)#EyGxOHe<20GgX zk;S2P((M^~i1jfT*nk$S+wa4PVTkT0%eFqt&VmM*s(?@{tFA8qQdy~2yi<-bvc&xCh zY+%7SmBP)!5t6Vdu0frT752@ClfK2I=m`YLo18Fk@6w^~K;aj_-e}+jAVNxo4X*Y4 z=6KHwpyxMBq7TB7snP?LW;KAoo^g>~>~CC@kIH#n6IZM=>yW)$-n5+i7DR2 z`F(Qvy$FThIzoKjbSm{CRY`y-Zzk&bHxV7LnI^uYf{bHuL$)+3RKCY$@CF2RKq?aij*;#U> z)gZalv69o|QioD}0q`Dy2i0HeaGqT*{gs&S7QtLw9rLtCZAFszMdVRmhkKFzpzQrM zx{j_e2na{Jk;=EGh@~iY=h;;Yz^nAM(cQ5e08}1;AKw z11%ePdoLY`MJX)dZXMq393lJO68F35-Xi<{Anw=Gy)3fU!~Orz{czdm6Zb!-`(es+ zaQ)wOZC0L!>rHe$RQVoU|Cz3bC@#4EC0(Z~55n~y>Dr{+57#f#b&6tx>)+A!VC4?D z{xw|>Qf`9l*XY`)41?>{*!`OVYQVr>q|g%PMQryQv;BGc;rvCE^Gp>lh6KX~wQ@-C zjKN+n=T>s31vgj(<@MDDksM+L1~GVCQoW#v*>|7SIu2h?0l zu(v~f>SxA(A8=83J8F)(R;a$q|Ij5?seL2rwgsY3%e!|@`W+=km&^CPiHwBy2-bgr z7h5$@O071HaDaqLXMI!RFZSu;8a*qvVw?&L5Rk$}>}_g+O1SSAqX@#ZLNkswCAYYX zT5LLnF@S^g@tb|%DOKEg*8et{k}a&q|0Xg{_|7vJbOt;FzugAc>^$p%%dfV_Vv)79 zJI9RiOxu-y6!cR`P|(#3jH_i^z?2Kmxdb(QhjtBEfKVlhm<(d|k(SHI)qB?jVi%+O zhBFD#}b?<;5l#KDoS+)i<@WAh2`MP%ca)jim>JTSUXM68wPDSt-cWV&H-G ziJ`NCYIs;vPn@RcS!5ap?j2SnDdH$rLw-=PX<+@MY@M_Y4%P-6$@Lb_U0rP+Yeo>%ZJ!91BF{W1bW6MZ@@^nUK zUws}GSi19p2mq5li7N|6mDzV?;TxJ0f{4NIW5HV5S00kki7vj=`1SsXp2 zxuIAUQkSGhn?#0Q0N0=f zw$b6w;Sb-SC973#dBEaUEM(M9^hVa{qqIG!vU_G9Xp?8l| zFJD&5af^yrL!8$V{S$3`js7nAyqQ*P`_qJfQQ<<1D(Rj!E_^!9VJhTC-=aT67GHfH zmI?YV|J7k;4pUv^$BW3ZO!n{SASZnHIK1n3d{bG`fd9qq>3Ng@)x@*YSp#!y<$C_G zk$biRTK)4Zmzir9pJV0^TKMuw%vHfY7*}Zar{C<~JS2vS?x9(jG53+NtZ*MK;lfPg z&RYIZ0duwRMq6oyB=?B@^7!^s5J4NcH_39bC01sFAio9%Gh=DwXZ zX!|?U$Qas*zJW=XpL|>BnO~X*%N# zD1(Dx%b%kG77Ru#Y*uD=X>hwm_6~#Yt^HVb-!bWf;t{2P?^j7_Wb6mFKz38>^xNy3 z&PaKg+1G4n3ZIpk35^*`*x!Qxw1@^p?FV$C_8+!0T*#?Xu-rwHLQx@1jrli`T&GiT2>KNd|Z3 z1gR$L!>pk8K|X$fwL*In;r?5R3dSe%6Mmz8VNH}6(#KCMNVN#0{S~-*dxm=mNQdck zs?eQyg$x_bz$>&3qocVvziK+lk0@PHMIt+`g#m#wB-ACDMh=*8wBve`^`&%TH@L4G zX-R`g?K14$2h3m5_y=54SI_38@xrYk!>uCsGkU)s6T1Lz0ILt4G<3FP9TeL4Jg6&7 zUbIs^BYo9X4+?@A04c!Tg%y|@#1UXmn4y6|xcw}v1s5+)wXnI9Sn(9KdLG%$%4@)u zp%jd5MPC%Do3{cK5zJpXaQt1`YO;BmlK|0Ec+Lv`YwUu(h38Dh`b(GsF$2U4@53)77L$- z$LuZ2M;udgmK#lz^D-^U0cNFim>@qgB%}oE-Y%rveJQvJ!M|%T{&3^ydyF@NIgmHn zcu(GqMkPh9G%1njvudUBPZ(BL27_e*0%N?SHtPJw8?m;muKV@yt!EbDW+9Mw%bJly zN&qTCY|V_!#>gZf0sF;fJY#S1+=alzy9j-Q!b~fCI~Inz@c3Rm?Zw%jG(S=|@_YKgV``h3`(l?J4!bfk9ZH+80xr~3^r|=wV zw?0;{RvE=3<)8fugKCcNa!ESwau5I!{WHch@x1H);{!#K@;Art`;DLV_4)>JX6_|m zM1P@K4P?`K)Wc~94juOmFR7IF>K=F%{%`@(@W6P!SiiUg3^>+X_5a|KaG00r z_^|Yyk;ND_e*?PkdfHArc9jd2!WLRj@tMK+F_-!gIeivRQec}eug`?X=ev>$5x`- zM;-wnwLYs|+3vq`M}^`3H~`u4B+-r?Adk#+_~#Zx>{*L1ps2A?3veuqnNR*vKptLz zHV}0r@*_HiINQy+quH;t@%!;ZU}kgwifggbLjV}m83#Nk~*4`>w!w*y|Hyfeu~q@3n}fE1t1LX1*JvEC8W}^OeT0YArAeozo7DT z%P#=2PFwVi{GDtgb{NOi?>Dm78-<)k=nzzn=s{Dw%_Q({gG;Gd-wz{ zT&eyuV2cKf$S^N+47~b10>tX?!k21S%Id$UT|?i-8+p?i9RGXq+Sj32_^{eP6FquS zT^E&=T&7a$azOOE(CA{nrJ=gfqBLimO^{Z&F-?q5 zy%?YBWa5dw`1*eAOF$X(cKx5@=NC@KWG*zbU2ODq$i7?XAa4^LUv5P@y!~$Tg}x7XAj_xpUN>47XeDF}ZJyFZdD%y9H?cX?Ojk&d^%)(Qhv~fO`qE z4wRfD>`lCnDQ(fQayb;h&4@~2{1wzM-nt*h`o9YGE8}Qgtl!lZ-UYQr)43(e~BP*Z_(7JA5>wEOtSBtRDTEndXT|lD0M69`j zR&&86=|`?nOgouJ-P?%W!<_^J&pR-^o>zcJh=ZiQF;-7E{sJ1jQFsj_5UK0aH>3}4 z-I@)9bUEh!itnh~9J9Vk_fbi?1P$$sgcpYwcjHQ!khNul9_!zqg=eDUj`r87ZpWqAC@(Pw4(C}I&e*8U z;yyNNmZtHrX6nI4dSeQA&q;D>6YC>iU;8GF?C^v#+pTTz_P&YrPDg~@`pTPBJB;x+ z`28ryxq<2~6RiUN4nZAeUx(X-6gV+6R?i>9UHFF*6}d&xcrydfN7nSU22Bd?L%&i- z@dUE~hh*jbbI@|4jeG#hF@YtlpBd11&ov5wUq^TuLCruW5Ssd+um#{r^tS`&uM_R# zX0?DaOatLs_!t$(N2B{jt_S0INHm|D?1$YMtdbIPD(46GTdR#vH?bLH+Vnh>RI64f zdKkX`J%L>xJ#tn20_`_6vvQV>0259b6#iCxQ%+q~_)fSc@S%iqCNu~y`$3+kweca! zPYux^`KTb)p;a`Xze}{Q4h`^M&>rJ1Q&GvcosYWpg;j=!r<8oVzyXr*BKY4W&!-KQ z#P(>-KGVw2pUVr)P*yHqI#@2BVFil0LoToL=M71-HAW3;U@V_*wjW-eVwi5Sf3P$a zH-KGO8ny)OeqLS5E>p$f3#{oODt-yVC zG;YJwY;{p%84O%U_SZAqDZmowLgQ@Y;iVByRVL{h+tGdqHKS8x zdQ6bTwFmVhZBYMlEzJH%oS(6WFUW*?I-7#gG2~Fi=gUDH5M}kDOi-KWihIOB>MFZ- z`z>1g^}J#&+=CTZgQ+q!P{OCL5Cs2I62jZ)5MRgYG(6)iWaW?G$rR`KG(1Nt3{`wl}T=U*U&&6I?|Jzd^yS=-~pZ=P08Vpiz2J#+D{SZRhk{o0=S?*CZZ zv&_AjwM2!Lwy*&qnDcvtMC>;q`_`CwiS*J6AwTGKWPTzNGRHqF({#ViqSGxMRT9Bp zHC1;P{?fzc(X1dmV6ALF2TR6SfR0`4jvY`L{_fO%w`;$<=(k^dR-7>TDY}*-emvlw zxS=jmJww-bKi2QCQ2ua-Ig#)LhH8;G`4=5Vq?2FT7e$)aIsiRtQTRWSn5 z4{v~H$~W+WgmbK=65wSN43aWW{Rhv2r|;8=o6KmAS0)Lgat4qJ!(Zr;7k zbgn=kEK?Q`tZ_|PJtwJ-YP~PEW)Ck6L`TNgs~@SrY$oA0kw3*>fb%PJO>0i8)w4uC zgj^GCa3NIEek_14{?&i?|4KO>DTrM)KlKPZG@tO1j^{T|6}_&MAL_zhhdhsGb%`Di z#vZ#L2VwOsTL*Ww$?qD!$&Nr*!g%I|y;q4QHMM$-XeACw=GE}0C&M4zuC4Fx2mfbZ z41hmca|#|+xxx;*(-Gy(`M5EOokxLug~Q9Ug%Jz1vll}rZ=3%!vN(D& zdHvIPJh%&mUCjLee+~u?6Xf0HS3X5|;BFv)XzhwX4*48<3WI*`S=opu~K` zI9GG{E!tQyUM%*0&IrCAP`mpEQO!6}O|%@wr!$063%4xZWN2?*MX~`}sfoULb^ji* z#fW07)U#7i1WYwE*D+s!Pc_O9K4(@#H+EE`IB*XwQlCrL$-cuFtC(eoe0ww@TuOVXI z&n&hsHizfr<2?6-(iAXqu2U@RnMUb8VQA`8TVQOm?VdK-n+_0mOdVu#zfK^#f6cna z0Rk$6J!67rZjkJqH!C9J$MH z*J&A8XWR#ZQHZEwz6T}xS87tmK@-v6z&-2QJKyDUb)I2e!LBh`mC~Vz1xn&^)z1Nv zYEm)~Uq4OYi&d7K#2mXNJ(w#__T7NtkiL$}o9y(}1OO2}j6=ERpOM>yJmH1FK*u_d zst0wQ$0J9PAHQqHB!j={rSGt{GFnWSh_~YUW}w%%aYY$0mfH0*pxTNwK{fJAK{>BQ z-W>!Q_FMl(Y472>4Qx(as%B81H|yjFbIejzM-C7O(Dd_2(=X96=NM|USIM(l{JBKd z2gK>cK-n_f4s{&^HjureDbuy9g%`G}Co@W2$Ka;z_6z=;38i4FOH=Ht!F#xGi0fGC z+?f1dy|zHpxsG6l?C6voU92m$T{&PcglZbKqmB!ZN;c)eox#6prW5gHr(_X>WvU6iRVqLGgVK^&)gO$0Ub2CQ`B=H^H*miS}Mg8 z-TljBRO}{r+>s5%hGB53hRVZygzVsaCYEoLD`dgs3qB2q6XIS6& zu)ch%FHWdMWvnGmk1c{8nK2dCUGu0VnFuRASD47 ztE33#yaGrgbNcul2iL0J^5BtpY3VW`2t2Ti6fkH6i-F&l5rvWVIh{8VWH9 zeV=co5G7a?U_W%wA*C#|Ive-mHG`(SnOy)V!nZ=htP69PtU1kpP#?!5yHIgAN`&4H zXrf=dCH|%j-bDXiRHn5Velir@e&Z)N!w z!oOTT-x|Hp-yRbD3i{tyhf`XPHhGgnPpil52RwIYb+ef!U)_p3z#y{MdTz@Kf(Ja) zwEA{jdGp_xJs~2&eRPC~Uki0kX&HcshJnpsk$rS*IM%ZIb}$@pRW45Gz=u?o+st!~ z9o2(n?;zs2Hq4Oub-cvKlI%MT*EsS04LvP51HnELUL_HQ_aN@SkI9=pN9M^zLq^^` zx&jl+c^ln><##LbWZom;*FG0n6=sofCvUo2qJ_+u&&3C#*zCSNau@C8xyHAPF@bHa zS(Dc0HAmtW40h4|^&)j8XtIn7;)ZjYboLt`#{4!P+rg27s{0-k&2kP16&Df@JJG z1A3moqJ8r6rXS<-sk$}R2cp#io*d2pb}P`i!}6V`SeU!<-RZCeWG&<=+ttWUl0ETfj*U}A1WG$k1t(> z#}?WZC_#VY^?!7602&aVLj?|~z&`x$w!Z$v@wW}12cT){fcJY}XzSl2-@)k`0Lv%x z|B*cKKNs8c!=j?1xvUoy80LR!V_nSE+8Lp7rR+_?-Z88p*saeBx<^-FVd!>eB-lMB z*rU&SpEW3FNOX;b@t@Vj>iNTW$s}1opmSYCF zHw;OGNZDI}nyp$M&ixzeveCYE&>oco|6_}#ilJv0Eqeuo zrpTp99%!Kjx&>t62M@~GhN)uaWv2OE?E)S=ic3tqgvB(>S#$zvMO9dw0nuL4ty_yr zx7>HKN}RZ!m>I_PEf@p)_)c^ZvoSyy$~U9kU4iO8x>l4tA6|P&6s+hgi1JuWrwVxG zQe0hs^l9{vEdbSn?{@)84mhOqYv--f%YBr zWK2>Iazzhlo$``Cw^dYlIJ^tbVS!K1X7%-@&%eM9&4Lc8T{?MVDlPRqmE5nkqn>)4 zDLl8p(^?V}{gS=^pmVIgShWa+bZE_Y1)J{FR@{Z`V1JMo zXO>I%QkKa!*3B*;A})7hy1Y0VJnh#&LmKsIR$SPbl<(lvrFP9*Gbh#d&J}@%PsjFs z0;o%bkt3;S1N_7+Mc>!r$;o)dqjj@ToX|cpkzcfuWJP!$kbd+JMP(%ZEU3Uc*B(ip^^8aHi~#H*6-!x#9-7-0_;ctwE9+eRa=u6fwtZ z>>xWJ@Ay!n#G2!rJ8Xf5bIh~L7Q^Ij%1%nDApfDW=@gluy|SZSQg)8;?BdEUJd?SR z&IZ}ZUAyFMl@cc2--&AnJ-hbGv^Oxxm}i^3+p(?WG#-A!JX=A!lsdLYr_lVVV+UVh2F;xcS7=ABFv~mMHwGg($Mdjy zId%0ywd%ehh1*MSL$z3&S}%L)_}V7*6WQLRyf<0dxqJloZ1u&IA$YhbMk-eit{Hqc z&J1_!mM>F#q~*`r8f|sHqsm{)usD@l1C6fut6DW7`iGL4Mx0xX{8&2`#8qDua=Zp@ zP-{NYTKGf{;$b=5y(1_?}EX9U+ipteBu8+4Cn$`*E9DsUn~2@NO-i;cA|2hf=;#r&8Afn z=|R$uuV8xgTq8R|DrG@9Ygm0pQ2)Iko(@XrAC-xjZ+W zQU*Fs$-XssF1WID*;v57{O(}2>u&dAwQIcl2$)Y_73Zr&PsFRH!#k4fsndO66@)*J z;=bG++__DfX<~gXa0$aYA_~vc<+tyjJ1ag z@zF@M73P9vUqS4@jRWb`t-iU&QE|6l+3R=hsnJiM&C`6YnYngEPau&1Ybzi5l|9_G zGkSt(*SRh7k1wtfZ>9XSv`kXLWPsr}F!-q}`GE=J)FET$od}BKm2mexVo4HZ3whT< znn*n}LG97Y8}1;d*9?9U&Zszck=y5>`B;Dm434$?^&tmZfw3aW3B+7GXyC5zIW^|sooe*URzWaUYUt& zd8E!3HDHL;A)UE)ga_04AHyTVDbqq-EYqI{NEhq1hwc^o0*O8&<0#$THrAz{(S!7o z*FTNfxxf|Np@xj?c=#+GOENT4t*uA)H7d9|)$ZIWdsiatH~JkrY<2$SxbUW8g$Nut zkFn#-)e?T-Gx70;KKohqY%|KFEJ0lwp5X2h|T!AyR@q z!hrAh{j2Y%e4hAz>NUPcf0?KFAE6q6lOHi^-_Fu9{Li|S_+Fy#ajZ2ej}Q3^dKz-) z4kA(-_fkiT-_a7jJ1me~b0zLil{j~<6~hRFb@4cv~Kc%n!0r-1g`WN`W(ue;b=7Uk4JB>svSnp@Jj0!P$ zmO_MrifB6*vi(G870{(Kio*DLQ5n9tMSCHM7u#vG)K*`>y${}Q4x#|`W$6(xBY%K7 zy!bN4Cds7>>Fg%}#;c_djx5pIs>L&>T${003+;cTpw0_-LnV~gyf3JeZA^;l%%)SY zH-ok|$>q*dMGO!1sz#tjUe?TD7mQVScbh=uyFH@0?_L%?Fo_gn_M;q7EZi*si- zzWM-<0!5r}Hv&(hx_HR+Q3_($x$Wqb%7jo zy%Lo67Ca*5xK{6ET;|rJ-$S#pc@2^6aPO^?eFwfs7G#1tX2ZL+E2W9xqDTW;z7JbY z$k|eov#q!*@J9ZSQ4N^{`$qnV0R&_Vd<2f8>sVwmcH2?0S5FPmZbbMPRAl4?e(&6> zh9{5`iyY{p=D(@<)GB?PY2u3Kf3R>03Y#EE46GZPJ8?M~sv;r&A0)8gQJnoaarzcVTbwzN@U+<#G`wK z#<8}>&ca>&c}=Gs=X_j%O%+<$bR)v}hfb*SUFZbPIcbQxffjbUT9Uwigw|aq_F^W>Wz!^QF7>fy{;PxtL~f7o*nkbCegGf0!>!%sIK zbyXjJ`rzTuPDGa7aMV$KBJxqo^LlqG9`6}7l!3t-41R2tx>Zm0Xy)9f8zHVV7YA+ zV_d3w(o*FOzb3_zHb~y|E4+F-&1eh2J!qY0hTz^z?LFw8C6vLh-d0Dw>w?~e9Bb*w z56a*y48?8YhYlOT-WJwFZ}BwefPp#M%EUmF(#dovaW~!waM3e)w|E%B>4j`F_(^IP zQ1TY{tz-$yPREuGN398;45jGPIL8*a0bUmqlFltdoz-9$k|*cY)}`Wbfq6TcPW#=4 zkdhz&Jtn>%hsPqIrt2_KYcTf@xV1TwY|MgJ|{*SvVqI$Rh)^NT8h$}s#7xQ(_ z>dDis@(V}t*0t>; zc@SmbV$NNFg_;x_AR^@0Ar=@1GRRJ;Kyvx#%{Y*o!E3k?^t9czL-yT7=lgEPw+C*f z3H5LYOSx)m^zdRAcV;k&J3t(`2XSX68^Ilc)WIdyJIIX{^TAFNAA#9dGgc2LSCTT} z+bh>}f`u(8HvHyIaYE%D3#;-k2%YsNnR<$Jg?BP;_^Fr z+`?vBf*%i3+sB~r+8+6*nBNFF=!Bv{y#V9=oiNn$%eeD8@~CEyfn);zi4W3bm~Y`_ zls;>PcUf(4rZeJb7*2FBw=rj%ya~-T%oh4`@b(~(C}lsS)0KrJjl6*dkaI0%H6RP! zG|si1PdBo9I;Qs(V3l#8XdG>r-E>x5e0p=l6$s8r^wlfC9$A<-*w+YUSIh8DTAgZl zY?C+Mi3ObCd~8GuQ((hUCV^Y6t+#e0sEs)`lbgKycJ9Cv9B$^$T06MKweoDo)+|R^ z7W_rN#SP5PjZp4UO)445+g_cGyfH7K0r9+E>eo5U&h8(XDYj4^(h|b8U7(>>udpI6E zH`M||USfg49_QHVFSx=TW$MW>m>jafZ`4CCZ$*d%0JwCogV??;4w8WoavRD7@nn`b zSQGg_j~;9oF&o!!g-yh$u`lM8bUbzQV5sigVyjY1FWufw6>41f`ItmEi~o( zBzIL~k`LFeNWo={Fya4LP~JT!20XsD$1eNMfo8FHDQ93z_Sz_u?`9Bc6G|;G7MeVx zP2#&Ev#AD63~JI5#V!ZJ^(2Wv6cn9@K|Dq-B5``EvpnD$;3iyM=LzQ77@5!|_yG%* z^|R0fA%Dw=>nm!3Aa0kNz5tJrEeu>Sn|S@-)a-Xd44=hnNE9LK{hx4Iz;f=#*VIjad<@lA+Q zD#LJUd)E%gi52CbFu`gLdywy36?Cqi6-Itn_$Z>NQXHT)0~bB`x-sN9FWIJ?mf%*J z9tLU#&elc~G?{P_wE3)SK)nL9dDpN|q>zwVhU_CmgS?460KiTdu(MI#_ynD`zA>v3 zo{rTkf!s%~^{!gS-LvjDy9{nxwt8j>;PxcqGaPok;>X-B(95u<}FBbdb0Vs2T*Y zkh|%OY%h%Jp8h<6ANZ7jf1rn|A$};wbE)IVCOLC3VKo9Nv0JYQ`F$;#Ngo+6se0Dp z=HGauviB5aQ{Q|Qu>g`z-H;@HBkv%SI?xKdAj~?cpIMh|<>CgW0yMo^-Y>n;|A+(% z1B|fGG<%DWLR-bvW_LmJILpln1DZis2*X($HJ9PrCfSQgUcqiVRtGW>jJAu{ZsUW} z5x_Rb&p-q3A3gKYk>`WTdvWWnnimRUpak(y7YeKs9f*hRlI;6&k2ck9r0i#AdD8+s z69$x!>e!0HTZ*3|L$V+Mt~OJ4aiv!4el#<&e(@@tZyzC&mjkw4#A_Hh`o3ALW*m%} z@;z;9YVa&;s8`tqe5VOI?%IOXdXf&2+5#TOaEyDcv`F%%b)+$C(UMA*v~L&^k`}B+ z?x;?PS3Qc?8afntV;qJxBXJi~`Vk|b!vC-BjIZ7qR#>mT8 z1kIta$PpiRb)m!-$kpKeHNcBV2be*?ogw94tqE;S&KCh7#A+I|M1mLNsw3psl@vON zzyJIa(p)Xj+c7ga6iH+Uw7AR63N>Hg@CTUv*U=muj`F|deQL4oa3I+u0NdC6(P1DQ zatctv;7}OQ?5~pSwMyMbM}Voxe>q&)5zP~i^TmkvS(?T9K={coiv1i(R|8c=Pxg_*HnB&x7AUe&YH&O88hfGL}SkY(?F zWLw8hDeknyfdf-iz=vsEL5bgek?1PE@jg8Ih5_w=egj5u!TUCWOjU+-K%KJh3d%Ww z6hp!)0Ic^zIiAYwh__R70i4+Y2!o>$=GrW8z=;PfcJT8b&}zRY;O}-xs|&;esju3| zxA8ZJdb<}G*FW9ND#^m!47QsZG!vvEeq!{Q61f9#e|Pv#X>r^o5(|L2aL)+Tqmkc& zdO%b-Yrz_FCD>JnryDOIW8zq!#A1lvKC*EC3~>o0gD2uhNLJX#TIg4QldADN;I;?8 z!7r7q@SZfGy3z{$`ybkSB){;vFsn#35=K$rimK=g`y4uN84RP^8l4?04n}+;36}O1 z8cRzq3uLXu!T?vL6uGH`X#6lR8@T95S3CWda3m+CoszgOGY3F787n@!kbjky$apDRH`f;b1RS zBHdKi*`R)GVa`CLN<4~_f$aMWR2UiG+dpTF*#C@&F}m868;VMLV!GvzmRhtun?+@~ zuxnmsIxa}Yl}3&>ZTk(JlZ9gUx$0L@2LAJFyei6iZyDNs-)1`l`)VYPaS7HKKN4OSES->c`Okd_BC{+Jh9 zpt)M;U~~jDv}({vo%?od<}J((-oK?sMN2Kw%}`NU^u=rJ4_g5Ev2}nOUU&&e922pb zl+mocKT6{3GikB2`(vI0S~Qd*!ufiPXuVF10K#HDo)5Ry)24GzD|LK|W1g33r2$@; ziTlvZ`h-Blc_yPt_>-|wt7yE_&^t$EPYIbLbfV+#fLMxVrhH@dRQeel0#`G4)~jdn z(Bg?|H?;jrL0nh2H!sr^-BeZ-0@Yya5ZeoAJ_vU*TA&N>iX*}d5d$raG!LvqiyN7) z4Y7L&eILQa&xi%6m8|S;wjAuaxDruPJt|#Bxujq zv3DnKXmlLJJdrqUX$EJEHt@k%-`zWakQ4jqr*H>|=H?x^jU1d!4p6;wzfZM+0$J+6ygg^s=vGVrt+4r$U3pRX$Zz-Vl9r z;Qs5e)D2eHMY+(gK;0dHL5=NwNB3?g3^oz^Oq9qgNM|`a&3;EmID&IU@U0>+coo0U zeqSr*^y(hDdITM4E(O3&^cTqX_gB&C&Oc%@|1`B4(^)6IXbl)J>5n#61DhZwqQO<*W(X-KNwS{(@56BOI`6<9tnQ_IRbA_frn@+On zMpj^=lz~S9l&jV!s%Mv=+;WJjWuxK-*0U&HfxPKMc4$*Rc;}PnDGw?gU8v zvwmR&t-xoM8R=OCJOc&9^IkOC8avOUqYZWyn0O&Na|-N`3R+Z?SXR?N9|kDn&aZM? ze5%W_6?C2C*osRMT>D43wy9M{?%HOHv3gr0bM5D@tqhf6%Q&Uw7SFM9O6x72ws>xo zED*TPH*oho`;?kkB`j(8l5~(-}W^T{SEF9r^yCF zk_IspR&L|B<|TpLlms$f_u)^BuX;b#iMbspgHs>eT0)Pys{Z*G#tN-3QrLvc(e#U@ zt{KfIzLT*FRfGGxd@wW8P4rHY6STYO6Tk7*TW~8v*br>Ryer}V9!mR;YTUQ5)kgNX z$rcFz1pSPlAa7GvixPgvF7*qLG;z6 zd;>;0$J?Ewt~92u84s;~P8)ZP-0DM+*+`a77izW97I>^Maxk&q1J5fcj0_$c-)~Cy z$@ZVEu1|wvjz-L)n{81;R(2e>V2Ca8o@Q+#zZJI1TbC|WK*1K;-$?a*G{JhBnmn}F1_2`@|{FRkW0|qvMo)lV=0#S(L z8D!6~koz87ggD*Ib1Z75S(8#p-e!2}5Rps{zQO)7k16^}$Uz={^bbkz(_GZ^JmAryK)ZzgY2&V)IJP55!!$3iWD<9_*q!^A4OSiX z#^@%l)cQJBkL5ynJbDG>F^J_foQ6(?Yi{x*Q*aG-efSTwUZ$<#G7BmHsaB7V`yED~ z`_I5neNzY&`a5(*kfiK;1h>*3peDo5A{ZL9?r(}`g#bfj2BvI_MYmJi6EnlxiRxG- z8|)5?!H!HrsbS1~7Q|xsyW(}t@3AU(jVKZQYyb0H#v^xvH5KFqbQtf&;N?O7RR)PR zqOVQ`1FcfBht_mrsKs=dDs;5TUM5J;cXahFwnibZ%e1hA{fKgb7qEyx)YDOS>!*u!7gs_j1=0-rN92JB7CFGOpJU(J+Z z)kz&r&qVv511-(BWYsHQ@lSaPg{}X)z#(>{f7W-5Y6Oe}Be&VVsf@HYEp6Ab>Tq-$ zK>pqofCp-=l>BT!z6#102>f1XMvr+RjJTpjKWHnxyfGg)B*%C@1;qZ;Eznypd(R?; ztT6L@i+{cqlSg}ipE$BOy z;3N5MwvMbLH=Q5nYQ4qTraAzzj%p(vH%rM#0&#N+mwwqD&C9DX$d3}ag_yM#Xn&cV z7uI$*fMk&l2P1llpfp4Mo)%jNPY0RZnpJhvL16iItTi2F^<-zWa>7651^&bp|FkQ> z)i;2JD(o#}YxgBGPxqs|DzM->9&OiAe7;5`OABxA(vadls!7&Rwp9qCzE5yHKs)X3 zW5-!lWC!r1iwFz{eF72-<(CtA()|TiluQK{|GY8_znLAB->IV20czI}Ca=lgGgO=u z7;O5i?%90PL-Ud8`?{ZU=JDat-QxDsYPFC8O^X#$|{`eKv z&=dvERJxi@r(Q<2Ul@kQv}Qylcoloh7#JlA}zl35&6d-fsITEh^wmyIw@M| zT}LK4CC@uj@(GaUni5>lr(+GlsI{a{r?cpMM`cF?__9Bg_jR)KP3OSd^)$=gSA}On zI6jo6v;yK9oEga{T&(BV`U@u-is38 z0=u!FRU_|vzv&EqVD&$nu~&>Y4Lgvs(^B#oEr5p4ZSp&_$}GW?gVgh5vfdw139jD< z(_)2{5>UkL9aOsxle~Kf`itN#R)V)U1P^?uL~qfgoKJRI#{T#)`yq7JY@tCU}#EtqfE;aC5U-K^opYN>f-9T~FvoN?M?VMqhJq!QC2-rH? z6!p(A*`006?&ps7ta>#(C>Yj@^KNVb;NN-cu~@k2BofEVOYZ)H`s@Z~_4rG9Y zZO42*4_f7Yby6*++$wv0(L0gFP)Q-zRrT4|nC(Tm5|-c6jvKg>-@8alZ@Bf(!qPrS zKFjYh;^59mgcD+|;xaS{U(`>bgpAQ|#+OI`>Z`FP? zwciQaZ;Mv0R{PD+o}0DbHtl({_PbB}ZPk9yYQLAX-?7?vUD~}-yVq&I_c2pa74M$et6lm z&hrejdV)$zu&n*W@>%jbArQo%l$1G>oo(`lk7)lE2&k+NZt7tmryOnl*c>QuD49nX zNx^_L{z9S7^U>eJcgYFe%1}VDuJ@1+$AP%J(9{Y}(;0l4T8Ue9T>xCusrWOdw4f={ z6s7{;mLKa>+TcmyG1k<13QcwUMRtDaJ$A>jrFX*TS@k!4K;L1jO<_FG;RG+E2?i2P2ydI5!%a^GZU>$1W27IvYy$<|1**y#I| zzkoi4T58~1)aDNuiyAQnP;b*o1_~3OrXGZEm1A51g#gbGpNKkmn|d6; zQUHalrt>sdR3kv~(A(4YP;rXANikr;lJ)_VksN;s4{Gj3`?l2@UK~FBJIbUe{^4}M z+H4Uq!E4?B|KIzuioVNydw>7nQlq)X5x{hK^eaH0_lsWR`bI*K2jdOJvT-$+2P z!5Qy?Q-^%g2|J(2oG$5znlaGSy|b-8b%EU#@oO>pv7$O9FO#NU-|r(=JpBVUFTf_G zbhy)^B7S3I`?S}+PlFtb8b|JJYlvHu#+-5^JJ2WkD{bse6+OY;9i!OB6!G>Z%Z`4O z7E8R3Wtps(W7zdtcr|fC{7ydZ6*RSO6k0yEO}aj?NaD zGg}E^?p;f3rJFm}k{_SHfNRq-MmilgJGR_crq*3A8o4}6<96Yi!-uZc%AUDal3pS( zPi&{KXF;3PUCjZ>{2ejuMe=t3uIHyyZ<2Llu2DCH*I>L?iXTBC>n4#Zy$%WO~Y^12*Z9gTzvqK1mpN@4gYoz(5+6sosjC zZ(E7bKD<37!rX8MqjqydY^%#{*^hVI^5_l&#R{)VDt5>0EdAa!{VB~>r(J0{reP1= zuJM~IwP3{~$0B1cQhw?guB_4GOxLoOL#^bX+mBCw8)sz{&FG~*lKI-X zKCP;4{_M26yvx}w_f*J*Yqv;W)-`dzR(z3p^#(Ssqn%XT@gG|pU*Y2ZhCbo zqW-v&))S#P<&IDVN$=mk4h1ShYRg@+1vc#qq+9LOBrbhgCTQpt zEo56%kXk)0&bK_Xo;}C#ng6Oo5mGgR){uc#Mjmp?M`o7I6b#>U0$WnQLPW&Z;qV`2$M(-637t| zKSnW>dA-d~lrzNz5#GA&`XR;Wl4rRK@;8vwu1Fo-TYo^hqUlBPU`NcXt|yX>^$pt> zKWlvdrSPdgE3SR!L*$FNg^+e>cBdm*6``pBK1_#Lgd|)Et>n@3r|CvtT$H=99 zY4{mPU0Tajj(jGO`L15N#W_xBWo4nD5mn1C>$9>~-3n`l?UM+W*|LDgxgBoJZN8FS z=0hf}M5o;HoIB}dottV4tOtG;;nY7|yOvOS^#Lxq(CO@{%bLQ5byt%`S{}}K>2$vC z*QTKx?ORx~jCxx@&EMnT0=71>Lh|y7y;8T-x`f>l2L;goyN_7l)uwKx84_+e=`0Ys z!}M7?60vc6mfMaEk$YSDe-Z_Ytz)Ws^%a^pN#6{9jP|V@$iV~Q)e=N zc2O)E(`DQqp45y#^js-p57w$6iyDzraki)b{mZ)He$BYfTl9iE?dNhmJYHv5Sj1bUM8wDXAWtw!1QO-aA<{1f51kyI~Jzeovy<6QA3uow1FKu_LX|imZhbLx#H(F=NOdbu#yx8Y|bn)T4RvT^;4JPMksp zvp{_Nc}<(DS4vKG^Q~gP`A5*7eTt$iDz?!y8F}h5GI;x7 zR^?z*O53M_a?#xEMD^mpPW&0YLg za!FDn@yh++%;UQ(%Hpj&Gz3MNq-nP)O89LuGV>Ov+4~9RILF=?jat2>nr1ii4r$B! z5skFtSu%wkDN5(m5a$C{%X|$GBr>I9N_C2<1Vn-bg>9lNURIi~;Nl4ULRhFWk z)L%BUt}RpK&2a4ciK37vEavbDQp@F^{I>#E-A zGa^pToIl-b#s$emYDcMWr&V^HSN&MTn0o(%fx^$U&r{B7<;y48g~}{ie;Hq6bOJ^OGUR%uvs z*1XG++A}+^F0k_YK0idlY~F}^h|aC>!i7iff7HErlDOzb;*sFbFI_`&*Ukt%tk=O& zpOYN1z}_*O^InC!^k`F9WXG;p`zy;gDT_&OoJFgRInCW1l{{l{}Gf7Y1)dkBe$(C4T)HP zT4}!Yrsh^lOTt5oP*+)V?LOPZ)A#IN;^6<@*-t=kwOM(Xi+FSKnmsqZIF+33zH9S$oOabudhH?jZN9tPQug|wMHf9cs~PkZhkWjSSDXK= z?M&!%_d?UYz_uSR34SFngr%c2@%MCQ>W>_e)jt=?O&e8d&Wp;gUH+pXNr2Jz@=kAQcuKHOYpT1a5>}Zt= zY#H>;X};1r*tn%Yr%C8EtxoSz=Hr0iz6OtJn)Px&*58?X@YwBG?e@F2=BoE<*0@xD zGd*)Od%aR5jA>TlUQ!v^BO%{&UsHkkR?s99ox3; z9osf`$2N9s+qP|U$F_I0W7{_Fee=C|KVF}RMrBrZMMp<u{OW2qhgY-Z9w@CB=GmHGP1iVRg}3FW+2Yj)N_$@kCJeogUIM zzw}RZ?yO|Ja?j&BzWyv?-M|ZYf_ih+Px5L{U!svZZ+-PtN%&ErxsJzyK}{GXrkrFi zS%}%RT}k_j_;s7`eL1z=sd0Vy{z>ulLfts>G7yM&(4*XXU)}_E9;BliU?FVHO8=Q3 zopEb+m+^m&wC$qRx;*HK)jC$F;_8L2t(jucRIW+%km8^ucTRrZtXwwHFloR7gMN-3 z_q}eLpz5L{axFEr(OnZF+_`-lt_xUqkXXBf#`Y5D`Zesmg;t3?t7}kGwB6Q9VKLky zH(|FiH95AGZGy`hUBv~lF22c2ORwkqS4hYOAV6BBXD+ib#@>1a$Vc2UA@td)MBP}a z$Xppxi!$eSneiUsWj!?WTqCKucB)D6_l7+V><9xo2vICe)y_{LDuUci+^Wr z>Yi2qG5V**a}=(I%}&1WqU-Kh9hx4!P-^ik*nsm+${Iqb3sY0|pe^9t^l7SedyJJf z(BNi-qv92R`*55}{MUE#4QE2H%^82*`kdrtAg#;EweFEf(LMG z$NOz*+VvLl{pOQ=U5#%S;4b=~XCuJx3hxgQHgTz>H4irfS$*^k4~x?y^ua0Qoe$8qLNZX zjb;L845<-*UIrI;N8LXf-AUZa7+dC{ujzm3>b*m6);sKDx#Hgcc(y8g^(Wd`)JL{%59@N7>h+#d zFqOHOQd+$KeT$zRx8G5ozUrXHz3jZa>R&I zL1su^EUox`o55`7DwXug9G-6t-c}AD3CR`}O=w9Ysc%62eF)pWs?p;JFB)l-oF}!Io`>e&Pv18Hir2+UVi^2zDY~{JnUl?R}_xBw>_%)Mg_wfpNjl@F)Y0I zP8?}l@5EHmONjx@*w2QSJEua)3$HU<6AOwcFvO@PDQxVLANeW2I1Ffj*54yAL4)-p zqUCu8J#WAd&suf->mU50s{5KLatRwadz&SF0hji}b=);iFv_#MLB5e| z**}8j)-I`ESdMh#zRSf|bKqpxddfX)~W&O@#@$ zLUF>_e(BcV!y;VKbY!8fqQ~fGr1O65n%l7$|Nis1=MGSSiREyfA*|dq{KGLZXN5Hk zBd%hH(`eXivhZT6RggYXeKVntMB_XP?@ah>yO=qPuEc~FDw;CiWoCU_dFQqFZp|22 z9%^9TI@Z|wlSb(CXVss$TLVt=J!48f1ijw>GPmeLaok!2 zvo^a~l?^wKW1YRb(}(Wo#6rN+H-ENNxav>l+u|(0n#XP^@(vd_ zSZ-}BnNbn}tijeVA)%S&)KTnZt_1d|HcQLMSu!Hlfj>FAAqNs#T?6A58HtYx3u95q ze6}8tE4fT%NC`)#~-sD|b(q%1E(! z&^Cn$Teu6dH=43Em&z;h)R)Kzu=AUKG1^|KP)KnoSv<)(U}_rCJCRk~e0a}3Bd_#y|HCa`^D7Uy-b?hJU7$PQ;A=3~_qfFw zf+5a`{^y3Df`MsJQJ@HS-o#4KdqJvw%el&9N|6vpzeoh|K{N0)OZQS;^_!RXO^vy? zXT6KmI5~8Y%)~-S5)Ci*gL>Tfsky1Lak^e<%Zp*g%r6}Mr>13P?QU4>>sq7~LcT~o z^Gz!j(0)pmZ{CF{G=ef=O2t3 zRYmN5f(~u7#j1kQ1U)=rVD|KGb}cGawi=>N&CB^?WR6JGbxQTfShyyI{DV8aP8&s$ z&`j*wa#@Lqkk};4vU6S5><>2aFDom&q6FM<_w`)44gZ4iv%AGazR5OdDP1V~W+Xpr zIjc!bMq(OurD?&i8-&d=fr>8@mUCONhM7=iBI`>cdRx66#i2X}cX778yB+Tl7T;Fk zfm`@LIg^X+uM~Z6xS85L?oM)}yllOk$SXK2&+)daIp~^x?ftejBx0MFKKxdTqOLRi z;3}mrY%R4gMXwRc*}HjDae=PH#kKngJpyoKRZ=?Y%P)@;ezmk!XLgZF-6=&4m$F4+ zhj-JvA9rS0T@W1nHD!qzMIMxsSDvh_8=sepSYx~=Fm-WwJw{U1+fAV^7Uo%_w8ivinXl*&vZz|jW(Purvyd+D!9%msO0CBXmvQ6YlLJd znrrQRFK_W}ypANw6wv6WX`K@rgN*vZ+AZTU%A5oELwiXm>8sogI%YB#WvqKw&{|IX zDwuBk^wK@{M>VNyYweZA8oN)jT-3MRYeTr*vwDz$Aw-jN~E_ji*Lud7b;()j?C*dSuI@*48M)annkYu6u1_4rM`QSg;k*lUdh zb>k#JoY;deU%;NkgbI!4;}w>+zL$GvH5cbg8@qVPxETA4`&6{$dCJl_>8;sbTn_hfC+0;nkvTVgSwUFQr*1q;fwUk@b*b&P#W8rqTEcqN! zPt|5|F%qFM%$VtkVQ)NJF|YMlbUt|dhyU{e^J6kPGPjA!9?9+9Ty36w)y))(*=HMz zTBT~Uko>x6P}H;W-LZ2Q=pp|OhEMAK__PnYSd-i0XJ&#s|Dn9G`NdQ6s^xdpby8@t z{w@!{WdN{*_fgrGI*m=kB3jax^je8d^>t?TozbaBwFVYh^nlyDb9M{bXWT~Z`Pu%K zotS$WdwTIJVO{jE!!PLRe35Y0 zmW`;Rw4HDx^s{GQ^*Pwro%LG7wq1vk7T7zgn)2b`J(skOkGMz#n{rN}C;MZE_)%cL zKWLF{^}x+ ziy=KoZ$9jmd?3w?&QgKhw{BRi+18`;Rgu>}NQ=-E4dJ98cHn7j_pL^b3#k z`BcKPlV7JN!#6kTG@Xxj#Ekz!S9!!U&`;MKyF-6^o!oa1#2P=tUfOI4GG-8Fn9Z!n z2|~08UR_7cIX|W89I*VOECwRjx%^}jbG!>>Ce_2Y+kELtcl{AV-g>x4-nv{EogL(Q z_$!sBJi6~nxmGS;eM9KQ^t5-x)4dUUxTv<86*hhP=gYPMwb8!D&j#>HokL;clHR+N z^;Wl2+&77Hr1xjS_~XE`1>jiyAQgRh?8S`ozgyT{TE{G+oKQ#>rvab zHSQ~mGp6V4-)s5Tz8G?Ltbf;W9>2n>L?pK+#bfs&acQgEkFD(|yLrt8e)WUllXErQ z2)8N#Pl}`JOk;mX(fhpv=(`ks?35Ae5!-J`bXtv*E#t=->tCNT2cCS-=|;$TC~dA% zI^~HqdN)TSwl;eTy%MKuVY2(Jt=5tY-vBQaqA$m7six~%O^bql_OBhl++*$nYYNkIAOKH@ei!qg<_y zym;h%QAhr2CT_Vt`(FJchVIy>|3IR@`v?h4AMk#$%YEVOaqK%- z`K;}+;g8k38`b(4J}^ITd@pI+!Juaq#CMtLK54mqx#Ifu`-Hjk(ea3N@bY#q#N{oe z1rjrHb*c3%k^I+`{p#WQa=eipgyw7BTTYYymi`9KBsn?dQ|RaiGCf#1od560CodWA z?v>_;$qU)Lp6a4#s0cvBFCD$Nn)_V6R}JnPjt_G#|574YX>7C}x94@&>6zu|bgeL1 z<9)?N9{TtkPj;ZiUD(xq(~DO-^x-;@wL!%=l|pLUx(}6Z@l&0Bh6cN2oLctBH*57j zmGs3M3*@RY&3HZbNiDj*UMimvzC@`TcTaasYsz<@##3M?&E!0pXIO8ty5GkI`OFG@ z-!@@_u9xxOB~sjVSiZ1|GnKKZ*N!kHRU`t=xqn}K1xLDG+&z5{A4KsekY7Yc5d>me zQunZ}Cy=zha#Q=QhWYN)q4mx{_7OM3tJRNx=2p|SWX*Up6>0A7LcG{=)0MW{rXt2$ z3-=MQJHI?W2D*;_EM~6>P~TIAVOl&g{f%2^EzO#D5)>^fXt@vJqk68JZ_FXi=14{A z3mEgC=sAz8x$2$NGQT2CgafQnB z={!13cWI?!wxH5DS81`QeKIU>827G0-b$A_T4?N+09&QJ+@(Pp`kNm;f{%-PisIlQ zaLLM>S~_GJ4rx+bi9p2$CujC%sG-ags0mL@l^gtJpj}Q7X-uv_3=hh7l^mzCOeEJS{p@=0ALV7cpwm;1ub_Lgzwm-ix;U61AFba2U{B7_X zMId4(QWV96A?KHi*x#G{m)LstJ9B7A=hMPM7vdV^RJoA_9s*8iSd)43;InPrh|(cQ zh)5q?dEPAO;E_^i&7a4wfuovGHlIldM^2|pBsE;wL$L72WH8}GXp+bhY=#S3e!BiO z$k{|uW{n*Q=-8?QLf7`L`weR%noRik1X$NW)IWL1%qMq8-1He2xEl*cHO0&x}H;XsMvDHS=f^OVXrI-iLLHL(Z>G z&l%u)H2a>S!!{PWToZ?i{CYj(c{JorjsE0`jYHy$K*gIhd@Ix|9D4q@_iKMeL>?*! zfzEkeXv({Y(?9OZ8BU)Tn6Pg!T*UZX>eRqaw*=xCab7MV@wlic5l0_oxkT)j@*W`+ zPMr*GDj5?G>J-5r1aQd1A&ZI_;wA?@h@*)4p&CI#77Ihd3Uj>j-tNz92Wx_YX@p=N z)xcjw6_c2ZjU`zIXA+VU!kBP2h~vy-BqII`hrED>A6^A}^gCh7NTSss&JVLa#)uA< zEPap#`@l!F`NyjJ!6Hj9R7xYdtZg|(O&A5{3Yr+H#RH6x()mZ#$w4m9v!1z7FJq(t zf+8BMD4K{_2!ECUF_b&}h@1+D*B%g@@DaB8FfbP0s7$eT{O9O^9ZcoWTR+pN3fNb2 zP_&Q>6i*e;+Yj&uk{oC_+=wfP-z5AHXQBN!2sC7}#(zn_z;1^iDa(*QZp6H-Za+Y> zP-dYd;^UziNH>ws=07(eqly%F<3Z&~H{q^SK!wmXVfN6JX$_GLq4$^*^ie*m zK_F>>7%BCjejdLu$@>8t%Doh?h1DbGVz2BKAPtzB2z&a{$kfWyh#63O!O8%%TPg5S z6uXf7@&F-_xv*O^O!O6`4`_se%@*V!&ihkZ~iV|u~nJyhyC3LF_hzvQ|P;{Pk_{4+TrMY$nR$iUXVZX z@%q(=6!5^1_iX|ZBnSG=+z&X^PY!j3)&~}K+=j1-w5Rk5a0mVAcL9V6fcYT4``AIw zfZx+qZs{fr;0W3IzD5u5LsvR^0a68k?J4>Jn*$|K>OdqOHlSCDjP zFY-;m5}9Y9N7C1cQWNmS-w60C`BKOt=?nQ=GL(GTXPfkuuGj>u|CYE@tpPK?mA~r| zXPE*OzNMB)U;dx)AO74E0OoJ4w&Y9TE5(OD?*yP;p$XX7*8tS{E?W975}W`eQ?L0C zQG77xm;#5s&Hek9e11y=CIIo@b*aD2{r)!h0sqm*H39fev<94#dCvbfr9-vme@F2F z{KS4X;QPMOx8;Fv$&U#@*SFHscZ<-=T^EXn@0viHevXnnyY=$}2Fau7QU6I`Kd4+P$)Jo&%p zJjFBZ3tYvx&k-l0uRRncBA$J{b~imZadtnVmY zfSXf4EkeCKEz&^0TT%8a6kIt7FgN+^MU^2tmvMgnaE?O+*1HtTP?hRQ)s%vP(0%7HSZ4VTqvqoIBR859wr8Q~M9 zg@mb}rdUBz3@CI>kR6eREIKSWpfMzpFyuj~L()cvELAuRP~ktuJihb+H%}QAQ{ui< z=jL6qJ zJ>&e$S+7~Zf<#3J2g!ED2O{rsxp!pbosyDsmJGPh`W#q+g~?yYgpUE;L4zr@QM)Pq zv=6y(JC%w~YSbN8{(DP+!AfAb-Mjy(#}_jLS=2N4dKbDcr=#7`t76^_#;YCN4y~e- zY;w*$MLFw4B_K5W9s62{A9${6$mI>fR{*66qYIMJk1tHf4b=`#7(lCxGz_u>3TjB- zfKvfs4o(e;1vLZ0Yb0~P6A2+G8F(F!0CVl1ELSQ7(gC?KZk?^t`TTy zh=Bsy3a;L-Ck)RG{|e?Cz?uM7^Uca8whM=XRnj3sB5IX?P0Y(#%9TZ9!6$Q!%q9jn<5b_pf z4wMN@q+iF7*MZ;`BoEAV7q0;o2fR!ezRYkq(R9vKnOd284r&fcSwLA}PV^hf-!Pgp zQkGGcncFJp5=jqcg06+Ch0+7*1bO5?^_&y_#!5lG$UotK!tp^wkb2OaNRP0m=*r)i zWBmqV0lsiwpdYxzjdoE1pRjv?cCdEvHh2#-FSZMlC6*;t1#t!OsoY$80o^w$zrpkk z#&3u#lUe@w281QVsm0vif~IeL2)_ib2d@V&2Q3FNf$2eb!9JqV;HMz+!h8eWg~}4j z5~_l_g4z<>5}O7x1fM6G7H^6XP?-#~(OVK!g zKd~~TE+`rbEDUH`0M#xy4cKgeU_T@TX*jnbtONWUh$85Azw`DGOed0PhC5|7*y)xo zY6932D5x-~@XnO{!PZ&mKw0R3UFZO3=l~#OU^JwVW6+R(uv-B(0jdlP8>gNreNFP1QR}kal)a(3CiFmos?IF}xBnbt;J%_ts#|#Xj*x&-GKqxO1 zKqdU*U)Ynp!POx^*7wh`D34~}hvHTGK5?IX=49uOK}dc&Mqf|Wr`!JP)x&<<1(eX; zF;Ec-n7t|9SOhc%8u)Tey!v4g>d6h>9<#18&{4zf)lU{Q?+)PUNemhov!c$xf3`k` z48S2iJehg0oibbxHzDH<_oELCgPuma(4~t6cMqNsJo>(Sy!n>8Rr2TL|Vj;dTsxny;?~`OtDMnB6;aB|T{n}Qlm=& zlaRJU_3YmR32fie870ht-8P8m=p6J&qP8p`kC+3Ez;t-*(Ol+ldpd0<``t*r2|Tpru_t&7NqcnI5X@vCsyeo$9@X!P>@heK))R92N_teC zG-m4;hW5Y3-Y3QCeUomb&8a7<8qgo9avHqe+UwdIynKac&r?Wqtuiq~dmlZobgvt| z-mKs){F#pabf;Lo#MCciKY)5DenhUH_lm(zB(qt>`ENS71FS&a{7HY+bl$T*CStC6 zEN)I5oTQ*uuz`TmB@Y5c>rWh`?`5G?W}ZCvhC|{v%^+gxw-Z+CPfLCmgy4}~$vZFD z(QIToaCUIPx++7BstU%f0_F6Eo@TctHMkq^tGslF^m|6SA)_cWa0yG714pym;4%oV zi+`3ll3XA*py1dsx?93jyg@4bVrRNaZa7@rF&D5J?kK6z9`9db7`)1E=*4zg3@S#j z*qEslI=-K>xF{{uwIuRmzJDTD&&|CATo%>5OB?*nc8i;RPSWujM{JRGcDM>#~jyI^A?*2V{_%2BPy zo3`3H&m$WIZ5o_myF7fNh2(rkjjlHj`zWa#KFZ0aAqD@<@-Am= zhWq^)eYdl?n0$5>iG()5g5dcc*4UjWB=PlysSj+Nx?I1Br~)t|*w-~A{q4rb8NQ%` zlBpgh5o4iUuK_D2*}Ui~JZKO;W^czcOlt9`3OWSM-jlqP2%!Z%4AVne9pHe%onQ>E z3?#jT4tm=25a34o%2k6g*?XNy7&F&^@$UD-QDMVXM#4$QK23lh?hpe6=+Yd5A2?Bw zoFI>hZ30{ykmD-ByGi2hkZ3kt9Y_Tkz`39GO{xsRc;ptgVzE#Uhg(ESLr zm6#1sx6q;ii2Y24#0~`QFc_ez{p1CR9CjT=laVg1mynfQq`aM6eeiOhdGQ5DF8MfT#7t88YrdvVb6=fDeOv z2e6aC(}3E6{}E=sMMde37C8iQH54?2(FCgw1R)_<1uX$B4{#P<+q%KF3lqlIkN z!Sy)D2X1=8-Ncr$-Vk2=+}`;0ICGBRQ8h%?oUnG=QUa^=sC|pUi+sJee#_pCk~inN zSBVn7iwefCcQJ(CL&|TKghD=yljo+e2fKxk_dbmZZ~BAZRf|jxmENQ3kI3&tvs)Ki zXr=dgc_`b@kNb*K9V3Ckkih~Bag&DASd53izu7}M zis_)iPyWIK*f-F}nWqr{GvfJHhh_>70MR?9LxEF;NMWBS3vQU_UOfr)aVUD=FBg}s zp_{-X7q46K5cFJ|x3Q)7cxn9Y^@K>66BbJpFX&K7Pp3*270J({G3xof8RrGiI*TJtM-%O)IK!I`$mjVA62S&)%MKq_$ zAovM-_rY4hJ^eI2ZN`wH<9zp?-HiZ~CDE8a0nBT0ml7Q{PVH>z@6Zs)U8+U4e*NlLdbQ3IPsHd zPwKWlc1N@i?9_q?9dIWXNQ~2m;fIU@z}VNr`GhI=SBEdBX%7Y-yBikMZ@-~dYbp1T zJT4%cd^Kg9mUdrD)Y`!g4-^Mub^;=>zk`e|YWueQw|JI}02vaT1FN4n!MXrO#X8(z zQ?bpjoqZ%x-8YkIp_%xf@gf8u{v=S`Ag17y!iaOQKA^*RED=<~U<4q{->(w#A(%!0 zv@ksjSOoi^K$TZ zjL3%>h^sJsKj`Qw4=4c$S3fokR8in7)iiLGlZ!0Pg^Cc01ZMze`)3(C@asEOHpW*z zOLB4I1`dv2T8JaJ3)V{D(6c1s$E?uk+B?awz7gJ!VsIvLvLG-N8!5!2IAo{@G(7!* zXIPU3+X{yEt-<6eRd%GA2p}4`2xq|$MU_HbuLL#(W2{1T7Ow(93e2s8>02aSFfNr0 zn_ev8F(Ihbi3mVAXC&Num^PFCzA3b;76BxgXZsoayXu>@Z~CNTJkV3ix~deC|1(ZfKb_u3QboM|B#A;$!PHp?U>DIr5&f z0n1TkdlzPn@yJM|2A$9x&jSj37b2m|aVAm=a~gJQ#8g~KDb)~w8Pzyup-^AENP=qN z&dxcBbl05tuiUl1b7Zz3fA6x{rZf0G-4)e_lij5rrTE9}%~;~^A44)xvnAq9zlqKc z&v3;b9+3__pj7s1uEhBFwogwcHX`{Y`S)gLjLBg@4zC1Jwtmn);e6+wG`40WjO zz3rAo%ZvG*&Y%py2gXo~Plt$h5Ns!=RoMHO2Wb}jQE6A3Rm2|=V#NH$in>KQ8o844 z)y+661d<~WS^y19-xhw+r>~!(dMs)@>TwN!DJomGbA|Kux)X%}?Qgva0d7F(+)ZK| zpZS;JkNlTKfFLap=vE~L&h9EqV;@kqE^zDa4@7o3`+V^~<--Pyd1h0OnT!f;e}sED zl0r0s=F^jbIOhx9>(W#p`>&8FMo@q1Mb&`iGaAR&gfuXI{s9v@uY*Md;P|fu@A+16 z7k*-|cgN#HQvGv}2gw?Q-6OlDiSB>kI~*0xfFX1;C+&rir$O=G{=qFy%(8!`3Q?Pg z%nH6w9oGgS>X{GmBf)Sy9@J`#n5x)F2)vL~Q(7cc;ODL9&^8Ho+>jjRq!8YeP!jl< zLjq09Rm8ZxSq&(6U)-@TRpcod1jyH>Dsf_f$-I}d=U5{NHdPKWU5YrcmgsdyurewT zjU|Hc^5uZA2f_&{ENNc-bwD>}>SNjqmX-KCEPNTC6es(a)yMZx60{4r_iz`fi^5`DkZH}P^cb(En%PKdh{Bta-3-kvbQ zlSaNtqQh;Wr}IF3o)}XOwuvd~Z`5vu7mY8MJrCYX1Bf@B`x-;U8{MyiUlAl(-Sn%O z?ye0a{>S!a_kOsF6&k0&YXM>r#bV<3-Q!&XM}2OCO+j6%Iz;LijS-u@r`u%@J|7lA zqWq}7;QEoay^mWm2&+MipdSN4hEfq!zsWZ#8CI13303CT8Wj2~^~ngWN{@L|TQ$?B z#gOACGmh7p3OT{>Bz4Es_LmMOO_gKO{_cuXnc!1~B0Pw9no z!wE3zUZ?0US-MQr3SZ-DzJtU#O^U$#R1@Gc#<&x3M5Imh$(jDKVf~CZV*>Q}x;YnM zq2nTAUoO=xDu9>4DzasjXPstAp?FT}O|HZLgM)~-7sD6pp3%*L`pwKP%c5rs2YnRF z+=IfA#HGr$z#)olQ(()?*2L<@dCl_7(P3k3!MpLhFtZR>l}mqzMVHJD4v-0u`&tw? zThK-4OIA)cPySVwEkA}`&k$0`1=R*g9o47gA@-`MSz=LoQnyn0BC4cmpz0q6Q2hFO z?|3JE^gqYPRYn9uP({?okHDkDtHQO$&%)Pd>$X@me?>hP$ZpTD6my~ULdzVM-dEoT z-FMtqFve`m=SDcPPGpdwmtiWQP=z|fJA*w#msuR2wyZ^6u`HkeQEXhiA?Yd!E@==O z65BXRVIpUOePBCkHF^>QA5)K~f!oIhu;U*RUld;nu{5@B+8iDj{ug46W{GBuX4|xJ zm@~ncOqZ;kjFg;CrCJ78Mxj<_#ol6{eFnP7zKFI6waB^1q(<5V;VI~ex|Tv9vMsAf zL7l9W@Hg2$v3h*Md~8}VOOGYFq(Zq&?O0Ww<~Zda2C*zis2q=Mhir$4XTbB;+^c{R zYsWO0E(zVKl}y9Vrz2m1Kk6s z1D#Q!*i?lE2XnuER|?t0VnbTVlo1T)t2d>f&8)j*)Y4}$oxuc{=INM3&5Y!=R!A_DUR_x|>Vlh6bN_ zk@bpGBSq%&!=6}gf825z;z8g$Ad(>(BXABqahTqYI*iYuU9QBP3cEnjyHR_g`bGc@ zrv}8CR-F+X*?#1;C%1>U=X)e%Nb*ZgQ{+*ZqcfvCM5ISj4m<55?%VGB8Y4EwtxEr< zbVKQi>@obXj}RM1-N)W{Clf^@i%cw$cA}6-qLaxDp|namPQ*%bpzuYDG=*EKrPS?k zqkv9gn@BxWyeE50_>_@XWr>uFq8LfwOx~B_lkt}Rkb#!5DlsXMU$9c;JOev}I^#SO ztPJ}Zt_agPW-Ax9;0Y7G|q-;@8_!F(UB>`Z>U znwl~Hr-cCm1_JZHS{81@oHxdtnWHc;8^>TBEBj`?55t^t1SL3lSp6C zBL0C!x7BV9AUFhk(9pUp^}}egoLJBqAOiP?GFZ;mq<~%6ds&Tc65V?aFk}>g5n|IJ}H`F3~ z)+B@2g&QzRd3PT8Ou(?(3MxtG<73Wm2D0aIti=b9#EW|zGY^GoHZgBawEq>lU0MVIVXc4vm=9SMSN7!ScOWT z&bA^^ddn*#jP`n1px^f<2?DpUn-*YJYS;--(GtHWu9lTnC5LU8F^uqjTfsW(Sis6| z+4j`nyu1(}J-X|(3^x?C-xGw{kPZ1d4%15H_u)RVF25HX469`w3p@C9OFa z87UeV0Vdo8qJzXOc26;Uh!`Q%{D?dyGzJ1;G|p;4p&LXs_N=CR`VB&-6ZGZ~FImTv zbOaw3#mCfLxWrIq`Z{qE>>OST^I5}rrMU`Z@J5UaWz&^Y?HWo>kC4v9H5#_bQ0}TZ z**GT7IMLMI1cr7HO-1TYxCNb@35ZFRP)B@taTODkqi9(ZDvd?lgElyJThV>d%up^k zvrflJNjw=-D`yTm{#Xu2xS(4wXhk|RWJ>=dYw>d9*D<^_jMN2=ygaISG*b%8Dtmq#iHkp%&EDc!2Xlz<+kq} zBt-obYKlRJDO3z!hO7TU*yD%vj{(T7AgM^gFP^Q?qelFx+@v>O#P@As=1U5Tw#bJ448n=;=Vn&d3&9rbMLVx!%iuw5|T2lNmick}c394rM!&WW2^m(AYFN zMt2Nl8TX*6nIVv=8L`lfvIK_>4C#d<^*PZx2BNna!%w;$8${4BsZ=nyc)B+2P4z3u?OAcoGKi1GA-Czs)BPMLY2pa!biEl!)cl91(9um48fjN%P}nwDyKJ6 zY=M>I`*tz(^KA8(gGG6U6G^)Z>v>6cg3gNat)eiTLA?q-t7)8*cUD_Jh`HCMEZQDM zaskgp$+lwE;Ybi`v4tn0ODpDari-Y6rl}@yTar3Qni6dT7UsBy3$|F*L5rt${1$fI z;DYzYC->z4i8Ex|_SAXG7HoE}@H{p~b^c^TU$X}#UtLt7+Ec zuSz;ddWn$0{sF=4#r)=Rstb5mOsGSQm`k~NpwPu6U!~t}ZBo)u0Y1YDS=oiKZ95eq6H@R&UHqYng>kNi?jh+O?SN+L=M3ds&f!_t<0S>K0|m~4d)agG*PHW_U2%ZiejfJKp-OD(sJ zgzl54QgM`CjFRjw+wSk&&jnAlNV}s5wOC5pH_bSSgp1P2(YLBTZ082^=c?RzeH9)d zd;?d7Y=>=PHzwQj>XorKgh?KGAtmH^C8+dK83pQeT$yb3ZH=?@+60x8#TNI``1n~B zl}oY-#G2Fmh7Rm76}rmPkP8~DCab;B%hyx-Y!NJ_3}}=zW0949#aK<2U4>Q|y4@I2 z6GEb!zn>Vsot00FKeyoX8B$e$2d!>u$?g7YXCugo^)B~us*?mIw0e8IZ<(t1#$FsS zo$lC&eHC#I2~w`hv43dZ*)iFTY$qx)TyX=> zws{y!jF)BZj&a_r2L71h_RZgnGNihGI5B@cH423f|W zZw3r3Y}`&DGYj1AwQIun6(QQQtG{A(c~}_^sRhqtUmM)F@MVKf4q0t!%NFM@IkYHP zuDx8R@ip$Q+$c-{{wf7Ig_%$JnoA*J;V#c=l+mrs* z4sHu`SRML;GmzW#CUyOo=rs<1elP|(aT=b_`s2?dC`Gm8pyW+Qnhqfl>{=+!lij%Q^d+A>0y_tQdni`(YhEWRTZiOlHSgl~*0T>h6=#jYx^DMX#H zb~-)^Mk8!js47gD*JSP}RiTrdm`O*U!nsa9)~HajQFzue7&nB#_gWJA@3Vk>&=HS{ zADRD6oqB$|U;aIU)}~g0pfu5Eij2)&pEUDmvSjCWA9FfsPiQtoRRmArgeZa7gAd!n zm2S>-5i)}IkJ0;e>E(#QYxt}yax_-LxDY#snPrB3RZXF;_K9OpOaWHU*ri0w8#(1t z>rMxW5DmSu180evEg0;X2m{MWO)+E$@ifM!Lyx3L>}CZ{EWaEncha8<7#pQ*>CYA5p8bW?$Lll>X zA{VVAQDe%{G@m@FU4oLF3er`w^*MlXL;qRGJ=Fls>GlhS&f3~`%1-fJS+aN zA=+VesN&LLP2EoKYYhXgQc~{UfV_-SBkBe}Z^m&0tEX9o3er(oh~NBT>S+1pEz5`Y z^l=?Dzd#EmrV>Az<7si+;C;~2MMt;59ba!_C00KqQ3LahOFK}1ERX9;+XEa9l*E~2 zCiF&dM!axk)qH`$4+KGMOEexJd>*fm)_3NO5tBHeCw1@tAqPd)sX$uw;qR!)oFb+yyzPd3Jjw8?9Vexdb%Kh&C_5x}b^@-a_*SwGR7M)!uoF84O#|&0R zy+Vg8ZYG<@Uq%EZMC0oo&P}R0v0^+M%Y*wDo?%_S7;05wq~Atq@H+i`O)<&AfBH^U zh1NLrDDOJT6Ef2(?z)bJkNY-mtAH_f_|5xs#`7<$p=ihXvUx;yswWPAP^FJ6Q`_IApxW_KyH3;%7^((b)T2`)M>UMal z>+a{ypd9eHugIP;1+Pq?F5*mZ|38(pkb4y2>7j|&OM9neczUujVkSTx*z1CjVy>qI zQCwZz5+&uf)LYrS5wk!mMh;bqqKw7?C<86?lOPq9sV6gr4=SNv- zG{wdtB_YLt+~fgEZe*HVp5KG@eV1Z}Qk;_1iqoz2Ctp0YpK5g=fZ!URyq{|f<|QNC z`ZywXs3=6y#2QO*$&;ehDisOMnJ-K_Mwjd-Yt+ zA8hjs!)8(N<}2`S|OodF-Y@wJr}C|06mXux@|g{g+DYHp>c*K_vYnWerjaQ zY+CQN8TW1VkElFAVN|d7R?yfhb6(4hsp-u_EuXOuzh#@+TAK0_%W-RWo&I;b%m7ht zz}@Y-ev$id;?2tRGR{jdjSwVTXco#abl}C#sAL%R3N2JM%on651Tmf|=p>5s%Sh2| zvh9W&KU+JQL;imNV?dn0;{JhV2Krhf&FwywIfz%cD)H0_L|J^&?@xP|9B)shekOJQ z0R8az=$m8RbjFv)P*rycZ3+^dTf5rE%5jBD98}hu;?q^SAfAbpABJ>9T~Z66#f)Yc zO6gu*6jBadQs!A4Lm;zFl+cx(Q%G-oS_o;YLQ)zRcz&#RjWW%;FDo2Ddi4f0a_w`z(x-Yn>yeb*}h#W;>JI6nH2&u^`Z(+Z`` z*KQwOPvxKUDak#_Hh9d+&q-duLT?S90@yf+%(=a_aKs245}0bWsupud7b%!vb|zE<7a9gH2?Xb)f|rdZ=1QY-Q00;m_wu3{e7+ZM0T>t<}R{;PH0001KZewh9 zWMwaUY-wUHXzhJ_ciTpm=l}W?X!ki|QVlVdlDHFlGCQ&(CE7T$k7ReIdv}ixM1m69 zB)|bc%kpf0_r34B1%Qb5SfuG?hve4Olm|NXan_*L>>^Q_!kRO?mpQ&ub% zw@Fscl3%m>ZE`qUpaf))fSkLgCK>TH1PYc+OYy~TuW-W}~q(n0ucmbQ36fON-=d+?| z>*8|V0?}F+XkO>};x?KxT5T> zGFh&h7HHWb)nKW0j)c!~nNO43YHi=cNbuiukrha?tfen+>Z;9Y0z5n{%E*_T%;`5h z`tV3FmkbZVY&~sp@kus)TUIxVe0H_OU4`#)T=_*ZtEOxGoT!!DRBPDZOBo92Sm!`d z+!~-1?i4Pl&i{Q~00k%TtAj~$h=he-G}XF>D{Jxl%@JRBP7bnjye%|>#{JVf#EPuk+bWQW*!G~#8&L`Io z=n;J4;$pg5tQ-8_o%}s)Q<*$?{vi2}o!{r>teEe_WBuvq?EK{AY4U)W>4V;vr*D2u z9=+c``0i2ftBYR`|Le=MWPjj`lT-NOp#R0$(VtG}b>H>BJAd=czJ9c`^VKe$-`7Dn z3|j;J5N9934Dt z6O|Augye@hp=P~WRdovk;0;B_>)*Z1f$z`sFu*5c7!Dah1!Lf?x`Hd&UN0LK6>#UW z8A={JIW-*_`usY3$Goh`mhgYtI?tBGx<#te&7(7IZ=M3*g5hR3BVuSMRu=ehzDf#S z!{vHDhgBuWY!_L5l_z;wt*@?8EWn-jL%=Npu96cYgL}C!f(=ocr65r$Yg@YU(+s2y zi^3pUn0d*TCa{?})fLIv*;hCL*fe0R%(~Vse1rFme~+6;Pw*E>vjRGdVZL+xFwdsf zG*6+-Yd2Hb*e(}=Ey~u5RvAh-Uv_?gufSl&ZTNXm4z3G$8Jv)eKfkGAiLiSr7hrhU z0N_EyX;S%qM#8>Y!xm?W@(SKrH)PQ^`C>ji)V^Drp2lp^RN+X%U_>W6M{v$au^`R{ zqYw)kO|CwSWhJP_z*$6r7u2<;SQc=R-kU7LM70Le$lj9ZDT#S`tV@F zQ*WO5)tq~7Gw(Q-2fRgk1laaFQ9cF89%o3h?C&sYSJ@?m4*VSq33-hy0Om#TXK zcgo5#2l3MwGX-wi{u_5q8)acna|`vYYU#v-n&?9T=sII*)TXPu}h;p70X zBjo}Xl_A?JQ6G@CBUhj4(0UV*MSu#Dm($xWN0NIEQ>tQ)eN8G_2`V}aR%gvMjD`9- zZU^!y9B5kA^?Joe4A=|H==K(l7f9T9RWV!5lhH2Bx0+ty1sEqUk4GcZ zsRQ?aYV#IRKogf;M(r6sLTS5cF**cjyKvsw_{wt@D7Fr?{)QK#k9QZsOHk<)FG4o~ zZZ~|mY_6CV3*-%XUBg{o!ajpZm?o!hUc5kgjW#8HBeNLX|K#}aEZOCwKvaQy^$rY5 z+!2s#-m0^?gfpCcpnvmRNGy`k2Oni(O6l7Yew$3i4lgVW|NS(HMj&c#ep=2p{>R6i z-w!taJNy-i>WVGORo2LuJX2yp^h#SzAzO=&UEp2d(JoQ(zgnZ+o?TXaAb4o}&6DI3 ztRi3yK;9M)QfH^hD&Z@FgVCQ~A0+R%#LtouUKKjAH`gEuR9nhK;)3iP zcSoz5r)IdqXcg!t89l^8R)4MxYnNVUFJD!39dLCr4LUmEE*z*Dw4dTW3++q_zm+*flcJ|SVop;w@Sol}C;8##8Q~9xW~2|^Jt;jh*VB4B zaP(O^p*{z5Fhfx9GCb2A2Tii>IP`w9)pQb`A=vreNjCqt_2~aCTxrLa>@(&|_NQk| zuZOI@^=gLfU6ll6O{!b)JnS!2RcCc2Hk0lk+L&#BDE89Mf@t@H;h!5v8=NKR18o7< z=|e6eClz@^+B%6VF*$KCG&t2N!Y92!d`kYw<4|VM#V$TstGT`0 zghjVzk1EfM1(dn7`_I^66B&^;;{B={@~W<~8g3oln>qOd#P07(--%dN;xK??HeWCJ z5tw>~t_roCmRSjE4PKi`Y?XT_Pu8|zzmr{{GDp10JEkS@;&jn6BcfEDgD@=}8|CXI zu2=SO=yY(7I1ART{8z%7xzbAP>&XeVO(H48{HC`>GQy^j5*G0r_OULV)b=Yif zQ+-(``;Yf7;dGcW7F*Gq#!E=Cb}HEpv2ZXff%`oE_S>%?v(A~4gNb(5{J89Hj`TSa z@MM{h3%r=~e9=Z+URI0b*Ta81KlP(f;VERxGO3?0}NX0vuIOdgx!6Bw;fi{Q zgY>mxVrbbdPNKzLtk3=1p(T{F2+zU7i;Zro{>s#1S z^7O{ePw}^Jl7S#j$u^@w$uX~f>xPYz$m*UmwHasKDi z=iw>mA-^~V?i9ZH+JAF$dZKShl5gBM&tANI{)r#Ql0?k@czSJFOE)s#BV$SPLGa$ zy!i3t`Rk-hfTOds)0aBfXm5W!Fy7hO%QN`yz<>AS;p;>B2A})dfA{Orul5yu_l^JV z*_&hk-M9WbiHg_@ACHlOXDmt3?bMj4aQEP=4S|M9a++Vky?Q573hvV`$$PTk8)T79 z;l8Ht!j)X*6oW-B&fJcp$zW#n59ITgzrH#Aw^O7Q zjPa^!*v}(JO576W2N4@_gg^$+e{hj@@yDIz0Kr}WrI4oI;n*Tx$(KG9-69Q2!(S48 zV9lv@k+bewNIgp)83jz&My?%c+o|e&egIU`E;J~IfBcF6J)%Rofut5%|7W1?BcLvh zxJ?#ZW=%15${GItFR*b(XQzqx;U)0ltCwf5{Y=c0iw;{MqgTFB7SkN-JbDawJc`xM zB^D-*ZdFrFRi`{6lcX-cnK!Wa@?(<|l04*o5S4eUiFEgHH?QU4%P)O=rfXO}7c zmiP|&#cAVC%xr7Ao=5Vbu>(@ih#cpM*PnLGs2H&LR3Q)6;YY#)GUpMb+;zZ*Ow2lpoP7zkh_FDY4W}QEYb-d$v0rMMIm`o$#J+5Zw30pNfkuk4MM2!fUXKOtCCAt z*jsvp9C)aL4^EjCRKjyK9Oxt6pWa(7izc`A(6nhyeo~|9y2f}FYn7+VAR;z{`Om?&h-+??BW(xzs82NJ5a%jO|4Bem1fpp@~$}q~>60{8Wrm2?p z5Ka!`oFjGc@m*4IBID6G-hV64jKScX<}3Dsv1flOQ5jski^sBJgCMkg3APU!gvg|_ zMgV+G*gD;Zx&L{9cQA|E02lM7-E-J>g(L<{~RC}32fdQq=cLaVIj`t zM|LBTs$@qCjdct^rywbPJtr=Vj1<;zRcAAixC71&3d18A^bH)xv^XuYk>E)$b0j75 zu~8v_6rA$ANc(7z3!TFip`nCM;$1MG4~O>WemyO|Ob-7u7Tn6`qTT2tmSno@G-AL@ zhU!N~4pX`hOvlVHLyl=&DuB(kQ&9WFouqKDjM%KLu&o%$h-}~*tj{2a(2F~ru9s{2 zoor>`{(5NWgb=O=M_Oj@izPbeyvEBjKAGP+*WkuViOtHAl>+2ZrKec9^f#Wokl|Bg zKnq4Lp}N74jZ1`WWvCuC6~TMNXBv6?@LXQyp4qc(HslFIE#S0_PEb|^4`R4D@OC~Y zbO`L`W5krDfyWe5#ON|7@frNco%=IRj&b#Lbu(jyF*p)kJItyg^*BI4Nu{Xp$OfiJ zX4e2$6gDn{E%H|RF6*^+ibSEtz(0#|x~~HBW6cD#7>o_jFO}>?L!k?Jz5oRqp~Ywg zq7q0S$QF|b!>vnYbXFPX)w*U+KEgF0Jxbtz=D>gF<8a{mM=bK8Za8I~GZr`zpE8bo z#K(*k14H9=j+zGMRCjSFN+3HHj7Vr{)R_!>PF$h&jqKk$)A{e+0TL%16ckJEFXkN%M@i*JHnB3Q? z17`B5jzny!<;$XN(b&uyL8HVRX!|Y?F%%Y{%n2J(2#9Ek7?drMt*9kQhk+*;4{tGq z+{9;|xre|I>C?@tQb07tNEHYjQCqSukcwV)k-fvY##*Ff?)I7v?!B7JV9+bT!db}la!q3j(w<+_ zY&%OKe8Rk<&m$0~%Su5+* zs&&)DGN}lWL@$E*P{6f@$zVbac@ZRUg%X33F3rX2^q1l4a12Is;J zb2+5MzJ?497lz$-3kcKtxy$vO*cxd>YAtVQTT(Gl>_)wNy zRn^SHltn^1t(2Y{S;UbT8U_-D_sy#HWt#@6PmHu|fV?#^UB)@9#O9D-A-QWDgLAlH z&Jkw2#5}bbDB4p!JA;M{oyn4*US(eQ=+SebqlZ(0CqYtD*k}~){Z8WCd5TX~1DxHZ zvvJzvZejnN87F=XW|B^Mu$SwA9@^Pq(L3Q*kB9vEfk}vRfx!TDyh|9bO-9aNvO{ij zbu_}~=FG##1iqU_AO_9}Fv2-M6Ixx~7c=ZI!hunO;>kJXTxmGb(HqoDI)|gQNWDmb zeH2#K=ku{&%Wo83AG-CT0~Y1laX0j!+~vy$mO9|hcRqYF=VrHMwv_Or;@w0OV{|%M zN37Wvjcya=$AisFS=n+yRIbg6W}4NA+Ju9>F2hL->$Drf2ZgfiSvv2SZ?Y3oI-)%K zjS;1RBelbsADd5A8UtkFgNQ$-6%w`+^IebanCmedr^J#+M;^-91d0R9SW*}UBDDm zn``gC(i>7C^M;pwfx>767JASXuj;qdg9;B?nvc1L)6dvIF)WrN}A*8{#DzOX(h&+DH^aySAZjR$TZ%Du(-BT&z1A?;UTt&vs0#BRE-s14y5Ts zD$d5Nvm1Ru>JJ`I;0g}bwN@`tb)hq28VU-@rqs79kE58AK_gXj-B5i5iLKwb@&A@}Q>4Lz&S>(eKCKuznkBQwk!r)8Yo@AfP5S z#r1utR#%ejAACnXz%urYZSW1t8_=g+&i1PL9>0RX-Bm4RuWS+)Kaqn*(a+?s%x=2p z4GEwL13c9o^)rYu9KF)#78bCr>|bH|msvPH;>tUT6kTGAQcqTJxoMacCh6!8=S(JG z+qjcN8_BAl6_SJ*#Zem!_NHE+!^e_8@<7fNOSTMwX4pAF5v10?IC`xb5(~a(6dBBs z|4#a&CTt4Aqr|2uH;wBPba!4NsH7G#f8?tqH5lPq_y7W>yonXh;(7^8j4q~!H=DOp zLP#9@j;<|dkIA*Y%rWtjbRE6WXozsw9l`r}JuU1af|PQV!77DVT=KNe*cl$3)d_sAf15KOrqoD340tE@@#VH}D@c}=mE=wYhY z`0ZnYFHxN~;g}W)?Q$Vzn%!MSKGM73L>j%l#)9*~*-v)7@r5A`scEFxv*4KR1m{pEb_>l$%Jq`nX33#tuF6_V{$hauOS%MOr z4cn;(P}RXrE%6v}BS>9Xi!7RP=99gHZ$&nNwz1?qEshr2jvH`Rcnb?Vd|H)SHWa9W z8EP&opgb$XaY`|{iueS0olJ11AqtFagx}DFS5zcdwD=evt_2$!U>wiD8ZtMyxNr?y zr6@{H*R~NKHX+r&YFBkZg$GXNaS+!WEjk=XjDm_asD`bUauqq$eX(FN?AqZVdK~5? z?|5%z1~jvP1;fgFnt5a>_(%%r%61?zFfjL7%hwdYBw>qtH8Cf-6aa|)QK@@xwz$b| z^%4!(z!;j_rn0AUGiem67)Po{=NMHgM}qU0z}?IbDeBm40-F?rYY_LQc*I3@G*<1_ zr{b9m?sNmwrXHM>U(Mx@T_2(LiYNYizHlMdo4QS{FQzbahuXyfKorkFqn zGcKzv#cvU3g(pOe4e|T2Q$gl*p0_{RGjuF4!f(62F-A@meD^v*auQR1wCOc4s&ast zWl_Y-a>IRypdfI5!&m%XuXhn#3*2_Y^gFIxn?&k6lR+@cCj5wGP&#OVk_?e0ZC7Ng zn(wYI7n$YRw2W?A(;a8b0ntoW1lt8H95f=Wxw%O)#Pbg`r!x;qfcX3Uz*yFh3Y~QH z2V^a-d;+D*Q3Xd~gJ}NlX?;yGgZDxqQ`J$(9%Q9bYf6e5j2haM7VMKlQ=Fri@ltw= zIG#%cCdY|$iyx4y<*+wvO^DdwE1sV{$EzeSv=F`2HMdJ78!ErnTwj$yj3eUd>KwbL>k}a#LAB$0 z#P@`JbS~on7E{HbSRi*^ECM!hplEh>%TCEs(pE&G-_a3DDyU)nAM~@V3;IZkjXHu$SL89MtCsto#Dd&OJF%}H6I7di2x-OXYSmfjo_KP zkTVSU*$$o=Le6X{X>q6k{kW=ytG^$jk>Mw}4Z_e^xhR>9Yqc6LPI(S@mvcB63Nvpj zP#FHBN{E~i{}B%`tmR{#U`6~H=xiVNp5=>=otqY*3GgM&s>n(%9Oya_c%*P(KvDL` zN=gw)_)P19nOpnQt6ONPLzDD$Xaq9kjIw3}63LZryo}1taG1K?+-g}hxE5%QuYkuUF6M@PE1;YRSZ;Lcn=o2C#yuIS4Qf=%=g0c{6dc|^HiUBEU@-RQvZFM`!z8Qdw8rp;NRirH+s?cYfuZz&4Ni=m>7o>vg64#{dt z6j0P1UQ%CWQl7jjo?>RJaj14(<~?q283B~dmK$!7COlADTkgnu0 zvWExj*~>}C$&9FcWsVkDRg(!4m6b#67NWS4pMkM2DTXS+QqpEde9A?|0y}DYJr+;{ zR-Z$qx>%Bnyv68Nf%PGAM=_cWD<9SCa*xAKgv*t&@z5U^(m9J}FB&1Dxf+ZcW5@_2 zHYyo7HIFo_8;*l%Tq$s8}KZD7wUA$Fpc zDJfc4qlDe#tC}N)lO4$=!+M99Y)VyVU6(+yueEbD*Qtv+KW^(u|=bUbquYgy* zltwUAplE7^&ibI=-d$8DYv^$mHT+U-e^a*f*2K;<-tDS(`Z*<#rXCYU(~B$N#JDi0 zF5f*di)n5en?2SMV$Byx;ozv~3>|1hniLb58~=JR>+bHfyIH<~eXF$z2a}&**)Hs- z`cPFi0e;vk9}+_ri9Lio@W9?X(UiC(1N9bYaw}18iSO>jVNA^>s6-blD$DJj5#>{K z0fCKBUzJgGVwR@FpNc^W>O*O(#x1M@H3K?XaJxXlT?_Q zO#prmW^aaR7SuMWx*_*k7m{LYu{s5$ipB14dXw}5Fud*H^hiy(u4?w!v6EF&)NsgL z;Irh+#L7o?HobishMQ6i`@HN7Dw1BnS%CtoICF-9TZ`=0kGTOzB-h*d2O`GP@mx0f zf@55q=;e*>D&heLskmSJ1XVnnXk(HYr%8Bmjjf{huqKMtTG+qm@G!VSQEr&o zzD+tCw4Zzqc?ae6;Qq$lwz78fiAfns!M^~0Exu9WG_zU3*n@Uso{TRNLh=tUD2zsv z3+p8TjN1mr87$-A@qzZ^nrrV~CPRPw->d@8R2?5_gp(LFrUi#DFvM&LJ z#-1-Sk36W2PA@rq-BugZ^o4n&YA%F9>dlI@yWFt8H`mo7Izp<3vX+a@oT;e6z)|Bg zKVMY1KZ`M=6ueXCh6*o8$XCEHq9@0VwTj03b7qn|6p=r!Ps3GG5bChm*Uqxnj!Xb39Y7UdNTqrljuXjCl z2*vCmqxKqH0oJI4>{7HA^Vej`J(tX+bx#fNGOGg@hyt&Y;yQN02>sBiOp74+zSopQ1aP~qqH*e$!fq?DZ&8ZgwX z_Roqmm-yH)%|1>BgtKsGxrN?Ykd``m=TO|WwXaa(G@oIKTM_(^dBBGp^#J|og7lIw z*#?e1ZTRKtx{22 zM;vP88Yc;yef(6C*>2=F98SyLa&ZXp=aL@R-c@pXYawJlooQdcQU8J@xk$7k8!Ds> z@@<-X#U7_+gkZwh!e(S#~w^1|8w9V)w;THeF@qSbmaI(YWiHKxQJ!Q*?h(1Z@`Ub4GKkF&8IfO8*(XXxv`7bJe&S-e`_$@Fy!Bo;cyYaQFMcM|%vFyMz=eE6)n`HT9*pt-q9(7Q|9+`{0Qy`uU8BQVb zwaONYC|O5KX&IGV+xfIV$$(bWQaDI?S2J;^w~GNL;rj2nx}L48q{!LCp_ZZ$ZMc|X zFxNOzX!zJ}gE~DR9QoBmH|HAMUilFxHIK7USuJObR^~vp+&NkEjI^2E-Ab>xSwH7e zl@bcx6`$?BpTzm>Vj}FoMU;uTs~9H&OD*kkW>uu+xX`ws2E!D0xF)U|ME2Be-bQX% zk}{?VSp*6#eSVSHu=b2yFfKPcIDplze}@!iV?^UG0;G*r6t6>S4)N=7KjZFDf215K z))hHMM5Uq$AfWZ(|61|VmQkr{EFw?BE8{{NxIn(Q9+WFp=JCZ^&r95dRTK409QOa| zx%#_VeI0o*bhK+kQhgS>_44B|rws8QILkN_yvt>i*FaQX{XnIl70z)9|EN^4yQ65d z6+_3hU^ZFHp^W*^pk~Tk3N#SiB8WEUU~LwPX2&vF`gZ%e5d~h0!-lGq4Fo$;lMv-D zB%?<0QER5Hzvxy%*oi8YlGKoZX160`P)f+dK+=cn5olJiw9zF_i4H+c>Dqs+q5;De zF1pD@d6AzHAWx0}erwKqb@uUQ2KF&nU6Rk>78@tZy4VEP@Wp3L(H60YdqOj@4c>gW zg1EiwZrzPtVAbREa0{VRJz*OMZjRG&LIEg`x%63LbFGk)Y3i9nIED6N2z}ox$O1GOmoG*Ol;+xA}X-GZY9Dt(sJDqJ$Jr1wATmo+X9i!h+eq6UWkw zq%M^RxwI?o(amfdy@v@YVg^n=bt0j1cDYUlzHh9;qZNkg_AfA>%h(0?8KXltl3QZX zrAsw>qOt`S8m$xG#<90dgU{^O;ND5M%1c-ao6Ah20-mWf-@tFsG79}SXr$0g1g{-S z!0Tx}C1zW%ar}r*@)cZ^#d;Q}FIi1diI-Z7(-5%+E;HL(pyliU>NNZa%fejOij;?Ml51Xi#5Pj=Z(kywfTrb*U4_!2d_(e$a1A2^rc4IA3dYRv2!qMIXs9X@cOpl==RnLn*Q#;2xiZmG1RrNi41ld& zdRFKL!_yPz?`>B)>7KbtxHkwW%Q(qI>0>DfJ%-k?C}a2DDaG@Q*);O4Z9NJOAr%<)qOy-&IrraO}> zvTmWl)Vk1T;{9-qzN~c1q=(DjRJDqI2_;ur5GBa<#)wg?KAaLJ5GH5N_b--uFofQ=a}6awRi6xa z;GuUIH_1?CNieJMVPh_oZU<{3V&Q6>_sWzBf--A@zqnKHQYX=oPWMC@|L=zv50@9> zYd4FrzvV+sXSHrJD^6dajMh*@C_3Nc$p#`Q+oT0<5-%G7#RM{^Hu7{Fo4D!AHk`5i z9l+#TkcXD+0u<^FoRt_3iej|2-X3>jw`4#g)m$m3Ek;i@IDbdOVG3wV$@LJ*9U)m{GGm;6>cv0$UlzC<44=&Wh5(GJ{v*Y1ZDM@Rut z!pellj&Q5z+rWfZ;^KBCd^d4oqyS^D#L&+Y?l^vYjQ;~#JjSf_GIZ8Y2LVe{b(h@; z4w0+0&=4VjPXc|)I^{H!b79ubucM+>-7$xz-jyBOw!%_=n3#Mgx~0=xB{CFjq3Uc` zFqD-aoN9c;<8N_6-&HVr5?n*`(dNF3+g^dSwA1>8#T2FQV+~u5r11&Yb)zRWc$ypx@2<=J ze?{^PSFb=_eX2<=;wz2d2JG#}XeFY)EF|R)8;-rgj@L5*r=#nto(WMEIiT9VRXmVx z-CQx8e?^)g`rzcIZ<=SspgVW>|K)5HA;A~OMsfA_d^UnGENc zcrQWcF#MzEnD}WPd}fYG9PZn=&t|V?P4xP>iNp$R=~i+i1pGy|V4bZbz8qp8+U;ku zJz{4`C!){#iL~n1ziTrO{*Uh_$IIqMk&UY*!FT80{{!IBI%i}6j;0LSSG@+l^#Ib!=~+XG&MGRngx8mS1LYLF_eZ z-3{<$Z9#5wk7AaiMbT2$Jhp5iC(Tz{fe)l%QIFl;un@IE&{kVST=5dK?+|?u-7h}s ze2L⁢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

    n9g-L+3>ccXOmG` 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 literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt b/tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt deleted file mode 100755 index 12c009018c3..00000000000 --- a/tools/HitboxExpander/third_party/zlib/DLL_FAQ.txt +++ /dev/null @@ -1,397 +0,0 @@ - - Frequently Asked Questions about ZLIB1.DLL - - -This document describes the design, the rationale, and the usage -of the official DLL build of zlib, named ZLIB1.DLL. If you have -general questions about zlib, you should see the file "FAQ" found -in the zlib distribution, or at the following location: - http://www.gzip.org/zlib/zlib_faq.html - - - 1. What is ZLIB1.DLL, and how can I get it? - - - ZLIB1.DLL is the official build of zlib as a DLL. - (Please remark the character '1' in the name.) - - Pointers to a precompiled ZLIB1.DLL can be found in the zlib - web site at: - http://www.zlib.net/ - - Applications that link to ZLIB1.DLL can rely on the following - specification: - - * The exported symbols are exclusively defined in the source - files "zlib.h" and "zlib.def", found in an official zlib - source distribution. - * The symbols are exported by name, not by ordinal. - * The exported names are undecorated. - * The calling convention of functions is "C" (CDECL). - * The ZLIB1.DLL binary is linked to MSVCRT.DLL. - - The archive in which ZLIB1.DLL is bundled contains compiled - test programs that must run with a valid build of ZLIB1.DLL. - It is recommended to download the prebuilt DLL from the zlib - web site, instead of building it yourself, to avoid potential - incompatibilities that could be introduced by your compiler - and build settings. If you do build the DLL yourself, please - make sure that it complies with all the above requirements, - and it runs with the precompiled test programs, bundled with - the original ZLIB1.DLL distribution. - - If, for any reason, you need to build an incompatible DLL, - please use a different file name. - - - 2. Why did you change the name of the DLL to ZLIB1.DLL? - What happened to the old ZLIB.DLL? - - - The old ZLIB.DLL, built from zlib-1.1.4 or earlier, required - compilation settings that were incompatible to those used by - a static build. The DLL settings were supposed to be enabled - by defining the macro ZLIB_DLL, before including "zlib.h". - Incorrect handling of this macro was silently accepted at - build time, resulting in two major problems: - - * ZLIB_DLL was missing from the old makefile. When building - the DLL, not all people added it to the build options. In - consequence, incompatible incarnations of ZLIB.DLL started - to circulate around the net. - - * When switching from using the static library to using the - DLL, applications had to define the ZLIB_DLL macro and - to recompile all the sources that contained calls to zlib - functions. Failure to do so resulted in creating binaries - that were unable to run with the official ZLIB.DLL build. - - The only possible solution that we could foresee was to make - a binary-incompatible change in the DLL interface, in order to - remove the dependency on the ZLIB_DLL macro, and to release - the new DLL under a different name. - - We chose the name ZLIB1.DLL, where '1' indicates the major - zlib version number. We hope that we will not have to break - the binary compatibility again, at least not as long as the - zlib-1.x series will last. - - There is still a ZLIB_DLL macro, that can trigger a more - efficient build and use of the DLL, but compatibility no - longer dependents on it. - - - 3. Can I build ZLIB.DLL from the new zlib sources, and replace - an old ZLIB.DLL, that was built from zlib-1.1.4 or earlier? - - - In principle, you can do it by assigning calling convention - keywords to the macros ZEXPORT and ZEXPORTVA. In practice, - it depends on what you mean by "an old ZLIB.DLL", because the - old DLL exists in several mutually-incompatible versions. - You have to find out first what kind of calling convention is - being used in your particular ZLIB.DLL build, and to use the - same one in the new build. If you don't know what this is all - about, you might be better off if you would just leave the old - DLL intact. - - - 4. Can I compile my application using the new zlib interface, and - link it to an old ZLIB.DLL, that was built from zlib-1.1.4 or - earlier? - - - The official answer is "no"; the real answer depends again on - what kind of ZLIB.DLL you have. Even if you are lucky, this - course of action is unreliable. - - If you rebuild your application and you intend to use a newer - version of zlib (post- 1.1.4), it is strongly recommended to - link it to the new ZLIB1.DLL. - - - 5. Why are the zlib symbols exported by name, and not by ordinal? - - - Although exporting symbols by ordinal is a little faster, it - is risky. Any single glitch in the maintenance or use of the - DEF file that contains the ordinals can result in incompatible - builds and frustrating crashes. Simply put, the benefits of - exporting symbols by ordinal do not justify the risks. - - Technically, it should be possible to maintain ordinals in - the DEF file, and still export the symbols by name. Ordinals - exist in every DLL, and even if the dynamic linking performed - at the DLL startup is searching for names, ordinals serve as - hints, for a faster name lookup. However, if the DEF file - contains ordinals, the Microsoft linker automatically builds - an implib that will cause the executables linked to it to use - those ordinals, and not the names. It is interesting to - notice that the GNU linker for Win32 does not suffer from this - problem. - - It is possible to avoid the DEF file if the exported symbols - are accompanied by a "__declspec(dllexport)" attribute in the - source files. You can do this in zlib by predefining the - ZLIB_DLL macro. - - - 6. I see that the ZLIB1.DLL functions use the "C" (CDECL) calling - convention. Why not use the STDCALL convention? - STDCALL is the standard convention in Win32, and I need it in - my Visual Basic project! - - (For readability, we use CDECL to refer to the convention - triggered by the "__cdecl" keyword, STDCALL to refer to - the convention triggered by "__stdcall", and FASTCALL to - refer to the convention triggered by "__fastcall".) - - - Most of the native Windows API functions (without varargs) use - indeed the WINAPI convention (which translates to STDCALL in - Win32), but the standard C functions use CDECL. If a user - application is intrinsically tied to the Windows API (e.g. - it calls native Windows API functions such as CreateFile()), - sometimes it makes sense to decorate its own functions with - WINAPI. But if ANSI C or POSIX portability is a goal (e.g. - it calls standard C functions such as fopen()), it is not a - sound decision to request the inclusion of , or to - use non-ANSI constructs, for the sole purpose to make the user - functions STDCALL-able. - - The functionality offered by zlib is not in the category of - "Windows functionality", but is more like "C functionality". - - Technically, STDCALL is not bad; in fact, it is slightly - faster than CDECL, and it works with variable-argument - functions, just like CDECL. It is unfortunate that, in spite - of using STDCALL in the Windows API, it is not the default - convention used by the C compilers that run under Windows. - The roots of the problem reside deep inside the unsafety of - the K&R-style function prototypes, where the argument types - are not specified; but that is another story for another day. - - The remaining fact is that CDECL is the default convention. - Even if an explicit convention is hard-coded into the function - prototypes inside C headers, problems may appear. The - necessity to expose the convention in users' callbacks is one - of these problems. - - The calling convention issues are also important when using - zlib in other programming languages. Some of them, like Ada - (GNAT) and Fortran (GNU G77), have C bindings implemented - initially on Unix, and relying on the C calling convention. - On the other hand, the pre- .NET versions of Microsoft Visual - Basic require STDCALL, while Borland Delphi prefers, although - it does not require, FASTCALL. - - In fairness to all possible uses of zlib outside the C - programming language, we choose the default "C" convention. - Anyone interested in different bindings or conventions is - encouraged to maintain specialized projects. The "contrib/" - directory from the zlib distribution already holds a couple - of foreign bindings, such as Ada, C++, and Delphi. - - - 7. I need a DLL for my Visual Basic project. What can I do? - - - Define the ZLIB_WINAPI macro before including "zlib.h", when - building both the DLL and the user application (except that - you don't need to define anything when using the DLL in Visual - Basic). The ZLIB_WINAPI macro will switch on the WINAPI - (STDCALL) convention. The name of this DLL must be different - than the official ZLIB1.DLL. - - Gilles Vollant has contributed a build named ZLIBWAPI.DLL, - with the ZLIB_WINAPI macro turned on, and with the minizip - functionality built in. For more information, please read - the notes inside "contrib/vstudio/readme.txt", found in the - zlib distribution. - - - 8. I need to use zlib in my Microsoft .NET project. What can I - do? - - - Henrik Ravn has contributed a .NET wrapper around zlib. Look - into contrib/dotzlib/, inside the zlib distribution. - - - 9. If my application uses ZLIB1.DLL, should I link it to - MSVCRT.DLL? Why? - - - It is not required, but it is recommended to link your - application to MSVCRT.DLL, if it uses ZLIB1.DLL. - - The executables (.EXE, .DLL, etc.) that are involved in the - same process and are using the C run-time library (i.e. they - are calling standard C functions), must link to the same - library. There are several libraries in the Win32 system: - CRTDLL.DLL, MSVCRT.DLL, the static C libraries, etc. - Since ZLIB1.DLL is linked to MSVCRT.DLL, the executables that - depend on it should also be linked to MSVCRT.DLL. - - -10. Why are you saying that ZLIB1.DLL and my application should - be linked to the same C run-time (CRT) library? I linked my - application and my DLLs to different C libraries (e.g. my - application to a static library, and my DLLs to MSVCRT.DLL), - and everything works fine. - - - If a user library invokes only pure Win32 API (accessible via - and the related headers), its DLL build will work - in any context. But if this library invokes standard C API, - things get more complicated. - - There is a single Win32 library in a Win32 system. Every - function in this library resides in a single DLL module, that - is safe to call from anywhere. On the other hand, there are - multiple versions of the C library, and each of them has its - own separate internal state. Standalone executables and user - DLLs that call standard C functions must link to a C run-time - (CRT) library, be it static or shared (DLL). Intermixing - occurs when an executable (not necessarily standalone) and a - DLL are linked to different CRTs, and both are running in the - same process. - - Intermixing multiple CRTs is possible, as long as their - internal states are kept intact. The Microsoft Knowledge Base - articles KB94248 "HOWTO: Use the C Run-Time" and KB140584 - "HOWTO: Link with the Correct C Run-Time (CRT) Library" - mention the potential problems raised by intermixing. - - If intermixing works for you, it's because your application - and DLLs are avoiding the corruption of each of the CRTs' - internal states, maybe by careful design, or maybe by fortune. - - Also note that linking ZLIB1.DLL to non-Microsoft CRTs, such - as those provided by Borland, raises similar problems. - - -11. Why are you linking ZLIB1.DLL to MSVCRT.DLL? - - - MSVCRT.DLL exists on every Windows 95 with a new service pack - installed, or with Microsoft Internet Explorer 4 or later, and - on all other Windows 4.x or later (Windows 98, Windows NT 4, - or later). It is freely distributable; if not present in the - system, it can be downloaded from Microsoft or from other - software provider for free. - - The fact that MSVCRT.DLL does not exist on a virgin Windows 95 - is not so problematic. Windows 95 is scarcely found nowadays, - Microsoft ended its support a long time ago, and many recent - applications from various vendors, including Microsoft, do not - even run on it. Furthermore, no serious user should run - Windows 95 without a proper update installed. - - -12. Why are you not linking ZLIB1.DLL to - <> ? - - - We considered and abandoned the following alternatives: - - * Linking ZLIB1.DLL to a static C library (LIBC.LIB, or - LIBCMT.LIB) is not a good option. People are using the DLL - mainly to save disk space. If you are linking your program - to a static C library, you may as well consider linking zlib - in statically, too. - - * Linking ZLIB1.DLL to CRTDLL.DLL looks appealing, because - CRTDLL.DLL is present on every Win32 installation. - Unfortunately, it has a series of problems: it does not - work properly with Microsoft's C++ libraries, it does not - provide support for 64-bit file offsets, (and so on...), - and Microsoft discontinued its support a long time ago. - - * Linking ZLIB1.DLL to MSVCR70.DLL or MSVCR71.DLL, supplied - with the Microsoft .NET platform, and Visual C++ 7.0/7.1, - raises problems related to the status of ZLIB1.DLL as a - system component. According to the Microsoft Knowledge Base - article KB326922 "INFO: Redistribution of the Shared C - Runtime Component in Visual C++ .NET", MSVCR70.DLL and - MSVCR71.DLL are not supposed to function as system DLLs, - because they may clash with MSVCRT.DLL. Instead, the - application's installer is supposed to put these DLLs - (if needed) in the application's private directory. - If ZLIB1.DLL depends on a non-system runtime, it cannot - function as a redistributable system component. - - * Linking ZLIB1.DLL to non-Microsoft runtimes, such as - Borland's, or Cygwin's, raises problems related to the - reliable presence of these runtimes on Win32 systems. - It's easier to let the DLL build of zlib up to the people - who distribute these runtimes, and who may proceed as - explained in the answer to Question 14. - - -13. If ZLIB1.DLL cannot be linked to MSVCR70.DLL or MSVCR71.DLL, - how can I build/use ZLIB1.DLL in Microsoft Visual C++ 7.0 - (Visual Studio .NET) or newer? - - - Due to the problems explained in the Microsoft Knowledge Base - article KB326922 (see the previous answer), the C runtime that - comes with the VC7 environment is no longer considered a - system component. That is, it should not be assumed that this - runtime exists, or may be installed in a system directory. - Since ZLIB1.DLL is supposed to be a system component, it may - not depend on a non-system component. - - In order to link ZLIB1.DLL and your application to MSVCRT.DLL - in VC7, you need the library of Visual C++ 6.0 or older. If - you don't have this library at hand, it's probably best not to - use ZLIB1.DLL. - - We are hoping that, in the future, Microsoft will provide a - way to build applications linked to a proper system runtime, - from the Visual C++ environment. Until then, you have a - couple of alternatives, such as linking zlib in statically. - If your application requires dynamic linking, you may proceed - as explained in the answer to Question 14. - - -14. I need to link my own DLL build to a CRT different than - MSVCRT.DLL. What can I do? - - - Feel free to rebuild the DLL from the zlib sources, and link - it the way you want. You should, however, clearly state that - your build is unofficial. You should give it a different file - name, and/or install it in a private directory that can be - accessed by your application only, and is not visible to the - others (i.e. it's neither in the PATH, nor in the SYSTEM or - SYSTEM32 directories). Otherwise, your build may clash with - applications that link to the official build. - - For example, in Cygwin, zlib is linked to the Cygwin runtime - CYGWIN1.DLL, and it is distributed under the name CYGZ.DLL. - - -15. May I include additional pieces of code that I find useful, - link them in ZLIB1.DLL, and export them? - - - No. A legitimate build of ZLIB1.DLL must not include code - that does not originate from the official zlib source code. - But you can make your own private DLL build, under a different - file name, as suggested in the previous answer. - - For example, zlib is a part of the VCL library, distributed - with Borland Delphi and C++ Builder. The DLL build of VCL - is a redistributable file, named VCLxx.DLL. - - -16. May I remove some functionality out of ZLIB1.DLL, by enabling - macros like NO_GZCOMPRESS or NO_GZIP at compile time? - - - No. A legitimate build of ZLIB1.DLL must provide the complete - zlib functionality, as implemented in the official zlib source - code. But you can make your own private DLL build, under a - different file name, as suggested in the previous answer. - - -17. I made my own ZLIB1.DLL build. Can I test it for compliance? - - - We prefer that you download the official DLL from the zlib - web site. If you need something peculiar from this DLL, you - can send your suggestion to the zlib mailing list. - - However, in case you do rebuild the DLL yourself, you can run - it with the test programs found in the DLL distribution. - Running these test programs is not a guarantee of compliance, - but a failure can imply a detected problem. - -** - -This document is written and maintained by -Cosmin Truta diff --git a/tools/HitboxExpander/third_party/zlib/README.txt b/tools/HitboxExpander/third_party/zlib/README.txt deleted file mode 100755 index 34a13b344e7..00000000000 --- a/tools/HitboxExpander/third_party/zlib/README.txt +++ /dev/null @@ -1,60 +0,0 @@ - -What's here -=========== - The official ZLIB1.DLL - - -Source -====== - zlib version 1.2.8 - available at http://www.gzip.org/zlib/ - - -Specification and rationale -=========================== - See the accompanying DLL_FAQ.txt - - -Usage -===== - See the accompanying USAGE.txt - - -Build info -========== - Contributed by Jan Nijtmans. - - Compiler: - i686-w64-mingw32-gcc (GCC) 4.5.3 - Library: - mingw64-i686-runtime/headers: 3.0b_svn5747-1 - Build commands: - i686-w64-mingw32-gcc -c -DASMV contrib/asm686/match.S - i686-w64-mingw32-gcc -c -DASMINF -I. -O3 contrib/inflate86/inffas86.c - make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- LOC="-mms-bitfields -DASMV -DASMINF" OBJA="inffas86.o match.o" - Finally, from VS commandline (VS2005 or higher): - lib -machine:X86 -name:zlib1.dll -def:zlib.def -out:zdll.lib - -Copyright notice -================ - Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - diff --git a/tools/HitboxExpander/third_party/zlib/USAGE.txt b/tools/HitboxExpander/third_party/zlib/USAGE.txt deleted file mode 100755 index 48e594ee572..00000000000 --- a/tools/HitboxExpander/third_party/zlib/USAGE.txt +++ /dev/null @@ -1,89 +0,0 @@ - -Installing ZLIB1.DLL -==================== - Copy ZLIB1.DLL to the SYSTEM or the SYSTEM32 directory. - - -Using ZLIB1.DLL with Microsoft Visual C++ -========================================= - 1. Install the supplied header files "zlib.h" and "zconf.h" - into a directory found in the INCLUDE path list. - - 2. Install the supplied library file "zdll.lib" into a - directory found in the LIB path list. - - 3. Add "zdll.lib" to your project. - - -Using ZLIB1.DLL with gcc/MinGW -============================== - 1. Install the supplied header files "zlib.h" and "zconf.h" - into the INCLUDE directory. - - 2. Copy the supplied library file "zdll.lib" to "libzdll.a": - cp lib/zdll.lib lib/libzdll.a - - OR - - 2' Build the import library from the supplied "zlib.def": - dlltool -D zlib1.dll -d lib/zlib.def -l lib/libzdll.a - - 3. Install "libzdll.a" into the LIB directory. - - 4. Add "libzdll.a" to your project, or use the -lzdll option. - - -Using ZLIB1.DLL with gcc/Cygwin -=============================== - ZLIB1.DLL is not designed to work with Cygwin. The Cygwin - system has its own DLL build of zlib, named CYGZ.DLL. - - -Using ZLIB1.DLL with Borland C++ -================================ - 1. Install the supplied header files "zlib.h" and "zconf.h" - into a directory found in the INCLUDE path list. - - 2. Build the import library using the IMPLIB tool: - implib -a -c -f lib\zdllbor.lib zlib1.dll - - OR - - 2' Convert the supplied library file "zdll.lib" to OMF format, - using the COFF2OMF tool: - coff2omf lib\zdll.lib lib\zdllbor.lib - - 3. Install "zdllbor.lib" into a directory found in the LIB path - list. - - 4. Add "zdllbor.lib" to your project. - - Notes: - - The modules that are linked with "zdllbor.lib" must be compiled - using a 4-byte alignment (option -a): - bcc32 -a -c myprog.c - bcc32 myprog.obj zdllbor.lib - - If you wish, you may use "zlib1.lib" instead of "zdllbor.lib". - - -Rebuilding ZLIB1.DLL -==================== - Depending on your build environment, use the appropriate - makefile from the win32/ directory, found in the zlib source - distribution. - - Your custom build has to comply with the requirements stated - in DLL_FAQ.txt, including (but not limited to) the following: - - It must be built from an unaltered zlib source distribution. - - It must be linked to MSVCRT.DLL. - - The macros that compile out certain portions of the zlib - code (such as NO_GZCOMPRESS, NO_GZIP) must not be enabled. - - The ZLIB_WINAPI macro must not be enabled. - - Furthermore, it has to run successfully with the test suite - found in this package. - - It is recommended, however, to use the supplied ZLIB1.DLL, - instead of rebuilding it yourself. You should rebuild it - only if you have a special reason. - diff --git a/tools/HitboxExpander/third_party/zlib/include/zconf.h b/tools/HitboxExpander/third_party/zlib/include/zconf.h deleted file mode 100755 index 9987a775530..00000000000 --- a/tools/HitboxExpander/third_party/zlib/include/zconf.h +++ /dev/null @@ -1,511 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/tools/HitboxExpander/third_party/zlib/include/zlib.h b/tools/HitboxExpander/third_party/zlib/include/zlib.h deleted file mode 100755 index 3e0c7672ac5..00000000000 --- a/tools/HitboxExpander/third_party/zlib/include/zlib.h +++ /dev/null @@ -1,1768 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.8, April 28th, 2013 - - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.8" -#define ZLIB_VERNUM 0x1280 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 8 -#define ZLIB_VER_SUBREVISION 0 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use in the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). Some - output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed code - block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the stream - are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least the - value returned by deflateBound (see below). Then deflate is guaranteed to - return Z_STREAM_END. If not enough output space is provided, deflate will - not return Z_STREAM_END, and it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect the - compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the - exact value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit() does not process any header information -- that is deferred - until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing will - resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained, so applications that need that information should - instead use raw inflate, see inflateInit2() below, or inflateBack() and - perform their own processing of the gzip header and trailer. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - producted so far. The CRC-32 is checked against the gzip trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. The - stream will keep the same compression level and any other attributes that - may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression level is changed, the input available so far is - compressed with the old level (and may be flushed); the new level will take - effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to be - compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if - strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above or -1 << 16 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the normal - behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - - /* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed buffer. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - - /* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); -/* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Two buffers are allocated, either both of the specified size when - writing, or one of the specified size and the other twice that size when - reading. A larger buffer size of, for example, 64K or 128K bytes will - noticeably increase the speed of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. -*/ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. -*/ - -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or 0 in case of error. The number of - uncompressed bytes written is limited to 8191, or one less than the buffer - size given to gzbuffer(). The caller should assure that this limit is not - exceeded. If it is exceeded, then gzprintf() will return an error (0) with - nothing written. In this case, there may also be a buffer overflow with - unpredictable consequences, which is possible only if zlib was compiled with - the insecure functions sprintf() or vsprintf() because the secure snprintf() - or vsnprintf() functions were not available. This can be determined using - zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatented gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# endif -# ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -# endif -#else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -#endif - -#else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - -#endif /* !Z_SOLO */ - -/* hack for buggy compilers */ -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; -#endif - -/* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if defined(_WIN32) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/tools/HitboxExpander/third_party/zlib/lib/zdll.lib b/tools/HitboxExpander/third_party/zlib/lib/zdll.lib deleted file mode 100755 index 669b186cc5a5cfb531800a670b7abb32bfffae3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15256 zcmd5@O>A6660SHv5)(px2;@KG#QAp|dp!P2LU5e_#7V6Dogxim&$F4`$&57~C&EHn z#0jB2aAx;_v=ZXL5eW`CaEK6s!yXnP#39QGaYi|^Vyn8U`sdBe+Zm57?MUVBuC7;K zcfIO*)%~8kPUkAqZ=LBpkqUqP1DWBz!AyE&AmsN+a{xQJ`er8p{0(5+48V@}0d_tH zIMv6L`W%3$>sO}qhX6#GkC+ai98uT1Ox^bZi1w$L4z33v>e|M%{{!R`J!3lXFt>J26q) z4SzBH+5?aDP6UDdwsXWNjtjUnu2mm#K4a zp(Iz?O29Xg(&b$x5Vxc1`NDJ+N0h6)ZMDa^!6?p^=bRung8p04d{niXq!ma^<|?@d z^HxNgfy|wSlCuLhg8uRHf@ckB1rn1{DPJhfIv8z-QkB932QJTvs!&_c*WbLX~?ReX$1XjUg`I3EiAEa*a|cliL}MgW*{T87A=7dgm*nx`Lor* zjX=XCXCt}7;{=l9xoM|~8#VpD$C8NWwY0p>l^@I%iqXYlZWf)Wmc#m{QK}NnqlBx4 zJ!lo}!fMzj4yFBpe=U@h4Ozd=8fF*Ea}h3YEtQ*Bwp5fqwJmSo|)pp{9B|(D$1XaB6JR#ES1WwM2`xz)@i0()1GQnEE1nf<(6k= z&|1XTn)XCxV*pbqFJGuc(?(ir+B01&&l^ihCE#bxEi*k-4f`GuIQL;y`=UyvY_5`u z@~4YYu7W(iNbA~5ZZniIvyqzikd?ScYuZEh;2y1M4_id^89Py(dvp0>R2fLqqL?a_ zBI>BaV%h1+bSPQF2y|LaieM1y37-)(L#|d)Z}qk+w3B(7}R4c%wN2~uA^mueH$MelVx1o7T)8C z-l$5Z&Q^0%Me^vd8ECs(!YADWy!}?2#|b3OqvTo?%~?s0!;)fSk6+7?5t^u(H4BG4 z9&4@d6o%|h;U?zWGnmW2zXRa$PRuz^0eqeU__Yh*!!*E08RQ)Rco*CEF&|9r2Uvd) z_ZHax0PD|?KF0ou5xgELjq)3Y0UjcKf;sFNBueU^p|1M_08dT=T*mzNGo;OX0e&CF z>oD&;eFWes>iwt>uRnpgF3SIM9OZg(9LE5zV)^Y+fN%P7yjXsZGIK~B*!~UsKgR2S zJPh#ZAsio;6{HT78^`t@)H8&7^C)`{v3}Z(W579fV)+h^p@ijAEWg|ba0BTF9B&cn zYaDM6>Ylcwpqtbz`B1J1(hup9QkUKoRMI0Mha2Izzr z;5?jz_3$!mgcsoktb2I$ z04JaqPC_^I!71p0gRlm6z)rXXufST^4j179Y=hTeE4&KVVKZ!jt1tm6xB|Q2x&Pa7 zt;WdF@}40KzZ!dLq9HGo7~4f}my@udwrzM-Mv%({0XP;|MNd4^Gg}t2j#iq1ZsGZ9 ztFXL;PB;`8UBvX5HWmx7?q*>!DYXyAYeG?M&|Y{7WMk=kyiYd;0pH)L)D5$>X`Xxh zvnI(LbdZ`zV0sYrQ>;`*JadVqm_fc1OFm*57-wv%SDr>*6B9*k#gi+ST387TsBy%aM{PQ#Qpo)(7bV>~&klSzm9V?1YyXRkqGEl+%%rZkf_Hf$YFFi1;; z?=Ko*d5cCkm)x!^P#P{K5w3?)XD3&0_ZKW0QD=BIw)jj=34#IDT}g5cB`Y!O)#NWC zT9b*??!LkdsnOn$`1Tw|B5IvAj9 zT(TZ7qUc_fOYYYAVYlSs&Ngr6Xdzr`nEUOuW$g-wT|*kas22~USDnRcx?M_es3YrM z1jRM{7Or)_86^HOPZ2p@*di+}3$xv~xe1te0{m4QQjWpK@!mo{SIu=}cF(_8 zu=oz?-_l-<c$mhT|+h{5$;d zhk}tj{b*nvpwk@#FhhMyIc8#nvRXMAl0gPonL)=PKJJ+8kF?`KyloQ}p6=u0q2;8y zfrE6~i8kpW>CA}dAsxm;zQ7^zP@%4e^%NS@}m!NUO^Kd8-Qd==>wOe`-U@WwdQG_QW%X zM(=`JwdTO6I3QXR%#xf~MR972nb}&Kw}4d)Eqi%pxIP9=V--fj_(5P>SPkYwF4$2A z3m>BG%uHV-$E-)|Z#AK5^5%h9xF%ynroX=Rwj#!JK1SLDY5gAQqbfF&?TGTckHU$h zokZ*2FwnpoHX+gr2FYZ&Z6IV4=CZ~j*hAfRkQ&T|JbP^oQhUCZv{Kg*mL$w=d4Y!3 zm>1w-C*}hVBkly&gw6W2{T?HXIMJeJzu&zjj_lob?_K<+%>V)|#D7 zg1^1wp-8@L)h}T_3HN713@N)pGkV#>ksV<>Ga9OYhwx|}GZp7?dI;yBY^~Y5lwi9} zK9bqSTJ6q?%Yd`l!{J>}8#tOe#@6aCwA_|Bj@eKx9c!?`I!YlHov3T<3AbuX$Fpg1 zow;od@#MIm4XlJ%^s0wt4k8@PvOZy7Bb@MzqaCD#tYn)((ysv=h^;m2 zum>|%cgt%j>6y1fQRqFogJ}J}B;;2+Jq&yizd|Uxe3VCRp(Nb--Hak#RT@h?`~{^WNG)*xE8gkpYL$p0yI9dWJFN{g@rSTZv81BPrh*WDI_1?;u*g8wuIS z5MjuBE;snrbE-^&XAOH8=6zusbIBy^=tp8WZJxU{$Qoz|JQ_pdmz-`|w$`KLnwf1r@*sSFePRCyNuvYeT>`V;FPgm{Snw?R?N_xY?F|WX_ z@+GX;gcGYV4~O5bJ0M$Yc0LI>XFZ&@PplF=VLXo0-rJ0X$Z#%>w1Q`2=RK@tI~z;z zz6(AcefnfwVF})sV8e?s9RBvgf!SKK9+-f2$-{DAbyx&9#b&V*POdH!miN8L(ovGK j(JO=^U!p7>A?b|tszHeVH&Yu}2|jmCvGkia2h;gq1zB&D diff --git a/tools/HitboxExpander/third_party/zlib/lib/zlib.def b/tools/HitboxExpander/third_party/zlib/lib/zlib.def deleted file mode 100755 index face655183a..00000000000 --- a/tools/HitboxExpander/third_party/zlib/lib/zlib.def +++ /dev/null @@ -1,86 +0,0 @@ -; zlib data compression library -EXPORTS -; basic functions - zlibVersion - deflate - deflateEnd - inflate - inflateEnd -; advanced functions - deflateSetDictionary - deflateCopy - deflateReset - deflateParams - deflateTune - deflateBound - deflatePending - deflatePrime - deflateSetHeader - inflateSetDictionary - inflateGetDictionary - inflateSync - inflateCopy - inflateReset - inflateReset2 - inflatePrime - inflateMark - inflateGetHeader - inflateBack - inflateBackEnd - zlibCompileFlags -; utility functions - compress - compress2 - compressBound - uncompress - gzopen - gzdopen - gzbuffer - gzsetparams - gzread - gzwrite - gzprintf - gzvprintf - gzputs - gzgets - gzputc - gzgetc - gzungetc - gzflush - gzseek - gzrewind - gztell - gzoffset - gzeof - gzdirect - gzclose - gzclose_r - gzclose_w - gzerror - gzclearerr -; large file functions - gzopen64 - gzseek64 - gztell64 - gzoffset64 - adler32_combine64 - crc32_combine64 -; checksum functions - adler32 - crc32 - adler32_combine - crc32_combine -; various hacks, don't look :) - deflateInit_ - deflateInit2_ - inflateInit_ - inflateInit2_ - inflateBackInit_ - gzgetc_ - zError - inflateSyncPoint - get_crc_table - inflateUndermine - inflateResetKeep - deflateResetKeep - gzopen_w diff --git a/tools/HitboxExpander/third_party/zlib/test/example_d.exe b/tools/HitboxExpander/third_party/zlib/test/example_d.exe deleted file mode 100755 index 1061952b844918126d263ef1c730546bb4a50107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38912 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 VBe!Cl8y)|Dbm~97__rzWzXAHFG=%^F diff --git a/tools/HitboxExpander/third_party/zlib/test/minigzip_d.exe b/tools/HitboxExpander/third_party/zlib/test/minigzip_d.exe deleted file mode 100755 index e829976d93fec59cc5cc38d4f7af40a6f6b87637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35840 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 PuYUfY(X0RWTk*dDdX5d7 diff --git a/tools/HitboxExpander/third_party/zlib/zlib1.dll b/tools/HitboxExpander/third_party/zlib/zlib1.dll deleted file mode 100755 index 9ea38d5cf3e0ddbeaccc0122ce3cdb6c3741a3e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107520 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

    |MhCkB4mr`;oB! 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 Date: Tue, 3 Dec 2013 18:21:28 -0500 Subject: [PATCH 085/315] Adds a new Arcade Machine. --- code/game/machinery/computer/orion_trail.dm | 299 ++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 code/game/machinery/computer/orion_trail.dm diff --git a/code/game/machinery/computer/orion_trail.dm b/code/game/machinery/computer/orion_trail.dm new file mode 100644 index 00000000000..acd29f16690 --- /dev/null +++ b/code/game/machinery/computer/orion_trail.dm @@ -0,0 +1,299 @@ +/obj/machinery/computer/orion_trail + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + icon = 'icons/obj/computer.dmi' + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/arcade + var/engine = 0 + var/hull = 0 + var/electronics = 0 + var/food = 80 + var/fuel = 60 + var/turns = 4 + var/gameover = 0 + var/playing = 0 + var/alive = 4 + var/eventdat = null + var/event = null + var/list/settlers = list("Harry","Larry","Bob") + var/list/events = list("Raiders" = 3, + "Interstellar Flux" = 1, + "Illness" = 3, + "Breakdown" = 2, + "Malfunction" = 2, + "Collision" = 1 + ) + // Sets up the main trail + var/list/stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") + var/list/stopblurbs = list( + "Long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", + "At the edge of the Sol system lies a treacherous asteroid belt, many have been crushed by stray asteroids and miss-guided judgement.", + "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres and traders.", + "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", + "Rigel Prime, the center of the Rigel system, burns hot, basking it's planetary bodies in warmth and radiation.", + "Tau Ceti Beta has recently become a way-point for colonists headed towards Orion. There are many ships and makeshift stations in the viscinity.", + "Sensors indicate a black-hole's gravitational field is affecting the region of space we were headed through. We could stay the course, but risk being over-come by it's gravity; or we could change course to go around, which will take longer.", + "You have come into range of the first man-made structure in this region of space. It has been constructed, not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonist's success.", + "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for man-kind!" + ) + + var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/AI = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/toy/gun = 2, + /obj/item/toy/crossbow = 2, + /obj/item/weapon/storage/box/fakesyndiesuit = 2, + /obj/item/weapon/storage/fancy/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/item/toy/prize/ripley = 1, + /obj/item/toy/prize/fireripley = 1, + /obj/item/toy/prize/deathripley = 1, + /obj/item/toy/prize/gygax = 1, + /obj/item/toy/prize/durand = 1, + /obj/item/toy/prize/honk = 1, + /obj/item/toy/prize/marauder = 1, + /obj/item/toy/prize/seraph = 1, + /obj/item/toy/prize/mauler = 1, + /obj/item/toy/prize/odysseus = 1, + /obj/item/toy/prize/phazon = 1 + ) + +/obj/machinery/computer/orion_trail/proc/newgame() + ..() + // Set names of settlers in crew + settlers = list() + var/list/settlernames = list("Bob","Henry","Joe","Mary","Jill","Mandy") + for(var/i = 1; i <= 3; i++) + var/choice = pick_n_take(settlernames) + settlers += choice + settlers += "[usr]" + // Re-set items to defaults + engine = 1 + hull = 1 + electronics = 1 + food = 80 + fuel = 60 + alive = 4 + turns = 1 + event = null + playing = 1 + gameover = 0 + +/obj/machinery/computer/orion_trail/attack_hand(mob/user as mob) + if(..()) + return + if(fuel <= 0 || food <=0 || settlers.len == 0) + gameover = 1 + event = null + user.set_machine(src) + var/dat = "" + if(gameover) + dat = "

    Game Over

    " + dat += "Like many before you, your crew never made it to Orion, lost to space...
    Forever." + dat += "

    OK...

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + else if(event) + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(eventdat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + else if(playing) + var/title = stops[turns] + var/subtext = stopblurbs[turns] + dat = "

    [title]

    " + dat += "[subtext]" + dat += "

    Crew:

    " + dat += english_list(settlers) + dat += "
    Food: [food] | Fuel: [fuel]" + dat += "
    Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]
    " + if(turns == 7) + dat += "

    Go Around Continue

    " + else + dat += "

    Continue

    " + dat += "

    Close

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + else + dat = "

    The Orion Trail

    " + dat += "

    Experience the journey of your ancestors!



    " + dat += "
    New Game
    " + dat += "

    Close

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/orion_trail/Topic(href, href_list) + if(..()) + return + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + else if (href_list["continue"]) //Continue your travels + if(turns >= 9) + win() + else if(turns == 2) + if(prob(30)) + event = "Collision" + event() + food -= alive*2 + fuel -= 5 + turns += 1 + else + food -= alive*2 + fuel -= 5 + turns += 1 + if(prob(75)) + event = pickweight(events) + event() + else + food -= alive*2 + fuel -= 5 + turns += 1 + if(prob(75)) + event = pickweight(events) + event() + else if(href_list["newgame"]) //Reset everything + newgame() + else if(href_list["menu"]) //back to the main menu + playing = 0 + event = null + gameover = 0 + food = 80 + fuel = 60 + settlers = list("Harry","Larry","Bob") + else if(href_list["slow"]) //slow down + food -= alive*2 + fuel -= 5 + event = null + else if(href_list["pastblack"]) //slow down + food -= (alive*2)*3 + fuel -= 15 + turns += 1 + event = null + else if(href_list["useengine"]) //use parts + engine -= 1 + event = null + else if(href_list["useelec"]) //use parts + electronics -= 1 + event = null + else if(href_list["usehull"]) //use parts + hull -= 1 + event = null + else if(href_list["wait"]) //wait 3 days + food -= (alive*2)*3 + event = null + else if(href_list["keepspeed"]) //keep speed + if(prob(75)) + event = "Breakdown" + event() + else + event = null + else if(href_list["blackhole"]) //keep speed past a black hole + if(prob(75)) + event = "BlackHole" + event() + else + event = null + else if(href_list["holedeath"]) + gameover = 1 + event = null + else if(href_list["eventclose"]) //end an event + event = null + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + + +/obj/machinery/computer/orion_trail/proc/event() + eventdat = "

    [event]

    " + if(event == "Raiders") + eventdat += "Raiders have come aboard your ship!" + if(prob(50)) + var/sfood = rand(1,10) + var/sfuel = rand(1,10) + food -= sfood + fuel -= sfuel + eventdat += "
    They have stolen [sfood] Food and [sfuel] Fuel." + else if(prob(10)) + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] tried to fight back but was killed." + alive -= 1 + else + eventdat += "
    Fortunately you fended them off without any trouble." + eventdat += "

    Continue

    " + eventdat += "

    Close

    " + + else if(event == "Interstellar Flux") + eventdat += "This region of space is highly turbulent.
    If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." + eventdat += "
    What will you do?" + eventdat += "

    Slow Down Continue

    " + eventdat += "

    Close

    " + + else if(event == "Illness") + eventdat += "A deadly illness has been contracted!" + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] was killed by the disease." + alive -= 1 + eventdat += "

    Continue

    " + eventdat += "

    Close

    " + + else if(event == "Breakdown") + eventdat += "Oh no! The engine has broken down!" + eventdat += "
    You can repair it with an engine part, or you can make reapirs for 3 days." + if(engine >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "Malfunction") + eventdat += "The ship's systems are malfunctioning!" + eventdat += "
    You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." + if(electronics >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "Collision") + eventdat += "Something hit us! Looks like there's some hull damage." + if(prob(25)) + var/sfood = rand(5,15) + var/sfuel = rand(5,15) + food -= sfood + fuel -= sfuel + eventdat += "
    [sfood] Food and [sfuel] Fuel was vented out into space." + if(prob(10)) + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] was killed by rapid depressurization." + alive -= 1 + eventdat += "
    You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." + if(hull >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "BlackHole") + eventdat += "You were swept away into the black hole." + eventdat += "

    Oh...

    " + eventdat += "

    Close

    " + + + +/obj/machinery/computer/orion_trail/proc/win() + playing = 0 + var/prizeselect = pickweight(prizes) + new prizeselect(src.loc) \ No newline at end of file From 26139a04028c1348d98a8c1c35e7c380d6997bf9 Mon Sep 17 00:00:00 2001 From: Adrinus Date: Tue, 3 Dec 2013 19:18:36 -0500 Subject: [PATCH 086/315] Made the Orion Trail machine a subclass of arcade. Added designs for its circuit board. --- code/game/machinery/computer/arcade.dm | 280 +++++++++++++++- .../game/machinery/computer/buildandrepair.dm | 4 + code/game/machinery/computer/orion_trail.dm | 299 ------------------ code/modules/research/designs.dm | 9 + 4 files changed, 292 insertions(+), 300 deletions(-) delete mode 100644 code/game/machinery/computer/orion_trail.dm diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 97d21c9fecf..e910c3725d5 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -253,4 +253,282 @@ empprize = pickweight(prizes) new empprize(src.loc) - ..(severity) \ No newline at end of file + ..(severity) + + + + + + +/obj/machinery/computer/arcade/orion_trail + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + icon = 'icons/obj/computer.dmi' + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/orion_trail + var/engine = 0 + var/hull = 0 + var/electronics = 0 + var/food = 80 + var/fuel = 60 + var/turns = 4 + var/playing = 0 + var/alive = 4 + var/eventdat = null + var/event = null + var/list/settlers = list("Harry","Larry","Bob") + var/list/events = list("Raiders" = 3, + "Interstellar Flux" = 1, + "Illness" = 3, + "Breakdown" = 2, + "Malfunction" = 2, + "Collision" = 1 + ) + // Sets up the main trail + var/list/stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") + var/list/stopblurbs = list( + "Long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", + "At the edge of the Sol system lies a treacherous asteroid belt, many have been crushed by stray asteroids and miss-guided judgement.", + "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres and traders.", + "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", + "Rigel Prime, the center of the Rigel system, burns hot, basking it's planetary bodies in warmth and radiation.", + "Tau Ceti Beta has recently become a way-point for colonists headed towards Orion. There are many ships and makeshift stations in the viscinity.", + "Sensors indicate a black-hole's gravitational field is affecting the region of space we were headed through. We could stay the course, but risk being over-come by it's gravity; or we could change course to go around, which will take longer.", + "You have come into range of the first man-made structure in this region of space. It has been constructed, not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonist's success.", + "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for man-kind!" + ) + + +/obj/machinery/computer/arcade/orion_trail/proc/newgame() + // Set names of settlers in crew + settlers = list() + var/list/settlernames = list("Bob","Henry","Joe","Mary","Jill","Mandy") + for(var/i = 1; i <= 3; i++) + var/choice = pick_n_take(settlernames) + settlers += choice + settlers += "[usr]" + // Re-set items to defaults + engine = 1 + hull = 1 + electronics = 1 + food = 80 + fuel = 60 + alive = 4 + turns = 1 + event = null + playing = 1 + gameover = 0 + +/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user as mob) + if(fuel <= 0 || food <=0 || settlers.len == 0) + gameover = 1 + event = null + user.set_machine(src) + var/dat = "" + if(gameover) + dat = "

    Game Over

    " + dat += "Like many before you, your crew never made it to Orion, lost to space...
    Forever." + dat += "

    OK...

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + else if(event) + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(eventdat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + else if(playing) + var/title = stops[turns] + var/subtext = stopblurbs[turns] + dat = "

    [title]

    " + dat += "[subtext]" + dat += "

    Crew:

    " + dat += english_list(settlers) + dat += "
    Food: [food] | Fuel: [fuel]" + dat += "
    Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]
    " + if(turns == 7) + dat += "

    Go Around Continue

    " + else + dat += "

    Continue

    " + dat += "

    Close

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + else + dat = "

    The Orion Trail

    " + dat += "

    Experience the journey of your ancestors!



    " + dat += "
    New Game
    " + dat += "

    Close

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + else if (href_list["continue"]) //Continue your travels + if(turns >= 9) + win() + else if(turns == 2) + if(prob(30)) + event = "Collision" + event() + food -= alive*2 + fuel -= 5 + turns += 1 + else + food -= alive*2 + fuel -= 5 + turns += 1 + if(prob(75)) + event = pickweight(events) + event() + else + food -= alive*2 + fuel -= 5 + turns += 1 + if(prob(75)) + event = pickweight(events) + event() + else if(href_list["newgame"]) //Reset everything + newgame() + else if(href_list["menu"]) //back to the main menu + playing = 0 + event = null + gameover = 0 + food = 80 + fuel = 60 + settlers = list("Harry","Larry","Bob") + else if(href_list["slow"]) //slow down + food -= alive*2 + fuel -= 5 + event = null + else if(href_list["pastblack"]) //slow down + food -= (alive*2)*3 + fuel -= 15 + turns += 1 + event = null + else if(href_list["useengine"]) //use parts + engine -= 1 + event = null + else if(href_list["useelec"]) //use parts + electronics -= 1 + event = null + else if(href_list["usehull"]) //use parts + hull -= 1 + event = null + else if(href_list["wait"]) //wait 3 days + food -= (alive*2)*3 + event = null + else if(href_list["keepspeed"]) //keep speed + if(prob(75)) + event = "Breakdown" + event() + else + event = null + else if(href_list["blackhole"]) //keep speed past a black hole + if(prob(75)) + event = "BlackHole" + event() + else + event = null + else if(href_list["holedeath"]) + gameover = 1 + event = null + else if(href_list["eventclose"]) //end an event + event = null + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + + +/obj/machinery/computer/arcade/orion_trail/proc/event() + eventdat = "

    [event]

    " + if(event == "Raiders") + eventdat += "Raiders have come aboard your ship!" + if(prob(50)) + var/sfood = rand(1,10) + var/sfuel = rand(1,10) + food -= sfood + fuel -= sfuel + eventdat += "
    They have stolen [sfood] Food and [sfuel] Fuel." + else if(prob(10)) + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] tried to fight back but was killed." + alive -= 1 + else + eventdat += "
    Fortunately you fended them off without any trouble." + eventdat += "

    Continue

    " + eventdat += "

    Close

    " + + else if(event == "Interstellar Flux") + eventdat += "This region of space is highly turbulent.
    If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." + eventdat += "
    What will you do?" + eventdat += "

    Slow Down Continue

    " + eventdat += "

    Close

    " + + else if(event == "Illness") + eventdat += "A deadly illness has been contracted!" + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] was killed by the disease." + alive -= 1 + eventdat += "

    Continue

    " + eventdat += "

    Close

    " + + else if(event == "Breakdown") + eventdat += "Oh no! The engine has broken down!" + eventdat += "
    You can repair it with an engine part, or you can make reapirs for 3 days." + if(engine >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "Malfunction") + eventdat += "The ship's systems are malfunctioning!" + eventdat += "
    You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." + if(electronics >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "Collision") + eventdat += "Something hit us! Looks like there's some hull damage." + if(prob(25)) + var/sfood = rand(5,15) + var/sfuel = rand(5,15) + food -= sfood + fuel -= sfuel + eventdat += "
    [sfood] Food and [sfuel] Fuel was vented out into space." + if(prob(10)) + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] was killed by rapid depressurization." + alive -= 1 + eventdat += "
    You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." + if(hull >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "BlackHole") + eventdat += "You were swept away into the black hole." + eventdat += "

    Oh...

    " + eventdat += "

    Close

    " + + + +/obj/machinery/computer/arcade/orion_trail/proc/win() + playing = 0 + var/prizeselect = pickweight(prizes) + new prizeselect(src.loc) \ No newline at end of file diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index eda624aa1d4..5e5fd3cc279 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -109,6 +109,10 @@ name = "circuit board (Arcade)" build_path = "/obj/machinery/computer/arcade" origin_tech = "programming=1" +/obj/item/weapon/circuitboard/orion_trail + name = "circuit board (Orion_Trail)" + build_path = "/obj/machinery/computer/arcade/orion_trail" + origin_tech = "programming=2" /obj/item/weapon/circuitboard/turbine_control name = "circuit board (Turbine control)" build_path = "/obj/machinery/computer/turbine_computer" diff --git a/code/game/machinery/computer/orion_trail.dm b/code/game/machinery/computer/orion_trail.dm deleted file mode 100644 index acd29f16690..00000000000 --- a/code/game/machinery/computer/orion_trail.dm +++ /dev/null @@ -1,299 +0,0 @@ -/obj/machinery/computer/orion_trail - name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" - icon = 'icons/obj/computer.dmi' - icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/arcade - var/engine = 0 - var/hull = 0 - var/electronics = 0 - var/food = 80 - var/fuel = 60 - var/turns = 4 - var/gameover = 0 - var/playing = 0 - var/alive = 4 - var/eventdat = null - var/event = null - var/list/settlers = list("Harry","Larry","Bob") - var/list/events = list("Raiders" = 3, - "Interstellar Flux" = 1, - "Illness" = 3, - "Breakdown" = 2, - "Malfunction" = 2, - "Collision" = 1 - ) - // Sets up the main trail - var/list/stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") - var/list/stopblurbs = list( - "Long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", - "At the edge of the Sol system lies a treacherous asteroid belt, many have been crushed by stray asteroids and miss-guided judgement.", - "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres and traders.", - "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", - "Rigel Prime, the center of the Rigel system, burns hot, basking it's planetary bodies in warmth and radiation.", - "Tau Ceti Beta has recently become a way-point for colonists headed towards Orion. There are many ships and makeshift stations in the viscinity.", - "Sensors indicate a black-hole's gravitational field is affecting the region of space we were headed through. We could stay the course, but risk being over-come by it's gravity; or we could change course to go around, which will take longer.", - "You have come into range of the first man-made structure in this region of space. It has been constructed, not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonist's success.", - "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for man-kind!" - ) - - var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, - /obj/item/toy/AI = 2, - /obj/item/clothing/under/syndicate/tacticool = 2, - /obj/item/toy/sword = 2, - /obj/item/toy/gun = 2, - /obj/item/toy/crossbow = 2, - /obj/item/weapon/storage/box/fakesyndiesuit = 2, - /obj/item/weapon/storage/fancy/crayons = 2, - /obj/item/toy/spinningtoy = 2, - /obj/item/toy/prize/ripley = 1, - /obj/item/toy/prize/fireripley = 1, - /obj/item/toy/prize/deathripley = 1, - /obj/item/toy/prize/gygax = 1, - /obj/item/toy/prize/durand = 1, - /obj/item/toy/prize/honk = 1, - /obj/item/toy/prize/marauder = 1, - /obj/item/toy/prize/seraph = 1, - /obj/item/toy/prize/mauler = 1, - /obj/item/toy/prize/odysseus = 1, - /obj/item/toy/prize/phazon = 1 - ) - -/obj/machinery/computer/orion_trail/proc/newgame() - ..() - // Set names of settlers in crew - settlers = list() - var/list/settlernames = list("Bob","Henry","Joe","Mary","Jill","Mandy") - for(var/i = 1; i <= 3; i++) - var/choice = pick_n_take(settlernames) - settlers += choice - settlers += "[usr]" - // Re-set items to defaults - engine = 1 - hull = 1 - electronics = 1 - food = 80 - fuel = 60 - alive = 4 - turns = 1 - event = null - playing = 1 - gameover = 0 - -/obj/machinery/computer/orion_trail/attack_hand(mob/user as mob) - if(..()) - return - if(fuel <= 0 || food <=0 || settlers.len == 0) - gameover = 1 - event = null - user.set_machine(src) - var/dat = "" - if(gameover) - dat = "

    Game Over

    " - dat += "Like many before you, your crew never made it to Orion, lost to space...
    Forever." - dat += "

    OK...

    " - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - else if(event) - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(eventdat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - else if(playing) - var/title = stops[turns] - var/subtext = stopblurbs[turns] - dat = "

    [title]

    " - dat += "[subtext]" - dat += "

    Crew:

    " - dat += english_list(settlers) - dat += "
    Food: [food] | Fuel: [fuel]" - dat += "
    Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]
    " - if(turns == 7) - dat += "

    Go Around Continue

    " - else - dat += "

    Continue

    " - dat += "

    Close

    " - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - else - dat = "

    The Orion Trail

    " - dat += "

    Experience the journey of your ancestors!



    " - dat += "
    New Game
    " - dat += "

    Close

    " - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/orion_trail/Topic(href, href_list) - if(..()) - return - if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=arcade") - else if (href_list["continue"]) //Continue your travels - if(turns >= 9) - win() - else if(turns == 2) - if(prob(30)) - event = "Collision" - event() - food -= alive*2 - fuel -= 5 - turns += 1 - else - food -= alive*2 - fuel -= 5 - turns += 1 - if(prob(75)) - event = pickweight(events) - event() - else - food -= alive*2 - fuel -= 5 - turns += 1 - if(prob(75)) - event = pickweight(events) - event() - else if(href_list["newgame"]) //Reset everything - newgame() - else if(href_list["menu"]) //back to the main menu - playing = 0 - event = null - gameover = 0 - food = 80 - fuel = 60 - settlers = list("Harry","Larry","Bob") - else if(href_list["slow"]) //slow down - food -= alive*2 - fuel -= 5 - event = null - else if(href_list["pastblack"]) //slow down - food -= (alive*2)*3 - fuel -= 15 - turns += 1 - event = null - else if(href_list["useengine"]) //use parts - engine -= 1 - event = null - else if(href_list["useelec"]) //use parts - electronics -= 1 - event = null - else if(href_list["usehull"]) //use parts - hull -= 1 - event = null - else if(href_list["wait"]) //wait 3 days - food -= (alive*2)*3 - event = null - else if(href_list["keepspeed"]) //keep speed - if(prob(75)) - event = "Breakdown" - event() - else - event = null - else if(href_list["blackhole"]) //keep speed past a black hole - if(prob(75)) - event = "BlackHole" - event() - else - event = null - else if(href_list["holedeath"]) - gameover = 1 - event = null - else if(href_list["eventclose"]) //end an event - event = null - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - - -/obj/machinery/computer/orion_trail/proc/event() - eventdat = "

    [event]

    " - if(event == "Raiders") - eventdat += "Raiders have come aboard your ship!" - if(prob(50)) - var/sfood = rand(1,10) - var/sfuel = rand(1,10) - food -= sfood - fuel -= sfuel - eventdat += "
    They have stolen [sfood] Food and [sfuel] Fuel." - else if(prob(10)) - var/deadname = pick_n_take(settlers) - eventdat += "
    [deadname] tried to fight back but was killed." - alive -= 1 - else - eventdat += "
    Fortunately you fended them off without any trouble." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " - - else if(event == "Interstellar Flux") - eventdat += "This region of space is highly turbulent.
    If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." - eventdat += "
    What will you do?" - eventdat += "

    Slow Down Continue

    " - eventdat += "

    Close

    " - - else if(event == "Illness") - eventdat += "A deadly illness has been contracted!" - var/deadname = pick_n_take(settlers) - eventdat += "
    [deadname] was killed by the disease." - alive -= 1 - eventdat += "

    Continue

    " - eventdat += "

    Close

    " - - else if(event == "Breakdown") - eventdat += "Oh no! The engine has broken down!" - eventdat += "
    You can repair it with an engine part, or you can make reapirs for 3 days." - if(engine >= 1) - eventdat += "

    Use PartWait

    " - else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " - - else if(event == "Malfunction") - eventdat += "The ship's systems are malfunctioning!" - eventdat += "
    You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." - if(electronics >= 1) - eventdat += "

    Use PartWait

    " - else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " - - else if(event == "Collision") - eventdat += "Something hit us! Looks like there's some hull damage." - if(prob(25)) - var/sfood = rand(5,15) - var/sfuel = rand(5,15) - food -= sfood - fuel -= sfuel - eventdat += "
    [sfood] Food and [sfuel] Fuel was vented out into space." - if(prob(10)) - var/deadname = pick_n_take(settlers) - eventdat += "
    [deadname] was killed by rapid depressurization." - alive -= 1 - eventdat += "
    You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." - if(hull >= 1) - eventdat += "

    Use PartWait

    " - else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " - - else if(event == "BlackHole") - eventdat += "You were swept away into the black hole." - eventdat += "

    Oh...

    " - eventdat += "

    Close

    " - - - -/obj/machinery/computer/orion_trail/proc/win() - playing = 0 - var/prizeselect = pickweight(prizes) - new prizeselect(src.loc) \ No newline at end of file diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index fbae5f41ff2..fee08772848 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -259,6 +259,15 @@ datum/design/arcademachine materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/arcade" +datum/design/orion_trail + name = "Circuit Design (Orion Trail)" + desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine." + id = "arcademachine" + req_tech = list("programming" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "sacid" = 20) + build_path = "/obj/item/weapon/circuitboard/orion_trail" + datum/design/powermonitor name = "Circuit Design (Power Monitor)" desc = "Allows for the construction of circuit boards used to build a new power monitor" From 15d9a17158579d30b6cdc8ef756d71b32061b2ea Mon Sep 17 00:00:00 2001 From: cookingboy3 Date: Tue, 3 Dec 2013 16:36:44 -0800 Subject: [PATCH 087/315] Fixing typos in changelog.html --- html/changelog.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 87850384094..1967518f0f4 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -59,8 +59,8 @@ should be listed in the changelog upon commit tho. Thanks. -->

    12 March 2013

    cookingboy3 updated:

      -
    • Added two new buttons to the sandbox panel.
    • -
    • Removed canister menu, repaced it with buttons.
    • +
    • Added three new buttons to the sandbox panel.
    • +
    • Removed canister menu, replaced it with buttons.
    • Players can no longer spawn "dangerous" canisters in sandbox, such as Plasma, N20, CO2, and Nitrogen.

    -# You can also use any pixel decoder supported by PIL. For more -# information on available decoders, see the section Writing Your Own File Decoder. -#

    +# You can also use any pixel decoder supported by PIL. For more +# information on available decoders, see the section Writing Your Own File Decoder. +#

    From 12b43c997ed45a447441658cb12942ac45cb52ae Mon Sep 17 00:00:00 2001 From: Adrinus Date: Tue, 3 Dec 2013 20:11:57 -0500 Subject: [PATCH 088/315] Split up the arcade machines for future expansion. Added Game-Over explanations. A few tweaks and fixes. --- code/game/machinery/computer/arcade.dm | 63 +++++++++++-------- .../game/machinery/computer/buildandrepair.dm | 6 +- code/modules/research/designs.dm | 10 +-- 3 files changed, 46 insertions(+), 33 deletions(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index e910c3725d5..0e0efaafe63 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,17 +1,6 @@ -/obj/machinery/computer/arcade - name = "arcade machine" - desc = "Does not support Pinball." - icon = 'icons/obj/computer.dmi' - icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/arcade - var/enemy_name = "Space Villian" - var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc - var/player_hp = 30 //Player health/attack points - var/player_mp = 10 - var/enemy_hp = 45 //Enemy health/attack points - var/enemy_mp = 20 - var/gameover = 0 - var/blocked = 0 //Player cannot attack/heal while set +/obj/machinery/computer/arcade/ + name = "arcade" + desc = "generic arcade machine" var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, /obj/item/toy/AI = 2, /obj/item/clothing/under/syndicate/tacticool = 2, @@ -34,10 +23,25 @@ /obj/item/toy/prize/phazon = 1 ) -/obj/machinery/computer/arcade +/obj/machinery/computer/arcade/battle + name = "arcade machine" + desc = "Does not support Pinball." + icon = 'icons/obj/computer.dmi' + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/arcade + var/enemy_name = "Space Villian" + var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc + var/player_hp = 30 //Player health/attack points + var/player_mp = 10 + var/enemy_hp = 45 //Enemy health/attack points + var/enemy_mp = 20 + var/gameover = 0 + var/blocked = 0 //Player cannot attack/heal while set + +/obj/machinery/computer/arcade/battle var/turtle = 0 -/obj/machinery/computer/arcade/New() +/obj/machinery/computer/arcade/battle/New() ..() var/name_action var/name_part1 @@ -51,7 +55,7 @@ src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") src.name = (name_action + name_part1 + name_part2) -/obj/machinery/computer/arcade/attack_hand(mob/user as mob) +/obj/machinery/computer/arcade/battle/attack_hand(mob/user as mob) if(..()) return user.set_machine(src) @@ -78,7 +82,7 @@ popup.open() return -/obj/machinery/computer/arcade/Topic(href, href_list) +/obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) return @@ -143,7 +147,7 @@ src.updateUsrDialog() return -/obj/machinery/computer/arcade/proc/arcade_action() +/obj/machinery/computer/arcade/battle/proc/arcade_action() if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) if(!gameover) src.gameover = 1 @@ -217,7 +221,7 @@ return -/obj/machinery/computer/arcade/attackby(I as obj, user as mob) +/obj/machinery/computer/arcade/battle/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/card/emag) && !emagged) temp = "If you die in the game, you die for real!" player_hp = 30 @@ -238,7 +242,7 @@ ..() return -/obj/machinery/computer/arcade/emp_act(severity) +/obj/machinery/computer/arcade/battle/emp_act(severity) if(stat & (NOPOWER|BROKEN)) ..(severity) return @@ -265,7 +269,7 @@ desc = "Learn how our ancestors got to Orion, and have fun in the process!" icon = 'icons/obj/computer.dmi' icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/orion_trail + circuit = /obj/item/weapon/circuitboard/arcade/orion_trail var/engine = 0 var/hull = 0 var/electronics = 0 @@ -273,6 +277,7 @@ var/fuel = 60 var/turns = 4 var/playing = 0 + var/gameover = 0 var/alive = 4 var/eventdat = null var/event = null @@ -287,7 +292,7 @@ // Sets up the main trail var/list/stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") var/list/stopblurbs = list( - "Long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", + "Pluto, long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", "At the edge of the Sol system lies a treacherous asteroid belt, many have been crushed by stray asteroids and miss-guided judgement.", "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres and traders.", "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", @@ -328,7 +333,14 @@ if(gameover) dat = "

    Game Over

    " dat += "Like many before you, your crew never made it to Orion, lost to space...
    Forever." - dat += "

    OK...

    " + if(settlers.len == 0) + dat += "
    Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." + else + if(food <= 0) + dat += "
    You ran out of food and starved." + if(fuel <= 0) + dat += "
    You ran out of fuel, and drift, slowly, into a star." + dat += "

    OK...

    " var/datum/browser/popup = new(user, "arcade", "The Orion Trail") popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -440,6 +452,7 @@ event() else event = null + turns += 1 else if(href_list["holedeath"]) gameover = 1 event = null @@ -525,7 +538,7 @@ eventdat += "You were swept away into the black hole." eventdat += "

    Oh...

    " eventdat += "

    Close

    " - + settlers = list() /obj/machinery/computer/arcade/orion_trail/proc/win() diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 5e5fd3cc279..042e9fd62d2 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -105,11 +105,11 @@ name = "circuit board (Cloning)" build_path = "/obj/machinery/computer/cloning" origin_tech = "programming=3;biotech=3" -/obj/item/weapon/circuitboard/arcade +/obj/item/weapon/circuitboard/arcade/battle name = "circuit board (Arcade)" - build_path = "/obj/machinery/computer/arcade" + build_path = "/obj/machinery/computer/arcade/battle" origin_tech = "programming=1" -/obj/item/weapon/circuitboard/orion_trail +/obj/item/weapon/circuitboard/arcade/orion_trail name = "circuit board (Orion_Trail)" build_path = "/obj/machinery/computer/arcade/orion_trail" origin_tech = "programming=2" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index fee08772848..f0686ec1468 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -250,23 +250,23 @@ datum/design/clonescanner materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/clonescanner" -datum/design/arcademachine - name = "Circuit Design (Arcade Machine)" +datum/design/arcadebattle + name = "Circuit Design (Battle Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new arcade machine." id = "arcademachine" req_tech = list("programming" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade" + build_path = "/obj/item/weapon/circuitboard/arcade/battle" datum/design/orion_trail - name = "Circuit Design (Orion Trail)" + name = "Circuit Design (Orion Trail Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine." id = "arcademachine" req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/orion_trail" + build_path = "/obj/item/weapon/circuitboard/arcade/orion_trail" datum/design/powermonitor name = "Circuit Design (Power Monitor)" From ae4d023b6534f2cd615734a4bbd4fa01bddc8b69 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 3 Dec 2013 20:36:06 -0700 Subject: [PATCH 089/315] All votes have detailed results now. --- code/controllers/voting.dm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 393b46954a7..9817baaff3a 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -90,23 +90,23 @@ datum/controller/vote var/list/winners = get_result() var/text if(winners.len > 0) - if(mode == "custom") - text += "Vote Results:
    " - for(var/i=1,i<=choices.len,i++) - var/votes = choices[choices[i]] - if(!votes) votes = 0 - text += "[choices[i]]: [votes] ([(votes/clients.len)*100]%)
    " - else + if(question) text += "[question]" + else text += "[capitalize(mode)] Vote" + if(mode != "custom") if(winners.len > 1) - text = "Vote Tied Between:\n" + text = "\nVote Tied Between:" for(var/option in winners) - text += "\t[option]\n" + text += "\n\t[option]" . = pick(winners) - text += "Vote Result: [.]" + text += "\nVote Result: [.]" + for(var/i=1,i<=choices.len,i++) + var/votes = choices[choices[i]] + if(!votes) votes = 0 + text += "\n[choices[i]]: [votes] ([(votes/clients.len)*100]%)" else text += "Vote Result: Inconclusive - No Votes!" log_vote(text) - world << "[text]" + world << "\n[text]" return . proc/result() @@ -174,7 +174,7 @@ datum/controller/vote if(mode == "custom") text += "\n[question]" log_vote(text) - world << "[text]\nType vote to place your votes.\nYou have [config.vote_period/10] seconds to vote." + world << "\n[text]\nType vote to place your votes.\nYou have [config.vote_period/10] seconds to vote." time_remaining = round(config.vote_period/10) return 1 return 0 From 5f15506e387b07b2a107e56871b63bc73b5202ac Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 3 Dec 2013 22:25:28 -0700 Subject: [PATCH 090/315] Admin Notices Lets admins set temporary notices that will last until the end of the round. * All players that join the server will see this notice. * Anyone can check it using the Adminnotice verb * Also adds the motd verb that can be used to check the server's message of the day The intention of this is to make it easier for admins and server hosts to run special events. --- code/_globalvars/misc.dm | 1 + code/game/verbs/ooc.dm | 23 ++++++++++++++++++++++- code/modules/admin/admin.dm | 19 +++++++++++++++++++ code/modules/admin/admin_verbs.dm | 2 ++ code/modules/mob/new_player/login.dm | 3 +++ 5 files changed, 47 insertions(+), 1 deletion(-) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 1a2880b341a..bbe0c4d31cd 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -1,5 +1,6 @@ var/global/obj/effect/overlay/plmaster = null // atmospheric overlay for plasma var/global/obj/effect/overlay/slmaster = null // atmospheric overlay for sleeping gas +var/admin_notice = null // Admin notice that all clients see when joining the server // nanomanager, the manager for Nano UIs diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 51c297fb101..87289267d97 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -76,4 +76,25 @@ var/global/normal_ooc_colour = "#002eb8" prefs.ooccolor = sanitize_ooccolor(new_ooccolor) prefs.save_preferences() feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return \ No newline at end of file + return + +//Checks admin notice +/client/verb/admin_notice() + set name = "Adminnotice" + set category = "Admin" + set desc ="Check the admin notice if it has been set" + + if(admin_notice) + src << "\blue Admin Notice:\n \t [admin_notice]" + else + src << "\blue There are no admin notices at the moment." + +/client/verb/motd() + set name = "MOTD" + set category = "OOC" + set desc ="Check the Message of the Day" + + if(join_motd) + src << "
    [join_motd]
    " + else + src << "\blue The Message of the Day has not been set." \ No newline at end of file diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index ac4c3405b90..49b56f9e2bd 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -537,6 +537,25 @@ var/global/floorIsLava = 0 log_admin("Announce: [key_name(usr)] : [message]") feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/datum/admins/proc/set_admin_notice() + set category = "Special Verbs" + set name = "Set Admin Notice" + set desc ="Set an announcement that appears to everyone who joins the server. Only lasts this round" + if(!check_rights(0)) return + + admin_notice = input(src,"Set a public notice for this round. Everyone who joins the server will see it.\n(Leaving it blank will delete the current notice):","Set Notice",null) as null|message + switch(admin_notice) + if(null) + return + if("") + message_admins("[key_name(usr)] removed the admin notice.") + log_admin("[key_name(usr)] removed the admin notice:\n[admin_notice]") + return + message_admins("[key_name(usr)] set the admin notice.") + log_admin("[key_name(usr)] set the admin notice:\n[admin_notice]") + world << "\blue Admin Notice:\n \t [admin_notice]" + feedback_add_details("admin_verb","SAN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /datum/admins/proc/toggleooc() set category = "Server" set desc="Toggle dis bitch" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 745d9cd6caa..a098cf02d2c 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -27,6 +27,7 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/ /datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/ /datum/admins/proc/announce, /*priority announce something to all clients.*/ + /datum/admins/proc/set_admin_notice,/*announcement all clients see when joining the server.*/ /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/ /client/proc/toggle_view_range, /*changes how far we can see*/ /datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/ @@ -138,6 +139,7 @@ var/list/admin_verbs_hideable = list( /datum/admins/proc/toggleenter, /datum/admins/proc/toggleguests, /datum/admins/proc/announce, + /datum/admins/proc/set_admin_notice, /client/proc/admin_ghost, /client/proc/toggle_view_range, /datum/admins/proc/view_txt_log, diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 534ce1a7c11..b067cc0618c 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -3,6 +3,9 @@ if(join_motd) src << "
    [join_motd]
    " + if(admin_notice) + src << "\blue Admin Notice:\n \t [admin_notice]" + if(!mind) mind = new /datum/mind(key) mind.active = 1 From a9d6f493dcda0b00d526e68dcf972e6ab3bdf370 Mon Sep 17 00:00:00 2001 From: Perakp Date: Wed, 4 Dec 2013 09:23:21 +0200 Subject: [PATCH 091/315] Deleted checks from alien_embryo No double checks. --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index a745cc1f7f0..c12e5b31611 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -11,12 +11,8 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds var/stage = 0 /obj/item/alien_embryo/New() - if(istype(loc, /mob/living)) affected_mob = loc - if(affected_mob.getlimb(/obj/item/organ/limb/robot/chest) || affected_mob.status_flags & XENO_HOST) //If our Victim is augmented in the chest, No Babby - RR - del(src) - return affected_mob.status_flags |= XENO_HOST processing_objects.Add(src) spawn(0) From 37db377efa34720d0e2c0910fb246cc7e286f16b Mon Sep 17 00:00:00 2001 From: KazeEspada Date: Wed, 4 Dec 2013 01:03:00 -0700 Subject: [PATCH 092/315] Wooden pipes are now 100 times more classy with a unique on mob sprite courtesy of Nienhaus. Fixes issue #1400. --- icons/mob/mask.dmi | Bin 25845 -> 27052 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 18f1823b4b873f2b555a840e29fe0abacbc4138a..ee94f54395b5e5aa605baa8582c6fbdd9911153d 100644 GIT binary patch literal 27052 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 literal 25845 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 Date: Wed, 4 Dec 2013 10:03:12 +0200 Subject: [PATCH 093/315] Fixed not blowing up properly. Use closet ex_act instead. --- .../structures/crates_lockers/crates.dm | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index e7597bd61a7..ab397404dcc 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -378,23 +378,3 @@ src.req_access += pick(get_all_accesses()) ..() - -/obj/structure/closet/crate/ex_act(severity) - switch(severity) - if(1.0) - for(var/obj/O in src.contents) - del(O) - del(src) - return - if(2.0) - for(var/obj/O in src.contents) - if(prob(50)) - del(O) - del(src) - return - if(3.0) - if (prob(50)) - del(src) - return - else - return From dce8abbd063274176eb75678b8dd9bb9a22197c8 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Wed, 4 Dec 2013 08:13:56 -0700 Subject: [PATCH 094/315] Input window will now have the current admin notice displayed when you go edit it. --- code/modules/admin/admin.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 49b56f9e2bd..1f26ad0e918 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -543,7 +543,7 @@ var/global/floorIsLava = 0 set desc ="Set an announcement that appears to everyone who joins the server. Only lasts this round" if(!check_rights(0)) return - admin_notice = input(src,"Set a public notice for this round. Everyone who joins the server will see it.\n(Leaving it blank will delete the current notice):","Set Notice",null) as null|message + admin_notice = input(src,"Set a public notice for this round. Everyone who joins the server will see it.\n(Leaving it blank will delete the current notice):","Set Notice",admin_notice) as null|message switch(admin_notice) if(null) return From 482eb7a041f5762d2b70cf6b2e096d2e4d1ed2c4 Mon Sep 17 00:00:00 2001 From: Adrinus Date: Wed, 4 Dec 2013 13:13:09 -0500 Subject: [PATCH 095/315] Made the parent arcade machine a "randomized" arcade. Mapper can place the parent, and it will auto-magically become one of the existing arcade machines. This code should work for any future arcade machines. --- code/game/machinery/computer/arcade.dm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 0e0efaafe63..ff346067897 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,6 +1,8 @@ /obj/machinery/computer/arcade/ - name = "arcade" - desc = "generic arcade machine" + name = "random arcade" + desc = "random arcade machine" + icon = 'icons/obj/computer.dmi' + icon_state = "arcade" var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, /obj/item/toy/AI = 2, /obj/item/clothing/under/syndicate/tacticool = 2, @@ -23,6 +25,12 @@ /obj/item/toy/prize/phazon = 1 ) +/obj/machinery/computer/arcade/New() + ..() + var/choice = pick(typesof(/obj/machinery/computer/arcade) - /obj/machinery/computer/arcade) + new choice(loc) + del(src) + /obj/machinery/computer/arcade/battle name = "arcade machine" desc = "Does not support Pinball." @@ -42,7 +50,6 @@ var/turtle = 0 /obj/machinery/computer/arcade/battle/New() - ..() var/name_action var/name_part1 var/name_part2 @@ -289,9 +296,13 @@ "Malfunction" = 2, "Collision" = 1 ) + var/list/stops = list() + var/list/stopblurbs = list() + +/obj/machinery/computer/arcade/orion_trail/New() // Sets up the main trail - var/list/stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") - var/list/stopblurbs = list( + stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") + stopblurbs = list( "Pluto, long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", "At the edge of the Sol system lies a treacherous asteroid belt, many have been crushed by stray asteroids and miss-guided judgement.", "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres and traders.", @@ -303,7 +314,6 @@ "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for man-kind!" ) - /obj/machinery/computer/arcade/orion_trail/proc/newgame() // Set names of settlers in crew settlers = list() From 530dd0328633924ccceba5e1d50d9207fc82bff1 Mon Sep 17 00:00:00 2001 From: Rolan7 Date: Wed, 4 Dec 2013 18:44:49 -0500 Subject: [PATCH 096/315] Making astroturf and sandstone now automatically stacks all the produced items. --- code/modules/hydroponics/grown.dm | 9 +++++---- code/modules/mining/ores_coins.dm | 8 +++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index e1696d99f1b..fa5ce38e984 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -716,12 +716,13 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) user << "You prepare the astroturf." - // Copied Urist's from sandstone-creation code: var/location = get_turf(user) - for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/grassToConvert in location) - new /obj/item/stack/tile/grass(location) + var/grassAmt = 1 // The grass we're holding + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/grassToConvert in location) // The grass on the floor + grassAmt += 1 del(grassToConvert) - new /obj/item/stack/tile/grass(location) + var/obj/item/stack/tile/newAstroturf = new /obj/item/stack/tile/grass(location) + newAstroturf.amount = grassAmt del(src) /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index d35dbd733cc..60ce30b3917 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -22,10 +22,12 @@ attack_self(mob/living/user as mob) //It's magic I ain't gonna explain how instant conversion with no tool works. -- Urist var/location = get_turf(user) - for(var/obj/item/weapon/ore/glass/sandToConvert in location) - new /obj/item/stack/sheet/mineral/sandstone(location) + var/sandAmt = 1 // The sand we're holding + for(var/obj/item/weapon/ore/glass/sandToConvert in location) // The sand on the floor + sandAmt += 1 del(sandToConvert) - new /obj/item/stack/sheet/mineral/sandstone(location) + var/obj/item/stack/sheet/mineral/newSandstone = new /obj/item/stack/sheet/mineral/sandstone(location) + newSandstone.amount = sandAmt del(src) /obj/item/weapon/ore/plasma From 4b52884913383c06c9f33bda0a84634edbc891dc Mon Sep 17 00:00:00 2001 From: KazeEspada Date: Wed, 4 Dec 2013 18:10:43 -0700 Subject: [PATCH 097/315] Fixes a potential issue with lootspawners who have lootcounts longer than their loot list and lootdoubles not enabled. --- code/modules/awaymissions/loot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/awaymissions/loot.dm b/code/modules/awaymissions/loot.dm index 948def54681..65e78dd968b 100644 --- a/code/modules/awaymissions/loot.dm +++ b/code/modules/awaymissions/loot.dm @@ -8,7 +8,7 @@ /obj/effect/spawner/lootdrop/initialize() if(loot && loot.len) for(var/i = lootcount, i > 0, i--) - if(!loot.len) return + if(!loot.len) break var/lootspawn = pick(loot) if(!lootdoubles) loot.Remove(lootspawn) From 4ac8a4164c5e7ebee7c2c98501b2080c4cc82d7d Mon Sep 17 00:00:00 2001 From: Incoming Date: Wed, 4 Dec 2013 21:00:36 -0500 Subject: [PATCH 098/315] Summon Magic / Charge / Wands&Staffs / One time spellbooks / New Apprentice --- Summon Magic: This new wizard spell works much like summon guns except it instead brings the crew magical tools and weapons. There are preexisting artifacts (minus some that would cause huge confusion/balance issues) as well as new spellbooks, wands, and a staff. The chance of survivor antag is the same as summon guns. --- Charge: This new spell allows for the recharging of otherwise unrefillable wands, but there's a heavy chance that the total number of charges will decrease with each casting until eventually they're impossible to keep recharging. As a bonus the charge spell can also be used to charge batteries and things that run on batteries (such as energy weapons). This carries the same max charge weardown penalties however. Lastly this spell allows a wizard to charge other wizards with a grab, reseting their spell cooldown. They cannot use it to charge themselves. It has a 60 second cooldown. The wizard cannot buy this spell himself, it only comes randomly to the crew during Summon Magic and with the new apprentice loadout. --- Wands&Staffs: Magic weapons have been overhauled into their own catagory so there won't be any more weirdness with batteries in staves or apparent magic resistance on things that reflect energy weapons. Wands have been added, these wands come precharged with a number of shots that can be fired off at their leasure but cannot be recharged once emptied (unless the charge spell is used). They come in a varity of exciting flavors: *Death: Slays instantly but has very few shots (1 to 3) *Resurrection: Revives and/or heals instantly but has very few shots (1 to 3) *Polymorph: Same function as the staff of change *Teleport: Weaponized blink spell that doesn't respect space tiles and can also warp away machinery or items (but not turf) *Door Creation: Puts easy access wooden doors in walls *Fireball: Same function (but slightly lower damage) as the fireball spell *Nothing: Lame and useless Wands can also be used on the user (unlike staves) by clicking on them. Warning messages have been added to a few wands so people don't accidentally zap themselves with the wand of death unless they really want to. Wands cannot be aquired by the wizard directly, and are only spawned during castings of summon magic. There is also a new staff, the staff of healing, which works as a recharging version of the wand of resurrection. The new apprentice starts with one of these, and they can also be found during summon magic. The wizard cannot purchase it directly, and as a stave he could not use it on himself anyways. --- One time spellbooks: Found exclusively in summon magic are one time use spellbooks that can teach any player a robeless spell. Once read the book vanishes. Books come in the following flavors: *fireball *smoke *blind *mindswap *forcewall *knock *curse of the horsemen *charge (described above) --- New apprentice: A fourth loadout for apprentice wizards has been added. This wizard is intended as a support role and comes with forcewall (for cover) and charge (used to keep him and the wizard well stocked in laser weaponry or to restore the wizard's cooldowns). It also comes equiped with a free Staff of Healing for keeping the wizard alive. Shoot the medic first folks. --- code/datums/spells/charge.dm | 74 ++++++ code/game/gamemodes/wizard/artefact.dm | 7 + code/game/gamemodes/wizard/rightandwrong.dm | 141 ++++++---- code/game/gamemodes/wizard/spellbook.dm | 95 ++++++- code/game/machinery/recharger.dm | 2 - code/game/machinery/turrets.dm | 2 +- .../projectiles/guns/energy/special.dm | 49 ---- code/modules/projectiles/guns/magic.dm | 56 ++++ code/modules/projectiles/guns/magic/staff.dm | 23 ++ code/modules/projectiles/guns/magic/wand.dm | 227 ++++++++++++++++ code/modules/projectiles/projectile/magic.dm | 249 ++++++++++++++++++ tgstation.dme | 49 +--- 12 files changed, 828 insertions(+), 146 deletions(-) create mode 100644 code/datums/spells/charge.dm create mode 100644 code/modules/projectiles/guns/magic.dm create mode 100644 code/modules/projectiles/guns/magic/staff.dm create mode 100644 code/modules/projectiles/guns/magic/wand.dm create mode 100644 code/modules/projectiles/projectile/magic.dm diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm new file mode 100644 index 00000000000..0ace8c7d9cd --- /dev/null +++ b/code/datums/spells/charge.dm @@ -0,0 +1,74 @@ +/obj/effect/proc_holder/spell/targeted/charge + name = "Charge" + desc = "This spell can be used to charge up spent magical artifacts, among other things." + + school = "transmutation" + charge_max = 600 + clothes_req = 0 + invocation = "DIRI CEL" + invocation_type = "whisper" + range = -1 + cooldown_min = 400 //50 deciseconds reduction per rank + include_user = 1 + + +/obj/effect/proc_holder/spell/targeted/charge/cast(list/targets) + for(var/mob/living/user in targets) + var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand()) + var/charged_item = null + var/burnt_out = 0 + world << "[user.l_hand] and [user.r_hand]" + for(var/obj/item in hand_items) + if(istype(item, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = item + if(G.affecting) + var/mob/M = G.affecting + if(M.spell_list.len != 0) + for(var/obj/effect/proc_holder/spell/S in M.spell_list) + S.charge_counter = S.charge_max + M <<"\blue you feel raw magic flowing through you, it feels good!" + else + M <<"\blue you feel very strange for a moment, but then it passes." + burnt_out = 1 + charged_item = M + break + else if(istype(item, /obj/item/weapon/gun/magic)) + var/obj/item/weapon/gun/magic/I = item + if(prob(80)) + I.max_charges-- + if(I.max_charges <= 0) + I.max_charges = 0 + burnt_out = 1 + I.charges = I.max_charges + charged_item = I + break + else if(istype(item, /obj/item/weapon/cell/)) + var/obj/item/weapon/cell/C = item + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 + C.charge = C.maxcharge + charged_item = C + break + else if(item.contents) + var/obj/I = null + for(I in item.contents) + if(istype(I, /obj/item/weapon/cell/)) + var/obj/item/weapon/cell/C = I + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 + C.charge = C.maxcharge + item.update_icon() + charged_item = item + break + if(!charged_item) + user << "\blue you feel magical power surging to your hands, but the feeling rapidly fades..." + else if(burnt_out) + user << "\red [charged_item] doesn't seem to be reacting to the spell..." + else + user << "\blue [charged_item] suddenly feels very warm!" diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 5bad56a6135..3d404dfc846 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -27,6 +27,8 @@ dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
    " dat += "Bluespace Manipulation
    " dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
    " + dat += "Healing
    " + dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
    " dat += "Robeless
    " dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
    " user << browse(dat, "window=radio") @@ -66,6 +68,11 @@ M.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(M) M.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(M) M << "Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt." + if("healing") + M.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(M) + M.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(M) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) + M << "Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall." if("robeless") M.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(M) M.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(M) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index c18732cdb01..4b0d7633e82 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -1,8 +1,8 @@ -/mob/proc/rightandwrong() - usr << "You summoned guns!" - message_admins("[key_name_admin(usr, 1)] summoned guns!") +/mob/proc/rightandwrong(var/summon_type) //0 = Summon Guns, 1 = Summon Magic + usr << "You summoned [summon_type ? "magic" : "guns"]!" + message_admins("[key_name_admin(usr, 1)] summoned [summon_type ? "magic" : "guns"]!") for(var/mob/living/carbon/human/H in player_list) if(H.stat == 2 || !(H.client)) continue if(is_special_character(H)) continue @@ -18,46 +18,95 @@ for(var/datum/objective/OBJ in H.mind.objectives) H << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ - var/randomize = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") - switch (randomize) - if("taser") - new /obj/item/weapon/gun/energy/taser(get_turf(H)) - if("egun") - new /obj/item/weapon/gun/energy/gun(get_turf(H)) - if("laser") - new /obj/item/weapon/gun/energy/laser(get_turf(H)) - if("revolver") - new /obj/item/weapon/gun/projectile/revolver(get_turf(H)) - if("detective") - new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H)) - if("smg") - new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H)) - if("nuclear") - new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H)) - if("deagle") - new /obj/item/weapon/gun/projectile/automatic/deagle/camo(get_turf(H)) - if("gyrojet") - new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) - if("pulse") - new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(H)) - if("silenced") - new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H)) - new /obj/item/weapon/silencer(get_turf(H)) - if("cannon") - new /obj/item/weapon/gun/energy/lasercannon(get_turf(H)) - if("doublebarrel") - new /obj/item/weapon/gun/projectile/revolver/doublebarrel(get_turf(H)) - if("shotgun") - new /obj/item/weapon/gun/projectile/shotgun/(get_turf(H)) - if("combatshotgun") - new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H)) - if("mateba") - new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) - if("smg") - new /obj/item/weapon/gun/projectile/automatic(get_turf(H)) - if("uzi") - new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H)) - if("crossbow") - new /obj/item/weapon/gun/energy/crossbow(get_turf(H)) - if("saw") - new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H)) \ No newline at end of file + var/randomizeguns = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") + var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffanimation", "staffhealing", "armor", "scrying") + if(!summon_type) + switch (randomizeguns) + if("taser") + new /obj/item/weapon/gun/energy/taser(get_turf(H)) + if("egun") + new /obj/item/weapon/gun/energy/gun(get_turf(H)) + if("laser") + new /obj/item/weapon/gun/energy/laser(get_turf(H)) + if("revolver") + new /obj/item/weapon/gun/projectile/revolver(get_turf(H)) + if("detective") + new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H)) + if("smg") + new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H)) + if("nuclear") + new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H)) + if("deagle") + new /obj/item/weapon/gun/projectile/automatic/deagle/camo(get_turf(H)) + if("gyrojet") + new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) + if("pulse") + new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(H)) + if("silenced") + new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H)) + new /obj/item/weapon/silencer(get_turf(H)) + if("cannon") + new /obj/item/weapon/gun/energy/lasercannon(get_turf(H)) + if("doublebarrel") + new /obj/item/weapon/gun/projectile/revolver/doublebarrel(get_turf(H)) + if("shotgun") + new /obj/item/weapon/gun/projectile/shotgun/(get_turf(H)) + if("combatshotgun") + new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H)) + if("mateba") + new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) + if("smg") + new /obj/item/weapon/gun/projectile/automatic(get_turf(H)) + if("uzi") + new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H)) + if("crossbow") + new /obj/item/weapon/gun/energy/crossbow(get_turf(H)) + if("saw") + new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H)) + else + switch (randomizemagic) + if("fireball") + new /obj/item/weapon/spellbook/oneuse/fireball(get_turf(H)) + if("smoke") + new /obj/item/weapon/spellbook/oneuse/smoke(get_turf(H)) + if("blind") + new /obj/item/weapon/spellbook/oneuse/blind(get_turf(H)) + if("mindswap") + new /obj/item/weapon/spellbook/oneuse/mindswap(get_turf(H)) + if("forcewall") + new /obj/item/weapon/spellbook/oneuse/forcewall(get_turf(H)) + if("knock") + new /obj/item/weapon/spellbook/oneuse/knock(get_turf(H)) + if("horsemask") + new /obj/item/weapon/spellbook/oneuse/horsemask(get_turf(H)) + if("charge") + new /obj/item/weapon/spellbook/oneuse/charge(get_turf(H)) + if("wandnothing") + new /obj/item/weapon/gun/magic/wand(get_turf(H)) + if("wanddeath") + new /obj/item/weapon/gun/magic/wand/death(get_turf(H)) + if("wandresurrection") + new /obj/item/weapon/gun/magic/wand/resurrection(get_turf(H)) + if("wandpolymorph") + new /obj/item/weapon/gun/magic/wand/polymorph(get_turf(H)) + if("wandteleport") + new /obj/item/weapon/gun/magic/wand/teleport(get_turf(H)) + if("wanddoor") + new /obj/item/weapon/gun/magic/wand/door(get_turf(H)) + if("staffchange") + new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) + if("staffanimation") + new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) + if("staffhealing") + new /obj/item/weapon/gun/magic/staff/healing(get_turf(H)) + if("armor") + new /obj/item/clothing/suit/space/rig/wizard(get_turf(H)) + new /obj/item/clothing/head/helmet/space/rig/wizard(get_turf(H)) + if("scrying") + new /obj/item/weapon/scrying(get_turf(H)) + if (!(XRAY in H.mutations)) + H.mutations.Add(XRAY) + H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + H.see_in_dark = 8 + H.see_invisible = SEE_INVISIBLE_LEVEL_TWO + H << "\blue The walls suddenly disappear." diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 156554d486d..055e887981f 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -86,6 +86,9 @@ dat += "Summon Guns (One time use, global spell)
    " dat += "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill eachother. Just be careful not to get hit in the crossfire!
    " + dat += "Summon Magic (One time use, global spell)
    " + dat += "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time.
    " + dat += "
    " dat += "Artefacts:
    " dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.
    " @@ -150,7 +153,7 @@ uses-- /* */ - var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation") + var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", summonmagic = "Summon Magic", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation") var/already_knows = 0 for(var/obj/effect/proc_holder/spell/aspell in H.spell_list) if(available_spells[href_list["spell_choice"]] == initial(aspell.name)) @@ -246,12 +249,17 @@ temp = "You have learned flesh to stone." if("summonguns") feedback_add_details("wizard_spell_learned","SG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.rightandwrong() + H.rightandwrong(0) max_uses-- temp = "You have cast summon guns." + if("summonmagic") + feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.rightandwrong(1) + max_uses-- + temp = "You have cast summon magic." if("staffchange") feedback_add_details("wizard_spell_learned","ST") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff(get_turf(H)) + new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) temp = "You have purchased a staff of change." max_uses-- if("soulstone") @@ -270,7 +278,7 @@ max_uses-- if("staffanimation") feedback_add_details("wizard_spell_learned","SA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff/animate(get_turf(H)) + new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) temp = "You have purchased a staff of animation." max_uses-- if("contract") @@ -295,3 +303,82 @@ attack_self(H) return + +//Single Use Spellbooks// + +/obj/item/weapon/spellbook/oneuse + var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic + var/spellname = "sandbox" + name = "spellbook of " + uses = 1 + max_uses = 1 + desc = "This template spellbook was never meant for the eyes of man..." + +/obj/item/weapon/spellbook/oneuse/New() + ..() + name += spellname + +/obj/item/weapon/spellbook/oneuse/attack_self(mob/user as mob) + var/obj/effect/proc_holder/spell/S = new spell + for(var/obj/effect/proc_holder/spell/knownspell in user.spell_list) + if(knownspell.type == S.type) + if(user.mind) + if(user.mind.special_role == "apprentice" || user.mind.special_role == "wizard") + user <<"\blue You're already far more versed in this spell than this flimsy how-to book can provide." + else + user <<"\blue You've already read this one." + return + user.spell_list += S + user <<"\blue you rapidly read through the arcane book. Suddenly it vanishes and you realize you understand [spellname]!" + del (src) + +/obj/item/weapon/spellbook/oneuse/attackby() + return + +/obj/item/weapon/spellbook/oneuse/fireball + spell = /obj/effect/proc_holder/spell/dumbfire/fireball + spellname = "fireball" + icon_state ="book2" + desc = "This book feels warm to the touch." + +/obj/item/weapon/spellbook/oneuse/smoke + spell = /obj/effect/proc_holder/spell/targeted/smoke + spellname = "smoke" + icon_state ="book5" + desc = "This book is overflowing with the dank arts." + +/obj/item/weapon/spellbook/oneuse/blind + spell = /obj/effect/proc_holder/spell/targeted/trigger/blind + spellname = "blind" + icon_state ="book1" + desc = "This book looks blurry, no matter how you look at it." + +/obj/item/weapon/spellbook/oneuse/mindswap + spell = /obj/effect/proc_holder/spell/targeted/mind_transfer + spellname = "mindswap" + icon_state ="book6" + desc = "This book's cover is pristine, though its pages look ragged and torn." + +/obj/item/weapon/spellbook/oneuse/forcewall + spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall + spellname = "forcewall" + icon_state ="book4" + desc = "This book has a dedication to mimes everywhere inside the front cover." + +/obj/item/weapon/spellbook/oneuse/knock + spell = /obj/effect/proc_holder/spell/aoe_turf/knock + spellname = "knock" + icon_state ="book7" + desc = "This book is hard to hold closed properly." + +/obj/item/weapon/spellbook/oneuse/horsemask + spell = /obj/effect/proc_holder/spell/targeted/horsemask + spellname = "horses" + icon_state ="book3" + desc = "This book is more horse than your mind has room for." + +/obj/item/weapon/spellbook/oneuse/charge + spell = /obj/effect/proc_holder/spell/targeted/charge + spellname = "charging" + icon_state ="bookInfections" + desc = "This book is made of 100% post-consumer wizard." \ No newline at end of file diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 4968f427ea2..11668d874c5 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -25,8 +25,6 @@ if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow)) user << "Your gun's recharge port was removed to make room for a miniaturized reactor." return - if (istype(G, /obj/item/weapon/gun/energy/staff)) - return user.drop_item() G.loc = src charging = G diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 39da02b0e1d..2316f12f45a 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -219,7 +219,7 @@ if(3) A = new /obj/item/projectile/beam/pulse( loc ) if(4) - A = new /obj/item/projectile/change( loc ) + A = new /obj/item/projectile/magic/change( loc ) if(5) A = new /obj/item/projectile/bluetag( loc ) if(6) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 6b0d70beece..c1ed4531c26 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -26,55 +26,6 @@ charge_cost = 100 projectile_type = "/obj/item/projectile/energy/declone" -obj/item/weapon/gun/energy/staff - name = "staff of change" - desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" - icon = 'icons/obj/gun.dmi' - icon_state = "staffofchange" - item_state = "staffofchange" - fire_sound = 'sound/weapons/emitter.ogg' - flags = FPRINT | TABLEPASS | CONDUCT - slot_flags = SLOT_BACK - w_class = 5 - charge_cost = 200 - projectile_type = "/obj/item/projectile/change" - origin_tech = null - clumsy_check = 0 - var/charge_tick = 0 - - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(200) - return 1 - - update_icon() - return - - shoot_with_empty_chamber(mob/living/user as mob|obj) - user << "The [name] whizzles quietly." - return - -/obj/item/weapon/gun/energy/staff/animate - name = "staff of animation" - desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - projectile_type = "/obj/item/projectile/animate" - icon_state = "staffofanimation" - item_state = "staffofanimation" - /obj/item/weapon/gun/energy/floragun name = "floral somatoray" desc = "A tool that discharges controlled radiation which induces mutation in plant cells." diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm new file mode 100644 index 00000000000..c719bd4f663 --- /dev/null +++ b/code/modules/projectiles/guns/magic.dm @@ -0,0 +1,56 @@ +/obj/item/weapon/gun/magic + name = "staff of nothing" + desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years." + icon = 'icons/obj/gun.dmi' + icon_state = "staffofchange" + item_state = "staffofchange" + fire_sound = 'sound/weapons/emitter.ogg' + flags = FPRINT | TABLEPASS | CONDUCT + w_class = 5 + var/projectile_type = "/obj/item/projectile/magic" + var/max_charges = 6 + var/charges = 0 + var/recharge_rate = 4 + var/charge_tick = 0 + var/can_charge = 1 + origin_tech = null + clumsy_check = 0 + +/obj/item/weapon/gun/magic/emp_act(severity) + return + +/obj/item/weapon/gun/magic/process_chambered() + if(in_chamber) return 1 + if(!charges) return 0 + if(!projectile_type) return 0 + in_chamber = new projectile_type(src) + return 1 + +/obj/item/weapon/gun/magic/afterattack() + ..() + if(charges ) charges-- + +/obj/item/weapon/gun/magic/New() + ..() + charges = max_charges + if(can_charge) processing_objects.Add(src) + + +/obj/item/weapon/gun/magic/Del() + if(can_charge) processing_objects.Remove(src) + ..() + + +/obj/item/weapon/gun/magic/process() + charge_tick++ + if(charge_tick < recharge_rate || charges >= max_charges) return 0 + charge_tick = 0 + charges++ + return 1 + +/obj/item/weapon/gun/magic/update_icon() + return + +/obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) + user << "The [name] whizzles quietly." + return \ No newline at end of file diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm new file mode 100644 index 00000000000..cff5d6e603d --- /dev/null +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -0,0 +1,23 @@ +obj/item/weapon/gun/magic/staff/change + name = "staff of change" + desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" + projectile_type = "/obj/item/projectile/magic/change" + icon_state = "staffofchange" + item_state = "staffofchange" + slot_flags = SLOT_BACK + +obj/item/weapon/gun/magic/staff/animate + name = "staff of animation" + desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." + projectile_type = "/obj/item/projectile/magic/animate" + icon_state = "staffofanimation" + item_state = "staffofanimation" + slot_flags = SLOT_BACK + +obj/item/weapon/gun/magic/staff/healing + name = "staff of healing" + desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead." + projectile_type = "/obj/item/projectile/magic/resurrection" + icon_state = "staffofanimation" + item_state = "staffofanimation" + slot_flags = SLOT_BACK \ No newline at end of file diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm new file mode 100644 index 00000000000..479e1fda0c7 --- /dev/null +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -0,0 +1,227 @@ +/obj/item/weapon/gun/magic/wand/ + name = "wand of nothing" + desc = "It's not just a stick, it's a MAGIC stick!" + projectile_type = "/obj/item/projectile/magic" + icon_state = "staffofanimation" + item_state = "staffofanimation" + w_class = 2 + can_charge = 0 + max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) + w_class = 2 + +/obj/item/weapon/gun/magic/wand/New() + if(prob(75)) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges + if(prob(33)) + max_charges = Ceiling(max_charges / 3) + else + max_charges = Ceiling(max_charges / 2) + ..() + +/obj/item/weapon/gun/magic/wand/examine() + ..() + usr << "Has [charges] charge\s remaining." + return + +/obj/item/weapon/gun/magic/wand/attack_self(mob/living/user as mob) + if(charges) + zap_self(user) + else + user << "The [name] whizzles quietly." + ..() + +/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) + user.visible_message("\blue [user] zaps \himself with [src]!") + +/obj/item/weapon/gun/magic/wand/death + name = "wand of death" + desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." + projectile_type = "/obj/item/projectile/magic/death" + icon_state = "staffofanimation" + item_state = "staffofanimation" + max_charges = 3 //3, 2, 2, 1 + +/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) + if(alert(user, "You really want to zap yourself with the wand of death?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) + var/message ="\red You irradiate yourself with pure energy! " + message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") + user << message + user.adjustOxyLoss(500) + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/resurrection + name = "wand of resurrection" + desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." + projectile_type = "/obj/item/projectile/magic/resurrection" + icon_state = "staffofanimation" + item_state = "staffofanimation" + max_charges = 3 //3, 2, 2, 1 + +/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) + user.setToxLoss(0) + user.setOxyLoss(0) + user.setCloneLoss(0) + user.SetParalysis(0) + user.SetStunned(0) + user.SetWeakened(0) + user.radiation = 0 + user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss()) + user.reagents.clear_reagents() + user << "You feel great!" + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/polymorph + name = "wand of polymorph" + desc = "This wand inflicts is attuned to chaos and will radically alter the victim's form." + projectile_type = "/obj/item/projectile/magic/change" + icon_state = "staffofanimation" + item_state = "staffofanimation" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) + if(alert(user, "Your new form might not have arms to zap with... Continue?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) + if(user.monkeyizing) return + user.monkeyizing = 1 + user.canmove = 0 + user.icon = null + user.overlays.Cut() + user.invisibility = 101 + for(var/obj/item/W in user) + if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something + del(W) + continue + W.layer = initial(W.layer) + W.loc = user.loc + W.dropped(user) + + var/mob/living/new_mob + + var/randomize = pick("monkey","robot","slime","xeno","human","animal") + switch(randomize) + if("monkey") + new_mob = new /mob/living/carbon/monkey(user.loc) + new_mob.universal_speak = 1 + if("robot") + new_mob = new /mob/living/silicon/robot(user.loc) + new_mob.gender = user.gender + new_mob.invisibility = 0 + new_mob.job = "Cyborg" + var/mob/living/silicon/robot/Robot = new_mob + Robot.mmi = new /obj/item/device/mmi(new_mob) + Robot.mmi.transfer_identity(user) //Does not transfer key/client. + if("slime") + if(prob(50)) new_mob = new /mob/living/carbon/slime/adult(user.loc) + else new_mob = new /mob/living/carbon/slime(user.loc) + new_mob.universal_speak = 1 + if("xeno") + if(prob(50)) + new_mob = new /mob/living/carbon/alien/humanoid/hunter(user.loc) + else + new_mob = new /mob/living/carbon/alien/humanoid/sentinel(user.loc) + new_mob.universal_speak = 1 + if("animal") + var/animal = pick("parrot","corgi","crab","pug","cat","carp","bear","mushroom","tomato","mouse","chicken","cow","lizard","chick") + switch(animal) + if("parrot") new_mob = new /mob/living/simple_animal/parrot(user.loc) + if("corgi") new_mob = new /mob/living/simple_animal/corgi(user.loc) + if("crab") new_mob = new /mob/living/simple_animal/crab(user.loc) + if("pug") new_mob = new /mob/living/simple_animal/pug(user.loc) + if("cat") new_mob = new /mob/living/simple_animal/cat(user.loc) + if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(user.loc) + if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(user.loc) + if("mushroom") new_mob = new /mob/living/simple_animal/mushroom(user.loc) + if("tomato") new_mob = new /mob/living/simple_animal/tomato(user.loc) + if("mouse") new_mob = new /mob/living/simple_animal/mouse(user.loc) + if("chicken") new_mob = new /mob/living/simple_animal/chicken(user.loc) + if("cow") new_mob = new /mob/living/simple_animal/cow(user.loc) + if("lizard") new_mob = new /mob/living/simple_animal/lizard(user.loc) + else new_mob = new /mob/living/simple_animal/chick(user.loc) + new_mob.universal_speak = 1 + if("human") + new_mob = new /mob/living/carbon/human(user.loc) + + var/datum/preferences/A = new() //Randomize appearance for the human + A.copy_to(new_mob) + + var/mob/living/carbon/human/H = new_mob + ready_dna(H) + if(H.dna) + H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") + H.update_body() + else + return + + for (var/obj/effect/proc_holder/spell/S in user.spell_list) + new_mob.spell_list += new S.type + + new_mob.a_intent = "harm" + if(user.mind) + user.mind.transfer_to(new_mob) + else + new_mob.key = user.key + + new_mob << "Your form morphs into that of a [randomize]." + + del(user) + return new_mob + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/teleport + name = "wand of teleportation" + desc = "This wand will wrench targets through space and time to move them somewhere else." + projectile_type = "/obj/item/projectile/magic/teleport" + icon_state = "staffofanimation" + item_state = "staffofanimation" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) + var/list/turfs = new/list() + var/inner_tele_radius = 0 + var/outer_tele_radius = 6 + for(var/turf/T in range(user,outer_tele_radius)) + if(T in range(user,inner_tele_radius)) continue + if(T.x>world.maxx-outer_tele_radius || T.xworld.maxy-outer_tele_radius || T.yYou feel great!" + else + target << "You rise with a start, you're alive!!!" + +/obj/item/projectile/magic/teleport + name = "bolt of teleportation" + icon_state = "bluespace" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + var/inner_tele_radius = 0 + var/outer_tele_radius = 6 + +/obj/item/projectile/magic/teleport/on_hit(var/mob/target) + if(isturf(target)) + return + + var/list/turfs = new/list() + for(var/turf/T in range(target,outer_tele_radius)) + if(T in range(target,inner_tele_radius)) continue + if(T.x>world.maxx-outer_tele_radius || T.xworld.maxy-outer_tele_radius || T.yYour form morphs into that of a [randomize].
    " + + del(M) + return new_mob + +/obj/item/projectile/magic/animate + name = "bolt of animation" + icon_state = "red_1" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/animate/Bump(var/atom/change) + . = ..() + if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects)) + var/obj/O = change + new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) + else if(istype(change, /mob/living/simple_animal/hostile/mimic/copy)) + // Change our allegiance! + var/mob/living/simple_animal/hostile/mimic/copy/C = change + C.ChangeOwner(firer) \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 5bd8184b7dd..cbbb0dab917 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,48 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES @@ -216,6 +174,7 @@ #include "code\datums\helper_datums\teleport.dm" #include "code\datums\helper_datums\topic_input.dm" #include "code\datums\spells\area_teleport.dm" +#include "code\datums\spells\charge.dm" #include "code\datums\spells\conjure.dm" #include "code\datums\spells\construct_spells.dm" #include "code\datums\spells\dumbfire.dm" @@ -1122,6 +1081,7 @@ #include "code\modules\projectiles\ammunition\bullets.dm" #include "code\modules\projectiles\ammunition\magazines.dm" #include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\magic.dm" #include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" @@ -1129,15 +1089,16 @@ #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\magic\staff.dm" +#include "code\modules\projectiles\guns\magic\wand.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" -#include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\beams.dm" #include "code\modules\projectiles\projectile\bullets.dm" -#include "code\modules\projectiles\projectile\change.dm" #include "code\modules\projectiles\projectile\energy.dm" +#include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\special.dm" #include "code\modules\reagents\Chemistry-Colours.dm" #include "code\modules\reagents\Chemistry-Holder.dm" From 42d5cd529f96d552f4b143b2b176402e9294c0db Mon Sep 17 00:00:00 2001 From: cookingboy3 Date: Wed, 4 Dec 2013 18:28:11 -0800 Subject: [PATCH 099/315] Infinite cell button fix, more banned items. --- code/game/gamemodes/sandbox/h_sandbox.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 10af015777e..c861c214e4e 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -26,12 +26,14 @@ datum/hSB var/objinfo = null var/canisterinfo = null var/hsbinfo = null - + // This is a list of banned items, they've been banned due to being technical or just for grief. var/global/list/spawn_forbidden = list( /obj/item/weapon/grab, /obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you /obj/item/assembly,/obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai, /obj/item/device/uplink/hidden, /obj/item/smallDelivery, /obj/item/missile,/obj/item/projectile, - /obj/item/borg/sight,/obj/item/borg/overdrive,/obj/item/borg/stun) + /obj/item/borg/sight,/obj/item/borg/overdrive,/obj/item/borg/stun,/obj/item/organ, + /obj/item/alien_embryo,/obj/item/weapon/robot_module,/obj/item/weapon/storage/secure/safe, + /obj/item/weapon/veilrender,/obj/item/device/radio/intercom) proc update() @@ -56,7 +58,7 @@ datum/hSB "Spawn 50 Glass" = "hsbglass", "Spawn Full Cable Coil" = "hsbspawn&path=[/obj/item/weapon/cable_coil]", "Spawn Hyper Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/hyper]", - "Spawn Inf. Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/infinte]", + "Spawn Inf. Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/infinite]", "Spawn Rapid Construction Device" = "hsbrcd", "Spawn RCD Ammo" = "hsb_safespawn&path=[/obj/item/weapon/rcd_ammo]", "Spawn Airlock" = "hsbairlock", From f6f9f0f0509ed04fe60f3d38209b4f3fb771e9a2 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 5 Dec 2013 07:35:29 -0300 Subject: [PATCH 100/315] Removed a leftlover in click code and fixed changeling stings because they weren't working why aren't they working why don't they work, I keep asking that, it's a PR about changelings stings, but they don't work, why they don't work little black ball of destiny, I just want to know why they don't work on the PR that says that they will work, why why why --- code/_onclick/click.dm | 9 ++++----- code/modules/mob/living/carbon/carbon.dm | 2 -- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index fe1bc136e11..8eec31da915 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -59,6 +59,8 @@ if(stat || paralysis || stunned || weakened) return + face_atom(A) + if(next_move > world.time) // in the year 2000... return @@ -68,11 +70,6 @@ var/obj/mecha/M = loc return M.click_action(A,src) - var/obj/item/W = get_active_hand() - - if(W == null || !(W.flags & ABSTRACT)) - face_atom(A) - if(restrained()) RestrainedClickOn(A) return @@ -81,6 +78,8 @@ throw_item(A) return + var/obj/item/W = get_active_hand() + if(W == A) next_move = world.time + 6 if(W.flags&USEDELAY) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 2a06ec24238..871f9a7712a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -48,8 +48,6 @@ /mob/living/carbon/AltClickOn(var/atom/A) if(!src.stat && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) - if(world.time <= next_click) - return next_click = world.time + 5 call(src, src.mind.changeling.chosen_sting)(A) else From a0a01e840eaeb3fd9ee89c8eac07e7a42c0606c5 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 5 Dec 2013 08:19:52 -0300 Subject: [PATCH 101/315] Removed some items from the spawn_forbidden list of sandbox mode. That list is not for potential "grieff" items. --- code/game/gamemodes/sandbox/h_sandbox.dm | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index c861c214e4e..a96cf6d96d0 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -26,14 +26,12 @@ datum/hSB var/objinfo = null var/canisterinfo = null var/hsbinfo = null - // This is a list of banned items, they've been banned due to being technical or just for grief. + //items that shouldn't spawn on the floor because they would bug or act weird var/global/list/spawn_forbidden = list( /obj/item/weapon/grab, /obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you /obj/item/assembly,/obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai, /obj/item/device/uplink/hidden, /obj/item/smallDelivery, /obj/item/missile,/obj/item/projectile, - /obj/item/borg/sight,/obj/item/borg/overdrive,/obj/item/borg/stun,/obj/item/organ, - /obj/item/alien_embryo,/obj/item/weapon/robot_module,/obj/item/weapon/storage/secure/safe, - /obj/item/weapon/veilrender,/obj/item/device/radio/intercom) + /obj/item/borg/sight,/obj/item/borg/overdrive,/obj/item/borg/stun,/obj/item/weapon/robot_module) proc update() @@ -85,11 +83,10 @@ datum/hSB hsbinfo += "- Toggle Object Spawning
    " hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " hsbinfo += "Canister Spawning
    " - hsbinfo += "Remember, the first rule about adminbuse, is don't talk about the adminbuse
    " - hsbinfo += "- !!!DANGER!!! Spawn Plasma Canister
    " - hsbinfo += "- !!!DANGER!!! Spawn CO2 Canister
    " - hsbinfo += "- !!!DANGER!!! Spawn Nitrogen Canister
    " - hsbinfo += "- !!!DANGER!!! Spawn N2O Canister
    " + hsbinfo += "- Spawn Plasma Canister
    " + hsbinfo += "- Spawn CO2 Canister
    " + hsbinfo += "- Spawn Nitrogen Canister
    " + hsbinfo += "- Spawn N2O Canister
    " else hsbinfo += "Some item spawning may be disabled by the administrators.
    " hsbinfo += "Only administrators may spawn dangerous canisters.
    " From e0faa37cd24fecfeea3c555b08acfb72251a5a96 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 5 Dec 2013 15:33:58 +0400 Subject: [PATCH 102/315] CHANGELOG COMMIT - ling stings Updated changelog, thanks to aran --- html/changelog.html | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index b5afc1c7fd4..3c2c7797a9e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,7 +52,17 @@ should be listed in the changelog upon commit tho. Thanks. --> - + + +
    +

    5 December 2013

    +

    Razharas updated:

    +
      +
    • Reworked how ling stings are done, now when you click a sting in the changeling tab it becomes current active sting, the icon of that sting appears under the chem counter, alt+clicking anyone will sting them with current sting, clicking the icon of the sting will unset it.
    • +
    • Monkeys have ling chem counter and active sting icons in their UI.
    • +
    • Going monkey -> human will try to equip the human with everything on the ground below it.
    • +
    +

    2 December 2013

    From eb3f07e5389e052c1bdb1eea42633db8ee70cf37 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Thu, 5 Dec 2013 18:34:24 +0000 Subject: [PATCH 103/315] Added anonus' rainbow ghost icons. --- code/modules/client/preferences_toggles.dm | 5 ++++- icons/mob/mob.dmi | Bin 178925 -> 181091 bytes 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 1273a84028f..8c2297108e7 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -129,7 +129,10 @@ prefs.save_preferences() src << "Others can[(prefs.toggles & MEMBER_PUBLIC) ? "" : "not"] see whether you are a byond member." -var/list/ghost_forms = list("ghost","ghostking","ghostian2") +var/list/ghost_forms = list("ghost","ghostking","ghostian2","ghost_red","ghost_black", \ + "ghost_blue","ghost_yellow","ghost_green","ghost_pink", \ + "ghost_cyan","ghost_dblue","ghost_dred","ghost_dgreen", \ + "ghost_dcyan","ghost_grey","ghost_dyellow","ghost_dpink") /client/verb/pick_form() set name = "Choose Ghost Form" set category = "Preferences" diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 09e29051f074b665924477561a838266b8ba4618..d2221d97303ac522b69361ba81b255d96b8496d7 100644 GIT binary patch delta 9702 zcmb7pbzD^2*EcYPh>{Y52nrI?jWh}pQld!8fP{1iN^?*VgG)$BhjdGffWQphB_Ju? z3_aAq#B;`bfA@Lb&+~rX&*z;#=A6CayX&mI)?RD-=;BfsRWvsM^M7pOt!C$C^TN@? z+tJ;Ph{!h;me~AaN|ZKi@RVP&n^A5e^gFXKyLeik%kJoh|j z#S86Di$wHM1>OlJ;Pn7L0|34^r#s(oT`h^dAA7m(yt>ampu2&St@3td5>fX%4!Eqo zV)W%YI(6qmYHAr^@-Ho9SJ?7oNkui8hI9^J{t? zw^gNz&-1#Ydg^<7NbGLUGk=z_(_yxFQ+4YeB>qxoHI=Jmra09gf3hKwUBM8$q;OHd z3V@qfypws7HTrPBB>ys61z5gsq6ZYYH< zR~Cf`-IRHU5#Gr22y^DDH6q!$#I&)^4_Q+DWJ%oazm}cpNN&0tD0#%8(mtHdRp66o z(vq*f%w)C+y`l&e`9Y4j#p)cPZfEx0y1yX77eWCoV^&kf;mD7x8{;H2vXSPIz%9d z;Z6YV+mn-=PCPIDdBCtyyk!jV8 zTZX~z-Pn-?7Y>d}gkWFAb|Y>#>1{g6`*afGnsgG9`ZVD8+ibZ(1#I^C%|tGowPJJpA_d}v+LE1&r{*)BN0DOFp!wYvy-&l zAbsTdkFQb3w&#InC?rvh zaQ+>c)NVn3O{ljY7T2G7oC8|aDXo7b6dk#0-t3epJ_d;hNny%FDZNbXpv$9&_K^cJe9ZRhbaC-IJiG zhGO4kx;(u!?W+EcO-2EadDGhK(3&z0G$R);mIk<>-2_lv=k+F0ip)nES&`hgxhohW zX|{(!p_K=FoN&(XNHH)OVqinJ3F^-P(1P-a@6%|%52Tmgi#!k9_mRC;Vp$dTg^evq z?&YQlCMv04aC^J`=V;sIF9JKK=Q_@jg7pHA9!a>>TF53Rn@mmjid7|X1qD5R{MdI9 z*q|>SFKJ%z*qeb+NEXT`@wuyfepX@PPkq{sKo947?gPy(tIvt|qmJRuw~8RZBED+Y z(((cw9zsFQBFOaM_c-DM-j~M=qbjHp^x@CW4$HL+2vokY~iW%W64l! zvBN`Fvi8y_#{Agv5R#gJt$yAoOH1dCBrM(SUauh*JpzFSKV>xlMFL&`7Q(s0@>xM0A zp>?Svhm2w4G9OdiB2ZYH$lPcDYJ&y;RF7ALv~AA5DuOMR>BH&!)!-=Q4`dFU&xmiA z0URf&KX!{mBDZtF1zq+K^*gW?7Z)!`uzRjy&jY+=qGHR}vG&rU{1V{LCn&i5LZ2q( zf%b%~-9?bao|N>sw^D+O>uq-|uf(#4ft(Hb(b18$S5v-ncJ-C%J<)rp)t?y|gT~`! zjjlD*-F-b@tqyF%!rs?O$ZGZ;A%9=JX6xXa_@+A+WVN`}pnk!e-A~rmBqZIhe_yb+ z2jUWLZ&F;1&YumIKPgSU)26@lO~!&cCzL4^z>BV>u20jg_(Jwfu4si9QpBP7JXyG!|e`x8}Bn-v-t4{ zx$c{~Uk)1#t($SPm_rW~;1eOfNtQcfi3HdoK1z zN#@ET^zma!H=X^PiyZ0acW|6cnG3X32ARWmREuG1X*hb3T9%F$RjDb z14QugC}D0NW^X1f)|pDX2bMNAOEVmik$y)IDi?HmWpV{zXvc}T;!0TDtoeaWy=?~lh_y;97rIO z2H5fonLGn1d{W+LCfA>j-8#o1d33)jpc;IxJpM|p8wgb`Xf1I-^h?1bVARuXGebS zE6btRLdwZoD7~d*Q0w!YS1k#$o!71v3$iV<%kLa|`$PqaD2qg0st4G^xg)4+V8laH zQ$6x9ST+v9T*YTqT*T_Sy}R~1_kn`vxir=N`&}M#-Giv*>6KM`|FE!VpItaZ6!l;F zA?`KbBOeg086&13w8F$eooM>`>C#eLZy(f1)$?r7wO!O~lBeUDPYWT%6!Qs(coejA zSk;zBc&!amfLk#O6qd5Py1K6XMx!p(z$)OS5tr(N0x|XVpMAD!A^R)SYM{L^K`|mS zG7z67{Pg$lp8Ms$L~$_UeY|VpY3JJyfWywoX*ijKLmSCs3p{w-(RdszYmHrv2>t2o@6L(C2R{;lJrebMngS0O*Yq>Kzu1>kX>HF!q7q`Q;Dxq^c| z&(eO@o-TLCCa;f=jxNJyYE_Tp1xBIu_rXUs*wWS2wX8n-B*n=qVwuz8U=etU&%849 zuJVXS;EdcL(bQCzoBQ+QdCtl0?P?fozjW3TL-mcS-@Ye7aDm0ZT2eT2ee0gp=bWF; zSZpg4IGo)<^&(EG^imbNf8l~HA-E2=46HCq+CXixKHnlKe08Hp@?3Ggx9MXzGjV|+ z|3Y|^6pQeeoI_t&Am!eV?kjObL~Ow)^6jL*1I~{VwO-c~sBLoDp8GP5=Et8mcOQdW zKumdB8baET9UUT{-9R+D9-rflKNT^p1i1NdP~_GqH|}*ki(YaIN%A^z^bf>#OLpLkpaA%w_z1jK>`V+{=e=JVcrcCZuz`e6^a~7{SsP6oe_Lk}xhj=1+xx zC9Z&UhJ}HcFsFlA2HrQpZWE2uIK{4`NqUJrMT6gFGXaaFRK}&rfi4c~)tgr}RLW(( z6^95xAgSlT*|>%butyBKe`jH4n!McHZOIhnV5Tsj;3va3Ec%lmo0&pJk)-kkN9AUe z1#O6aa?0lh8-cJp`^mKD^O;U0r%F%f6vV}qh&ArF@XlM=ZqMJll?ld-y9M0yEyk9V zXWjw{R4N}WwX~sRUV-~~Bg^Y+1L>DP0bm#h`v3s*!W}erlhItgJ8AZ)PQnPDdewRO z&aErm2}%aXSVHooIn_szJ;lcUW+SnBj}qdP<0{L1>`4CGMMSF$uGTDJrjmLbA=n${ zWcq6N!Uud^)pPXnp=0D}yYj5^-J7^(ogC0W3dElg`!joD=Q76e>52iDR#sLThKGRp z;MKadAO4S5UFdWAed=VzMVkV@glqk!$Y^s-v9VDB_1o)dxuj%mZ*T8p)pPx>x{r^Q z$u7Z}#eETx>dIXqanh13J^l8Ewv$1toyt3gPHXc|QzO`joFGI4nA6Uu{FPg?&eD&j zhG<{DIAzKJefTc%m+e=xWJ`w|BgBb--|08xei(U;`$DZ;pPI&7d}3*(%la2P<|gmm zfgwAELG~o_-)|l%G0^vx$^z(=IhLLW5BwJQtbL}!En<9AYh1lFVY}ixr z?b{sJiJ_ymh1Q*eVME-341)4b-mh8Gz=o`5R|8FzxjX!~GKbN}hsV!+ck0T3&PGa> z2Nr?*%B1<=<~Y}5 zBv~qm7{~EybpQ_XFhzo*Hi(97cQ2T|f48$(nW#0x7mxpVf;2h2Tq#HqG;&i*)&A~6 zVu{2MlsJ|6wt~;IqfYZZcFl6`q=BX({k_10MtUYV4YQZ+pb<&beWzG}YK_!*6lk0Z6e zkE12zHm6W$y?LG#hyNPhr-@Yog;yh4%HYEW&7Nj7RqgG8mX&|WxgWGe1hHT<1Kx=a zUz@nTUtU_uZgj>Kd_SfVf2k2phSupSj9!6j0?L-ys+c&htNwxEEvC`uiGmb$@xDim z;QnjOz4dbUg*_o%4sqWv%-y)4o|%qNEoxQmowFwb!nr z18PrCMA!H%3S;cl89YRg#Y!JUuLX%dCiY?txtKUYagQ!B!Ng)yQ~n$K;G5a!N-Bu< zAi?Uc%Bsu4dT-H}ecig9P*+NkEv_tQ!hHama_?!P7hBlju;IuYk=J(!+u^U1D10Ck zvl~Bgt|&HxRE@Q#Dapx$s45&78k94V|QO4x2SU>FIIIXBQQXx_l8>slRv6T34@fKO@#ov}Da! z84Sh<^xQ#PR>EO0vkJWowK&tsqr;zt4;Du;Vt89G5O0nCtTh5C!eJMCnAzDi^O)AdQ}wW*NXqMI-XNjE~c?TDjq z&9UT!L~QQOE!qpDB(FK|a0gU?4y`#bz2i15cS`Lm6_BdJNgJs2nVWy|9w@|cWoGB$ z6@oBGzCij$C6t)%-xlS)8e!cNc_uBVL+spbpf~>G*cZ&%7CEzWo{@!HY~;mMF1c9D@T1HyKtfnKrxy^Ea;v&1*1Mb$YQ2(I(Wg$ykN}ndN8} z07q#-8bDAbS%a!7f9A=tw8k+w-rZz8P=3O2(+OM|)yfZOCP8or=1{0RuvO7nP+neR zUOHwWM8TvNFb)i)Y5ja6%0V=Z^-()iYYrrG`9hz^QGI&2X-@yO+)9b)`}yvN^^b4R zL=(cdG@%568g2(1V;@D+D?B^h)1$Y{(Ca}6{m`R7%H{f_N6ZbUWD`3GuCL|r9?Uqe z1J39W$&go0k0{1{Y@O@3o6M1WqaEPBJKJJh zT(lUBX<#jXVw4N7@o`@$OOxM@1rrz9QA#(3gd%?YkgK;$#*rpQ!HDsjZg+D;&-_!O ziBMUY<-0c}n*vD(5d%Cb7qiQ2C@VsffJR--5VV0TkapB50>5&gKc{XIl!(-KXP^hH zl->+N*VH{g{?ND|u5}&hdUvz64>8M=qojkQVz^0rK}o;uY3PoJZ0)bHj_k?F)Zp`N zePDD>xk@!gvRue9ntLhg?EHB;f&4`oBU&>x5eEIbKhl!_$XBKBX{Z z;K8el{ZQdNRmgHuu`Dgpo;f-k;mI{GdbK@e2mNM6%*DkO7Z+!xqjjUP^AUyHo5f2* z80nHrno_D_D*pO39dTE*wY6EUUbSw1L$);q6IhonF<7G&xXr_Dt-k($`~&}+^#4Io zOQd(AC#RYSk0RpHn+?CF4$O z`g9GN%SDbF;deKI0;s;W{yrw|=nAGL*T7ibk=~V&@voe`;mJwLruli!SM_PSDbg#Z zVC)+d6NeL2sAM025gS>RB-r^V*z6VWUl1fA-Q^%tjQDWnH9Y-(TX_dpC_I?zA%d0W z2tEGuf+pQM(os#2t`G4yvki?b08XwGc4O{tiP9SYsjttqXuOmajFS@%#X1o-Qx^Y6 zX_G4vP>j$FB1LnQ($PKrMzCcA3C=tTQE!ro3t%J=F^5_0_eoBc8y+664LX;O<L|QzdVTCg=H(b$3rU-f7W|TjWO8pWy3L^t5R)WT z0Ra3&Vpv$1Nu!nO!xbF%7RACSTN8aI$#9X~Bx5mL`$XWD_vGb=8^O5+@f#`q3R#Qwut-C9ZIy_?CyM4F*2 zwkKCsTeHhOWitQOAeQrP{nQfZdnA>P=R1P!5Y+ZIo#pYMLKJ*G4D?`16nw1FU{r>n zGJew1q6?_7@5PODds|J777ChGe~5{p{}djs7>;jN)k#bH3%8*!7_fe06Tdz8115N} z#;mjskIKN;1st`!BQO)?B4cp2!xdum7st z3gi$j3wg)(I^*QT=JfE9_NQ=1N5_SwDCNA;(g;7)>gV_*El)uEB4T$dXML3a$v|qi z$g7>vt;uVMiMkQXMq5hte7*hi0liO;47+;zY-bz%2p9VOPL7e`;k#O%VqyBqD{EM+ z3+a=lmXn2NFhO}KmN2uE&n8g}XLq50AH2#mgi|+@|Hky*nNHVv)0c?*auN3jB&B}N z&JL8C*8m-ELE8HIo$)EXb1Tbx{_Y|hol%cuWxJHLKGmO(f~ShmwQJniQ%}p??UmgZ zFFaOOW75-=UI|Qq$`0=CYdVh@((ZFXrCI$rK8y$QZ3Tx0c%9(=e%Etetmk;R(OFOR z_1igJZg6168-cB0H5t6;&RtMS%?IbX2@(LcBw)WE(Xyivx5kklyqAx7xC#x-AR)-+ za_kC!06E@k9BcV|1h~!4J9y8{|Hed>gV=Vsk56e|t9b0vAK&2w*IiH|C4w2O>9l-- zlQ!L>QB*TEz3R0#u+q0NvV3$BJN2{K!|#p=I9aOv*g)Wmz}N98+rQAl%m@!TKYrf# z3kNR@<>k7NyKA6AUz+?EFbR3xfBgm#d@onT^M*jUc-3UV&jAXxhbGroO>c-HHO&6J zc&=+aF}e0XDgUzm_e%v*!^DIQ6bAk`4+N6MXJ!1Ns|wC}w_=^nNdG=Kbbs6t$0a04 zgDL^1%31sTLl-A_d!EM;3T5x9*>7@5#Ii}Vy?gi0qS2o*WDBlzTvHP}Hr%qlHK~vm zuU@}qY$J?0w#i}ll@kd6Ia#IU>}U-H$WH=6K}4WRd`rt+w+Ry-x zxO~|Y_M7qFxN(YMpZZ<nlGRfSmt{8@L}_4;Uh;l;QjHJ^VqzHtSkW* zOp>(~3;YRl36X0xZ=QKhB)dF$NWXpSf_J4AE>M_}8TDqePdGo;;!8M5jd}PC4bjEl zJDl9vZ!Xu46y4l5|Q zP%|AdvhpnRTXb)3ZXl3dn^>Bg8~$_kSb&4e{J{fe0tMt;y27;RUFT6hbA^!+EUZL^ z20S{!S`Q)n|1oSZqS6n8gRA7AJxXrd3#N@DA|f<<6Fk2cQr_1Pd+BXpRVDUJbO=mh zizMmr!fLTS8Zg0nsCbgzaes3Ahh~-6{b7aK0OY>Lo$1lgYL}~^zRP6gEqwu9vhTzu zc78lr%I}6@m$Os7gPaYIO2@b}fS99Ft#n{A**2(-r|?Xw8;)~|Da}|$>;DLTv4-IB zLyLfuO{Rwt6SAixBQyPAx|WELlm0f1b~R^fb#+aZ2hzvJo;W!>Yrt4-U0s1~2WMx2 zwSkQ1U{ZGOJM6P{O>D;6KHHa+l#Pv@`?D2Gkx!CofB)<$XLwT6vM@uOR(W$LHTS-i zhQOV_f>rWMKFB{WM4CemORWz}iO)X2)HCGzmK_h}6h%Tp0#9xp%E(Gz4c>a52AZj0m!n@~Ftye-( zunKNGv>X375{N7y&Gu$}! z{brKWp(2rGh^**$ivOe2eN&1&nKIri%C*v{?6I8Eb-|ciu_2v;QGb`Jo-ys*r6tu$ zlmEa@I+cPV!a;@be?($ek_jSNmjCJbJFDp*lpOy;Py`^r#5yk%WJb!}FG(`ohFzat zPX1d74*w5KabaO02&@!DP$K9Q7k(y;?g6yuKT1x^1f^fm+*;WWFM`3Mx0;Izc*#Dy zo#;iY*GOE_*Sq9m#yX>@D4V8-dthc}meDP_2si`g=H~K6xy1X8W5q^Bg_FX@J-hG2 z!iGmix(EALDza`+Pi=!P*6I8Z6JTB9!#A6~oue3iB}DO0Yjfqla-wAWb-(R=2pUvKO&Roqe`%Q5P$6qvMOAb62^%X=&!bhO~jjW<%m)Q=Y@jcS>J zehL*ZaG84_KG=lO&YVHH3T3E+cTP~A0KUjwLR^?&chYKKRlz4D$6#sjN)43q9}UtIriZYFzulGx!0FZu+FAF_O$s{jllVIwLZVuN0h(+S W!*X}A4=xdbKP`1VwX(ZbZ~hCm%2u`j delta 7519 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 b^Yw(_p7J>1 Date: Fri, 6 Dec 2013 13:00:11 +0200 Subject: [PATCH 104/315] Janiborgs can no longer place their mop, light replacer or trash bag in the janicart. Fixes #1954 Language fix "this the" -> "the" in storage.dm --- .../objects/items/weapons/storage/storage.dm | 2 +- code/game/objects/structures/janicart.dm | 84 +++++++++---------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 5ecba49ee27..4a3d973d609 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -208,7 +208,7 @@ if(W.w_class > max_w_class) if(!stop_messages) - usr << "[W] is too big for this [src]." + usr << "[W] is too big for [src]." return 0 var/sum_w_class = W.w_class diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 5f38e215ee6..342d2288f6c 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -25,64 +25,62 @@ usr << "It contains [reagents.total_volume] unit\s of liquid!" //everything else is visible, so doesn't need to be mentioned +/obj/structure/janitorialcart/proc/wet_mop(obj/item/weapon/mop, mob/user) + if(reagents.total_volume < 1) + user << "[src] is out of water!" + else + reagents.trans_to(mop, 5) // + user << "You wet [mop] in [src]." + playsound(loc, 'sound/effects/slosh.ogg', 25, 1) + +/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user) + user.drop_item() + I.loc = src + update_icon() + updateUsrDialog() + user << "You put [I] into [src]." + return I /obj/structure/janitorialcart/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag) - user.drop_item() - mybag = I - I.loc = src - update_icon() - updateUsrDialog() - user << "You put [I] into [src]." + var/fail_msg = "There is already one of those in [src]." - else if(istype(I, /obj/item/weapon/mop)) + if(istype(I, /obj/item/weapon/mop)) if(I.reagents.total_volume < I.reagents.maximum_volume) //if it's not completely soaked we assume they want to wet it, otherwise store it - if(reagents.total_volume < 1) - user << "[src] is out of water!" - else - reagents.trans_to(I, 5) // - user << "You wet [I] in [src]." - playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - return + wet_mop(I, user) + return + if(isrobot(user)) + user << "You are a robot. No." + return if(!mymop) - user.drop_item() - mymop = I - I.loc = src - update_icon() - updateUsrDialog() - user << "You put [I] into [src]." + mymop=put_in_cart(I,user) + else user << fail_msg; return - else if(istype(I, /obj/item/weapon/reagent_containers/spray) && !myspray) - user.drop_item() - myspray = I - I.loc = src - update_icon() - updateUsrDialog() - user << "You put [I] into [src]." - - else if(istype(I, /obj/item/device/lightreplacer) && !myreplacer) - user.drop_item() - myreplacer = I - I.loc = src - update_icon() - updateUsrDialog() - user << "You put [I] into [src]." + else if(isrobot(user)) + user << "You are a robot. No." + return + else if(istype(I, /obj/item/weapon/storage/bag/trash)) + if(!mybag) + mybag=put_in_cart(I, user) + else user << fail_msg; return + else if(istype(I, /obj/item/weapon/reagent_containers/spray)) + if(!myspray) + myspray=put_in_cart(I, user) + else user << fail_msg; return + else if(istype(I, /obj/item/device/lightreplacer)) + if(!myreplacer) + myreplacer = put_in_cart(I,user) + else user << fail_msg; return else if(istype(I, /obj/item/weapon/caution)) if(signs < 4) - user.drop_item() - I.loc = src + put_in_cart(I, user) signs++ - update_icon() - updateUsrDialog() - user << "You put [I] into [src]." else user << "[src] can't hold any more signs." - + return else if(mybag) mybag.attackby(I, user) - /obj/structure/janitorialcart/attack_hand(mob/user) user.set_machine(src) var/dat From b8a7957a2294d565a9e1b00804e98e1840cc1a3e Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 7 Dec 2013 08:55:07 +0200 Subject: [PATCH 105/315] Adds deconstruction for DNA scanner and cloning pod. Adding wires to a machine frame uses one unit of wire. Wires returned from deconstructing return 1 unit of wire. Fixes issue #1001 --- code/game/dna.dm | 51 ++++++++++++++---- code/game/machinery/autolathe.dm | 10 +--- code/game/machinery/camera/camera.dm | 1 - code/game/machinery/cloning.dm | 30 ++++++++++- code/game/machinery/constructable_frame.dm | 10 ++-- code/game/machinery/machinery.dm | 21 ++++++++ .../telecomms/machine_interactions.dm | 18 ++++--- code/game/machinery/vending.dm | 1 - code/game/mecha/mech_fabricator.dm | 23 ++------ code/modules/power/port_gen.dm | 20 +++---- code/modules/research/circuitprinter.dm | 17 ++---- code/modules/research/destructive_analyzer.dm | 25 +++------ code/modules/research/protolathe.dm | 29 +++------- code/modules/research/rdconsole.dm | 2 +- code/modules/research/rdmachines.dm | 3 +- code/modules/research/server.dm | 25 ++------- icons/obj/Cryogenic2.dmi | Bin 43374 -> 45632 bytes icons/obj/cloning.dmi | Bin 8298 -> 9878 bytes 18 files changed, 143 insertions(+), 143 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 2e980b50ad0..ada6aab647f 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -339,16 +339,15 @@ /obj/machinery/dna_scannernew/New() ..() - component_parts = newlist( - /obj/item/weapon/circuitboard/clonescanner, - /obj/item/weapon/stock_parts/scanning_module, - /obj/item/weapon/stock_parts/manipulator, - /obj/item/weapon/stock_parts/micro_laser, - /obj/item/weapon/stock_parts/console_screen, - /obj/item/weapon/cable_coil, - /obj/item/weapon/cable_coil - ) - RefreshParts() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/clonescanner(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + /obj/machinery/dna_scannernew/proc/toggle_open() if(open) return close() @@ -378,6 +377,9 @@ /obj/machinery/dna_scannernew/proc/close() if(open) + if(panel_open) + usr << "Close the maintenance panel first." + return 0 open = 0 density = 1 for(var/mob/living/carbon/C in loc) @@ -409,6 +411,9 @@ /obj/machinery/dna_scannernew/proc/open() if(!open) + if(panel_open) + usr << "Close the maintenance panel first." + return if(locked) usr << "The bolts are locked down, securing the door shut." return @@ -432,6 +437,31 @@ return /obj/machinery/dna_scannernew/attackby(obj/item/weapon/grab/G, mob/user) + + if(istype(G, /obj/item/weapon/screwdriver)) + if(occupant) + user << "The maintenance panel is locked." + return + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + panel_open = !panel_open + if(panel_open) + icon_state = "[icon_state]_maintenance" + user << "You open the maintenance panel of [src]." + else + if(open) + icon_state = "[initial(icon_state)]_open" + else + icon_state = "[initial(icon_state)]" + user << "You close the maintenance panel of [src]." + return + + if(istype(G, /obj/item/weapon/crowbar)) + if(panel_open) + for(var/obj/I in contents) // in case there is something in the scanner + I.loc = src.loc + default_deconstruction_crowbar() + return + if(!istype(G, /obj/item/weapon/grab) || !ismob(G.affecting)) return if(!open) @@ -482,6 +512,7 @@ del(src) +//DNA COMPUTER /obj/machinery/computer/scan_consolenew name = "\improper DNA scanner access console" desc = "Scan DNA." diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 16cd92e782f..6a31eb60051 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -176,21 +176,13 @@ var/global/list/autolathe_recipes_hidden = list( \ return 1 if (opened) if(istype(O, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc if(m_amount >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) G.amount = round(m_amount / 3750) if(g_amount >= 3750) var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) G.amount = round(g_amount / 3750) - del(src) + default_deconstruction_crowbar() return 1 else user.set_machine(src) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 6f6db8ad4ec..7577a2ddbe7 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -14,7 +14,6 @@ var/c_tag_order = 999 var/status = 1.0 anchored = 1.0 - var/panel_open = 0 // 0 = Closed / 1 = Open var/invuln = null var/obj/item/device/camera_bug/bug = null var/obj/item/weapon/camera_assembly/assembly = null diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 958bd693066..3e6de01e367 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -19,6 +19,19 @@ var/attempting = 0 //One clone attempt at a time thanks var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk +/obj/machinery/clonepod/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/clonepod(src) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + + //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. /obj/item/weapon/disk/data @@ -98,6 +111,8 @@ //Start growing a human clone in the pod! /obj/machinery/clonepod/proc/growclone(var/ckey, var/clonename, var/ui, var/se, var/mindref, var/mrace) + if(panel_open) + return 0 if(mess || attempting) return 0 var/datum/mind/clonemind = locate(mindref) @@ -217,7 +232,7 @@ src.occupant = null if (src.locked) src.locked = 0 - if (!src.mess) + if (!src.mess && !panel_open) icon_state = "pod_0" use_power(200) return @@ -226,6 +241,19 @@ //Let's unlock this early I guess. Might be too early, needs tweaking. /obj/machinery/clonepod/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/screwdriver)) + if(occupant || mess || locked) + user << "The maintenance panel is locked." + return + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]") + return + + if(istype(W, /obj/item/weapon/crowbar)) + if(panel_open) + default_deconstruction_crowbar() + return + if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (!src.check_access(W)) user << "\red Access Denied." diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a41d002efe0..029063c0d51 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -125,9 +125,9 @@ del(O) new_machine.component_parts = list() for(var/obj/O in src) - O.loc = new_machine + O.loc = null new_machine.component_parts += O - circuit.loc = new_machine + circuit.loc = null new_machine.RefreshParts() del(src) @@ -137,8 +137,10 @@ if(istype(P, /obj/item/weapon/cable_coil)) var/obj/item/weapon/cable_coil/CP = P if(CP.amount > 1) - var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src) - CC.amount = 1 + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src, 1) + CP.amount-- + if(!CP.amount) del(CP) + else CP.update_icon() components += CC req_components[I]-- update_req_desc() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 2ea74cf174e..fd3c869d85b 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -108,6 +108,7 @@ Class Procs: var/uid var/manual = 0 var/global/gl_uid = 1 + var/panel_open = 0 /obj/machinery/New() ..() @@ -238,3 +239,23 @@ Class Procs: uid = gl_uid gl_uid++ +/obj/machinery/proc/default_deconstruction_crowbar() + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) + M.state = 2 + M.icon_state = "box_1" + for(var/obj/I in component_parts) + if(I.reliability != 100 && crit_fail) + I.crit_fail = 1 + I.loc = src.loc + del(src) + +/obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/icon_state_open, var/icon_state_closed) + if (!panel_open) + panel_open = 1 + icon_state = icon_state_open + user << "You open the maintenance hatch of [src]." + else + panel_open = 0 + icon_state = icon_state_closed + user << "You close the maintenance hatch of [src]." diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index a3c1ee3f340..a22750aa3dd 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -68,9 +68,12 @@ user << "You finish prying out the components." // Drop all the component stuff - if(contents.len > 0) - for(var/obj/x in src) - x.loc = user.loc + if(component_parts) + for(var/obj/I in component_parts) + if(I.reliability != 100 && crit_fail) + I.crit_fail = 1 + I.loc = src.loc + else // If the machine wasn't made during runtime, probably doesn't have components: @@ -81,13 +84,14 @@ for(var/i = 1, i <= C.req_components[I], i++) newpath = text2path(I) var/obj/item/s = new newpath - s.loc = user.loc - if(istype(P, /obj/item/weapon/cable_coil)) - var/obj/item/weapon/cable_coil/A = P + s.loc = src.loc + if(istype(s, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/A = s A.amount = 1 + A.update_icon() // Drop a circuit board too - C.loc = user.loc + C.loc = src.loc // Create a machine frame and delete the current machine var/obj/machinery/constructable_frame/machine_frame/F = new diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 661c885b4d7..d7b3aa81b6a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -40,7 +40,6 @@ var/shoot_inventory = 0 //Fire items at customers! We're broken! var/shut_up = 0 //Stop spouting those godawful pitches! var/extended_inventory = 0 //can we access the hidden inventory? - var/panel_open = 0 //Hacking that vending machine. Gonna get a free candy bar. var/scan_id = 1 var/obj/item/weapon/coin/coin var/datum/wires/vending/wires = null diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 9bf3da5d6ff..864ff0f51d2 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -34,7 +34,6 @@ var/list/queue = list() var/processing_queue = 0 var/screen = "main" - var/opened = 0 var/temp var/list/part_sets = list( //set names must be unique "Cyborg"=list( @@ -701,25 +700,11 @@ /obj/machinery/mecha_part_fabricator/attackby(obj/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - icon_state = "fab-o" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "fab-idle" - user << "You close the maintenance hatch of [src]." + default_deconstruction_screwdriver(user, "fab-o", "fab-idle") + return - if (opened) + if (panel_open) if(istype(W, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc if(src.resources["metal"] >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) G.amount = round(src.resources["metal"] / G.perunit) @@ -744,7 +729,7 @@ if(src.resources["bananium"] >= 2000) var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown(src.loc) G.amount = round(src.resources["bananium"] / G.perunit) - del(src) + default_deconstruction_crowbar() return 1 else user << "\red You can't load the [src.name] while it's opened." diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 628956fa68a..0568744f67f 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -53,7 +53,6 @@ display round(lastgen) and plasmatank amount var/active = 0 var/power_gen = 5000 - var/open = 0 var/recent_fault = 0 var/power_output = 1 @@ -115,8 +114,8 @@ display round(lastgen) and plasmatank amount component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/cable_coil(src) - component_parts += new /obj/item/weapon/cable_coil(src) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/cable_coil(src, 1) component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new board_path(src) var/obj/sheet = new sheet_path(null) @@ -231,21 +230,14 @@ display round(lastgen) and plasmatank amount playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) else if(istype(O, /obj/item/weapon/screwdriver)) - open = !open + panel_open = !panel_open playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(open) + if(panel_open) user << "\blue You open the access panel." else user << "\blue You close the access panel." - else if(istype(O, /obj/item/weapon/crowbar) && !open) - var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc) - for(var/obj/item/I in component_parts) - if(I.reliability < 100) - I.crit_fail = 1 - I.loc = src.loc - new_frame.state = 2 - new_frame.icon_state = "box_1" - del(src) + else if(istype(O, /obj/item/weapon/crowbar) && !panel_open) + default_deconstruction_crowbar() /obj/machinery/power/port_gen/pacman/attack_hand(mob/user as mob) ..() diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 5da8dbf3688..5ac1762d266 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -52,19 +52,12 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). if (shocked) shock(user,50) if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - if(linked_console) - linked_console.linked_imprinter = null - linked_console = null - icon_state = "circuit_imprinter_t" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "circuit_imprinter" - user << "You close the maintenance hatch of [src]." + if(linked_console) + linked_console.linked_imprinter = null + linked_console = null + default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index a6501553fad..bee0c198916 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -44,27 +44,14 @@ Note: Must be placed within 3 tiles of the R&D Console if (shocked) shock(user,50) if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - if(linked_console) - linked_console.linked_destroy = null - linked_console = null - icon_state = "d_analyzer_t" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "d_analyzer" - user << "You close the maintenance hatch of [src]." + if(linked_console) + linked_console.linked_destroy = null + linked_console = null + default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - I.loc = src.loc - del(src) + default_deconstruction_crowbar() return 1 else user << "\red You can't load the [src.name] while it's opened." diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index de1a92ec018..ec908f22d73 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -57,30 +57,13 @@ Note: Must be placed west/left of and R&D console to function. if (O.is_open_container()) return 1 if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - if(linked_console) - linked_console.linked_lathe = null - linked_console = null - icon_state = "protolathe_t" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "protolathe" - user << "You close the maintenance hatch of [src]." + if(linked_console) + linked_console.linked_lathe = null + linked_console = null + default_deconstruction_screwdriver(user, "protolathe_t", "protolathe") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker)) - reagents.trans_to(I, reagents.total_volume) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc if(m_amount >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) G.amount = round(m_amount / G.perunit) @@ -108,7 +91,7 @@ Note: Must be placed west/left of and R&D console to function. if(adamantine_amount >= 2000) var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine(src.loc) G.amount = round(adamantine_amount / G.perunit) - del(src) + default_deconstruction_crowbar() return 1 else user << "\red You can't load the [src.name] while it's opened." diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index cb1bd68ca44..b77802f59b8 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -99,7 +99,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). for(var/obj/machinery/r_n_d/D in oview(3,src)) - if(D.linked_console != null || D.disabled || D.opened) + if(D.linked_console != null || D.disabled || D.panel_open) continue if(istype(D, /obj/machinery/r_n_d/destructive_analyzer)) if(linked_destroy == null) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 68def8bd39c..ee922a055a6 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -17,7 +17,6 @@ var/hack_wire var/disable_wire var/shock_wire - var/opened = 0 var/obj/machinery/computer/rdconsole/linked_console /obj/machinery/r_n_d/New() @@ -53,7 +52,7 @@ /obj/machinery/r_n_d/attack_hand(mob/user as mob) if (shocked) shock(user,50) - if(opened) + if(panel_open) var/dat as text dat += "[src.name] Wires:
    " for(var/wire in src.wires) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 06aa463f2b0..b90917b53e1 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -19,8 +19,8 @@ component_parts = list() component_parts += new /obj/item/weapon/circuitboard/rdserver(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/cable_coil(src) - component_parts += new /obj/item/weapon/cable_coil(src) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/cable_coil(src, 1) RefreshParts() src.initialize(); //Agouri @@ -131,27 +131,12 @@ if (shocked) shock(user,50) if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - icon_state = "server_o" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "server" - user << "You close the maintenance hatch of [src]." + default_deconstruction_screwdriver(user, "server_o", "server") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) griefProtection() - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc - del(src) + default_deconstruction_crowbar() return 1 /obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves. diff --git a/icons/obj/Cryogenic2.dmi b/icons/obj/Cryogenic2.dmi index 7314ac709af8ca33c79e0da77e071b78347cd95c..91e301beded81f4f8134bc6c54076060ad248b42 100644 GIT binary patch delta 12220 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 delta 9940 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 diff --git a/icons/obj/cloning.dmi b/icons/obj/cloning.dmi index af0bb42e60207c87625f376ee0d15285e07a04d1..ada68297367a8373b90abe6ef42754f82085d751 100644 GIT binary patch literal 9878 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 Date: Sat, 7 Dec 2013 09:27:56 +0200 Subject: [PATCH 106/315] Applied logic to portable generator deconstruction. --- code/modules/power/port_gen.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 0568744f67f..f8569d10924 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -236,7 +236,7 @@ display round(lastgen) and plasmatank amount user << "\blue You open the access panel." else user << "\blue You close the access panel." - else if(istype(O, /obj/item/weapon/crowbar) && !panel_open) + else if(istype(O, /obj/item/weapon/crowbar) && panel_open) default_deconstruction_crowbar() /obj/machinery/power/port_gen/pacman/attack_hand(mob/user as mob) From 1041d7081db83a35d35506d98d0def0a9bb8e702 Mon Sep 17 00:00:00 2001 From: VistaPOWA Date: Sat, 7 Dec 2013 14:42:25 +0100 Subject: [PATCH 107/315] Replaces 'aluminum' with 'aluminium'. Hopefully there won't be a grammar war because of this. --- code/game/objects/effects/effect_system.dm | 2 +- code/game/objects/items/shooting_range.dm | 2 +- .../objects/items/weapons/grenades/chem_grenade.dm | 4 ++-- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 2 +- code/modules/reagents/Chemistry-Reagents.dm | 6 +++--- code/modules/reagents/Chemistry-Recipes.dm | 10 +++++----- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index ea495a85ff2..128fe3850a1 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -915,7 +915,7 @@ steam.start() -- spawns the effect name = "foamed metal" desc = "A lightweight foamed metal wall." gender = PLURAL - var/metal = 1 // 1=aluminum, 2=iron + var/metal = 1 // 1=aluminium, 2=iron New() ..() diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 5b42a14cafa..45023c3f68f 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -37,7 +37,7 @@ var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) overlays.Cut() - usr << "You slice off [src]'s uneven chunks of aluminum and scorch marks." + usr << "You slice off [src]'s uneven chunks of aluminium and scorch marks." return diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 90a0648d751..ec03643444a 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -263,7 +263,7 @@ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 30) + B1.reagents.add_reagent("aluminium", 30) B2.reagents.add_reagent("foaming_agent", 10) B2.reagents.add_reagent("pacid", 10) @@ -282,7 +282,7 @@ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 25) + B1.reagents.add_reagent("aluminium", 25) B2.reagents.add_reagent("plasma", 25) B2.reagents.add_reagent("sacid", 25) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 07c37cecbeb..326f5b0dc46 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -16,7 +16,7 @@ /obj/item/weapon/grenade/iedcasing name = "improvised explosive assembly" - desc = "An igniter stuffed into an aluminum shell." + desc = "An igniter stuffed into an aluminium shell." w_class = 2.0 icon = 'icons/obj/grenade.dmi' icon_state = "improvised_grenade" diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index df62cabf511..f5ea1a17bea 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -16,7 +16,7 @@ var/beaker = null var/recharged = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", - "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", + "sodium","aluminium","silicon","phosphorus","sulfur","chlorine","potassium","iron", "copper","mercury","radium","water","ethanol","sugar","sacid") /obj/machinery/chem_dispenser/proc/recharge() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 3f7f88a0d69..a1a46dca16b 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -695,9 +695,9 @@ datum if(!istype(T, /turf/space)) new /obj/effect/decal/cleanable/greenglow(T) - aluminum - name = "Aluminum" - id = "aluminum" + aluminium + name = "Aluminium" + id = "aluminium" description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index c88ff6e8385..d6d8bff0470 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -53,7 +53,7 @@ datum name = "Silicate" id = "silicate" result = "silicate" - required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) + required_reagents = list("aluminium" = 1, "silicon" = 1, "oxygen" = 1) result_amount = 3 */ stoxin @@ -102,7 +102,7 @@ datum name = "Thermite" id = "thermite" result = "thermite" - required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) + required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1) result_amount = 3 lexorin @@ -316,7 +316,7 @@ datum name = "Flash powder" id = "flash_powder" result = null - required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 ) + required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 ) result_amount = null on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) @@ -345,7 +345,7 @@ datum name = "Napalm" id = "napalm" result = null - required_reagents = list("aluminum" = 1, "plasma" = 1, "sacid" = 1 ) + required_reagents = list("aluminium" = 1, "plasma" = 1, "sacid" = 1 ) result_amount = 1 on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/simulated/T = get_turf(holder.my_atom) @@ -558,7 +558,7 @@ datum name = "Metal Foam" id = "metalfoam" result = null - required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1) + required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "pacid" = 1) result_amount = 5 on_reaction(var/datum/reagents/holder, var/created_volume) From 14e26a64a2ad3c50fef2636e0216541e723d9a05 Mon Sep 17 00:00:00 2001 From: AndroidSFV Date: Sat, 7 Dec 2013 13:40:35 -0600 Subject: [PATCH 108/315] Removed the pAI check. Dont entirely agree with it, but I am a team player~ --- code/__HELPERS/unsorted.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 3afdf70e2fb..03cdb8ce70b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1261,7 +1261,7 @@ proc/check_target_facings(mob/living/initator, mob/living/target) /*This can be used to add additional effects on interactions between mobs depending on how the mobs are facing each other, such as adding a crit damage to blows to the back of a guy's head. Given how click code currently works (Nov '13), the initiating mob will be facing the target mob most of the time That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/ - if(!ismob(target) || target.lying || istype(target, /mob/living/silicon/pai)) + if(!ismob(target) || target.lying) //Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side return if(initator.dir == target.dir) //mobs are facing the same direction From 15c4ffdb574524a47d66daba7c62d5d9d20fd799 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Sun, 8 Dec 2013 05:40:50 -0300 Subject: [PATCH 109/315] Fixes the href links on the game logs related to syndicate bombs --- code/game/machinery/syndicatebomb.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 3457c9f0bea..678d9407a66 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -134,10 +134,8 @@ var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) - var/log_str = "[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP)." - bombers += log_str - message_admins(log_str) - log_game(log_str) + message_admins("[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP).") + log_game("[key_name(usr)] has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])") processing_objects.Add(src) //Ticking down /obj/machinery/syndicatebomb/proc/isWireCut(var/index) @@ -186,7 +184,7 @@ var/log_str = "[key_name(usr)]? has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] (JMP)." bombers += log_str message_admins(log_str) - log_game(log_str) + log_game("[key_name(usr)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name]([T.x],[T.y],[T.z])") detonated = 0 existant = 0 cooldown = 1 From d43a65c49ea722bb7375d94edd41db83b3aae4b7 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 8 Dec 2013 18:27:26 +0400 Subject: [PATCH 110/315] Adds tips when setting/unsetting stings Now its a bit more obvious how to use new ones --- code/game/gamemodes/changeling/changeling_powers.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 5851d66fc6b..9ecae7f35d2 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -533,6 +533,7 @@ var/list/datum/dna/hivemind_bank = list() ////////// /mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it + src << "We prepare our sting, use alt+click on target to sting them." src.mind.changeling.chosen_sting = A if(dna) src.mind.changeling.chosen_dna = dna @@ -540,6 +541,7 @@ var/list/datum/dna/hivemind_bank = list() hud_used.lingstingdisplay.invisibility = 0 /mob/living/carbon/proc/unset_sting() //unsetting the previous + src << "We retract our sting, you cant sting anyone for now." src.mind.changeling.chosen_sting = null hud_used.lingstingdisplay.icon_state = null hud_used.lingstingdisplay.invisibility = 101 From 85993256c3f161c96cb8815083fbd8a1616d0dd9 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 8 Dec 2013 18:34:18 +0400 Subject: [PATCH 111/315] Damn grammer Can't --- code/game/gamemodes/changeling/changeling_powers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 9ecae7f35d2..6376b17ee49 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -541,7 +541,7 @@ var/list/datum/dna/hivemind_bank = list() hud_used.lingstingdisplay.invisibility = 0 /mob/living/carbon/proc/unset_sting() //unsetting the previous - src << "We retract our sting, you cant sting anyone for now." + src << "We retract our sting, you can't sting anyone for now." src.mind.changeling.chosen_sting = null hud_used.lingstingdisplay.icon_state = null hud_used.lingstingdisplay.invisibility = 101 From d29f5830628e94ec3bcdb1b7c93dd7b1f34387b0 Mon Sep 17 00:00:00 2001 From: Cem Kocagil Date: Sun, 8 Dec 2013 18:34:59 +0200 Subject: [PATCH 112/315] Increase Chem Dispenser window height --- code/modules/reagents/Chemistry-Machinery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index df62cabf511..4b437105861 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -113,7 +113,7 @@ var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, ui_key) if (!ui) // the ui does not exist, so we'll create a new one - ui = new(user, src, ui_key, "chem_dispenser.tmpl", "Chem Dispenser 5000", 370, 585) + ui = new(user, src, ui_key, "chem_dispenser.tmpl", "Chem Dispenser 5000", 370, 590) // When the UI is first opened this is the data it will use ui.set_initial_data(data) ui.open() From e31f8b6afed73cc66b74eb6ce02a6a7299939c45 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Sun, 8 Dec 2013 10:33:53 -0700 Subject: [PATCH 113/315] Added feedback when anchoring fails --- code/game/gamemodes/nuclear/nuclearbomb.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 2cd05ee1b8e..b0ac6ef8bc0 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -131,6 +131,8 @@ var/bomb_set if (href_list["anchor"]) if(!isinspace()) src.anchored = !( src.anchored ) + else + usr << "There is nothing to anchor to!" src.add_fingerprint(usr) for(var/mob/M in viewers(1, src)) if ((M.client && M.machine == src)) From 3432aaf583d51e70c43d73966052ef9c9468faa7 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 8 Dec 2013 13:23:55 -0500 Subject: [PATCH 114/315] Adds a christmas tree to the bar Adds a festivus pole to the science break room Adds a santa outfit to the captains office so he can spread cheer to the crew --- code/game/objects/structures/flora.dm | 6 ++++++ .../mob/living/simple_animal/hostile/tree.dm | 14 ++++++++++++++ icons/obj/flora/pinetrees.dmi | Bin 34936 -> 35897 bytes maps/tgstation.2.1.2.dmm | 14 ++++++++------ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 0a3c655ba23..9d3f2c0a82e 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -28,6 +28,12 @@ icon = 'icons/obj/flora/deadtrees.dmi' icon_state = "tree_1" +/obj/structure/flora/tree/festivus + name = "festivus pole" + icon = 'icons/obj/flora/pinetrees.dmi' + icon_state = "festivus_pole" + desc = "During last year's Feats of Strength the Research Director was able to suplex this passing immobile rod into a planter." + /obj/structure/flora/tree/dead/New() icon_state = "tree_[rand(1, 6)]" ..() diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index c757ecf8b82..c1f43125684 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -54,4 +54,18 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/sheet/wood(loc) + del(src) + +/mob/living/simple_animal/hostile/tree/festivus + name = "festivus pole" + desc = "serenity now... SERENITY NOW!" + icon_state = "festivus_pole" + icon_living = "festivus_pole" + icon_dead = "festivus_pole" + icon_gib = "festivus_pole" + +/mob/living/simple_animal/hostile/tree/festivus/Die() + ..() + visible_message("\red [src] is hacked into pieces!") + new /obj/item/stack/rods(loc) del(src) \ No newline at end of file diff --git a/icons/obj/flora/pinetrees.dmi b/icons/obj/flora/pinetrees.dmi index 9ee04a5baf517fd2124ee56794947a252a585c4c..600c0354bf8739ba01b7868fb4a6274c98aadb21 100644 GIT binary patch literal 35897 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 diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index 74d365257dd..d1fd6159b81 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -2569,7 +2569,7 @@ "aXu" = (/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 28; pixel_y = 0},/turf/simulated/wall,/area/turret_protected/ai) "aXv" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/captain) "aXw" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"aXx" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"aXx" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aXy" = (/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "aXz" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/starboard) "aXA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -8252,6 +8252,8 @@ "dcJ" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "dcK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "dcL" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"dcM" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"dcN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/flora/tree/festivus,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"}) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8371,16 +8373,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfaBeaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaukanjaumapyaumaIuaIvaIwaIxaumapyaIyaIzanjathasdaumaIAaIBaHBaHBaHCanYaICaGbaEAaHFaHGaIDaIEaIFaIFaIFaIGaIHaIIaIFaIJaIFaIFaIFaIKaILaIMaIFaIFaIFaINaIOaIPaIQaIQaIRaISaITaITaIUaIVaGhaHSaGwaDAaIWaDAaIXaIXaIXaIXaIXaIXaIXaIXaIYaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIZaIXaIXaIXaIXaIXaIXaIXaIXaDAaDAaDAavRaJaaJbaJaaJaaJaaJcaJdaFlaFlaJeaDOaDOaJfaDOaDOaJgaDTaJhaFuaJiaJjaJkaDTaDXaJlaJmaJnaJoaJnaJnaJpaJqaDXaEaaEbaJraJraJsaJtaJuaJuaJvazaaJwaJxaJyazhaJzaJAaJBaBfaBfaJCaJBazhaJDazhaJEaJEaJEaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYasbatgasbathasdasdatiasbatgasbaJFaJGaJHasdasbaJIaJIaFYaJIaFZanYaJJaGbaEAaJKaJKaJLaJMaJKaJNaJNaJNaJNaJNaJOaJPaJNaJQaJNaJNaJNaJRaJSaJTaJSaJUaJVaJWaGhaGhaJXaJYaJZaGhaGiaGhaGhaKaaKaaDAaDAaDBaKbaEYaEYaKcaKcaKcaKcaKdaKeaKfaKgaKhaKiaKjaKiaKkaKiaKlaKgaKmaKeaKnaKcaKcaKcaKcaEYaEYaKoaDzaDAaDAaDOaKpaKqaFlaFlaFlaFlaKraKsaKtaFlaDOaKuaKvaKwaDTaDTaDTaDTaKxaDTaKyaDTaDTaDXaJnaKzaKAaKAaKAaKAaKBaJnaDXaKCaEbaKDaCDaJsaJtaCDaCDaKEazaaKFaKGaKHazhaBfaKIaKJaKKaKKaKLaKJaKMaKNazhaKOaKPaJEaKQaKRaKSaafaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaLNaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaasbaMqaMraMqaMqaMqaMqaMqaMqaMraMqaMqaMsasdasdaMtasdasdaMuasdaMvasdaMwaMxaMyaJKaMzaJLaMAaJNaMBaLhaLhaLhaLhaLhaLiaMCaLhaLhaLhaLnaJRaMDaLqaLqaJUaLsaJWaMEaMFaMFaMGaKaaMHaMIaMJaMKaMLaMMaDAaDAaDBaLyaaaaaaaaaaaaaKeaKeaKeaKeaMNaMOaMPaMQaMRaMSaMTaMUaMVaMWaMXaKeaKeaKeaKeaaaaaaaaaaaaaLKaDzaDAaDAaMYaFlaMZaNaaNbaFlaNcaNdaNbaLOaGUaNeaFlaNfaFlaNgaNhaNhaNhaNiaNjaNkaNlaNhaNmaNnaNoaMbaNpaNqaMbaNraJnaDXaEaaEbaCDaCDaJsaJtaCDaCDaCDaNsaNtaCDaNuazhaFQaNvaNwaMjaMjaNxaNwaNyazhaNzaNAaNAaNAaNAaNBaNCaKRaKRaNDaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanjanjaNEaNFaNFaNFaNFaNFaNFaNGanjanjanYaNHaNIaNJaNJaNJaNKaNJaNJaNJaNLaNJaNLaJKaMzaNMaNNaJNaNOaLhaLhaNPaNQaNRaNSaNPaLhaLhaLhaNTaJRaNUaNVaNWaJUaNXaJWaNYaNZaOaaObaKaaOcaOdaOeaMJaOfaOgaDAaDAaDBaFcaKdaOhaOiaKeaKeaOjaOkaOlaOmaOnaOnaOoaOpaOnaOqaOnaOnaOnaOraOsaOtaOuaKeaKeaOiaOhaEXaOvaDzaDAaDAaDOaOwaKqaOxaFlaFlaFlaOxaFlaLOaGUaOyaOzaFlaOAaDTaNhaOBaOCaODaOEaOFaOGaNhaOHaOIaOJaMbaOKaOLaMbaOMaONaDXaEaaEbaOOaOOaJsaJtaOPaCDaCDaOQaCDaORaOSazhaOTaOUaOVaMjaMjaOWaOVaBfazhaOXaNAaNAaNAaNAaNAaOYaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaFlaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaasbaMqaMraMqaMqaMqaMqaMqaMqaMraMqaMqaMsasdasdaMtasdasdaMuasdaMvasdaMwaMxaMyaJKaMzaJLaMAaJNaMBaLhaLhaLhaLhaLhaLiaMCaLhaLhaLhaLnaJRaMDaLqaLqaJUaLsaJWaMEaMFaMFaMGaKaaMHaMIaMJaMKaMLaMMaDAaDAaDBaLyaaaaaaaaaaaaaKeaKeaKeaKeaMNaMOaMPaMQaMRaMSaMTaMUaMVaMWaMXaKeaKeaKeaKeaaaaaaaaaaaaaLKaDzaDAaDAaMYaFlaMZaNaaNbaFlaFlaXxaFlaLOaGUaNeaFlaNfaFlaNgaNhaNhaNhaNiaNjaNkaNlaNhaNmaNnaNoaMbaNpaNqaMbaNraJnaDXaEaaEbaCDaCDaJsaJtaCDaCDaCDaNsaNtaCDaNuazhaFQaNvaNwaMjaMjaNxaNwaNyazhaNzaNAaNAaNAaNAaNBaNCaKRaKRaNDaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanjanjaNEaNFaNFaNFaNFaNFaNFaNGanjanjanYaNHaNIaNJaNJaNJaNKaNJaNJaNJaNLaNJaNLaJKaMzaNMaNNaJNaNOaLhaLhaNPaNQaNRaNSaNPaLhaLhaLhaNTaJRaNUaNVaNWaJUaNXaJWaNYaNZaOaaObaKaaOcaOdaOeaMJaOfaOgaDAaDAaDBaFcaKdaOhaOiaKeaKeaOjaOkaOlaOmaOnaOnaOoaOpaOnaOqaOnaOnaOnaOraOsaOtaOuaKeaKeaOiaOhaEXaOvaDzaDAaDAaDOaOwaKqaOxaFlaFlaFlaFlaFlaLOaGUaOyaOzaFlaOAaDTaNhaOBaOCaODaOEaOFaOGaNhaOHaOIaOJaMbaOKaOLaMbaOMaONaDXaEaaEbaOOaOOaJsaJtaOPaCDaCDaOQaCDaORaOSazhaOTaOUaOVaMjaMjaOWaOVaBfazhaOXaNAaNAaNAaNAaNAaOYaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPcaunaseaPdaPeaPfaPgaPhaPiaPjaPkaPlaPjaPmaPnaPoaPpaPqaJNaPraLhaLhaNPaNRaPsaPtaNPaLhaLhaLhaLnaJRaJUaJUaPuaJUaPvaPwaPwaPwaPwaPxaPyaPzaMJaMJaMJaMJaOgaDAaDAaDBaDCaDCaPAaPBaPCaKeaPDaPEaPFaOnaOnaOnaPGaPHaPIaPJaPKaPLaPMaPKaPNaPOaPPaKeaPQaPBaPRaPSaDCaDzaDAaDAaMYaFlaKqaLNaFlaPTaFlaLNaFlaLOaGUaPUaFlaFlaFlaPVaNhaNhaPWaPXaPYaPZaOGaQaaDTaQbaOJaQcaMbaMbaMbaOMaQdaDXaQeaEbazaazaaJsaJtaQfaQgaCDaQhaQiaFJaQjaQkaHuaQlaQmaQnaQnaQoaQpaQqaQkaQraQsaNAaNAaNAaQtaQuaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaQwaQxaQyathaQzaQAaQBaQCaQDaQEaQFaQGaQHaQCaQIaQJaQKaQLaQMaJNaQNaLhaLhaQOaLhaLhaLiaLhaLhaLhaLhaQPaQQaMzaQRaQSaQTaQUaQVaQWaQXaJKaQYaKaaQZaRaaRbaRcaRcaRdaDAaDAaDAaDAaDAaReaRfaRgaRhaRiaRjaRkaRlaRmaRnaRoaRpaRqaRraRnaRsaRtaRuaRvaRwaRxaRyaRzaRAaRBaRCaRDaREaDAaDAaDOaLMaMZaNdaNbaFlaNcaNaaNbaLOaGUaOyaOyaRFaRGaDTaNhaNhaNhaRHaNhaRIaOGaRJaDTaJnaOJaMbaMbaMbaMbaOMaJnaDXaRKaRLaRMaRNaROaRPaJsaJsaJsaJsaJsaJsaRQaRRaMjaMjaMjaMjaMjaMjaMjaRSaRTaRUaNAaNAaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbatgapyatgasdasdaNLaRVaRWaRXaRXaRXaRXaRYaRZaNJaSaaSbaScaSdaSeaSeaSeaSfaSeaSgaShaSiaSjaSkaSkaSlaLnaSmaSnaSoaSpaSqaSraSsaSsaStaSuaSvaSwaSxaSyaSyaSyaSzaKaaDAaDAaSAaSBaSCaSDaSEaSFaKeaSGaSHaSIaSJaKeaSKaKeaKeaKeaKeaSLaSKaKeaSMaSNaSOaSGaKeaSPaSEaSQaSRaSBaSSaDAaDAaMYaFlaSTaOxaFlaFlaFlaOxaFlaLOaFlaGUaGUaFlaFlaSUaSVaSWaNhaNhaNhaSXaSYaSZaDTaTaaTbaMbaTcaTcaTdaTbaTeaDXaTfaTgaThaTiaJsaJsaJsaJsaTjaJsaJsaJsaRQaRRaMjaMjaMjaMjaMjaMjaMjaRSaRTaRUaNAaNAaTkaNAaTlaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaTmaTnaQyathasdaToaRWaTpaRXaRXaRXaRXaTpaRWaNJaTqaTraScaSdaTsaTtaTuaTvaSeaTwaTxaTyaJNaTzaTAaTBaLhaJNaTCaTDaTEaTEaTEaTEaTFaTEaTEaTGaTHaTHaTHaTIaTHaTJaTKaTLaTLaTMaTNaTOaTOaTOaTOaTOaTPaTQaTRaTSaSKaTTaSKaSKaTUaTVaSKaTTaSKaTWaTXaTYaTZaTZaTZaTZaTZaTZaUaaUbaTLaTLaDOaUcaUdaUeaUfaFlaFlaFlaUgaUhaUiaFlaUjaUkaUlaDTaDTaDTaUmaUnaUnaUnaDTaDTaDTaUoaMbaMbaUpaUqaUraUsaImaDXaUtaTgaUuazaaUvaUwaUxaQgaUyaUwaUzaQgaUAazhaUBaBfaUCaMjaMjaUCaBfaUDazhaUEaUFaUGaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbasbaUHaJHaUIaNLaUJaUJaUJaRWaUKaUJaULaUJaNJaUMaUNaUOaUPaUQaUQaURaUSaUQaUTaTxaUUaJNaTzaTAaTBaLhaJNaUVaTDaTEaUWaUXaUXaUXaUYaTEaUZaVaaVbaVcaTKaTKaTKaTKaDAaDAaVdaVeaVfaVgaVhaViaVjaVkaVlaVmaSKaVnaVoaVpaVpaVqaVpaVpaVoaVpaVraVsaVtaVuaVvaVwaVxaVyaVzaVAaSSaDAaDAaDOaDOaDOaDOaDOaVBaMYaVBaVCaVDaDOaDOaDOaDOaDOaVEaVFaVFaVFaVFaVFaVFaVGaVFaVEaImaVHaVHaVIaThaThaThaThaVEaUtaVJaUuazaazaazaazaazaaVKazaazaazaazaazhaVLaVMaVNaVNaVNaVNaVOazhazhaVPaNAaVQaNAaNAaQtaNCaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaukanjaVRavgaQyanYanYanYanjanjanYaVSaCSaVTaNJaNJaNJaNJaNJaNJaNJaNJaNJaVUaQVaVVaSdaTsaVWaTvaVXaSeaVYaVZaWaaJNaTzaTAaTBaLhaJNaUVaTDaTEaUXaWbaWbaUXaWbaTEaUZaWcaWdaWdaWeaWfaWgaTKaWhaDAaSAaWiaWjaWkaWlaWmaWmaWlaWnaWoaSKaWpaVoaWqaWraWsaWtaWuaVoaWvaVraWwaVzaVzaWxaWyaWzaVzaWAaVAaSSaWBaDAaWCaWDaThaThaThaThaThaThaThaThaWEaThaThaThaThaWFaThaThaThaThaThaThaThaThaWDaThaThaThaThaThaThaThaThaWGaWHaWIaWJaWJaWKaWLaWLaWMaWNaWOaWLaWPaWLaWLaWQaWLaWLaWLaWLaWLaWLaWRaWSaWTaWUaVQaNAaNAaNAaPaaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxaXxaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxdcMaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPdcBaXPaXPaXPaXPaXPbbSaJKaJKaJKbbSaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYQaYRaYSaYTaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPdcxdcydczdcAbdmaXPbeUaZbaZcaZcbgoaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibajbakaKQaKRaKRaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPaYVaYXaYXaYXbdlaXPbdibdjaMzaMzbbSbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8393,7 +8395,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbkGbkHbkGbkIbkJbdzbdzbdzbdzbdzbdzbdzbdzbkKaTEaTEbkLaWdaWdbkMbkNbkObkPaYbaWdaWdbkQbkRbiibkSbkTbkUbkVbkWbkXbkYbkZblabgMaaablbblbblcbldblebfxblfblbblbaaablgblhblhblhblhblhblhblibljblkbllbllaZNaZNblmblnbloblpaZNblqbcCbblbblbblbblblrbblblsbltbblbblbblbltbblbblbkeblublvblwblxblyblzblAbiPblBblCblDblDblEblFbcPbadblGbcUbcUblHblIbcUblJblKblLblLblMblNblNblObbHblPbbHbaibaiblQbkFblRblSblTbkFbdgbbMaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUblWbdzbdzbdzbjhbjhbjhbjhbdzbdzblXblYaTEblZaWdaWdbkMbmabicbkPaYbbmbaWdbkQbkRbmcaDAaLKbkUbmdbmebmfbmgbmgbmhbgMaafaafblbblbbmibmjbmiblbblbaafaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaDAaDAbmubmvbmwbmxbmybmzbmAbmBbmCbmBbmDbmBbmBbmEbmBbmFbmGbmBbmBbmBbmHbmIbmIbmJblubmKblwbmLbmLbmMbmNbiPbexbaabmObmPbmQbmRbmRbadbmSbmTbmUblKbmVbcUbmWblKbmXbmYbmZbnabnbbncbndbnebnfbngbnhbnibnjblRbnkbnlbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbnmbjebnnbnobdzbdzbdzbdzbdzbdzbdzbdzbdzblXbnpaTEbnqaXhaWdbkMaWdbnraWdaYbaWdbjobigbnsbmcaDAaLKbkUbgMbntbnubnvbnwbnxbgMaaaaaaaafblbblbbnyblbblbaafaaaaaabmkbnzbnAbnBbnCbnDbnDbnEbnFbnGaDAaDAbnHbnIbcCblsbnJbnKbnLbnKbnMbnKbnNbnKbnObnPbjZbnQbblbblbblbnRbnSbnSbnTbnUbnVbnWblwbnXbnYblzbmNbiPaZZbaabnZbnZboabnZbnZbadblKblKblKblKbobbocbbFblKbodboebofbngbngbogbgebgebohbgeboibojbojblRbnkblRbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUbhTbokbdzbdzbolbombonbombombomboobopaZnboqborbdHbosbdHbotbdIborboubovbjpbnsbmcaSAbowboxbgMboybozboAboBbmhbgMaaaaaaaafboCboDboEboFboCaafaaaaaaboGboHboIboIboJboKboLboMbljboNaDAaDAbiEbiEboOblsboPboQboRboSboTboUboVboWboRboSboXboXboSboRaZSaZSbnSboYbmLboZbpablublwbpbbpcbpdbpebiPbpfbpgbphbpibpjbngbngbpkbngbngbplbpmbpnbngbnfbngbpobppbpqbprbpsbptbpubpubpubpubpubpvbpwbpwbpwbpxbpybpzbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUbhTbokbdzbdzbolbombonbombombomboobopaZnboqborbdHbosbdHbotbdIborboubovbjpbnsbmcaSAbowboxbgMboybozboAboBbmhbgMaaaaaaaafboCboDboEboFboCaafaaaaaaboGboHboIboIboJboKboLboMbljboNaDAaDAbiEbiEboOblsboPboQboRboSboTboUboVboWboRboSboXboXboSboRaZSaZSbnSboYbmLboZbpablublwbpbbpcbpdbpebiPbpfbpgbphbpibpjbngbngbpkbngbngbplbpmbpnbngbnfbngbpobppbpqbprbpsbptbpubpubpubpubpubpvdcNbpwbpwbpxbpybpzbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbpAbpBbpAbpCbpDbpCbpCbpCbpCbpCbpEbpFbdzblXbpGaTEbpHbpIbpJbpKbfcbpLbpMbpNbpObpLbpLbpPbmcaFbbpQbkUbgMbpRbpSbpTbnubpUbgMaaaaaaaafboCbpVbpWbpXboCaafaaaaaabmkbpYbpZbqabqbboKboLboMbljbqcaDAaDAbqdbqebqfblsbqgbqhboRbqibqjbqkbqlbqmbqnbqobqpbqpbqqboRbblbblbnSbqrbmLbqsbqtbqubqvbqwbqxbqxbqybqzbqAbqBbqCbqDbqEbqFbqGbqFbqFbqHbqFbqIbqJbqFbqFbqFbqKbqLbqMbqNbqObqPbqQbqRbqSbqTbqUbqVbqWbojbojbqXbkFbqYbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbqZbrabjebrbaTEbrcbjebjebrbbrdbrdbrdbrebrfbrgbrdbrdbrhbrhbribrhbpLbrjbrkbrlbrmbpLbnsbmcaDBaOhaOhbgMbgMbgMbgMbgMbrnbgMaEXaEYaFdboCbrobrpbrqboCaEXaEYaFdblgblhblhblhblhblhblhblhbljbqcaDAbrrboRboRbrsbrtbruboRboRbrvbrwbrxbrybrybrzbrAbrBbrCbrAbrDbblbblbnSbrEbrFbrGbrHbrIbrJbrKbrHbrHbrLbrMbrNbrObrPbrPbrPbrPbrQbrPbrPbrPbrRbrSbrTbrUbrVbrWbrXbrYbrZbqNbsabsbbscbsdbsebsfbpubsgbshbsibsjbskbkFbqYbeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbsAbpLbsBbsCbsDbsDbsEbsDbsFbsGaWCbsHbsIbsJbsKbsKbsLbsMbsNbsObsPbsQbsRaDAaDAbsSaGQaDAaGAaDAaDAaDAbsTbsUbqcaDAbsVboRbsWbsXbsYbsZbtaboRbtbbrwbtcbrybrybrzbrAbrBbtdbtebrDbblbtfbnSbmLbtgbthbtibtjbtkbtlbtmbtnbiPbiPaZZbtobrPbtpbtqbtrbtsbttbtubrPbtvbtwbtxbtybtzbtAbrXbrYbrZbtBbtCbtDbtEbtFbtGbtHbtIbkFbkFbkFbkFbkFbkFbqYbakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaa From 8cd930080012086b6bbfcc255d2ab0a4558d5877 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 8 Dec 2013 11:34:12 -0700 Subject: [PATCH 115/315] Removed percentages and added a "Did not vote" count for custom votes. (Non-voters get automatically added to status quo option in non-custom votes) --- code/controllers/voting.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 9817baaff3a..97bc448a4c2 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -92,6 +92,10 @@ datum/controller/vote if(winners.len > 0) if(question) text += "[question]" else text += "[capitalize(mode)] Vote" + for(var/i=1,i<=choices.len,i++) + var/votes = choices[choices[i]] + if(!votes) votes = 0 + text += "\n[choices[i]]: [votes]" if(mode != "custom") if(winners.len > 1) text = "\nVote Tied Between:" @@ -99,10 +103,8 @@ datum/controller/vote text += "\n\t[option]" . = pick(winners) text += "\nVote Result: [.]" - for(var/i=1,i<=choices.len,i++) - var/votes = choices[choices[i]] - if(!votes) votes = 0 - text += "\n[choices[i]]: [votes] ([(votes/clients.len)*100]%)" + else + text += "\nDid not vote: [clients.len-voted.len]" else text += "Vote Result: Inconclusive - No Votes!" log_vote(text) From cd9778c7db87aaad785b865bc130d1645e39d11b Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Sun, 8 Dec 2013 16:08:37 -0300 Subject: [PATCH 116/315] Fixes the code not compiling. I blame myself. And everyone else. --- .../objects/items/devices/transfer_valve.dm | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index d4fbe08b0fc..225d2c327fa 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -167,24 +167,24 @@ else attacher_name = "[attacher.name]([attacher.ckey])" - var/log_str1 = "Bomb valve opened in " - var/log_str2 = "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" + var/log_str1 = "Bomb valve opened in " + var/log_str2 = "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" - var/log_attacher = "" - if(attacher) - log_attacher = "(?)" + var/log_attacher = "" + if(attacher) + log_attacher = "(?)" - var/mob/mob = get_mob_by_key(src.fingerprintslast) - var/last_touch_info = "" - if(mob) - last_touch_info = "(?)" + var/mob/mob = get_mob_by_key(src.fingerprintslast) + var/last_touch_info = "" + if(mob) + last_touch_info = "(?)" - var/log_str3 += " Last touched by: [src.fingerprintslast]" - bombers += "[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]" - - message_admins("[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]", 0, 1) - log_game("[log_str1] [A.name] [log_str2] [log_str3]") + var/log_str3 = " Last touched by: [src.fingerprintslast]" + bombers += "[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]" + + message_admins("[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]", 0, 1) + log_game("[log_str1] [A.name]([A.x], [A.y], [A.z]) [log_str2] [log_str3]") merge_gases() spawn(20) // In case one tank bursts for (var/i=0,i<5,i++) From de11cd2934988533f33700b319b2d5eff1034565 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Sun, 8 Dec 2013 16:10:58 -0300 Subject: [PATCH 117/315] for extra prettiness, the (x,y,z) coordinates on the game logs of transfer valves no longer have spaces between them. --- code/game/objects/items/devices/transfer_valve.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 225d2c327fa..aea02524306 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -184,7 +184,7 @@ bombers += "[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]" message_admins("[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]", 0, 1) - log_game("[log_str1] [A.name]([A.x], [A.y], [A.z]) [log_str2] [log_str3]") + log_game("[log_str1] [A.name]([A.x],[A.y],[A.z]) [log_str2] [log_str3]") merge_gases() spawn(20) // In case one tank bursts for (var/i=0,i<5,i++) From f96755857da3619134f50d95913673aee41f6d60 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Sun, 8 Dec 2013 13:32:33 -0600 Subject: [PATCH 118/315] The plant that grows .357 revolvers. --- code/modules/hydroponics/grown.dm | 18 ++++++++++++++++++ code/modules/hydroponics/seeds.dm | 16 ++++++++++++++++ icons/obj/harvest.dmi | Bin 31736 -> 32334 bytes icons/obj/hydroponics.dmi | Bin 150629 -> 151835 bytes icons/obj/seeds.dmi | Bin 13302 -> 13446 bytes 5 files changed, 34 insertions(+) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 21726acb0fd..67b455c53a0 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -977,3 +977,21 @@ reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) reagents.add_reagent("singulo", 1+round((potency / 5), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) + +/obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit + seed = "/obj/item/seeds/gatfruit" + name = "gatfruit" + desc = "It smells like burning." + icon_state = "gatfruit" + potency = 60 + origin_tech = "combat=3" + trash = /obj/item/weapon/gun/projectile/revolver + New() + ..() + spawn(5) //So potency can be set in the proc that creates these crops + reagents.add_reagent("sulfur", 1+round((potency / 10), 1)) + reagents.add_reagent("carbon", 1+round((potency / 10), 1)) + reagents.add_reagent("nitrogen", 1+round((potency / 15), 1)) + reagents.add_reagent("potassium", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) + diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 4360c5f2a1e..4bd87828b18 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -1050,3 +1050,19 @@ potency = 20 plant_type = 0 growthstages = 6 + +/obj/item/seeds/gatfruit + name = "pack of gatfruit seeds" + desc = "These seeds grow into .357 revolvers." + icon_state = "seed-gatfruit" + species = "gatfruit" + plantname = "gatfruit" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit + lifespan = 20 + endurance = 20 + maturation = 40 + production = 10 + yield = 2 + potency = 60 + plant_type = 0 + growthstages = 2 \ No newline at end of file diff --git a/icons/obj/harvest.dmi b/icons/obj/harvest.dmi index 8a1a1a4fea8ddd92f5a417f4a3f99e4fa800cd1b..a2743f61c0079812da6dd8313e4b7deda7dbfafb 100644 GIT binary patch delta 15790 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 E4>~aS6951J delta 15188 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 z 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 diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi index f6765b5aa65f99dddf68e087fd5a70c0014dfd62..5c4bf266cf306b28d56eee438fe92717995a9acd 100644 GIT binary patch delta 11334 zcmXX~1z1$g*I!t=yHiR9q`Rf05k$JXI|P9?0Yrx4fl0qbX{`p*kU?Fbjp z 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 D@_Qfw delta 10119 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


    CMP_#P+Z+^- zIs4fUb}W1Fwd_;tBhJT+P% zT2XV?^MrLoSOq?KS_+JCWszxVZ*_lvsI1ZB-*jX$xpRFoTr11#*rou9>f@|hg7Y?5 zzx}Rm%#kQ!5@&y@gvB?T=+>}Y^kL!sgm3x>bsh;gr(=ApV;z*;EvbbI*8zz0J@KPQ z3A4F`yFl##wawN;(YAPOytkG1PDHPqB2uBhH118m2w{Cu14cfKz3m6z^6^kCq=<%0 zqkKeHaUVV3kCR)$UCEebvJTmD>*pAr{gmj~iti_$2VbP0mn})Qq6p0)pD%uK&6~U? zC-u&tF6B|c<@>&~M50kf1{pUs+RYb{7F7?Dx(;#2GO9S=R9NZrOwczHi9e;f(PN?z zQxfUB;jbO5+Gj^wig{fg#)OUII4`SYj?$tezA&98XpVGCP0m@SX6u)o1ma@ zyYCJ#p#P8=e0#U4o^Z0j6y~#e@$$zm8oclKHJy4gpXaC-jZP2w zvCDSzJgOc9dWu63XD3u0reJY}6nfIHLC41hWLb(s?^x9_D!&U44tmpZfY^OoAV5Py zL&3n1&@Kh*K#=a<_-wr>?6px4=w)o7SSrHlI~CUE`ex#=`b}$#25exA`#+^P6pQbSt{GU9)%QBotDio@ZVof%=1V0U98SB_C6W|%_jy?C^ zryO}tVKv`zpEMJ^qmAc0Zt}wo`=5ZD_(Qux9YG3%MOI+TWWeFIjqwcb4o1M;O@`r?km^kR`Q($V++(>1C$i3Wd78!W*x*fo1Zua-D<|;+Vq7*MGrD$=BfSD3P z+0aRG#&>qKpgD8VA8^$x>07IFcGG_G@*pv@))Ugw%t8Zt`?hjwIPf=dVIlLDCiCk{ zEb1t+y@0ax)~>5eh%4?D$pEG5)@<>t3WbxX+bBkK#$GPd4YOK`Pi*{iTp*|{xSpXw zjiR|>kKdCF`+%$MP#m%v4jd;`fHBX<){!;W`b8EblpkW99Sb5=fIWhk#@GZkA4o?KT1hiQxQP)>C zbrJV-w@(xZjKm6zf*P31t2J+o5nh5nf3n>NUUA%Pv#(s>v=Fm7o;e?p2}3R=qDqT{ z`f+;#0D`tp!{w9L2H6^Od(m47#{ju!*I0FMwg~?pf`?eAGBs1KcHL2BsGmz$dR?7v zl=voLJ-E{^=p)m4?9s-v)}&W?(6=qKav}Du=18Jc1sUU@vmoMwZo)P&i+;ZwnZP)k66dJ3oO^Z3iLh^I&~d>N5h09=xHEso{4+Z;_uRf{PJe36ppl z^kzD?Sq!XJbf!MH&PpzVNZ$vnh?PTuu?jq$SVj6Y)ODO-vw9LR=J*g&3Oids(u2ZE z_Ct#a(YV5gP!6-xyJLx6({$ntpFbOZ?6=owOG=<`?H$L)*eBtijD<6aY_DCgg6rTk z{JjeHmmDo0Y}Rqt_SybmKX{z=TA>=5C5Wh|JLB6EKzS@#cwU+1dXklqtev>l7z)|} z_n!g*o6uET;cT1G4>o_&y9lyx?~dP`9fn+k^5+m=9Coq_HsW{eZ(`s$ts|!{b&&FT zD;hk`7 zp_nsNia1Qn++dPsa6ydNnARIjAv3e?8aZ#<+T_Zz_WzD50dhs(Xr%~VcHs8I)O@ME z#uX72Fy=AH<=LHhGt=LRkcO83S$Zo4-I46%r3d6Jll

    >L>L=!&($ePF5nZqt^OV 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 literal 13302 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 Date: Sun, 8 Dec 2013 14:50:41 -0500 Subject: [PATCH 119/315] Adds a xmas tree to the chappel. It's not where it was last year because with the new slimmer chapel layout there's no way to center the tree on the rug. It just looked baaaaaaad. --- maps/tgstation.2.1.2.dmm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index d1fd6159b81..a879d95cdae 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -8254,6 +8254,7 @@ "dcL" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "dcM" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "dcN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/flora/tree/festivus,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"}) +"dcO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8370,7 +8371,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxVaCQazkazlaxPazmaxPazmaxPazmaxPazmaxPaznazoaumaCRaCSaCTaCUaCUaCUaCUaCSaCVaCWaCXaCYaCZanpaDaaoZaoZavraDbaDcawHaDdaDeaDfaDgaDhaDiaDjavsaaaaDkaaaaDlaDmaDlaaaaafaaaasqaBEasvaDnaDoaDpaDqaDrasvamIalTaryaDsaDtayAayAayAaDuaDvaryaaaaaaaDwaDxaDyaDzaDAaDBaDCaDDaDwaaaaaaaDEaDFaDGaDHatUaDIauXauXauXaxlauXauXauXaDJavRaDKavRaDLaDMarcaDNaDOaDOaDPaDQaDRaDOaDSaDOaDTaDUaDTaDVaDTaDWaDXaDXaDYaDXaDXaDZaDXaDXaDXaDXaEaaEbaCDaEcaEdaEeaEfaEgazaaEhaEiaEjaEkaElaEmaCNaEnaCOaBfaBeaBfaEoaEpaEqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEsaEtawoaxOaxPaxPaxPaEuaxPaxPaEvaxPaxPaxVaEwasbathasdaExaEyaEyaEyaEyaEyaEyaEyaEzaEAaobaobaEBaobaobavraECaEDaEEaEFaEFaEFaEFaEGaEHaEIavsaEJaEKaELaEMaENaEOaELaELaEPasqaEQasvasvasvaERaESasvasvaETavqaryaryaryaEUaEVaEWaryaryaryaEXaEYaEZaFaaDAaDAaDAaDAaDAaFbaFcaEYaFdaDEaFeaDGaFfatUatUatUatUatUatUatUatUatUaDJaFgaFhaFiaFjaFkaFlaFmaFnaDOaFoaFpaFqaFraFsaDTaFtaFuaDTaFvaDTaFwaFxaFyaFzaFAaFBaFCaFDaFEaFFaDXaFGaFHaFIaEcaFJaEeaEfaFKazaaFLaFMaFNaFOaFPaCNaCNazdazhaFQaBeaBfaFRaFSaFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEsawoawpawoawoaFUawrawoawoawpaEtaFVanjaFWasdareaFXaFXaFYaFXaFZanYaGaaGbaEAaGcaGdaGeaGfaGgaGhaGhaGiaGhaGhaGhaGhaGhaGhaGhaGjaGkaGlaGmaGnaGnaGoaGpaGnaGnaGnaGqaGraGsaGtaGnaGuaGnaGvaGwaGxaDAaGyaGzaDBaDCaDCaDCaDzaDAaDAaGAaDAaGBaGCaGDaGEaGFaGGaGHaGIaDAaDAaGJaGKaGLaGMaGLaGNaGOaGPaGQaDAaGRaDAavRaGSaGTaFhaFhaFhaFhaFkaFlaFlaGUaDOaGVaGWaFsaGXaGYaDTaGZaHaaHbaHcaDTaDXaHdaHeaHfaHgaHhaHiaHjaHkaHlaDXaEaaHmaHnaHnaHoaHpaHnaHqazaaHraHsazdaCNaCNaCNaCNazdaHtaHuaHvaBfazhazhazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfaBeaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfdcOaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaukanjaumapyaumaIuaIvaIwaIxaumapyaIyaIzanjathasdaumaIAaIBaHBaHBaHCanYaICaGbaEAaHFaHGaIDaIEaIFaIFaIFaIGaIHaIIaIFaIJaIFaIFaIFaIKaILaIMaIFaIFaIFaINaIOaIPaIQaIQaIRaISaITaITaIUaIVaGhaHSaGwaDAaIWaDAaIXaIXaIXaIXaIXaIXaIXaIXaIYaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIZaIXaIXaIXaIXaIXaIXaIXaIXaDAaDAaDAavRaJaaJbaJaaJaaJaaJcaJdaFlaFlaJeaDOaDOaJfaDOaDOaJgaDTaJhaFuaJiaJjaJkaDTaDXaJlaJmaJnaJoaJnaJnaJpaJqaDXaEaaEbaJraJraJsaJtaJuaJuaJvazaaJwaJxaJyazhaJzaJAaJBaBfaBfaJCaJBazhaJDazhaJEaJEaJEaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYasbatgasbathasdasdatiasbatgasbaJFaJGaJHasdasbaJIaJIaFYaJIaFZanYaJJaGbaEAaJKaJKaJLaJMaJKaJNaJNaJNaJNaJNaJOaJPaJNaJQaJNaJNaJNaJRaJSaJTaJSaJUaJVaJWaGhaGhaJXaJYaJZaGhaGiaGhaGhaKaaKaaDAaDAaDBaKbaEYaEYaKcaKcaKcaKcaKdaKeaKfaKgaKhaKiaKjaKiaKkaKiaKlaKgaKmaKeaKnaKcaKcaKcaKcaEYaEYaKoaDzaDAaDAaDOaKpaKqaFlaFlaFlaFlaKraKsaKtaFlaDOaKuaKvaKwaDTaDTaDTaDTaKxaDTaKyaDTaDTaDXaJnaKzaKAaKAaKAaKAaKBaJnaDXaKCaEbaKDaCDaJsaJtaCDaCDaKEazaaKFaKGaKHazhaBfaKIaKJaKKaKKaKLaKJaKMaKNazhaKOaKPaJEaKQaKRaKSaafaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaFlaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From c2a4de92ccfea829a84d71e272bd44d204f7343d Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Sun, 8 Dec 2013 21:33:25 +0100 Subject: [PATCH 120/315] Update turbine.dm Turbine now works as intended in rev4407 Tweaked the power generation too to fit the increased demand Still needs a better computer code --- code/modules/power/turbine.dm | 148 ++++++++++++++++++++++++---------- 1 file changed, 107 insertions(+), 41 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index f39e18acdc9..83a1a069462 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -1,3 +1,27 @@ +// TURBINE v2 AKA rev4407 Engine reborn! + +// How to use it? - Mappers +// +// This is a very good power generating mechanism. All you need is a blast furnace with soaring flames and output. +// Not everything is included yet so the turbine can run out of fuel quiet quickly. The best thing about the turbine is that even +// though something is on fire that passes through it, it won't be on fire as it passes out of it. So the exhaust fumes can still +// containt unreacted fuel - plasma and oxygen that needs to be filtered out and re-routed back. This of course requires smart piping +// For a computer to work with the turbine the compressor requires a comp_id matching with the turbine computer's id. This will be +// subjected to a change in the near future mind you. Right now this method of generating power is a good backup but don't expect it +// become a main power source unless some work is done. Have fun. At 50k RPM it generates 60k power. So more than one turbine is needed! +// +// - Numbers +// +// Example setup S - sparker +// B - Blast doors into space for venting +// *BBB****BBB* C - Compressor +// S CT * T - Turbine +// * ^ * * V * D - Doors with firedoor +// **|***D**|** ^ - Fuel feed (Not vent, but a gas outlet) +// | | V - Suction vent (Like the ones in atmos +// + + /obj/machinery/compressor name = "compressor" desc = "The compressor stage of a gas turbine generator." @@ -21,28 +45,29 @@ icon_state = "turbine" anchored = 1 density = 1 + var/opened = 0 var/obj/machinery/compressor/compressor directwired = 1 var/turf/simulated/outturf var/lastgen /obj/machinery/computer/turbine_computer - name = "Gas Turbine Control Console" + name = "Gas turbine control computer" desc = "A computer to remotely control a gas turbine" icon = 'icons/obj/computer.dmi' icon_state = "airtunnel0e" anchored = 1 density = 1 var/obj/machinery/compressor/compressor - var/list/obj/machinery/door/poddoor/doors var/id = 0 - var/door_status = 0 // the inlet stage of the gas turbine electricity generator /obj/machinery/compressor/New() ..() +// The inlet of the compressor is the direction it faces + gas_contained = new inturf = get_step(src, dir) @@ -55,6 +80,12 @@ #define COMPFRICTION 5e5 #define COMPSTARTERLOAD 2800 + +// Crucial to make things work!!!! + +/obj/machinery/power/compressor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + return !density + /obj/machinery/compressor/process() if(!starter) return @@ -66,11 +97,16 @@ return rpm = 0.9* rpm + 0.1 * rpmtarget var/datum/gas_mixture/environment = inturf.return_air() + + // It's a simplified version taking only 1/10 of the moles from the turf nearby. It should be later changed into a better version + var/transfer_moles = environment.total_moles()/10 //var/transfer_moles = rpm/10000*capacity var/datum/gas_mixture/removed = inturf.remove_air(transfer_moles) gas_contained.merge(removed) +// RPM function to include compression friction - be advised that too low/high of a compfriction value can make things screwy + rpm = max(0, rpm - (rpm*rpm)/COMPFRICTION) @@ -94,21 +130,35 @@ overlays += image('icons/obj/pipes.dmi', "comp-o1", FLY_LAYER) //TODO: DEFERRED +// These are crucial to working of a turbine - the stats modify the power output. TurbGenQ modifies how much raw energy can you get from +// rpms, TurbGenG modifies the shape of the curve - the lower the value the less straight the curve is. + +#define TURBPRES 9000000 +#define TURBGENQ 100000 +#define TURBGENG 0.5 + /obj/machinery/power/turbine/New() ..() +// The outlet is pointed at the direction of the turbine component + outturf = get_step(src, dir) spawn(5) +// compressor is found in the opposite direction + compressor = locate() in get_step(src, get_dir(outturf, src)) if(!compressor) stat |= BROKEN -#define TURBPRES 9000000 -#define TURBGENQ 20000 -#define TURBGENG 0.8 +// THIS MAKES IT WORK!!!!! + +/obj/machinery/power/turbine/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + return !density + + /obj/machinery/power/turbine/process() if(!compressor.starter) @@ -119,10 +169,18 @@ if(!compressor) stat |= BROKEN return + + // This is the power generation function. If anything is needed it's good to plot it in EXCEL before modifying + // the TURBGENQ and TURBGENG values + lastgen = ((compressor.rpm / TURBGENQ)**TURBGENG) *TURBGENQ add_avail(lastgen) + + // Weird function but it works. Should be something else... + var/newrpm = ((compressor.gas_contained.temperature) * compressor.gas_contained.total_moles())/4 + newrpm = max(0, newrpm) if(!compressor.starter || newrpm > 1000) @@ -133,6 +191,8 @@ var/datum/gas_mixture/removed = compressor.gas_contained.remove(oamount) outturf.assume_air(removed) +// If it works, put an overlay that it works! + if(lastgen > 100) overlays += image('icons/obj/pipes.dmi', "turb-o", FLY_LAYER) @@ -143,6 +203,8 @@ AutoUpdateAI(src) +// AI can't use it! + /obj/machinery/power/turbine/attack_ai(mob/user) if(stat & (BROKEN|NOPOWER)) @@ -150,17 +212,13 @@ interact(user) + +// Only non-AI mobs + /obj/machinery/power/turbine/attack_hand(mob/user) add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) - return - - interact(user) - -/obj/machinery/power/turbine/proc/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) user.machine = null user << browse(null, "window=turbine") @@ -184,28 +242,50 @@ return -/obj/machinery/power/turbine/Topic(href, href_list) - if(..()) - return - if( href_list["close"] ) + +/obj/machinery/power/turbine/Topic(href, href_list) + ..() + if(stat & BROKEN) + return + if (usr.stat || usr.restrained() ) + return + if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + if(!istype(usr, /mob/living/silicon/ai)) + usr << "\red You don't have the dexterity to do this!" + return + + if (( usr.machine==src && ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) + + + if( href_list["close"] ) + usr << browse(null, "window=turbine") + usr.machine = null + return + + else if( href_list["str"] ) + compressor.starter = !compressor.starter + + spawn(0) + for(var/mob/M in viewers(1, src)) + if ((M.client && M.machine == src)) + src.interact(M) + + else usr << browse(null, "window=turbine") usr.machine = null - return - else if( href_list["str"] ) - compressor.starter = !compressor.starter + return + - spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// COMPUTER NEEDS A SERIOUS REWRITE. + /obj/machinery/computer/turbine_computer/New() @@ -214,10 +294,7 @@ for(var/obj/machinery/compressor/C in world) if(id == C.comp_id) compressor = C - doors = new /list() - for(var/obj/machinery/door/poddoor/P in world) - if(P.id == id) - doors += P + /obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/screwdriver)) @@ -262,8 +339,7 @@ \nTurbine speed: [src.compressor.rpm]rpm
    \nPower currently being generated: [src.compressor.turbine.lastgen]W
    \nInternal gas temperature: [src.compressor.gas_contained.temperature]K
    - \nVent doors: [ src.door_status ? "Closed Open" : "Closed Open"] - \n


    View + \n
    View \n
    Close \n
    \n"} @@ -286,16 +362,6 @@ usr.client.eye = src.compressor else if( href_list["str"] ) src.compressor.starter = !src.compressor.starter - else if (href_list["doors"]) - for(var/obj/machinery/door/poddoor/D in src.doors) - if (door_status == 0) - spawn( 0 ) - D.open() - door_status = 1 - else - spawn( 0 ) - D.close() - door_status = 0 else if( href_list["close"] ) usr << browse(null, "window=computer") usr.machine = null @@ -307,4 +373,4 @@ /obj/machinery/computer/turbine_computer/process() src.updateDialog() - return \ No newline at end of file + return From 372992ca36e5ba2cc4f64c58cb92c08c06ac148a Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Sun, 8 Dec 2013 22:47:29 +0100 Subject: [PATCH 121/315] Lowercased "gas turbine control computer" --- code/modules/power/turbine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 83a1a069462..7eb1525bca9 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -52,7 +52,7 @@ var/lastgen /obj/machinery/computer/turbine_computer - name = "Gas turbine control computer" + name = "gas turbine control computer" desc = "A computer to remotely control a gas turbine" icon = 'icons/obj/computer.dmi' icon_state = "airtunnel0e" From 64c08c64822c8213771bc3faf8b13721c73a779c Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Mon, 9 Dec 2013 00:17:03 +0100 Subject: [PATCH 122/315] Update turbine.dm Made compatible with LINDA --- code/modules/power/turbine.dm | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 7eb1525bca9..2172d34d088 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -82,9 +82,13 @@ // Crucial to make things work!!!! - -/obj/machinery/power/compressor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - return !density +// OLD FIX - explanation given down below. +// /obj/machinery/power/compressor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +// return !density + + +/obj/machinery/power/compressor/CanAtmosPass(var/turf/T) + return !density /obj/machinery/compressor/process() if(!starter) @@ -155,8 +159,14 @@ // THIS MAKES IT WORK!!!!! -/obj/machinery/power/turbine/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - return !density +// OLD FIX . Dunno how other engines handle this but this is how it should work: Turbine and compressor should be +// treated as walls to avoid conductivity and gas spread. This was the problem of the original turbine which was just +// a machinery - it didn't block the gas passage. +// /obj/machinery/power/turbine/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +// return !density + +/obj/machinery/power/turbine/CanAtmosPass(var/turf/T) + return !density From 29d637240f4d470475de1d751a2aa13888c1469d Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Mon, 9 Dec 2013 01:25:10 +0100 Subject: [PATCH 123/315] Update turbine.dm Replaced outdated code that wounded up there for no reason. --- code/modules/power/turbine.dm | 84 +++++++++++++++-------------------- 1 file changed, 35 insertions(+), 49 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 2172d34d088..faea0bb278d 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -217,75 +217,61 @@ /obj/machinery/power/turbine/attack_ai(mob/user) - if(stat & (BROKEN|NOPOWER)) - return + if(stat & (BROKEN|NOPOWER)) + return - interact(user) - - -// Only non-AI mobs + interact(user) /obj/machinery/power/turbine/attack_hand(mob/user) - add_fingerprint(user) + add_fingerprint(user) - if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) - user.machine = null - user << browse(null, "window=turbine") - return + if(stat & (BROKEN|NOPOWER)) + return - user.machine = src + interact(user) - var/t = "Gas Turbine Generator
    "
    +/obj/machinery/power/turbine/proc/interact(mob/user)
     
    -	t += "Generated power : [round(lastgen)] W

    " + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) + user.machine = null + user << browse(null, "window=turbine") + return - t += "Turbine: [round(compressor.rpm)] RPM
    " + user.machine = src - t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + var/t = "Gas Turbine Generator
    "
     
    -	t += "

    Close" + t += "Generated power : [round(lastgen)] W

    " - t += "
    " - user << browse(t, "window=turbine") - onclose(user, "turbine") + t += "Turbine: [round(compressor.rpm)] RPM
    " - return + t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + t += "

    Close" + t += "
    " + user << browse(t, "window=turbine") + onclose(user, "turbine") + + return /obj/machinery/power/turbine/Topic(href, href_list) - ..() - if(stat & BROKEN) - return - if (usr.stat || usr.restrained() ) - return - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - if(!istype(usr, /mob/living/silicon/ai)) - usr << "\red You don't have the dexterity to do this!" - return + if(..()) + return - if (( usr.machine==src && ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) + if( href_list["close"] ) + usr << browse(null, "window=turbine") + usr.machine = null + return + else if( href_list["str"] ) + compressor.starter = !compressor.starter - if( href_list["close"] ) - usr << browse(null, "window=turbine") - usr.machine = null - return - - else if( href_list["str"] ) - compressor.starter = !compressor.starter - - spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - - else - usr << browse(null, "window=turbine") - usr.machine = null - - return + spawn(0) + for(var/mob/M in viewers(1, src)) + if ((M.client && M.machine == src)) + src.interact(M) From 0e62ab1adc4beae3cf05c7ee0a46043c8fd3522c Mon Sep 17 00:00:00 2001 From: JJRcop Date: Sun, 8 Dec 2013 20:41:02 -0500 Subject: [PATCH 124/315] Adds Doomsday to holidays --- code/modules/events/event_manager.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 7bdc7d663cc..b41e08d2d0c 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -231,6 +231,7 @@ var/datum/controller/event/events switch(DD) if(10) holiday = "Human-Rights Day" if(14) holiday = "Monkey Day" + if(21) holiday = "Mayan Doomsday Anniversary" if(22) holiday = "Orgasming Day" //lol. These all actually exist if(24) holiday = "Xmas" if(25) holiday = "Xmas" From 5fde461f1ee0311fecd8c4ec73cf2fa77f71cc7d Mon Sep 17 00:00:00 2001 From: ACCount Date: Mon, 9 Dec 2013 21:40:51 +1200 Subject: [PATCH 125/315] Syringe gun wants to be real gun! --- code/modules/reagents/syringe_gun.dm | 155 +++++++++------------------ 1 file changed, 51 insertions(+), 104 deletions(-) diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index e64f5132fcc..f6f9c673abb 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -1,120 +1,67 @@ - - - /obj/item/weapon/gun/syringe name = "syringe gun" - desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance." - icon = 'icons/obj/gun.dmi' + desc = "A spring loaded rifle designed to fit syringes, used to incapacitate unruly patients from a distance." icon_state = "syringegun" item_state = "syringegun" - w_class = 3.0 + w_class = 3 throw_speed = 2 throw_range = 10 - force = 4.0 - var/list/syringes = new/list() - var/max_syringes = 1 + force = 4 m_amt = 2000 + clumsy_check = 0 + fire_sound = 'sound/items/syringeproj.ogg' + var/list/syringes = list() + var/max_syringes = 1 - examine() - set src in view() - ..() - if(!(usr in view(2)) && usr != loc) - return - usr << "[syringes.len] / [max_syringes] syringes." +/obj/item/weapon/gun/syringe/process_chambered() + if(!syringes.len) return 0 + + var/obj/item/weapon/reagent_containers/syringe/S = syringes[1] + + if(!S) return 0 + + in_chamber = new /obj/item/projectile/bullet/dart/syringe(src) + S.reagents.trans_to(in_chamber, S.reagents.total_volume) + in_chamber.name = S.name + syringes.Remove(S) + + del(S) + return 1 +/obj/item/weapon/gun/syringe/examine() + ..() + usr << "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining." + return - attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/reagent_containers/syringe)) - if(syringes.len < max_syringes) - user.drop_item() - I.loc = src - syringes += I - user << "You put [I] in [src]." - user << "[syringes.len] / [max_syringes] syringes." - else - usr << "[src] cannot hold more syringes." +/obj/item/weapon/gun/syringe/attack_self(mob/living/user as mob) + if(!syringes.len) + user << "[src] is empty." + return 0 + + var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len] + + if(!S) return 0 + S.loc = user.loc + + syringes.Remove(S) + user << "You unload [S] from \the [src]!" + + return 1 - - afterattack(obj/target, mob/user , flag) - if(!isturf(target.loc) || target == user) return - - if(syringes.len) - spawn(0) fire_syringe(target,user) +/obj/item/weapon/gun/syringe/attackby(var/obj/item/A as obj, mob/user as mob, var/show_msg = 1) + if(istype(A, /obj/item/weapon/reagent_containers/syringe)) + if(syringes.len < max_syringes) + user.drop_item() + user << "You load [A] into \the [src]!" + syringes.Add(A) + A.loc = src + return 1 else - usr << "[src] is empty." - - - proc/fire_syringe(atom/target, mob/user) - if(locate (/obj/structure/table, src.loc)) - return - else - var/turf/trg = get_turf(target) - var/obj/effect/syringe_gun_dummy/D = new /obj/effect/syringe_gun_dummy(get_turf(src)) - var/obj/item/weapon/reagent_containers/syringe/S = syringes[1] - if(!S || !S.reagents) //ho boy! wot runtimes! //haha i love finding my old comments - return - S.reagents.trans_to(D, S.reagents.total_volume) - syringes -= S - del(S) - D.icon_state = "syringeproj" - D.name = "syringe" - playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) - - for(var/i=0, i<6, i++) - if(!D) break - if(D.loc == trg) break - step_towards(D,trg) - - if(D) - for(var/mob/living/carbon/M in D.loc) - if(!istype(M,/mob/living/carbon)) continue - if(M == user) continue - //Syringe gun attack logging by Yvarov - var/R - if(D.reagents) - for(var/datum/reagent/A in D.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - if(ismob(M)) - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R])") - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a syringegun ([R])") - if(D.reagents) - D.reagents.trans_to(M, 15) - M.visible_message("[M] is hit by the syringe!", \ - "[M] is hit by the syringe!") - - del(D) - break - if(D) - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) del(D) - - sleep(1) - - if(D) - spawn(10) - del(D) - + usr << "[src] cannot hold more syringes." + return 0 /obj/item/weapon/gun/syringe/rapidsyringe name = "rapid syringe gun" - desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes." + desc = "A modification of the syringe gun design, using a rotating cylinder to store up to six syringes." icon_state = "rapidsyringegun" - max_syringes = 4 - - -/obj/effect/syringe_gun_dummy - name = "" - desc = "" - icon = 'icons/obj/chemical.dmi' - icon_state = "null" - anchored = 1 - density = 0 - - New() - create_reagents(15) \ No newline at end of file + max_syringes = 6 From 697e649d782e5bbe73d912fdc0cae7f55315dcff Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 9 Dec 2013 16:25:02 +0000 Subject: [PATCH 126/315] Changelog for the ghost sprites in https://github.com/tgstation/-tg-station/pull/1982 --- html/changelog.html | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index ea5fd4678a9..07836376277 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,7 +52,16 @@ should be listed in the changelog upon commit tho. Thanks. --> - + + +
    +

    9 December 2013

    +

    Giacom updated:

    +
      +
    • New colourful ghost sprites for BYOND members. Sprites by anonus.
    • +
    +
    +

    8 December 2013

    From 51d12a75125e714c2ed3525a47a320d478cf89c5 Mon Sep 17 00:00:00 2001 From: Incoming Date: Mon, 9 Dec 2013 12:46:34 -0500 Subject: [PATCH 127/315] Adds all sprites for all wands, books, and the staff of healing Fixes an issue where someone spamming a wand might lose charges without actually firing the bolt Removes a few missed bugtesting lines Adds a var (variable_charges) to be disabled for wands with assured max charges for future use --- code/datums/spells/charge.dm | 1 - code/game/gamemodes/wizard/spellbook.dm | 16 ++++++------ code/modules/projectiles/guns/magic.dm | 2 +- code/modules/projectiles/guns/magic/staff.dm | 10 +++---- code/modules/projectiles/guns/magic/wand.dm | 26 +++++++------------ icons/mob/back.dmi | Bin 61318 -> 61699 bytes icons/mob/items_lefthand.dmi | Bin 146914 -> 147597 bytes icons/mob/items_righthand.dmi | Bin 148626 -> 149407 bytes icons/obj/gun.dmi | Bin 39055 -> 41183 bytes icons/obj/library.dmi | Bin 18517 -> 26874 bytes 10 files changed, 24 insertions(+), 31 deletions(-) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 0ace8c7d9cd..5f8e1635b44 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -17,7 +17,6 @@ var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand()) var/charged_item = null var/burnt_out = 0 - world << "[user.l_hand] and [user.r_hand]" for(var/obj/item in hand_items) if(istype(item, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = item diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 055e887981f..6254b9e3725 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -338,47 +338,47 @@ /obj/item/weapon/spellbook/oneuse/fireball spell = /obj/effect/proc_holder/spell/dumbfire/fireball spellname = "fireball" - icon_state ="book2" + icon_state ="bookfireball" desc = "This book feels warm to the touch." /obj/item/weapon/spellbook/oneuse/smoke spell = /obj/effect/proc_holder/spell/targeted/smoke spellname = "smoke" - icon_state ="book5" + icon_state ="booksmoke" desc = "This book is overflowing with the dank arts." /obj/item/weapon/spellbook/oneuse/blind spell = /obj/effect/proc_holder/spell/targeted/trigger/blind spellname = "blind" - icon_state ="book1" + icon_state ="bookblind" desc = "This book looks blurry, no matter how you look at it." /obj/item/weapon/spellbook/oneuse/mindswap spell = /obj/effect/proc_holder/spell/targeted/mind_transfer spellname = "mindswap" - icon_state ="book6" + icon_state ="bookmindswap" desc = "This book's cover is pristine, though its pages look ragged and torn." /obj/item/weapon/spellbook/oneuse/forcewall spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall spellname = "forcewall" - icon_state ="book4" + icon_state ="bookforcewall" desc = "This book has a dedication to mimes everywhere inside the front cover." /obj/item/weapon/spellbook/oneuse/knock spell = /obj/effect/proc_holder/spell/aoe_turf/knock spellname = "knock" - icon_state ="book7" + icon_state ="bookknock" desc = "This book is hard to hold closed properly." /obj/item/weapon/spellbook/oneuse/horsemask spell = /obj/effect/proc_holder/spell/targeted/horsemask spellname = "horses" - icon_state ="book3" + icon_state ="bookhorses" desc = "This book is more horse than your mind has room for." /obj/item/weapon/spellbook/oneuse/charge spell = /obj/effect/proc_holder/spell/targeted/charge spellname = "charging" - icon_state ="bookInfections" + icon_state ="bookcharge" desc = "This book is made of 100% post-consumer wizard." \ No newline at end of file diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index c719bd4f663..29ea645df6b 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -28,7 +28,7 @@ /obj/item/weapon/gun/magic/afterattack() ..() - if(charges ) charges-- + if(charges && !in_chamber) charges-- /obj/item/weapon/gun/magic/New() ..() diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index cff5d6e603d..dd38641e184 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -1,10 +1,12 @@ +obj/item/weapon/gun/magic/staff/ + slot_flags = SLOT_BACK + obj/item/weapon/gun/magic/staff/change name = "staff of change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" projectile_type = "/obj/item/projectile/magic/change" icon_state = "staffofchange" item_state = "staffofchange" - slot_flags = SLOT_BACK obj/item/weapon/gun/magic/staff/animate name = "staff of animation" @@ -12,12 +14,10 @@ obj/item/weapon/gun/magic/staff/animate projectile_type = "/obj/item/projectile/magic/animate" icon_state = "staffofanimation" item_state = "staffofanimation" - slot_flags = SLOT_BACK obj/item/weapon/gun/magic/staff/healing name = "staff of healing" desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead." projectile_type = "/obj/item/projectile/magic/resurrection" - icon_state = "staffofanimation" - item_state = "staffofanimation" - slot_flags = SLOT_BACK \ No newline at end of file + icon_state = "staffofhealing" + item_state = "staffofhealing" diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 479e1fda0c7..7ca916232c9 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -2,15 +2,15 @@ name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick!" projectile_type = "/obj/item/projectile/magic" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand6" + item_state = "wand" w_class = 2 can_charge = 0 max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) - w_class = 2 + var/variable_charges = 1 /obj/item/weapon/gun/magic/wand/New() - if(prob(75)) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges + if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges if(prob(33)) max_charges = Ceiling(max_charges / 3) else @@ -36,8 +36,7 @@ name = "wand of death" desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." projectile_type = "/obj/item/projectile/magic/death" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand4" max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) @@ -53,8 +52,7 @@ name = "wand of resurrection" desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." projectile_type = "/obj/item/projectile/magic/resurrection" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand1" max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) @@ -75,8 +73,7 @@ name = "wand of polymorph" desc = "This wand inflicts is attuned to chaos and will radically alter the victim's form." projectile_type = "/obj/item/projectile/magic/change" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand5" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) @@ -172,8 +169,7 @@ name = "wand of teleportation" desc = "This wand will wrench targets through space and time to move them somewhere else." projectile_type = "/obj/item/projectile/magic/teleport" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand3" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) @@ -205,8 +201,7 @@ name = "wand of door creation" desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." projectile_type = "/obj/item/projectile/magic/door" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand0" max_charges = 20 //20, 10, 10, 7 /obj/item/weapon/gun/magic/wand/door/zap_self() @@ -216,8 +211,7 @@ name = "wand of fireball" desc = "This wand shoots scorching balls of fire that explode into destructive flames." projectile_type = "/obj/item/projectile/magic/fireball" - icon_state = "staffofanimation" - item_state = "staffofanimation" + icon_state = "wand2" max_charges = 8 //8, 4, 4, 3 /obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 0e1f856265003e2c963254e35285ff2c9d71a749..503bf48edc5f86021d6d8bac2a6e2dac59435825 100644 GIT binary patch delta 19032 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 QZ2$lO07*qoM6N<$f|l^-ga7~l delta 18665 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 Rw2T1=JYD@<);T3K0RWZ02&Mo4 diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index d89190c58eec88dba65e1a636c46f36d983618c0..deae052370bd3318905b7c8f3ceb8587508e68fd 100644 GIT binary patch delta 6623 zcmb6;XH*kwut881y*5NHAOw}7cmbtKjfzSK6)Dn@P6(lgnhl_$(m_DFNbgbuBmo2g zktQ|tCM~o8p(d2KsPCNj_w7mc%+7w_%w+mEnWCKx@jDgHLkBD7N%$`KQ)!tOm8ymN@PzZ0R$bFwExgReit8J~Vw-d*plAK%f;nTq zf$pmc8QlsqY~I;o4xIb959wF`yZY(gcj1$K$2)XdXG?)s@*H#g3*O_tfT8~jAA9$I zwlYlo#bWMVgE0Pu8J>;Mc{n{Sc5>nVi-FvI$2{>D#@u^<3xI4dkjU?|QdXxc@i+R) zUl!2)dAp--NatZ`kdU6rJ#yge_S`AkgL+ETx{scr)Je&$Ko1Uql=MtJ3fjd%!3`K5 z+nxrKt(ik;FdK%Il_lZuR;!Yv!fF(Pzu@RA7A(jo6CTauKUkbmt&=Yfsq1Vy?HItd z3S>&xTDHa|GM=oRUxU&e}K}ys*n8UxcAA;fba5+rqpZx)}^GQ#i)vx1F z&EE~n+I*Pjwlr`@(70@%Ecxz*F`kc6_LBDn3fU*R%utyc0C9QD`k#$0<;W9WwEC1^oI2jX{@f2TLq- zeariOwsC;q=#8*BMtCb!L_3Ap?H?7$bNu( zHF79Tq+HR`ZVM_AH{kQ#^)T{7LKMf_PJ<`2bP)8H$vO!DJy$)gMy&fn-mmG8VVkQ( zz7Kle-ck{zGo7+!9+!LEcx{83Po%DV@i`Ig;{8d}iB~{muYw$8j9dHCA4i$E&eDLs z3)^{QG}JE}KMrWF%m*xzJbbIO%^dJ7~?z20a*4bvRgi zYnX-@#_j?y5fZu%67B8nc2Z*^vmUB3A3k<>KRZq`q5pP0ICvNWVUbgQc>lS~c5&|# z%>IqU$sd~?-sBTj2z=p@S-Qvxo4fq&UM`2|3<@fOFu4X|%E?u=D)8|tsjAHEY$XH& zu>hUlUY--wqI_>}5qH>*4V8y*U*I@vFG>VVYCpXT>+BjH&uz~g*JN1~P?MfR6uFI> z9a<^;N`{1;t-6l1Ugz=HKxpuvlhof43^By5rNaxLKI!!j(Ncr%nY^M{Mrh7$RRLn_ zfl8LzR!Hyk+)M&*(B*`3lbfhbYnx@=AMKHkg4EH*HF2~gIX|lBCN3*CS){zEzZ#$> z_txmclXJa(q>*vOk*9#=o{7!P&3IAk&^*+v%Xw8* zFA{D^dT+QS{mWmERF>2T;mFIw$=rtjVmxw$!-J5+wCKQda2Lyr8cKAPtpP3fhg<(Q z;esATWNm7E;uS>Uh`k4y(0O(g7?t%*K2ir;AX+C?lVeCkF1So}8xKR+^rWU}rx(B^ zziA(P#Lng8eU%|BCiMJ>Fr9b)>hMjCA~y+!!U)P~{W`L^OKoX$Iy(bRe1ae+sk`gx z>Gf%XC|%K+ba-E?LYOG~WEDO$H$&PQF-$td@yoGY%Dl+nEi(~t~lced#MP-_K#fld2D<_f?F9s;r>R2w`KViWU(C+lh}aU^DS?( z)uDU#P=CL~QpGrfB^Pk7Y$0Sf)62Xj$H(LA+s?9mJ-(*n`27NX_`XSR&f0EBjc{i~ zwrhuXgC8OjeAGW=b#p+?O!ol96%a0b$QS z;%ccdG0UdqhLtcOIcCDCr?mEEooU~e54mi4fVtgE59;~gdvlj>g-(B5M{G5>3 z|8CyVcmp((J}ithYn7ybn{H2D{!TOYem+ahX`s$;w^QerC3~IsDkXGvRJz|j69auN z;cH=9d^oCT(b6ul`u55b8Jc#9#k-Z^)$A2o=`;1cZfRu&I+xGO(ID~2dU64Q57~#U zD&Z0bLs1~N_qCCL68kO}?=2DTj+U0L{1>G_Z%5QHHoGWas-#lpKaG-V z9-m&{-#Orx>f@lacQntD_QPO3NQ1)pnSi8*FnTOy7aOpI9u>lJmw1UL|1 zfsFKzJ3s6G9x2A63A>ZOUp-38|4xe>{Pgc%Gr8K=2lMt}I`ZhCQw_9~q&Gr)AE~t2 z84T(_jrQ@*y(^|!0-P?WlCb#w!1kjs+gvy7yL2ggxQCfjGAWW#o3z1_J+UFP-A6bA>p9D=_wn8%Z9ffUJ>SFccukzg|Bc{eb0<8AQ5=rvz(FX z2OVQi6)0T~04sj~IX&MnqI;$SSt;jDEc!I8H6}K$X}sfh+X%^pij3 zu!6ho0rUU7pO?Ru61%c}gZj|9jHa4t+b4(3)8FMAJ3r#!V%!**e1Oj|*lh9_OXT6Yd;{qr4I$_W5MaW(}PZDJtx8k&(!`r{(I_1&#FD z@2g2DqNwf&X2_F043}vEpr8LSnS!6}xL?*_(#NB3rY@sJm=8o^}FIFY&i>_L$vAy(|?@LaE>PY{(x%Us##lhXzE!wOB4> zhwzSJs0CDsJPYM_#hTGFU75p(^loHJIo|xK2^< z(+82ZUiL&~co}uPV!u|}TpQUY$yhs-1D(So+Ta}B6>p9b$UbjRdO!n`zl84MqFYND zvxP=MImc1H0Ms{OxeGHe&4tZa4c9pz;dUm8aLI`(qenH+ z;JbtdR)eG$mx`ICy_a55WxS29#9^r#j|SI8dWMIAMUV5cF0*QzTU)vIo^jUbq7Xi7 znx@E*@T8>wk8`ZPZ9KI4kEH5*CelY`Z0WpgkNMg)Yhu&g1C$cj3oL>V)t+6$BRR$@1XV{XOQ+GWH=P!#11&`*s* z+N<5X3ai-@HtlyGv9wofQ*;Z&A~#&LaKMRAArvFI&?G4> z!kuxRVU2L9@_r5YkP&j(3z^5H0cbvLtbYFr?S89Y`=fu4R@owOS!e=BWP_;A}K{>_^=PAOy?2$$#j@U5#Jqbt5TB3Y5}+N#lOdm3sb@MU71_=Wu> zLdo2};fzmS-+EpF@{x_4i|&_c>WK69%&j zt^F3fF5dv-*OxvDlv^fRS0`6kX!{n3!Hwax5OO9*FTp(Px|;Oupxh-_XDM4G#HFSX zN8wkEEKFPu=NSc(U@t(Fkhd0((K16EwBM#%xG39vvOL{*xOg?5Z{OKMnHQ#HIR+N* zAy*U%zO^(c?Y)(6)tM}}Lg9qbtu&s$GB(#-CvJQ{Ie{p4P}t=xeUfkD`1xrJ@#fJ1 z!qxb#aFTu~RuAm4@rP-q0T2xmbRIi`e_~P1UYxA= zcBOhz$PI-Gqxt9x`FoZur&|V&H$G}?QWgISo`o;Y5Ko)evk5jE{Kwh3aRZ+-;}N9& z`C?RI(CurL{ukM^yt&*74w5u=Md(`g;tOuu>?LIr_}mTt$b`+h^p4cq6;Hcmte@Gr zl+D#F%?IPjQQI8<5ro@KHaWD2qGf`yUtH@T>j)HC&-+@+6&GvZa!pdF? zwM;Z!cdRBCw%19vN>AdZEU+W)erd;V7hvD`o;Y$@4Ch3ad7nG6#Fa*=1y( z*8w^0Iq1N!e04LkRHoCX8^*($MVy7dZBISA^ZR^{Iczg2?;au80k32BXdKnG7W#L; zRA};Gu?E!5(ZzQETkYQqWk*Gdwvj`+uHL$P~g@R(!P9GWm0Etqtamvv-foDP*yvC; zi{|Q+nR#?~j|L3@1QWF+!oT&-LV3Xs?{rNn^ruX+1mV)Wr9N1qN-1leLmLipXi6G8 zyfIXO(ytKWHM!}+cDjz2By$LliId*FtlWLno*kv>$ig=VTEKQ|a%J<(bD8_IS>j%f zjRCU(<36`nK2G^2o7|O3`BV_{@b6&7=UWIf(9(tA<49+WAV_ilQ=q!B+!k!71afAU zkMsHU&{-sf?x+C53c5V_KN5WErC2oDZe_!Nsr>VIAcI}<@kwSM7yKthX>9lB=4#G! z{vlVJkACMlovo!eLO0gGYJj!(@unowx&*Xe4|@pesgk4+JL&juLJh#FKZGVY91@kb zx^t``n9`GVzik9+$M4~(OAv@i-9^TrBV|DxhhM3k`wbo4B+vhUMnM<-3!9S(AU zR*j$r4Oal1y@=f3IaA#^5TCNM6Uf}gFFY1OGW*M^=04=?PF*uB(KNFI=b4~2vF0+> zE6Y#*Bjp}Ag<7o)rEoruEKH8d?1);@nsC3NdRwMO(-^M+J#>8VZ1G!*_a9n^;B3mr zv_EQ2>@ZHX+G}MN@J)T91b!~^*PFjHjLo5Za6H-ZzpH`L;O{Ozb81n%wx81%^}qB6 zd;CY0XL!)OdsftQeR_47B${auu|13}HF8zjZwW%#EXcl=JZB~6sd3!pbdymYC{?C) z=MyTT7JVQZ`$jHMTv6b^wYA@Z*C7}tFk!&Jq=W0K%1QZe#!#BY-gHY;1F!ik%;lyJ zfT!EhLkuKbh%=Lf{J#QRU`**xn=gTmG{&tg`FRt^`w~AbH>h%Ms*SPyE zgcA{2U!#mTgj4WjT(7lGzTQ=3=|Oi9_&7>Z;#hZa)!(@uhL%mYq5#C=a1PNtNwy{Z z`NrlvEeEChKgWhe?uwSNBx<;uo91slNPY5nJm|Y)MP>HgTQFuYLrtnf zvI_Kyufd5dN7}`F;)ZO;Z7FyQDw~XC)5}j4*KZogch-F=Q9U8awe(Z_8Us{4KYZA@ z)S}UgFq&c{#LIjQ&_r7s=y6DyWNF%!R{b{8z1!z8G_^^ppu+vOC#OCPrzc!p>SqO{ zE3G!!U9R&GZLUfs#;$|}`d1zA-(c%0cyc2h)N|8836y+y+)QZONP=Oy19{QIO}+FE zLs(*#!Hh|XlhJRTpJcbg(3EJY1ZJK%5^5SwT>@ka2G{q$LiZ*Z7f7V8tQ53>vb5X6 z2O-1CPuDjU|Fe6In^x;d7dNOmgm$57x7y5^>p3pjUS#u8B&KaW2w6~jkLS*0cI&zh z_w#mB4+?s(F41>Pljt+L5Xe69`}b5LUuH65c329>MF!9|u| zh0h`E@vz4LbxM;l%tlq8x!}90B-PdV>&UUzJpP!`OJkQ#j@}h4B88T5yjbCJmAAM? zE*)G<%E8Dc)FW^DQraurjvw*iR(ct8?}f2WyxZ3opC21smn1Gf&I$SYoi^q<$C)JU zCa}kH({<*(fkKOyy{w1s5&Z+_JYZihY%s&N#Oc?cXsQbWr<}2|(ecX$d1Z6aa+Bxz z*S&>RbseGbkP2jhGvZ9djJOaAMfyG#>re#_wLaGxd(Rf1itP2QXb&;FXO5J$P;p(2 zw>zoIxi-+mG%(6E_J?wKeVq#+1lf(Zg(CGziq$jJjegY!PK`xJrGO(TV;`&w2 z8MLHi+v-Q7?7jXO0g4@Xu~fp0xq9vO@pyR|ZdW~crq&0*|WKeA7Rp=nP`pV^*F zA(#P<-5+uy)3;*61eL8o@bT#w^waE&IL;RmdS6^u--ZUCkzMS8eX!}u3R^xc`R2jZ z98IU=g_~k)rxO4~VBk09^mzb14zdG~VZ!oOEp2zTb zyw472T+7E_>pzlpMY_pv#Z}V47(?DPtZfu(ymP;MLa$SC>s0Kcstf*M+Jz10CQ)E| z`qjujtdWTSGl$1eUY?jJs?iahk{2dIpa}f^rJl=nc3)g|BC-J0Q?+*lWD?622G=~K z@s-GjfUJB8-eIMpyU{j9+Ir4m4|EH&DfYwPz_>o>1zi~r0v(oK_7H~! zF!It9QVFq=m&4g&c9ec^pQyM4$252|5s_?6eKCb%uNSd{yu#TSCged*iQ&Cw z8FVN?s}kLc;UTF-xur3v>^$_y&iNWIi-<2Xy@|X5*@5sr`Mur|N>>>MQi2cCd4S=M pRjC$g8Q7+S;Gsc(|HIhcXFbDe7$KYF^Sjh3Khk(u_`uZve*kV44{rbf delta 5934 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 ZG`bQ_o76(_Ujv7Tpz8P4zNtPA`G4J*k_rF- diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 16568a4452d799ca158e250bc16e96cd42582882..423cbc5fb01b4a90d3f191fa37931536e7aa1aaa 100644 GIT binary patch delta 9921 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 TUKmM%y`-rrYdtA@Y#I806cybP diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 53237188526ca78c221c4c3316a4911807998341..5f35fd26c27953731c5721a93d4d763cece3322c 100644 GIT binary patch literal 41183 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 BG`;`; literal 39055 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 }1np*U#26X!DpdVW=Qi>P8 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 C8pRR- literal 18517 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 Date: Mon, 9 Dec 2013 22:25:27 +0400 Subject: [PATCH 128/315] More consistency in grammer Thats what you get for not being a native english speaker --- code/game/gamemodes/changeling/changeling_powers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 6376b17ee49..2b2a488a011 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -541,7 +541,7 @@ var/list/datum/dna/hivemind_bank = list() hud_used.lingstingdisplay.invisibility = 0 /mob/living/carbon/proc/unset_sting() //unsetting the previous - src << "We retract our sting, you can't sting anyone for now." + src << "We retract our sting, we can't sting anyone for now." src.mind.changeling.chosen_sting = null hud_used.lingstingdisplay.icon_state = null hud_used.lingstingdisplay.invisibility = 101 From 25c43d0a98b6a3eb5ae718670c45f88753427080 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 9 Dec 2013 19:35:31 +0000 Subject: [PATCH 129/315] Added a santa hat icon for the entertainment monitor. Made it change in the Xmas event. --- code/modules/events/holiday/xmas.dm | 5 ++--- icons/obj/status_display.dmi | Bin 20632 -> 25774 bytes 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index 4785fbe560f..e66a1c815f8 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -31,6 +31,8 @@ new /obj/item/weapon/a_gift(T) for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list) Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian)) + for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in machines) + Monitor.icon_state = "entertainment_xmas" /datum/round_event/presents/announce() command_alert("Ho Ho Ho, Merry Xmas!", "Unknown Transmission") @@ -43,9 +45,6 @@ desc = "Directions for use: Requires two people, one to pull each end." var/cracked = 0 -/obj/item/weapon/toy/xmas_cracker/New() - ..() - /obj/item/weapon/toy/xmas_cracker/attack(mob/target, mob/user) if( !cracked && istype(target,/mob/living/carbon/human) && (target.stat == CONSCIOUS) && !target.get_active_hand() ) target.visible_message("[user] and [target] pop \an [src]! *pop*", "You pull \an [src] with [target]! *pop*", "You hear a *pop*.") diff --git a/icons/obj/status_display.dmi b/icons/obj/status_display.dmi index 7fe60436fb8b9235cc9102ec93af15f22ac5dc24..d27884a7225279f941785fe1b8b9d2a8b91fee84 100644 GIT binary patch literal 25774 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 Q$3fut6Q}HJZ7-$#2lj2ySpWb4 From 6402574be8b06a0c702b176adce47ebab4d71be8 Mon Sep 17 00:00:00 2001 From: Adrinus Date: Mon, 9 Dec 2013 15:39:37 -0500 Subject: [PATCH 130/315] Made emp_act available to all arcades. Made prize vending with filled boxes a proc for use by any arcade machine. Names of your crew are now generated from the same name lists as random characters. Cleaned up the Topic code so there were less duplicate lines. --- code/game/machinery/computer/arcade.dm | 105 ++++++++---------- .../game/machinery/computer/buildandrepair.dm | 2 +- 2 files changed, 49 insertions(+), 58 deletions(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index ff346067897..02c31be6abc 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -31,6 +31,39 @@ new choice(loc) del(src) +/obj/machinery/computer/arcade/proc/prizevend() + if(!contents.len) + var/prizeselect = pickweight(prizes) + new prizeselect(src.loc) + + if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun + new /obj/item/toy/ammo/gun(src.loc) + + else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit + new /obj/item/clothing/head/syndicatefake(src.loc) + + else + var/atom/movable/prize = pick(contents) + prize.loc = src.loc + +/obj/machinery/computer/arcade/emp_act(severity) + if(stat & (NOPOWER|BROKEN)) + ..(severity) + return + var/empprize = null + var/num_of_prizes = 0 + switch(severity) + if(1) + num_of_prizes = rand(1,4) + if(2) + num_of_prizes = rand(0,2) + for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) + empprize = pickweight(prizes) + new empprize(src.loc) + + ..(severity) + + /obj/machinery/computer/arcade/battle name = "arcade machine" desc = "Does not support Pinball." @@ -45,8 +78,6 @@ var/enemy_mp = 20 var/gameover = 0 var/blocked = 0 //Player cannot attack/heal while set - -/obj/machinery/computer/arcade/battle var/turtle = 0 /obj/machinery/computer/arcade/battle/New() @@ -168,21 +199,9 @@ log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") src.New() emagged = 0 - else if(!contents.len) - feedback_inc("arcade_win_normal") - var/prizeselect = pickweight(prizes) - new prizeselect(src.loc) - - if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun - new /obj/item/toy/ammo/gun(src.loc) - - else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit - new /obj/item/clothing/head/syndicatefake(src.loc) - else feedback_inc("arcade_win_normal") - var/atom/movable/prize = pick(contents) - prize.loc = src.loc + prizevend() else if (emagged && (turtle >= 4)) var/boomamt = rand(5,10) @@ -249,24 +268,6 @@ ..() return -/obj/machinery/computer/arcade/battle/emp_act(severity) - if(stat & (NOPOWER|BROKEN)) - ..(severity) - return - var/empprize = null - var/num_of_prizes = 0 - switch(severity) - if(1) - num_of_prizes = rand(1,4) - if(2) - num_of_prizes = rand(0,2) - for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) - empprize = pickweight(prizes) - new empprize(src.loc) - - ..(severity) - - @@ -317,9 +318,12 @@ /obj/machinery/computer/arcade/orion_trail/proc/newgame() // Set names of settlers in crew settlers = list() - var/list/settlernames = list("Bob","Henry","Joe","Mary","Jill","Mandy") + var/choice = null for(var/i = 1; i <= 3; i++) - var/choice = pick_n_take(settlernames) + if(prob(50)) + choice = pick(first_names_male) + else + choice = pick(first_names_female) settlers += choice settlers += "[usr]" // Re-set items to defaults @@ -351,17 +355,8 @@ if(fuel <= 0) dat += "
    You ran out of fuel, and drift, slowly, into a star." dat += "

    OK...

    " - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return else if(event) - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(eventdat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return + dat = eventdat else if(playing) var/title = stops[turns] var/subtext = stopblurbs[turns] @@ -376,23 +371,20 @@ else dat += "

    Continue

    " dat += "

    Close

    " - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return else dat = "

    The Orion Trail

    " dat += "

    Experience the journey of your ancestors!



    " dat += "
    New Game
    " dat += "

    Close

    " - var/datum/browser/popup = new(user, "arcade", "The Orion Trail") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return /obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) + if(..()) + return if(href_list["close"]) usr.unset_machine() usr << browse(null, "window=arcade") @@ -553,5 +545,4 @@ /obj/machinery/computer/arcade/orion_trail/proc/win() playing = 0 - var/prizeselect = pickweight(prizes) - new prizeselect(src.loc) \ No newline at end of file + prizevend() \ No newline at end of file diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 042e9fd62d2..8a39ee4a54d 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -106,7 +106,7 @@ build_path = "/obj/machinery/computer/cloning" origin_tech = "programming=3;biotech=3" /obj/item/weapon/circuitboard/arcade/battle - name = "circuit board (Arcade)" + name = "circuit board (Arcade Battle)" build_path = "/obj/machinery/computer/arcade/battle" origin_tech = "programming=1" /obj/item/weapon/circuitboard/arcade/orion_trail From db94963933d6a15f5b6db7d74c11b0660ff59572 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Mon, 9 Dec 2013 21:02:50 -0500 Subject: [PATCH 131/315] Adds functionality to empty a transit pod or put mobs in one Clicking on a transit station with a grab or harm intent will cause you to attempt to empty the contents of the pod onto the floor, takes 4 seconds Clicking on a transit station with a grab item in the aggressive state or above will cause you to attempt to stuff the grabbed mob into the pod, takes 6 seconds EDIT1: Caused stuffing people in pods to stun them for 5 seconds to assist transport of captured persons --- code/game/objects/structures/transit_tubes.dm | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 5e85802b1fa..f20a7cb73ca 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -121,9 +121,30 @@ obj/structure/ex_act(severity) open_animation() else if(icon_state == "open") - close_animation() + if(pod.contents.len && user.loc != pod && intent_numeric(user.a_intent) > 1) + user.visible_message("[user] starts emptying [pod]'s contents onto the floor!") + if(do_after(user, 40)) //So it doesn't default to close_animation() on fail + if(pod.loc == loc) + for(var/atom/movable/AM in pod) + AM.loc = get_turf(user) + if(ismob(AM)) + var/mob/M = AM + M.Weaken(5) + else + close_animation() +/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/grab) && icon_state == "open") + var/obj/item/weapon/grab/G = W + if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE) + var/mob/GM = G.affecting + for(var/obj/structure/transit_tube_pod/pod in loc) + pod.visible_message("[user] starts putting [GM] into the [pod]!") + if(do_after(user, 60)) + GM.Weaken(5) + src.Bumped(GM) + del(G) /obj/structure/transit_tube/station/proc/open_animation() if(icon_state == "closed") @@ -146,7 +167,7 @@ obj/structure/ex_act(severity) /obj/structure/transit_tube/station/proc/launch_pod() for(var/obj/structure/transit_tube_pod/pod in loc) if(!pod.moving && pod.dir in directions()) - spawn(5) + spawn(35) //To prevent saxing in the pod, should probably change these to sleep if it doesn't break the tubes pod_moving = 1 close_animation() sleep(CLOSE_DURATION + 2) @@ -422,7 +443,6 @@ obj/structure/ex_act(severity) return - // Parse the icon_state into a list of directions. // This means that mappers can use Dream Maker's built in // "Generate Instances from Icon-states" option to get all From b7b05d53ecf2dc8adf1939fce947fbc23d55cd9f Mon Sep 17 00:00:00 2001 From: Incoming Date: Tue, 10 Dec 2013 01:04:16 -0500 Subject: [PATCH 132/315] Code optimization and copypasta removal: the teleport wand now uses do_teleport the polymorph wand now uses wabbajack in both instances You can now click on yourself while holding a wand to cast it on yourself in addition to clicking on the wand itself. Changed how guns/magic are given out slightly. Previously no antag could get a gun/magic thing (including survivors made by the spell in the case of multicasting) but now antags who aren't the wizard or an apprentice of the wizard also get one. Fixed a few bugs on accidentally burning charges by click in places tht wouldn't actually fire the wand/staff --- code/game/gamemodes/wizard/rightandwrong.dm | 3 +- code/game/gamemodes/wizard/spellbook.dm | 2 +- code/modules/projectiles/guns/magic.dm | 4 +- code/modules/projectiles/guns/magic/wand.dm | 128 ++--------- code/modules/projectiles/projectile/magic.dm | 210 +++++++++---------- 5 files changed, 122 insertions(+), 225 deletions(-) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index 4b0d7633e82..891a2dbff7c 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -5,7 +5,8 @@ message_admins("[key_name_admin(usr, 1)] summoned [summon_type ? "magic" : "guns"]!") for(var/mob/living/carbon/human/H in player_list) if(H.stat == 2 || !(H.client)) continue - if(is_special_character(H)) continue + if(H.mind) + if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice") continue if(prob(25)) ticker.mode.traitors += H.mind H.mind.special_role = "traitor" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 6254b9e3725..cdc1610aebb 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -323,7 +323,7 @@ for(var/obj/effect/proc_holder/spell/knownspell in user.spell_list) if(knownspell.type == S.type) if(user.mind) - if(user.mind.special_role == "apprentice" || user.mind.special_role == "wizard") + if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard") user <<"\blue You're already far more versed in this spell than this flimsy how-to book can provide." else user <<"\blue You've already read this one." diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 29ea645df6b..c38d46822d5 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -26,9 +26,9 @@ in_chamber = new projectile_type(src) return 1 -/obj/item/weapon/gun/magic/afterattack() +/obj/item/weapon/gun/magic/afterattack(atom/target as mob, mob/living/user as mob, flag) ..() - if(charges && !in_chamber) charges-- + if(charges && !in_chamber && !flag) charges-- /obj/item/weapon/gun/magic/New() ..() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 7ca916232c9..5896ecb4f58 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -29,6 +29,20 @@ user << "The [name] whizzles quietly." ..() +/obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) + if(target == user) + return + ..() + +/obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) + if(target == user) + if(charges) + zap_self(user) + else + user << "The [name] whizzles quietly." + else + ..() + /obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) user.visible_message("\blue [user] zaps \himself with [src]!") @@ -71,99 +85,16 @@ /obj/item/weapon/gun/magic/wand/polymorph name = "wand of polymorph" - desc = "This wand inflicts is attuned to chaos and will radically alter the victim's form." + desc = "This wand is attuned to chaos and will radically alter the victim's form." projectile_type = "/obj/item/projectile/magic/change" icon_state = "wand5" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) if(alert(user, "Your new form might not have arms to zap with... Continue?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - if(user.monkeyizing) return - user.monkeyizing = 1 - user.canmove = 0 - user.icon = null - user.overlays.Cut() - user.invisibility = 101 - for(var/obj/item/W in user) - if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - del(W) - continue - W.layer = initial(W.layer) - W.loc = user.loc - W.dropped(user) - - var/mob/living/new_mob - - var/randomize = pick("monkey","robot","slime","xeno","human","animal") - switch(randomize) - if("monkey") - new_mob = new /mob/living/carbon/monkey(user.loc) - new_mob.universal_speak = 1 - if("robot") - new_mob = new /mob/living/silicon/robot(user.loc) - new_mob.gender = user.gender - new_mob.invisibility = 0 - new_mob.job = "Cyborg" - var/mob/living/silicon/robot/Robot = new_mob - Robot.mmi = new /obj/item/device/mmi(new_mob) - Robot.mmi.transfer_identity(user) //Does not transfer key/client. - if("slime") - if(prob(50)) new_mob = new /mob/living/carbon/slime/adult(user.loc) - else new_mob = new /mob/living/carbon/slime(user.loc) - new_mob.universal_speak = 1 - if("xeno") - if(prob(50)) - new_mob = new /mob/living/carbon/alien/humanoid/hunter(user.loc) - else - new_mob = new /mob/living/carbon/alien/humanoid/sentinel(user.loc) - new_mob.universal_speak = 1 - if("animal") - var/animal = pick("parrot","corgi","crab","pug","cat","carp","bear","mushroom","tomato","mouse","chicken","cow","lizard","chick") - switch(animal) - if("parrot") new_mob = new /mob/living/simple_animal/parrot(user.loc) - if("corgi") new_mob = new /mob/living/simple_animal/corgi(user.loc) - if("crab") new_mob = new /mob/living/simple_animal/crab(user.loc) - if("pug") new_mob = new /mob/living/simple_animal/pug(user.loc) - if("cat") new_mob = new /mob/living/simple_animal/cat(user.loc) - if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(user.loc) - if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(user.loc) - if("mushroom") new_mob = new /mob/living/simple_animal/mushroom(user.loc) - if("tomato") new_mob = new /mob/living/simple_animal/tomato(user.loc) - if("mouse") new_mob = new /mob/living/simple_animal/mouse(user.loc) - if("chicken") new_mob = new /mob/living/simple_animal/chicken(user.loc) - if("cow") new_mob = new /mob/living/simple_animal/cow(user.loc) - if("lizard") new_mob = new /mob/living/simple_animal/lizard(user.loc) - else new_mob = new /mob/living/simple_animal/chick(user.loc) - new_mob.universal_speak = 1 - if("human") - new_mob = new /mob/living/carbon/human(user.loc) - - var/datum/preferences/A = new() //Randomize appearance for the human - A.copy_to(new_mob) - - var/mob/living/carbon/human/H = new_mob - ready_dna(H) - if(H.dna) - H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") - H.update_body() - else - return - - for (var/obj/effect/proc_holder/spell/S in user.spell_list) - new_mob.spell_list += new S.type - - new_mob.a_intent = "harm" - if(user.mind) - user.mind.transfer_to(new_mob) - else - new_mob.key = user.key - - new_mob << "Your form morphs into that of a [randomize]." - - del(user) - return new_mob + ..() //because the user mob ceases to exists by the time wabbajack fully resolves + wabbajack(user) charges-- - ..() /obj/item/weapon/gun/magic/wand/teleport name = "wand of teleportation" @@ -173,27 +104,10 @@ max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) - var/list/turfs = new/list() - var/inner_tele_radius = 0 - var/outer_tele_radius = 6 - for(var/turf/T in range(user,outer_tele_radius)) - if(T in range(user,inner_tele_radius)) continue - if(T.x>world.maxx-outer_tele_radius || T.xworld.maxy-outer_tele_radius || T.yworld.maxx-outer_tele_radius || T.xworld.maxy-outer_tele_radius || T.yYour form morphs into that of a [randomize].
    " + /*var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") + switch(alien_caste) + if("Hunter") new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) + if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) + if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) + else new_mob = new /mob/living/carbon/alien/larva(M.loc) + new_mob.universal_speak = 1*/ + if("animal") + var/animal = pick("parrot","corgi","crab","pug","cat","carp","bear","mushroom","tomato","mouse","chicken","cow","lizard","chick") + switch(animal) + if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) + if("corgi") new_mob = new /mob/living/simple_animal/corgi(M.loc) + if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) + if("pug") new_mob = new /mob/living/simple_animal/pug(M.loc) + if("cat") new_mob = new /mob/living/simple_animal/cat(M.loc) + if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) + if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) + if("mushroom") new_mob = new /mob/living/simple_animal/mushroom(M.loc) + if("tomato") new_mob = new /mob/living/simple_animal/tomato(M.loc) + if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc) + if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc) + if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc) + if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc) + else new_mob = new /mob/living/simple_animal/chick(M.loc) + new_mob.universal_speak = 1 + if("human") + new_mob = new /mob/living/carbon/human(M.loc) - del(M) - return new_mob + var/datum/preferences/A = new() //Randomize appearance for the human + A.copy_to(new_mob) + + var/mob/living/carbon/human/H = new_mob + ready_dna(H) + if(H.dna) + H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") + H.update_body() + else + return + + for (var/obj/effect/proc_holder/spell/S in M.spell_list) + new_mob.spell_list += new S.type + + new_mob.a_intent = "harm" + if(M.mind) + M.mind.transfer_to(new_mob) + else + new_mob.key = M.key + + new_mob << "Your form morphs into that of a [randomize]." + + del(M) + return new_mob /obj/item/projectile/magic/animate name = "bolt of animation" From 46131c860f7c1ca48589d968c6440cdef84de3a2 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Tue, 10 Dec 2013 12:56:45 -0800 Subject: [PATCH 133/315] fixes missing icon for gatfruit --- icons/obj/hydroponics.dmi | Bin 149071 -> 151998 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi index b3574c05716f590da183f3c476b7e4fe7a2faf2e..093c17cd2b316f027ef3f3eeeaf7a1ec713ee75a 100644 GIT binary patch delta 11506 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 delta 8557 zcmZu#Wmp?sunz88oFc_bpm@+CrC2FYN?V*D#U;3hAjOIocPNzN+TdE;-QBeX8iLDB zzx#d9{d1q>-7~v8nKL`*otZsp&BGgw#EWHv6??zaaeZm-V&-h^=xPmd002BQzGVzL zEP*IOX0yK2u<6$+XQ(Vji7EuLL~K#wN4v7%6}$|X@H~=&Qq!HX#JEUzsh$UpwRr0AS zs!@j9W->!3k0f7b4;!2ueTdA|52@>s84wnl(>blkVe$}#>mZujR@>TIZd)b}wL^AC zfg1Jq2{ozR4+~n)mhZO*w9CAxq5H2Fcc0 ziq+1eEF!EpmcyDnLAC-egJafbJ6^(mS?|ucR%9M#JU#rt?FT+@KO)thR)?aWo1xv{ zeB3Xn9D}FmDU{UKFbIoPH+IBL6GfLgIDT{sVlAO>uAEv6-of@rOz>>p7~6qShN@SH z3Hx;Ct^$d9kGY?^w3K|J__}#7pS@TBAXc~7|OBNsNE^qf8a43DaKzZLy zpvqumRokqj)o&(>tFs8ir#k-}_`c<9V?)d`vyvHd(A&J(!*zj;9~a6(h@Oqr6W0@% zXHv7QdHY&EDq-d(Wx|_Nn@*(3qc+5zxNv37|DfzwW|=jveTc49bPkMF4Si2J{?aRV zz2B7zoJy9hhNrIn9g}l+5=%*q=~vPBU(uy2dwmDIMmkdlLc*pdF03V@qSf9m)JYxh7Rs%CS9#5F;%Y$&QMLIsE zDpzt#vA*{2^((!Ev#=&wNAE^#wCVyXp}L@WiLdnO2(cqaJ#10;y>qBqnuiN z7j(qyT-!IrA`?-{<6Je?PJUc4{?6IG6~-P1oeO^auzv37Q~#W;H$DBTMI@l(3B8Hq zfTGUD9l92fPb@-gNo;~fqPiAwhUSV&75(%9D~D0C$4JE-$Q*rupN<2jH;9L9EI^sfika?kMC&l~ za9!38^ZGAf{|Id8Q@eSzL$Z)CJVNeOGVE{1xIqgZpX5#@f971bwAbIZtQ|d*jy65qStlqX7$n zx*UW<+KVb}m_{h#xLd*-ZvnSGqaVw7Vhf$$))_4Y)BqSt=W2h%`RWx()0g=2trVd6 z<}2d*FOy|QRzR`YcT?`qk)k>I_;Xqw7{%%IZ@?e0gkSKIE1`vL%mokOeU96R{SB^85R}Uelc_1d|w?Iss zim>luo(jI*UIH5|Yw(RPEpDv-i5p)sQG?sY7pNQS7^fQx7dMdFu2{+E%THd8N3jej z5TS6#{wVer3d`)cmpkNaVqQko%+6WgMpTpJM{2sf`c3;_UQk??m`6-qsgYRlptdv5uQ+q<~vu_P6xP$};L>m~A(^@RMb` z>~rv-K4nBI>b}@_?%H5U{p5GD&Wtd-HCmDv>ybFQjy*wd#5U!)9$#jwx1M!UCimCf z8~RZB&K9TZUDF0)avbYmr8I*njsG~j7lmK40St(;EZo*^GwKyQVfv0P^to_V;Q>*u0ig?i$Mrn*&(o zZd}>hiekFgj9JWw8kq<)l;CglUStl@_u*-N0WmfHGt;i4A}elS@2q}}acSGxb{WH@1NOAxZ+#Mv`^gV(d_L(S;v_w4Wa zGkyJ&b*-j+lo}V$v!A4@gz7usuJL9UPp2EZbCk`+yC#UWu#jqAgVy~~eJNTia)8^Y?X8+^09~qYnJ^(kPp4_TPX>gnpmq*G}^d~IynI$Y-|JD7IWVNMh zSu%_x>?RgS+#=JT=-v(&+Td-puxq<6b5p#xDG%#M!uUpWfQE>`b9&5SMbgVt!RA=Y%NSyBX=tLlh-rrisi zm4QDIoa+rKN>yv^6;7}M4a$+;o7!;|k_!e^lbQkyh400uy^__ZH8mRTZ^j9zpBc)V zZs2A}rUV&2I5kdIY}SQrm$urmo;P!^m%nFylL8Ls$vvM2-=6I2&(9va-(O^&WqRGs z4IUlCRw73xG-RYg%QAC#4#(;A{k+li1?*Y|ZFNvmNzIHL18i4C%hu2-a&$WFyOGk= z>@}gD(|+h~Wmq5X)zW8^Lw1L?4}|)B*82zn-aFJqg$y7Rux4wuj~M+rGb`ayv+vT` zHeNMO_jYzQ}p_v;}>!8j$Jil z59mFGYHe3wcTZ03hGfFsjd03v2p{9>ljV!#c^+v&Op?*m=zC4*X$R-L=h6Ms!qSG) zv9{ei-PicI?d_5w9TfCLMPKQ>*eM$YCnr}jM}GF)!f<BvWOcHsvFtvAY1F)G{LZnV7TZnxPypnG8=Wm35hrtr=Kf12#NPTQKXm3UCDk;K zf7fzyoUfQq`cjO3Q;|qM+ZY4%0HwA8+Elu&Gwyc`S=(JNn>lWzL-=iUSfY0_ zU8jA8y*V|cT*)eWxX7ko{jxTp9_};%Kx~8(aLQBq8w0gw67!`aoEF4`~a)iz1ZNjFefLHl0mlpxvKYY`H zqw|P$oWg~)pp&$k6p#e@%p<1tY$j+($PyLoh(U;isDby-?StW8*AI}FT^OnLj1M*`Qj(?iwJ#1D;`N1_n;QHAN82V!~P!n$c4xoHDi z$`q&4_45w+NfRD2xtyX07S3(mLzoGy#E(-CXX~v_y6sKx79<#!cnlPN?nykONa_&4t8ecTx} zTVh6}n9sZD=07z6O(vJbTNqi|p(FBf;2tlc|dMyB(|AH4S2m;m!cN*yT})w84ov&&dd9qg{P zd!L>SQx$Ql(d^*r0enDv?GNZgR*-mD)MrIaYb=xv<;RbIQ6qpOv+*Lt6sspu_EmUF z^DYp^u2lRrS#C!jAfTTBcHA{34l(U}XDqJ*K(Wo3&@Scj#=|($rlT0q;#4^uq7kyx zey7`>--1RHw6AknMP$j{PR#Rz-ug9$9=0#Oaol8g26smL+?DB)&;jUtN}UxSm@dG{ zNaNc|f{yduxF@eoVQDV$h!V}o#W~XX{0zg z+8W;N!6Y}u2T;whMta=NE#FjW&L&;S7yOs7qBR9*RKr;)m-aNr>iDK4hx7ecM$5M{ZyLmW~HP;Z+{rNVwEWFH>8_!ICC52}vSBD$p01 z_nl7|RiQ`b<}(w{`TD;Kgm`VS2VXBg<&|lX1?ApCGvOn7etI*6NrFy-OZ%KLk9o7H zk?~5=Jzti(=zA?IDcr{R> zi5k+Yw^LA4KKTS1V~CAQ(~%@(_^F{=!2o^BStydAxo-|4%f4;LUVjP%v&v{&mc`eUZ`>#&0A87>11Gdd zgUgwOL3W_4zfUr5Gd~+e6lW3`1AuAsx}Q~P)9(JM0i-#4`#Uwit+n{2LCdv@6V#;4 zTqo&y@-m%=?CIrq!k zx;!ao892?#g*T8w%@o)F5{vt5EX6Ffwfy2mPRedgw)x-$V@Dutw6zNnGu(c_cV`x8 zTfX?lrHBfoPk=u{x#=n=@OLoPW#`5wl2tyI9gT?ftDEt#d`n*rRvb15>e+)ReDwn( zz?3=026(Rqfts4n0gCdKT9I~NwVTpn4#cQH{yG!LJDK z6XX*@0MBaePq7XMe*$3oxGy_k(q55*9h6sDO^bI&6eeTaUhdD)eEyRrvi>=?s=IH< z&r$t2S0BENr zK1A*`QC1nLCUzD|-e!oizli*H&2geV0cmSp$nYvgOczhTk3qX0B>8cspoXl{nLLbY zUDzryyIPRdpZQ>TQ&R3mN%Tzgt7&Ot`AmE(e5$obU_uJu|GaZ(m`Ai}$5j`Ktjbf}enjCeAw1sc{zdL%&NQ%Qc8slI`T~E`1ofd8pAi=Tu!LIv1NxuLY4f;2 zco;aZ>OFG-sC6#1E$_}rk;7;8-T7(mWu!|hZ|K7NW#f9Fmkj$6s`HT^1|n~xKSz37 z;y1YrIlj|2RQzZM-nu)ah;AFZB4MRzbC7@u)z+?6(RyrpssxwH6vKoCWtM_h0s{K( zwsX~+h$oKq?r4u+n?};|A9naSHRq#?e&!D7xD${7(WS54;9>`%;oKj3h8~O>QjUUn zt+RV49+mL714UD5MeA=9<2?jPdkU$%BD34#FwdkXK^l)`E@Eoozh!1EQVeO=z^$sia(85W&EEOw*>s|w{x|ter>i^i(~tLy2lpoMWc?cEpr3giY6Dh3Y45?0-X^9_96vU0R>Wd)fwgaOglvwWz}q(~oqG;Q^Gx zl?!aPE$Ab?0E0B}2#jx4<0Bx0ur#f{3Y+HHTue7&!xt&wPds=}jydk-Ie>4Q3###! zkS!zvt{IG$%uw%In}3E&JgRS$28@+dloOmQf(Pwv&6Ci$hQ0yw`eV?!eg`l39td>$-;@(=Jk~h$F5z=Ga-0?Ux#+fRf9B%G zU;rM%wA~MfDW*b{fqNc z=3d4a&Z=bQw@2QSEO9o9xn%fg0WY1sHFY$xwXi#iN3;#Kuj4Q85FNBH1b@3M{d%>H zP(Z+d4r`MW)Wg39o~E;%dZKo5NvSd#PSUJ=nc>@yHs-328hBXwmK_QhmRSb|Qf~Pp z12Fn;$X7K!Xc)1UWi=}xNrLtV3 zL3-%;P(<3TPK&jAOUR5=`DhetHjuFbJI!z07 zPD^QD+h`SQgIjcCDmD*pri|`T89H%A5Ug%%g;aF^UIA*=(>2Z+?sDE75NbUTd1*FO z)3YQTf#?dgBE?*X^#LAX$`y_YmU-Jk#M>4hN`HGBLdI@f#ds0Fo-UT|x-<>=B0|Ad za9yp#CT`k&8)#WM;emh?Y%|Tu{i>6%tCu-~oz%Ztz5Y4x7;fO6SVp5PDW)8$VW?#M z!7zsyc(X-dOi!dw&r@PG^9;U_&|qWOLsZ6T284WO#r-5KexrW{!bI-H0+-rkv_*4Z2yEF(LcnaaLxy)JOcSlmuB|X zan?%ip`MEr^Ykv1@I(z=G?+^3=5=P4&Q){&y?Isb@N6DmPeheygfzeoGWWAq)Glt< z{IPES&CM@Wp1;$P-Uop?+{}0sEJA7kgUwNsU+_scI$b2m<7#o*rplB zFCEn6Z`cUK1QaZGRKTEQg#piq=^+PfXuE^4WvCPn%50aQV;2x{@So*i!S-d+i2k@T z;UaZ0!Mr}Cv)ua(iAM($z6VovDMN$}mFc5;TtkP$Iiunp8(|r6LkT~)@W(CBtBjO+ z${0zOBvg!G%(xFPXpI?8(%$9+yag-Lsw6fj6{9VsawT?-m-oN5KYhgA>l9DJ7ul3n zA`b>tY-Bj(j4}f9=OvH~j*}9STPERc7HhbhJs=FF6e~MP?!Q+5*C>gOyQE+h@#MA| zQ8~+ue6#72$5d)xxYf+>uAsKSczO1s(2z&uBlMU}lva^~U#*xpD| zIh*%X4(6^dqmWT#uf_`TX$FFChZwAw{&w_qR#c!CVX_iPv;+E-4dAlzvmiC=wwUm zN`CcuVS=ShSxHK?&6FocI8aZd8U9oIl_XN+74~f|m>kUA?;`Pni5O$i=&nvtd;NXW zJY`KE`QZNUE0|9wRROGgb30XER(D}6uIe8uUS_AWVDQYscZwY%4x_MKr;qhsTVMkd zQr{)EN--9Z5l~kVLj@#ls?t(Dfo*K9@4gJX_#oAunTniEy8`d(J`I(b5!Ir{Cf($; zL0uCiq3uS!gKEWf^Lk)YyubdR@GVQDCK%sAS02|6f(`n#4pde4`W!te;nt5GuFZ*| zpyrUGeig(uGx-M*J@-ZVMqB&91G#&l$5fdt;QFPtF+|(mc-akd!v614Px2B~-U{Y?}etmN>DkF+~WoTv&+YUW|=1lrO;jfk(xMO zxvr>nbBsk=N?HaR9v}#-b7Fp-i#*?tfO=17J_eYJ;=lut{{{Z5wLhf>n`B7^rd;%9 zU139bF_x!>p$0PfvxNE&>-}+USF*j2P;HUI{8guGJ1hzr+Xmh=PAHdtVHNu|GBolr zpA4)g#nJ}Nhk@?_{fDh5G@Si!^8RcSqcx6rzd2rQbqGIr7V+Wj;!H$hI;{ee4oUhP z;D9)&eOZd+2ux6>CS z1plSVh5<&Y;Pa%Km0xMIHk#Y-QGd}olppVdB=$WbTj!7+)X>)Gy1P91nuZHT^D*+j z05U|xqy5IsTO-KVxCZzWonKIaXBWrX7JAt!E=>*k&&W}!^YWtIp8iKe$;SM$C1FYv z_sU_T0@&22Q94GmBG-}^Y^nloz^+)_u2|Wt%S%&3~LB?RgE9E`+jvD|0002-?P=8te!Z`4M0437C ASO5S3 From 226da676481d56188f96439b643284979c9c1ac1 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Tue, 10 Dec 2013 13:04:52 -0800 Subject: [PATCH 134/315] added missing gatfruit-dead icon --- icons/obj/hydroponics.dmi | Bin 151835 -> 151998 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi index 5c4bf266cf306b28d56eee438fe92717995a9acd..093c17cd2b316f027ef3f3eeeaf7a1ec713ee75a 100644 GIT binary patch delta 11056 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 ADgXcg delta 10892 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 XrOpu|hNLP4f`8;?RHVz^83+9zeDFpn From 92480d60b43efece88842c72f4541bdc59aac773 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 11 Dec 2013 04:17:46 +0000 Subject: [PATCH 135/315] Fixes the screen shaking from having your camera get stuck on a turf. --- code/modules/mob/mob_helpers.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index bbb0f870baf..9310e32b968 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -264,9 +264,9 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /proc/shake_camera(mob/M, duration, strength=1) - if(!M || !M.client || M.shakecamera) - return - spawn(1) + spawn(0) + if(!M || !M.client || M.shakecamera) + return var/oldeye=M.client.eye var/x M.shakecamera = 1 From 9197bff4ddbe6b06584919588a3d0a812deacb41 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Wed, 11 Dec 2013 16:11:01 +1100 Subject: [PATCH 136/315] Added reindeer hats for humans and corgis --- code/modules/clothing/head/misc_special.dm | 44 +++++++----------- code/modules/hydroponics/grown.dm | 10 +++- .../living/simple_animal/friendly/corgi.dm | 16 +++++-- icons/mob/corgi_head.dmi | Bin 6141 -> 6302 bytes icons/mob/head.dmi | Bin 112178 -> 112870 bytes icons/obj/clothing/hats.dmi | Bin 43097 -> 43611 bytes 6 files changed, 37 insertions(+), 33 deletions(-) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 30f4184b1e8..36614435fa7 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -105,39 +105,17 @@ /* * Pumpkin head */ -/obj/item/clothing/head/pumpkinhead +/obj/item/clothing/head/hardhat/pumpkinhead name = "carved pumpkin" desc = "A jack o' lantern! Believed to ward off evil spirits." - icon_state = "hardhat0_pumpkin"//Could stand to be renamed + icon_state = "hardhat0_pumpkin" item_state = "hardhat0_pumpkin" item_color = "pumpkin" flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE - var/brightness_on = 2 //luminosity when on - var/on = 0 - - attack_self(mob/user) - if(!isturf(user.loc)) - user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. - return - on = !on - icon_state = "hardhat[on]_[item_color]" - item_state = "hardhat[on]_[item_color]" - - if(on) user.SetLuminosity(user.luminosity + brightness_on) - else user.SetLuminosity(user.luminosity - brightness_on) - - pickup(mob/user) - if(on) - user.SetLuminosity(user.luminosity + brightness_on) -// user.UpdateLuminosity() - SetLuminosity(0) - - dropped(mob/user) - if(on) - user.SetLuminosity(user.luminosity - brightness_on) -// user.UpdateLuminosity() - SetLuminosity(brightness_on) + action_button_name = "Toggle Pumpkin Light" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + brightness_on = 2 //luminosity when on /* * Kitty ears @@ -166,3 +144,15 @@ var/icon/earbit2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner2") mob.Blend(earbit, ICON_OVERLAY) mob2.Blend(earbit2, ICON_OVERLAY) + +/obj/item/clothing/head/hardhat/reindeer + name = "novelty reindeer hat" + desc = "Some fake antlers and a very fake red nose." + icon_state = "hardhat0_reindeer" + item_state = "hardhat0_reindeer" + item_color = "reindeer" + flags = FPRINT | TABLEPASS + flags_inv = 0 + action_button_name = "Toggle Nose Light" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + brightness_on = 1 //luminosity when on \ No newline at end of file diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index de28dd85e59..470e8582607 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -424,7 +424,7 @@ ..() if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/melee/energy)) user.show_message("You carve a face into [src]!", 1) - new /obj/item/clothing/head/pumpkinhead (user.loc) + new /obj/item/clothing/head/hardhat/pumpkinhead (user.loc) del(src) return @@ -716,7 +716,13 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) user << "You prepare the astroturf." - new/obj/item/stack/tile/grass(user.loc) + var/location = get_turf(user) + var/grassAmt = 1 // The grass we're holding + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/grassToConvert in location) // The grass on the floor + grassAmt += 1 + del(grassToConvert) + var/obj/item/stack/tile/newAstroturf = new /obj/item/stack/tile/grass(location) + newAstroturf.amount = grassAmt del(src) /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index faa0552d2d3..3a2ecc62ea3 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -266,10 +266,10 @@ valid = 1 if(/obj/item/clothing/head/helmet/space/santahat) - name = "Rudolph the Red-Nosed Corgi" - emote_hear = list("barks christmas songs", "yaps") - desc = "He has a very shiny nose." - SetLuminosity(4) + name = "Santa's Corgi Helper" + emote_hear = list("barks christmas songs", "looks for presents", "yaps") + speak = list("Merry Dogmas!", "Ho Ho Ho!", "Merry Christmas!") + desc = "He's very fond of milk and cookies." valid = 1 if(/obj/item/clothing/head/soft) @@ -277,6 +277,14 @@ desc = "The reason your yellow gloves have chew-marks." valid = 1 + if(/obj/item/clothing/head/hardhat/reindeer) + name = "[real_name] the red-nosed Corgi" + emote_hear = list("lights the way", "illuminates", "yaps") + desc = "He has a very shiny nose." + SetLuminosity(1) + valid = 1 + + if(valid) if(usr) usr.visible_message("[usr] puts [item_to_add] on [real_name]'s head. [src] looks at [usr] and barks once.", diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index e8ac14df82c39edbbda00cf3261ee403fc7d6c7d..8e2e87074e5dd277ba874b8479b85bc7f21a1209 100644 GIT binary patch delta 5873 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 G*#80Ors{$K diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index b9e0d46153d83bd716f712ac645db591d2c21bd0..d3e98458196eb8e648299f226cb21eca9370b39d 100644 GIT binary patch delta 15155 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
  • z%Vv9t-gdu3#ZOsl(p+U3%1uQX%bR>n zIlyUt$t(ATD}lmn@fhDJvNgqinvVaWHP%^Ac4P2r&obZgUn#IVy3_8{F;A&v#non6 z=t1z}e#56-l*5!u=U{(H%*0pI6Me-DDg+^r7V&~DG{`CSa0~*Y` zm2?BAyJ;z`$4vH-ZU^2!rIEon$G6c9XLUD|JyXb}K4uhm>m38rO}mbXvE~-I1Nqsx zEXXi54Y>X_L<3$ArWs$|eqW8$W0NcGj^cCVDepSk9D6Q+0=w*9{MJnGaQ>02*5;Om zLM(S#%(}H>dsGH4a3t7o@dOg=QV%5-D&Q&YCaZ2r5*9xARUx%@%5&Ce(xf`SX-UkY z91}LfyG0~fi>Q#R{xC|`)nzfvU9ye=+F0!%&c-)8X5rWSvo#IPM=0(Tpdh9)!)z7} zs1mEPMLa)Ws-Q6aCD_(Mq^D6eEqk|&M0@V!bsPYTCA6me*{%49tUt76)?_>4ny!@F`YhqSj`Ni!w?Wd zd9f3lol+~+Qhp9L-wdgv0LO3=Iwj9;k81>TO)0Vs`jWO$1l7k7(<#~4%J~|Fz4o>* z+PIB@Pm)+PxAIGUyE$ajqO4|8N~6Djkk0lPL*M{;=0K<9u9{WZapod2Gn@cl<8CX} zy&%(7yD+v_1=B>l#7_oIz-EYwAN~C4l8>01+(&AL_xy@8inqyMAcQ$#x%#KMoV`;#b#&zWn@H-Ul5NB$oO=SET>11@(ojiFTPwLB z@_aFo9#59BV#8+-Nq%z{l)ZBC5vyYcrI>6w7ZR|FO;UxqO3LZC9j-YO_Fkb=VgSR+vasPL&&e&o4m zx*P-a?TgP?99U0$`Wc)_@?l`aqod|oj5+hFdeV8}~j0guCJ8-YFF6DIbvEd5+ zyU4Ky4XmyZFHeW8csk4)FU_qZ^8m5wx@8aIhflMeOs%U!l6O4!6R$VIvjCjnW7Z*g zU!5wSN;|Ogg#NL(#4WiNuAa60%n zHaR({GuSCM38X4-;yn=5{w!oYjR}DK-f(PNT90yPwNo4|$~UfqlY1w!jE$S&fBvwU z(*EjE7-qJ=?)A#+436H?Sm2}rq2fSkY3IDV;%4I5RLGAl^HlpA)PM-ikNu0?NkR$=iYaI$E_i;nf-PCpYV>M!NQifEusD?IxsQay zrG^{bl5*SBN_uuY2?vdPz&3}x}BiRuRuGaO9hAsT9s_xEOM+M}o& zIq9AevAZB{z9l={IEX{C2Rns{+OUrP{d-ZwN}{IuCs8$tWCFAO)Wq@bxm6nDk+FCABxqzh&K zsQ3AarwMqF5ED~pQ{gJ))`^$MRy zmXbjhYGX6{wOhc92y4ZuC|3cs)*_?N^ayXrFP{^P$3s<0Y`(}_H)m{u4K~hg+rKML?!+H4acvR3xno3v|+uup}daEm*5M+&2Q4 z6sUU_)VL8vL?n-wy)}sZ{ZWU$9gN?Fex1Sf0(8yhOsl!Yj2*`*QO_hOJdD6(KI_S9 zaa%cWEaQga{gStF4-PlKlx-!Y89A%;FkzQ(TGcUY_KUgC0 zWqf*iK zN9PC7l_9TX&oWRHeSD3Z2Nu;Adw3Ft&u;TFTE`|*hi~nieZa!a=QaP{zTl8;Mzc3^ zV1zXop0dm)_FSe6pY48i69EfL`R*#kuUwYlcU~BMQL87`Qo79gyBB6nuRReA<;2AA^J?Law`XAK(}~_ zh$;Lbe1MK*Jf(oU_ylz1+smL#vHaEpF(v{&Uk6^#&L7Otk`Fm%+JkqIY!#CpsjSf6 zYIp3H(6`thhfrGa-|>H`mWKNOAH6}3b120(PBsF$=vx%9|CXjOY=f84PjY6ZHonq; z06*gHncoINP8-hw;`>*P)Q#6^7taE)wg;SUnxFi}th?(EIsGY>C8zb7xBu|ae=v7! zlNmQ>R&t~B=q@#DY8%&Y&fRcNTKZGWzpW>2$^yBa|CzfQq`Upv>mP*Y67WwN*_
    MyX);BR61yA4>8>c7dO$23>Il!> z6kG9t$+_JbB5CQ3?m-}ae<6+Y)z3N{zh(_5&XAaevDE{{S&9E#``|s4pcsWn%D-QC q{JWt5bkG0uJ)eK-^?#g0h}HMRe0p9Ny9m7+3&_bRN|#9*`Ts8`LwC&p delta 14318 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 delta 6519 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 From 87b5161e28de8c10559ce53873c319f5e760f387 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Wed, 11 Dec 2013 17:33:59 +1100 Subject: [PATCH 137/315] Removed incorrect speak, changed see and hear emotes --- code/modules/mob/living/simple_animal/friendly/corgi.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 3a2ecc62ea3..2719d9c5cbb 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -267,8 +267,8 @@ if(/obj/item/clothing/head/helmet/space/santahat) name = "Santa's Corgi Helper" - emote_hear = list("barks christmas songs", "looks for presents", "yaps") - speak = list("Merry Dogmas!", "Ho Ho Ho!", "Merry Christmas!") + emote_hear = list("barks christmas songs", "yaps merrily") + emote_see = list("looks for presents", "checks his list") desc = "He's very fond of milk and cookies." valid = 1 From c80efcc0f0bba09ce6f38512459f49dee7439ea8 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Wed, 11 Dec 2013 10:50:03 -0500 Subject: [PATCH 138/315] Adds breaks to some loops in case there is more than one pod. Shouldn't happen, but Murphy's law. --- code/game/objects/structures/transit_tubes.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index f20a7cb73ca..22f20194900 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -130,8 +130,10 @@ obj/structure/ex_act(severity) if(ismob(AM)) var/mob/M = AM M.Weaken(5) + else close_animation() + break /obj/structure/transit_tube/station/attackby(obj/item/W, mob/user) @@ -145,6 +147,7 @@ obj/structure/ex_act(severity) GM.Weaken(5) src.Bumped(GM) del(G) + break /obj/structure/transit_tube/station/proc/open_animation() if(icon_state == "closed") From c396c3ae8aa6359608b6f3977086b257c406c41c Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 12 Dec 2013 00:24:51 -0500 Subject: [PATCH 139/315] Suggestion implimentation patch! *Span classes the whole update *Spellbooks no longer vanish after being used, instead used spellbooks now have various bad effects should they be attempted to learned from again (the original reader won't acidentally fall to this, as they will just say "I've already read this"). Leave em out as traps for people or properly dispose of your trash! Or... *The charge spell can now attempt to recharge one use spellbooks so someone else can learn the spell. This only has a 20% success rate and will destroy the book should it fail (even if the book was actually unused). You can't attempt this on the wizard's spellbook *The "staff of nothing" (functional) placeholder now uses the generic staff sprites *Spellbooks can now be placed in bookshelves just like normal books *The teleport spell won't yank anchored things anymore, but as a consolation it will warp the entire contents of a tile should it be targeted. The code has been tweeked so this shouldn't effect the server too bad even if large numbers of items are warped to unique locations this way --- code/datums/spells/charge.dm | 19 +++-- code/game/gamemodes/wizard/spellbook.dm | 84 +++++++++++++++++-- code/modules/library/lib_items.dm | 2 +- code/modules/projectiles/guns/magic.dm | 4 +- code/modules/projectiles/guns/magic/wand.dm | 10 +-- code/modules/projectiles/projectile/magic.dm | 17 ++-- icons/obj/gun.dmi | Bin 41183 -> 41333 bytes 7 files changed, 111 insertions(+), 25 deletions(-) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 5f8e1635b44..342e11049eb 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -25,12 +25,21 @@ if(M.spell_list.len != 0) for(var/obj/effect/proc_holder/spell/S in M.spell_list) S.charge_counter = S.charge_max - M <<"\blue you feel raw magic flowing through you, it feels good!" + M <<"you feel raw magic flowing through you, it feels good!" else - M <<"\blue you feel very strange for a moment, but then it passes." + M <<"you feel very strange for a moment, but then it passes." burnt_out = 1 charged_item = M break + else if(istype(item, /obj/item/weapon/spellbook/oneuse)) + var/obj/item/weapon/spellbook/oneuse/I = item + if(prob(80)) + user.visible_message("[I] catches fire!") + del(I) + else + I.used = 0 + charged_item = I + break else if(istype(item, /obj/item/weapon/gun/magic)) var/obj/item/weapon/gun/magic/I = item if(prob(80)) @@ -66,8 +75,8 @@ charged_item = item break if(!charged_item) - user << "\blue you feel magical power surging to your hands, but the feeling rapidly fades..." + user << "you feel magical power surging to your hands, but the feeling rapidly fades..." else if(burnt_out) - user << "\red [charged_item] doesn't seem to be reacting to the spell..." + user << "[charged_item] doesn't seem to be reacting to the spell..." else - user << "\blue [charged_item] suddenly feels very warm!" + user << "[charged_item] suddenly feels very warm!" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index cdc1610aebb..375a5129c4a 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -309,6 +309,7 @@ /obj/item/weapon/spellbook/oneuse var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic var/spellname = "sandbox" + var/used = 0 name = "spellbook of " uses = 1 max_uses = 1 @@ -324,13 +325,23 @@ if(knownspell.type == S.type) if(user.mind) if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard") - user <<"\blue You're already far more versed in this spell than this flimsy how-to book can provide." + user <<"You're already far more versed in this spell than this flimsy how-to book can provide." else - user <<"\blue You've already read this one." + user <<"You've already read this one." return - user.spell_list += S - user <<"\blue you rapidly read through the arcane book. Suddenly it vanishes and you realize you understand [spellname]!" - del (src) + if(used) + recoil(user) + else + user.spell_list += S + user <<"you rapidly read through the arcane book. Suddenly you realize you understand [spellname]!" + onlearned(user) + +/obj/item/weapon/spellbook/oneuse/proc/recoil(mob/user as mob) + user.visible_message("[src] glows in a black light!") + +/obj/item/weapon/spellbook/oneuse/proc/onlearned(mob/user as mob) + used = 1 + user.visible_message("[src] glows dark for a second!") /obj/item/weapon/spellbook/oneuse/attackby() return @@ -341,44 +352,105 @@ icon_state ="bookfireball" desc = "This book feels warm to the touch." +/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob) + ..() + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + del(src) + /obj/item/weapon/spellbook/oneuse/smoke spell = /obj/effect/proc_holder/spell/targeted/smoke spellname = "smoke" icon_state ="booksmoke" desc = "This book is overflowing with the dank arts." +/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/user as mob) + ..() + user <<"Your stomach rumbles..." + if(user.nutrition) + user.nutrition -= 200 + if(user.nutrition <= 0) + user.nutrition = 0 + /obj/item/weapon/spellbook/oneuse/blind spell = /obj/effect/proc_holder/spell/targeted/trigger/blind spellname = "blind" icon_state ="bookblind" desc = "This book looks blurry, no matter how you look at it." +/obj/item/weapon/spellbook/oneuse/blind/recoil(mob/user as mob) + ..() + user <<"You go blind!" + user.eye_blind = 10 + /obj/item/weapon/spellbook/oneuse/mindswap spell = /obj/effect/proc_holder/spell/targeted/mind_transfer spellname = "mindswap" icon_state ="bookmindswap" desc = "This book's cover is pristine, though its pages look ragged and torn." +/obj/item/weapon/spellbook/oneuse/mindswap/onlearned() + spellname = pick("fireball","smoke","blind","forcewall","knock","horses","charge") + icon_state = "book[spellname]" + name = "spellbook of [spellname]" //Note, desc doesn't change by design + ..() + +/obj/item/weapon/spellbook/oneuse/mindswap/recoil(mob/user as mob) + ..() + user <<"You suddenly don't feel like yourself!" + wabbajack(user) + /obj/item/weapon/spellbook/oneuse/forcewall spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall spellname = "forcewall" icon_state ="bookforcewall" desc = "This book has a dedication to mimes everywhere inside the front cover." +/obj/item/weapon/spellbook/oneuse/forcewall/recoil(mob/user as mob) + ..() + user <<"You suddenly feel very solid!" + var/obj/structure/closet/statue/S = new /obj/structure/closet/statue(user.loc, user) + S.timer = 30 + user.drop_item() + + /obj/item/weapon/spellbook/oneuse/knock spell = /obj/effect/proc_holder/spell/aoe_turf/knock spellname = "knock" icon_state ="bookknock" desc = "This book is hard to hold closed properly." +/obj/item/weapon/spellbook/oneuse/knock/recoil(mob/user as mob) + ..() + user <<"You're knocked down!" + user.Stun(20) + user.Weaken(20) + /obj/item/weapon/spellbook/oneuse/horsemask spell = /obj/effect/proc_holder/spell/targeted/horsemask spellname = "horses" icon_state ="bookhorses" desc = "This book is more horse than your mind has room for." +/obj/item/weapon/spellbook/oneuse/horsemask/recoil(mob/living/carbon/user as mob) + if(istype(user, /mob/living/carbon/human)) + user <<"HOR-SIE HAS RISEN" + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead + magichead.canremove = 0 //curses! + magichead.flags_inv = null //so you can still see their face + magichead.voicechange = 1 //NEEEEIIGHH + user.drop_from_inventory(user.wear_mask) + user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) + del(src) + else + user <<"I say thee neigh" + /obj/item/weapon/spellbook/oneuse/charge spell = /obj/effect/proc_holder/spell/targeted/charge spellname = "charging" icon_state ="bookcharge" - desc = "This book is made of 100% post-consumer wizard." \ No newline at end of file + desc = "This book is made of 100% post-consumer wizard." + +/obj/item/weapon/spellbook/oneuse/charge/recoil(mob/user as mob) + ..() + user <<"[src] suddenly feels very warm!" + empulse(src, 1, 1) \ No newline at end of file diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index e3b03bad0cb..4c04ea6ce13 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -60,7 +60,7 @@ state = 0 if(2) - if(istype(I, /obj/item/weapon/book)) + if(istype(I, /obj/item/weapon/book) || istype(I, /obj/item/weapon/spellbook)) user.drop_item() I.loc = src update_icon() diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index c38d46822d5..c47289e6ca4 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -2,8 +2,8 @@ name = "staff of nothing" desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years." icon = 'icons/obj/gun.dmi' - icon_state = "staffofchange" - item_state = "staffofchange" + icon_state = "staffofnothing" + item_state = "staff" fire_sound = 'sound/weapons/emitter.ogg' flags = FPRINT | TABLEPASS | CONDUCT w_class = 5 diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 5896ecb4f58..f83a0206be7 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -26,7 +26,7 @@ if(charges) zap_self(user) else - user << "The [name] whizzles quietly." + user << "The [name] whizzles quietly." ..() /obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) @@ -39,12 +39,12 @@ if(charges) zap_self(user) else - user << "The [name] whizzles quietly." + user << "The [name] whizzles quietly." else ..() /obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) - user.visible_message("\blue [user] zaps \himself with [src]!") + user.visible_message("[user] zaps \himself with [src]!") /obj/item/weapon/gun/magic/wand/death name = "wand of death" @@ -55,8 +55,8 @@ /obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) if(alert(user, "You really want to zap yourself with the wand of death?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - var/message ="\red You irradiate yourself with pure energy! " - message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") + var/message ="You irradiate yourself with pure energy! " + message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") user << message user.adjustOxyLoss(500) charges-- diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 4088808e84e..974e7ab7e37 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -74,12 +74,17 @@ var/outer_tele_radius = 6 /obj/item/projectile/magic/teleport/on_hit(var/mob/target) - if(isturf(target)) - return - do_teleport(target, target, 10) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() - smoke.set_up(10, 0, target.loc) - smoke.start() + var/teleammount = 0 + var/teleloc = target + if(!isturf(target)) + teleloc = target.loc + for(var/atom/movable/stuff in teleloc) + if(!stuff.anchored && stuff.loc) + teleammount++ + do_teleport(stuff, stuff, 10) + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + smoke.set_up(max(round(10 - teleammount),1), 0, stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity + smoke.start() /obj/item/projectile/magic/door name = "bolt of door creation" diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 5f35fd26c27953731c5721a93d4d763cece3322c..98283e0ee84e1e44f86d0b0ed43f6b4f7b78b29d 100644 GIT binary patch delta 2532 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 From aed746f18f0a83e8809a7c6fb4168a47ace7b437 Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 12 Dec 2013 12:11:49 -0500 Subject: [PATCH 140/315] A small change to how wizard rounds end when continuous wizard rounds are off: After the game has determinded that the wizard is dead it will check if there's any traitors alive. "Traitors" in this instance means apprentices and survivors the wizard may have created with contracts/summon guns/summon magic. Thus if the round still has a chance of being interesting (survivors) and/or the wizard has a legitimate chance at revival (apprentices) the round keeps going. --- code/game/gamemodes/wizard/wizard.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index c89560986df..5bbe1a8def6 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -178,6 +178,7 @@ return ..() var/wizards_alive = 0 + var/traitors_alive = 0 for(var/datum/mind/wizard in wizards) if(!istype(wizard.current,/mob/living/carbon)) continue @@ -185,7 +186,15 @@ continue wizards_alive++ - if (wizards_alive) + if(!wizards_alive) + for(var/datum/mind/traitor in traitors) + if(!istype(traitor.current,/mob/living/carbon)) + continue + if(traitor.current.stat==2) + continue + traitors_alive++ + + if (wizards_alive || traitors_alive) return ..() else finished = 1 From eeaee2d5ec4e459a171b23706757680d9524c105 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Fri, 13 Dec 2013 04:30:45 +1100 Subject: [PATCH 141/315] Removed digital valves from atmos --- maps/tgstation.2.1.2.dmm | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index 888b736c2ef..c0e2a4ae479 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -4573,7 +4573,7 @@ "bJW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos) "bJX" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos) "bJY" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Air to Mix"; on = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos) -"bJZ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Gas Mix Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/atmos) +"bJZ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Mix Outlet Pump"; on = 0},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/atmos) "bKa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor/plating,/area/atmos) "bKb" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/space,/area) "bKc" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/structure/grille,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos) @@ -4805,8 +4805,8 @@ "bOu" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "bOv" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 6; icon_state = "intact-y"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "bOw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 1; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos) -"bOx" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "N2O to Pure"; on = 0},/turf/simulated/floor,/area/atmos) -"bOy" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "N2O Outlet Valve"},/turf/simulated/floor{icon_state = "escape"; dir = 5},/area/atmos) +"bOx" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos) +"bOy" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "CO2 Outlet Pump"; on = 0},/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/atmos) "bOz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor/plating,/area/atmos) "bOA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/n20,/area/atmos) "bOB" = (/turf/simulated/floor/engine/n20,/area/atmos) @@ -5024,8 +5024,8 @@ "bSF" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos) "bSG" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos) "bSH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos) -"bSI" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Plasma to Pure"; on = 0},/turf/simulated/floor,/area/atmos) -"bSJ" = (/obj/machinery/camera{c_tag = "Atmospherics East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Plasma Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos) +"bSI" = (/obj/machinery/camera{c_tag = "Atmospherics South East"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "Air Outlet Pump"; on = 1},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/atmos) +"bSJ" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "N2 Outlet Pump"; on = 1},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/atmos) "bSK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "tox_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "bSL" = (/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "bSM" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) @@ -5203,8 +5203,8 @@ "bWc" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/turf/simulated/floor,/area/atmos) "bWd" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/obj/item/weapon/cigbutt,/turf/simulated/floor,/area/atmos) "bWe" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 8; icon_state = "freezer_0"},/turf/simulated/floor,/area/atmos) -"bWf" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "CO2 to Pure"; on = 0},/turf/simulated/floor,/area/atmos) -"bWg" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/atmos) +"bWf" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "O2 Outlet Pump"; on = 1},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/atmos) +"bWg" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "N2O Outlet Pump"; on = 0},/turf/simulated/floor{icon_state = "escape"; dir = 5},/area/atmos) "bWh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "bWi" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "bWj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5396,14 +5396,12 @@ "bZN" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor,/area/atmos) "bZO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/atmos) "bZP" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/turf/simulated/floor{icon_state = "red"},/area/atmos) -"bZQ" = (/obj/machinery/atmospherics/valve/digital{name = "Nitrogen Outlet Valve"; openDuringInit = 1},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/atmos) +"bZQ" = (/obj/machinery/camera{c_tag = "Atmospherics East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Plasma Outlet Pump"; on = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos) "bZR" = (/obj/machinery/light,/turf/simulated/floor,/area/atmos) "bZS" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/atmos) "bZT" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/atmos) -"bZU" = (/obj/machinery/atmospherics/valve/digital{name = "Oxygen Outlet Valve"; openDuringInit = 1},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/atmos) "bZV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "arrival"; dir = 10},/area/atmos) "bZW" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/turf/simulated/floor{icon_state = "arrival"},/area/atmos) -"bZX" = (/obj/machinery/camera{c_tag = "Atmospherics South East"; dir = 1},/obj/machinery/atmospherics/valve/digital{name = "Mixed Air Outlet Valve"; openDuringInit = 1},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/atmos) "bZY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bZZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating/airless,/area) "caa" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area) @@ -8412,20 +8410,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaabCkbGsbCkaaaaafbKIbKJbIFbKKbKLbKMbIHbIHbKNbKObIJbKPbKQbGBbKRbKSbKTbKUbIVbIVbIVbKVbKWbIVbKXbIVbKYbKZbIVbLabLbbLcbLdbLebLfbLgbLhbLiaafbLjbLkbKfbLlbJeaafbLmbIdbIebLnbLobJmbLpbIebLqbLrbLsbIebJmbLtbLubLvbJmbIibLwbLxbEtbEtbEtbEtbFVbLybLzbLAbFVbEtbEtbEtbEtbEtbLBbLCbLDbLEbLFbLGbLHbLIbLJbLKbLLbLLbLLbLLbLMbLNbLObLPbakbakbakbakaaaaaaaafbLQbLQbLQaaaaafaaaaaaaafaaaaaaaafaaaaaaaafaaaaaabyWbvabxBbvabvabwybwybwybwybwybwybwybvabvaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaabCkbAGbCkaaaaafbLRbLSbLTbLUbLVbIHbIHbIHbIHbIHbLWbIFbLXbLYbLZbMabMbbMcbJSbIVbMdbMebMfbMgbMhbMibMjbMkbMkbMlbMmbJVbMnbMobMpbMqbMrbMsbMtbKcbMubKfbKfbJeaafbMvbIdbIebMwbJmbMxbIfbIebIebMybMzbIebMAbMBbMCbMDbMEbMFbMGbMHbMIbMJbMJbMKbMLbHibMMbMNbMObMPbyCbyCbyCbEtbMQbLCbMRbMSbMTbLIbMUbLIbLJbMVbMWbMXbMXbMXbMXbMYbMZbNabNbbNcbNbbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNdbNebNfbNfbNgbvabvabwybwybNhbwybwybvabvaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaabDGbAGbDGaaaaafbNibNjbIFbNkbLVbIHbIHbNlbNmbNnbNobIFbKQbGBbKRbHLbKTbNpbNqbIVbIVbNrbHNbNsbNtbNubNvbIVbIVbNwbNxbNybNzbNAbNBbNCbNBbNDaafbJebJebJebJebJeaafbtobIdbIebNEbNFbNFbNGbNHbNIbNJbNKbNLbNMbNNbNFbNObNPbIebNQbMHbyCbyCbyCbNRbNSbHibNTbHibNUbNVbyCbyCbyCbEtbNWbLCbNXbNYbNZbLIbOabObbLJbMVbOcbakbOdbOebakbOfbOgbOhbakbakbakaafaaaaaaaafbLQbLQbLQaaaaafaaaaaaaafaaaaaaaafaaaaaaaafaafaafbOibOjbwxbxCbuZbvabvabwybwzbwybvabvaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOkaaaaafaafbOlbOlbOlbOlbOlbOlbOlbOlbwJbGsbwJbwJbwJbwJbNjbIFbIFbOmbIFbIFbIFbIFbIFbIFbIFbOnbOobKRbOpbGEbHMbHMbOqbOrbOqbHNbIVbIVbIVbNvbOsbJcbJcbOtbOubOvbJWbOwbOxbOybOzbKbbKcbOAbOBbOBbJeaafbtobIdbIebIebIebIebIfbOCbODbOEbOFbOGbOHbOIbKjbOFbOHbOJbNQbMHbyCbyCbyCbOKbOLbMNbOMbHibONbOObMJbMJbOPbEtbOQbORbOSbOTbKCbOUbLIbLIbLJbMVbOcbOVbOWbOXbOYbOYbOZbPabOYaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbPbbuXbuXbuYbuZbuZbvabvabvabvabvbaaaaafaaaaafaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOkaaaaafaafbOlbOlbOlbOlbOlbOlbOlbOlbwJbGsbwJbwJbwJbwJbNjbIFbIFbOmbIFbIFbIFbIFbIFbIFbIFbOnbOobKRbOpbGEbHMbHMbOqbOrbOqbHNbIVbIVbIVbNvbOsbJcbJcbOtbOubOvbJWbOwbOxbWgbOzbKbbKcbOAbOBbOBbJeaafbtobIdbIebIebIebIebIfbOCbODbOEbOFbOGbOHbOIbKjbOFbOHbOJbNQbMHbyCbyCbyCbOKbOLbMNbOMbHibONbOObMJbMJbOPbEtbOQbORbOSbOTbKCbOUbLIbLIbLJbMVbOcbOVbOWbOXbOYbOYbOZbPabOYaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbPbbuXbuXbuYbuZbuZbvabvabvabvabvbaaaaafaaaaafaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPcbPdbPebPfbPgbPfbPhbPibPjbPkbPlbPmbPnbOlbPobPpbPqbPqbPqbPqbPrbPsbPsbPtbPubPvbPwbPxbPxbPxbPybPzbGBbKRbPAbPBbPCbJcbJcbJcbPDbPEbJcbJcbPFbPGbPHbIVbPIbPJbPKbPLbIVbPMbPNbPObLiaafbLjbPPbPQbPRbJeaafbtobPSbGYbGYbGYbPTbIebPUbJmbPVbPWbPXbPYbMDbPZbMEbQabMzbNQbMHbEtbEtbEtbEtbQbbQcbNTbQdbQbbEtbEtbEtbEtbEtbQebQfbQgbQhbQibQjbQkbLIbLJbQlbOcbakbQmbQnbOYbQobQpbQqbOYaafaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabQrbQrbQrbQrbQrbQsbQtbQubQvbQvbQubOlbQwbQxbQxbQxbQxbQxbQxbQxbQxbQybQybQzbQybQybQAbzebwJbQBbGBbKRbPAbQCbQDbQEbQFbMkbQGbQHbMkbMkbQIbQJbQKbQLbQMbQNbQObQPbIVbPMbQQbQRbQSbMtbKcbQTbOBbOBbJeaafbQUbQVbQVbQVbymbIdbIebQWbQXbQYbQZbRabODbRbbRcbRdbODbMzbNQbMHbMIbMJbMJbRebMLbHibMMbMNbRfbRgbyCbyCbyCbxqbLJbLJbLJbLJbLJbLJbLJbLJbLJbMVbOcbakbakbakbOYbRhbRibRjbOYaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbRkbRlbRmbRnbRmbRobRpbRqbRrbRsbRtbOlbQwbQxbRubRvbRwbRxbRybRzbRubRAbRBbRCbRDbQybQybzebwJbREbGBbKRbRFbRGbRHbRIbRJbRKbRLbRMbRLbRNbRObRPbHMbHMbHMbRQbIVbPKbIVbPMbPNbRRbLiaafbJebJebJebJebJeaafaafaafaafaafbtobIdbIebRSbLvbRTbRUbRabJmbRVbRcbRWbRXbMzbNQbMHbyCbRYbyCbRZbNSbHibNTbHibNUbSabyCbRYbyCbxqbSbbLLbLLbLLbLLbLLbLLbLLbLLbScbOcbOXbakaaabOYbSdbSebSfbOYaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbRkbSgbShbSibSjbQubSkbQubSlbQubQubSmbQwbQxbRubSnbSobRubSpbSqbRubSrbSsbStbSubSvbQybzebwJbQBbGBbKRbSwbSxbGJbSybSzbGJbSAbSBbSCbGJbSDbNvbSEbHMbSFbQPbIVbQNbSGbSHbSIbSJbOzbKbbKcbSKbSLbSMbJeaafaaaaaaaaaaaabKgbIdbIebSNbSObSPbSQbSRbJfbSSbSTbSUbJfbSVbNQbMHbyCbyCbyCbSWbSXbMNbOMbHibONbSYbMJbMJbOPbxqbSZbTabMXbMXbMXbMXbMXbMXbTbbTcbTdbakbakaaabTebTfbTgbThbTiaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbRkbSgbShbSibSjbQubSkbQubSlbQubQubSmbQwbQxbRubSnbSobRubSpbSqbRubSrbSsbStbSubSvbQybzebwJbQBbGBbKRbSwbSxbGJbSybSzbGJbSAbSBbSCbGJbSDbNvbSEbHMbSFbQPbIVbQNbSGbSHbOxbZQbOzbKbbKcbSKbSLbSMbJeaafaaaaaaaaaaaabKgbIdbIebSNbSObSPbSQbSRbJfbSSbSTbSUbJfbSVbNQbMHbyCbyCbyCbSWbSXbMNbOMbHibONbSYbMJbMJbOPbxqbSZbTabMXbMXbMXbMXbMXbMXbTbbTcbTdbakbakaaabTebTfbTgbThbTiaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbRkbTjbTkbTlbTkbTmbTnbTobTpbTqbTrbOlbTsbQxbTtbTubTvbRubTwbTtbTtbSrbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbGJbIVbNvbTQbTRbSFbTSbIVbQNbSGbPMbPNbTTbLiaafbLjbTUbTVbTWbJeaafaaaaaaaaaaaabLmbIdbIebIebTXbTYbIebIibIebIebIebIebIebMzbNQbMHbEtbEtbEtbEtbQbbTZbNTbUabQbbEtbEtbEtbEtbxqbSZbUbbUcbUdbUebUebakaafaaaaaaaaaaaaaaaaaaaafbUfbUgbUfaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbQrbQrbQrbQrbQrbOlbOlbOlbOlbOlbOlbOlbUhbQxbTtbTtbRubRubRubTtbUibUjbUkbUlbUmbUnbQybzebwJbUobUpbUqbUrbUsbUtbUubUvbUwbUxbUybUzbGJbUAbUBbTQbHMbSFbUCbIVbUDbSGbPMbUEbUFbQSbMtbKcbUGbSLbSLbJeaafaaaaaaaaaaaabMvbIdbUHbIebIebUIbIebUJbUKbULbwRbUMbUNbUObNQbMHbMIbMJbMJbUPbMLbHibMMbMNbUQbURbyCbyCbyCbxqbSZbUSbMYbUTbUUbUVbakaafaafaaaaaaaaaaaaaaaaafbUWbTgbUWaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafSafRafRafSafRafRafRagxafRafRafRafSafRaafaafaafbwJbDEbzebzebzebzebzebzebzebUXbwJbQwbQxbUYbUZbVabVbbRubRubVcbVdbVcbVebSubVfbQybzebVgbKQbGBbVhbVibVjbUtbVkbVlbVmbVnbVobVpbVqbJSbVrbHMbHMbHMbVsbIVbVtbVubPMbPNbIVbLiaafbJebJebJebJebJeaafaafaafaafaafbtobPSbGYbGYbVvbVwbwRbVxbVybVzbwRbVAbGYbVBbVCbMHbyCbyCbyCbVDbNSbHibNTbHibNUbVEbyCbyCbyCbxqbSZbUbbakbakbakbakbakaaaaafaafaaaaaaaaaaaaaafaaabVFaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaafRaafaaaaaabwJbVGbVHbwJbwJbVIbVJbwJbwJbVKbGrbQwbQxbVLbTtbRubRubRubTtbUibVMbVNbSubVObVPbTBbTDbTDbVQbVRbVSbVibVibVTbUubVUbVVbVWbVXbVYbGJbIVbIYbVZbWabWbbLbbWcbWdbWebSHbWfbWgbOzbKbbKcbWhbWibWibJeaafaaaaaaaaaaaabQUbQVbQVbQVbWjbWkbwRbwRbWlbwRbwRbWkbWmbWnbWobWpbyCbyCbyCbWqbWrbWsbWtbHibONbWubMJbMJbOPbxqbSZbWvaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaaabVFaaaaafaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaafRaafaaaaaabwJbVGbVHbwJbwJbVIbVJbwJbwJbVKbGrbQwbQxbVLbTtbRubRubRubTtbUibVMbVNbSubVObVPbTBbTDbTDbVQbVRbVSbVibVibVTbUubVUbVVbVWbVXbVYbGJbIVbIYbVZbWabWbbLbbWcbWdbWebSHbOxbOybOzbKbbKcbWhbWibWibJeaafaaaaaaaaaaaabQUbQVbQVbQVbWjbWkbwRbwRbWlbwRbwRbWkbWmbWnbWobWpbyCbyCbyCbWqbWrbWsbWtbHibONbWubMJbMJbOPbxqbSZbWvaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaaabVFaaaaafaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaabWwbWxbWyaaabWwbWxbWyaaabWwbWxbWyaafafRaaaaaaaaabwJbwJbwJbwJaaaaaaaaaaaabwJbVKbWzbQwbQxbTtbWAbWBbRubWCbTtbTtbSrbWDbSubSubWEbQybWFbWGbWHbWIbWJbWKbWLbWMbUubWMbUtbUtbUubWNbGJbWObWPbWQbMkbMkbMmbOsbWRbOwbMnbPNbWSbLiaafbLjbWTbWUbWVbJeaafaaaaaaaaaaaaaafaaaaaabwRbWWbWXbWYbWYbWYbWYbWYbWZbXabtobXbbMHbxqbxqbxqbxqbxqbxqbXcbxqbxqbxqbxqbxqbxqbxqbSZbXdaaaaaaaaaaaaaaaaaabXebXebXebXfaafaafaafaafbVFaafaafaafaafaafagxbXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaabWwbXgbWyaaabWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaaaaaaaafaaaaaabwJbwJbwJbXhbXibXjbQxbRubXkbXlbRubXmbXnbRubSrbXobXpbXqbXqbXrbXsbXtbXubXvbXwbXxbXybXzbXAbXBbUtbUtbUubXCbGJbXDbIVbIYbOsbJcbXEbXFbXGbXHbIabXIbXJbQSbMtbKcbXKbWibWibJeaafaaaaaaaaaaaaaafaaaaaabwRbXLbXMbXNbXNbXNbXNbXNbXNbXObGbbXPbXQbXRbXRbXRbXRbXRbXRbXSbXTbXTbXTbXTbXTbXTbXTbXUbUbaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaaaaaaaaabXVaaaaafaafaaaaaaaaaaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwbXgbWyaaabWwbXgbWyaafbWwbXgbWyaafaafaaaaaaaaaaaaaaaaaaaafaaaaaabXWbXXbXWbzebzebQwbQxbRubXYbXZbYabYbbYcbRubYdbYebYfbYgbYhbQybYibYjbYkbYlbYmbYnbYobYpbYqbYrbYsbYtbYubYvbGJbYwbLebYxbYybIVbIVbIVbJbbPHbYybPNbRRbLiaafbJebJebJebJebJeaafaafaafaafaafaafaafaafbwRbYzbYAbYAbYBbYCbYDbYAbYAbYEbGbbYFbYGbYHbYIbYJbYJbYGbYGbYGbYGbYKbYGbYGbYLbYMbYNbYObYPaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaaaaafaafaafaafaafaafaaaaafaaaaafbwJbwJbwJbzebzebQwbQxbQxbQxbQxbQxbQxbQxbQxbQybQybQybQybQybQybwJbYSbwJbYTbYUbYUbYUbYVbYWbYXbYUbYYbYZbZabZbbZcbZdbMpbZebZfbZgbZfbZebZhbZebZibOsbZjaafaafaafaafaafaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabZkbUHbZkaaaaaaaafbGbbZlbZmbZnbZnbZobakbZmbZnbZnbZobakbZmbZnbZnbZobakbakbakaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaafaafbZvbZwbZwbZwbZwbZxbzebzebQwbwJbZybZzbZAbZAbZAbZAbZAbZAbZAbZAbZAbZBbZBbZAbZCbZDbYTbZEbZFbZGbZHbZIbZJbYUbZKbZLbZMbGJbZNbZObZPbZQbZRbZSbZTbZUbIVbZVbZWbZXbIXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabZYbYCbZYaaaaaaaafbZZcaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaaacabcabcabcabcabaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaafaafbZvbZwbZwbZwbZwbZxbzebzebQwbwJbZybZzbZAbZAbZAbZAbZAbZAbZAbZAbZAbZBbZBbZAbZCbZDbYTbZEbZFbZGbZHbZIbZJbYUbZKbZLbZMbGJbZNbZObZPbSJbZRbZSbZTbWfbIVbZVbZWbSIbIXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabZYbYCbZYaaaaaaaafbZZcaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaaacabcabcabcabcabaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcacaafaafaafcacaafaaaaafcacaafaaaaafaaaaaaaaaaaacadcaecafcagcahcaicajcakcalcalcambwJcancaocapcapcapcapcapcapcapcapcapcapcapcapcaqcarcascatcaucavcawcaxcaycazcaAcaBcaCcaDcaEcaFcaGcaHcaGcaFcaGcaHcaGcaIcaGcaIcaJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaKcaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaafaafaaabYRaaaaafaaaaafaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafcaLcaMcaMcaNcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaPcaMcaMcaMcaMcaQcaRcaQcaScaTcaUcaVbzebzebzecaWcaXcaYcaZcapcbacbacbbcapcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcapaafcbwaafcbxaafcbwaafcbxaafcbyaafcbyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcbzaafaaaaafcbzaafaaaaafcbzaafaaaaaaaaaaaaaaaaaacadcaecbAcbBcbCcbDbZwcbEbzebzebzebzebzfcbFcapcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbScbTcbUcbVcbWcbXcbqcbYbYUcbZcbZcbZcapbJeccabLjccabJeccabLjccabJeccbbLjcccbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccdaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 5ae69c25e63aa004037a9f64082b182d37f04fad Mon Sep 17 00:00:00 2001 From: Alek2ander Date: Thu, 12 Dec 2013 23:22:11 +0300 Subject: [PATCH 142/315] VV now allows read-only stuff without edit perm Also removes links you do not have permissions to use --- code/datums/datumvars.dm | 270 +++++++++++++++++++++++---------------- 1 file changed, 159 insertions(+), 111 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 7f25b86cb5b..fe8fbebc845 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1,4 +1,3 @@ - // reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) client @@ -173,27 +172,56 @@ client if(istype(D,/atom)) var/atom/A = D if(isliving(A)) - body += "[D]" - if(A.dir) - body += "
    << [dir2text(A.dir)] >>" - var/mob/living/M = A - body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" - body += {" -
    - BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - + if(check_rights(R_VAREDIT)) + body += "[D]" + if(A.dir) + body += "
    << [dir2text(A.dir)] >>" + var/mob/living/M = A + body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" + body += {" +
    + BRUTE:[M.getBruteLoss()] + FIRE:[M.getFireLoss()] + TOXIN:[M.getToxLoss()] + OXY:[M.getOxyLoss()] + CLONE:[M.getCloneLoss()] + BRAIN:[M.getBrainLoss()] + - "} + "} + + else + body += "[D]" + if(A.dir) + body += "
    <<[dir2text(A.dir)]>>" + var/mob/living/M = A + body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" + body += {" +
    + BRUTE:[M.getBruteLoss()] + FIRE:[M.getFireLoss()] + TOXIN:[M.getToxLoss()] + OXY:[M.getOxyLoss()] + CLONE:[M.getCloneLoss()] + BRAIN:[M.getBrainLoss()] + + + + "} + else - body += "[D]" - if(A.dir) - body += "
    << [dir2text(A.dir)] >>" + if(check_rights(R_VAREDIT)) + body += "[D]" + if(A.dir) + body += "
    << [dir2text(A.dir)] >>" + + else + body += "[D]" + if(A.dir) + body += "
    <<[dir2text(A.dir)]>>" + + else body += "[D]" @@ -240,42 +268,58 @@ client body += "" if(ismob(D)) body += "" - - body += "" - - if(ismob(D)) - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" body += "" - if(ishuman(D)) + if(check_rights(R_REJUVINATE)) + body += "" + + + + + if(check_rights(R_VAREDIT)) + if(ismob(D)) body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - if(isobj(D)) - body += "" - if(isobj(D) || ismob(D) || isturf(D)) - body += "" - body += "" + body += "" + body += "" + body += "" + body += "" + if(check_rights(R_BUILDMODE)) + body += "" + + if(check_rights(R_FUN)) + body += "" + body += "" + body += "" + + if(ishuman(D)) + if(check_rights(R_SPAWN)) + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + + + if(isobj(D) || ismob(D) || isturf(D)) + if(check_rights(R_FUN)) + body += "" + body += "" + body += "" + + if(isobj(D)) + if(check_rights(R_DEBUG|R_SERVER)) + body += "" + body += "" + body += "" body += "

  • " - - body += "E - Edit, tries to determine the variable type by itself.
    " - body += "C - Change, asks you for the var type first.
    " - body += "M - Mass modify: changes this variable for all objects of this type.

    " + if(check_rights(R_VAREDIT)) + body += "E - Edit, tries to determine the variable type by itself.
    " + body += "C - Change, asks you for the var type first.
    " + body += "M - Mass modify: changes this variable for all objects of this type.

    " body += "
    Search:

    " @@ -326,7 +370,7 @@ client proc/debug_variable(name, value, level, var/datum/DA = null) var/html = "" - if(DA) + if(DA & check_rights(R_VAREDIT)) html += "

  • " - if(check_rights(R_VAREDIT)) + if(check_rights(R_VAREDIT,0)) body += "E - Edit, tries to determine the variable type by itself.
    " body += "C - Change, asks you for the var type first.
    " body += "M - Mass modify: changes this variable for all objects of this type.

    " @@ -370,7 +370,7 @@ client proc/debug_variable(name, value, level, var/datum/DA = null) var/html = "" - if(DA && check_rights(R_VAREDIT)) + if(DA && check_rights(R_VAREDIT,0)) html += "
  • (E) (C) (M) " else html += "
  • " @@ -501,351 +501,351 @@ client //Needs +VAREDIT past this point - if(!check_rights(R_VAREDIT)) return + if(check_rights(R_VAREDIT,0)) - else if(href_list["rename"]) - if(!check_rights(0)) return + if(href_list["rename"]) + if(!check_rights(0)) return - var/mob/M = locate(href_list["rename"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN) - if( !new_name || !M ) return - - message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") - M.fully_replace_character_name(M.real_name,new_name) - href_list["datumrefresh"] = href_list["rename"] - - else if(href_list["varnameedit"] && href_list["datumedit"]) - if(!check_rights(0)) return - - var/D = locate(href_list["datumedit"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnameedit"], 1) - - else if(href_list["varnamechange"] && href_list["datumchange"]) - if(!check_rights(0)) return - - var/D = locate(href_list["datumchange"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnamechange"], 0) - - else if(href_list["varnamemass"] && href_list["datummass"]) - if(!check_rights(0)) return - - var/atom/A = locate(href_list["datummass"]) - if(!istype(A)) - usr << "This can only be used on instances of type /atom" - return - - cmd_mass_modify_object_variables(A, href_list["varnamemass"]) - - else if(href_list["give_spell"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["give_spell"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_spell(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["give_disease"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["give_disease"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_disease(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["ninja"]) - if(!check_rights(R_FUN)) return - - var/mob/M = locate(href_list["ninja"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_ninjafy(M) - href_list["datumrefresh"] = href_list["ninja"] - - else if(href_list["gib"]) - if(!check_rights(R_FUN)) return - - var/mob/M = locate(href_list["gib"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_gib(M) - - else if(href_list["build_mode"]) - if(!check_rights(R_BUILDMODE)) return - - var/mob/M = locate(href_list["build_mode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - togglebuildmode(M) - href_list["datumrefresh"] = href_list["build_mode"] - - else if(href_list["drop_everything"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["drop_everything"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_admin_drop_everything(M) - - else if(href_list["direct_control"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["direct_control"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_assume_direct_control(M) - - else if(href_list["make_skeleton"]) - if(!check_rights(R_FUN)) return - - var/mob/living/carbon/human/H = locate(href_list["make_skeleton"]) - if(!istype(H)) - usr << "This can only be used on instances of type /mob/living/carbon/human" - return - - H.makeSkeleton() - href_list["datumrefresh"] = href_list["make_skeleton"] - - else if(href_list["delall"]) - if(!check_rights(R_DEBUG|R_SERVER)) return - - var/obj/O = locate(href_list["delall"]) - if(!isobj(O)) - usr << "This can only be used on instances of type /obj" - return - - var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") - if(action_type == "Cancel" || !action_type) - return - - if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes") - return - - if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") - return - - var/O_type = O.type - switch(action_type) - if("Strict type") - var/i = 0 - for(var/obj/Obj in world) - if(Obj.type == O_type) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - if("Type and subtypes") - var/i = 0 - for(var/obj/Obj in world) - if(istype(Obj,O_type)) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - - else if(href_list["explode"]) - if(!check_rights(R_FUN)) return - - var/atom/A = locate(href_list["explode"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_explosion(A) - href_list["datumrefresh"] = href_list["explode"] - - else if(href_list["emp"]) - if(!check_rights(R_FUN)) return - - var/atom/A = locate(href_list["emp"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_emp(A) - href_list["datumrefresh"] = href_list["emp"] - - else if(href_list["rotatedatum"]) - if(!check_rights(0)) return - - var/atom/A = locate(href_list["rotatedatum"]) - if(!istype(A)) - usr << "This can only be done to instances of type /atom" - return - - switch(href_list["rotatedir"]) - if("right") A.dir = turn(A.dir, -45) - if("left") A.dir = turn(A.dir, 45) - href_list["datumrefresh"] = href_list["rotatedatum"] - - else if(href_list["makehuman"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"]) - if(!istype(Mo)) - usr << "This can only be done to instances of type /mob/living/carbon/monkey" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!Mo) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("humanone"=href_list["makehuman"])) - - else if(href_list["makemonkey"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("monkeyone"=href_list["makemonkey"])) - - else if(href_list["makerobot"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makerobot"=href_list["makerobot"])) - - else if(href_list["makealien"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makealien"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makealien"=href_list["makealien"])) - - else if(href_list["makeslime"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeslime"=href_list["makeslime"])) - - else if(href_list["makeai"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeai"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeai"=href_list["makeai"])) - - else if(href_list["setmutantrace"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["setmutantrace"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow", "fly", "skeleton") - switch(new_mutantrace) - if(null) return - if("NONE") new_mutantrace = "" - if(!H) - usr << "Mob doesn't exist anymore" - return - if(H.dna) - H.dna.mutantrace = new_mutantrace - H.update_body() - H.update_hair() - - else if(href_list["adjustDamage"] && href_list["mobToDamage"]) - if(!check_rights(0)) return - - var/mob/living/L = locate(href_list["mobToDamage"]) - if(!istype(L)) return - - var/Text = href_list["adjustDamage"] - - var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num - - if(!L) - usr << "Mob doesn't exist anymore" - return - - switch(Text) - if("brute") L.adjustBruteLoss(amount) - if("fire") L.adjustFireLoss(amount) - if("toxin") L.adjustToxLoss(amount) - if("oxygen")L.adjustOxyLoss(amount) - if("brain") L.adjustBrainLoss(amount) - if("clone") L.adjustCloneLoss(amount) - else - usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]" + var/mob/M = locate(href_list["rename"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" return - if(amount != 0) - log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - href_list["datumrefresh"] = href_list["mobToDamage"] + var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN) + if( !new_name || !M ) return + + message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") + M.fully_replace_character_name(M.real_name,new_name) + href_list["datumrefresh"] = href_list["rename"] + + else if(href_list["varnameedit"] && href_list["datumedit"]) + if(!check_rights(0)) return + + var/D = locate(href_list["datumedit"]) + if(!istype(D,/datum) && !istype(D,/client)) + usr << "This can only be used on instances of types /client or /datum" + return + + modify_variables(D, href_list["varnameedit"], 1) + + else if(href_list["varnamechange"] && href_list["datumchange"]) + if(!check_rights(0)) return + + var/D = locate(href_list["datumchange"]) + if(!istype(D,/datum) && !istype(D,/client)) + usr << "This can only be used on instances of types /client or /datum" + return + + modify_variables(D, href_list["varnamechange"], 0) + + else if(href_list["varnamemass"] && href_list["datummass"]) + if(!check_rights(0)) return + + var/atom/A = locate(href_list["datummass"]) + if(!istype(A)) + usr << "This can only be used on instances of type /atom" + return + + cmd_mass_modify_object_variables(A, href_list["varnamemass"]) + + else if(href_list["give_spell"]) + if(!check_rights(0)) return + + var/mob/M = locate(href_list["give_spell"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + src.give_spell(M) + href_list["datumrefresh"] = href_list["give_spell"] + + else if(href_list["give_disease"]) + if(!check_rights(0)) return + + var/mob/M = locate(href_list["give_disease"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + src.give_disease(M) + href_list["datumrefresh"] = href_list["give_spell"] + + else if(href_list["ninja"]) + if(!check_rights(R_FUN)) return + + var/mob/M = locate(href_list["ninja"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + src.cmd_admin_ninjafy(M) + href_list["datumrefresh"] = href_list["ninja"] + + else if(href_list["gib"]) + if(!check_rights(R_FUN)) return + + var/mob/M = locate(href_list["gib"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + src.cmd_admin_gib(M) + + else if(href_list["build_mode"]) + if(!check_rights(R_BUILDMODE)) return + + var/mob/M = locate(href_list["build_mode"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + togglebuildmode(M) + href_list["datumrefresh"] = href_list["build_mode"] + + else if(href_list["drop_everything"]) + if(!check_rights(0)) return + + var/mob/M = locate(href_list["drop_everything"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + if(usr.client) + usr.client.cmd_admin_drop_everything(M) + + else if(href_list["direct_control"]) + if(!check_rights(0)) return + + var/mob/M = locate(href_list["direct_control"]) + if(!istype(M)) + usr << "This can only be used on instances of type /mob" + return + + if(usr.client) + usr.client.cmd_assume_direct_control(M) + + else if(href_list["make_skeleton"]) + if(!check_rights(R_FUN)) return + + var/mob/living/carbon/human/H = locate(href_list["make_skeleton"]) + if(!istype(H)) + usr << "This can only be used on instances of type /mob/living/carbon/human" + return + + H.makeSkeleton() + href_list["datumrefresh"] = href_list["make_skeleton"] + + else if(href_list["delall"]) + if(!check_rights(R_DEBUG|R_SERVER)) return + + var/obj/O = locate(href_list["delall"]) + if(!isobj(O)) + usr << "This can only be used on instances of type /obj" + return + + var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") + if(action_type == "Cancel" || !action_type) + return + + if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes") + return + + if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") + return + + var/O_type = O.type + switch(action_type) + if("Strict type") + var/i = 0 + for(var/obj/Obj in world) + if(Obj.type == O_type) + i++ + del(Obj) + if(!i) + usr << "No objects of this type exist" + return + log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") + message_admins("\blue [key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") + if("Type and subtypes") + var/i = 0 + for(var/obj/Obj in world) + if(istype(Obj,O_type)) + i++ + del(Obj) + if(!i) + usr << "No objects of this type exist" + return + log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") + message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") + + else if(href_list["explode"]) + if(!check_rights(R_FUN)) return + + var/atom/A = locate(href_list["explode"]) + if(!isobj(A) && !ismob(A) && !isturf(A)) + usr << "This can only be done to instances of type /obj, /mob and /turf" + return + + src.cmd_admin_explosion(A) + href_list["datumrefresh"] = href_list["explode"] + + else if(href_list["emp"]) + if(!check_rights(R_FUN)) return + + var/atom/A = locate(href_list["emp"]) + if(!isobj(A) && !ismob(A) && !isturf(A)) + usr << "This can only be done to instances of type /obj, /mob and /turf" + return + + src.cmd_admin_emp(A) + href_list["datumrefresh"] = href_list["emp"] + + else if(href_list["rotatedatum"]) + if(!check_rights(0)) return + + var/atom/A = locate(href_list["rotatedatum"]) + if(!istype(A)) + usr << "This can only be done to instances of type /atom" + return + + switch(href_list["rotatedir"]) + if("right") A.dir = turn(A.dir, -45) + if("left") A.dir = turn(A.dir, 45) + href_list["datumrefresh"] = href_list["rotatedatum"] + + else if(href_list["makehuman"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"]) + if(!istype(Mo)) + usr << "This can only be done to instances of type /mob/living/carbon/monkey" + return + + if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return + if(!Mo) + usr << "Mob doesn't exist anymore" + return + holder.Topic(href, list("humanone"=href_list["makehuman"])) + + else if(href_list["makemonkey"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return + if(!H) + usr << "Mob doesn't exist anymore" + return + holder.Topic(href, list("monkeyone"=href_list["makemonkey"])) + + else if(href_list["makerobot"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["makerobot"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return + if(!H) + usr << "Mob doesn't exist anymore" + return + holder.Topic(href, list("makerobot"=href_list["makerobot"])) + + else if(href_list["makealien"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["makealien"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return + if(!H) + usr << "Mob doesn't exist anymore" + return + holder.Topic(href, list("makealien"=href_list["makealien"])) + + else if(href_list["makeslime"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["makeslime"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return + if(!H) + usr << "Mob doesn't exist anymore" + return + holder.Topic(href, list("makeslime"=href_list["makeslime"])) + + else if(href_list["makeai"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["makeai"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return + if(!H) + usr << "Mob doesn't exist anymore" + return + holder.Topic(href, list("makeai"=href_list["makeai"])) + + else if(href_list["setmutantrace"]) + if(!check_rights(R_SPAWN)) return + + var/mob/living/carbon/human/H = locate(href_list["setmutantrace"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow", "fly", "skeleton") + switch(new_mutantrace) + if(null) return + if("NONE") new_mutantrace = "" + if(!H) + usr << "Mob doesn't exist anymore" + return + if(H.dna) + H.dna.mutantrace = new_mutantrace + H.update_body() + H.update_hair() + + else if(href_list["adjustDamage"] && href_list["mobToDamage"]) + if(!check_rights(0)) return + + var/mob/living/L = locate(href_list["mobToDamage"]) + if(!istype(L)) return + + var/Text = href_list["adjustDamage"] + + var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num + + if(!L) + usr << "Mob doesn't exist anymore" + return + + switch(Text) + if("brute") L.adjustBruteLoss(amount) + if("fire") L.adjustFireLoss(amount) + if("toxin") L.adjustToxLoss(amount) + if("oxygen")L.adjustOxyLoss(amount) + if("brain") L.adjustBrainLoss(amount) + if("clone") L.adjustCloneLoss(amount) + else + usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]" + return + + if(amount != 0) + log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") + message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") + href_list["datumrefresh"] = href_list["mobToDamage"] return From 9412c6222497bf800bd449bfaba160d11e72c60f Mon Sep 17 00:00:00 2001 From: Alek2ander Date: Fri, 13 Dec 2013 00:05:05 +0300 Subject: [PATCH 145/315] Final pass --- code/datums/datumvars.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 2a5e9d84fe3..e2b6f49dc4a 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -194,7 +194,7 @@ client else body += "[D]" if(A.dir) - body += "
    <<[dir2text(A.dir)]>>" + body += "
    [dir2text(A.dir)]" var/mob/living/M = A body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" body += {" @@ -219,7 +219,7 @@ client else body += "[D]" if(A.dir) - body += "
    <<[dir2text(A.dir)]>>" + body += "
    [dir2text(A.dir)]" else @@ -449,8 +449,6 @@ client if(href_list["Vars"]) debug_variables(locate(href_list["Vars"])) - //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). - if(href_list["datumrefresh"]) var/datum/DAT = locate(href_list["datumrefresh"]) if(!istype(DAT, /datum)) @@ -503,6 +501,9 @@ client if(check_rights(R_VAREDIT,0)) + + //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). + if(href_list["rename"]) if(!check_rights(0)) return From c08fe3caf59a87d0b09055b0dd512cab0c0744ff Mon Sep 17 00:00:00 2001 From: Alek2ander Date: Fri, 13 Dec 2013 01:16:56 +0400 Subject: [PATCH 146/315] Cleaning up --- code/datums/datumvars.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index e2b6f49dc4a..b53463e5c34 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -266,12 +266,13 @@ client body += "" + if(ismob(D)) body += "" body += "" if(check_rights(R_REJUVINATE,0)) body += "" - + @@ -284,7 +285,7 @@ client body += "" if(check_rights(R_BUILDMODE,0)) body += "" - + if(check_rights(R_FUN,0)) body += "" body += "" @@ -299,14 +300,14 @@ client body += "" body += "" body += "" - + if(isobj(D) || ismob(D) || isturf(D)) if(check_rights(R_FUN,0)) body += "" body += "" body += "" - + if(isobj(D)) if(check_rights(R_DEBUG|R_SERVER,0)) body += "" @@ -316,6 +317,7 @@ client body += "" body += "
    " + if(check_rights(R_VAREDIT,0)) body += "E - Edit, tries to determine the variable type by itself.
    " body += "C - Change, asks you for the var type first.
    " @@ -503,7 +505,7 @@ client //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). - + if(href_list["rename"]) if(!check_rights(0)) return From 5c3018e094e7ff48ad61a4c4f47f9248cab519f3 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 13 Dec 2013 03:17:22 +0400 Subject: [PATCH 147/315] Added logging to stings Gia said so --- .../gamemodes/changeling/changeling_powers.dm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 2b2a488a011..c13006d6ecd 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -580,6 +580,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with transformation sting, giving him [src.mind.changeling.chosen_dna.real_name] appearance." + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with transformation sting, and took [src.mind.changeling.chosen_dna.real_name] appearance." + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with transformation sting, giving him [src.mind.changeling.chosen_dna.real_name] appearance." ) if(!sting_can_reach(T, 40)) return 0 if((HUSK in T.mutations) || !check_dna_integrity(T)) @@ -601,6 +604,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with extract sting." + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with extract sting." + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with extract sting." ) if(!sting_can_reach(T, 25)) return 0 if(src.mind.changeling.can_absorb_dna(T, usr)) @@ -619,6 +625,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with mute sting." + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with mute sting." + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with mute sting." ) if(!sting_can_reach(T, 20)) return 0 T.silent += 30 @@ -633,6 +642,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with blind sting." + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with blind sting." + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with blind sting." ) if(!sting_can_reach(T, 25)) return 0 T << "Your eyes burn horrifically!" @@ -650,6 +662,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with LSD sting." + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with LSD sting." + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with LSD sting." ) if(!sting_can_reach(T, 5)) return 0 spawn(rand(300,600)) @@ -665,6 +680,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with cryo sting." + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with cryo sting." + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with cryo sting." ) if(!sting_can_reach(T, 15)) return 0 if(T.reagents) From 9f617549ee74cee02e592fbfbf743f3f3e74ac40 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 13 Dec 2013 03:42:52 +0400 Subject: [PATCH 148/315] Made it a little proc Should be better now --- .../gamemodes/changeling/changeling_powers.dm | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index c13006d6ecd..ea7a2067383 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -532,6 +532,11 @@ var/list/datum/dna/hivemind_bank = list() //STINGS// //They get a pretty header because there's just so fucking many of them ;_; ////////// +/mob/living/carbon/proc/add_sting_logs(mob/T, sting_name, datum/dna/DNA) + src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with [sting_name] sting[!DNA ? "." : ", and took [DNA.real_name] appearance."]" + log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" ) + /mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it src << "We prepare our sting, use alt+click on target to sting them." src.mind.changeling.chosen_sting = A @@ -580,9 +585,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with transformation sting, giving him [src.mind.changeling.chosen_dna.real_name] appearance." - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with transformation sting, and took [src.mind.changeling.chosen_dna.real_name] appearance." - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with transformation sting, giving him [src.mind.changeling.chosen_dna.real_name] appearance." ) + add_sting_logs(T, "transformation", src.mind.changeling.chosen_dna) if(!sting_can_reach(T, 40)) return 0 if((HUSK in T.mutations) || !check_dna_integrity(T)) @@ -604,9 +607,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with extract sting." - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with extract sting." - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with extract sting." ) + add_sting_logs(T, "extracting") if(!sting_can_reach(T, 25)) return 0 if(src.mind.changeling.can_absorb_dna(T, usr)) @@ -625,9 +626,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with mute sting." - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with mute sting." - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with mute sting." ) + add_sting_logs(T, "mute") if(!sting_can_reach(T, 20)) return 0 T.silent += 30 @@ -642,9 +641,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with blind sting." - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with blind sting." - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with blind sting." ) + add_sting_logs(T, "blind") if(!sting_can_reach(T, 25)) return 0 T << "Your eyes burn horrifically!" @@ -662,9 +659,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with LSD sting." - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with LSD sting." - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with LSD sting." ) + add_sting_logs(T, "LSD") if(!sting_can_reach(T, 5)) return 0 spawn(rand(300,600)) @@ -680,9 +675,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with cryo sting." - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with cryo sting." - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with cryo sting." ) + add_sting_logs(T, "cryo") if(!sting_can_reach(T, 15)) return 0 if(T.reagents) From 130803fcd96a4e49322668fb8c2271686b57de0f Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 13 Dec 2013 00:00:20 +0000 Subject: [PATCH 149/315] * Added the THICKMATERIAL flag. It is used for thick coverall suits (space suits, firesuits, etc) and it will stop injections from syringes, hypos and parapens. It is also used for head items such as biohoods and space helmets. If you aim for the head, it will check if you can inject through the head equipped item, if you aim anywhere else it will check the external suit. Let me know if I missed an item or if you don't think an item should have the flag. * Cleaned up a bit of the gun code. * Fixed an issue with shotgun darts not working in barrel shotguns. * Made the on_hit() have a zone, will be used for syringe guns in another PR. * Removed the unused sleepy pen. * Changed /obj/item/weapon/gun/projectile/shotgun/pump/sc_pump to /obj/item/weapon/gun/projectile/shotgun/sc_pump, there was no /pump/ anywhere else. * Shotgun darts will follow the new flag. * Shotgun darts are now open containers, and I removed the snowflake check for them in syringes. * Added logging for reagents in any projectile. --- code/__DEFINES/flags.dm | 8 ++--- code/game/atoms.dm | 4 +-- code/modules/clothing/clothing.dm | 2 +- .../clothing/spacesuits/miscellaneous.dm | 7 ---- code/modules/clothing/suits/bio.dm | 4 +-- code/modules/clothing/suits/utility.dm | 9 +++--- code/modules/mob/living/carbon/human/human.dm | 17 ++++++++++ .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/living.dm | 3 ++ code/modules/mob/living/living_defense.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 5 +++ code/modules/paperwork/pen.dm | 32 +++---------------- .../modules/projectiles/ammunition/bullets.dm | 1 + code/modules/projectiles/guns/projectile.dm | 14 +++++--- .../projectiles/guns/projectile/revolver.dm | 13 +------- .../projectiles/guns/projectile/shotgun.dm | 17 ++-------- code/modules/projectiles/projectile.dm | 18 +++++++---- .../modules/projectiles/projectile/bullets.dm | 11 ++++--- .../reagents/reagent_containers/borghydro.dm | 9 +++--- .../reagents/reagent_containers/hypospray.dm | 8 ++--- .../reagents/reagent_containers/syringes.dm | 7 +++- maps/RandomZLevels/stationCollision.dm | 4 +-- 22 files changed, 94 insertions(+), 103 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 86b44a24621..5caa6ceec96 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -6,17 +6,16 @@ //To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. #define TABLEPASS 2 // can pass by a table or rack ~ apparently actually unused, uses pass_flags instead - +#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() #define MASKINTERNALS 8 // mask allows internals //#define SUITSPACE 8 // suit protects against space - #define USEDELAY 16 // For adding extra delay to heavy items, not currently used #define NOSHIELD 32 // weapon not affected by shield #define CONDUCT 64 // conducts electricity (metal etc.) #define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving -#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() + #define GLASSESCOVERSEYES 1024 #define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags @@ -24,7 +23,8 @@ #define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head #define HEADCOVERSMOUTH 2048 -#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc +#define THICKMATERIAL 1024 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with NOSLIP for shoes) +#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc (NOTE: flag shared with THICKMATERIAL for external suits and helmet) #define OPENCONTAINER 4096 // is an open container for chemistry purposes diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 9dd09d89494..4c91bbbb2a0 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -94,8 +94,8 @@ /atom/proc/emp_act(var/severity) return -/atom/proc/bullet_act(obj/item/projectile/P) - P.on_hit(src,0) +/atom/proc/bullet_act(obj/item/projectile/P, def_zone) + P.on_hit(src, 0, def_zone) . = 0 /atom/proc/in_contents_of(container)//can take class or object instance as argument diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 6276894f241..d36384cf683 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -123,7 +123,7 @@ BLIND // can't see anything w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) slowdown = 3 diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index edf6507073f..f9fcf1b2747 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -17,16 +17,9 @@ w_class = 4 gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE - body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) slowdown = 1.5 armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT //Deathsquad suit diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 286b1abfdeb..452b6f22784 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -4,7 +4,7 @@ icon_state = "bio" desc = "A hood that protects the head and face from biological comtaminants." permeability_coefficient = 0.01 - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES @@ -16,7 +16,7 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS + flags = FPRINT | TABLEPASS | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 1.0 allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen) diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index afcf38eec69..7d0e41193b3 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -21,7 +21,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher) slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -47,7 +47,7 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 40, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES cold_protection = HEAD @@ -64,7 +64,7 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS + flags = FPRINT | TABLEPASS | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 2 armor = list(melee = 40, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) @@ -93,7 +93,7 @@ name = "radiation hood" icon_state = "rad" desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) @@ -105,6 +105,7 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 + flags = FPRINT | TABLEPASS | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1.5 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0125ca4ff44..ee06c0975b6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -465,3 +465,20 @@ xylophone = 1 spawn(1200) xylophone = 0 + +/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone) + . = 1 // Default to returning true. + if(user && !target_zone) + target_zone = user.zone_sel.selecting + // If targeting the head, see if the head item is thin enough. + // If targeting anything else, see if the wear suit is thin enough. + switch(target_zone) + if("head") + if(head && head.flags & THICKMATERIAL) + . = 0 + else + if(wear_suit && wear_suit.flags & THICKMATERIAL) + . = 0 + if(!. && error_msg && user) + // Might need re-wording. + user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into." \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 9fbbc875afe..435bb15ba1a 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -60,7 +60,7 @@ emp_act return -1 // complete projectile permutation if(check_shields(P.damage, "the [P.name]")) - P.on_hit(src, 2) + P.on_hit(src, 2, def_zone) return 2 return (..(P , def_zone)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index aefe2d0f814..41a4882f910 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -211,6 +211,9 @@ O.emp_act(severity) ..() +/mob/living/proc/can_inject() + return 1 + /mob/living/proc/get_organ_target() var/mob/shooter = src var/t = shooter:zone_sel.selecting diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 7daac632502..0dfcfc24ebe 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -50,7 +50,7 @@ return 2 if(!P.nodamage) apply_damage((P.damage/(absorb+1)), P.damage_type, def_zone) - P.on_hit(src, absorb) + P.on_hit(src, absorb, def_zone) return absorb /mob/living/hitby(atom/movable/AM)//Standardization and logging -Sieve diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index d1e95a6fea6..c172f4f7b05 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -109,6 +109,11 @@ /mob/living/silicon/proc/damage_mob(var/brute = 0, var/fire = 0, var/tox = 0) return +/mob/living/silicon/can_inject(var/mob/user, var/error_msg) + if(error_msg) + user << "The outter shell is too tough." + return 0 + /mob/living/silicon/IsAdvancedToolUser() return 1 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 2ab3c71d57a..ca88d8a7790 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -54,29 +54,6 @@ log_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey])") -/* - * Sleepy Pens - */ -/obj/item/weapon/pen/sleepypen - desc = "It's a black ink pen with a sharp point and a carefully engraved \"Waffle Co.\"" - origin_tech = "materials=2;syndicate=5" - - -/obj/item/weapon/pen/sleepypen/New() - create_reagents(30) - reagents.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin //30 Chloral seems to be fatal, reducing it to 22. - ..() - - -/obj/item/weapon/pen/sleepypen/attack(mob/M, mob/user) - if(!istype(M)) return - - ..() - if(reagents.total_volume) - if(M.reagents) - reagents.trans_to(M, 30) //used to be 150 - - /* * Parapens */ @@ -84,13 +61,14 @@ origin_tech = "materials=2;syndicate=5" -/obj/item/weapon/pen/paralysis/attack(mob/M, mob/user) +/obj/item/weapon/pen/paralysis/attack(mob/living/M, mob/user) if(!istype(M)) return ..() - if(reagents.total_volume) - if(M.reagents) - reagents.trans_to(M, 50) + if(M.can_inject(user, 1)) + if(reagents.total_volume) + if(M.reagents) + reagents.trans_to(M, 50) /obj/item/weapon/pen/paralysis/New() diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index c5337c76c52..70e70c31b1f 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -99,6 +99,7 @@ /obj/item/ammo_casing/shotgun/dart/New() ..() flags |= NOREACT + flags |= OPENCONTAINER create_reagents(30) /obj/item/ammo_casing/shotgun/dart/attackby() diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index bab6920a665..cfe74037548 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -11,7 +11,6 @@ var/obj/item/ammo_box/magazine/magazine var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. - /obj/item/weapon/gun/projectile/New() ..() magazine = new mag_type(src) @@ -19,17 +18,22 @@ update_icon() return -/obj/item/weapon/gun/projectile/process_chambered() +/obj/item/weapon/gun/projectile/process_chambered(var/eject_casing = 1, var/empty_chamber = 1) // if(in_chamber) // return 1 - var/obj/item/ammo_casing/AC = chambered //Find chambered round if(isnull(AC) || !istype(AC)) return 0 - AC.loc = get_turf(src) //Eject casing onto ground. - chambered = null + if(eject_casing) + AC.loc = get_turf(src) //Eject casing onto ground. + if(empty_chamber) + chambered = null chamber_round() if(AC.BB) + if(AC.reagents && AC.BB.reagents) + var/datum/reagents/casting_reagents = AC.reagents + casting_reagents.trans_to(AC.BB, casting_reagents.total_volume) //For chemical darts/bullets + casting_reagents.delete() in_chamber = AC.BB //Load projectile into chamber. AC.BB.loc = src //Set projectile loc to gun. AC.BB = null diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index dbe5d42b399..7cd352a177e 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -13,18 +13,7 @@ return /obj/item/weapon/gun/projectile/revolver/process_chambered() - var/obj/item/ammo_casing/AC = chambered //Find chambered round - if(isnull(AC) || !istype(AC)) - return 0 - chambered = null - chamber_round() - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. - AC.BB.loc = src //Set projectile loc to gun. - AC.BB = null - AC.update_icon() - return 1 - return 0 + return ..(0, 1) /obj/item/weapon/gun/projectile/revolver/attackby(var/obj/item/A as obj, mob/user as mob) var/num_loaded = 0 diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 99cb19a89a5..497367c1c06 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -35,21 +35,10 @@ update_icon() /obj/item/weapon/gun/projectile/shotgun/process_chambered() - var/obj/item/ammo_casing/AC = chambered //Find chambered round - if(isnull(AC) || !istype(AC)) - return 0 - if(AC.BB) - if(AC.reagents && AC.BB.reagents) - var/datum/reagents/casting_reagents = AC.reagents - casting_reagents.trans_to(AC.BB, casting_reagents.total_volume) //For chemical darts - casting_reagents.delete() - in_chamber = AC.BB //Load projectile into chamber. - AC.BB.loc = src //Set projectile loc to gun. - AC.BB = null - AC.update_icon() - return 1 - return 0 + return ..(0, 0) +/obj/item/weapon/gun/projectile/shotgun/chamber_round() + return /obj/item/weapon/gun/projectile/shotgun/attack_self(mob/living/user) if(recentpump) return diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0c642252bc4..eef9adfa8fc 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -55,7 +55,7 @@ // Garbage collect the projectiles loc = null - proc/on_hit(var/atom/target, var/blocked = 0) + proc/on_hit(var/atom/target, var/blocked = 0, var/hit_zone) if(blocked >= 2) return 0//Full block if(!isliving(target)) return 0 if(isanimal(target)) return 0 @@ -78,6 +78,12 @@ loc = A.loc return 0// nope.avi + var/reagent_note + if(reagents && reagents.reagent_list) + reagent_note = " REAGENTS:" + for(var/datum/reagent/R in reagents.reagent_list) + reagent_note += R.id + " (" + reagent_note += num2text(R.volume) + ") " var/distance = get_dist(get_turf(A), starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use. if(silenced) @@ -87,12 +93,12 @@ "[M] is hit by [src] in the [parse_zone(def_zone)]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter if(istype(firer, /mob)) - M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") + M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src][reagent_note]" + firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src][reagent_note]" + log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src][reagent_note]") else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") + M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src][reagent_note]" + log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src][reagent_note]") spawn(0) if(A) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 154802a6e2d..c471cd34a98 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -65,13 +65,14 @@ flags |= NOREACT create_reagents(50) - on_hit(var/atom/target, var/blocked = 0) + on_hit(var/atom/target, var/blocked = 0, var/hit_zone) if(istype(target, /mob/living/carbon)) var/mob/living/carbon/M = target - reagents.trans_to(M, reagents.total_volume) - else - flags &= ~NOREACT - reagents.handle_reactions() + if(M.can_inject(target_zone = hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + reagents.trans_to(M, reagents.total_volume) + return 1 + flags &= ~NOREACT + reagents.handle_reactions() return 1 /obj/item/projectile/bullet/dart/metalfoam diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index ae991f1c246..551ca8422d0 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -83,17 +83,16 @@ Borg Hypospray R.cell.use(charge_cost) //Take power from borg... RG.add_reagent(reagent_ids[mode], 5) //And fill hypo with reagent. -/obj/item/weapon/reagent_containers/borghypo/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M as mob, mob/user as mob) var/datum/reagents/R = reagent_list[mode] if(!R.total_volume) user << "The injector is empty." return - if (!( istype(M, /mob) )) + if (!( istype(M) )) return - if (R.total_volume) + M << "You feel a tiny prick!" + if (R.total_volume && M.can_inject(user, 1)) user << "You inject [M] with the injector." - M << "You feel a tiny prick!" - R.reaction(M, INGEST) if(M.reagents) var/trans = R.trans_to(M, amount_per_transfer_from_this) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index d9024c461d3..9925a47518c 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -19,15 +19,15 @@ reagents.add_reagent("doctorsdelight", 30) -/obj/item/weapon/reagent_containers/hypospray/attack(mob/M, mob/user) +/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M, mob/user) if(!reagents.total_volume) user << "[src] is empty." return - if(!ismob(M)) + if(!istype(M)) return - if(reagents.total_volume) + M << "You feel a tiny prick!" + if(reagents.total_volume && M.can_inject(user, 1)) user << "You inject [M] with [src]." - M << "You feel a tiny prick!" reagents.reaction(M, INGEST) if(M.reagents) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index be3311fa5b8..20f49062f3a 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -44,6 +44,11 @@ if(!proximity) return if(!target.reagents) return + if(isliving(target)) + var/mob/living/M = target + if(!M.can_inject(user, 1)) + return + switch(mode) if(SYRINGE_DRAW) @@ -122,7 +127,7 @@ if(istype(target, /obj/item/weapon/implantcase/chem)) return - if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/ammo_casing/shotgun/dart) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) + if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) user << "You cannot directly fill [target]." return if(target.reagents.total_volume >= target.reagents.maximum_volume) diff --git a/maps/RandomZLevels/stationCollision.dm b/maps/RandomZLevels/stationCollision.dm index ddc3b491feb..46b67a369b9 100644 --- a/maps/RandomZLevels/stationCollision.dm +++ b/maps/RandomZLevels/stationCollision.dm @@ -86,9 +86,9 @@ obj/item/weapon/gun/energy/laser/retro/sc_retro magazine.stored_ammo -= ammo //Barman's shotgun -/obj/item/weapon/gun/projectile/shotgun/pump/sc_pump +/obj/item/weapon/gun/projectile/shotgun/sc_pump -/obj/item/weapon/gun/projectile/shotgun/pump/sc_pump/New() +/obj/item/weapon/gun/projectile/shotgun/sc_pump/New() ..() for(var/ammo in magazine.stored_ammo) if(prob(95)) //95% chance From 92c5cf888a19f8000b01a0880fed9ff248ba43cf Mon Sep 17 00:00:00 2001 From: KazeEspada Date: Thu, 12 Dec 2013 23:36:05 -0700 Subject: [PATCH 150/315] Adds machine gun turrets designed to defend the syndicate shuttle. Sprites by firecage. --- code/game/machinery/turrets.dm | 297 +++++++++++++++------------------ icons/obj/turrets.dmi | Bin 47370 -> 54854 bytes 2 files changed, 133 insertions(+), 164 deletions(-) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 39da02b0e1d..55e972238d5 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -472,177 +472,146 @@ //If he wants it back he can uncomment it -/obj/structure/turret/gun_turret - name = "gun turret" +/obj/machinery/gun_turret //related to turrets but work way differentely because of being mounted on a moving ship. + name = "machine gun turret" + desc = "Syndicate defense turret. It really packs a bunch." density = 1 anchored = 1 - var/cooldown = 20 - var/projectiles = 100 - var/projectiles_per_shot = 2 - var/deviation = 0.3 - var/list/exclude = list() - var/atom/cur_target - var/scan_range = 7 - var/health = 40 - var/list/scan_for = list("human"=0,"cyborg"=0,"mecha"=0,"alien"=1) - var/on = 0 + var/state = 0 //Like stat on mobs, 0 is alive, 1 is damaged, 2 is dead + var/faction = "syndicate" + var/atom/cur_target = null + var/scan_range = 9 //You will never see them coming + var/health = 200 //Because it lacks a cover, and is mostly to keep people from touching the syndie shuttle. icon = 'icons/obj/turrets.dmi' - icon_state = "gun_turret" + icon_state = "syndieturret0" + +/obj/machinery/gun_turret/New() + ..() + take_damage(0) //check your health + +/obj/machinery/gun_turret/ex_act(severity) + switch(severity) + if(1) + die() + if(2) + take_damage(100) + if(3) + take_damage(50) + return + +/obj/machinery/gun_turret/emp_act() //Can't emp an mechanical turret. + return + +/obj/machinery/gun_turret/meteorhit() + die() + return + +/obj/machinery/gun_turret/update_icon() + if(state > 2 || state < 0) //someone fucked up the vars so fix them + take_damage(0) + icon_state = "syndieturret" + "[state]" + return - ex_act() - del src - return - - emp_act() - del src - return - - meteorhit() - del src - return - - proc/update_health() - if(src.health<=0) - del src - return - - proc/take_damage(damage) - src.health -= damage - if(src.health<=0) - del src - return - - - bullet_act(var/obj/item/projectile/Proj) - src.take_damage(Proj.damage) - ..() - return - - - attack_hand(mob/user as mob) - user.set_machine(src) - var/dat = {" - [src] Control - - Power: [on?"on":"off"]
    - Scan Range: - [scan_range] +
    - Scan for: "} - for(var/scan in scan_for) - dat += "" - - dat += {"Ammo: [max(0, projectiles)]
    - - "} - user << browse(dat, "window=turret") - onclose(user, "turret") - return - - attack_ai(mob/user as mob) - return attack_hand(user) - - - attack_alien(mob/user as mob) - user.visible_message("[user] slashes at [src]", "You slash at [src]") - src.take_damage(15) - return - - Topic(href, href_list) - if(href_list["power"]) - src.on = !src.on - if(src.on) - spawn(50) - if(src) - src.process() - if(href_list["scan_range"]) - src.scan_range = Clamp(src.scan_range+text2num(href_list["scan_range"]), 1, 8) - if(href_list["scan_for"]) - if(href_list["scan_for"] in scan_for) - scan_for[href_list["scan_for"]] = !scan_for[href_list["scan_for"]] - src.updateUsrDialog() - return - - - proc/validate_target(atom/target) - if(get_dist(target, src)>scan_range) - return 0 - if(istype(target, /mob)) - var/mob/M = target - if(!M.stat && !M.lying)//ninjas can't catch you if you're lying - return 1 - else if(istype(target, /obj/mecha)) - return 1 - return 0 - - - process() - spawn while(on) - if(projectiles<=0) - on = 0 +/obj/machinery/gun_turret/proc/take_damage(damage) + health -= damage + switch(health) + if(101 to INFINITY) + state = 0 + if(1 to 100) + state = 1 + if(-INFINITY to 0) + if(state != 2) + die() return - if(cur_target && !validate_target(cur_target)) - cur_target = null - if(!cur_target) - cur_target = get_target() - fire(cur_target) - sleep(cooldown) + state = 2 + update_icon() + return + + +/obj/machinery/gun_turret/bullet_act(var/obj/item/projectile/Proj) + take_damage(Proj.damage) + return + +/obj/machinery/gun_turret/proc/die() + state = 2 + update_icon() + +/obj/machinery/gun_turret/attack_hand(mob/user) + return + +/obj/machinery/gun_turret/attack_ai(mob/user) + return attack_hand(user) + + +/obj/machinery/gun_turret/attack_alien(mob/user as mob) + user.visible_message("[user] slashes at [src]", "You slash at [src]") + take_damage(15) + return + +/obj/machinery/gun_turret/proc/validate_target(atom/target) + if(get_dist(target, src)>scan_range) + return 0 + if(istype(target, /mob)) + var/mob/M = target + if(!M.stat) + return 1 + else if(istype(target, /obj/mecha)) + var/obj/mecha/M = target + if(M.occupant) + return 1 + return 0 + + +/obj/machinery/gun_turret/process() + if(state == 2) return - - proc/get_target() - var/list/pos_targets = list() - var/target = null - if(scan_for["human"]) - for(var/mob/living/carbon/human/M in oview(scan_range,src)) - if(M.stat || M.lying || M in exclude) - continue - pos_targets += M - if(scan_for["cyborg"]) - for(var/mob/living/silicon/M in oview(scan_range,src)) - if(M.stat || M.lying || M in exclude) - continue - pos_targets += M - if(scan_for["mecha"]) - for(var/obj/mecha/M in oview(scan_range, src)) - if(M in exclude) - continue - pos_targets += M - if(scan_for["alien"]) - for(var/mob/living/carbon/alien/M in oview(scan_range,src)) - if(M.stat || M.lying || M in exclude) - continue - pos_targets += M - if(pos_targets.len) - target = pick(pos_targets) - return target + if(cur_target && !validate_target(cur_target)) + cur_target = null + if(!cur_target) + cur_target = get_target() + if(cur_target) + fire(cur_target) + return - proc/fire(atom/target) - if(!target) - cur_target = null - return - src.dir = get_dir(src,target) - var/turf/targloc = get_turf(target) - var/target_x = targloc.x - var/target_y = targloc.y - var/target_z = targloc.z - targloc = null - spawn(-1) - for(var/i=1 to min(projectiles, projectiles_per_shot)) - if(!src) break - var/turf/curloc = get_turf(src) - var/dx = round(gaussian(0,deviation),1) - var/dy = round(gaussian(0,deviation),1) - targloc = locate(target_x+dx, target_y+dy, target_z) - if (!targloc || !curloc) - continue - if (targloc == curloc) - continue - playsound(src, 'sound/weapons/Gunshot.ogg', 50, 1) - var/obj/item/projectile/A = new /obj/item/projectile(curloc) - src.projectiles-- - A.current = curloc - A.yo = targloc.y - curloc.y - A.xo = targloc.x - curloc.x - A.process() - sleep(2) +/obj/machinery/gun_turret/proc/get_target() + var/list/pos_targets = list() + var/target = null + for(var/mob/living/M in view(scan_range,src)) + if(M.stat || faction == M.faction) + continue + pos_targets += M + for(var/obj/mecha/M in oview(scan_range, src)) + if(M.occupant) + if(faction == M.occupant.faction) + continue + if(!M.occupant) + continue //Don't shoot at empty mechs. + pos_targets += M + if(pos_targets.len) + target = pick(pos_targets) + return target + + +/obj/machinery/gun_turret/proc/fire(atom/target) + if(!target) + cur_target = null return + src.dir = get_dir(src,target) + var/turf/targloc = get_turf(target) + if(!src) + return + var/turf/curloc = get_turf(src) + if (!targloc || !curloc) + return + if (targloc == curloc) + return + playsound(src, 'sound/weapons/Gunshot.ogg', 50, 1) + var/obj/item/projectile/A = new /obj/item/projectile/bullet(curloc) + A.current = curloc + A.yo = targloc.y - curloc.y + A.xo = targloc.x - curloc.x + spawn(0) + A.process() + return diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index b3a2036742608cd7145336f0864bfac442bd80c8..fa8dad72c363467d09b5fefc48d12024d6a58c65 100644 GIT binary patch delta 29430 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௽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 Date: Fri, 13 Dec 2013 15:47:35 +0400 Subject: [PATCH 151/315] Who need coding, better to fix some more grammer Stung, not stinged --- code/game/gamemodes/changeling/changeling_powers.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index ea7a2067383..c909f9ec6bc 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -533,9 +533,9 @@ var/list/datum/dna/hivemind_bank = list() ////////// /mob/living/carbon/proc/add_sting_logs(mob/T, sting_name, datum/dna/DNA) - src.attack_log += "\[[time_stamp()]\] Stinged [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" + src.attack_log += "\[[time_stamp()]\] Stung [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with [sting_name] sting[!DNA ? "." : ", and took [DNA.real_name] appearance."]" - log_attack("[src.name] ([src.ckey]) stinged [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" ) + log_attack("[src.name] ([src.ckey]) stung [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" ) /mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it src << "We prepare our sting, use alt+click on target to sting them." From 72e8d36fe596fbf3976708e7d477f22d64c750eb Mon Sep 17 00:00:00 2001 From: Alek2ander Date: Fri, 13 Dec 2013 19:37:07 +0300 Subject: [PATCH 152/315] Reverted links getting disabled when client lacks permissions for them --- code/datums/datumvars.dm | 145 +++++++++++++-------------------------- 1 file changed, 49 insertions(+), 96 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index b53463e5c34..8982f59174e 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -172,56 +172,27 @@ client if(istype(D,/atom)) var/atom/A = D if(isliving(A)) - if(check_rights(R_VAREDIT,0)) - body += "[D]" - if(A.dir) - body += "
    << [dir2text(A.dir)] >>" - var/mob/living/M = A - body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" - body += {" -
    - BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - + body += "[D]" + if(A.dir) + body += "
    << [dir2text(A.dir)] >>" + var/mob/living/M = A + body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" + body += {" +
    + BRUTE:[M.getBruteLoss()] + FIRE:[M.getFireLoss()] + TOXIN:[M.getToxLoss()] + OXY:[M.getOxyLoss()] + CLONE:[M.getCloneLoss()] + BRAIN:[M.getBrainLoss()] + - "} - - else - body += "[D]" - if(A.dir) - body += "
    [dir2text(A.dir)]" - var/mob/living/M = A - body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" - body += {" -
    - BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - - - - "} - + "} else - if(check_rights(R_VAREDIT,0)) - body += "[D]" - if(A.dir) - body += "
    << [dir2text(A.dir)] >>" - - else - body += "[D]" - if(A.dir) - body += "
    [dir2text(A.dir)]" - - + body += "[D]" + if(A.dir) + body += "
    << [dir2text(A.dir)] >>" else body += "[D]" @@ -266,62 +237,44 @@ client body += "" - if(ismob(D)) body += "" + + body += "" + + if(ismob(D)) + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" body += "" - if(check_rights(R_REJUVINATE,0)) - body += "" - - - - - if(check_rights(R_VAREDIT,0)) - if(ismob(D)) + if(ishuman(D)) body += "" - body += "" - body += "" - body += "" - body += "" - if(check_rights(R_BUILDMODE,0)) - body += "" - - if(check_rights(R_FUN,0)) - body += "" - body += "" - body += "" - - if(ishuman(D)) - if(check_rights(R_SPAWN,0)) - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - body += "" - - - if(isobj(D) || ismob(D) || isturf(D)) - if(check_rights(R_FUN,0)) - body += "" - body += "" - body += "" - - if(isobj(D)) - if(check_rights(R_DEBUG|R_SERVER,0)) - body += "" - body += "" - + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + body += "" + if(isobj(D)) + body += "" + if(isobj(D) || ismob(D) || isturf(D)) + body += "" + body += "" body += "" body += "
    " - if(check_rights(R_VAREDIT,0)) - body += "E - Edit, tries to determine the variable type by itself.
    " - body += "C - Change, asks you for the var type first.
    " - body += "M - Mass modify: changes this variable for all objects of this type.

    " + body += "E - Edit, tries to determine the variable type by itself.
    " + body += "C - Change, asks you for the var type first.
    " + body += "M - Mass modify: changes this variable for all objects of this type.

    " body += "
    Search:

    " @@ -372,7 +325,7 @@ client proc/debug_variable(name, value, level, var/datum/DA = null) var/html = "" - if(DA && check_rights(R_VAREDIT,0)) + if(DA) html += "
  • (E) (C) (M) " else html += "
  • " @@ -501,7 +454,7 @@ client //Needs +VAREDIT past this point - if(check_rights(R_VAREDIT,0)) + else if(check_rights(R_VAREDIT)) //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). From 8b3aba5b2c1f949254fc2d1fe489312a87b8a2ba Mon Sep 17 00:00:00 2001 From: Miauw Date: Fri, 13 Dec 2013 19:54:59 +0100 Subject: [PATCH 153/315] Fixed condipack issues --- .../reagent_containers/food/condiment.dm | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index e4e39262204..0324e934876 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -26,11 +26,11 @@ var/datum/reagents/R = src.reagents if(!R || !R.total_volume) - user << "\red None of [src] left, oh no!" + user << "None of [src] left, oh no!" return 0 if(M == user) - M << "\blue You swallow some of contents of the [src]." + M << "You swallow some of contents of the [src]." if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) @@ -41,10 +41,10 @@ else if( istype(M, /mob/living/carbon/human) ) for(var/mob/O in viewers(world.view, user)) - O.show_message("\red [user] attempts to feed [M] [src].", 1) + O.show_message("[user] attempts to feed [M] [src].", 1) if(!do_mob(user, M)) return for(var/mob/O in viewers(world.view, user)) - O.show_message("\red [user] feeds [M] [src].", 1) + O.show_message("[user] feeds [M] [src].", 1) M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") @@ -69,26 +69,26 @@ if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. if(!target.reagents.total_volume) - user << "\red [target] is empty." + user << "[target] is empty." return if(reagents.total_volume >= reagents.maximum_volume) - user << "\red [src] is full." + user << "[src] is full." return var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) - user << "\blue You fill [src] with [trans] units of the contents of [target]." + user << "You fill [src] with [trans] units of the contents of [target]." //Something like a glass or a food item. Player probably wants to transfer TO it. else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks)) if(!reagents.total_volume) - user << "\red [src] is empty." + user << "[src] is empty." return if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "\red you can't add anymore to [target]." + user << "you can't add anymore to [target]." return var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - user << "\blue You transfer [trans] units of the condiment to [target]." + user << "You transfer [trans] units of the condiment to [target]." /obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") @@ -102,7 +102,7 @@ desc = temp_list[3] else - name = "Misc Condiment Bottle" + name = "misc Condiment Bottle" if (reagents.reagent_list.len==1) desc = "Looks like it is [main_reagent], but you are not sure." else @@ -110,7 +110,7 @@ icon_state = "mixedcondiments" else icon_state = "emptycondiment" - name = "Condiment Bottle" + name = "condiment Bottle" desc = "An empty condiment bottle." return @@ -160,9 +160,8 @@ icon_state = "condi_empty" volume = 10 amount_per_transfer_from_this = 10 - possible_transfer_amounts = 10 + possible_transfer_amounts = list(10) flags = FPRINT | TABLEPASS - possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. /obj/item/weapon/reagent_containers/food/condiment/pack/New() @@ -170,7 +169,7 @@ pixel_x = rand(-7, 7) pixel_y = rand(-7, 7) -/obj/item/weapon/reagent_containers/food/condiment/pack/attack(mob/M as mob, mob/user as mob, def_zone) //Can't feed these to people directly. +/obj/item/weapon/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. return /obj/item/weapon/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity) @@ -180,7 +179,7 @@ if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) if(!reagents.total_volume) user << "You tear open [src], but there's nothing in it." - Del() + del() return if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. @@ -207,8 +206,8 @@ //Ketchup /obj/item/weapon/reagent_containers/food/condiment/pack/ketchup - name = "Ketchup pack" - originalname = "Ketchup" + name = "ketchup pack" + originalname = "ketchup" /obj/item/weapon/reagent_containers/food/condiment/pack/ketchup/New() ..() @@ -216,8 +215,8 @@ //Hot sauce /obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce - name = "Hotsauce pack" - originalname = "Hotsauce" + name = "hotsauce pack" + originalname = "hotsauce" /obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce/New() ..() From 465bdb233497a46116c9b33d1226925d4b27842b Mon Sep 17 00:00:00 2001 From: Miauw Date: Fri, 13 Dec 2013 20:00:29 +0100 Subject: [PATCH 154/315] Compile testing is for skrubs. (Condipacks compile now) --- code/modules/reagents/reagent_containers/food/condiment.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 0324e934876..b020483d05f 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -179,16 +179,16 @@ if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) if(!reagents.total_volume) user << "You tear open [src], but there's nothing in it." - del() + del src return if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. - Del() + del src return else user << "You tear open [src] above [target] and the condiments drip onto it." src.reagents.trans_to(target, amount_per_transfer_from_this) - Del() + del src /obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() if(reagents.reagent_list.len > 0) From 520a4cc753a401ad0523c84a62bb96e086993123 Mon Sep 17 00:00:00 2001 From: Miauw Date: Fri, 13 Dec 2013 20:14:21 +0100 Subject: [PATCH 155/315] Fixed sprites. --- code/modules/reagents/reagent_containers/food/condiment.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index b020483d05f..49648ef611c 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -162,6 +162,7 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(10) flags = FPRINT | TABLEPASS + possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. /obj/item/weapon/reagent_containers/food/condiment/pack/New() From ceec8292949bb4c7dc0bbc08e6c7c230c6caa51e Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 13 Dec 2013 21:04:40 +0000 Subject: [PATCH 156/315] Tons of typo fixes and renames Centcomm to Centcom. Manual merge of #1950. --- code/controllers/supply_shuttle.dm | 6 ++-- code/datums/helper_datums/global_iterator.dm | 2 +- code/game/gamemodes/cult/ritual.dm | 4 +-- code/game/machinery/camera/tracking.dm | 2 +- .../machinery/computer/HolodeckControl.dm | 4 +-- code/game/machinery/computer/ai_core.dm | 4 +-- .../game/machinery/computer/buildandrepair.dm | 2 +- .../game/machinery/computer/communications.dm | 6 ++-- code/game/machinery/computer/medical.dm | 6 ++-- code/game/machinery/kitchen/microwave.dm | 6 ++-- code/game/machinery/kitchen/monkeyrecycler.dm | 6 ++-- code/game/mecha/equipment/tools/tools.dm | 4 +-- .../objects/items/weapons/storage/storage.dm | 2 +- code/modules/admin/topic.dm | 6 ++-- code/modules/admin/verbs/pray.dm | 2 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/clothing/under/color.dm | 26 +++++++++--------- code/modules/events/shuttle_loan.dm | 12 ++++---- code/modules/events/spacevine.dm | 4 +-- .../mob/living/silicon/ai/vox_sounds.dm | 2 +- code/modules/reagents/Chemistry-Holder.dm | 6 ++-- .../reagent_containers/food/snacks.dm | 4 +-- code/unused/powerarmor/powerarmor.dm | 2 +- .../unused/powerarmor/powerarmorcomponents.dm | 4 +-- config/admins.txt | 6 ++-- maps/MetaStation.v38N.dmm | 2 +- sound/vox_fem/{centcomm.ogg => centcom.ogg} | Bin 10016 -> 10015 bytes 27 files changed, 67 insertions(+), 65 deletions(-) rename sound/vox_fem/{centcomm.ogg => centcom.ogg} (96%) diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index c325a0a6a0d..03c96146ea8 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -529,7 +529,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
    \nSupply Points: [supply_shuttle.points]
    \n
    [supply_shuttle.moving ? "\n*Must be away to order items*
    \n
    ":supply_shuttle.at_station ? "\n*Must be away to order items*
    \n
    ":"\nOrder items
    \n
    "] [supply_shuttle.moving ? "\n*Shuttle already called*
    \n
    ":supply_shuttle.at_station ? "\nSend away
    \n
    ":"\nSend to station
    \n
    "] - [supply_shuttle.shuttle_loan ? (supply_shuttle.shuttle_loan.dispatched ? "\n*Shuttle loaned to CentComm*
    \n
    " : "\nLoan shuttle to CentComm (5 mins duration)
    \n
    ") : "\n*No pending external shuttle requests*
    \n
    "] + [supply_shuttle.shuttle_loan ? (supply_shuttle.shuttle_loan.dispatched ? "\n*Shuttle loaned to Centcom*
    \n
    " : "\nLoan shuttle to Centcom (5 mins duration)
    \n
    ") : "\n*No pending external shuttle requests*
    \n
    "] \nView requests
    \n
    \nView orders
    \n
    \nClose
    @@ -572,7 +572,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle supply_shuttle.sell() supply_shuttle.send() supply_shuttle.shuttle_loan.loan_shuttle() - temp = "The supply shuttle has been loaned to CentComm.

    Main Menu" + temp = "The supply shuttle has been loaned to Centcom.

    Main Menu" post_signal("supply") else temp = "You can not loan the supply shuttle at this time.

    Main Menu" @@ -586,7 +586,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle if(href_list["loan"] && supply_shuttle.shuttle_loan) if(!supply_shuttle.shuttle_loan.dispatched) supply_shuttle.shuttle_loan.loan_shuttle() - temp = "The supply shuttle has been loaned to CentComm.

    Main Menu" + temp = "The supply shuttle has been loaned to Centcom.

    Main Menu" post_signal("supply") else temp = "You can not loan the supply shuttle at this time.

    Main Menu" diff --git a/code/datums/helper_datums/global_iterator.dm b/code/datums/helper_datums/global_iterator.dm index 0020859f1d9..092b433b25f 100644 --- a/code/datums/helper_datums/global_iterator.dm +++ b/code/datums/helper_datums/global_iterator.dm @@ -12,7 +12,7 @@ Control functions: If autostart == TRUE, the loop will be started immediately after datum creation. start(list/arguments) - starts the loop. Takes arguments(optional) as a list, which is then used - by process() proc. Returns null if datum already active, 1 if loop started succesfully and 0 if there's + by process() proc. Returns null if datum already active, 1 if loop started successfully and 0 if there's an error in supplied arguments (not list or empty list). stop() - stops the loop. Returns null if datum is already inactive and 1 on success. diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e2f7979ed36..12df5237a1f 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -386,7 +386,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",

    Create a wall

    Invoking this rune solidifies the air above it, creating an an invisible wall. To remove the wall, simply invoke the rune again.

    Summon cultist

    - This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to succesfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.
    + This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to successfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.

    Free a cultist

    This rune unhandcuffs and unbuckles any cultist of your choice, no matter where he is. Invoking it takes heavy strain on the bodies of all chanting cultists.

    Deafen

    @@ -394,7 +394,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",

    Blind

    This rune temporarily blinds all non-cultists around you. Very robust. Use together with the deafen rune to leave your enemies completely helpless.

    Blood boil

    - This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effect when invoked. It also drains significant amount of your health when succesfully invoked.
    + This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effect when invoked. It also drains significant amount of your health when successfully invoked.

    Communicate

    Invoking this rune allows you to relay a message to all cultists on the station and nearby space objects.

    Stun

    diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index e088103fabd..9e1a8552b9d 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -54,7 +54,7 @@ var/datum/trackable/TB = new() for(var/mob/living/M in mob_list) // Easy checks first. - // Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this. + // Don't detect mobs on Centcom. Since the wizard den is on Centcom, we only need this. var/turf/T = get_turf(M) if(!T) continue diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index ef8ce8afda6..64fa4a6985e 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -226,7 +226,7 @@ if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve return for(var/mob/M in range(3,src)) - M.show_message("\b ERROR. Recalibrating projetion apparatus.") + M.show_message("\b ERROR. Recalibrating projection apparatus.") last_change = world.time return @@ -364,7 +364,7 @@ damtype = HALLOSS /obj/item/weapon/holo/esword - desc = "May the force be within you. Sorta" + desc = "May the force be with you. Sorta" icon_state = "sword0" force = 3.0 throw_speed = 1 diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 2fb27438c50..daf8d4585e7 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -263,7 +263,7 @@ That prevents a few funky behaviors. C.overlays.Cut() A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." - U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." del(T) if("NINJASUIT") var/obj/item/clothing/suit/space/space_ninja/C = src @@ -274,7 +274,7 @@ That prevents a few funky behaviors. A.loc = T.loc A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." - U << "\blue Transfer succesful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer succesful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." del(T) if("AIFIXER")//AI Fixer terminal. var/obj/machinery/computer/aifixer/T = target diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 8a39ee4a54d..fc2605949b2 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -249,7 +249,7 @@ if(src.build_path == "/obj/machinery/computer/rdconsole/core") src.name = "circuit board (RD Console - Robotics)" src.build_path = "/obj/machinery/computer/rdconsole/robotics" - user << "\blue Access protocols succesfully updated." + user << "\blue Access protocols successfully updated." else src.name = "circuit board (RD Console)" src.build_path = "/obj/machinery/computer/rdconsole/core" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 9c268cb8cce..ca522c4d35a 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -198,18 +198,18 @@ stat_msg2 = reject_bad_text(input("Line 2", "Enter Message Text", stat_msg2) as text|null, 40) src.updateDialog() - // OMG CENTCOMM LETTERHEAD + // OMG CENTCOM LETTERHEAD if("MessageCentcomm") if(src.authenticated==2) if(centcom_message_cooldown) usr << "Arrays recycling. Please stand by." return - var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") + var/input = stripped_input(usr, "Please choose a message to transmit to Centcom via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || !(usr in view(1,src))) return Centcomm_announce(input, usr) usr << "Message transmitted." - log_say("[key_name(usr)] has made a Centcomm announcement: [input]") + log_say("[key_name(usr)] has made a Centcom announcement: [input]") centcom_message_cooldown = 1 spawn(6000)//10 minute cooldown centcom_message_cooldown = 0 diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 227ce9d0695..b2a5436ef66 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -45,7 +45,7 @@ //Foreach goto(132) dat += text("
    Back", src) if(3.0) - dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) + dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From Disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) if(4.0) dat += "
    Medical Record

    " if(active1 in data_core.general) @@ -344,7 +344,7 @@ R.fields["blood_type"] = "Unknown" R.fields["b_dna"] = "Unknown" R.fields["mi_dis"] = "None" - R.fields["mi_dis_d"] = "No minor disabilities have been declared." + R.fields["mi_dis_d"] = "No minor disabilities have been diagnosed." R.fields["ma_dis"] = "None" R.fields["ma_dis_d"] = "No major disabilities have been diagnosed." R.fields["alg"] = "None" @@ -451,5 +451,5 @@ /obj/machinery/computer/med_data/laptop name = "medical laptop" - desc = "Cheap Nanotrasen Laptop." + desc = "A cheap Nanotrasen medical laptop, it functions as a medical records computer. It's bolted to the table." icon_state = "medlaptop" diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 34f7358a6aa..9809be206f9 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -186,9 +186,9 @@ items_measures[display_name] = "slab of meat" items_measures_p[display_name] = "slabs of meat" if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" + display_name = "Donk Pockets" + items_measures[display_name] = "donk pocket" + items_measures_p[display_name] = "donk pockets" if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) items_measures[display_name] = "fillet of meat" items_measures_p[display_name] = "fillets of meat" diff --git a/code/game/machinery/kitchen/monkeyrecycler.dm b/code/game/machinery/kitchen/monkeyrecycler.dm index 11de65caff6..0a681094694 100644 --- a/code/game/machinery/kitchen/monkeyrecycler.dm +++ b/code/game/machinery/kitchen/monkeyrecycler.dm @@ -1,6 +1,6 @@ /obj/machinery/monkey_recycler name = "monkey recycler" - desc = "A machine used for recycling dead monkeys into monkey cubes." + desc = "A machine used for recycling dead monkeys into monkey cubes. It requires 5 monkeys per cube." icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" layer = 2.9 @@ -29,7 +29,7 @@ playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) use_power(500) src.grinded++ - user << "\blue The machine now has [grinded] monkeys worth of material stored." + user << "\blue The machine now has [grinded] monkey\s worth of material stored." else user << "\red The machine only accepts monkeys!" @@ -38,7 +38,7 @@ /obj/machinery/monkey_recycler/attack_hand(var/mob/user as mob) if (src.stat != 0) //NOPOWER etc return - if(grinded >=5) + if(grinded >= 5) user << "\blue The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube." playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) grinded -= 5 diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index f98f7954982..2e473dfbc92 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -35,7 +35,7 @@ cargo_holder.cargo += O O.loc = chassis O.anchored = 0 - occupant_message("[target] succesfully loaded.") + occupant_message("[target] successfully loaded.") log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else occupant_message("You must hold still while handling objects.") @@ -1046,7 +1046,7 @@ cargo_holder.cargo += O O.loc = chassis O.anchored = 0 - chassis.occupant_message("[target] succesfully loaded.") + chassis.occupant_message("[target] successfully loaded.") chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else chassis.occupant_message("You must hold still while handling objects.") diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 6d3be15c089..7b37c0e9c56 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -246,7 +246,7 @@ if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) for(var/mob/M in viewers(usr, null)) if(M == usr) - usr << "You put \the [W] into [src]." + usr << "You put [W] into [src]." else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... M.show_message("[usr] puts [W] into [src].") else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 7a207b8a1e9..ffba4b4b691 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1339,11 +1339,11 @@ usr << "The person you are trying to contact is not wearing a headset" return - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcomm", "") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcom", "") if(!input) return src.owner << "You sent [input] to [H] via a secure channel." - log_admin("[src.owner] replied to [key_name(H)]'s Centcomm message with the message [input].") + log_admin("[src.owner] replied to [key_name(H)]'s Centcom message with the message [input].") message_admins("[src.owner] replied to [key_name(H)]'s Centcom message with: \"[input]\"") H << "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\"" @@ -1851,7 +1851,7 @@ if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") - command_alert("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.") + command_alert("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.") world << sound('sound/AI/commandreport.ogg') if("dorf") feedback_inc("admin_secrets_fun_used",1) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 840799f9467..6451ed11748 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -29,7 +29,7 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" + msg = "\blue CENTCOM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" admins << msg /proc/Syndicate_announce(var/text , var/mob/Sender) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8f513a82ed9..583bdcd42c7 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -162,7 +162,7 @@ /obj/item/clothing/suit/armor/centcom - name = "\improper Centcomm armor" + name = "\improper Centcom armor" desc = "A suit that protects against some damage." icon_state = "centcom" item_state = "centcom" diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 67684deccc1..dfe13854b02 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -73,84 +73,84 @@ flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/psyche - name = "psychedelic" + name = "psychedelic jumpsuit" desc = "Groovy!" icon_state = "psyche" item_color = "psyche" /obj/item/clothing/under/lightblue - name = "lightblue" + name = "lightblue jumpsuit" desc = "lightblue" icon_state = "lightblue" item_color = "lightblue" /obj/item/clothing/under/aqua - name = "aqua" + name = "aqua jumpsuit" desc = "aqua" icon_state = "aqua" item_color = "aqua" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/purple - name = "purple" + name = "purple jumpsuit" desc = "purple" icon_state = "purple" item_state = "p_suit" item_color = "purple" /obj/item/clothing/under/lightpurple - name = "lightpurple" + name = "lightpurple jumpsuit" desc = "lightpurple" icon_state = "lightpurple" item_color = "lightpurple" /obj/item/clothing/under/lightgreen - name = "lightgreen" + name = "lightgreen jumpsuit" desc = "lightgreen" icon_state = "lightgreen" item_color = "lightgreen" /obj/item/clothing/under/lightblue - name = "lightblue" + name = "lightblue jumpsuit" desc = "lightblue" icon_state = "lightblue" item_color = "lightblue" /obj/item/clothing/under/lightbrown - name = "lightbrown" + name = "lightbrown jumpsuit" desc = "lightbrown" icon_state = "lightbrown" item_color = "lightbrown" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/brown - name = "brown" + name = "brown jumpsuit" desc = "brown" icon_state = "brown" item_color = "brown" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/yellowgreen - name = "yellowgreen" + name = "yellowgreen jumpsuit" desc = "yellowgreen" icon_state = "yellowgreen" item_color = "yellowgreen" /obj/item/clothing/under/darkblue - name = "darkblue" + name = "darkblue jumpsuit" desc = "darkblue" icon_state = "darkblue" item_color = "darkblue" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/lightred - name = "lightred" + name = "lightred jumpsuit" desc = "lightred" icon_state = "lightred" item_color = "lightred" /obj/item/clothing/under/darkred - name = "darkred" + name = "darkred jumpsuit" desc = "darkred" icon_state = "darkred" item_color = "darkred" diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 9ba4b862a9d..50393dab127 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -23,18 +23,18 @@ supply_shuttle.shuttle_loan = src switch(dispatch_type) if(HIJACK_SYNDIE) - command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","CentComm Counter Intelligence") + command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","Centcom Counter Intelligence") if(RUSKY_PARTY) - command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","CentComm Russian Outreach Program") + command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","Centcom Russian Outreach Program") if(SPIDER_GIFT) - command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","CentComm Diplomatic Corps") + command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","Centcom Diplomatic Corps") if(DEPARTMENT_RESUPPLY) - command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentComm Supply Department") + command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","Centcom Supply Department") thanks_msg = "The shuttle will be returned in 5 minutes." bonus_points = 0 /datum/round_event/shuttle_loan/proc/loan_shuttle() - command_alert(thanks_msg, "Cargo shuttle commandeered by CentComm.") + command_alert(thanks_msg, "Cargo shuttle commandeered by Centcom.") dispatched = 1 supply_shuttle.points += bonus_points @@ -172,7 +172,7 @@ while(crate_types.len > 0) var/datum/supply_order/O = new /datum/supply_order() O.ordernum = supply_shuttle.ordernum - O.orderedby = "CentComm" + O.orderedby = "Centcom" supply_shuttle.shoppinglist += O var/spawn_type = crate_types[crate_types.len] diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 1054b43e4cd..fddb051241d 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -103,9 +103,9 @@ "You hear shredding and ripping.") unbuckle() else - var/text = pick("rips","tears","pulls") + var/text = pick("rip","tear","pull") user.visible_message(\ - "[user.name] [text] at the vines.",\ + "[user.name] [text]s at the vines.",\ "You [text] at the vines.",\ "You hear shredding and ripping.") return diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm index b824150bc92..3502c8d76f1 100644 --- a/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm @@ -104,7 +104,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "cargo" = 'sound/vox_fem/cargo.ogg', "ceiling" = 'sound/vox_fem/ceiling.ogg', "celsius" = 'sound/vox_fem/celsius.ogg', -"centcomm" = 'sound/vox_fem/centcomm.ogg', +"centcom" = 'sound/vox_fem/centcom.ogg', "center" = 'sound/vox_fem/center.ogg', "centi" = 'sound/vox_fem/centi.ogg', "central" = 'sound/vox_fem/central.ogg', diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 4ee36b9f107..3e22bd7a6af 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -271,9 +271,9 @@ datum feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") multiplier = max(multiplier, 1) //this shouldnt happen ... add_reagent(C.result, C.result_amount*multiplier) - + var/list/seen = viewers(4, get_turf(my_atom)) - + if(!istype(my_atom, /mob)) // No bubbling mobs for(var/mob/M in seen) M << "\blue \icon[my_atom] The solution begins to bubble." @@ -284,7 +284,7 @@ datum if(ME2.Uses <= 0) // give the notification that the slime core is dead for(var/mob/M in seen) M << "\blue \icon[my_atom] The [my_atom]'s power is consumed in the reaction." - ME2.name = "used slime extract" + ME2.name = "\improper used slime extract" ME2.desc = "This extract has been used up." playsound(get_turf(my_atom), 'sound/effects/bubbles.ogg', 80, 1) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index ea45c21d4d4..a837fab76fe 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -996,7 +996,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie name = "space twinkie" icon_state = "space_twinkie" - desc = "Guaranteed to survive longer then you will." + desc = "Guaranteed to survive longer than you will." New() ..() reagents.add_reagent("sugar", 4) @@ -2427,4 +2427,4 @@ ..() reagents.add_reagent("nutriment", 2) reagents.add_reagent("sugar", 5) - bitesize = 2 \ No newline at end of file + bitesize = 2 diff --git a/code/unused/powerarmor/powerarmor.dm b/code/unused/powerarmor/powerarmor.dm index 0c6b3b89937..2bf9d94dea2 100644 --- a/code/unused/powerarmor/powerarmor.dm +++ b/code/unused/powerarmor/powerarmor.dm @@ -268,7 +268,7 @@ obj/item/clothing/suit/powered/spawnable/regular New() servos = new /obj/item/powerarmor/servos(src) servos.parent = src - reactive = new /obj/item/powerarmor/reactive/centcomm(src) + reactive = new /obj/item/powerarmor/reactive/centcom(src) reactive.parent = src atmoseal = new /obj/item/powerarmor/atmoseal/optional/adminbus(src) atmoseal.parent = src diff --git a/code/unused/powerarmor/powerarmorcomponents.dm b/code/unused/powerarmor/powerarmorcomponents.dm index 03848b6a25d..07b525115cd 100644 --- a/code/unused/powerarmor/powerarmorcomponents.dm +++ b/code/unused/powerarmor/powerarmorcomponents.dm @@ -113,8 +113,8 @@ if(parent.shoes) parent.shoes.armor[armorvar] = parent.armor[armorvar] - centcomm - name = "CentComm power armor reactive plating" + Centcom + name = "Centcom power armor reactive plating" desc = "Pretty effective against everything, not perfect though." togglearmor = list(melee = 90, bullet = 70, laser = 60,energy = 40, bomb = 75, bio = 75, rad = 75) slowdown = 2 diff --git a/config/admins.txt b/config/admins.txt index d8b930ffaab..c4af8d06bbf 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -32,7 +32,7 @@ sieve = Game Master aranclanos = Game Master intigracy = Game Master dumpdavidson = Game Master -kazeespada = Game Master +kazeespada = Game Master malkevin = Game Master incoming = Game Master demas = Game Master @@ -43,8 +43,10 @@ crimsonvision = Game Master iamgoofball = Game Master zelacks = Game Master androidsfv = Game Master -miauw62 = Game Master +miggles = Game Master jordie0608 = Game Master s0ldi3rkr4s0 = Game Master ergosavi = Game Master vistapowa = Game Master +miauw62 = Game Master +kazeespada = Game Master \ No newline at end of file diff --git a/maps/MetaStation.v38N.dmm b/maps/MetaStation.v38N.dmm index 8ea6a108821..dd3c98214a3 100644 --- a/maps/MetaStation.v38N.dmm +++ b/maps/MetaStation.v38N.dmm @@ -7505,7 +7505,7 @@ "cOq" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOr" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOs" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"cOt" = (/obj/machinery/door/airlock/glass_security{name = "CentComm Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"cOt" = (/obj/machinery/door/airlock/glass_security{name = "Centcom Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cOu" = (/obj/machinery/door/airlock/medical{name = "Patient Room B"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) "cOv" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape/centcom) "cOw" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) diff --git a/sound/vox_fem/centcomm.ogg b/sound/vox_fem/centcom.ogg similarity index 96% rename from sound/vox_fem/centcomm.ogg rename to sound/vox_fem/centcom.ogg index 9c6404df836903b1b95c68bc6dd0903fb44f6921..886ebaa4a1d8d8f0d5499a17ee5cec565804d45d 100644 GIT binary patch delta 17 YcmZ4BH{Wl`0TK44ByprVn+>M)a)BsHR2mb&7 From f091afce3b55b02d00ba45a3d461d669ed69aba3 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 13 Dec 2013 22:26:28 +0000 Subject: [PATCH 157/315] Added auto closing to poddoors (blast doors). The syndicate shuttle's external entrance now uses it, and has a 30 second timer. Made all the poddoors on the syndicate shuttle start closed. --- code/game/machinery/doors/poddoor.dm | 6 ++++++ maps/tgstation.2.1.2.dmm | 15 +++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index ba09bd4d642..c3a724ad244 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -5,6 +5,7 @@ icon_state = "closed" explosion_resistance = 25 var/id = 1 + var/auto_close = 0 // Time in seconds to automatically close when opened, 0 if it doesn't. /obj/machinery/door/poddoor/preopen icon_state = "open" @@ -53,6 +54,11 @@ update_freelook_sight() operating = 0 + if(auto_close) + spawn(auto_close) + // Checks for being able to close are in close(). + close() + return 1 diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index a879d95cdae..bc140f3db10 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -6328,9 +6328,9 @@ "crJ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "crK" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) "crL" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"crM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters/preopen{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"crN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters/preopen{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"crO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"crM" = (/obj/machinery/door/poddoor{auto_close = 300; id = "smindicate"; name = "outer blast door"},/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"crN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"crO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "crP" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) "crQ" = (/turf/unsimulated/wall,/area/tdome/tdomeobserve) "crR" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/tdome/tdomeobserve) @@ -6428,7 +6428,7 @@ "ctF" = (/obj/structure/toilet{pixel_y = 8},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/machinery/door/window{name = "Tactical Toilet"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "ctG" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ctH" = (/obj/structure/table,/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"ctI" = (/obj/machinery/door/poddoor/preopen{id = "smindicate"; name = "outer blast door"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"ctI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "ctJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "ctK" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) "ctL" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -6440,7 +6440,6 @@ "ctR" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) "ctS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "ctT" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"ctU" = (/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_y = 26; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ctV" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "ctW" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "ctX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -8677,7 +8676,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqZcqYcqYcracrbcqYcqYcracqYcrbcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpHcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcrvcqscqtcqucpHcqbcpZcpbcoTcoTcoTcpccpZcqbcpTcqxcqycqycqzcqAcqBcqAcqCcpycpycpycpycpycpycpUcpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqZcqYcqYcqYcqYcqYcrbcqYcracrbcqYcracqYcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrxcrwcrwcqbcqgcpbcoTcoTcoTcpccqgcqbcpTcqkcqmcrycqkcqlcqlcqmcpvcrzcrAcrzcrBcrCcpgcpicpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcrDcrDcrDcrDcrDcrDcrDcqYcqYcqYcqYcqYcqYcqYcracqYcqYcrpcrbcqYcqYcqYcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcqbcqLcpbcoTcoTcoTcpccqLcqbcpTcrEcrEcrEcrEcqAcqBcqAcrFcrGcrGcrHcpvcpVcrIcrJcqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrKcrLcrMcrNcrNcrNcrOcrLcrPcqYcqYcqYcqYcrpcqYcrDcqZcrDcqZcqYcracqYcracqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrRcrScrTcrUcrVcrQcrQcpTcrEcrEcrEcrEcqkcqlcqmcpvcrWcrGcrHcpvcrXcpVcpVcpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrKcrLcrOcrNcrNcrNctIcrLcrPcqYcqYcqYcqYcrpcqYcrDcqZcrDcqZcqYcracqYcracqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrRcrScrTcrUcrVcrQcrQcpTcrEcrEcrEcrEcqkcqlcqmcpvcrWcrGcrHcpvcrXcpVcpVcpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrLcrYcrZcsacsbcsccsdcsdcrLcsecqYcqYcrDcqNcqNcsfcsgcqNcqNcrDcshcsicrDcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcsjcskcslcsmcsncsocslcskcsjcpTcspcsqcsrcsscpTaaaaaacpvcrWcrGcrHcstcpVcrIcrJcqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrLcsucrZcrZcsvcrZcrZcrZcrLcsecqYcswcqNcqNcsxcsycsycsxcqNcqNcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcskcszcsAcsmcsncsocsAcsBcskcpTcrEcsCcsDcsEcpTaaaaaacsFcsGcsHcsHcsHcsHcsHcsGcsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrLcsJcrZcrZcrZcsKcrZcsLcrLcsecrpcswcqNcsMcsMcsMcsMcsMcsMcsMcsMcqNcsNcsOcsPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcsQcskcsQcsmcsncsocsQcskcsQcpTcrEcrEcrEcrEcpTaaaaaaaaacsFcsRcsRcsRcsRcsRcsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8686,8 +8685,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcrLcrZcrZcrZcrLctscttcttcsgcqNcqNcsMctuctvcsXcsMcsMctjctwcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrQcrQcsncrQcrQcrQcrQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrKcrLcrLcrLcrLcrLcrZcrZcrZcrLctxctyctyctyctzctAcsMcsMcsMcsMcsMcsMctjctwcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcsncrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZctBcrLcrZcrZcrZcrLctCctzcsfcsgcqNcqNcsMcsXcsXcsXcsMcsMctjctDcqNctEctFcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcrQcrQcrQcrQcrQcrQcrQcrTcrQcrQcrQcrQcrQcrQcrQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZctGctHcrLcrZcrZcrZcrLcrLctIctJcrPctKcqNctLctMdcLctMctMcsMcsMcsMctNctOctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNctScqYcrLcsLcrZctGctTcrLcrZcrZcrZcrLctUcrZcrZcrLcsVcqNctVctWctXctWctYcsMcsMcsMcqNctZctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactQctQctQcubctQctQctQctQctQctQctQcubctQctQctQcuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZctGctHcrLcrZcrZcrZcrLcrLcrMctJcrPctKcqNctLctMdcLctMctMcsMcsMcsMctNctOctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNctScqYcrLcsLcrZctGctTcrLcrZcrZcrZcrLcrZcrZcrZcrLcsVcqNctVctWctXctWctYcsMcsMcsMcqNctZctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactQctQctQcubctQctQctQctQctQctQctQcubctQctQctQcuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZcrZcuccrZcrZcrZcudcrZcrZcrZcrLcswcqNcqNctkcuecufcugcqNcqNcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZcrZcuhcrZcrZcrZcuicrZcrZcujcrLcukctKcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaculculculculculculculculculculculculaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcrUcumcumcumcumcumcumcumcumcumcumcumcumcumcrScrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcrKcrLcrLcrLcrLcrLcrLcuncrZcrZcrLcrLcrLcrLcrLcrLcrPctKcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaculcuocupcuqcurcuscutculcuucuvcuwculaaaaaacuxcuxcuxcuxcuxcuxcuxcuxcuxcuycuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuycuxcuxcuxcuxcuxcuxcuxcuxcuxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 4b4735fb22f0be64818c26a16aaf1ed52adbd264 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 13 Dec 2013 22:51:44 +0000 Subject: [PATCH 158/315] Made changes based on feedback. The pen/hypo/borghypo doesn't give a poke message when it fails to inject someone wearing protective gear. Fixed a typo. Reworded the can_inject() error message for humans so it makes sense with a normal pen. Made the combat hypo (nuke ops item) ignore protective gear, to allow syndies to heal their comrades. --- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 2 +- code/modules/paperwork/pen.dm | 13 +++++++------ .../reagents/reagent_containers/borghydro.dm | 2 +- .../reagents/reagent_containers/hypospray.dm | 7 +++++-- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ee06c0975b6..d7c12b49d9d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -481,4 +481,4 @@ . = 0 if(!. && error_msg && user) // Might need re-wording. - user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into." \ No newline at end of file + user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"]." \ No newline at end of file diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index c172f4f7b05..1b237118747 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -111,7 +111,7 @@ /mob/living/silicon/can_inject(var/mob/user, var/error_msg) if(error_msg) - user << "The outter shell is too tough." + user << "Their outer shell is too tough." return 0 /mob/living/silicon/IsAdvancedToolUser() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index ca88d8a7790..3c4f5eb0a06 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -42,12 +42,14 @@ colour = "white" -/obj/item/weapon/pen/attack(mob/M, mob/user) - if(!ismob(M)) +/obj/item/weapon/pen/attack(mob/living/M, mob/user) + if(!istype(M)) return - user << "You stab [M] with the pen." - M << "\red You feel a tiny prick!" + if(M.can_inject(user, 1)) + user << "You stab [M] with the pen." + M << "\red You feel a tiny prick!" + . = 1 M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [name] to stab [M.name] ([M.ckey])") @@ -64,8 +66,7 @@ /obj/item/weapon/pen/paralysis/attack(mob/living/M, mob/user) if(!istype(M)) return - ..() - if(M.can_inject(user, 1)) + if(..()) if(reagents.total_volume) if(M.reagents) reagents.trans_to(M, 50) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 551ca8422d0..b823d37fc95 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -90,8 +90,8 @@ Borg Hypospray return if (!( istype(M) )) return - M << "You feel a tiny prick!" if (R.total_volume && M.can_inject(user, 1)) + M << "You feel a tiny prick!" user << "You inject [M] with the injector." R.reaction(M, INGEST) if(M.reagents) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 9925a47518c..121e512f137 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -9,6 +9,7 @@ possible_transfer_amounts = null flags = FPRINT | TABLEPASS | OPENCONTAINER slot_flags = SLOT_BELT + var/ignore_flags = 0 /obj/item/weapon/reagent_containers/hypospray/attack_paw(mob/user) return attack_hand(user) @@ -25,8 +26,9 @@ return if(!istype(M)) return - M << "You feel a tiny prick!" - if(reagents.total_volume && M.can_inject(user, 1)) + + if(reagents.total_volume && (M.can_inject(user, 1) || ignore_flags)) + M << "You feel a tiny prick!" user << "You inject [M] with [src]." reagents.reaction(M, INGEST) @@ -51,6 +53,7 @@ amount_per_transfer_from_this = 10 icon_state = "combat_hypo" volume = 60 + ignore_flags = 1 // So they can heal their comrades. /obj/item/weapon/reagent_containers/hypospray/combat/New() ..() From 4bfc5be6d4b0772508b19af29968a3e3ac1f75ed Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 13 Dec 2013 22:59:11 +0000 Subject: [PATCH 159/315] * Quick fix to combat hypos still giving an error message when they are able to inject. --- code/modules/reagents/reagent_containers/hypospray.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 121e512f137..d3f28656304 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -27,7 +27,7 @@ if(!istype(M)) return - if(reagents.total_volume && (M.can_inject(user, 1) || ignore_flags)) + if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message. M << "You feel a tiny prick!" user << "You inject [M] with [src]." From 045e68f1cf1cdcf58523c4cb0ea79c3d4565735a Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sat, 14 Dec 2013 00:49:27 +0000 Subject: [PATCH 160/315] Added the friday the 13th event. It will basically cut the event frequency in half to simulate unluckiness. --- code/modules/events/holiday/friday13th.dm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 code/modules/events/holiday/friday13th.dm diff --git a/code/modules/events/holiday/friday13th.dm b/code/modules/events/holiday/friday13th.dm new file mode 100644 index 00000000000..ac28aed256d --- /dev/null +++ b/code/modules/events/holiday/friday13th.dm @@ -0,0 +1,18 @@ +// Basically, cut the event frequency in half to simulate unluckiness. + +/datum/round_event_control/fridaythethirteen + name = "Friday the 13th" + holidayID = "Friday the 13th" + typepath = /datum/round_event/fridaythethirteen + weight = -1 + max_occurrences = 1 + earliest_start = 0 + +/datum/round_event/fridaythethirteen/start() + //Very unlucky, cut the frequency of events in half. + events.frequency_lower /= 2 + events.frequency_upper /= 2 + +/datum/round_event/fridaythethirteen/announce() + for(var/mob/living/L in player_list) + L << "You are feeling unlucky today." \ No newline at end of file From d2eee6572e045cfe39e8cfc42dfb5493d7ab5b53 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Fri, 13 Dec 2013 21:18:09 -0500 Subject: [PATCH 161/315] Adds and removes some checks in transit tubes Adds some safety checks when stuffing people in transit tubes Removes intent check when yanking people out of tubes because it complicates things --- code/game/objects/structures/transit_tubes.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 22f20194900..206b03e8e53 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -121,7 +121,7 @@ obj/structure/ex_act(severity) open_animation() else if(icon_state == "open") - if(pod.contents.len && user.loc != pod && intent_numeric(user.a_intent) > 1) + if(pod.contents.len && user.loc != pod) user.visible_message("[user] starts emptying [pod]'s contents onto the floor!") if(do_after(user, 40)) //So it doesn't default to close_animation() on fail if(pod.loc == loc) @@ -143,7 +143,7 @@ obj/structure/ex_act(severity) var/mob/GM = G.affecting for(var/obj/structure/transit_tube_pod/pod in loc) pod.visible_message("[user] starts putting [GM] into the [pod]!") - if(do_after(user, 60)) + if(do_after(user, 60) && GM && G && G.affecting == GM) GM.Weaken(5) src.Bumped(GM) del(G) From 834ae673f1a8984c614c1a0d4d5e993666d662cb Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 14 Dec 2013 17:28:24 +0200 Subject: [PATCH 162/315] usr null checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - added some null checks in places where they might be needed, made use of existing null checks where possible - changed text formatting to where easily done - changed a few pixels so cloning pod doesn’t bother me anymore --- code/game/dna.dm | 58 +++++++++++++++++---------------- code/game/machinery/cloning.dm | 6 ++-- icons/obj/cloning.dmi | Bin 9878 -> 9868 bytes 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index ada6aab647f..17ca55751fb 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -240,54 +240,54 @@ if(blocks[NEARSIGHTEDBLOCK]) M.disabilities |= NEARSIGHTED - M << "\red Your eyes feel strange." + M << "Your eyes feel strange." if(blocks[EPILEPSYBLOCK]) M.disabilities |= EPILEPSY - M << "\red You get a headache." + M << "You get a headache." if(blocks[STRANGEBLOCK]) - M << "\red You feel strange." + M << "You feel strange." if(prob(95)) if(prob(50)) randmutb(M) else randmuti(M) else randmutg(M) if(blocks[COUGHBLOCK]) M.disabilities |= COUGHING - M << "\red You start coughing." + M << "You start coughing." if(blocks[CLUMSYBLOCK]) - M << "\red You feel lightheaded." + M << "You feel lightheaded." M.mutations |= CLUMSY if(blocks[TOURETTESBLOCK]) M.disabilities |= TOURETTES - M << "\red You twitch." + M << "You twitch." if(blocks[NERVOUSBLOCK]) M.disabilities |= NERVOUS - M << "\red You feel nervous." + M << "You feel nervous." if(blocks[DEAFBLOCK]) M.sdisabilities |= DEAF M.ear_deaf = 1 - M << "\red You can't seem to hear anything..." + M << "You can't seem to hear anything." if(blocks[BLINDBLOCK]) M.sdisabilities |= BLIND - M << "\red You can't seem to see anything." + M << "You can't seem to see anything." if(blocks[HULKBLOCK]) if(inj || prob(10)) M.mutations |= HULK - M << "\blue Your muscles hurt." + M << "Your muscles hurt." if(blocks[XRAYBLOCK]) if(inj || prob(30)) M.mutations |= XRAY - M << "\blue The walls suddenly disappear." + M << "The walls suddenly disappear." M.sight |= SEE_MOBS|SEE_OBJS|SEE_TURFS M.see_in_dark = 8 M.see_invisible = SEE_INVISIBLE_LEVEL_TWO if(blocks[FIREBLOCK]) if(inj || prob(30)) M.mutations |= COLD_RESISTANCE - M << "\blue Your body feels warm." + M << "Your body feels warm." if(blocks[TELEBLOCK]) if(inj || prob(25)) M.mutations |= TK - M << "\blue You feel smarter." + M << "You feel smarter." /* If you want the new mutations to work, UNCOMMENT THIS. @@ -349,9 +349,11 @@ component_parts += new /obj/item/weapon/cable_coil(null, 1) -/obj/machinery/dna_scannernew/proc/toggle_open() - if(open) return close() - else return open() +/obj/machinery/dna_scannernew/proc/toggle_open(mob/user=usr) + if(!user) + return + if(open) return close(user) + else return open(user) /obj/machinery/dna_scannernew/container_resist() var/mob/living/user = usr @@ -362,8 +364,7 @@ user.next_move = world.time + 100 user.last_special = world.time + 100 user << "You lean on the back of [src] and start pushing the door open. (this will take about [breakout_time] minutes.)" - for(var/mob/O in viewers(src)) - O << "You hear a metallic creaking from [src]!" + user.visible_message("You hear a metallic creaking from [src]!") if(do_after(user,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds if(!user || user.stat != CONSCIOUS || user.loc != src || open || !locked) @@ -373,12 +374,12 @@ visible_message("[user] successfully broke out of [src]!") user << "You successfully break out of [src]!" - open() + open(user) -/obj/machinery/dna_scannernew/proc/close() +/obj/machinery/dna_scannernew/proc/close(mob/user) if(open) if(panel_open) - usr << "Close the maintenance panel first." + user << "Close the maintenance panel first." return 0 open = 0 density = 1 @@ -409,13 +410,13 @@ return 1 -/obj/machinery/dna_scannernew/proc/open() +/obj/machinery/dna_scannernew/proc/open(mob/user) if(!open) if(panel_open) - usr << "Close the maintenance panel first." + user << "Close the maintenance panel first." return if(locked) - usr << "The bolts are locked down, securing the door shut." + user << "The bolts are locked down, securing the door shut." return var/turf/T = get_turf(src) if(T) @@ -433,7 +434,7 @@ /obj/machinery/dna_scannernew/relaymove(mob/user as mob) if(user.stat) return - open() + open(user) return /obj/machinery/dna_scannernew/attackby(obj/item/weapon/grab/G, mob/user) @@ -473,8 +474,9 @@ del(G) /obj/machinery/dna_scannernew/attack_hand(mob/user) - if(..()) return - toggle_open() + if(..()) + return + toggle_open(user) add_fingerprint(user) @@ -780,7 +782,7 @@ if("togglelock") if(connected) connected.locked = !connected.locked if("toggleopen") - if(connected) connected.toggle_open() + if(connected) connected.toggle_open(usr) if("setduration") if(!num) num = round(input(usr, "Choose pulse duration:", "Input an Integer", null) as num|null) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 3e6de01e367..2498538e4f2 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -256,12 +256,12 @@ if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (!src.check_access(W)) - user << "\red Access Denied." + user << "Access Denied." return if ((!src.locked) || (isnull(src.occupant))) return if ((src.occupant.health < -20) && (src.occupant.stat != 2)) - user << "\red Access Refused." + user << "Access Refused." return else src.locked = 0 @@ -292,6 +292,8 @@ set category = "Object" set src in oview(1) + if(!usr) + return if (usr.stat != 0) return src.go_out() diff --git a/icons/obj/cloning.dmi b/icons/obj/cloning.dmi index ada68297367a8373b90abe6ef42754f82085d751..a65c2a43f786ea808c670db8c7afbb4b3a15a07a 100644 GIT binary patch delta 9482 zcmZvh1yCGa)9-PTV8IERAi*WLFYXcuwgiGh2*Ewb5CV$?3GNmw0fL1GTVQc_LV(~b z4vQ@T78dsMykC9ye)ra$s;Q~!)6-{8SI?zcV)2bmx4tcReT=RorT~KkieR180<-G^G0FWoo>Fazl|qJd+&nCq*=}8 zNB5~8sT+vtS+#z7MKb}Ev+kC+R~9h+xLK$#&qMsUA%8`Y&q`}`H=R*0Z(i18Dwa2s zA+UK~O7#6f`ec1giY|lS^!! z@E8Mvo`WZbN3zuyPSn`gRW!T~p)3_;Men3zN;E{JA*nP5TcQ;e6#CDf5XZBYO`Gvc z$zWl>HD~N|t{eu?Eb+a&2)%l{cF2H}x`(293@cAw@Sz>URcF?xz^wzw;F>}vzl#Ib z@G=W-rstja1PEUUj>zCh;$QsD)O7pPtF!#~dlf?}EGlC*di}FA$dC7bI*7Q_lwOG$ zfm!qPMCjvFs9tGQ_z{oE)|z#Vujysu$Yfot?&@$x14`A=AR0qt*B)_f{#ULIkZ$|ue#nn@mfF=cx*?t3{J z#vB_PSU13jH$~0gvX55U(Wgnq5$dXX(qj_|f9XH(6pTf`%jOjod>jA;x74FT;*~q|kT3TZfdPHt7W~pzd&h9p!7(_=m z$_s<~3$hjAF$EPrxzQioBrC31SOCco>SU#fH35gEiw8weAS^&Op@<<2;y52kPHVD&AxZ+Qq(^ymX)kna) z!W&Z1>z>P7=Ws)>)I*NNuBrSO@8UR~RT3{bMxN?>5@Z;C!ubc(ML6HEMNLmDMYcio z3)snmc`n-FX)jCWQt-w zJ3=P9|N0~VU(d|E`|Pq{pmR`qvjKbX8xSj36Ku?s)vM3J_iLQoF%D?H#Shd(0whIdjUrSkbSc0 z74hWtf{T3pt-RHjP4>yR`to~A@Or?6^jn4Wx<^FaTSirbNnhNqJ;|4yLeSUB5<8#d04rCzBjrxTD$jC|NL0?3yDgUBPDvzxC+FeAJ?ds8NBo_u?vm>~}v1h(yI} zFSNQcePQ@_uCMIHgTjBV=nKmdFpuG+H3yEOwPt)~eBz?Z3dY`&M88ucbGKEvII{l| zXfFq!r4%U55$EbL#1m=n9%v;+CkoPT`cU|U)l>*4k!M+dm-%^nzl=_n$M>Vpo}WM2 z!M(!8A(Ok(SV7%L<7Z!r8jZsF6H+ z8lhY(;vP!kmKgtbzH0T|&o3H-=e{GO&L`f(_4-8>^fWF!g6J4F#?fkjB?ll4hXr;5 z?=9|+J0&v#mxg_P8@R)3e)#Re3Wl1P*|<;4S%81VJNk-hwvkvVA_6`W2Aa>*IX!M_ zs(f^*|73vg1U5G2k!q*zuw0UHjAm3a>2h?M2g~ZdL;59s! zr~DkALGK$5A2~h8#+v;I*a9PsV!8fDPS}nSK&`odU)IdpfN{xAWPt|b?o@&!pjfLn zatD?wv~Jqqz7Q#IB!Dg_u#dpU2_Qvw-t%=}1bjru(MPAun--hX$iP6=*!RgB;89eM znrp}lPCkB{1@6+pn6Pl9Hj|*c&fSwF<4P}_s?OEvE zmX(0b?KX(5^zV~(;0{@!=#j16BGVLSILEbiDt*@NKW~YLc8FTQtisL(Qw~8+`Tph? z6YrjxoA@pXaQ1P8#xk0ikgQmT&d9VZq0$fP{*?K~A2hJfYt_l%S1+CsUadW2nBWw- z^KPy0=(qh7yu_FVkol0wO@#N!S2ea-kbR(oiCqL;mE$hDylZc6|J`;*_74Vf3yXY| zuyCi|&Ulbq=|0SN7<}eUE7DXJp0nCah4lme1+4dQK3rU&b~SAF$QrIa;Uq5Cc9w2e zKiGw)mdM!f6j+;fI<_7+rQchb!p^{z=_h(m_$G=)JTIXfm><>;^;=UI6vHSV-#l>X zxWYj*d$UyI9KEoD0o~uP&=+7h$ZzWJIWdM!5KXy*VHg3tHT4jn(#lZ8bR|~6S)F<_ zG6ROAK;%*=gc5ug+TlC~5*|0*;mqhx=)Xa6VzsW$U>`pbtPMf` z^+Ik{8v{yZr@ku+Z?0VQ0@uUVvD59OaXpUREv0sFgD<0sgOM-^ogvt^OwD#YCQC3I z1_&TP4nT|3gj~lYum#mJSIb{t^g;^fPq=u4xNGuEAL}y@Ml1j3kQ6kY}pN z*NCX6vZ)Jx`{i$5)z_UIb6Ue1u3Xqu^T~+kQEHBpBk8neIcfnaGp?W?OKX)!80UDUsw!}V*&7=e z1NLU45(h8SGRwFDSbbkv#;s-a&>@GyZxX&Q#~}LtX=2jG|$$K ze46X%r`i+{o~hXxMIf*?yoH0>M=gp>Rc~6?3Yx?u(>T4ls;(91wJLb@j3)7Pi?^DU zInlu4&~CQ)a^tTO7>xf3cNwcH^t-^!Zo&nVk9C4JvGLb(cb3vSVfx#xs6^A1XXyLf zUpBtSlz>mVh!U|b?Bj^WVRT{3V+`aenoG=N$;8=SYvIb8K)S~xy^T}4@R=As%~59| z!a`SsjDcK-=H&N;PPS8j#8O0N+{Q(!eHkh?wRipeF#|)F*I25W z>~4OVL$I4qD1KP*to6_++u!ZE zxIE=}pD;{9lk4tcH#ggVn5Jfm*{gETexXI zX?((1KxiutaB+n)G$EBt`s$*uE~rg^fHmI$%>w~dZ$!Q?-DL0$x51A6VPje3kI)NS zJFmbygiH714r183cZNQyYMT9fuWu+my_T?^9dI{4OWXKSwQX#wJdT`Uih&)}feO!? z;6JLKi_zP1@rcwoKdV8}OgwQ*wj;N{0e3A+pZH|oV*;sZne#4GjYI|5*Pm-mm6I~^Dx)cUcHui z)%UGBJZEo>%1A2S%~ydnHd|wD+V{L+Flywh*{hb31Ya&d$?H8IJXkR?W!bg;!IAj* zS@X$O(Jkpjt|o%8(^5xRT**2iu+>FW6zJz}G^yat@fx1UsQ2o;)dxY0J=Q_%>{y0L zLR0Nyy)x#t`-JuQX1@5`G{vrSZ?e;2ASaoHvnVULOJ)=XZ_^e7 zRPFw__l!fu);aHb>TzHEXJmf{+(2n@<>|uW$BCV?iV9-QrnPg(69#(r70=B>0Dquj znQSQrT1Jj}$XUee1p&4C3ule3c6P( zu@r)DSe{tIsG&~_hlPhqG^C%D*H<&U7<>oIt7|=M6q9{>ZC&)p z!n$7K=-1XJ3`D&&fla@3BFpZH z6m5Kx%r-AazbE(12>hHPhMY+RYO89(b;|i59nZTpMUOv5fFVxQUG?x7=-j5-3#`jp z=}@H5oH^nAZ7d=!8*#|hogBN9S~J4U#Zv~rU7B%2gT>t1I8A>di!x3>;IXT6(8p|0 zRY~IW(!6K_KP<6lC zlFDqAkK3&{I2nZeVcmS2>0xCxewCeB*sJl<_=qDv^<_MlmP_WV2|)4%B})D(QUrCL zC?6$Mlj<=bl${AZG(#DgkWa$-ZEKrYG@Fw6$foC{bT0Gtcv7(}U2!ED3B=0Bw;D#q zzrxd&iJPJ%+47*pLc1b0GE{8jvT0&ers=Fvj91;#*sxEwi77UpHQ?o|+7%Aby&4f3 zQ&WO6*$Hau#R2^EK=McwPr0+zoKn(2&y7F;*&?%5)W|{UQ7#AGj_G64fVy5{s!Cob z^e_dslyIm*5Kix9Y^rJct3Y!x%OL1f8r7Dr@4aX3V-JF$2T=(iEQ_Go$gIfY{?i8c zsET65G1gMx#AB@IDA(xstkad4(|Gx2gY+ijbM<#`&Ep&tUuf}U z#qfO$OFW|WryvgaZoZ=75sE*ok?hieszsHm9R0BhxuzK24qBLL%kbdR0ahP`xVpZ- zUj8Zi3t#d87)I*stV)cEtp;ZrncKYQk^rC8culPHTry%+W5)fP(Ptx`Zs38f3@dr( zo33$bCWo!CkE*kH2VzyWRQ{d%x-EhJsjq4c!AIMp+T%~f?eErLtvA#b@`B-uK@B|R z9O|wQ$LTp$O+KaCGQZtZ!6~=qUJlGY1 zV=Q0ogXZ&B{?o0VAXBSg0#yORBiq$q)G++i*&3>qsgL`DoHo2TosLa#Z|-K)TA7yRk=cfXdrLs8?=7*E!H;Ef45VibBI8J3%T zHJBl-_oNSj-)OM@_^lxgHl7@n%64ECi5Vp$b;>ezw+M zr$Ii9V*edtc^#Hd^MsjRmFtCjSUT0G1hJr&O&srdApyF!yGa68+?Jr1vBq)9bf4iC zCXlNA^UL^2F>6x%!|<>U&R*&QIVRXdV$;gVV5KV+tyI}Jv7j_5{_{JB;ub*x3Ab{f zGkloB;*H2K?DWbczXN5U1Pxk%Ri`cg2>DhwI8~9GPQ~5zM@itcB_LhlZMwl86rknQ6&*MW+vp5E3Q%*Q#a zxY;f7fluEh4PSQdb1B8EooWet@o54T4iB0N4PKl3SjhO*szKDuf}*k>jaf05wEoft zm(tq2;V$k`p2x>_SNd8L2$Fm4<;}a>Ri7y6c`gejw2IHUhVbBYVJWxEsjwN)@8kUX zZ88Zh%WJP}5}}BhTAa$638}>oK78FyVFw?;wUv>zLy7xHQXPe_(H`l!Gp6*L4>%X%A{ zF+Qw{njv3`5ORk%i;f#H0J}M9#>eEO2UB%)d6wG?1Y$`~^EHHbdPe9T#Yi&wrH5Sm ze6_QS~RS+|k>F4ETBW*g=~S-kjSd<5i5cRrSQ~fh3Iz{K~g%CHC=ufKp_%MASn(+}xAX zlo#xgjg8n9dKD!Be0`6Sy^iWW ze2?g9dM}X2v@ErCy!21vTCs}Fb7%Pv!#|T4K25V8Hu8Y134bO7F?CS zorTsfLpFk^yFMg;?Z!_BWr36S`-vK|1e*-Q%gcz%gQBHPkNTf}-q$`&Bb;K?yYGgi zhKnc3+QwhQ2b)>C{k)|d$tA)zf9l-0>fIlls;>McmL(l_`r}&_5_hF# zK7s$`h!a1srtHL=TyS&)2TYYlf;u9SDWr}+;#w*QoXyC2eR$|q3qfwcY{pGj*+I+Z zW~N9@Tg@0=6M)6+!2~|A#h8_yqURVGFl&Hv(VF0F@y-N}WrYaFjc=IJeEG;~q$_R< zcu{mR%&!L~+C~y`0E96uy=lvij?|PSJmGVT`k{PT-!3=X+FVUD1Xv1UKpaR1E{GAZ z$SZ}mqU_IR^1Su6x8c(6VJp3-V+5R6HFB`e8J6C_dJi16_dL6mNyKz{tJD1I98Sn; zC4h2WlmXB3=nrAguRII6cF>;|0nr<)I%#b9cm~m(oUO#?8c-sQdwAc&V{)sMhsQ6} z7rB`{7907OME&JiK6uKoT%82xyDyXaGZ|SUu3W?>vv1Ho>YG-98b$vc3*QkhV9fMu zbkzaya%L!amXSuKaq1B4Wfm$MR`d+n3+r*4unO(C@8$0sViOcL%Thb-gK(dK(6*D^ z&UG7kG8F2*Pha18eXqX5><-ET?mjBI2CwRc+DOcVaaY9NA67+Hu{f|nSco48m42!> zPbCPhe08b*X~SN&45!&+lTP0TSdVl<0qOErYc#JJN~zPn)sLQ>aIM#|S9&9UYvFSmg9{Ba|R{`;mu1hc1_jI3YQVF^N6_-kD zw1Uq(qA+a6hEr5D{3V4#sw>)aD(kWI7Zx{Z6gJt`ss$D$dy!tV#YeA?qYvqK*r2TiCa>96g*}v{itU+&@BG>=s{rY8$#HHDe z12WvPVHEG<%BazMj|~u=w*r(va9H(6s-c}6?jPSa7l;1XZBLXWWU`!;)hrL@%R%Xw zn6^YPe&qLHE05Py39m3$24|Z!^_8SYBimzQkK&Ces+ayxL2sJvK;HW_dKI7?v=1Q? zyF)IiK){2(U^ir4sAJZ^{%#izQmaPI*`L8@&*Tyx)D5AV*^vXPEJFagKs!{F-%EG9 z!Iavc@2BFNea8TNoA6gQhCMMJ#30RwqbJ%?St*jjB9KObIxDq$mJ|*DOM{G8KknQ4 zRIzVP(2wk~6x#&ZhDwIr1C>;Kp89cp32K0P%}y92ZZi~j3V1|ZfZ7k)MEXI=x3Ijb zv4=pJ?=N&%V=o=X5IrP_RqH#_YB#Ju*Xl2mJqP-3(TLi6gwEQUfYgtZ1-uPyMj^Ln zW@j~(dn_&xs~JON{u}io^J2LF@w%_UNOTzfT~);wmfAwF@iS1$6cb0v8q;GydY^hq zB#Gtd$0+7db|ue55L5sEu)7U;nnP6GWi<1RI%m?=fy==*^-1t~$4O^<>x# z0;;=RW2x+%coQkmTnL_hA!RLq>}h90@dDnu9}CzVd`*}7-DPnSLo--zuLjhY{Q8+_ zciu;>#G)ftn74;k4kLqDCF_S_bCDzC=OG^Xd&4B?9!LyoE8B*3Fi1MORvqKg*dAwQDt4w-R$P zfq+MxRfXe@R-f5moTaS0upLd0Rc@RRVU!^uuiCR1cP z8YwSXm{U%e2=22<12oP44Z|O+Hd(q=F!ApQxvaDry`~up$E8V4ySIgTt|FQ!VmN9S zs?JFgr&%5qSJ1m_H6l73Lqw62Ah{rZ>Qz6st8r80)!16C=A(_o(P z&_B@Yg{js8{-8e#E3GUqIM%tnPPYU@xDVcfJvze^Du9POi_`UqXJKSQ1^N=O>e%ZF zVWlLlWn5*^CjZm@?K~f{i2I2;d=X+`DVri90WMxJzsWFK-bhz@)`vnf>8%ejH$RT` zJpRTI`==s<*j&=8^g{{`DpqU7SNq?^7?P-v&w^ts$m2N!1A9!wT~{MhwTiyeSMVk2 zl|PB^2Q*{3*^Ngkj+F5D-fG1-XMKE`IoEVt#JcMQ=z|2S7FA@qaZHTt`AodWlXPMu z>@-DnCn}Ea^CMc?n~DmU-%fA$36k@kdx~l9E^S;ENpwY3IieU)+T~Je29DP z-agxW)Orv%A^_#%yeav=(OKY{%>vy$t=T1j*c2W}J4-=xwuyeOHGLev$hY(H@xk)w z4w~VU8(SOo{!Fe)Za@{IRvi5`Q=+5#dx?EoD!W}1c#7mp>8bh*17J-@BdV%8=S$26 z9U6#87{ab;yTBxDxk$}GmF^I`~w1kZ8FAUB*t?|4t==*J}ylq3D*ArPs8`M7(VR$wvkj}gvZRl zsl${CAG)l^M}w;~fZNYRvB~FDFq356q*PZRWvqDUCzH&VD8oPpNw9oe`yXyZVErs> zTp2Idwf!~QNiSV(aq*|tR%u33LJkfNtQ6LKzLBhq`6l= zsb{#Ni$P~Xik)rYzc9~^;mk0Z*&v6| zf2j@SXU?l@hK#S(AC7Sgu6J4me~a@G7CKD$byT>mZ$yGNa7IYX5TquUty3K)vYNIn zUD~~JpH7)jCcvp{>F3*HBe2k1Xzv{7&bHu}jzyHUT4&AO?_iLSkes^gn~-}T(|k}A z^e>YcB}?yd6bDXgB;2?4SKr}VH*BYjhU}6B{|e&Bk-kepx#cybuJrC290+a_1{3c8 ze(f&i2D|kWXgg724nFC!lUEHGnw5C6lkX+2oi6$eSn+srw8*@9!nSGm+IiEqucJjV9#35eD#o z7zU{<)6jaYi2pjPtQ(nM6K&6ZRVdol+6}i7k(y1~v~J{pgxH5HHh2X8U$79<(^0I! z?GZHTOQI~X>$X73n5ij~hXcD=xFkJDxPSYl8s)gx|5x<4`yZ-*rb|-S{)Z3d{tm-N z)W$fEHT|Yvu11$F2>)e~75I12DL((ka9yM!ARu_0LVmwL2(WW^0dKrGl2iNld`=Gr zj(XtSUmF_Y?m7gp{tc8{T~i*JGReUJfY7u2S(pD2%q0p`t_OQ6AOA-&*INiLV_#^P zvOszdQTUA&7Q4&*w`k7!^gp7xJVA-5MwAtYr5S{K_gnU^xI22EME2%zCKtHlG;6=+ zPUiy;=gW=pf$LNApnhwYHwzsov2+2MwC%i{nD~i^a&rjxzn>3w?j|o!mU4cmzZXEs eb8q-rfgx+y>3n54Z^n&ve`%`fsZ=XjhyO1x=jJ8= delta 9511 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 From 088b5afe9376b838279ab2969f5697c9df13ceea Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 14 Dec 2013 17:49:51 +0200 Subject: [PATCH 163/315] Following code standards - One statement per line. --- code/game/objects/structures/janicart.dm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 342d2288f6c..b38c5be4ad6 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -41,6 +41,7 @@ user << "You put [I] into [src]." return I + /obj/structure/janitorialcart/attackby(obj/item/I, mob/user) var/fail_msg = "There is already one of those in [src]." @@ -48,12 +49,14 @@ if(I.reagents.total_volume < I.reagents.maximum_volume) //if it's not completely soaked we assume they want to wet it, otherwise store it wet_mop(I, user) return - if(isrobot(user)) + if(isrobot(user)) // robots can wet their mop, but not put it in the cart. user << "You are a robot. No." return if(!mymop) mymop=put_in_cart(I,user) - else user << fail_msg; return + else + user << fail_msg + return else if(isrobot(user)) @@ -62,15 +65,21 @@ else if(istype(I, /obj/item/weapon/storage/bag/trash)) if(!mybag) mybag=put_in_cart(I, user) - else user << fail_msg; return + else + user << fail_msg + return else if(istype(I, /obj/item/weapon/reagent_containers/spray)) if(!myspray) myspray=put_in_cart(I, user) - else user << fail_msg; return + else + user << fail_msg + return else if(istype(I, /obj/item/device/lightreplacer)) if(!myreplacer) myreplacer = put_in_cart(I,user) - else user << fail_msg; return + else + user << fail_msg + return else if(istype(I, /obj/item/weapon/caution)) if(signs < 4) put_in_cart(I, user) From 119438bd3ace5328cb050fce9286c9b69a9aaa22 Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Sat, 14 Dec 2013 20:10:08 +0100 Subject: [PATCH 164/315] Includes turbine.dm in .dme file --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index e37f31b61a0..f15a189877d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1057,6 +1057,7 @@ #include "code\modules\power\switch.dm" #include "code\modules\power\terminal.dm" #include "code\modules\power\tracker.dm" +#include "code\modules\power\turbine.dm" #include "code\modules\power\antimatter\containment_jar.dm" #include "code\modules\power\antimatter\control.dm" #include "code\modules\power\antimatter\shielding.dm" From 279e84f12bbd2d3b08762eb15119d302bacebe74 Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Sat, 14 Dec 2013 20:16:25 +0100 Subject: [PATCH 165/315] Updates turbine.dm to bypass the 'code\modules\power\turbine.dm:234:error: interact: duplicate definition' --- code/modules/power/turbine.dm | 69 ++++++++++++++++------------------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index faea0bb278d..33d5969a6cd 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -217,61 +217,56 @@ /obj/machinery/power/turbine/attack_ai(mob/user) - if(stat & (BROKEN|NOPOWER)) - return + if(stat & (BROKEN|NOPOWER)) + return - interact(user) + interact(user) + +// Only non-AI mobs (This is a way to get over a duplicate declaration error! Thanks Metacide!) /obj/machinery/power/turbine/attack_hand(mob/user) - add_fingerprint(user) + add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) - return + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) + user.machine = null + user << browse(null, "window=turbine") + return - interact(user) + user.machine = src -/obj/machinery/power/turbine/proc/interact(mob/user) + var/t = "Gas Turbine Generator
    "
     
    -        if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) )
    -                user.machine = null
    -                user << browse(null, "window=turbine")
    -                return
    +	t += "Generated power : [round(lastgen)] W

    " - user.machine = src + t += "Turbine: [round(compressor.rpm)] RPM
    " - var/t = "Gas Turbine Generator
    "
    +	t += "Starter: [ compressor.starter ? "Off On" : "Off On"]"
     
    -        t += "Generated power : [round(lastgen)] W

    " + t += "

    Close" - t += "Turbine: [round(compressor.rpm)] RPM
    " + t += "
    " + user << browse(t, "window=turbine") + onclose(user, "turbine") - t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" - - t += "

    Close" - - t += "
    " - user << browse(t, "window=turbine") - onclose(user, "turbine") - - return + return /obj/machinery/power/turbine/Topic(href, href_list) - if(..()) - return + if(..()) + return - if( href_list["close"] ) - usr << browse(null, "window=turbine") - usr.machine = null - return + if( href_list["close"] ) + usr << browse(null, "window=turbine") + usr.machine = null + return - else if( href_list["str"] ) - compressor.starter = !compressor.starter + else if( href_list["str"] ) + compressor.starter = !compressor.starter - spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + spawn(0) + for(var/mob/M in viewers(1, src)) + if ((M.client && M.machine == src)) + src.interact(M) From a3a1aa952d5ff3bf85eecac5cf4608474174c8b4 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Sat, 14 Dec 2013 18:23:15 -0500 Subject: [PATCH 166/315] New way to prevent saxxing in transit tubes to run from the law --- code/game/objects/structures/transit_tubes.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 206b03e8e53..41bde491118 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -30,6 +30,8 @@ enter_delay = 3 var/pod_moving = 0 var/automatic_launch_time = 100 + var/cooldown_delay = 30 + var/launch_cooldown = 0 var/const/OPEN_DURATION = 6 var/const/CLOSE_DURATION = 6 @@ -170,11 +172,11 @@ obj/structure/ex_act(severity) /obj/structure/transit_tube/station/proc/launch_pod() for(var/obj/structure/transit_tube_pod/pod in loc) if(!pod.moving && pod.dir in directions()) - spawn(35) //To prevent saxing in the pod, should probably change these to sleep if it doesn't break the tubes + spawn(5) pod_moving = 1 close_animation() sleep(CLOSE_DURATION + 2) - if(icon_state == "closed" && pod) + if(icon_state == "closed" && pod && launch_cooldown < world.time) pod.follow_tube() pod_moving = 0 @@ -203,6 +205,7 @@ obj/structure/ex_act(severity) /obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir) pod_moving = 1 spawn(5) + launch_cooldown = world.time + min(cooldown_delay, automatic_launch_time) open_animation() sleep(OPEN_DURATION + 2) pod_moving = 0 From c9f69869f21e295a40e263a77af7f2db0ff78d68 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 14 Dec 2013 19:40:58 -0500 Subject: [PATCH 167/315] Aranclanos Fix Omnibus *Removes zapping oneself by attackselfing a wand, leaving clicking yourself while holding the wand the only way to do it because... *Removes the warnings for zapping yourself with bad wands. Careful with that wand of death, kids! *Removed some redundant lines *Adds logging/sounds to zapping yourself *Removed the change to wizard_continuous_rounds. It will become it's own PR *Removed some redundant lines *Uses the mob/living revive() proc to heal/raise people using the wand/staff of animation --- code/game/gamemodes/wizard/spellbook.dm | 1 - code/game/gamemodes/wizard/wizard.dm | 11 +---- code/modules/projectiles/guns/magic.dm | 3 -- code/modules/projectiles/guns/magic/wand.dm | 48 +++++++------------- code/modules/projectiles/projectile/magic.dm | 15 +----- 5 files changed, 18 insertions(+), 60 deletions(-) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 375a5129c4a..36417f0bd36 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -422,7 +422,6 @@ /obj/item/weapon/spellbook/oneuse/knock/recoil(mob/user as mob) ..() user <<"You're knocked down!" - user.Stun(20) user.Weaken(20) /obj/item/weapon/spellbook/oneuse/horsemask diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 5bbe1a8def6..c89560986df 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -178,7 +178,6 @@ return ..() var/wizards_alive = 0 - var/traitors_alive = 0 for(var/datum/mind/wizard in wizards) if(!istype(wizard.current,/mob/living/carbon)) continue @@ -186,15 +185,7 @@ continue wizards_alive++ - if(!wizards_alive) - for(var/datum/mind/traitor in traitors) - if(!istype(traitor.current,/mob/living/carbon)) - continue - if(traitor.current.stat==2) - continue - traitors_alive++ - - if (wizards_alive || traitors_alive) + if (wizards_alive) return ..() else finished = 1 diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index c47289e6ca4..b5146ca47ed 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -16,9 +16,6 @@ origin_tech = null clumsy_check = 0 -/obj/item/weapon/gun/magic/emp_act(severity) - return - /obj/item/weapon/gun/magic/process_chambered() if(in_chamber) return 1 if(!charges) return 0 diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index f83a0206be7..1bfc24b7ba2 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -22,13 +22,6 @@ usr << "Has [charges] charge\s remaining." return -/obj/item/weapon/gun/magic/wand/attack_self(mob/living/user as mob) - if(charges) - zap_self(user) - else - user << "The [name] whizzles quietly." - ..() - /obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) if(target == user) return @@ -39,12 +32,14 @@ if(charges) zap_self(user) else - user << "The [name] whizzles quietly." + user << "The [name] whizzles quietly." else ..() /obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) user.visible_message("[user] zaps \himself with [src]!") + playsound(user, fire_sound, 50, 1) + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]" /obj/item/weapon/gun/magic/wand/death name = "wand of death" @@ -54,13 +49,12 @@ max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) - if(alert(user, "You really want to zap yourself with the wand of death?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - var/message ="You irradiate yourself with pure energy! " - message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") - user << message - user.adjustOxyLoss(500) - charges-- - ..() + var/message ="You irradiate yourself with pure energy! " + message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") + user << message + user.adjustOxyLoss(500) + charges-- + ..() /obj/item/weapon/gun/magic/wand/resurrection name = "wand of resurrection" @@ -70,15 +64,7 @@ max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) - user.setToxLoss(0) - user.setOxyLoss(0) - user.setCloneLoss(0) - user.SetParalysis(0) - user.SetStunned(0) - user.SetWeakened(0) - user.radiation = 0 - user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss()) - user.reagents.clear_reagents() + user.revive() user << "You feel great!" charges-- ..() @@ -91,10 +77,9 @@ max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) - if(alert(user, "Your new form might not have arms to zap with... Continue?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - ..() //because the user mob ceases to exists by the time wabbajack fully resolves - wabbajack(user) - charges-- + ..() //because the user mob ceases to exists by the time wabbajack fully resolves + wabbajack(user) + charges-- /obj/item/weapon/gun/magic/wand/teleport name = "wand of teleportation" @@ -129,7 +114,6 @@ max_charges = 8 //8, 4, 4, 3 /obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) - if(alert(user, "Zapping yourself with a wand of fireball is probably a bad idea, do it anyway?",, "Yes", "No") == "Yes" && charges && user.get_active_hand() == src && isliving(user)) - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) - charges-- - ..() \ No newline at end of file + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + charges-- + ..() \ No newline at end of file diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 974e7ab7e37..bec53531f8b 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -38,20 +38,7 @@ if(istype(target,/mob)) var/old_stat = target.stat - if(target.stat == DEAD) - dead_mob_list -= target - living_mob_list += target - target.stat = CONSCIOUS - target.tod = null - target.setToxLoss(0) - target.setOxyLoss(0) - target.setCloneLoss(0) - target.SetParalysis(0) - target.SetStunned(0) - target.SetWeakened(0) - target.radiation = 0 - target.heal_overall_damage(target.getBruteLoss(), target.getFireLoss()) - target.reagents.clear_reagents() + target.revive() target.suiciding = 0 if(!target.ckey) for(var/mob/dead/observer/ghost in player_list) From 50450698995300a65a4501010a8730c1ef6ae136 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 15 Dec 2013 05:23:50 +0400 Subject: [PATCH 168/315] More logging and fingerprints Added helper proc for general logging, replaced some logging with this proc Pulling now leaves fingerprints Judging by the opinions in the thread will add some more logging/fingerprints --- code/__HELPERS/mobs.dm | 22 ++++++++++++++++--- code/_onclick/item_attack.dm | 4 +--- .../living/carbon/human/human_attackhand.dm | 14 ++++++------ code/modules/mob/mob.dm | 1 + 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index fa7d1cdd380..d684c524397 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -34,9 +34,9 @@ proc/random_name(gender, attempts_to_find_unique_name=10) for(var/i=1, i<=attempts_to_find_unique_name, i++) if(gender==FEMALE) . = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) else . = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) - + if(i != attempts_to_find_unique_name && !findname(.)) - break + break proc/random_skin_tone() return pick(skin_tones) @@ -67,4 +67,20 @@ proc/age2agedescription(age) if(45 to 60) return "middle-aged" if(60 to 70) return "aging" if(70 to INFINITY) return "elderly" - else return "unknown" \ No newline at end of file + else return "unknown" + +/* +Proc for attack log creation, because really why not +1 argument is the actor +2 argument is the target of action +3 is the description of action(like punched, throwed, or any other verb) +4 is the tool with which the action was made(usually item) +5 is additional information, anything that needs to be added +*/ + +proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=null) + if(ismob(user)) + user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target.name][ismob(target) ? "([target.ckey])" : ""][object ? " with [object]" : " "][addition]") + if(ismob(target)) + target.attack_log += text("\[[time_stamp()]\] Has been [what_done] by [user.name][ismob(user) ? "([user.ckey])" : ""][object ? " with [object]" : " "][addition]") + log_attack("[user.name][ismob(user) ? "([user.ckey])" : ""] [what_done] [target.name][ismob(target) ? "([target.ckey])" : ""][object ? " with [object]" : " "][addition]") \ No newline at end of file diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 25ccdb506b4..3bc540be44d 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -35,9 +35,7 @@ user.lastattacked = M M.lastattacker = user - user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" - M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" ) + add_logs(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])") //spawn(1800) // this wont work right // M.lastattacker = null diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 4125971cf02..79637a8470c 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -3,6 +3,7 @@ return if((M != src) && check_shields(0, M.name)) + add_logs(src, M, "attenmped to touch") visible_message("[M] attempted to touch [src]!") return 0 @@ -10,6 +11,7 @@ if("help") if(health >= 0) help_shake_act(M) + add_logs(src, M, "shaked") return 1 //CPR @@ -21,6 +23,7 @@ return 0 if(cpr_time < world.time + 30) + add_logs(src, M, "CPRed") visible_message("[M] is trying to perform CPR on [src]!") if(!do_mob(M, src)) return 0 @@ -33,6 +36,8 @@ src << "You feel a breath of fresh air enter your lungs. It feels good." if("grab") + add_logs(src, M, "grabbed", addition="passively") + if(M == src || anchored) return 0 if(w_uniform) @@ -53,10 +58,7 @@ return 1 if("harm") - M.attack_log += text("\[[time_stamp()]\] Punched [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been punched by [M.name] ([M.ckey])") - - log_attack("[M.name] ([M.ckey]) punched [src.name] ([src.ckey])") + add_logs(src, M, "punched") var/attack_verb = "punch" if(lying) @@ -105,9 +107,7 @@ forcesay(hit_appends) if("disarm") - M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [M.name] ([M.ckey])") - log_attack("[M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])") + add_logs(src, M, "disarmed") if(w_uniform) w_uniform.add_fingerprint(M) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d9941e57a35..a930f07f26f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -528,6 +528,7 @@ var/list/slot_equipment_priority = list( \ if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! return if (!( AM.anchored )) + AM.add_fingerprint(src) // If we're pulling something then drop what we're currently pulling and pull this instead. if(pulling) From 4dfbe1cbf7147021a58c3889c4c721e43d8696cc Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 15 Dec 2013 07:26:54 +0400 Subject: [PATCH 169/315] Mistook the mobs in human_attackhand, fixed now Happy little accident --- .../mob/living/carbon/human/human_attackhand.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 79637a8470c..859da7eab32 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -3,7 +3,7 @@ return if((M != src) && check_shields(0, M.name)) - add_logs(src, M, "attenmped to touch") + add_logs(M, src, "attenmped to touch") visible_message("[M] attempted to touch [src]!") return 0 @@ -11,7 +11,7 @@ if("help") if(health >= 0) help_shake_act(M) - add_logs(src, M, "shaked") + add_logs(M, src, "shaked") return 1 //CPR @@ -36,7 +36,7 @@ src << "You feel a breath of fresh air enter your lungs. It feels good." if("grab") - add_logs(src, M, "grabbed", addition="passively") + add_logs(M, src, "grabbed", addition="passively") if(M == src || anchored) return 0 @@ -58,7 +58,7 @@ return 1 if("harm") - add_logs(src, M, "punched") + add_logs(M, src, "punched") var/attack_verb = "punch" if(lying) @@ -107,7 +107,7 @@ forcesay(hit_appends) if("disarm") - add_logs(src, M, "disarmed") + add_logs(M, src, "disarmed") if(w_uniform) w_uniform.add_fingerprint(M) From 12639f6d2f4493587968fd8b4a331a6ccc4ddb2a Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 14 Dec 2013 23:33:51 -0500 Subject: [PATCH 170/315] Adds the changelog for magic mania --- html/changelog.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index dd5c995ece2..c04d7d583f6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -54,6 +54,21 @@ should be listed in the changelog upon commit tho. Thanks. --> +
    +

    14 December 2013

    +

    Incoming updated:

    +
      +
    • Magic Mania! Powerful new magical tools and skills for wizard and crew alike!
    • +
    • Beware the new Summon Magic spell, which will grant the crew access to magical tools and spells and cause some to misuse it!
    • +
    • One Time Spellbooks that can be spawned during summon magic that can teach a low level magic skill to anyone! Beware the effects of reading pre-owned books, the magical rights management is potent! +
    • Magical Wands that can be spawned during Summon Magic! They come in a variety of effects that mimic both classical wizard spells and all new ones. They come precharged but lack the means to refill them once their magical energy is depleted... Fire efficently!
    • +
    • Be aware of the new Charge spell, which can take normally useless spent wands and give them new life! This mysterious effect has been found to wear down the overall magical potency of wands over time however. Beyond wands the clever magical user can find ways to use this spell on other things that may benefit from a magical charge...
    • +
    • The Staff of Resurrection, which holds intense healing magics able to defeat death itself! Look out for this invaluable magical tool during castings of Summon Magic.
    • +
    • Be on the lookout for a new apprentice! This noble mage is a different beast from most wizards, trained in the arts of defending and healing. Too bad he still works for the wizard!
    • +
    +
    + +

    9 December 2013

    Giacom updated:

    From 1275e8bff88fe2b5aaaae5435629487290ea87d3 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 15 Dec 2013 02:07:28 -0500 Subject: [PATCH 171/315] A change to how "continuous_round_wiz" works Currently, if the config option for continuous wizard rounds is off the round will end immediately following the death of the wizard. With this change after the death of the wizard the game will additionally check to see if the wizard has made any antagonists that are still alive to do things after his death. The round won't end unless these antags don't exist or have all already died as well. This allows for summon guns/magics survivors to not get blueballed out of antag round because the wizard died quickly. Additionally this allows wizards who made apprentices the chance for them to get the wizard alive again (the new healing apprentice has a staff that can raise the dead who is uniquely suited to this task.) Additionally additionally this allows for a mindswap wizard to not get instantly meta'd out when the round doesn't end when the wizard's head is caved it WITHOUT forcing extended on people. This change was originally part of the Magic Mania pull, but was removed and placed in its own PR on request. --- code/game/gamemodes/wizard/wizard.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index c89560986df..5bbe1a8def6 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -178,6 +178,7 @@ return ..() var/wizards_alive = 0 + var/traitors_alive = 0 for(var/datum/mind/wizard in wizards) if(!istype(wizard.current,/mob/living/carbon)) continue @@ -185,7 +186,15 @@ continue wizards_alive++ - if (wizards_alive) + if(!wizards_alive) + for(var/datum/mind/traitor in traitors) + if(!istype(traitor.current,/mob/living/carbon)) + continue + if(traitor.current.stat==2) + continue + traitors_alive++ + + if (wizards_alive || traitors_alive) return ..() else finished = 1 From 5d1f63f92446e4877ba6f03ea21c1956a5c4ceb6 Mon Sep 17 00:00:00 2001 From: Perakp Date: Sun, 15 Dec 2013 12:07:55 +0200 Subject: [PATCH 172/315] and cable use() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added more span tags - using cable now uses use() - fixed use() to correctly return 1 when it succeeds - checked that there were no checks that would’ve been previously borked. For testing purposes I renamed use to use_cable (‘use’ is kinda bad for a proc name, but use_cable is hardly better), but left that out of the commit because it would’ve inflated the pr. --- code/game/dna.dm | 6 ++-- code/game/machinery/constructable_frame.dm | 33 +++++++++---------- code/game/machinery/machinery.dm | 8 ++--- .../telecomms/machine_interactions.dm | 24 ++++++-------- code/modules/power/cable.dm | 4 +-- 5 files changed, 35 insertions(+), 40 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 17ca55751fb..b8b346cc6fd 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -447,13 +447,13 @@ panel_open = !panel_open if(panel_open) icon_state = "[icon_state]_maintenance" - user << "You open the maintenance panel of [src]." + user << "You open the maintenance panel of [src]." else if(open) icon_state = "[initial(icon_state)]_open" else icon_state = "[initial(icon_state)]" - user << "You close the maintenance panel of [src]." + user << "You close the maintenance panel of [src]." return if(istype(G, /obj/item/weapon/crowbar)) @@ -542,7 +542,7 @@ user.drop_item() I.loc = src src.diskette = I - user << "You insert [I]." + user << "You insert [I]." src.updateUsrDialog() return else diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 029063c0d51..ebe0566804d 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -49,7 +49,7 @@ /obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P as obj, mob/user as mob) if(P.crit_fail) - user << "\red This part is faulty, you cannot add this to the machine!" + user << "This part is faulty, you cannot add this to the machine!" return switch(state) if(1) @@ -57,17 +57,17 @@ var/obj/item/weapon/cable_coil/C = P if(C.amount >= 5) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user << "\blue You start to add cables to the frame." + user << "You start to add cables to the frame." if(do_after(user, 20)) if(C) C.amount -= 5 if(!C.amount) del(C) - user << "\blue You add cables to the frame." + user << "You add cables to the frame." state = 2 icon_state = "box_1" if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - user << "\blue You dismantle the frame" + user << "You dismantle the frame." new /obj/item/stack/sheet/metal(src.loc, 5) del(src) if(2) @@ -75,7 +75,7 @@ var/obj/item/weapon/circuitboard/B = P if(B.board_type == "machine") playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user << "\blue You add the circuit board to the frame." + user << "You add the circuit board to the frame." circuit = P user.drop_item() P.loc = src @@ -86,10 +86,10 @@ update_namelist() update_req_desc() else - user << "\red This frame does not accept circuit boards of this type!" + user << "This frame does not accept circuit boards of this type!" if(istype(P, /obj/item/weapon/wirecutters)) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) - user << "\blue You remove the cables." + user << "You remove the cables." state = 1 icon_state = "box_0" var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc ) @@ -102,9 +102,9 @@ circuit.loc = src.loc circuit = null if(components.len == 0) - user << "\blue You remove the circuit board." + user << "You remove the circuit board." else - user << "\blue You remove the circuit board and other components." + user << "You remove the circuit board and other components." for(var/obj/item/weapon/W in components) W.loc = src.loc desc = initial(desc) @@ -132,27 +132,26 @@ del(src) if(istype(P, /obj/item/weapon)) + var/success for(var/I in req_components) if(istype(P, text2path(I)) && (req_components[I] > 0)) + success=1 if(istype(P, /obj/item/weapon/cable_coil)) var/obj/item/weapon/cable_coil/CP = P - if(CP.amount > 1) - var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src, 1) - CP.amount-- - if(!CP.amount) del(CP) - else CP.update_icon() + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src, 1, CP.item_color) + if(CP.use(1)) components += CC req_components[I]-- update_req_desc() - break + break user.drop_item() P.loc = src components += P req_components[I]-- update_req_desc() break - if(P.loc != src && !istype(P, /obj/item/weapon/cable_coil)) - user << "\red You cannot add that component to the machine!" + if(!success) + user << "You cannot add that to the machine!" //Machine Frame Circuit Boards diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index fd3c869d85b..f04a742c876 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -212,7 +212,7 @@ Class Procs: if ( ! (istype(usr, /mob/living/carbon/human) || \ istype(usr, /mob/living/silicon) || \ istype(usr, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") ) - usr << "\red You don't have the dexterity to do this!" + usr << "You don't have the dexterity to do this!" return 1 /* //distance checks are made by atom/proc/DblClick @@ -225,7 +225,7 @@ Class Procs: visible_message("\red [H] stares cluelessly at [src] and drools.") return 1 else if(prob(H.getBrainLoss())) - user << "\red You momentarily forget how to use [src]." + user << "You momentarily forget how to use [src]." return 1 src.add_fingerprint(user) @@ -254,8 +254,8 @@ Class Procs: if (!panel_open) panel_open = 1 icon_state = icon_state_open - user << "You open the maintenance hatch of [src]." + user << "You open the maintenance hatch of [src]." else panel_open = 0 icon_state = icon_state_closed - user << "You close the maintenance hatch of [src]." + user << "You close the maintenance hatch of [src]." diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index a22750aa3dd..b4c9e607982 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -24,26 +24,26 @@ switch(construct_op) if(0) if(istype(P, /obj/item/weapon/screwdriver)) - user << "You unfasten the bolts." + user << "You unfasten the bolts." playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) construct_op ++ if(1) if(istype(P, /obj/item/weapon/screwdriver)) - user << "You fasten the bolts." + user << "You fasten the bolts." playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) construct_op -- if(istype(P, /obj/item/weapon/wrench)) - user << "You dislodge the external plating." + user << "You dislodge the external plating." playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) construct_op ++ if(2) if(istype(P, /obj/item/weapon/wrench)) - user << "You secure the external plating." + user << "You secure the external plating." playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) construct_op -- if(istype(P, /obj/item/weapon/wirecutters)) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) - user << "You remove the cables." + user << "You remove the cables." construct_op ++ var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( user.loc ) A.amount = 5 @@ -51,21 +51,17 @@ if(3) if(istype(P, /obj/item/weapon/cable_coil)) var/obj/item/weapon/cable_coil/A = P - if(A.amount >= 5) - user << "You insert the cables." - A.amount -= 5 - if(A.amount <= 0) - user.drop_item() - del(A) + if(A.use(5)) + user << "You insert the cables." construct_op -- stat &= ~BROKEN // the machine's not borked anymore! else - user << "You need more cable" + user << "You need more cable to do that." if(istype(P, /obj/item/weapon/crowbar)) - user << "You begin prying out the circuit board and components..." + user << "You begin prying out the circuit board and components..." playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) if(do_after(user,60)) - user << "You finish prying out the components." + user << "You finish prying out the components." // Drop all the component stuff if(component_parts) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 00777fcc9eb..0c4bd97519a 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -302,8 +302,8 @@ if(src.amount < used) return 0 else if (src.amount == used) - //handle mob icon update - if(ismob(loc)) + .=1 //Because del(src) stops the proc, set the default return value to 1 + if(ismob(loc)) //handle mob icon update var/mob/M = loc M.u_equip(src) del(src) From 1c5126fc98ffbd9ac9509dbc7ce6ffb5903abd55 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 15 Dec 2013 15:58:55 +0000 Subject: [PATCH 173/315] Removed ONESIZEFITSALL. Changed the THICKMATERIAL flag so it did not conflict with HEADCOVERSMOUTH. --- code/__DEFINES/flags.dm | 6 ++-- code/game/gamemodes/cult/cult_items.dm | 4 +-- code/modules/clothing/clothing.dm | 2 +- .../clothing/spacesuits/miscellaneous.dm | 2 +- code/modules/clothing/suits/armor.dm | 4 +-- code/modules/clothing/suits/miscellaneous.dm | 2 +- code/modules/clothing/suits/utility.dm | 2 +- code/modules/clothing/under/color.dm | 28 +++++++++---------- code/modules/clothing/under/jobs/civilian.dm | 20 ++++++------- .../clothing/under/jobs/engineering.dm | 6 ++-- code/modules/clothing/under/jobs/medsci.dm | 8 +++--- code/modules/clothing/under/jobs/security.dm | 8 +++--- code/modules/clothing/under/miscellaneous.dm | 6 ++-- .../mob/living/carbon/metroid/metroid.dm | 2 +- 14 files changed, 50 insertions(+), 50 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 5caa6ceec96..055ff7fb2e2 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -23,13 +23,13 @@ #define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head #define HEADCOVERSMOUTH 2048 -#define THICKMATERIAL 1024 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with NOSLIP for shoes) #define NOSLIP 1024 //prevents from slipping on wet floors, in space etc (NOTE: flag shared with THICKMATERIAL for external suits and helmet) #define OPENCONTAINER 4096 // is an open container for chemistry purposes -#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with ONESIZEFITSALL) -#define ONESIZEFITSALL 8192 // can be worn by fatties (or children? ugh) --jumpsuit only (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) +// BLOCK_GAS_SMOKE_EFFECT only used in masks at the moment. +#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with THICKMATERIAL) +#define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) #define NOREACT 16384 //Reagents dont' react inside this container. diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 606d63aa994..6da4a22f51f 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -55,7 +55,7 @@ desc = "A set of armored robes worn by the followers of Nar-Sie" icon_state = "cultrobes" item_state = "cultrobes" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) @@ -79,7 +79,7 @@ desc = "A set of armored robes worn by the followers of Nar-Sie" icon_state = "magusred" item_state = "magusred" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d36384cf683..efd13e599e0 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -91,7 +91,7 @@ BLIND // can't see anything icon = 'icons/obj/clothing/suits.dmi' name = "suit" var/fire_resist = T0C+100 - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS allowed = list(/obj/item/weapon/tank/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) slot_flags = SLOT_OCLOTHING diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index f9fcf1b2747..500909e8675 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -67,7 +67,7 @@ icon_state = "santa" item_state = "santa" slowdown = 0 - flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE allowed = list(/obj/item) //for stuffing exta special presents diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8f513a82ed9..8f4e11a8005 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -16,7 +16,7 @@ icon_state = "armor" item_state = "armor" blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) /obj/item/clothing/suit/armor/hos @@ -130,7 +130,7 @@ item_state = "reactiveoff" blood_overlay_type = "armor" slowdown = 1 - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/suit/armor/reactive/IsShield() diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 3adb01fbcb6..474ae29f5b5 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -86,7 +86,7 @@ desc = "This robe commands authority." icon_state = "judge" item_state = "judge" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash) flags_inv = HIDEJUMPSUIT diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 7d0e41193b3..ff1e72895db 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -21,7 +21,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher) slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 67684deccc1..4279c637137 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -3,7 +3,7 @@ icon_state = "black" item_state = "bl_suit" item_color = "black" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/blackf name = "feminine black jumpsuit" @@ -18,21 +18,21 @@ icon_state = "blue" item_state = "b_suit" item_color = "blue" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/green name = "green jumpsuit" icon_state = "green" item_state = "g_suit" item_color = "green" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/grey name = "grey jumpsuit" icon_state = "grey" item_state = "gy_suit" item_color = "grey" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/orange name = "orange jumpsuit" @@ -42,35 +42,35 @@ item_color = "orange" has_sensor = 2 sensor_mode = 3 - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/pink name = "pink jumpsuit" icon_state = "pink" item_state = "p_suit" item_color = "pink" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" item_state = "r_suit" item_color = "red" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/white name = "white jumpsuit" icon_state = "white" item_state = "w_suit" item_color = "white" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" item_state = "y_suit" item_color = "yellow" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/psyche name = "psychedelic" @@ -89,7 +89,7 @@ desc = "aqua" icon_state = "aqua" item_color = "aqua" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/purple name = "purple" @@ -121,14 +121,14 @@ desc = "lightbrown" icon_state = "lightbrown" item_color = "lightbrown" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/brown name = "brown" desc = "brown" icon_state = "brown" item_color = "brown" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/yellowgreen name = "yellowgreen" @@ -141,7 +141,7 @@ desc = "darkblue" icon_state = "darkblue" item_color = "darkblue" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/lightred name = "lightred" @@ -154,4 +154,4 @@ desc = "darkred" icon_state = "darkred" item_color = "darkred" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL \ No newline at end of file + flags = FPRINT | TABLEPASS \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 79c7272f2c1..7a8d714d4f6 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -6,7 +6,7 @@ icon_state = "ba_suit" item_state = "ba_suit" item_color = "ba_suit" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. @@ -15,7 +15,7 @@ icon_state = "captain" item_state = "caparmor" item_color = "captain" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/cargo @@ -32,7 +32,7 @@ icon_state = "cargotech" item_state = "lb_suit" item_color = "cargo" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/chaplain @@ -41,7 +41,7 @@ icon_state = "chaplain" item_state = "bl_suit" item_color = "chapblack" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/chef @@ -49,7 +49,7 @@ name = "chef's uniform" icon_state = "chef" item_color = "chef" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/clown @@ -58,7 +58,7 @@ icon_state = "clown" item_state = "clown" item_color = "clown" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS fitted = 0 @@ -68,7 +68,7 @@ icon_state = "hop" item_state = "b_suit" item_color = "hop" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/hydroponics @@ -78,7 +78,7 @@ item_state = "g_suit" item_color = "hydroponics" permeability_coefficient = 0.50 - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/janitor @@ -87,7 +87,7 @@ icon_state = "janitor" item_color = "janitor" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/lawyer @@ -148,7 +148,7 @@ icon_state = "mime" item_state = "mime" item_color = "mime" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/miner desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty." diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index a13c3267c42..f348b801a53 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -6,7 +6,7 @@ item_state = "g_suit" item_color = "chief" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians." @@ -14,7 +14,7 @@ icon_state = "atmos" item_state = "atmos_suit" item_color = "atmos" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." @@ -23,7 +23,7 @@ item_state = "engi_suit" item_color = "engine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 687063f2ee1..6691f62619a 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -8,7 +8,7 @@ item_state = "g_suit" item_color = "director" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/scientist desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist." @@ -18,7 +18,7 @@ item_color = "toxinswhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/chemist @@ -50,7 +50,7 @@ item_color = "geneticswhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." @@ -78,7 +78,7 @@ item_color = "medical" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/medical/blue name = "medical scrubs" diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index a8fe7017964..dc444ea6224 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -16,7 +16,7 @@ item_state = "r_suit" item_color = "warden" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/security name = "security officer's jumpsuit" @@ -25,7 +25,7 @@ item_state = "r_suit" item_color = "secred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /* * Detective @@ -37,7 +37,7 @@ item_state = "det" item_color = "detective" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /* * Head of Security @@ -49,7 +49,7 @@ item_state = "r_suit" item_color = "hosred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /* * Jensen cosplay gear diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 032564a1ed3..ddd4470ba7a 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -24,7 +24,7 @@ name = "amish suit" icon_state = "sl_suit" item_color = "sl_suit" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/roman name = "roman armor" @@ -40,7 +40,7 @@ icon_state = "waiter" item_state = "waiter" item_color = "waiter" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/mailman name = "mailman's jumpsuit" @@ -115,7 +115,7 @@ desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" icon_state = "owl" item_color = "owl" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL + flags = FPRINT | TABLEPASS fitted = 0 /obj/item/clothing/under/johnny diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 62c6efc75df..54870fdfcf2 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -845,7 +845,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 body_parts_covered = FULL_BODY slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE | ABSTRACT + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ABSTRACT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS | HEAD max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS | HEAD From f2e0e5a1932d8ce5ef637dfc974245cba2d05116 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 15 Dec 2013 20:58:28 +0400 Subject: [PATCH 174/315] Fixed minor typos and more use of new proc Removed previously added ling logging proc, replaced with new one Fixed some language Fixed help and grab intent logging when you do it to yourself --- .../gamemodes/changeling/changeling_powers.dm | 17 ++++++----------- .../mob/living/carbon/human/human_attackhand.dm | 10 ++++++---- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index c909f9ec6bc..eb336d00c50 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -532,11 +532,6 @@ var/list/datum/dna/hivemind_bank = list() //STINGS// //They get a pretty header because there's just so fucking many of them ;_; ////////// -/mob/living/carbon/proc/add_sting_logs(mob/T, sting_name, datum/dna/DNA) - src.attack_log += "\[[time_stamp()]\] Stung [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" - T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with [sting_name] sting[!DNA ? "." : ", and took [DNA.real_name] appearance."]" - log_attack("[src.name] ([src.ckey]) stung [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" ) - /mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it src << "We prepare our sting, use alt+click on target to sting them." src.mind.changeling.chosen_sting = A @@ -585,7 +580,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) - add_sting_logs(T, "transformation", src.mind.changeling.chosen_dna) + add_logs(src, T, "stinged", "transformation sting", "new identity is [src.mind.changeling.chosen_dna.real_name]") if(!sting_can_reach(T, 40)) return 0 if((HUSK in T.mutations) || !check_dna_integrity(T)) @@ -607,7 +602,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) - add_sting_logs(T, "extracting") + add_logs(src, T, "stinged", "extraction sting") if(!sting_can_reach(T, 25)) return 0 if(src.mind.changeling.can_absorb_dna(T, usr)) @@ -626,7 +621,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) - add_sting_logs(T, "mute") + add_logs(src, T, "stinged", "mute sting") if(!sting_can_reach(T, 20)) return 0 T.silent += 30 @@ -641,7 +636,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) - add_sting_logs(T, "blind") + add_logs(src, T, "stinged", "blind sting") if(!sting_can_reach(T, 25)) return 0 T << "Your eyes burn horrifically!" @@ -659,7 +654,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) - add_sting_logs(T, "LSD") + add_logs(src, T, "stinged", "LSD sting") if(!sting_can_reach(T, 5)) return 0 spawn(rand(300,600)) @@ -675,7 +670,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) - add_sting_logs(T, "cryo") + add_logs(src, T, "stinged", "cryo sting") if(!sting_can_reach(T, 15)) return 0 if(T.reagents) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 859da7eab32..940ce1091c4 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -3,7 +3,7 @@ return if((M != src) && check_shields(0, M.name)) - add_logs(M, src, "attenmped to touch") + add_logs(M, src, "attempted to touch") visible_message("[M] attempted to touch [src]!") return 0 @@ -11,7 +11,8 @@ if("help") if(health >= 0) help_shake_act(M) - add_logs(M, src, "shaked") + if(src != M) + add_logs(M, src, "shaked") return 1 //CPR @@ -36,10 +37,11 @@ src << "You feel a breath of fresh air enter your lungs. It feels good." if("grab") - add_logs(M, src, "grabbed", addition="passively") - if(M == src || anchored) return 0 + + add_logs(M, src, "grabbed", addition="passively") + if(w_uniform) w_uniform.add_fingerprint(M) From e9e9977249f5872048a012697791884810527f2a Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Sun, 15 Dec 2013 19:23:54 +0100 Subject: [PATCH 175/315] Standarized the code further, added interact that doesn't shit the compiler --- code/modules/power/turbine.dm | 87 +++++++++++++++++------------------ 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 33d5969a6cd..97a20fd7911 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -6,8 +6,8 @@ // Not everything is included yet so the turbine can run out of fuel quiet quickly. The best thing about the turbine is that even // though something is on fire that passes through it, it won't be on fire as it passes out of it. So the exhaust fumes can still // containt unreacted fuel - plasma and oxygen that needs to be filtered out and re-routed back. This of course requires smart piping -// For a computer to work with the turbine the compressor requires a comp_id matching with the turbine computer's id. This will be -// subjected to a change in the near future mind you. Right now this method of generating power is a good backup but don't expect it +// For a computer to work with the turbine the compressor requires a comp_id matching with the turbine computer's id. This will be +// subjected to a change in the near future mind you. Right now this method of generating power is a good backup but don't expect it // become a main power source unless some work is done. Have fun. At 50k RPM it generates 60k power. So more than one turbine is needed! // // - Numbers @@ -45,7 +45,7 @@ icon_state = "turbine" anchored = 1 density = 1 - var/opened = 0 + var/opened = 0 var/obj/machinery/compressor/compressor directwired = 1 var/turf/simulated/outturf @@ -85,8 +85,8 @@ // OLD FIX - explanation given down below. // /obj/machinery/power/compressor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) // return !density - - + + /obj/machinery/power/compressor/CanAtmosPass(var/turf/T) return !density @@ -101,9 +101,9 @@ return rpm = 0.9* rpm + 0.1 * rpmtarget var/datum/gas_mixture/environment = inturf.return_air() - + // It's a simplified version taking only 1/10 of the moles from the turf nearby. It should be later changed into a better version - + var/transfer_moles = environment.total_moles()/10 //var/transfer_moles = rpm/10000*capacity var/datum/gas_mixture/removed = inturf.remove_air(transfer_moles) @@ -134,8 +134,8 @@ overlays += image('icons/obj/pipes.dmi', "comp-o1", FLY_LAYER) //TODO: DEFERRED -// These are crucial to working of a turbine - the stats modify the power output. TurbGenQ modifies how much raw energy can you get from -// rpms, TurbGenG modifies the shape of the curve - the lower the value the less straight the curve is. +// These are crucial to working of a turbine - the stats modify the power output. TurbGenQ modifies how much raw energy can you get from +// rpms, TurbGenG modifies the shape of the curve - the lower the value the less straight the curve is. #define TURBPRES 9000000 #define TURBGENQ 100000 @@ -144,7 +144,7 @@ /obj/machinery/power/turbine/New() ..() -// The outlet is pointed at the direction of the turbine component +// The outlet is pointed at the direction of the turbine component outturf = get_step(src, dir) @@ -179,18 +179,18 @@ if(!compressor) stat |= BROKEN return - - // This is the power generation function. If anything is needed it's good to plot it in EXCEL before modifying - // the TURBGENQ and TURBGENG values - + + // This is the power generation function. If anything is needed it's good to plot it in EXCEL before modifying + // the TURBGENQ and TURBGENG values + lastgen = ((compressor.rpm / TURBGENQ)**TURBGENG) *TURBGENQ add_avail(lastgen) - + // Weird function but it works. Should be something else... - + var/newrpm = ((compressor.gas_contained.temperature) * compressor.gas_contained.total_moles())/4 - + newrpm = max(0, newrpm) if(!compressor.starter || newrpm > 1000) @@ -206,14 +206,8 @@ if(lastgen > 100) overlays += image('icons/obj/pipes.dmi', "turb-o", FLY_LAYER) + updateDialog() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - AutoUpdateAI(src) - - -// AI can't use it! /obj/machinery/power/turbine/attack_ai(mob/user) @@ -222,34 +216,39 @@ interact(user) -// Only non-AI mobs (This is a way to get over a duplicate declaration error! Thanks Metacide!) - /obj/machinery/power/turbine/attack_hand(mob/user) add_fingerprint(user) - if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) - user.machine = null - user << browse(null, "window=turbine") + if(stat & (BROKEN|NOPOWER)) return - user.machine = src + interact(user) - var/t = "Gas Turbine Generator
    "
    +/obj/machinery/power/turbine/interact(mob/user)
     
    -	t += "Generated power : [round(lastgen)] W

    " + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) + user.machine = null + user << browse(null, "window=turbine") + return - t += "Turbine: [round(compressor.rpm)] RPM
    " + user.set_machine(src) - t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + var/t = "Gas Turbine Generator
    "
     
    -	t += "

    Close" + t += "Generated power : [round(lastgen)] W

    " - t += "
    " - user << browse(t, "window=turbine") - onclose(user, "turbine") + t += "Turbine: [round(compressor.rpm)] RPM
    " - return + t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + + t += "

    Close" + + t += "
    " + user << browse(t, "window=turbine") + onclose(user, "turbine") + + return /obj/machinery/power/turbine/Topic(href, href_list) if(..()) @@ -260,13 +259,11 @@ usr.machine = null return - else if( href_list["str"] ) + else if( href_list["str"] ) compressor.starter = !compressor.starter spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + updateDialog() @@ -285,7 +282,7 @@ for(var/obj/machinery/compressor/C in world) if(id == C.comp_id) compressor = C - + /obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/screwdriver)) @@ -330,7 +327,7 @@ \nTurbine speed: [src.compressor.rpm]rpm
    \nPower currently being generated: [src.compressor.turbine.lastgen]W
    \nInternal gas temperature: [src.compressor.gas_contained.temperature]K
    - \n
    View + \n
    View \n
    Close \n
    \n"} From b88af75828604684b253be821788e23825518bcd Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 15 Dec 2013 23:12:56 +0400 Subject: [PATCH 176/315] And some more mistakes fixings Yeah i suck at english sorry --- code/game/gamemodes/changeling/changeling_powers.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index eb336d00c50..fefaabe3b0c 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -580,7 +580,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) - add_logs(src, T, "stinged", "transformation sting", "new identity is [src.mind.changeling.chosen_dna.real_name]") + add_logs(src, T, "stung", "transformation sting", "new identity is [src.mind.changeling.chosen_dna.real_name]") if(!sting_can_reach(T, 40)) return 0 if((HUSK in T.mutations) || !check_dna_integrity(T)) @@ -602,7 +602,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) - add_logs(src, T, "stinged", "extraction sting") + add_logs(src, T, "stung", "extraction sting") if(!sting_can_reach(T, 25)) return 0 if(src.mind.changeling.can_absorb_dna(T, usr)) @@ -621,7 +621,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) - add_logs(src, T, "stinged", "mute sting") + add_logs(src, T, "stung", "mute sting") if(!sting_can_reach(T, 20)) return 0 T.silent += 30 @@ -636,7 +636,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) - add_logs(src, T, "stinged", "blind sting") + add_logs(src, T, "stung", "blind sting") if(!sting_can_reach(T, 25)) return 0 T << "Your eyes burn horrifically!" @@ -654,7 +654,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) - add_logs(src, T, "stinged", "LSD sting") + add_logs(src, T, "stung", "LSD sting") if(!sting_can_reach(T, 5)) return 0 spawn(rand(300,600)) @@ -670,7 +670,7 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) - add_logs(src, T, "stinged", "cryo sting") + add_logs(src, T, "stung", "cryo sting") if(!sting_can_reach(T, 15)) return 0 if(T.reagents) From e30da6f45879e8eb81246b5f38e4ab8539c902f1 Mon Sep 17 00:00:00 2001 From: EuroNumbers Date: Sun, 15 Dec 2013 21:56:08 +0100 Subject: [PATCH 177/315] Further code standardization --- code/modules/power/turbine.dm | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 97a20fd7911..626256f1fab 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -209,20 +209,10 @@ updateDialog() -/obj/machinery/power/turbine/attack_ai(mob/user) - - if(stat & (BROKEN|NOPOWER)) - return - - interact(user) - /obj/machinery/power/turbine/attack_hand(mob/user) - add_fingerprint(user) - - if(stat & (BROKEN|NOPOWER)) + if(..()) return - interact(user) /obj/machinery/power/turbine/interact(mob/user) From 6efd7d39e09884addd829ff58ad98ac1a82a305e Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 15 Dec 2013 16:55:11 -0500 Subject: [PATCH 178/315] Adds new and better wand and spellbook sprtes by Neerti Adds new functionality where wands will look different once they're out of charge for at a glace judgements Adds a wand of nothing to the hacked item list for the autodrobe, by popular request --- code/datums/spells/charge.dm | 3 +++ code/game/machinery/vending.dm | 2 +- code/modules/projectiles/guns/magic/wand.dm | 25 +++++++++++--------- icons/obj/gun.dmi | Bin 41333 -> 45163 bytes icons/obj/library.dmi | Bin 26874 -> 23117 bytes 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 342e11049eb..2d9f6776833 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -48,6 +48,9 @@ I.max_charges = 0 burnt_out = 1 I.charges = I.max_charges + if(istype(item,/obj/item/weapon/gun/magic/wand) && I.max_charges != 0) + var/obj/item/weapon/gun/magic/W = item + W.icon_state = initial(W.icon_state) charged_item = I break else if(istype(item, /obj/item/weapon/cell/)) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 661c885b4d7..d078cec0619 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -679,7 +679,7 @@ /obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1, /obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/suit/apron/overalls = 1, /obj/item/clothing/head/rabbitears =1) //Pretty much everything that had a chance to spawn. - contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1,/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1) + contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1,/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1) premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1) refill_canister = /obj/item/weapon/vending_refill/autodrobe diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 1bfc24b7ba2..3ec8880b6cd 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -2,7 +2,7 @@ name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick!" projectile_type = "/obj/item/projectile/magic" - icon_state = "wand6" + icon_state = "nothingwand" item_state = "wand" w_class = 2 can_charge = 0 @@ -28,13 +28,16 @@ ..() /obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) + if(!charges) + user << "The [name] whizzles quietly." + return if(target == user) - if(charges) - zap_self(user) - else - user << "The [name] whizzles quietly." + zap_self(user) else ..() + if(!charges) + icon_state = "[icon_state]-drained" + /obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) user.visible_message("[user] zaps \himself with [src]!") @@ -45,7 +48,7 @@ name = "wand of death" desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." projectile_type = "/obj/item/projectile/magic/death" - icon_state = "wand4" + icon_state = "deathwand" max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) @@ -60,7 +63,7 @@ name = "wand of resurrection" desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." projectile_type = "/obj/item/projectile/magic/resurrection" - icon_state = "wand1" + icon_state = "revivewand" max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) @@ -73,7 +76,7 @@ name = "wand of polymorph" desc = "This wand is attuned to chaos and will radically alter the victim's form." projectile_type = "/obj/item/projectile/magic/change" - icon_state = "wand5" + icon_state = "polywand" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) @@ -85,7 +88,7 @@ name = "wand of teleportation" desc = "This wand will wrench targets through space and time to move them somewhere else." projectile_type = "/obj/item/projectile/magic/teleport" - icon_state = "wand3" + icon_state = "telewand" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) @@ -100,7 +103,7 @@ name = "wand of door creation" desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." projectile_type = "/obj/item/projectile/magic/door" - icon_state = "wand0" + icon_state = "doorwand" max_charges = 20 //20, 10, 10, 7 /obj/item/weapon/gun/magic/wand/door/zap_self() @@ -110,7 +113,7 @@ name = "wand of fireball" desc = "This wand shoots scorching balls of fire that explode into destructive flames." projectile_type = "/obj/item/projectile/magic/fireball" - icon_state = "wand2" + icon_state = "firewand" max_charges = 8 //8, 4, 4, 3 /obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 98283e0ee84e1e44f86d0b0ed43f6b4f7b78b29d..b642689113d5cad77b10112ce33f94fe8b3b9425 100644 GIT binary patch delta 26422 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 literal 26874 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 }1np*U#26X!DpdVW=Qi>P8 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 C8pRR- From 7513625c48100d506664078fa1d1ae67ce08255f Mon Sep 17 00:00:00 2001 From: KazeEspada Date: Sun, 15 Dec 2013 17:38:23 -0700 Subject: [PATCH 179/315] fixes a rare runtime that occurs when the turbine couldn't find a compressor. Brings the code up to current standards. Removes the view function from the computer. Its rather obsolete in the days of telescreens. --- code/modules/power/turbine.dm | 139 ++++++++++++---------------------- 1 file changed, 49 insertions(+), 90 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 97a20fd7911..bd61fd339d7 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -38,6 +38,7 @@ var/capacity = 1e6 var/comp_id = 0 + /obj/machinery/power/turbine name = "gas turbine generator" desc = "A gas turbine used for backup power generation." @@ -171,14 +172,15 @@ /obj/machinery/power/turbine/process() - if(!compressor.starter) - return - overlays.Cut() + if(stat & BROKEN) return if(!compressor) stat |= BROKEN return + if(!compressor.starter) + return + overlays.Cut() // This is the power generation function. If anything is needed it's good to plot it in EXCEL before modifying // the TURBGENQ and TURBGENG values @@ -208,61 +210,52 @@ updateDialog() - -/obj/machinery/power/turbine/attack_ai(mob/user) - - if(stat & (BROKEN|NOPOWER)) - return - - interact(user) - /obj/machinery/power/turbine/attack_hand(mob/user) - add_fingerprint(user) - - if(stat & (BROKEN|NOPOWER)) + if(..()) return interact(user) + + /obj/machinery/power/turbine/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) - user.machine = null - user << browse(null, "window=turbine") - return - - user.set_machine(src) - - var/t = "Gas Turbine Generator


    "
    -
    -		t += "Generated power : [round(lastgen)] W

    " - - t += "Turbine: [round(compressor.rpm)] RPM
    " - - t += "Starter: [ compressor.starter ? "
    Off On" : "Off On"]" - - t += "

    Close" - - t += "" - user << browse(t, "window=turbine") - onclose(user, "turbine") - + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) + user.unset_machine(src) + user << browse(null, "window=turbine") return + var/t = "Gas Turbine Generator
    "
    +
    +	t += "Generated power : [round(lastgen)] W

    " + + t += "Turbine: [round(compressor.rpm)] RPM
    " + + t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + + t += "

    Close" + + t += "
    " + var/datum/browser/popup = new(user, "turbine", name) + popup.set_content(t) + popup.open() + + return + /obj/machinery/power/turbine/Topic(href, href_list) if(..()) return if( href_list["close"] ) usr << browse(null, "window=turbine") - usr.machine = null + usr.unset_machine(src) return else if( href_list["str"] ) - compressor.starter = !compressor.starter + if(compressor) + compressor.starter = !compressor.starter - spawn(0) updateDialog() @@ -283,79 +276,45 @@ if(id == C.comp_id) compressor = C - -/obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob) - if(istype(I, /obj/item/weapon/screwdriver)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) - if (src.stat & BROKEN) - user << "\blue The broken glass falls out." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) - new /obj/item/weapon/shard( src.loc ) - var/obj/item/weapon/circuitboard/turbine_control/M = new /obj/item/weapon/circuitboard/turbine_control( A ) - for (var/obj/C in src) - C.loc = src.loc - M.id = src.id - A.circuit = M - A.state = 3 - A.icon_state = "3" - A.anchored = 1 - del(src) - else - user << "\blue You disconnect the monitor." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) - var/obj/item/weapon/circuitboard/turbine_control/M = new /obj/item/weapon/circuitboard/turbine_control( A ) - for (var/obj/C in src) - C.loc = src.loc - M.id = src.id - A.circuit = M - A.state = 4 - A.icon_state = "4" - A.anchored = 1 - del(src) - else - src.attack_hand(user) - return - /obj/machinery/computer/turbine_computer/attack_hand(var/mob/user as mob) - user.machine = src + if(..()) + return + + interact(user) + +/obj/machinery/computer/turbine_computer/interact(mob/user) + var/dat - if(src.compressor) + if(compressor) dat += {"
    Gas turbine remote control system
    \nTurbine status: [ src.compressor.starter ? "Off On" : "Off On"] \n
    \nTurbine speed: [src.compressor.rpm]rpm
    \nPower currently being generated: [src.compressor.turbine.lastgen]W
    \nInternal gas temperature: [src.compressor.gas_contained.temperature]K
    - \n
    View \n
    Close \n
    \n"} else dat += "\redNo compatible attached compressor found." - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") + var/datum/browser/popup = new(user, "turbinecomputer", name) + popup.set_content(dat) + popup.open() return - - /obj/machinery/computer/turbine_computer/Topic(href, href_list) if(..()) return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.machine = src - if( href_list["view"] ) - usr.client.eye = src.compressor - else if( href_list["str"] ) - src.compressor.starter = !src.compressor.starter - else if( href_list["close"] ) - usr << browse(null, "window=computer") - usr.machine = null - return + else if( href_list["str"] ) + if(compressor) + compressor.starter = !compressor.starter + else if( href_list["close"] ) + usr << browse(null, "window=turbinecomputer") + usr.unset_machine(src) + return - src.add_fingerprint(usr) src.updateUsrDialog() return From 1d173fe020a45d94c7fa81a99c2a5d10ae031d47 Mon Sep 17 00:00:00 2001 From: Adrinus Date: Sat, 23 Nov 2013 04:17:03 -0500 Subject: [PATCH 180/315] Adds a deck of cards. Works like real cards, without all the shuffling. Fixed a few unforseen bugs and smoothed out a few odd quirks. Fixed bugs, added flipping mechanics. Made the cards less cheater friendly by making certain actions visible. Added the ability to choose between "Random Card" and "draw from Top" with a verb on the deck. While held in hand the deck can now be shuffled. Had to improve sprites, was really bugging me. Now uses the shuffle() list helper. Added cardshuffle.ogg to sound/items/ Cooldown applied to shuffling for "sanity" as the term seems to be. Made a few changes to the way the cards prompt you for less clutter. Merge pull request #1 from Zelacks/deckstuff Replaces the global decks variable with a reference Now card is taken from hand on topic choice. Examine card has been scrapped, just attack_self() with the card to see what it is. New Icons. Dig that NanoTrasen blue. Thanks Nienhaus! Merge pull request #2 from Zelacks/deckstuff Hopefully you will like these changes - Several deck changes Fixed a few nits and picks. Made Deck of Cards available as a prize from the arcade machines. Merge pull request #3 from Zelacks/deckstuff Card sprites! Thanks, was toying with doing that, saved me a bundle of work! Fixed the adjacency issue. Added more checks to the cards and object verb. Adeed a series of fixes to the Mousedrop function. Made all notices uniform. Made changes to keep cards being flipped by the wrong sorts. Added Razharas' "more readable" pixel art for the cards. Made messages about the deck work while the deck is held. (I guess you might want to carry it) Un-Needed cooldown removed from shuffling the deck. Added blue contours to the cards to make them stand out against floor tiles. Merge branch 'master' into 11-23-2013-Games --- code/__DEFINES/flags.dm | 2 +- code/__DEFINES/genetics.dm | 4 + code/__HELPERS/game.dm | 6 + code/__HELPERS/names.dm | 15 +- code/__HELPERS/time.dm | 9 +- code/__HELPERS/unsorted.dm | 16 +- code/_globalvars/misc.dm | 2 + code/_onclick/click.dm | 2 +- code/_onclick/hud/_defines.dm | 2 + code/_onclick/hud/hud.dm | 1 + code/_onclick/hud/human.dm | 8 +- code/_onclick/hud/monkey.dm | 8 +- code/_onclick/hud/screen_objects.dm | 24 +- code/_onclick/observer.dm | 2 +- code/_onclick/other_mobs.dm | 10 +- code/controllers/supply_shuttle.dm | 6 +- code/controllers/voting.dm | 25 +- code/datums/disease.dm | 10 + code/datums/diseases/advance/advance.dm | 21 +- code/datums/diseases/appendicitis.dm | 9 +- code/datums/diseases/brainrot.dm | 17 +- code/datums/diseases/wizarditis.dm | 3 +- code/datums/helper_datums/global_iterator.dm | 2 +- code/datums/mind.dm | 49 +- code/datums/spells/charge.dm | 82 + code/datums/spells/projectile.dm | 2 +- code/datums/supplypacks.dm | 34 + code/datums/uplink_item.dm | 19 +- code/datums/wires/apc.dm | 9 +- code/datums/wires/syndicatebomb.dm | 4 + code/game/area/Space Station 13 areas.dm | 2 + code/game/atoms.dm | 7 +- code/game/atoms_movable.dm | 1 - code/game/dna.dm | 2 +- code/game/gamemodes/changeling/changeling.dm | 2 + .../gamemodes/changeling/changeling_powers.dm | 149 +- code/game/gamemodes/cult/ritual.dm | 4 +- code/game/gamemodes/cult/talisman.dm | 24 +- .../game/gamemodes/malfunction/malfunction.dm | 8 +- code/game/gamemodes/meteor/meteors.dm | 77 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 63 +- code/game/gamemodes/sandbox/h_sandbox.dm | 43 +- code/game/gamemodes/traitor/double_agents.dm | 19 +- code/game/gamemodes/traitor/traitor.dm | 6 +- code/game/gamemodes/wizard/artefact.dm | 7 + code/game/gamemodes/wizard/rightandwrong.dm | 144 +- code/game/gamemodes/wizard/spellbook.dm | 166 +- code/game/machinery/camera/camera_assembly.dm | 4 +- code/game/machinery/camera/tracking.dm | 2 +- .../machinery/computer/HolodeckControl.dm | 19 +- code/game/machinery/computer/ai_core.dm | 23 +- code/game/machinery/computer/arcade.dm | 391 ++- .../game/machinery/computer/buildandrepair.dm | 12 +- code/game/machinery/computer/card.dm | 24 +- code/game/machinery/computer/cloning.dm | 6 +- .../game/machinery/computer/communications.dm | 6 +- code/game/machinery/computer/medical.dm | 6 +- code/game/machinery/computer/robot.dm | 2 +- code/game/machinery/doors/poddoor.dm | 6 + code/game/machinery/flasher.dm | 11 +- code/game/machinery/kitchen/microwave.dm | 6 +- code/game/machinery/kitchen/monkeyrecycler.dm | 6 +- code/game/machinery/kitchen/smartfridge.dm | 2 +- code/game/machinery/recharger.dm | 2 - code/game/machinery/recycler.dm | 6 + code/game/machinery/syndicatebomb.dm | 100 +- code/game/machinery/turrets.dm | 2 +- code/game/machinery/vending.dm | 109 +- code/game/mecha/equipment/tools/tools.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 15 +- code/game/mecha/mech_fabricator.dm | 2 +- code/game/objects/effects/aliens.dm | 4 +- code/game/objects/effects/decals/remains.dm | 17 +- code/game/objects/effects/effect_system.dm | 3 +- code/game/objects/effects/mines.dm | 12 +- code/game/objects/explosion.dm | 31 +- code/game/objects/items.dm | 7 +- code/game/objects/items/apc_frame.dm | 2 +- code/game/objects/items/blueprints.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 2 +- code/game/objects/items/devices/PDA/cart.dm | 42 +- code/game/objects/items/devices/PDA/radio.dm | 2 +- code/game/objects/items/devices/camera_bug.dm | 4 +- code/game/objects/items/devices/flashlight.dm | 1 + .../objects/items/devices/lightreplacer.dm | 2 +- .../objects/items/devices/radio/beacon.dm | 2 +- .../items/devices/radio/encryptionkey.dm | 32 +- .../objects/items/devices/radio/headset.dm | 12 +- .../objects/items/devices/radio/intercom.dm | 5 +- code/game/objects/items/devices/scanners.dm | 4 +- .../objects/items/devices/transfer_valve.dm | 19 +- code/game/objects/items/devices/uplinks.dm | 2 +- code/game/objects/items/latexballoon.dm | 2 +- code/game/objects/items/shooting_range.dm | 2 +- code/game/objects/items/stacks/medical.dm | 105 +- code/game/objects/items/toys.dm | 325 ++- code/game/objects/items/trash.dm | 2 +- .../items/weapons/grenades/chem_grenade.dm | 4 +- .../items/weapons/grenades/ghettobomb.dm | 2 +- .../objects/items/weapons/grenades/grenade.dm | 5 +- .../objects/items/weapons/implants/implant.dm | 6 +- .../objects/items/weapons/melee/energy.dm | 19 +- .../objects/items/weapons/storage/bible.dm | 28 +- .../objects/items/weapons/storage/storage.dm | 10 +- .../objects/items/weapons/tanks/jetpack.dm | 12 +- code/game/objects/items/weapons/twohanded.dm | 2 +- .../objects/items/weapons/vending_items.dm | 58 + .../crates_lockers/closets/syndicate.dm | 2 +- .../crates_lockers/closets/wardrobe.dm | 8 +- .../structures/crates_lockers/crates.dm | 20 - code/game/objects/structures/flora.dm | 6 + code/game/objects/structures/musician.dm | 2 +- code/game/objects/structures/transit_tubes.dm | 32 +- code/game/sound.dm | 26 +- code/game/turfs/simulated.dm | 2 + code/game/verbs/ooc.dm | 23 +- code/modules/admin/NewBan.dm | 4 +- code/modules/admin/admin.dm | 19 + code/modules/admin/admin_ranks.dm | 2 +- code/modules/admin/admin_verbs.dm | 2 + code/modules/admin/newbanjob.dm | 4 +- code/modules/admin/topic.dm | 16 +- code/modules/admin/verbs/debug.dm | 5 +- code/modules/admin/verbs/pray.dm | 2 +- code/modules/awaymissions/loot.dm | 2 +- code/modules/client/preferences_toggles.dm | 5 +- code/modules/clothing/gloves/miscellaneous.dm | 6 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/clothing/suits/jobs.dm | 1 + code/modules/clothing/under/color.dm | 26 +- .../detectivework/footprints_and_rag.dm | 3 - code/modules/events/event_manager.dm | 1 + code/modules/events/holiday/xmas.dm | 5 +- code/modules/events/shuttle_loan.dm | 12 +- code/modules/events/spacevine.dm | 4 +- code/modules/events/vent_clog.dm | 2 +- code/modules/food/recipes_microwave.dm | 4 +- code/modules/hydroponics/grown.dm | 52 +- code/modules/hydroponics/hydroponics.dm | 58 +- code/modules/hydroponics/seeds.dm | 20 +- code/modules/library/lib_items.dm | 2 +- code/modules/mining/mine_turfs.dm | 2 +- code/modules/mining/ores_coins.dm | 8 +- code/modules/mob/inventory.dm | 4 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../modules/mob/living/carbon/alien/screen.dm | 9 +- .../carbon/alien/special/alien_embryo.dm | 1 + .../living/carbon/alien/special/facehugger.dm | 7 +- code/modules/mob/living/carbon/carbon.dm | 13 +- .../mob/living/carbon/human/examine.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 37 +- .../mob/living/carbon/human/human_defense.dm | 112 +- .../mob/living/carbon/human/human_helpers.dm | 4 +- .../mob/living/carbon/human/inventory.dm | 15 +- code/modules/mob/living/carbon/human/life.dm | 6 - .../mob/living/carbon/human/update_icons.dm | 58 +- .../mob/living/carbon/metroid/metroid.dm | 10 +- code/modules/mob/living/carbon/monkey/life.dm | 3 + code/modules/mob/living/living.dm | 3 +- code/modules/mob/living/living_defines.dm | 6 - code/modules/mob/living/say.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 17 +- code/modules/mob/living/silicon/ai/say.dm | 15 +- .../mob/living/silicon/ai/vox_sounds.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 26 - code/modules/mob/living/silicon/silicon.dm | 27 +- .../mob/living/simple_animal/hostile/tree.dm | 14 + code/modules/mob/mob.dm | 6 +- code/modules/mob/mob_defines.dm | 6 - code/modules/mob/mob_grab.dm | 3 +- code/modules/mob/mob_helpers.dm | 8 +- code/modules/mob/mob_movement.dm | 3 +- code/modules/mob/new_player/login.dm | 3 + code/modules/mob/transform_procs.dm | 7 +- code/modules/nano/nanoexternal.dm | 2 +- code/modules/nano/nanoui.dm | 2 +- code/modules/power/apc.dm | 113 +- code/modules/power/lighting.dm | 1 - code/modules/power/turbine.dm | 174 +- .../projectiles/guns/energy/special.dm | 49 - code/modules/projectiles/guns/magic.dm | 53 + code/modules/projectiles/guns/magic/staff.dm | 23 + code/modules/projectiles/guns/magic/wand.dm | 119 + .../projectiles/guns/projectile/shotgun.dm | 6 +- code/modules/projectiles/projectile/magic.dm | 223 ++ code/modules/reagents/Chemistry-Holder.dm | 6 +- code/modules/reagents/Chemistry-Machinery.dm | 5 +- code/modules/reagents/Chemistry-Reagents.dm | 16 +- code/modules/reagents/Chemistry-Recipes.dm | 25 +- code/modules/reagents/grenade_launcher.dm | 4 +- .../reagent_containers/food/snacks.dm | 13 +- .../reagent_containers/glass/bottle.dm | 10 + code/modules/reagents/syringe_gun.dm | 155 +- code/modules/recycling/conveyor2.dm | 9 +- code/modules/recycling/disposal.dm | 9 +- code/modules/research/designs.dm | 21 +- .../scripting/Implementations/Telecomms.dm | 4 +- .../scripting/Implementations/_Logic.dm | 3 - code/modules/surgery/appendectomy.dm | 1 + code/modules/surgery/cavity_implant.dm | 1 + code/modules/surgery/gender_reassignment.dm | 2 + code/modules/surgery/generic_steps.dm | 17 +- code/modules/surgery/helpers.dm | 18 +- code/modules/surgery/implant_removal.dm | 2 + code/modules/surgery/limb augmentation.dm | 78 + code/modules/surgery/lipoplasty.dm | 2 + .../surgery/multiple_location_example.dm | 54 + code/modules/surgery/organs/augments.dm | 51 + code/modules/surgery/organs/helpers.dm | 11 +- code/modules/surgery/organs/organ.dm | 62 +- code/modules/surgery/surgery.dm | 32 +- code/modules/surgery/surgery_step.dm | 42 +- code/modules/surgery/xenomorph_removal.dm | 15 +- code/modules/telesci/telesci_computer.dm | 2 +- code/unused/powerarmor/powerarmor.dm | 2 +- .../unused/powerarmor/powerarmorcomponents.dm | 4 +- code/world.dm | 2 + config/admins.txt | 7 +- html/changelog.html | 119 +- html/longchangelog.html | 8 +- icons/mob/augments.dmi | Bin 0 -> 1364 bytes icons/mob/back.dmi | Bin 61700 -> 61768 bytes icons/mob/items_lefthand.dmi | Bin 145655 -> 147354 bytes icons/mob/items_righthand.dmi | Bin 147007 -> 149332 bytes icons/mob/mask.dmi | Bin 25845 -> 27052 bytes icons/mob/mob.dmi | Bin 178925 -> 181091 bytes icons/mob/screen_gen.dmi | Bin 112366 -> 115440 bytes icons/obj/assemblies.dmi | Bin 20122 -> 20569 bytes icons/obj/chemical.dmi | Bin 29386 -> 29490 bytes icons/obj/closet.dmi | Bin 75644 -> 76050 bytes icons/obj/device.dmi | Bin 20405 -> 22600 bytes icons/obj/flora/pinetrees.dmi | Bin 34936 -> 35897 bytes icons/obj/gun.dmi | Bin 39055 -> 41333 bytes icons/obj/harvest.dmi | Bin 31736 -> 32334 bytes icons/obj/hydroponics.dmi | Bin 150629 -> 151998 bytes icons/obj/library.dmi | Bin 18517 -> 26874 bytes icons/obj/seeds.dmi | Bin 13302 -> 13446 bytes icons/obj/status_display.dmi | Bin 20632 -> 25774 bytes icons/obj/surgery.dmi | Bin 9935 -> 13681 bytes icons/obj/tank.dmi | Bin 2362 -> 6295 bytes icons/obj/toy.dmi | Bin 10566 -> 6611 bytes icons/obj/vending_restock.dmi | Bin 0 -> 986 bytes icons/obj/weapons.dmi | Bin 21553 -> 23560 bytes ...aStation.v38K.dmm => MetaStation.v38N.dmm} | 2240 +++++++++-------- maps/RandomZLevels/centcomAway.dmm | 37 +- maps/tgstation.2.1.2.dmm | 98 +- nano/css/shared.css | 3 +- sound/items/cardshuffle.ogg | Bin 0 -> 22053 bytes sound/vox_fem/{centcomm.ogg => centcom.ogg} | Bin 10016 -> 10015 bytes tgstation.dme | 52 +- tools/HitboxExpander/.gitignore | 3 + tools/HitboxExpander/README | 10 + tools/HitboxExpander/hitbox_expander.py | 107 + .../third_party/Imaging-1.1.7.zip | Bin 0 -> 952676 bytes tools/HitboxExpander/third_party/zlib.zip | Bin 0 -> 141415 bytes 255 files changed, 5200 insertions(+), 2432 deletions(-) create mode 100644 code/datums/spells/charge.dm create mode 100644 code/game/objects/items/weapons/vending_items.dm create mode 100644 code/modules/projectiles/guns/magic.dm create mode 100644 code/modules/projectiles/guns/magic/staff.dm create mode 100644 code/modules/projectiles/guns/magic/wand.dm create mode 100644 code/modules/projectiles/projectile/magic.dm create mode 100644 code/modules/surgery/limb augmentation.dm create mode 100644 code/modules/surgery/multiple_location_example.dm create mode 100644 code/modules/surgery/organs/augments.dm create mode 100644 icons/mob/augments.dmi create mode 100644 icons/obj/vending_restock.dmi rename maps/{MetaStation.v38K.dmm => MetaStation.v38N.dmm} (92%) create mode 100644 sound/items/cardshuffle.ogg rename sound/vox_fem/{centcomm.ogg => centcom.ogg} (96%) create mode 100644 tools/HitboxExpander/.gitignore create mode 100644 tools/HitboxExpander/README create mode 100644 tools/HitboxExpander/hitbox_expander.py create mode 100644 tools/HitboxExpander/third_party/Imaging-1.1.7.zip create mode 100644 tools/HitboxExpander/third_party/zlib.zip diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 39b63cea985..86b44a24621 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -13,10 +13,10 @@ #define USEDELAY 16 // For adding extra delay to heavy items, not currently used #define NOSHIELD 32 // weapon not affected by shield #define CONDUCT 64 // conducts electricity (metal etc.) +#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define NOBLOODY 65535 // used by objects that don't want to get bloodied #define GLASSESCOVERSEYES 1024 #define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index 19c46e4a433..cee214b576f 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -77,3 +77,7 @@ #define TR_KEEPSE 32 // changelings shouldn't edit the DNA's SE when turning into a monkey #define TR_DEFAULTMSG 64 #define TR_KEEPSRC 128 + +//Organ stuff, It's here because "Genetics" is the most relevant file for organs +#define ORGAN_ORGANIC 1 +#define ORGAN_ROBOTIC 2 \ No newline at end of file diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index a32c3d72c11..f2a2b9140d9 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -12,6 +12,12 @@ return null return 0 +/proc/get_area_master(O) + var/area/A = get_area(O) + if(A && A.master) + A = A.master + return A + /proc/get_area_name(N) //get area by its name for(var/area/A in world) if(A.name == N) diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 85c8648f0dd..b894a997d47 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -47,16 +47,17 @@ var/religion_name = null if (station_name) return station_name - var/short_name = pick("Station", "Fortress", "Frontier", "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk", "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb", "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive", "Complex", "Base", "Facility", "Depot", "Outpost", "Installation", "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform", "Construct", "Hangar", "Prison", "Center", "Port", "Waystation", "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object", "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp") + if(events) + var/short_name = pick("Station", "Fortress", "Frontier", "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk", "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb", "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive", "Complex", "Base", "Facility", "Depot", "Outpost", "Installation", "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform", "Construct", "Hangar", "Prison", "Center", "Port", "Waystation", "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object", "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp") - station_name = new_station_name() + station_name = new_station_name() - if (config && config.server_name) - world.name = "[config.server_name]: [short_name]" - else - world.name = station_name + if (config && config.server_name) + world.name = "[config.server_name]: [short_name]" + else + world.name = station_name - return station_name + return station_name /proc/new_station_name() var/random = rand(1,5) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 6b4dcda2c46..bf1bacc94f8 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -1,9 +1,12 @@ //Returns the world time in english proc/worldtime2text() - return "[round(world.time / 36000)+12]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]" + return gameTimestamp("hh:mm") -proc/time_stamp() - return time2text(world.timeofday, "hh:mm:ss") +proc/time_stamp(var/format = "hh:mm:ss") + return time2text(world.timeofday, format) + +proc/gameTimestamp(var/format = "hh:mm:ss") // Get the game time in text + return time2text(world.time - timezoneOffset + 432000, format) /* Preserving this so future generations can see how fucking retarded some people are proc/time_stamp() diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c83720851a5..03cdb8ce70b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -337,7 +337,7 @@ Turf and target are seperate in case you want to teleport some distance from a t //Picks a string of symbols to display as the law number for hacked or ion laws /proc/ionnum() - return "[pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")]" + return "[pick("!","@","#","$","%","^","&")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")]" //Returns a list of unslaved cyborgs /proc/active_free_borgs() @@ -1256,3 +1256,17 @@ var/list/WALLITEMS = list( else user << "\blue [target] is empty!" return + +proc/check_target_facings(mob/living/initator, mob/living/target) + /*This can be used to add additional effects on interactions between mobs depending on how the mobs are facing each other, such as adding a crit damage to blows to the back of a guy's head. + Given how click code currently works (Nov '13), the initiating mob will be facing the target mob most of the time + That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/ + if(!ismob(target) || target.lying) + //Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side + return + if(initator.dir == target.dir) //mobs are facing the same direction + return 1 + if(initator.dir + 4 == target.dir || initator.dir - 4 == target.dir) //mobs are facing each other + return 2 + if(initator.dir + 2 == target.dir || initator.dir - 2 == target.dir || initator.dir + 6 == target.dir || initator.dir - 6 == target.dir) //Initating mob is looking at the target, while the target mob is looking in a direction perpendicular to the 1st + return 3 diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 1a2880b341a..4b5a086baf3 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -1,10 +1,12 @@ var/global/obj/effect/overlay/plmaster = null // atmospheric overlay for plasma var/global/obj/effect/overlay/slmaster = null // atmospheric overlay for sleeping gas +var/admin_notice = null // Admin notice that all clients see when joining the server // nanomanager, the manager for Nano UIs var/datum/nanomanager/nanomanager = new() +var/timezoneOffset = 0 // The difference betwen midnight (of the host computer) and 0 world.ticks. // For FTP requests. (i.e. downloading runtime logs.) // However it'd be ok to use for accessing attack logs and such too, which are even laggier. diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 6c160b710a5..8eec31da915 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -59,7 +59,7 @@ if(stat || paralysis || stunned || weakened) return - face_atom(A) // change direction to face what you clicked on + face_atom(A) if(next_move > world.time) // in the year 2000... return diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index a98f1eb2c07..2a3651af301 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -103,3 +103,5 @@ #define ui_iarrowleft "SOUTH-1,11" #define ui_iarrowright "SOUTH-1,13" + +#define ui_lingstingdisplay "1,6:15" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index f7ee1b2150b..d2100810193 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -89,6 +89,7 @@ var/datum/global_hud/global_hud = new() var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) var/obj/screen/lingchemdisplay + var/obj/screen/lingstingdisplay var/obj/screen/blobpwrdisplay var/obj/screen/blobhealthdisplay var/obj/screen/alien_plasma_display diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 04b32735c09..1fa069b8a2c 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -282,6 +282,12 @@ lingchemdisplay.layer = 20 lingchemdisplay.invisibility = 101 + lingstingdisplay = new /obj/screen() + lingstingdisplay.name = "current sting" + lingstingdisplay.screen_loc = ui_lingstingdisplay + lingstingdisplay.layer = 20 + lingstingdisplay.invisibility = 101 + mymob.blind = new /obj/screen() mymob.blind.icon = 'icons/mob/screen_full.dmi' mymob.blind.icon_state = "blackimageoverlay" @@ -310,7 +316,7 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) mymob.client.screen += adding + hotkeybuttons inventory_shown = 0; diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 28676afc1e2..5624617ece2 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -142,6 +142,12 @@ lingchemdisplay.layer = 20 lingchemdisplay.invisibility = 101 + lingstingdisplay = new /obj/screen() + lingstingdisplay.name = "current sting" + lingstingdisplay.screen_loc = ui_lingstingdisplay + lingstingdisplay.layer = 20 + lingstingdisplay.invisibility = 101 + mymob.blind = new /obj/screen() mymob.blind.icon = 'icons/mob/screen_full.dmi' mymob.blind.icon_state = "blackimageoverlay" @@ -162,5 +168,5 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other \ No newline at end of file diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 13a02e48613..caa18cf47a3 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -179,6 +179,10 @@ var/mob/living/carbon/human/H = usr H.quick_equip() + if("current sting") + var/mob/living/carbon/U = usr + U.unset_sting() + if("resist") if(isliving(usr)) var/mob/living/L = usr @@ -201,26 +205,6 @@ usr.hud_used.move_intent.icon_state = "running" if(istype(usr,/mob/living/carbon/alien/humanoid)) usr.update_icons() - if("m_intent") - if(!usr.m_int) - switch(usr.m_intent) - if("run") - usr.m_int = "13,14" - if("walk") - usr.m_int = "14,14" - if("face") - usr.m_int = "15,14" - else - usr.m_int = null - if("walk") - usr.m_intent = "walk" - usr.m_int = "14,14" - if("face") - usr.m_intent = "face" - usr.m_int = "15,14" - if("run") - usr.m_intent = "run" - usr.m_int = "13,14" if("Reset Machine") usr.unset_machine() if("internal") diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 1d14862f428..69428960279 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -86,7 +86,7 @@ /obj/machinery/teleport/hub/attack_ghost(mob/user as mob) var/atom/l = loc var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z)) - if(com.locked) + if(com && com.locked) user.loc = get_turf(com.locked) /obj/effect/portal/attack_ghost(mob/user as mob) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 1d79994ef81..e7f606789e5 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -17,8 +17,13 @@ /atom/proc/attack_hand(mob/user as mob) return -/mob/living/carbon/human/RestrainedClickOn(var/atom/A) +/* +/mob/living/carbon/human/RestrainedClickOn(var/atom/A) ---carbons will handle this return +*/ + +/mob/living/carbon/RestrainedClickOn(var/atom/A) + return 0 /mob/living/carbon/human/RangedAttack(var/atom/A) if(!gloves && !mutations.len) return @@ -51,6 +56,7 @@ /mob/living/RestrainedClickOn(var/atom/A) return + /* Monkeys */ @@ -67,6 +73,8 @@ things considerably */ /mob/living/carbon/monkey/RestrainedClickOn(var/atom/A) + if(..()) + return if(a_intent != "harm" || !ismob(A)) return if(istype(wear_mask, /obj/item/clothing/mask/muzzle)) return diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index c325a0a6a0d..03c96146ea8 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -529,7 +529,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
    \nSupply Points: [supply_shuttle.points]
    \n
    [supply_shuttle.moving ? "\n*Must be away to order items*
    \n
    ":supply_shuttle.at_station ? "\n*Must be away to order items*
    \n
    ":"\nOrder items
    \n
    "] [supply_shuttle.moving ? "\n*Shuttle already called*
    \n
    ":supply_shuttle.at_station ? "\nSend away
    \n
    ":"\nSend to station
    \n
    "] - [supply_shuttle.shuttle_loan ? (supply_shuttle.shuttle_loan.dispatched ? "\n*Shuttle loaned to CentComm*
    \n
    " : "\nLoan shuttle to CentComm (5 mins duration)
    \n
    ") : "\n*No pending external shuttle requests*
    \n
    "] + [supply_shuttle.shuttle_loan ? (supply_shuttle.shuttle_loan.dispatched ? "\n*Shuttle loaned to Centcom*
    \n
    " : "\nLoan shuttle to Centcom (5 mins duration)
    \n
    ") : "\n*No pending external shuttle requests*
    \n
    "] \nView requests
    \n
    \nView orders
    \n
    \nClose
    @@ -572,7 +572,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle supply_shuttle.sell() supply_shuttle.send() supply_shuttle.shuttle_loan.loan_shuttle() - temp = "The supply shuttle has been loaned to CentComm.

    Main Menu" + temp = "The supply shuttle has been loaned to Centcom.

    Main Menu" post_signal("supply") else temp = "You can not loan the supply shuttle at this time.

    Main Menu" @@ -586,7 +586,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle if(href_list["loan"] && supply_shuttle.shuttle_loan) if(!supply_shuttle.shuttle_loan.dispatched) supply_shuttle.shuttle_loan.loan_shuttle() - temp = "The supply shuttle has been loaned to CentComm.

    Main Menu" + temp = "The supply shuttle has been loaned to Centcom.

    Main Menu" post_signal("supply") else temp = "You can not loan the supply shuttle at this time.

    Main Menu" diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index b84ae936c0a..97bc448a4c2 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -90,16 +90,25 @@ datum/controller/vote var/list/winners = get_result() var/text if(winners.len > 0) - if(winners.len > 1) - text = "Vote Tied Between:\n" - for(var/option in winners) - text += "\t[option]\n" - . = pick(winners) - text += "Vote Result: [.]" + if(question) text += "[question]" + else text += "[capitalize(mode)] Vote" + for(var/i=1,i<=choices.len,i++) + var/votes = choices[choices[i]] + if(!votes) votes = 0 + text += "\n[choices[i]]: [votes]" + if(mode != "custom") + if(winners.len > 1) + text = "\nVote Tied Between:" + for(var/option in winners) + text += "\n\t[option]" + . = pick(winners) + text += "\nVote Result: [.]" + else + text += "\nDid not vote: [clients.len-voted.len]" else text += "Vote Result: Inconclusive - No Votes!" log_vote(text) - world << "[text]" + world << "\n[text]" return . proc/result() @@ -167,7 +176,7 @@ datum/controller/vote if(mode == "custom") text += "\n[question]" log_vote(text) - world << "[text]\nType vote to place your votes.\nYou have [config.vote_period/10] seconds to vote." + world << "\n[text]\nType vote to place your votes.\nYou have [config.vote_period/10] seconds to vote." time_remaining = round(config.vote_period/10) return 1 return 0 diff --git a/code/datums/disease.dm b/code/datums/disease.dm index 8567c4d25c6..e94aeb03665 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -49,6 +49,8 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease var/can_carry = 1 // If the disease allows "carriers". // if hidden[1] is true, then virus is hidden from medical scanners // if hidden[2] is true, then virus is hidden from PANDEMIC machine + var/requires = 0 + var/list/required_limb = list() /datum/disease/proc/stage_act() @@ -141,6 +143,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease /datum/disease/proc/process() + if(!holder) active_diseases -= src return @@ -181,6 +184,13 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease /datum/disease/New(var/process=1, var/datum/disease/D)//process = 1 - adding the object to global list. List is processed by master controller. + if(requires == 1) + if(ishuman(affected_mob)) + var/mob/living/carbon/human/H = affected_mob + if(!H.getlimb(required_limb)) + cure(1) + return + cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New() if(process) // Viruses in list are considered active. active_diseases += src diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 4c633a7b7db..ee8f7c2ae55 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -7,8 +7,6 @@ */ -#define RANDOM_STARTING_LEVEL 2 - var/list/archive_diseases = list() // The order goes from easy to cure to hard to cure. @@ -62,7 +60,7 @@ var/list/advance_cures = list( if(!symptoms || !symptoms.len) if(!D || !D.symptoms || !D.symptoms.len) - symptoms = GenerateSymptoms() + symptoms = GenerateSymptoms(0, 2) else for(var/datum/symptom/S in D.symptoms) symptoms += new S.type @@ -136,7 +134,7 @@ var/list/advance_cures = list( return 0 // Will generate new unique symptoms, use this if there are none. Returns a list of symptoms that were generated. -/datum/disease/advance/proc/GenerateSymptoms(var/type_level_limit = RANDOM_STARTING_LEVEL, var/amount_get = 0) +/datum/disease/advance/proc/GenerateSymptoms(var/level_min, var/level_max, var/amount_get = 0) var/list/generated = list() // Symptoms we generated. @@ -144,13 +142,12 @@ var/list/advance_cures = list( var/list/possible_symptoms = list() for(var/symp in list_symptoms) var/datum/symptom/S = new symp - if(S.level <= type_level_limit) + if(S.level >= level_min && S.level <= level_max) if(!HasSymptom(S)) possible_symptoms += S if(!possible_symptoms.len) - return - //error("Advance Disease - We weren't able to get any possible symptoms in GenerateSymptoms([type_level_limit], [amount_get])") + return generated // Random chance to get more than one symptom var/number_of = amount_get @@ -159,10 +156,8 @@ var/list/advance_cures = list( while(prob(20)) number_of += 1 - for(var/i = 1; number_of >= i; i++) - var/datum/symptom/S = pick(possible_symptoms) - generated += S - possible_symptoms -= S + for(var/i = 1; number_of >= i && possible_symptoms.len; i++) + generated += pick_n_take(possible_symptoms) return generated @@ -269,8 +264,8 @@ var/list/advance_cures = list( return // Randomly generate a symptom, has a chance to lose or gain a symptom. -/datum/disease/advance/proc/Evolve(var/level = 2) - var/s = safepick(GenerateSymptoms(level, 1)) +/datum/disease/advance/proc/Evolve(var/min_level, var/max_level) + var/s = safepick(GenerateSymptoms(min_level, max_level, 1)) if(s) AddSymptom(s) Refresh(1) diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index a5298c7d415..7078ea3df42 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -12,12 +12,16 @@ severity = "Medium" longevity = 1000 hidden = list(0, 1) + requires = 1 + required_limb = list(/obj/item/organ/limb/chest) /datum/disease/appendicitis/stage_act() ..() + switch(stage) if(1) - if(prob(5)) affected_mob.emote("cough") + if(prob(5)) + affected_mob.emote("cough") if(2) var/obj/item/organ/appendix/A = affected_mob.getorgan(/obj/item/organ/appendix) if(A) @@ -41,4 +45,5 @@ else affected_mob << "You gag as you want to throw up, but there's nothing in your stomach!" affected_mob.Weaken(10) - affected_mob.adjustToxLoss(3) \ No newline at end of file + affected_mob.adjustToxLoss(3) + diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 55e5db82d6b..db72c42f8b8 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -11,9 +11,12 @@ cure_chance = 15//higher chance to cure, since two reagents are required desc = "This disease destroys the braincells, causing brain fever, brain necrosis and general intoxication." severity = "Major" + requires = 1 + required_limb = list(/obj/item/organ/limb/head) -/datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist +/datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist -ACTUALLY Removed rather than commented out, I don't see it returning - RR ..() + switch(stage) if(2) if(prob(2)) @@ -35,21 +38,12 @@ affected_mob.updatehealth() if(prob(2)) affected_mob << "\red Your try to remember something important...but can't." -/* if(prob(10)) - affected_mob.adjustToxLoss(3) - affected_mob.updatehealth() - if(prob(2)) - affected_mob << "\red Your head hurts." */ + if(4) if(prob(2)) affected_mob.emote("stare") if(prob(2)) affected_mob.emote("drool") -/* if(prob(15)) - affected_mob.adjustToxLoss(4) - affected_mob.updatehealth() - if(prob(2)) - affected_mob << "\red Your head hurts." */ if(prob(15) && affected_mob.getBrainLoss()<=98) //shouldn't retard you to death now affected_mob.adjustBrainLoss(3) affected_mob.updatehealth() @@ -64,4 +58,5 @@ affected_mob.emote("snore") if(prob(15)) affected_mob.stuttering += 3 + return \ No newline at end of file diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index ebba6f645f4..4b2fd2ea24f 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -11,7 +11,8 @@ permeability_mod = 0.75 desc = "Some speculate, that this virus is the cause of Wizard Federation existance. Subjects affected show the signs of mental retardation, yelling obscure sentences or total gibberish. On late stages subjects sometime express the feelings of inner power, and, cite, 'the ability to control the forces of cosmos themselves!' A gulp of strong, manly spirits usually reverts them to normal, humanlike, condition." severity = "Major" - + requires = 1 + required_limb = list(/obj/item/organ/limb/head) /* BIRUZ BENNAR diff --git a/code/datums/helper_datums/global_iterator.dm b/code/datums/helper_datums/global_iterator.dm index 0020859f1d9..092b433b25f 100644 --- a/code/datums/helper_datums/global_iterator.dm +++ b/code/datums/helper_datums/global_iterator.dm @@ -12,7 +12,7 @@ Control functions: If autostart == TRUE, the loop will be started immediately after datum creation. start(list/arguments) - starts the loop. Takes arguments(optional) as a list, which is then used - by process() proc. Returns null if datum already active, 1 if loop started succesfully and 0 if there's + by process() proc. Returns null if datum already active, 1 if loop started successfully and 0 if there's an error in supplied arguments (not list or empty list). stop() - stops the loop. Returns null if datum is already inactive and 1 on success. diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 1683aceca3f..9f058a3e9a6 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -66,6 +66,9 @@ datum/mind current.verbs -= /datum/changeling/proc/EvolutionMenu current.mind = null + nanomanager.user_transferred(current, new_character) + + if(key) if(new_character.key != key) //if we're transfering into a body with a key associated which is not ours new_character.ghostize(1) //we'll need to ghostize so that key isn't mobless. @@ -75,8 +78,6 @@ datum/mind if(new_character.mind) //disassociate any mind currently in our new body's mind variable new_character.mind.current = null - nanomanager.user_transferred(current, new_character) - current = new_character //associate ourself with our new body new_character.mind = src //and associate our new body with ourself @@ -508,7 +509,7 @@ datum/mind ticker.mode.update_rev_icons_removed(src) special_role = null message_admins("[key_name_admin(usr)] has de-rev'ed [current].") - log_admin("[key_name_admin(usr)] has de-rev'ed [current].") + log_admin("[key_name(usr)] has de-rev'ed [current].") if("rev") if(src in ticker.mode.head_revolutionaries) @@ -523,7 +524,7 @@ datum/mind ticker.mode.update_rev_icons_added(src) special_role = "Revolutionary" message_admins("[key_name_admin(usr)] has rev'ed [current].") - log_admin("[key_name_admin(usr)] has rev'ed [current].") + log_admin("[key_name(usr)] has rev'ed [current].") if("headrev") if(src in ticker.mode.revolutionaries) @@ -549,7 +550,7 @@ datum/mind ticker.mode.update_rev_icons_added(src) special_role = "Head Revolutionary" message_admins("[key_name_admin(usr)] has head-rev'ed [current].") - log_admin("[key_name_admin(usr)] has head-rev'ed [current].") + log_admin("[key_name(usr)] has head-rev'ed [current].") if("autoobjectives") ticker.mode.forge_revolutionary_objectives(src) @@ -599,7 +600,7 @@ datum/mind current << "\red You have been brainwashed! You are no longer a cultist!" memory = "" message_admins("[key_name_admin(usr)] has de-cult'ed [current].") - log_admin("[key_name_admin(usr)] has de-cult'ed [current].") + log_admin("[key_name(usr)] has de-cult'ed [current].") if("cultist") if(!(src in ticker.mode.cult)) ticker.mode.cult += src @@ -611,7 +612,7 @@ datum/mind if (istype(cult)) cult.memorize_cult_objectives(src) message_admins("[key_name_admin(usr)] has cult'ed [current].") - log_admin("[key_name_admin(usr)] has cult'ed [current].") + log_admin("[key_name(usr)] has cult'ed [current].") if("tome") var/mob/living/carbon/human/H = current if (istype(H)) @@ -642,7 +643,7 @@ datum/mind special_role = null current.spellremove(current) current << "\red You have been brainwashed! You are no longer a wizard!" - log_admin("[key_name_admin(usr)] has de-wizard'ed [current].") + log_admin("[key_name(usr)] has de-wizard'ed [current].") if("wizard") if(!(src in ticker.mode.wizards)) ticker.mode.wizards += src @@ -650,7 +651,7 @@ datum/mind //ticker.mode.learn_basic_spells(current) current << "\red You are the Space Wizard!" message_admins("[key_name_admin(usr)] has wizard'ed [current].") - log_admin("[key_name_admin(usr)] has wizard'ed [current].") + log_admin("[key_name(usr)] has wizard'ed [current].") if("lair") current.loc = pick(wizardstart) if("dressup") @@ -672,7 +673,7 @@ datum/mind if(changeling) del(changeling) current << "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!" message_admins("[key_name_admin(usr)] has de-changeling'ed [current].") - log_admin("[key_name_admin(usr)] has de-changeling'ed [current].") + log_admin("[key_name(usr)] has de-changeling'ed [current].") if("changeling") if(!(src in ticker.mode.changelings)) ticker.mode.changelings += src @@ -680,7 +681,7 @@ datum/mind special_role = "Changeling" current << "Your powers are awoken. A flash of memory returns to us...we are a changeling!" message_admins("[key_name_admin(usr)] has changeling'ed [current].") - log_admin("[key_name_admin(usr)] has changeling'ed [current].") + log_admin("[key_name(usr)] has changeling'ed [current].") if("autoobjectives") ticker.mode.forge_changeling_objectives(src) usr << "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually." @@ -706,7 +707,7 @@ datum/mind objectives-=O current << "\red You have been brainwashed! You are no longer a syndicate operative!" message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].") - log_admin("[key_name_admin(usr)] has de-nuke op'ed [current].") + log_admin("[key_name(usr)] has de-nuke op'ed [current].") if("nuclear") if(!(src in ticker.mode.syndicates)) ticker.mode.syndicates += src @@ -720,7 +721,7 @@ datum/mind ticker.mode.forge_syndicate_objectives(src) ticker.mode.greet_syndicate(src) message_admins("[key_name_admin(usr)] has nuke op'ed [current].") - log_admin("[key_name_admin(usr)] has nuke op'ed [current].") + log_admin("[key_name(usr)] has nuke op'ed [current].") if("lair") current.loc = get_turf(locate("landmark*Syndicate-Spawn")) if("dressup") @@ -757,7 +758,7 @@ datum/mind special_role = null current << "\red You have been brainwashed! You are no longer a traitor!" message_admins("[key_name_admin(usr)] has de-traitor'ed [current].") - log_admin("[key_name_admin(usr)] has de-traitor'ed [current].") + log_admin("[key_name(usr)] has de-traitor'ed [current].") if(isAI(current)) var/mob/living/silicon/ai/A = current A.set_zeroth_law("") @@ -770,7 +771,7 @@ datum/mind special_role = "traitor" current << "\red You are a traitor!" message_admins("[key_name_admin(usr)] has traitor'ed [current].") - log_admin("[key_name_admin(usr)] has traitor'ed [current].") + log_admin("[key_name(usr)] has traitor'ed [current].") if(isAI(current)) var/mob/living/silicon/ai/A = current call(/datum/game_mode/proc/add_law_zero)(A) @@ -825,7 +826,8 @@ datum/mind log_admin("[key_name(usr)] attempting to humanize [key_name(current)]") message_admins("\blue [key_name_admin(usr)] attempting to humanize [key_name_admin(current)]") H = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) - src = H.mind + if(H) + src = H.mind else if (href_list["silicon"]) switch(href_list["silicon"]) @@ -849,12 +851,12 @@ datum/mind A << "\red You have been patched! You are no longer malfunctioning!" message_admins("[key_name_admin(usr)] has de-malf'ed [A].") - log_admin("[key_name_admin(usr)] has de-malf'ed [A].") + log_admin("[key_name(usr)] has de-malf'ed [A].") if("malf") make_AI_Malf() message_admins("[key_name_admin(usr)] has malf'ed [current].") - log_admin("[key_name_admin(usr)] has malf'ed [current].") + log_admin("[key_name(usr)] has malf'ed [current].") if("unemag") var/mob/living/silicon/robot/R = current @@ -872,7 +874,7 @@ datum/mind R.module_state_3 = null R.contents -= R.module.emag message_admins("[key_name_admin(usr)] has unemag'ed [R].") - log_admin("[key_name_admin(usr)] has unemag'ed [R].") + log_admin("[key_name(usr)] has unemag'ed [R].") if("unemagcyborgs") if (istype(current, /mob/living/silicon/ai)) @@ -892,7 +894,7 @@ datum/mind R.module_state_3 = null R.contents -= R.module.emag message_admins("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.") - log_admin("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.") + log_admin("[key_name(usr)] has unemag'ed [ai]'s Cyborgs.") else if (href_list["common"]) switch(href_list["common"]) @@ -902,7 +904,7 @@ datum/mind if("takeuplink") take_uplink() memory = null//Remove any memory they may have had. - log_admin("[key_name_admin(usr)] removed [current]'s uplink.") + log_admin("[key_name(usr)] removed [current]'s uplink.") if("crystals") if (check_rights(R_FUN, 0)) var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink() @@ -913,11 +915,11 @@ datum/mind if (!isnull(crystals)) if (suplink) suplink.uses = crystals - log_admin("[key_name_admin(usr)] changed [current]'s telecrystal count to [crystals].") + log_admin("[key_name(usr)] changed [current]'s telecrystal count to [crystals].") if("uplink") if (!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors))) usr << "\red Equipping a syndicate failed!" - log_admin("[key_name_admin(usr)] attempted to give [current] an uplink.") + log_admin("[key_name(usr)] attempted to give [current] an uplink.") else if (href_list["obj_announce"]) var/obj_count = 1 @@ -1221,4 +1223,3 @@ datum/mind mind.special_role = "Cultist" - diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm new file mode 100644 index 00000000000..342e11049eb --- /dev/null +++ b/code/datums/spells/charge.dm @@ -0,0 +1,82 @@ +/obj/effect/proc_holder/spell/targeted/charge + name = "Charge" + desc = "This spell can be used to charge up spent magical artifacts, among other things." + + school = "transmutation" + charge_max = 600 + clothes_req = 0 + invocation = "DIRI CEL" + invocation_type = "whisper" + range = -1 + cooldown_min = 400 //50 deciseconds reduction per rank + include_user = 1 + + +/obj/effect/proc_holder/spell/targeted/charge/cast(list/targets) + for(var/mob/living/user in targets) + var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand()) + var/charged_item = null + var/burnt_out = 0 + for(var/obj/item in hand_items) + if(istype(item, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = item + if(G.affecting) + var/mob/M = G.affecting + if(M.spell_list.len != 0) + for(var/obj/effect/proc_holder/spell/S in M.spell_list) + S.charge_counter = S.charge_max + M <<"you feel raw magic flowing through you, it feels good!" + else + M <<"you feel very strange for a moment, but then it passes." + burnt_out = 1 + charged_item = M + break + else if(istype(item, /obj/item/weapon/spellbook/oneuse)) + var/obj/item/weapon/spellbook/oneuse/I = item + if(prob(80)) + user.visible_message("[I] catches fire!") + del(I) + else + I.used = 0 + charged_item = I + break + else if(istype(item, /obj/item/weapon/gun/magic)) + var/obj/item/weapon/gun/magic/I = item + if(prob(80)) + I.max_charges-- + if(I.max_charges <= 0) + I.max_charges = 0 + burnt_out = 1 + I.charges = I.max_charges + charged_item = I + break + else if(istype(item, /obj/item/weapon/cell/)) + var/obj/item/weapon/cell/C = item + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 + C.charge = C.maxcharge + charged_item = C + break + else if(item.contents) + var/obj/I = null + for(I in item.contents) + if(istype(I, /obj/item/weapon/cell/)) + var/obj/item/weapon/cell/C = I + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 + C.charge = C.maxcharge + item.update_icon() + charged_item = item + break + if(!charged_item) + user << "you feel magical power surging to your hands, but the feeling rapidly fades..." + else if(burnt_out) + user << "[charged_item] doesn't seem to be reacting to the spell..." + else + user << "[charged_item] suddenly feels very warm!" diff --git a/code/datums/spells/projectile.dm b/code/datums/spells/projectile.dm index 1df999cecce..c63922ef7a2 100644 --- a/code/datums/spells/projectile.dm +++ b/code/datums/spells/projectile.dm @@ -60,7 +60,7 @@ if(!projectile) // step and step_to sleeps so we'll have to check again. break - if(!proj_lingering && projectile.loc == current_loc) //if it didn't move since last time + if(!target || (!proj_lingering && projectile.loc == current_loc)) //if it didn't move since last time del(projectile) break diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index f1341df8477..f8609bf2908 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -744,6 +744,33 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine cost = 15 containername = "exotic seeds crate" +/datum/supply_packs/organic/vending + name = "Bartending Supply Crate" + contains = list(/obj/item/weapon/vending_refill/boozeomat, + /obj/item/weapon/vending_refill/coffee) + cost = 15 + containername = "bartending supply crate" + +/datum/supply_packs/organic/vending/snack + name = "Snack Supply Crate" + contains = list(/obj/item/weapon/vending_refill/snack, + /obj/item/weapon/vending_refill/snack, + /obj/item/weapon/vending_refill/snack) + cost = 15 + containername = "snacks supply crate" + +/datum/supply_packs/organic/vending/cola + name = "Softdrinks Supply Crate" + contains = list(/obj/item/weapon/vending_refill/cola, + /obj/item/weapon/vending_refill/cola) + cost = 15 + containername = "softdrinks supply crate" + +/datum/supply_packs/organic/vending/cigarette + name = "Cigarette Supply Crate" + contains = list(/obj/item/weapon/vending_refill/cigarette) + cost = 15 + containername = "cigarette supply crate" ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Materials /////////////////////////////////////// @@ -960,3 +987,10 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine cost = 30 containername = "crate" //let's keep it subtle, eh? contraband = 1 + +/datum/supply_packs/misc/autodrobe + name = "Autodrobe Supply crate" + contains = list(/obj/item/weapon/vending_refill/autodrobe, + /obj/item/weapon/vending_refill/autodrobe) + cost = 15 + containername = "autodrobe supply crate" diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index d2970154a55..67867b4049a 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -104,7 +104,7 @@ var/list/uplink_items = list() name = "C-20r Submachine Gun" desc = "A fully-loaded Scarborough Arms-developed submachine gun that fires 12mm automatic rounds with a 20-round magazine." item = /obj/item/weapon/gun/projectile/automatic/c20r - cost = 8 + cost = 7 gamemodes = list(/datum/game_mode/nuclear) /datum/uplink_item/dangerous/machinegun @@ -159,7 +159,7 @@ var/list/uplink_items = list() desc = "A chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger Cooperative, the deadly blend it comes stocked with will disorient, damage, and disable your foes... \ Use with extreme caution, to prevent exposure to yourself and your fellow operatives." item = /obj/item/weapon/reagent_containers/spray/chemsprayer/bioterror - cost = 15 + cost = 10 gamemodes = list(/datum/game_mode/nuclear) /datum/uplink_item/dangerous/gygax @@ -201,7 +201,7 @@ var/list/uplink_items = list() name = "Ammo-10mm" desc = "An additional 8-round 10mm magazine for use in the Stetchkin pistol." item = /obj/item/ammo_box/magazine/m10mm - cost = 2 + cost = 1 gamemodes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/machinegun @@ -241,7 +241,7 @@ var/list/uplink_items = list() name = "Stetchkin Silencer" desc = "Fitted for use on the Stetchkin pistol, this silencer will make its shots quieter when equipped onto it." item = /obj/item/weapon/silencer - cost = 3 + cost = 2 gamemodes = list(/datum/game_mode/nuclear) // STEALTHY TOOLS @@ -373,11 +373,18 @@ var/list/uplink_items = list() /datum/uplink_item/device_tools/syndicate_bomb name = "Syndicate Bomb" - desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 30 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ - You can wrench the bomb down to prevent removal. The crew may defuse the bomb." + desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 60 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ + You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." item = /obj/item/device/sbeacondrop/bomb cost = 5 +/datum/uplink_item/device_tools/syndicate_detonator + name = "Syndicate Detonator" + desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate. \ + Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of the blast radius before using the detonator." + item = /obj/item/device/syndicatedetonator + cost = 1 + /datum/uplink_item/device_tools/teleporter name = "Teleporter Circuit Board" desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur." diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm index 1e25dc45247..a7b7934e399 100644 --- a/code/datums/wires/apc.dm +++ b/code/datums/wires/apc.dm @@ -29,15 +29,16 @@ var/const/APC_WIRE_AI_CONTROL = 8 A.locked = 0 spawn(300) - A.locked = 1 - A.updateDialog() + if(A) + A.locked = 1 + A.updateDialog() if (APC_WIRE_MAIN_POWER1, APC_WIRE_MAIN_POWER2) if(A.shorted == 0) A.shorted = 1 spawn(1200) - if(!IsIndexCut(APC_WIRE_MAIN_POWER1) && !IsIndexCut(APC_WIRE_MAIN_POWER2)) + if(A && !IsIndexCut(APC_WIRE_MAIN_POWER1) && !IsIndexCut(APC_WIRE_MAIN_POWER2)) A.shorted = 0 A.updateDialog() @@ -46,7 +47,7 @@ var/const/APC_WIRE_AI_CONTROL = 8 A.aidisabled = 1 spawn(10) - if(!IsIndexCut(APC_WIRE_AI_CONTROL)) + if(A && !IsIndexCut(APC_WIRE_AI_CONTROL)) A.aidisabled = 0 A.updateDialog() diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 77700d9d028..8c60b0e4546 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -11,6 +11,8 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if /datum/wires/syndicatebomb/UpdatePulsed(var/index) var/obj/machinery/syndicatebomb/P = holder + if(P.degutted) + return switch(index) if(WIRE_BOOM) if (P.active) @@ -47,6 +49,8 @@ var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if /datum/wires/syndicatebomb/UpdateCut(var/index, var/mended) var/obj/machinery/syndicatebomb/P = holder + if(P.degutted) + return switch(index) if(WIRE_EXPLODE) if(!mended) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index fd1d305168c..96ec3fd3d3f 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -150,10 +150,12 @@ proc/process_ghost_teleport_locs() /area/shuttle/escape/centcom name = "\improper Emergency Shuttle Centcom" + icon_state = "shuttle" destination = /area/shuttle/escape/station /area/shuttle/escape/transit // the area to pass through for 3 minute transit name = "\improper Emergency Shuttle Transit" + icon_state = "shuttle" destination = /area/shuttle/escape/centcom /area/shuttle/escape_pod1 diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 098fd6ccd00..9dd09d89494 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -17,9 +17,6 @@ // replaced by OPENCONTAINER flags and atom/proc/is_open_container() ///Chemistry. - //Detective Work, used for the duplicate data points kept in the scanners - var/list/original_atom - /atom/proc/throw_impact(atom/hit_atom) if(istype(hit_atom,/mob/living)) var/mob/living/M = hit_atom @@ -244,7 +241,7 @@ var/list/blood_splatter_icons = list() //returns 1 if made bloody, returns 0 otherwise /atom/proc/add_blood(mob/living/carbon/M) - if(flags & NOBLOODY) + if(rejects_blood()) return 0 if(!initial(icon) || !initial(icon_state)) return 0 @@ -297,6 +294,8 @@ var/list/blood_splatter_icons = list() update_inv_gloves() //handles bloody hands overlays and updating return 1 //we applied blood to the item +/atom/proc/rejects_blood() + return 0 /atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) if( istype(src, /turf/simulated) ) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 7d60cc494f6..d17300571b8 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -2,7 +2,6 @@ layer = 3 var/last_move = null var/anchored = 0 - // var/elevation = 2 - not used anywhere var/move_speed = 10 var/l_move_time = 1 var/m_flag = 1 diff --git a/code/game/dna.dm b/code/game/dna.dm index 97b2843cc1d..2e980b50ad0 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -309,7 +309,7 @@ else if(istype(M, /mob/living/carbon/monkey)) // monkey > human, var/mob/living/carbon/human/O = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPVIRUS) - if(connected) //inside dna thing + if(O && connected) //inside dna thing var/obj/machinery/dna_scannernew/C = connected O.loc = C C.occupant = O diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 8fedb01c7b7..be0b2314f2c 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -231,6 +231,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/purchasedpowers = list() var/mimicing = "" var/canrespec = 0 + var/datum/dna/chosen_dna + var/chosen_sting /datum/changeling/New(var/gender=FEMALE) ..() diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 57b5a00202d..c909f9ec6bc 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -28,6 +28,8 @@ //removes our changeling verbs /mob/proc/remove_changeling_powers() + var/mob/living/carbon/C = src + C.unset_sting() for(var/datum/power/changeling/P in powerinstances) if(P.isVerb) verbs -= P.verbpath @@ -179,12 +181,12 @@ O.make_changeling(1) O.verbs += /mob/living/carbon/proc/changeling_human_form + O.unset_sting() feedback_add_details("changeling_powers","LF") . = 1 del(src) return - //Transform into a human /mob/living/carbon/proc/changeling_human_form() @@ -213,7 +215,9 @@ var/mob/living/carbon/human/O = humanize((TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSRC),chosen_dna.real_name) - O.make_changeling() + if(O) + O.make_changeling() + O.unset_sting() feedback_add_details("changeling_powers","LFT") . = 1 del(src) @@ -524,118 +528,122 @@ var/list/datum/dna/hivemind_bank = list() if(src && src.mind && src.mind.changeling) src.mind.changeling.mimicing = "" - - ////////// //STINGS// //They get a pretty header because there's just so fucking many of them ;_; ////////// -/mob/proc/sting_can_reach(mob/M as mob, sting_range = 1) - if(M.loc == src.loc) return 1 //target and source are in the same thing - if(!isturf(src.loc) || !isturf(M.loc)) return 0 //One is inside, the other is outside something. - if(AStar(src.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, sting_range)) //If a path exists, good! +/mob/living/carbon/proc/add_sting_logs(mob/T, sting_name, datum/dna/DNA) + src.attack_log += "\[[time_stamp()]\] Stung [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" + T.attack_log += "\[[time_stamp()]\] Was stung by [src.name] ([src.ckey]) with [sting_name] sting[!DNA ? "." : ", and took [DNA.real_name] appearance."]" + log_attack("[src.name] ([src.ckey]) stung [T.name] ([T.ckey]) with [sting_name] sting[!DNA ? "." : ", giving him [DNA.real_name] appearance."]" ) + +/mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it + src << "We prepare our sting, use alt+click on target to sting them." + src.mind.changeling.chosen_sting = A + if(dna) + src.mind.changeling.chosen_dna = dna + hud_used.lingstingdisplay.icon_state = icon + hud_used.lingstingdisplay.invisibility = 0 + +/mob/living/carbon/proc/unset_sting() //unsetting the previous + src << "We retract our sting, we can't sting anyone for now." + src.mind.changeling.chosen_sting = null + hud_used.lingstingdisplay.icon_state = null + hud_used.lingstingdisplay.invisibility = 101 + +/mob/living/carbon/proc/sting_can_reach(mob/living/carbon/C, chem_cost) //handles all the checks there are + if(!isturf(src.loc)) return 0 + if(get_dist(src, C) > (src.mind.changeling.sting_range)) return 0 //sanity check as AStar is still throwing insane stunts + if(!AStar(src.loc, C.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, src.mind.changeling.sting_range)) return 0 //hope this ancient magic still works + if(src.mind.changeling.chem_charges < chem_cost) + src << "Not enough chemicals." + return 0 + src.mind.changeling.chem_charges -= chem_cost + src << "We stealthly sting [C.name]." + if(C.mind && C.mind.changeling) + C << "You feel a tiny prick." + return 0 + else return 1 - return 0 - -//Handles the general sting code to reduce on copypasta (seeming as somebody decided to make SO MANY dumb abilities) -/mob/proc/changeling_sting(var/required_chems=0, var/verb_path) - var/datum/changeling/changeling = changeling_power(required_chems) - if(!changeling) return - - var/list/victims = list() - for(var/mob/living/carbon/C in oview(changeling.sting_range)) - victims += C - var/mob/living/carbon/T = input(src, "Who will we sting?") as null|anything in victims - - if(!T) return - if(!(T in view(changeling.sting_range))) return - if(!sting_can_reach(T, changeling.sting_range)) return - if(!changeling_power(required_chems)) return - - changeling.chem_charges -= required_chems - verbs -= verb_path - spawn(5) verbs += verb_path - - src << "We stealthily sting [T]." - if(!T.mind || !T.mind.changeling) return T //T will be affected by the sting - T << "You feel a tiny prick." - return - /mob/living/carbon/proc/changeling_transformation_sting() set category = "Changeling" set name = "Transformation Sting (40)" set desc= "Transform the target to one of our stored DNAs" - var/datum/changeling/changeling = changeling_power(40) - if(!changeling) return 0 - var/list/names = list() - for(var/datum/dna/DNA in changeling.absorbed_dna) + for(var/datum/dna/DNA in mind.changeling.absorbed_dna) names += DNA.real_name var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names if(!S) return - var/datum/dna/chosen_dna = changeling.GetDNA(S) - if(!chosen_dna) + var/datum/dna/D = mind.changeling.GetDNA(S) + if(!D) return - var/mob/living/carbon/T = changeling_sting(40,/mob/living/carbon/proc/changeling_transformation_sting) - if(!T) return 0 + set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) + +/mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) + add_sting_logs(T, "transformation", src.mind.changeling.chosen_dna) + if(!sting_can_reach(T, 40)) + return 0 if((HUSK in T.mutations) || !check_dna_integrity(T)) src << "Our sting appears ineffective against its DNA." return 0 - T.dna = chosen_dna - T.real_name = chosen_dna.real_name + + T.dna = src.mind.changeling.chosen_dna + T.real_name = src.mind.changeling.chosen_dna.real_name updateappearance(T) domutcheck(T, null) feedback_add_details("changeling_powers","TS") return 1 - /mob/living/carbon/proc/changeling_extract_dna_sting() set category = "Changeling" set name = "Extract DNA Sting (25)" set desc="Stealthily sting a target to extract their DNA." - var/datum/changeling/changeling = null - if(src.mind && src.mind.changeling) - changeling = src.mind.changeling - if(!changeling) + set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") + +/mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) + add_sting_logs(T, "extracting") + if(!sting_can_reach(T, 25)) return 0 - - var/mob/living/carbon/T = changeling_sting(25, /mob/living/carbon/proc/changeling_extract_dna_sting) - if(!T) return 0 - - if(changeling.can_absorb_dna(T, usr)) - changeling.absorb_dna(T, usr) + if(src.mind.changeling.can_absorb_dna(T, usr)) + src.mind.changeling.absorb_dna(T, usr) else//If the sting fails, give the guy most of his chems back. - changeling.chem_charges += 20 + src.mind.changeling.chem_charges += 20 feedback_add_details("changeling_powers","ED") return 1 - /mob/living/carbon/proc/changeling_mute_sting() set category = "Changeling" set name = "Mute sting (20)" set desc= "Temporarily mutes the target." - var/mob/living/carbon/T = changeling_sting(20,/mob/living/carbon/proc/changeling_mute_sting) - if(!T) return 0 + set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") + +/mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) + add_sting_logs(T, "mute") + if(!sting_can_reach(T, 20)) + return 0 T.silent += 30 feedback_add_details("changeling_powers","MS") return 1 - /mob/living/carbon/proc/changeling_blind_sting() set category = "Changeling" set name = "Blind Sting (25)" set desc= "Temporarily blinds the target." - var/mob/living/carbon/T = changeling_sting(25,/mob/living/carbon/proc/changeling_blind_sting) - if(!T) return 0 + set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") + +/mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) + add_sting_logs(T, "blind") + if(!sting_can_reach(T, 25)) + return 0 T << "Your eyes burn horrifically!" T.disabilities |= NEARSIGHTED T.eye_blind = 20 @@ -643,28 +651,33 @@ var/list/datum/dna/hivemind_bank = list() feedback_add_details("changeling_powers","BS") return 1 - /mob/living/carbon/proc/changeling_lsd_sting() set category = "Changeling" set name = "Hallucination Sting (5)" set desc = "Causes terror in the target." - var/mob/living/carbon/T = changeling_sting(5,/mob/living/carbon/proc/changeling_lsd_sting) - if(!T) return 0 + set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") + +/mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) + add_sting_logs(T, "LSD") + if(!sting_can_reach(T, 5)) + return 0 spawn(rand(300,600)) if(T) T.hallucination += 400 feedback_add_details("changeling_powers","HS") return 1 - /mob/living/carbon/proc/changeling_cryo_sting() set category = "Changeling" set name = "Cryogenic Sting (15)" set desc = "Cools the target, slowing them." - var/mob/living/carbon/T = changeling_sting(15,/mob/living/carbon/proc/changeling_cryo_sting) - if(!T) return 0 + set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") +/mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) + add_sting_logs(T, "cryo") + if(!sting_can_reach(T, 15)) + return 0 if(T.reagents) T.reagents.add_reagent("frostoil", 30) T.reagents.add_reagent("ice", 30) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e2f7979ed36..12df5237a1f 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -386,7 +386,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",

    Create a wall

    Invoking this rune solidifies the air above it, creating an an invisible wall. To remove the wall, simply invoke the rune again.

    Summon cultist

    - This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to succesfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.
    + This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to successfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.

    Free a cultist

    This rune unhandcuffs and unbuckles any cultist of your choice, no matter where he is. Invoking it takes heavy strain on the bodies of all chanting cultists.

    Deafen

    @@ -394,7 +394,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",

    Blind

    This rune temporarily blinds all non-cultists around you. Very robust. Use together with the deafen rune to leave your enemies completely helpless.

    Blood boil

    - This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effect when invoked. It also drains significant amount of your health when succesfully invoked.
    + This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effect when invoked. It also drains significant amount of your health when successfully invoked.

    Communicate

    Invoking this rune allows you to relay a message to all cultists on the station and nearby space objects.

    Stun

    diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index a343fa47974..3c981c1de40 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -90,29 +90,37 @@ if (href_list["rune"]) switch(href_list["rune"]) if("newtome") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "newtome" if("teleport") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "[pick("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")]" T.info = "[T.imbue]" if("emp") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "emp" if("conceal") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "conceal" if("communicate") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "communicate" if("runestun") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "runestun" if("armor") - var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr)) + var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(usr) + usr.put_in_hands(T) T.imbue = "armor" if("soulstone") - new /obj/item/device/soulstone(get_turf(usr)) + var/obj/item/device/soulstone/T = new /obj/item/device/soulstone(usr) + usr.put_in_hands(T) if("construct") new /obj/structure/constructshell(get_turf(usr)) src.uses-- diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index fddf35569ae..f0a078f313c 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -31,7 +31,7 @@ //Triumvirate? if (ticker.triai == 1) required_enemies = 3 - required_players = max(required_enemies+1, required_players) //to prevent issues if players are set too low + required_players = max(required_enemies+1, required_players) //to prevent issues if players are set too low return ..() /datum/game_mode/malfunction/get_players_for_role(var/role = BE_MALF) @@ -187,6 +187,12 @@ command_alert("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert") set_security_level("delta") + for(var/obj/item/weapon/pinpointer/point in world) + for(var/datum/mind/AI_mind in ticker.mode.malf_ai) + var/mob/living/silicon/ai/A = AI_mind.current // the current mob the mind owns + if(A.stat != DEAD) + point.the_disk = A //The pinpointer now tracks the AI core. + ticker.mode:malf_mode_declared = 1 for(var/datum/mind/AI_mind in ticker.mode:malf_ai) AI_mind.current.verbs -= /datum/game_mode/malfunction/proc/takeover diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 3c57249bb7c..75b7be1afff 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -1,5 +1,3 @@ -#define METEOR_TEMPERATURE - /var/const/meteor_wave_delay = 625 //minimum wait between waves in tenths of seconds //set to at least 100 unless you want evarr ruining every round @@ -95,37 +93,22 @@ icon_state = "smallf" pass_flags = PASSTABLE | PASSGRILLE -/obj/effect/meteor/Move() - var/turf/T = src.loc - if (istype(T, /turf)) - T.hotspot_expose(METEOR_TEMPERATURE, 1000) - ..() - return - /obj/effect/meteor/Bump(atom/A) - spawn(0) - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view - shake_camera(M, 3, 1) - if (A) - A.meteorhit(src) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - if (--src.hits <= 0) + if (A) + A.meteorhit(src) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) + if (--src.hits <= 0) - //Prevent meteors from blowing up the singularity's containment. - //Changing emitter and generator ex_act would result in them being bomb and C4 proof. - if(!istype(A,/obj/machinery/power/emitter) && \ - !istype(A,/obj/machinery/field/generator) && \ - prob(15)) - - explosion(src.loc, 4, 5, 6, 7, 0) - playsound(src.loc, "explosion", 50, 1) - del(src) - return + //Prevent meteors from blowing up the singularity's containment. + //Changing emitter and generator ex_act would result in them being bomb and C4 proof. + if(!istype(A,/obj/machinery/power/emitter) && \ + !istype(A,/obj/machinery/field/generator) && \ + prob(15)) + explosion(src.loc, 4, 5, 6, 7, 0) + del(src) /obj/effect/meteor/ex_act(severity) - if (severity < 4) del(src) return @@ -138,26 +121,26 @@ return Bump(atom/A) - spawn(0) - //Prevent meteors from blowing up the singularity's containment. - //Changing emitter and generator ex_act would result in them being bomb and C4 proof - if(!istype(A,/obj/machinery/power/emitter) && \ - !istype(A,/obj/machinery/field/generator)) - if(--src.hits <= 0) - del(src) //Dont blow up singularity containment if we get stuck there. + //Prevent meteors from blowing up the singularity's containment. + //Changing emitter and generator ex_act would result in them being bomb and C4 proof + if(!istype(A,/obj/machinery/power/emitter) && \ + !istype(A,/obj/machinery/field/generator)) + if(--src.hits <= 0) + del(src) //Dont blow up singularity containment if we get stuck there. - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view - shake_camera(M, 3, 1) - if (A) - explosion(src.loc, 0, 1, 2, 3, 0) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - if (--src.hits <= 0) - if(prob(15) && !istype(A, /obj/structure/grille)) - explosion(src.loc, 1, 2, 3, 4, 0) - playsound(src.loc, "explosion", 50, 1) - del(src) - return + if (A) + for(var/mob/M in player_list) + var/turf/T = get_turf(M) + if(!T || T.z != src.z) + continue + shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3) + M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10) + explosion(src.loc, 0, 1, 2, 3, 0) + + if (--src.hits <= 0) + if(prob(15) && !istype(A, /obj/structure/grille)) + explosion(src.loc, 1, 2, 3, 4, 0) + del(src) /obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/pickaxe)) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 8c73138bd6f..b0ac6ef8bc0 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -7,7 +7,6 @@ var/bomb_set icon_state = "nuclearbomb0" density = 1 - var/extended = 0.0 var/timeleft = 60.0 var/timing = 0.0 var/r_code = "ADMIN" @@ -37,9 +36,6 @@ var/bomb_set /obj/machinery/nuclearbomb/attackby(obj/item/weapon/I as obj, mob/user as mob) if (istype(I, /obj/item/weapon/disk/nuclear)) - if (!src.extended) - user << "You have to deploy the bomb first." - return usr.drop_item() I.loc = src src.auth = I @@ -51,44 +47,29 @@ var/bomb_set return src.attack_hand(user) /obj/machinery/nuclearbomb/attack_hand(mob/user as mob) - if (src.extended) - user.set_machine(src) - var/dat = text("\nAuth. Disk: []
    ", src, (src.auth ? "++++++++++" : "----------")) - if (src.auth) - if (src.yes_code) - dat += text("\nStatus: []-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src) - else - dat += text("\nStatus: Auth. S2-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \n[] Safety: Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + user.set_machine(src) + var/dat = text("\nAuth. Disk: []
    ", src, (src.auth ? "++++++++++" : "----------")) + if (src.auth) + if (src.yes_code) + dat += text("\nStatus: []-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src) else - if (src.timing) - dat += text("\nStatus: Set-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) - else - dat += text("\nStatus: Auth. S1-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) - var/message = "AUTH" - if (src.auth) - message = text("[]", src.code) - if (src.yes_code) - message = "*****" - dat += text("
    \n>[]
    \n123
    \n456
    \n789
    \nR0E
    \n
    ", message, src, src, src, src, src, src, src, src, src, src, src, src) - var/datum/browser/popup = new(user, "nuclearbomb", name, 300, 400) - popup.set_content(dat) - popup.open() + dat += text("\nStatus: Auth. S2-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \n[] Safety: Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) else - user << "You have to deploy the bomb first." + if (src.timing) + dat += text("\nStatus: Set-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + else + dat += text("\nStatus: Auth. S1-[]
    \nTimer: []
    \n
    \nTimer: [] Toggle
    \nTime: - - [] + +
    \n
    \nSafety: [] Toggle
    \nAnchor: [] Toggle
    \n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + var/message = "AUTH" + if (src.auth) + message = text("[]", src.code) + if (src.yes_code) + message = "*****" + dat += text("
    \n>[]
    \n123
    \n456
    \n789
    \nR0E
    \n
    ", message, src, src, src, src, src, src, src, src, src, src, src, src) + var/datum/browser/popup = new(user, "nuclearbomb", name, 300, 400) + popup.set_content(dat) + popup.open() return -/obj/machinery/nuclearbomb/verb/make_deployable() - set category = "Object" - set name = "Deploy Bomb" - set src in oview(1) - - if(isliving(usr)) - if(!src.extended) - src.anchored = 1 - flick("nuclearbombc", src) - src.icon_state = "nuclearbomb1" - src.extended = 1 - /obj/machinery/nuclearbomb/Topic(href, href_list) if(..()) return @@ -143,11 +124,15 @@ var/bomb_set bomb_set = 0 if (href_list["safety"]) src.safety = !( src.safety ) + src.icon_state = "nuclearbomb1" if(safety) src.timing = 0 bomb_set = 0 if (href_list["anchor"]) - src.anchored = !( src.anchored ) + if(!isinspace()) + src.anchored = !( src.anchored ) + else + usr << "There is nothing to anchor to!" src.add_fingerprint(usr) for(var/mob/M in viewers(1, src)) if ((M.client && M.machine == src)) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index cbda89004ca..a96cf6d96d0 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -26,12 +26,12 @@ datum/hSB var/objinfo = null var/canisterinfo = null var/hsbinfo = null - + //items that shouldn't spawn on the floor because they would bug or act weird var/global/list/spawn_forbidden = list( /obj/item/weapon/grab, /obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you /obj/item/assembly,/obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai, /obj/item/device/uplink/hidden, /obj/item/smallDelivery, /obj/item/missile,/obj/item/projectile, - /obj/item/borg/sight,/obj/item/borg/overdrive,/obj/item/borg/stun) + /obj/item/borg/sight,/obj/item/borg/overdrive,/obj/item/borg/stun,/obj/item/weapon/robot_module) proc update() @@ -49,25 +49,31 @@ datum/hSB "Spawn All-Access ID" = "hsbaaid", "Building Supplies", + "Spawn 50 Wood" = "hsbwood", "Spawn 50 Metal" = "hsbmetal", "Spawn 50 Plasteel" = "hsbplasteel", + "Spawn 50 Reinforced Glass" = "hsbrglass", "Spawn 50 Glass" = "hsbglass", "Spawn Full Cable Coil" = "hsbspawn&path=[/obj/item/weapon/cable_coil]", "Spawn Hyper Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/hyper]", + "Spawn Inf. Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/infinite]", "Spawn Rapid Construction Device" = "hsbrcd", "Spawn RCD Ammo" = "hsb_safespawn&path=[/obj/item/weapon/rcd_ammo]", "Spawn Airlock" = "hsbairlock", "Miscellaneous", "Spawn Air Scrubber" = "hsbscrubber", - "Spawn Canister..." = "hsbcanister", "Spawn Welding Fuel Tank" = "hsbspawn&path=[/obj/structure/reagent_dispensers/fueltank]", "Spawn Water Tank" = "hsbspawn&path=[/obj/structure/reagent_dispensers/watertank]", "Bots", "Spawn Cleanbot" = "hsbspawn&path=[/obj/machinery/bot/cleanbot]", "Spawn Floorbot" = "hsbspawn&path=[/obj/machinery/bot/floorbot]", - "Spawn Medbot" = "hsbspawn&path=[/obj/machinery/bot/medbot]") + "Spawn Medbot" = "hsbspawn&path=[/obj/machinery/bot/medbot]", + + "Canisters", + "Spawn O2 Canister" = "hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/oxygen]", + "Spawn Air Canister" = "hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/air]") if(!hsbinfo) @@ -75,9 +81,15 @@ datum/hSB if(admin) hsbinfo += "Administration
    " hsbinfo += "- Toggle Object Spawning
    " - hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " + hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " + hsbinfo += "Canister Spawning
    " + hsbinfo += "- Spawn Plasma Canister
    " + hsbinfo += "- Spawn CO2 Canister
    " + hsbinfo += "- Spawn Nitrogen Canister
    " + hsbinfo += "- Spawn N2O Canister
    " else hsbinfo += "Some item spawning may be disabled by the administrators.
    " + hsbinfo += "Only administrators may spawn dangerous canisters.
    " for(var/T in hrefs) var/href = hrefs[T] if(href) @@ -124,7 +136,6 @@ datum/hSB world << "\red Sandbox: \black [usr.key] has added a limiter to object spawning. The window will now auto-close after use." config.sandbox_autoclose = 1 return - // // Spacesuit with full air jetpack set as internals // @@ -167,6 +178,13 @@ datum/hSB var/obj/hsb = new/obj/machinery/portable_atmospherics/scrubber{volume_rate=50*ONE_ATMOSPHERE;on=1}(usr.loc) hsb.update_icon() // hackish but it wasn't meant to be spawned I guess? + // + // Stacked Materials + // + + if("hsbrglass") + new/obj/item/stack/sheet/rglass{amount=50}(usr.loc) + if("hsbmetal") new/obj/item/stack/sheet/metal{amount=50}(usr.loc) @@ -176,6 +194,9 @@ datum/hSB if("hsbglass") new/obj/item/stack/sheet/glass{amount=50}(usr.loc) + if("hsbwood") + new/obj/item/stack/sheet/wood{amount=50}(usr.loc) + // // All access ID // @@ -201,16 +222,6 @@ datum/hSB if("hsbairlock") new /datum/airlock_maker(usr.loc) - // - // Canister select window - // - if("hsbcanister") - if(!canisterinfo) - canisterinfo = "Choose a canister type:
    " - for(var/O in (typesof(/obj/machinery/portable_atmospherics/canister/) - /obj/machinery/portable_atmospherics/canister/)) - canisterinfo += "[O]
    " - usr << browse(canisterinfo,"window=sandbox") - // // Object spawn window // diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm index fc7f172156d..f07cd2a5437 100644 --- a/code/game/gamemodes/traitor/double_agents.dm +++ b/code/game/gamemodes/traitor/double_agents.dm @@ -47,7 +47,7 @@ ..() // Give them standard objectives. return -/datum/game_mode/traitor/double_agents/add_latejoin_traitor(var/mob/living/carbon/human/character) +/datum/game_mode/traitor/double_agents/add_latejoin_traitor(var/datum/mind/character) check_potential_agents() @@ -60,14 +60,15 @@ // Basically setting the target_list for who is killing who var/i = 0 - for(var/mob/living/carbon/human/traitor in late_joining_list) + for(var/datum/mind/traitor in late_joining_list) i++ if(i + 1 > late_joining_list.len) i = 0 target_list[traitor] = late_joining_list[i + 1] + traitor.special_role = traitor_name // Now, give them their targets - for(var/mob/living/carbon/human/traitor in late_joining_list) + for(var/datum/mind/traitor in target_list) ..(traitor) late_joining_list = list() @@ -78,11 +79,13 @@ /datum/game_mode/traitor/double_agents/proc/check_potential_agents() for(var/M in late_joining_list) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.stat != DEAD) - if(H.client) - continue // It all checks out. + if(istype(M, /datum/mind)) + var/datum/mind/agent_mind = M + if(ishuman(agent_mind.current)) + var/mob/living/carbon/human/H = agent_mind.current + if(H.stat != DEAD) + if(H.client) + continue // It all checks out. // If any check fails, remove them from our list late_joining_list -= M \ No newline at end of file diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index eb5927a5d90..8eabd6a71e3 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -80,11 +80,11 @@ if(character.client.prefs.be_special & BE_TRAITOR) if(!jobban_isbanned(character.client, "traitor") && !jobban_isbanned(character.client, "Syndicate")) if(!(character.job in ticker.mode.restricted_jobs)) - add_latejoin_traitor(character) + add_latejoin_traitor(character.mind) ..() -/datum/game_mode/traitor/proc/add_latejoin_traitor(var/mob/living/carbon/human/character) - character.mind.make_Traitor() +/datum/game_mode/traitor/proc/add_latejoin_traitor(var/datum/mind/character) + character.make_Traitor() /datum/game_mode/proc/forge_traitor_objectives(var/datum/mind/traitor) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 5bad56a6135..3d404dfc846 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -27,6 +27,8 @@ dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
    " dat += "Bluespace Manipulation
    " dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
    " + dat += "Healing
    " + dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
    " dat += "Robeless
    " dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
    " user << browse(dat, "window=radio") @@ -66,6 +68,11 @@ M.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(M) M.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(M) M << "Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt." + if("healing") + M.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(M) + M.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(M) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) + M << "Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall." if("robeless") M.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(M) M.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(M) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index c18732cdb01..891a2dbff7c 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -1,11 +1,12 @@ -/mob/proc/rightandwrong() - usr << "You summoned guns!" - message_admins("[key_name_admin(usr, 1)] summoned guns!") +/mob/proc/rightandwrong(var/summon_type) //0 = Summon Guns, 1 = Summon Magic + usr << "You summoned [summon_type ? "magic" : "guns"]!" + message_admins("[key_name_admin(usr, 1)] summoned [summon_type ? "magic" : "guns"]!") for(var/mob/living/carbon/human/H in player_list) if(H.stat == 2 || !(H.client)) continue - if(is_special_character(H)) continue + if(H.mind) + if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice") continue if(prob(25)) ticker.mode.traitors += H.mind H.mind.special_role = "traitor" @@ -18,46 +19,95 @@ for(var/datum/objective/OBJ in H.mind.objectives) H << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ - var/randomize = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") - switch (randomize) - if("taser") - new /obj/item/weapon/gun/energy/taser(get_turf(H)) - if("egun") - new /obj/item/weapon/gun/energy/gun(get_turf(H)) - if("laser") - new /obj/item/weapon/gun/energy/laser(get_turf(H)) - if("revolver") - new /obj/item/weapon/gun/projectile/revolver(get_turf(H)) - if("detective") - new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H)) - if("smg") - new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H)) - if("nuclear") - new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H)) - if("deagle") - new /obj/item/weapon/gun/projectile/automatic/deagle/camo(get_turf(H)) - if("gyrojet") - new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) - if("pulse") - new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(H)) - if("silenced") - new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H)) - new /obj/item/weapon/silencer(get_turf(H)) - if("cannon") - new /obj/item/weapon/gun/energy/lasercannon(get_turf(H)) - if("doublebarrel") - new /obj/item/weapon/gun/projectile/revolver/doublebarrel(get_turf(H)) - if("shotgun") - new /obj/item/weapon/gun/projectile/shotgun/(get_turf(H)) - if("combatshotgun") - new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H)) - if("mateba") - new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) - if("smg") - new /obj/item/weapon/gun/projectile/automatic(get_turf(H)) - if("uzi") - new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H)) - if("crossbow") - new /obj/item/weapon/gun/energy/crossbow(get_turf(H)) - if("saw") - new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H)) \ No newline at end of file + var/randomizeguns = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") + var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffanimation", "staffhealing", "armor", "scrying") + if(!summon_type) + switch (randomizeguns) + if("taser") + new /obj/item/weapon/gun/energy/taser(get_turf(H)) + if("egun") + new /obj/item/weapon/gun/energy/gun(get_turf(H)) + if("laser") + new /obj/item/weapon/gun/energy/laser(get_turf(H)) + if("revolver") + new /obj/item/weapon/gun/projectile/revolver(get_turf(H)) + if("detective") + new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H)) + if("smg") + new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H)) + if("nuclear") + new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H)) + if("deagle") + new /obj/item/weapon/gun/projectile/automatic/deagle/camo(get_turf(H)) + if("gyrojet") + new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) + if("pulse") + new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(H)) + if("silenced") + new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H)) + new /obj/item/weapon/silencer(get_turf(H)) + if("cannon") + new /obj/item/weapon/gun/energy/lasercannon(get_turf(H)) + if("doublebarrel") + new /obj/item/weapon/gun/projectile/revolver/doublebarrel(get_turf(H)) + if("shotgun") + new /obj/item/weapon/gun/projectile/shotgun/(get_turf(H)) + if("combatshotgun") + new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H)) + if("mateba") + new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) + if("smg") + new /obj/item/weapon/gun/projectile/automatic(get_turf(H)) + if("uzi") + new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H)) + if("crossbow") + new /obj/item/weapon/gun/energy/crossbow(get_turf(H)) + if("saw") + new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H)) + else + switch (randomizemagic) + if("fireball") + new /obj/item/weapon/spellbook/oneuse/fireball(get_turf(H)) + if("smoke") + new /obj/item/weapon/spellbook/oneuse/smoke(get_turf(H)) + if("blind") + new /obj/item/weapon/spellbook/oneuse/blind(get_turf(H)) + if("mindswap") + new /obj/item/weapon/spellbook/oneuse/mindswap(get_turf(H)) + if("forcewall") + new /obj/item/weapon/spellbook/oneuse/forcewall(get_turf(H)) + if("knock") + new /obj/item/weapon/spellbook/oneuse/knock(get_turf(H)) + if("horsemask") + new /obj/item/weapon/spellbook/oneuse/horsemask(get_turf(H)) + if("charge") + new /obj/item/weapon/spellbook/oneuse/charge(get_turf(H)) + if("wandnothing") + new /obj/item/weapon/gun/magic/wand(get_turf(H)) + if("wanddeath") + new /obj/item/weapon/gun/magic/wand/death(get_turf(H)) + if("wandresurrection") + new /obj/item/weapon/gun/magic/wand/resurrection(get_turf(H)) + if("wandpolymorph") + new /obj/item/weapon/gun/magic/wand/polymorph(get_turf(H)) + if("wandteleport") + new /obj/item/weapon/gun/magic/wand/teleport(get_turf(H)) + if("wanddoor") + new /obj/item/weapon/gun/magic/wand/door(get_turf(H)) + if("staffchange") + new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) + if("staffanimation") + new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) + if("staffhealing") + new /obj/item/weapon/gun/magic/staff/healing(get_turf(H)) + if("armor") + new /obj/item/clothing/suit/space/rig/wizard(get_turf(H)) + new /obj/item/clothing/head/helmet/space/rig/wizard(get_turf(H)) + if("scrying") + new /obj/item/weapon/scrying(get_turf(H)) + if (!(XRAY in H.mutations)) + H.mutations.Add(XRAY) + H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + H.see_in_dark = 8 + H.see_invisible = SEE_INVISIBLE_LEVEL_TWO + H << "\blue The walls suddenly disappear." diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 156554d486d..36417f0bd36 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -86,6 +86,9 @@ dat += "Summon Guns (One time use, global spell)
    " dat += "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill eachother. Just be careful not to get hit in the crossfire!
    " + dat += "Summon Magic (One time use, global spell)
    " + dat += "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time.
    " + dat += "
    " dat += "Artefacts:
    " dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.
    " @@ -150,7 +153,7 @@ uses-- /* */ - var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation") + var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", summonmagic = "Summon Magic", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation") var/already_knows = 0 for(var/obj/effect/proc_holder/spell/aspell in H.spell_list) if(available_spells[href_list["spell_choice"]] == initial(aspell.name)) @@ -246,12 +249,17 @@ temp = "You have learned flesh to stone." if("summonguns") feedback_add_details("wizard_spell_learned","SG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - H.rightandwrong() + H.rightandwrong(0) max_uses-- temp = "You have cast summon guns." + if("summonmagic") + feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.rightandwrong(1) + max_uses-- + temp = "You have cast summon magic." if("staffchange") feedback_add_details("wizard_spell_learned","ST") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff(get_turf(H)) + new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) temp = "You have purchased a staff of change." max_uses-- if("soulstone") @@ -270,7 +278,7 @@ max_uses-- if("staffanimation") feedback_add_details("wizard_spell_learned","SA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff/animate(get_turf(H)) + new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) temp = "You have purchased a staff of animation." max_uses-- if("contract") @@ -295,3 +303,153 @@ attack_self(H) return + +//Single Use Spellbooks// + +/obj/item/weapon/spellbook/oneuse + var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic + var/spellname = "sandbox" + var/used = 0 + name = "spellbook of " + uses = 1 + max_uses = 1 + desc = "This template spellbook was never meant for the eyes of man..." + +/obj/item/weapon/spellbook/oneuse/New() + ..() + name += spellname + +/obj/item/weapon/spellbook/oneuse/attack_self(mob/user as mob) + var/obj/effect/proc_holder/spell/S = new spell + for(var/obj/effect/proc_holder/spell/knownspell in user.spell_list) + if(knownspell.type == S.type) + if(user.mind) + if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard") + user <<"You're already far more versed in this spell than this flimsy how-to book can provide." + else + user <<"You've already read this one." + return + if(used) + recoil(user) + else + user.spell_list += S + user <<"you rapidly read through the arcane book. Suddenly you realize you understand [spellname]!" + onlearned(user) + +/obj/item/weapon/spellbook/oneuse/proc/recoil(mob/user as mob) + user.visible_message("[src] glows in a black light!") + +/obj/item/weapon/spellbook/oneuse/proc/onlearned(mob/user as mob) + used = 1 + user.visible_message("[src] glows dark for a second!") + +/obj/item/weapon/spellbook/oneuse/attackby() + return + +/obj/item/weapon/spellbook/oneuse/fireball + spell = /obj/effect/proc_holder/spell/dumbfire/fireball + spellname = "fireball" + icon_state ="bookfireball" + desc = "This book feels warm to the touch." + +/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob) + ..() + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + del(src) + +/obj/item/weapon/spellbook/oneuse/smoke + spell = /obj/effect/proc_holder/spell/targeted/smoke + spellname = "smoke" + icon_state ="booksmoke" + desc = "This book is overflowing with the dank arts." + +/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/user as mob) + ..() + user <<"Your stomach rumbles..." + if(user.nutrition) + user.nutrition -= 200 + if(user.nutrition <= 0) + user.nutrition = 0 + +/obj/item/weapon/spellbook/oneuse/blind + spell = /obj/effect/proc_holder/spell/targeted/trigger/blind + spellname = "blind" + icon_state ="bookblind" + desc = "This book looks blurry, no matter how you look at it." + +/obj/item/weapon/spellbook/oneuse/blind/recoil(mob/user as mob) + ..() + user <<"You go blind!" + user.eye_blind = 10 + +/obj/item/weapon/spellbook/oneuse/mindswap + spell = /obj/effect/proc_holder/spell/targeted/mind_transfer + spellname = "mindswap" + icon_state ="bookmindswap" + desc = "This book's cover is pristine, though its pages look ragged and torn." + +/obj/item/weapon/spellbook/oneuse/mindswap/onlearned() + spellname = pick("fireball","smoke","blind","forcewall","knock","horses","charge") + icon_state = "book[spellname]" + name = "spellbook of [spellname]" //Note, desc doesn't change by design + ..() + +/obj/item/weapon/spellbook/oneuse/mindswap/recoil(mob/user as mob) + ..() + user <<"You suddenly don't feel like yourself!" + wabbajack(user) + +/obj/item/weapon/spellbook/oneuse/forcewall + spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall + spellname = "forcewall" + icon_state ="bookforcewall" + desc = "This book has a dedication to mimes everywhere inside the front cover." + +/obj/item/weapon/spellbook/oneuse/forcewall/recoil(mob/user as mob) + ..() + user <<"You suddenly feel very solid!" + var/obj/structure/closet/statue/S = new /obj/structure/closet/statue(user.loc, user) + S.timer = 30 + user.drop_item() + + +/obj/item/weapon/spellbook/oneuse/knock + spell = /obj/effect/proc_holder/spell/aoe_turf/knock + spellname = "knock" + icon_state ="bookknock" + desc = "This book is hard to hold closed properly." + +/obj/item/weapon/spellbook/oneuse/knock/recoil(mob/user as mob) + ..() + user <<"You're knocked down!" + user.Weaken(20) + +/obj/item/weapon/spellbook/oneuse/horsemask + spell = /obj/effect/proc_holder/spell/targeted/horsemask + spellname = "horses" + icon_state ="bookhorses" + desc = "This book is more horse than your mind has room for." + +/obj/item/weapon/spellbook/oneuse/horsemask/recoil(mob/living/carbon/user as mob) + if(istype(user, /mob/living/carbon/human)) + user <<"HOR-SIE HAS RISEN" + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead + magichead.canremove = 0 //curses! + magichead.flags_inv = null //so you can still see their face + magichead.voicechange = 1 //NEEEEIIGHH + user.drop_from_inventory(user.wear_mask) + user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) + del(src) + else + user <<"I say thee neigh" + +/obj/item/weapon/spellbook/oneuse/charge + spell = /obj/effect/proc_holder/spell/targeted/charge + spellname = "charging" + icon_state ="bookcharge" + desc = "This book is made of 100% post-consumer wizard." + +/obj/item/weapon/spellbook/oneuse/charge/recoil(mob/user as mob) + ..() + user <<"[src] suddenly feels very warm!" + empulse(src, 1, 1) \ No newline at end of file diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index a18ab5f4dbf..e9665632c84 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -95,8 +95,8 @@ C.auto_turn() C.network = tempnetwork - - C.c_tag = "[get_area_name(src)] ([rand(1, 999)]" + var/area/A = get_area_master(src) + C.c_tag = "[A.name] ([rand(1, 999)]" for(var/i = 5; i >= 0; i -= 1) var/direct = input(user, "Direction?", "Assembling Camera", null) in list("LEAVE IT", "NORTH", "EAST", "SOUTH", "WEST" ) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index e088103fabd..9e1a8552b9d 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -54,7 +54,7 @@ var/datum/trackable/TB = new() for(var/mob/living/M in mob_list) // Easy checks first. - // Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this. + // Don't detect mobs on Centcom. Since the wizard den is on Centcom, we only need this. var/turf/T = get_turf(M) if(!T) continue diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 49c9ca2fa0b..64fa4a6985e 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -226,7 +226,7 @@ if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve return for(var/mob/M in range(3,src)) - M.show_message("\b ERROR. Recalibrating projetion apparatus.") + M.show_message("\b ERROR. Recalibrating projection apparatus.") last_change = world.time return @@ -252,13 +252,14 @@ for(var/obj/effect/landmark/L in linkedholodeck) if(L.name=="Atmospheric Test Start") spawn(20) - var/turf/T = get_turf(L) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, T) - s.start() - if(T) - T.temperature = 5000 - T.hotspot_expose(50000,50000,1) + if(istype(target,/area/holodeck/source_burntest)) + var/turf/T = get_turf(L) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, T) + s.start() + if(T) + T.temperature = 5000 + T.hotspot_expose(50000,50000,1) if(L.name=="Holocarp Spawn") new /mob/living/simple_animal/hostile/carp(L.loc) @@ -363,7 +364,7 @@ damtype = HALLOSS /obj/item/weapon/holo/esword - desc = "May the force be within you. Sorta" + desc = "May the force be with you. Sorta" icon_state = "sword0" force = 3.0 throw_speed = 1 diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 620736969d9..daf8d4585e7 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -175,10 +175,21 @@ anchored = 1 state = 20//So it doesn't interact based on the above. Not really necessary. - attackby(var/obj/item/device/aicard/A as obj, var/mob/user as mob) - if(istype(A, /obj/item/device/aicard))//Is it? - A.transfer_ai("INACTIVE","AICARD",src,user) - return +/obj/structure/AIcore/deactivated/attackby(var/obj/item/A as obj, var/mob/user as mob) + if(istype(A, /obj/item/device/aicard))//Is it? + A.transfer_ai("INACTIVE","AICARD",src,user) + if(istype(A, /obj/item/weapon/wrench)) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + switch(anchored) + if(0) + if(do_after(user, 20)) + user << "\blue You wrench the core into place." + anchored = 1 + if(1) + if(do_after(user, 20)) + user << "\blue You unfasten the core." + anchored = 0 + return /* This is a good place for AI-related object verbs so I'm sticking it here. @@ -252,7 +263,7 @@ That prevents a few funky behaviors. C.overlays.Cut() A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." - U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." del(T) if("NINJASUIT") var/obj/item/clothing/suit/space/space_ninja/C = src @@ -263,7 +274,7 @@ That prevents a few funky behaviors. A.loc = T.loc A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." - U << "\blue Transfer succesful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer succesful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." del(T) if("AIFIXER")//AI Fixer terminal. var/obj/machinery/computer/aifixer/T = target diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 97d21c9fecf..5a4854349b6 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,17 +1,8 @@ -/obj/machinery/computer/arcade - name = "arcade machine" - desc = "Does not support Pinball." +/obj/machinery/computer/arcade/ + name = "random arcade" + desc = "random arcade machine" icon = 'icons/obj/computer.dmi' icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/arcade - var/enemy_name = "Space Villian" - var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc - var/player_hp = 30 //Player health/attack points - var/player_mp = 10 - var/enemy_hp = 45 //Enemy health/attack points - var/enemy_mp = 20 - var/gameover = 0 - var/blocked = 0 //Player cannot attack/heal while set var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, /obj/item/toy/AI = 2, /obj/item/clothing/under/syndicate/tacticool = 2, @@ -31,14 +22,66 @@ /obj/item/toy/prize/seraph = 1, /obj/item/toy/prize/mauler = 1, /obj/item/toy/prize/odysseus = 1, - /obj/item/toy/prize/phazon = 1 + /obj/item/toy/prize/phazon = 1, + /obj/item/toy/cards = 2 ) -/obj/machinery/computer/arcade - var/turtle = 0 - /obj/machinery/computer/arcade/New() ..() + var/choice = pick(typesof(/obj/machinery/computer/arcade) - /obj/machinery/computer/arcade) + new choice(loc) + del(src) + +/obj/machinery/computer/arcade/proc/prizevend() + if(!contents.len) + var/prizeselect = pickweight(prizes) + new prizeselect(src.loc) + + if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun + new /obj/item/toy/ammo/gun(src.loc) + + else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit + new /obj/item/clothing/head/syndicatefake(src.loc) + + else + var/atom/movable/prize = pick(contents) + prize.loc = src.loc + +/obj/machinery/computer/arcade/emp_act(severity) + if(stat & (NOPOWER|BROKEN)) + ..(severity) + return + var/empprize = null + var/num_of_prizes = 0 + switch(severity) + if(1) + num_of_prizes = rand(1,4) + if(2) + num_of_prizes = rand(0,2) + for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) + empprize = pickweight(prizes) + new empprize(src.loc) + + ..(severity) + + +/obj/machinery/computer/arcade/battle + name = "arcade machine" + desc = "Does not support Pinball." + icon = 'icons/obj/computer.dmi' + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/arcade + var/enemy_name = "Space Villian" + var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc + var/player_hp = 30 //Player health/attack points + var/player_mp = 10 + var/enemy_hp = 45 //Enemy health/attack points + var/enemy_mp = 20 + var/gameover = 0 + var/blocked = 0 //Player cannot attack/heal while set + var/turtle = 0 + +/obj/machinery/computer/arcade/battle/New() var/name_action var/name_part1 var/name_part2 @@ -51,7 +94,7 @@ src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") src.name = (name_action + name_part1 + name_part2) -/obj/machinery/computer/arcade/attack_hand(mob/user as mob) +/obj/machinery/computer/arcade/battle/attack_hand(mob/user as mob) if(..()) return user.set_machine(src) @@ -78,7 +121,7 @@ popup.open() return -/obj/machinery/computer/arcade/Topic(href, href_list) +/obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) return @@ -143,7 +186,7 @@ src.updateUsrDialog() return -/obj/machinery/computer/arcade/proc/arcade_action() +/obj/machinery/computer/arcade/battle/proc/arcade_action() if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) if(!gameover) src.gameover = 1 @@ -154,24 +197,12 @@ new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) new /obj/item/clothing/head/collectable/petehat(src.loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") - log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") src.New() emagged = 0 - else if(!contents.len) - feedback_inc("arcade_win_normal") - var/prizeselect = pickweight(prizes) - new prizeselect(src.loc) - - if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun - new /obj/item/toy/ammo/gun(src.loc) - - else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit - new /obj/item/clothing/head/syndicatefake(src.loc) - else feedback_inc("arcade_win_normal") - var/atom/movable/prize = pick(contents) - prize.loc = src.loc + prizevend() else if (emagged && (turtle >= 4)) var/boomamt = rand(5,10) @@ -217,7 +248,7 @@ return -/obj/machinery/computer/arcade/attackby(I as obj, user as mob) +/obj/machinery/computer/arcade/battle/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/card/emag) && !emagged) temp = "If you die in the game, you die for real!" player_hp = 30 @@ -238,19 +269,281 @@ ..() return -/obj/machinery/computer/arcade/emp_act(severity) - if(stat & (NOPOWER|BROKEN)) - ..(severity) - return - var/empprize = null - var/num_of_prizes = 0 - switch(severity) - if(1) - num_of_prizes = rand(1,4) - if(2) - num_of_prizes = rand(0,2) - for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) - empprize = pickweight(prizes) - new empprize(src.loc) - ..(severity) \ No newline at end of file + + + +/obj/machinery/computer/arcade/orion_trail + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + icon = 'icons/obj/computer.dmi' + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/arcade/orion_trail + var/engine = 0 + var/hull = 0 + var/electronics = 0 + var/food = 80 + var/fuel = 60 + var/turns = 4 + var/playing = 0 + var/gameover = 0 + var/alive = 4 + var/eventdat = null + var/event = null + var/list/settlers = list("Harry","Larry","Bob") + var/list/events = list("Raiders" = 3, + "Interstellar Flux" = 1, + "Illness" = 3, + "Breakdown" = 2, + "Malfunction" = 2, + "Collision" = 1 + ) + var/list/stops = list() + var/list/stopblurbs = list() + +/obj/machinery/computer/arcade/orion_trail/New() + // Sets up the main trail + stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") + stopblurbs = list( + "Pluto, long since occupied with long-range sensors and scanners stands ready to, and indeed continues to, probe the far reaches of the galaxy.", + "At the edge of the Sol system lies a treacherous asteroid belt, many have been crushed by stray asteroids and miss-guided judgement.", + "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres and traders.", + "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", + "Rigel Prime, the center of the Rigel system, burns hot, basking it's planetary bodies in warmth and radiation.", + "Tau Ceti Beta has recently become a way-point for colonists headed towards Orion. There are many ships and makeshift stations in the viscinity.", + "Sensors indicate a black-hole's gravitational field is affecting the region of space we were headed through. We could stay the course, but risk being over-come by it's gravity; or we could change course to go around, which will take longer.", + "You have come into range of the first man-made structure in this region of space. It has been constructed, not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonist's success.", + "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for man-kind!" + ) + +/obj/machinery/computer/arcade/orion_trail/proc/newgame() + // Set names of settlers in crew + settlers = list() + var/choice = null + for(var/i = 1; i <= 3; i++) + if(prob(50)) + choice = pick(first_names_male) + else + choice = pick(first_names_female) + settlers += choice + settlers += "[usr]" + // Re-set items to defaults + engine = 1 + hull = 1 + electronics = 1 + food = 80 + fuel = 60 + alive = 4 + turns = 1 + event = null + playing = 1 + gameover = 0 + +/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user as mob) + if(fuel <= 0 || food <=0 || settlers.len == 0) + gameover = 1 + event = null + user.set_machine(src) + var/dat = "" + if(gameover) + dat = "

    Game Over

    " + dat += "Like many before you, your crew never made it to Orion, lost to space...
    Forever." + if(settlers.len == 0) + dat += "
    Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." + else + if(food <= 0) + dat += "
    You ran out of food and starved." + if(fuel <= 0) + dat += "
    You ran out of fuel, and drift, slowly, into a star." + dat += "

    OK...

    " + else if(event) + dat = eventdat + else if(playing) + var/title = stops[turns] + var/subtext = stopblurbs[turns] + dat = "

    [title]

    " + dat += "[subtext]" + dat += "

    Crew:

    " + dat += english_list(settlers) + dat += "
    Food: [food] | Fuel: [fuel]" + dat += "
    Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]
    " + if(turns == 7) + dat += "

    Go Around Continue

    " + else + dat += "

    Continue

    " + dat += "

    Close

    " + else + dat = "

    The Orion Trail

    " + dat += "

    Experience the journey of your ancestors!



    " + dat += "
    New Game
    " + dat += "

    Close

    " + var/datum/browser/popup = new(user, "arcade", "The Orion Trail") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) + if(..()) + return + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + else if (href_list["continue"]) //Continue your travels + if(turns >= 9) + win() + else if(turns == 2) + if(prob(30)) + event = "Collision" + event() + food -= alive*2 + fuel -= 5 + turns += 1 + else + food -= alive*2 + fuel -= 5 + turns += 1 + if(prob(75)) + event = pickweight(events) + event() + else + food -= alive*2 + fuel -= 5 + turns += 1 + if(prob(75)) + event = pickweight(events) + event() + else if(href_list["newgame"]) //Reset everything + newgame() + else if(href_list["menu"]) //back to the main menu + playing = 0 + event = null + gameover = 0 + food = 80 + fuel = 60 + settlers = list("Harry","Larry","Bob") + else if(href_list["slow"]) //slow down + food -= alive*2 + fuel -= 5 + event = null + else if(href_list["pastblack"]) //slow down + food -= (alive*2)*3 + fuel -= 15 + turns += 1 + event = null + else if(href_list["useengine"]) //use parts + engine -= 1 + event = null + else if(href_list["useelec"]) //use parts + electronics -= 1 + event = null + else if(href_list["usehull"]) //use parts + hull -= 1 + event = null + else if(href_list["wait"]) //wait 3 days + food -= (alive*2)*3 + event = null + else if(href_list["keepspeed"]) //keep speed + if(prob(75)) + event = "Breakdown" + event() + else + event = null + else if(href_list["blackhole"]) //keep speed past a black hole + if(prob(75)) + event = "BlackHole" + event() + else + event = null + turns += 1 + else if(href_list["holedeath"]) + gameover = 1 + event = null + else if(href_list["eventclose"]) //end an event + event = null + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + + +/obj/machinery/computer/arcade/orion_trail/proc/event() + eventdat = "

    [event]

    " + if(event == "Raiders") + eventdat += "Raiders have come aboard your ship!" + if(prob(50)) + var/sfood = rand(1,10) + var/sfuel = rand(1,10) + food -= sfood + fuel -= sfuel + eventdat += "
    They have stolen [sfood] Food and [sfuel] Fuel." + else if(prob(10)) + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] tried to fight back but was killed." + alive -= 1 + else + eventdat += "
    Fortunately you fended them off without any trouble." + eventdat += "

    Continue

    " + eventdat += "

    Close

    " + + else if(event == "Interstellar Flux") + eventdat += "This region of space is highly turbulent.
    If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." + eventdat += "
    What will you do?" + eventdat += "

    Slow Down Continue

    " + eventdat += "

    Close

    " + + else if(event == "Illness") + eventdat += "A deadly illness has been contracted!" + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] was killed by the disease." + alive -= 1 + eventdat += "

    Continue

    " + eventdat += "

    Close

    " + + else if(event == "Breakdown") + eventdat += "Oh no! The engine has broken down!" + eventdat += "
    You can repair it with an engine part, or you can make reapirs for 3 days." + if(engine >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "Malfunction") + eventdat += "The ship's systems are malfunctioning!" + eventdat += "
    You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." + if(electronics >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "Collision") + eventdat += "Something hit us! Looks like there's some hull damage." + if(prob(25)) + var/sfood = rand(5,15) + var/sfuel = rand(5,15) + food -= sfood + fuel -= sfuel + eventdat += "
    [sfood] Food and [sfuel] Fuel was vented out into space." + if(prob(10)) + var/deadname = pick_n_take(settlers) + eventdat += "
    [deadname] was killed by rapid depressurization." + alive -= 1 + eventdat += "
    You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." + if(hull >= 1) + eventdat += "

    Use PartWait

    " + else + eventdat += "

    Wait

    " + eventdat += "

    Close

    " + + else if(event == "BlackHole") + eventdat += "You were swept away into the black hole." + eventdat += "

    Oh...

    " + eventdat += "

    Close

    " + settlers = list() + + +/obj/machinery/computer/arcade/orion_trail/proc/win() + playing = 0 + prizevend() diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index eda624aa1d4..fc2605949b2 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -105,10 +105,14 @@ name = "circuit board (Cloning)" build_path = "/obj/machinery/computer/cloning" origin_tech = "programming=3;biotech=3" -/obj/item/weapon/circuitboard/arcade - name = "circuit board (Arcade)" - build_path = "/obj/machinery/computer/arcade" +/obj/item/weapon/circuitboard/arcade/battle + name = "circuit board (Arcade Battle)" + build_path = "/obj/machinery/computer/arcade/battle" origin_tech = "programming=1" +/obj/item/weapon/circuitboard/arcade/orion_trail + name = "circuit board (Orion_Trail)" + build_path = "/obj/machinery/computer/arcade/orion_trail" + origin_tech = "programming=2" /obj/item/weapon/circuitboard/turbine_control name = "circuit board (Turbine control)" build_path = "/obj/machinery/computer/turbine_computer" @@ -245,7 +249,7 @@ if(src.build_path == "/obj/machinery/computer/rdconsole/core") src.name = "circuit board (RD Console - Robotics)" src.build_path = "/obj/machinery/computer/rdconsole/robotics" - user << "\blue Access protocols succesfully updated." + user << "\blue Access protocols successfully updated." else src.name = "circuit board (RD Console)" src.build_path = "/obj/machinery/computer/rdconsole/core" diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 149d5ab7556..0ddf619e7cd 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -160,21 +160,21 @@ var/target_owner var/target_rank if(modify) - target_name = modify.name + target_name = html_encode(modify.name) else target_name = "--------" if(modify && modify.registered_name) - target_owner = modify.registered_name + target_owner = html_encode(modify.registered_name) else target_owner = "--------" if(modify && modify.assignment) - target_rank = modify.assignment + target_rank = html_encode(modify.assignment) else target_rank = "Unassigned" var/scan_name if(scan) - scan_name = scan.name + scan_name = html_encode(scan.name) else scan_name = "--------" @@ -323,9 +323,12 @@ if (authenticated) var/t1 = href_list["assign_target"] if(t1 == "Custom") - var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_NAME_LEN) - if(temp_t) - t1 = temp_t + var/newJob = reject_bad_name(input("Enter a custom job assignment.", "Assignment", modify ? modify.assignment : "Unassigned")) + if(newJob) + t1 = newJob + else + usr << "\red Invalid job name entered." + return else var/datum/job/jobdatum for(var/jobtype in typesof(/datum/job)) @@ -345,7 +348,12 @@ var/t2 = modify //var/t1 = input(usr, "What name?", "ID computer", null) as text if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) - modify.registered_name = copytext(sanitize(href_list["reg"]),1,MAX_NAME_LEN) + var/newName = reject_bad_name(href_list["reg"]) + if(newName) + modify.registered_name = newName + else + usr << "\red Invalid name entered." + return if ("mode") mode = text2num(href_list["mode_target"]) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index ea04fbd5775..5400185bd75 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -325,10 +325,10 @@ if (subject.suiciding == 1) scantemp = "Subject's brain is not responding to scanning stimuli." return - if ((!subject.ckey) || (!subject.client)) - scantemp = "Mental interface failure." - return if (NOCLONE in subject.mutations) + scantemp = "Subject no longer contains the fundamental materials required to create a living clone." + return + if ((!subject.ckey) || (!subject.client)) scantemp = "Mental interface failure." return if (find_record("ckey", subject.ckey, records)) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 9c268cb8cce..ca522c4d35a 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -198,18 +198,18 @@ stat_msg2 = reject_bad_text(input("Line 2", "Enter Message Text", stat_msg2) as text|null, 40) src.updateDialog() - // OMG CENTCOMM LETTERHEAD + // OMG CENTCOM LETTERHEAD if("MessageCentcomm") if(src.authenticated==2) if(centcom_message_cooldown) usr << "Arrays recycling. Please stand by." return - var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") + var/input = stripped_input(usr, "Please choose a message to transmit to Centcom via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || !(usr in view(1,src))) return Centcomm_announce(input, usr) usr << "Message transmitted." - log_say("[key_name(usr)] has made a Centcomm announcement: [input]") + log_say("[key_name(usr)] has made a Centcom announcement: [input]") centcom_message_cooldown = 1 spawn(6000)//10 minute cooldown centcom_message_cooldown = 0 diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 227ce9d0695..b2a5436ef66 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -45,7 +45,7 @@ //Foreach goto(132) dat += text("
    Back", src) if(3.0) - dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) + dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From Disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) if(4.0) dat += "
    Medical Record

    " if(active1 in data_core.general) @@ -344,7 +344,7 @@ R.fields["blood_type"] = "Unknown" R.fields["b_dna"] = "Unknown" R.fields["mi_dis"] = "None" - R.fields["mi_dis_d"] = "No minor disabilities have been declared." + R.fields["mi_dis_d"] = "No minor disabilities have been diagnosed." R.fields["ma_dis"] = "None" R.fields["ma_dis_d"] = "No major disabilities have been diagnosed." R.fields["alg"] = "None" @@ -451,5 +451,5 @@ /obj/machinery/computer/med_data/laptop name = "medical laptop" - desc = "Cheap Nanotrasen Laptop." + desc = "A cheap Nanotrasen medical laptop, it functions as a medical records computer. It's bolted to the table." icon_state = "medlaptop" diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index a02adde4d09..1499eb08075 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -160,7 +160,7 @@ else message_admins("\blue [key_name_admin(usr)] detonated [R.name]!") - log_game("\blue [key_name_admin(usr)] detonated [R.name]!") + log_game("\blue [key_name(usr)] detonated [R.name]!") R.self_destruct() else usr << "\red Access Denied." diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index ba09bd4d642..c3a724ad244 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -5,6 +5,7 @@ icon_state = "closed" explosion_resistance = 25 var/id = 1 + var/auto_close = 0 // Time in seconds to automatically close when opened, 0 if it doesn't. /obj/machinery/door/poddoor/preopen icon_state = "open" @@ -53,6 +54,11 @@ update_freelook_sight() operating = 0 + if(auto_close) + spawn(auto_close) + // Checks for being able to close are in close(). + close() + return 1 diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 6dd2af1418d..180da00b5a5 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -26,7 +26,7 @@ bulb = new /obj/item/device/flash(src) /obj/machinery/flasher/power_change() - if (powered() && bulb && anchored) + if (powered() && anchored && bulb) stat &= ~NOPOWER if(bulb.broken) icon_state = "[base_state]1-p" @@ -131,15 +131,14 @@ if (!anchored && !isinspace()) user << "[src] is now secured." - overlays.Cut() - power_change() + overlays += "[base_state]-s" anchored = 1 - + power_change() else user << "[src] can now be moved." - overlays += "[base_state]-s" - power_change() + overlays.Cut() anchored = 0 + power_change() else ..() diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 34f7358a6aa..9809be206f9 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -186,9 +186,9 @@ items_measures[display_name] = "slab of meat" items_measures_p[display_name] = "slabs of meat" if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" + display_name = "Donk Pockets" + items_measures[display_name] = "donk pocket" + items_measures_p[display_name] = "donk pockets" if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) items_measures[display_name] = "fillet of meat" items_measures_p[display_name] = "fillets of meat" diff --git a/code/game/machinery/kitchen/monkeyrecycler.dm b/code/game/machinery/kitchen/monkeyrecycler.dm index 11de65caff6..0a681094694 100644 --- a/code/game/machinery/kitchen/monkeyrecycler.dm +++ b/code/game/machinery/kitchen/monkeyrecycler.dm @@ -1,6 +1,6 @@ /obj/machinery/monkey_recycler name = "monkey recycler" - desc = "A machine used for recycling dead monkeys into monkey cubes." + desc = "A machine used for recycling dead monkeys into monkey cubes. It requires 5 monkeys per cube." icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" layer = 2.9 @@ -29,7 +29,7 @@ playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) use_power(500) src.grinded++ - user << "\blue The machine now has [grinded] monkeys worth of material stored." + user << "\blue The machine now has [grinded] monkey\s worth of material stored." else user << "\red The machine only accepts monkeys!" @@ -38,7 +38,7 @@ /obj/machinery/monkey_recycler/attack_hand(var/mob/user as mob) if (src.stat != 0) //NOPOWER etc return - if(grinded >=5) + if(grinded >= 5) user << "\blue The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube." playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) grinded -= 5 diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index f35e91d9171..496ee082dba 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -288,4 +288,4 @@ /obj/machinery/smartfridge/chemistry/virology name = "smart virus storage" desc = "A refrigerated storage unit for volatile sample storage." - spawn_meds = list(/obj/item/weapon/reagent_containers/syringe/antiviral = 4, /obj/item/weapon/reagent_containers/glass/bottle/cold = 1, /obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1, /obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1, /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1) \ No newline at end of file + spawn_meds = list(/obj/item/weapon/reagent_containers/syringe/antiviral = 4, /obj/item/weapon/reagent_containers/glass/bottle/cold = 1, /obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1, /obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1, /obj/item/weapon/reagent_containers/glass/bottle/plasma = 1, /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1) \ No newline at end of file diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 4968f427ea2..11668d874c5 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -25,8 +25,6 @@ if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow)) user << "Your gun's recharge port was removed to make room for a miniaturized reactor." return - if (istype(G, /obj/item/weapon/gun/energy/staff)) - return user.drop_item() G.loc = src charging = G diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 997f795b69f..5d111fa7cdf 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -30,6 +30,7 @@ var/const/SAFETY_COOLDOWN = 100 ..() update_icon() +/* /obj/machinery/recycler/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/card/emag) && !emagged) emagged = 1 @@ -37,8 +38,13 @@ var/const/SAFETY_COOLDOWN = 100 safety_mode = 0 update_icon() playsound(src.loc, "sparks", 75, 1, -1) + else if(istype(I, /obj/item/weapon/screwdriver) && emagged) + emagged = 0 + update_icon() + user << "You reset the crusher to its default factory settings." else ..() +*/ /obj/machinery/recycler/update_icon() ..() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index f78ca4b746d..678d9407a66 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -14,6 +14,7 @@ var/open_panel = 0 //are the wires exposed? var/active = 0 //is the bomb counting down? var/defused = 0 //is the bomb capable of exploding? + var/degutted = 0 //is the bomb even a bomb anymore? /obj/machinery/syndicatebomb/process() if(active && !defused && (timer > 0)) //Tick Tock @@ -68,14 +69,37 @@ user << "You [open_panel ? "open" : "close"] the wire panel." else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler )) - if(open_panel) + if(degutted) + user << "The wires aren't connected to anything!" + else if(open_panel) wires.Interact(user) + else if(istype(I, /obj/item/weapon/crowbar)) + if(open_panel && !degutted && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) + user << "You carefully pry out the bomb's payload." + degutted = 1 + new /obj/item/weapon/syndicatebombcore(user.loc) + else if (open_panel) + user << "The wires conneting the shell to the explosives are holding it down!" + else if (degutted) + user << "The explosives have already been removed." + else + user << "The cover is screwed on, it won't pry off!" + else if(istype(I, /obj/item/weapon/syndicatebombcore)) + if(degutted) + user << "You place the payload into the shell." + degutted = 0 + user.drop_item() + del(I) + else + user << "While a double strength bomb would surely be a thing of terrible beauty, there's just no room for it." else ..() /obj/machinery/syndicatebomb/attack_hand(var/mob/user) - if(anchored) + if(degutted) + user << "The bomb's explosives have been removed, the [open_panel ? "wires" : "buttons"] are useless now." + else if(anchored) if(open_panel) wires.Interact(user) else if(!active) @@ -87,26 +111,84 @@ /obj/machinery/syndicatebomb/proc/settings(var/mob/user) var/newtime = input(usr, "Please set the timer.", "Timer", "[timer]") as num - newtime = Clamp(newtime, 30, 60000) + newtime = Clamp(newtime, 60, 60000) if(in_range(src, usr) && isliving(usr)) //No running off and setting bombs from across the station timer = newtime src.loc.visible_message("\blue \icon[src] timer set for [timer] seconds.") if(alert(usr,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, usr) && isliving(usr)) - if(defused || active) - if(defused) + if(defused || active || degutted) + if(degutted) + src.loc.visible_message("\blue \icon[src] Device error: Payload missing") + else if(defused) src.loc.visible_message("\blue \icon[src] Device error: User intervention required") return else src.loc.visible_message("\red \icon[src] [timer] seconds until detonation, please clear the area.") playsound(loc, 'sound/machines/click.ogg', 30, 1) - icon_state = "syndicate-bomb-active" + if(!open_panel) + icon_state = "syndicate-bomb-active" + else + icon_state = "syndicate-bomb-active-wires" active = 1 add_fingerprint(user) var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) - var/log_str = "[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP)." + message_admins("[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP).") + log_game("[key_name(usr)] has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])") + processing_objects.Add(src) //Ticking down + +/obj/machinery/syndicatebomb/proc/isWireCut(var/index) + return wires.IsIndexCut(index) + +/obj/item/weapon/syndicatebombcore + name = "bomb payload" + desc = "A powerful secondary explosive of syndicate design and unknown composition, it should be stable under normal conditions..." + icon = 'icons/obj/assemblies.dmi' + icon_state = "bombcore" + item_state = "eshield0" + flags = FPRINT | TABLEPASS + w_class = 3.0 + origin_tech = "syndicate=6;combat=5" + +/obj/item/weapon/syndicatebombcore/ex_act(severity) //Little boom can chain a big boom + explosion(src.loc,2,5,11, flame_range = 11) + del(src) + +/obj/item/device/syndicatedetonator + name = "big red button" + desc = "Nothing good can come of pressing a button this garish..." + icon = 'icons/obj/assemblies.dmi' + icon_state = "bigred" + item_state = "electronic" + flags = FPRINT | TABLEPASS + w_class = 1.0 + origin_tech = "syndicate=2" + var/cooldown = 0 + var/detonated = 0 + var/existant = 0 + +/obj/item/device/syndicatedetonator/attack_self(mob/user as mob) + if(!cooldown) + for(var/obj/machinery/syndicatebomb/B in machines) + if(B.active) + B.timer = 0 + detonated++ + existant++ + playsound(user, 'sound/machines/click.ogg', 20, 1) + user << "[existant] found, [detonated] triggered." + if(detonated) + var/turf/T = get_turf(src) + var/area/A = get_area(T) + detonated-- + var/log_str = "[key_name(usr)]? has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] (JMP)." bombers += log_str message_admins(log_str) - log_game(log_str) - processing_objects.Add(src) //Ticking down \ No newline at end of file + log_game("[key_name(usr)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name]([T.x],[T.y],[T.z])") + detonated = 0 + existant = 0 + cooldown = 1 + spawn(30) cooldown = 0 + + + diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 39da02b0e1d..2316f12f45a 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -219,7 +219,7 @@ if(3) A = new /obj/item/projectile/beam/pulse( loc ) if(4) - A = new /obj/item/projectile/change( loc ) + A = new /obj/item/projectile/magic/change( loc ) if(5) A = new /obj/item/projectile/bluetag( loc ) if(6) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 731ce8e7f04..661c885b4d7 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -2,6 +2,7 @@ var/product_name = "generic" var/product_path = null var/amount = 0 + var/max_amount = 0 var/display_color = "blue" @@ -44,6 +45,7 @@ var/obj/item/weapon/coin/coin var/datum/wires/vending/wires = null + var/obj/item/weapon/vending_refill/refill_canister = null //The type of refill canisters used by this machine. /obj/machinery/vending/New() ..() @@ -94,6 +96,7 @@ R.product_name = initial(temp.name) R.product_path = typepath R.amount = amount + R.max_amount = amount R.display_color = pick("red","blue","green") if(hidden) @@ -104,6 +107,35 @@ product_records += R // world << "Added: [R.product_name]] - [R.amount] - [R.product_path]" +/obj/machinery/vending/proc/refill_inventory(obj/item/weapon/vending_refill/refill, datum/data/vending_product/machine, mob/user) + var/total = 0 + + var/to_restock = 0 + for(var/datum/data/vending_product/machine_content in machine) + if(machine_content.amount == 0 && refill.charges > 0) + machine_content.amount++ + refill.charges-- + total++ + to_restock += machine_content.max_amount - machine_content.amount + + if(to_restock <= refill.charges) + for(var/datum/data/vending_product/machine_content in machine) + machine_content.amount = machine_content.max_amount + refill.charges -= to_restock + total += to_restock + else + var/tmp_charges = refill.charges + for(var/datum/data/vending_product/machine_content in machine) + if(refill.charges == 0) + break + var/restock = Ceiling(((machine_content.max_amount - machine_content.amount)/to_restock)*tmp_charges) + if(restock > refill.charges) + restock = refill.charges + machine_content.amount += restock + refill.charges -= restock + total += restock + return total + /obj/machinery/vending/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/card/emag)) @@ -128,6 +160,23 @@ coin = W user << "You insert [W] into [src]." return + else if(istype(W, refill_canister) && refill_canister != null) + if(stat & (BROKEN|NOPOWER)) + user << "It does nothing." + else if(panel_open) + //if the panel is open we attempt to refill the machine + var/obj/item/weapon/vending_refill/canister = W + if(canister.charges == 0) + user << "This [canister.name] is empty!" + else + var/transfered = refill_inventory(canister,product_records,user) + if(transfered) + user << "You loaded [transfered] items in \the [name]." + else + user << "The [name] is fully stocked." + return; + else + user << "You should probably unscrew the service panel first." else ..() @@ -158,30 +207,31 @@ else dat += "No coin  Remove" - dat += "

    Select an Item

    " - dat += "
    " - if(product_records.len == 0) - dat += "No product loaded!" - else - var/list/display_records = product_records - if(extended_inventory) - display_records = product_records + hidden_records - if(coin) - display_records = product_records + coin_records - if(coin && extended_inventory) - display_records = product_records + hidden_records + coin_records - dat += "
      " - for (var/datum/data/vending_product/R in display_records) - dat += "
    • " - if(R.amount > 0) - dat += "Vend " - else - dat += "Sold Out " - dat += "[R.product_name]:" - dat += " [R.amount]" - dat += "
    • " - dat += "
    " - dat += "
    " + if(!panel_open)//Vending machines do not dispense items when they are unscrewed + dat += "

    Select an Item

    " + dat += "
    " + if(product_records.len == 0) + dat += "No product loaded!" + else + var/list/display_records = product_records + if(extended_inventory) + display_records = product_records + hidden_records + if(coin) + display_records = product_records + coin_records + if(coin && extended_inventory) + display_records = product_records + hidden_records + coin_records + dat += "
      " + for (var/datum/data/vending_product/R in display_records) + dat += "
    • " + if(R.amount > 0) + dat += "Vend " + else + dat += "Sold Out " + dat += "[R.product_name]:" + dat += " [R.amount]" + dat += "
    • " + dat += "
    " + dat += "
    " if(panel_open) dat += wires() @@ -217,7 +267,9 @@ usr << "The vending machine refuses to interface with you, as you are not in its target demographic!" return - + if(panel_open) + usr << "The vending machine cannot dispense products while its service panel is open!" + return if(href_list["remove_coin"]) if(!coin) usr << "There is no coin in this machine." @@ -426,6 +478,7 @@ product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!" req_access_txt = "25" + refill_canister = /obj/item/weapon/vending_refill/boozeomat /obj/machinery/vending/assist products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4, @@ -442,7 +495,7 @@ vend_delay = 34 products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 25) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 10) - + refill_canister = /obj/item/weapon/vending_refill/coffee /obj/machinery/vending/snack @@ -455,6 +508,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6) contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) + refill_canister = /obj/item/weapon/vending_refill/snack /obj/machinery/vending/sustenance @@ -480,6 +534,7 @@ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 5) + refill_canister = /obj/item/weapon/vending_refill/cola //This one's from bay12 /obj/machinery/vending/cart @@ -503,6 +558,7 @@ products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4) contraband = list(/obj/item/weapon/lighter/zippo = 4) premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2) + refill_canister = /obj/item/weapon/vending_refill/cigarette /obj/machinery/vending/medical name = "\improper NanoMed Plus" @@ -625,6 +681,7 @@ /obj/item/clothing/head/rabbitears =1) //Pretty much everything that had a chance to spawn. contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1,/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1) premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1) + refill_canister = /obj/item/weapon/vending_refill/autodrobe /obj/machinery/vending/dinnerware name = "dinnerware" diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index f98f7954982..2e473dfbc92 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -35,7 +35,7 @@ cargo_holder.cargo += O O.loc = chassis O.anchored = 0 - occupant_message("[target] succesfully loaded.") + occupant_message("[target] successfully loaded.") log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else occupant_message("You must hold still while handling objects.") @@ -1046,7 +1046,7 @@ cargo_holder.cargo += O O.loc = chassis O.anchored = 0 - chassis.occupant_message("[target] succesfully loaded.") + chassis.occupant_message("[target] successfully loaded.") chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else chassis.occupant_message("You must hold still while handling objects.") diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 0e3fe20bdc5..9e925a7c83c 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -349,16 +349,13 @@ do_after_cooldown() return -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve - name = "\improper SOP-6 grenade launcher" +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze + name = "\improper SOB-3 grenade launcher" + projectiles = 3 projectile = /obj/item/weapon/grenade/flashbang/clusterbang - construction_cost = list("metal"=20000,"gold"=6000,"uranium"=6000) - -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload - return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]\[[src.projectiles]\]" - -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm() - return//Extra bit of security + projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher. + equip_cooldown = 90 + construction_cost = list("metal"=20000,"gold"=10000,"uranium"=10000) //now as expensive as a Honkblast. /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar name = "banana mortar" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 994724ef1b2..9bf3da5d6ff 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -367,7 +367,7 @@ src.overlays -= "fab-active" src.desc = initial(src.desc) if(being_built) - src.being_built.Move(get_step(src,SOUTH)) + src.being_built.loc = get_step(src,SOUTH) src.visible_message("\icon[src] [src] beeps, \"The [src.being_built] is complete\".") src.being_built = null src.updateUsrDialog() diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index e070acb84b6..88d728ed76c 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -42,7 +42,7 @@ /obj/structure/alien/resin/CanAtmosPass() return !density - + /obj/structure/alien/resin/wall name = "resin wall" desc = "Purple slime solidified into a wall." @@ -140,6 +140,7 @@ #define NODERANGE 3 /obj/structure/alien/weeds + gender = PLURAL name = "weeds" desc = "Weird purple weeds." icon_state = "weeds" @@ -376,6 +377,7 @@ * Acid */ /obj/effect/acid + gender = PLURAL name = "acid" desc = "Burbling corrossive stuff." icon = 'icons/effects/effects.dmi' diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index d50d595d3ea..f98e5922f82 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -1,23 +1,18 @@ -/obj/effect/decal/remains/human +/obj/effect/decal/remains name = "remains" - desc = "They look like human remains. They have a strange aura about them." gender = PLURAL icon = 'icons/effects/blood.dmi' - icon_state = "remains" anchored = 1 +/obj/effect/decal/remains/human + desc = "They look like human remains. They have a strange aura about them." + icon_state = "remains" + /obj/effect/decal/remains/xeno - name = "remains" desc = "They look like the remains of something... alien. They have a strange aura about them." - gender = PLURAL - icon = 'icons/effects/blood.dmi' icon_state = "remainsxeno" - anchored = 1 /obj/effect/decal/remains/robot - name = "remains" desc = "They look like the remains of something mechanical. They have a strange aura about them." - gender = PLURAL icon = 'icons/mob/robots.dmi' - icon_state = "remainsrobot" - anchored = 1 \ No newline at end of file + icon_state = "remainsrobot" \ No newline at end of file diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 52caa19ef80..128fe3850a1 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -914,7 +914,8 @@ steam.start() -- spawns the effect anchored = 1 name = "foamed metal" desc = "A lightweight foamed metal wall." - var/metal = 1 // 1=aluminum, 2=iron + gender = PLURAL + var/metal = 1 // 1=aluminium, 2=iron New() ..() diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index b658407247c..0e46105b06c 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -1,5 +1,5 @@ /obj/effect/mine - name = "Mine" + name = "mine" desc = "I Better stay away from that thing." density = 1 anchored = 1 @@ -69,26 +69,26 @@ del(src) /obj/effect/mine/dnascramble - name = "Radiation Mine" + name = "radiation mine" icon_state = "uglymine" triggerproc = "triggerrad" /obj/effect/mine/plasma - name = "Plasma Mine" + name = "plasma mine" icon_state = "uglymine" triggerproc = "triggerplasma" /obj/effect/mine/kick - name = "Kick Mine" + name = "kick mine" icon_state = "uglymine" triggerproc = "triggerkick" /obj/effect/mine/n2o - name = "N2O Mine" + name = "\improper N2O mine" icon_state = "uglymine" triggerproc = "triggern2o" /obj/effect/mine/stun - name = "Stun Mine" + name = "stun mine" icon_state = "uglymine" triggerproc = "triggerstun" \ No newline at end of file diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 4b1e7cfc642..3b4f423ee74 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -99,20 +99,29 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa else if(dist < light_impact_range) dist = 3 else dist = 0 - if(flame_dist && prob(40) && !istype(T, /turf/space)) - new /obj/effect/hotspot(T) //Mostly for ambience! - hotspot_exists = 1 - if(dist) - T.ex_act(dist) + + //------- TURF FIRES -------\\ if(T) + if(flame_dist && prob(40) && !istype(T, /turf/space)) + new/obj/effect/hotspot(T) //Mostly for ambience! + hotspot_exists = 1 + if(dist) + T.ex_act(dist) + + //------- THINGS IN TURFS FIRES -------\\ + for(var/atom_movable in T.contents) //bypass type checking since only atom/movable can be contained by turfs anyway var/atom/movable/AM = atom_movable - if(flame_dist) - if(isliving(AM) && !hotspot_exists && !istype(T, /turf/space)) - new /obj/effect/hotspot(AM.loc) - //Just in case we missed a mob while they were in flame_range, but a hotspot didn't spawn on them, otherwise it looks weird when you just burst into flame out of nowhere - if(dist) - AM.ex_act(dist) + + if(AM) //Something is inside T (We have already checked T exists above) - RR + if(flame_dist) //if it has flame distance, run this - RR + if(isliving(AM) && !hotspot_exists && !istype(T, /turf/space)) + new /obj/effect/hotspot(AM.loc) + //Just in case we missed a mob while they were in flame_range, but a hotspot didn't spawn on them, otherwise it looks weird when you just burst into flame out of nowhere + if(dist) //if no flame_dist, run this - RR + AM.ex_act(dist) + + var/took = (world.timeofday-start)/10 //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5543df78437..cbc47d65df8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1,7 +1,6 @@ /obj/item name = "item" icon = 'icons/obj/items.dmi' - var/abstract = 0 var/item_state = null var/r_speed = 1.0 var/health = null @@ -180,19 +179,23 @@ if(istype(W,/obj/item/weapon/storage)) var/obj/item/weapon/storage/S = W if(S.use_to_pickup) - if(S.collection_mode) //Mode is set to collect all items on a tile and we clicked on a valid one. + if(S.collection_mode) //Mode is set to collect multiple items on a tile and we clicked on a valid one. if(isturf(src.loc)) var/list/rejections = list() var/success = 0 var/failure = 0 for(var/obj/item/I in src.loc) + if(S.collection_mode == 2 && !istype(I,src.type)) // We're only picking up items of the target type + failure = 1 + continue if(I.type in rejections) // To limit bag spamming: any given type only complains once continue if(!S.can_be_inserted(I)) // Note can_be_inserted still makes noise when the answer is no rejections += I.type // therefore full bags are still a little spammy failure = 1 continue + success = 1 S.handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. if(success && !failure) diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 4ed920fd12e..658f7673e0b 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -1,7 +1,7 @@ // APC HULL /obj/item/apc_frame - name = "APC frame" + name = "\improper APC frame" desc = "Used for repairing or building APCs" icon = 'icons/obj/apc_repair.dmi' icon_state = "apc_frame" diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index cfd082ceadf..792b13ae9e6 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -1,5 +1,5 @@ /obj/item/blueprints - name = "station blueprints" + name = "\proper the station blueprints" desc = "Blueprints of the station. There's stamp \"Classified\" and several coffee stains on it." icon = 'icons/obj/items.dmi' icon_state = "blueprints" diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 288bdcbc62e..8ba2e3f6d59 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -133,7 +133,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/syndicate default_cartridge = /obj/item/weapon/cartridge/syndicate icon_state = "pda-syndi" - name = "Military PDA" + name = "military PDA" owner = "John Doe" hidden = 1 diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index ea7f3fb0c6f..7e657c718ca 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -34,27 +34,27 @@ var/list/stored_data = list() engineering - name = "Power-ON Cartridge" + name = "\improper Power-ON cartridge" icon_state = "cart-e" access_engine = 1 atmos - name = "BreatheDeep Cartridge" + name = "\improper BreatheDeep cartridge" icon_state = "cart-a" access_atmos = 1 medical - name = "Med-U Cartridge" + name = "\improper Med-U cartridge" icon_state = "cart-m" access_medical = 1 chemistry - name = "ChemWhiz Cartridge" + name = "\improper ChemWhiz cartridge" icon_state = "cart-chem" access_reagent_scanner = 1 security - name = "R.O.B.U.S.T. Cartridge" + name = "\improper R.O.B.U.S.T. cartridge" icon_state = "cart-s" access_security = 1 @@ -63,7 +63,7 @@ radio = new /obj/item/radio/integrated/beepsky(src) detective - name = "D.E.T.E.C.T. Cartridge" + name = "\improper D.E.T.E.C.T. cartridge" icon_state = "cart-s" access_security = 1 access_medical = 1 @@ -74,30 +74,30 @@ radio = new /obj/item/radio/integrated/beepsky(src) janitor - name = "CustodiPRO Cartridge" + name = "\improper CustodiPRO cartridge" desc = "The ultimate in clean-room design." icon_state = "cart-j" access_janitor = 1 lawyer - name = "P.R.O.V.E. Cartridge" + name = "\improper P.R.O.V.E. cartridge" icon_state = "cart-s" access_security = 1 clown - name = "Honkworks 5.0" + name = "\improper Honkworks 5.0 cartridge" icon_state = "cart-clown" access_clown = 1 var/honk_charges = 5 mime - name = "Gestur-O 1000" + name = "\improper Gestur-O 1000 cartridge" icon_state = "cart-mi" access_mime = 1 var/mime_charges = 5 /* botanist - name = "Green Thumb v4.20" + name = "\improper Green Thumb v4.20 cartridge" icon_state = "cart-b" access_flora = 1 */ @@ -107,7 +107,7 @@ desc = "A data cartridge with an integrated radio signaler module." toxins - name = "Signal Ace 2" + name = "\improper Signal Ace 2 cartridge" desc = "Complete with integrated radio signaler!" icon_state = "cart-tox" access_reagent_scanner = 1 @@ -120,7 +120,7 @@ quartermaster - name = "Space Parts & Space Vendors Cartridge" + name = "space parts & space vendors cartridge" desc = "Perfect for the Quartermaster on the go!" icon_state = "cart-q" access_quartermaster = 1 @@ -130,13 +130,13 @@ radio = new /obj/item/radio/integrated/mule(src) head - name = "Easy-Record DELUXE" + name = "\improper Easy-Record DELUXE cartridge" icon_state = "cart-h" access_manifest = 1 access_status_display = 1 hop - name = "HumanResources9001" + name = "\improper HumanResources9001 cartridge" icon_state = "cart-h" access_manifest = 1 access_status_display = 1 @@ -149,7 +149,7 @@ radio = new /obj/item/radio/integrated/mule(src) hos - name = "R.O.B.U.S.T. DELUXE" + name = "\improper R.O.B.U.S.T. DELUXE cartridge" icon_state = "cart-hos" access_manifest = 1 access_status_display = 1 @@ -160,7 +160,7 @@ radio = new /obj/item/radio/integrated/beepsky(src) ce - name = "Power-On DELUXE" + name = "\improper Power-On DELUXE cartridge" icon_state = "cart-ce" access_manifest = 1 access_status_display = 1 @@ -168,7 +168,7 @@ access_atmos = 1 cmo - name = "Med-U DELUXE" + name = "\improper Med-U DELUXE cartridge" icon_state = "cart-cmo" access_manifest = 1 access_status_display = 1 @@ -176,7 +176,7 @@ access_medical = 1 rd - name = "Signal Ace DELUXE" + name = "\improper Signal Ace DELUXE cartridge" icon_state = "cart-rd" access_manifest = 1 access_status_display = 1 @@ -188,7 +188,7 @@ radio = new /obj/item/radio/integrated/signal(src) captain - name = "Value-PAK Cartridge" + name = "\improper Value-PAK cartridge" desc = "Now with 200% more value!" icon_state = "cart-c" access_manifest = 1 @@ -204,7 +204,7 @@ radio = new /obj/item/radio/integrated/beepsky(src) syndicate - name = "Detomatix Cartridge" + name = "\improper Detomatix cartridge" icon_state = "cart" access_remote_door = 1 remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing. diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index 45bcff1c052..eadb043dd79 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -1,5 +1,5 @@ /obj/item/radio/integrated - name = "PDA radio module" + name = "\improper PDA radio module" desc = "An electronic radio system of nanotrasen origin." icon = 'icons/obj/module.dmi' icon_state = "power_mod" diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index fb1225a9ba9..4d7049c3375 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -15,9 +15,9 @@ name = "camera bug" desc = "For illicit snooping through the camera network." icon = 'icons/obj/device.dmi' - icon_state = "mindflash2" + icon_state = "camera_bug" w_class = 1.0 - item_state = "electronic" + item_state = "camera_bug" throw_speed = 4 throw_range = 20 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 50a6f44bbc4..732541f6d3d 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -198,6 +198,7 @@ /obj/item/device/flashlight/slime + gender = PLURAL name = "glowing slime extract" desc = "Extract from a yellow slime. It emits a strong light when squeezed." icon = 'icons/obj/lighting.dmi' diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 15dfc43a7db..83923a5c9dd 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -181,7 +181,7 @@ emagged = !emagged playsound(src.loc, "sparks", 100, 1) if(emagged) - name = "Shortcircuited [initial(name)]" + name = "shortcircuited [initial(name)]" else name = initial(name) update_icon() diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 9eaed768a8b..853890021fa 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -1,5 +1,5 @@ /obj/item/device/radio/beacon - name = "Tracking Beacon" + name = "tracking beacon" desc = "A beacon used by a teleporter." icon_state = "beacon" item_state = "signaler" diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 5016ad369e9..8a92d36b64d 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -1,6 +1,6 @@ /obj/item/device/encryptionkey/ - name = "Standard Encryption Key" + name = "standard encryption key" desc = "An encryption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN." icon = 'icons/obj/radio.dmi' icon_state = "cypherkey" @@ -27,91 +27,91 @@ origin_tech = "syndicate=3" /obj/item/device/encryptionkey/headset_sec - name = "Security Radio Encryption Key" + name = "security radio encryption key" desc = "An encryption key for a radio headset. To access the security channel, use :s." icon_state = "sec_cypherkey" channels = list("Security" = 1) /obj/item/device/encryptionkey/headset_eng - name = "Engineering Radio Encryption Key" + name = "engineering radio encryption key" desc = "An encryption key for a radio headset. To access the engineering channel, use :e." icon_state = "eng_cypherkey" channels = list("Engineering" = 1) /obj/item/device/encryptionkey/headset_rob - name = "Robotics Radio Encryption Key" + name = "robotics radio encryption key" desc = "An encryption key for a radio headset. To access the engineering channel, use :e. For research, use :n." icon_state = "rob_cypherkey" channels = list("Science" = 1, "Engineering" = 1) /obj/item/device/encryptionkey/headset_med - name = "Medical Radio Encryption Key" + name = "medical radio encryption key" desc = "An encryption key for a radio headset. To access the medical channel, use :m." icon_state = "med_cypherkey" channels = list("Medical" = 1) /obj/item/device/encryptionkey/headset_sci - name = "Science Radio Encryption Key" + name = "science radio encryption key" desc = "An encryption key for a radio headset. To access the science channel, use :n." icon_state = "sci_cypherkey" channels = list("Science" = 1) /obj/item/device/encryptionkey/headset_medsci - name = "Medical Research Radio Encryption Key" + name = "medical research radio encryption key" desc = "An encryption key for a radio headset. To access the medical channel, use :m. For science, use :n." icon_state = "medsci_cypherkey" channels = list("Science" = 1, "Medical" = 1) /obj/item/device/encryptionkey/headset_com - name = "Command Radio Encryption Key" + name = "command radio encryption key" desc = "An encryption key for a radio headset. To access the command channel, use :c." icon_state = "com_cypherkey" channels = list("Command" = 1) /obj/item/device/encryptionkey/heads/captain - name = "Captain's Encryption Key" + name = "\proper the captain's encryption key" desc = "An encryption key for a radio headset. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "cap_cypherkey" channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0) /obj/item/device/encryptionkey/heads/rd - name = "Research Director's Encryption Key" + name = "\proper the research director's encryption key" desc = "An encryption key for a radio headset. To access the science channel, use :n. For command, use :c." icon_state = "rd_cypherkey" channels = list("Science" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/hos - name = "Head of Security's Encryption Key" + name = "\proper the head of security's encryption key" desc = "An encryption key for a radio headset. To access the security channel, use :s. For command, use :c." icon_state = "hos_cypherkey" channels = list("Security" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/ce - name = "Chief Engineer's Encryption Key" + name = "\proper the chief engineer's encryption key" desc = "An encryption key for a radio headset. To access the engineering channel, use :e. For command, use :c." icon_state = "ce_cypherkey" channels = list("Engineering" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/cmo - name = "Chief Medical Officer's Encryption Key" + name = "\proper the chief medical officer's encryption key" desc = "An encryption key for a radio headset. To access the medical channel, use :m. For command, use :c." icon_state = "cmo_cypherkey" channels = list("Medical" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/hop - name = "Head of Personnel's Encryption Key" + name = "\proper the head of personnel's encryption key" desc = "An encryption key for a radio headset. Channels are as follows: :u - supply, :v - service, :c - command." icon_state = "hop_cypherkey" channels = list("Supply" = 1, "Service" = 1, "Command" = 1) /obj/item/device/encryptionkey/headset_cargo - name = "Supply Radio Encryption Key" + name = "supply radio encryption key" desc = "An encryption key for a radio headset. To access the supply channel, use :u." icon_state = "cargo_cypherkey" channels = list("Supply" = 1) /obj/item/device/encryptionkey/headset_service - name = "Service Radio Encryption Key" + name = "service radio encryption key" desc = "An encryption key for a radio headset. To access the service channel, use :v." icon_state = "srv_cypherkey" channels = list("Service" = 1) \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index b352cb09ccd..af65fffa1e4 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -99,42 +99,42 @@ keyslot2 = new /obj/item/device/encryptionkey/headset_com /obj/item/device/radio/headset/heads/captain - name = "captain's headset" + name = "\proper the captain's headset" desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/captain /obj/item/device/radio/headset/heads/rd - name = "Research Director's headset" + name = "\proper the research director's headset" desc = "Headset of the fellow who keeps society marching towards technological singularity. To access the science channel, use :n. For command, use :c." icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/rd /obj/item/device/radio/headset/heads/hos - name = "head of security's headset" + name = "\proper the head of security's headset" desc = "The headset of the man in charge of keeping order and protecting the station. To access the security channel, use :s. For command, use :c." icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/hos /obj/item/device/radio/headset/heads/ce - name = "chief engineer's headset" + name = "\proper the chief engineer's headset" desc = "The headset of the guy in charge of keeping the station powered and undamaged. To access the engineering channel, use :e. For command, use :c." icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/ce /obj/item/device/radio/headset/heads/cmo - name = "chief medical officer's headset" + name = "\proper the chief medical officer's headset" desc = "The headset of the highly trained medical chief. To access the medical channel, use :m. For command, use :c." icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/cmo /obj/item/device/radio/headset/heads/hop - name = "head of personnel's headset" + name = "\proper the head of personnel's headset" desc = "The headset of the guy who will one day be captain. Channels are as follows: :u - supply, :v - service, :c - command." icon_state = "com_headset" item_state = "headset" diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 83c7fb7f1c0..52c4945ef18 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -5,7 +5,7 @@ anchored = 1 w_class = 4.0 canhear_range = 2 - flags = FPRINT | CONDUCT | TABLEPASS | NOBLOODY + flags = FPRINT | CONDUCT | TABLEPASS var/number = 0 var/anyai = 1 var/mob/living/silicon/ai/ai = list() @@ -73,3 +73,6 @@ icon_state = "intercom-p" else icon_state = "intercom" + +/obj/item/device/radio/intercom/rejects_blood() + return 1 \ No newline at end of file diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 1c08b4ca68b..27b99ccfece 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -9,7 +9,7 @@ MASS SPECTROMETER */ /obj/item/device/t_scanner - name = "T-ray scanner" + name = "\improper T-ray scanner" desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." icon_state = "t-ray0" var/on = 0 @@ -61,7 +61,7 @@ MASS SPECTROMETER /obj/item/device/healthanalyzer - name = "Health Analyzer" + name = "health analyzer" icon_state = "health" item_state = "analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 29b1678d8b5..aea02524306 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -167,21 +167,24 @@ else attacher_name = "[attacher.name]([attacher.ckey])" - var/log_str = "Bomb valve opened in [A.name] " - log_str += "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" + var/log_str1 = "Bomb valve opened in " + var/log_str2 = "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" + var/log_attacher = "" if(attacher) - log_str += "(?)" + log_attacher = "(?)" var/mob/mob = get_mob_by_key(src.fingerprintslast) var/last_touch_info = "" + if(mob) last_touch_info = "(?)" - log_str += " Last touched by: [src.fingerprintslast][last_touch_info]" - bombers += log_str - message_admins(log_str, 0, 1) - log_game(log_str) + var/log_str3 = " Last touched by: [src.fingerprintslast]" + bombers += "[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]" + + message_admins("[log_str1] [A.name] [log_str2][log_attacher] [log_str3][last_touch_info]", 0, 1) + log_game("[log_str1] [A.name]([A.x],[A.y],[A.z]) [log_str2] [log_str3]") merge_gases() spawn(20) // In case one tank bursts for (var/i=0,i<5,i++) @@ -197,4 +200,4 @@ // this doesn't do anything but the timer etc. expects it to be here // eventually maybe have it update icon to show state (timer, prox etc.) like old bombs /obj/item/device/transfer_valve/proc/c_state() - return \ No newline at end of file + return diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 54614d59352..16a29af3098 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -121,7 +121,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid */ /obj/item/device/uplink/hidden - name = "Hidden Uplink." + name = "hidden uplink." desc = "There is something wrong if you're examining this." /obj/item/device/uplink/hidden/Topic(href, href_list) diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 6e1c608cb2f..99afec53c3c 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -1,5 +1,5 @@ /obj/item/latexballon - name = "Latex glove" + name = "latex glove" desc = "" //todo icon_state = "latexballon" item_state = "lgloves" diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 5b42a14cafa..45023c3f68f 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -37,7 +37,7 @@ var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) overlays.Cut() - usr << "You slice off [src]'s uneven chunks of aluminum and scorch marks." + usr << "You slice off [src]'s uneven chunks of aluminium and scorch marks." return diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 9358adfc4a1..04131676224 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -11,61 +11,72 @@ var/heal_burn = 0 /obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob) - if (M.stat == 2) - var/t_him = "it" - if (M.gender == MALE) - t_him = "him" - else if (M.gender == FEMALE) - t_him = "her" - user << "\red \The [M] is dead, you cannot help [t_him]!" - return + var/mob/living/carbon/human/H = M + var/obj/item/organ/limb/affecting = H.get_organ("chest") - if (!istype(M)) - user << "\red \The [src] cannot be applied to [M]!" - return 1 - if ( ! (istype(user, /mob/living/carbon/human) || \ - istype(user, /mob/living/silicon) || \ - istype(user, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") ) - user << "\red You don't have the dexterity to do this!" - return 1 + if(affecting.status == ORGAN_ORGANIC) //Limb must be organic to be healed - RR + if (M.stat == 2) + var/t_him = "it" + if (M.gender == MALE) + t_him = "him" + else if (M.gender == FEMALE) + t_him = "her" + user << "\red \The [M] is dead, you cannot help [t_him]!" + return - if (user) - if (M != user) - user.visible_message( \ - "\blue [M] has been applied with [src] by [user].", \ - "\blue You apply \the [src] to [M]." \ - ) + if (!istype(M)) + user << "\red \The [src] cannot be applied to [M]!" + return 1 + + if ( ! (istype(user, /mob/living/carbon/human) || \ + istype(user, /mob/living/silicon) || \ + istype(user, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") ) + user << "\red You don't have the dexterity to do this!" + return 1 + + if (user) + if (M != user) + user.visible_message( \ + "\blue [M] has been applied with [src] by [user].", \ + "\blue You apply \the [src] to [M]." \ + ) + else + var/t_himself = "itself" + if (user.gender == MALE) + t_himself = "himself" + else if (user.gender == FEMALE) + t_himself = "herself" + + user.visible_message( \ + "\blue [M] applied [src] on [t_himself].", \ + "\blue You apply \the [src] on yourself." \ + ) + + if (istype(M, /mob/living/carbon/human)) + + + if(istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/user2 = user + affecting = H.get_organ(check_zone(user2.zone_sel.selecting)) + else + if(!istype(affecting, /obj/item/organ/limb) || affecting:burn_dam <= 0) + affecting = H.get_organ("head") + + if(affecting.status == ORGAN_ORGANIC) // Just in case a robotic limb SOMEHOW got down to this point of the proc all you get is a message - RR + + if (affecting.heal_damage(src.heal_brute, src.heal_burn)) + H.update_damage_overlays(0) + + M.updatehealth() else - var/t_himself = "itself" - if (user.gender == MALE) - t_himself = "himself" - else if (user.gender == FEMALE) - t_himself = "herself" + M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) - user.visible_message( \ - "\blue [M] applied [src] on [t_himself].", \ - "\blue You apply \the [src] on yourself." \ - ) - if (istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/limb/affecting = H.get_organ("chest") - - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/user2 = user - affecting = H.get_organ(check_zone(user2.zone_sel.selecting)) - else - if(!istype(affecting, /obj/item/organ/limb) || affecting:burn_dam <= 0) - affecting = H.get_organ("head") - - if (affecting.heal_damage(src.heal_brute, src.heal_burn)) - H.update_damage_overlays(0) - M.updatehealth() + use(1) else - M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) + user << "Medicine won't work on a robotic limb!" - use(1) /obj/item/stack/medical/bruise_pack name = "bruise pack" diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ade5c540ab1..8a200bcbe84 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -97,7 +97,7 @@ * Fake singularity */ /obj/item/toy/spinningtoy - name = "Gravitational Singularity" + name = "gravitational singularity" desc = "\"Singulo\" brand spinning toy." icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" @@ -484,26 +484,26 @@ ..() /obj/item/toy/prize/ripley - name = "toy ripley" + name = "toy Ripley" desc = "Mini-Mecha action figure! Collect them all! 1/11." /obj/item/toy/prize/fireripley - name = "toy firefighting ripley" + name = "toy firefighting Ripley" desc = "Mini-Mecha action figure! Collect them all! 2/11." icon_state = "fireripleytoy" /obj/item/toy/prize/deathripley - name = "toy deathsquad ripley" + name = "toy deathsquad Ripley" desc = "Mini-Mecha action figure! Collect them all! 3/11." icon_state = "deathripleytoy" /obj/item/toy/prize/gygax - name = "toy gygax" + name = "toy Gygax" desc = "Mini-Mecha action figure! Collect them all! 4/11." icon_state = "gygaxtoy" /obj/item/toy/prize/durand - name = "toy durand" + name = "toy Durand" desc = "Mini-Mecha action figure! Collect them all! 5/11." icon_state = "durandprize" @@ -513,27 +513,27 @@ icon_state = "honkprize" /obj/item/toy/prize/marauder - name = "toy marauder" + name = "toy Marauder" desc = "Mini-Mecha action figure! Collect them all! 7/11." icon_state = "marauderprize" /obj/item/toy/prize/seraph - name = "toy seraph" + name = "toy Seraph" desc = "Mini-Mecha action figure! Collect them all! 8/11." icon_state = "seraphprize" /obj/item/toy/prize/mauler - name = "toy mauler" + name = "toy Mauler" desc = "Mini-Mecha action figure! Collect them all! 9/11." icon_state = "maulerprize" /obj/item/toy/prize/odysseus - name = "toy odysseus" + name = "toy Odysseus" desc = "Mini-Mecha action figure! Collect them all! 10/11." icon_state = "odysseusprize" /obj/item/toy/prize/phazon - name = "toy phazon" + name = "toy Phazon" desc = "Mini-Mecha action figure! Collect them all! 11/11." icon_state = "phazonprize" @@ -556,5 +556,306 @@ cooldown = 1 spawn(30) cooldown = 0 return - ..() + + + + +/* +|| A Deck of Cards for playing various games of chance || +*/ + + + +obj/item/toy/cards + name = "deck of cards" + desc = "A deck of space-grade playing cards." + icon = 'icons/obj/toy.dmi' + icon_state = "deck_full" + var/list/cards = list() + +obj/item/toy/cards/New() + ..() + for(var/i = 2; i <= 10; i++) + cards += "[i] of Hearts" + cards += "[i] of Spades" + cards += "[i] of Clubs" + cards += "[i] of Diamonds" + cards += "King of Hearts" + cards += "King of Spades" + cards += "King of Clubs" + cards += "King of Diamonds" + cards += "Queen of Hearts" + cards += "Queen of Spades" + cards += "Queen of Clubs" + cards += "Queen of Diamonds" + cards += "Jack of Hearts" + cards += "Jack of Spades" + cards += "Jack of Clubs" + cards += "Jack of Diamonds" + cards += "Ace of Hearts" + cards += "Ace of Spades" + cards += "Ace of Clubs" + cards += "Ace of Diamonds" + + +obj/item/toy/cards/attack_hand(mob/user as mob) + var/choice = null + if(cards.len == 0) + src.icon_state = "deck_empty" + user << "There are no more cards to draw." + return + var/obj/item/toy/singlecard/H = new/obj/item/toy/singlecard(user.loc) + choice = cards[1] + H.cardname = choice + H.parentdeck = src + src.cards -= choice + H.pickup(user) + user.put_in_active_hand(H) + src.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.") + if(cards.len > 26) + src.icon_state = "deck_full" + else if(cards.len > 10) + src.icon_state = "deck_half" + else if(cards.len > 1) + src.icon_state = "deck_low" + +obj/item/toy/cards/attack_self(mob/user as mob) + cards = shuffle(cards) + playsound(user, 'sound/items/cardshuffle.ogg', 50, 1) + user.visible_message("[user] shuffles the deck.", "You shuffle the deck.") + +obj/item/toy/cards/attackby(obj/item/toy/singlecard/C, mob/living/user) + ..() + if(istype(C)) + if(C.parentdeck == src) + src.cards += C.cardname + user.u_equip(C) + user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") + del(C) + else + user << "You can't mix cards from other decks." + if(cards.len > 26) + src.icon_state = "deck_full" + else if(cards.len > 10) + src.icon_state = "deck_half" + else if(cards.len > 1) + src.icon_state = "deck_low" + + +obj/item/toy/cards/attackby(obj/item/toy/cardhand/C, mob/living/user) + ..() + if(istype(C)) + if(C.parentdeck == src) + src.cards += C.currenthand + user.u_equip(C) + user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") + del(C) + else + user << "You can't mix cards from other decks." + if(cards.len > 26) + src.icon_state = "deck_full" + else if(cards.len > 10) + src.icon_state = "deck_half" + else if(cards.len > 1) + src.icon_state = "deck_low" + +obj/item/toy/cards/MouseDrop(atom/over_object) + var/mob/M = usr + if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) + return + if(Adjacent(usr)) + if(over_object == M) + M.put_in_hands(src) + usr << "You pick up the deck." + + else if(istype(over_object, /obj/screen)) + switch(over_object.name) + if("r_hand") + M.u_equip(src) + M.put_in_r_hand(src) + usr << "You pick up the deck." + if("l_hand") + M.u_equip(src) + M.put_in_l_hand(src) + usr << "You pick up the deck." + else + usr<< "You can't reach it from here." + + + +obj/item/toy/cardhand + name = "hand of cards" + desc = "A number of cards not in a deck, customarily held in ones hand." + icon = 'icons/obj/toy.dmi' + icon_state = "hand2" + var/list/currenthand = list() + var/obj/item/toy/cards/parentdeck = null + var/choice = null + + +obj/item/toy/cardhand/attack_self(mob/user as mob) + user.set_machine(src) + interact(user) + +obj/item/toy/cardhand/interact(mob/user) + var/dat = "You have:
    " + for(var/t in currenthand) + dat += "A [t].
    " + dat += "Which card will you remove next?" + var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_content(dat) + popup.open() + + +obj/item/toy/cardhand/Topic(href, href_list) + if(..()) + return + if(usr.stat || !ishuman(usr) || !usr.canmove) + return + var/mob/living/carbon/human/cardUser = usr + if(href_list["pick"]) + if (cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src) + var/choice = href_list["pick"] + var/obj/item/toy/singlecard/C = new/obj/item/toy/singlecard(cardUser.loc) + src.currenthand -= choice + C.parentdeck = src.parentdeck + C.cardname = choice + C.pickup(cardUser) + cardUser.put_in_any_hand_if_possible(C) + cardUser.visible_message("[cardUser] draws a card from \his hand.", "You take the [C.cardname] from your hand.") + + interact(cardUser) + + if(src.currenthand.len < 3) + src.icon_state = "hand2" + else if(src.currenthand.len < 4) + src.icon_state = "hand3" + else if(src.currenthand.len < 5) + src.icon_state = "hand4" + + if(src.currenthand.len == 1) + var/obj/item/toy/singlecard/N = new/obj/item/toy/singlecard(src.loc) + N.parentdeck = src.parentdeck + N.cardname = src.currenthand[1] + cardUser.u_equip(src) + N.pickup(cardUser) + cardUser.put_in_any_hand_if_possible(N) + cardUser << "You also take [currenthand[1]] and hold it." + cardUser << browse(null, "window=cardhand") + del(src) + return + +obj/item/toy/cardhand/attackby(obj/item/toy/singlecard/C, mob/living/user) + if(istype(C)) + if(C.parentdeck == src.parentdeck) + src.currenthand += C.cardname + user.u_equip(C) + user.visible_message("[user] adds a card to their hand.", "You add the [C.cardname] to your hand.") + interact(user) + if(currenthand.len > 4) + src.icon_state = "hand5" + else if(currenthand.len > 3) + src.icon_state = "hand4" + else if(currenthand.len > 2) + src.icon_state = "hand3" + del(C) + else + user << "You can't mix cards from other decks." + + + + + +obj/item/toy/singlecard + name = "card" + desc = "a card" + icon = 'icons/obj/toy.dmi' + icon_state = "singlecard_down" + var/cardname = null + var/obj/item/toy/cards/parentdeck = null + var/flipped = 0 + pixel_x = -5 + +obj/item/toy/singlecard/examine() + set src in usr.contents + if(ishuman(usr)) + var/mob/living/carbon/human/cardUser = usr + if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src) + cardUser.visible_message("[cardUser] checks \his card.", "The card reads: [src.cardname]") + else + cardUser << "You need to have the card in your hand to check it." + + +obj/item/toy/singlecard/verb/Flip() + set name = "Flip Card" + set category = "Object" + set src in range(1) + if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) + return + if(!flipped) + src.flipped = 1 + if (cardname) + src.icon_state = "sc_[cardname]" + src.name = src.cardname + else + src.icon_state = "sc_Ace of Spades" + src.name = "What Card" + src.pixel_x = 5 + else if(flipped) + src.flipped = 0 + src.icon_state = "singlecard_down" + src.name = "card" + src.pixel_x = -5 + +obj/item/toy/singlecard/attackby(obj/item/I, mob/living/user) + if(istype(I, /obj/item/toy/singlecard/)) + var/obj/item/toy/singlecard/C = I + if(C.parentdeck == src.parentdeck) + var/obj/item/toy/cardhand/H = new/obj/item/toy/cardhand(user.loc) + H.currenthand += C.cardname + H.currenthand += src.cardname + H.parentdeck = C.parentdeck + user.u_equip(C) + H.pickup(user) + user.put_in_active_hand(H) + user << "You combine the [C.cardname] and the [src.cardname] into a hand." + del(C) + del(src) + else + user << "You can't mix cards from other decks." + + if(istype(I, /obj/item/toy/cardhand/)) + var/obj/item/toy/cardhand/H = I + if(H.parentdeck == parentdeck) + H.currenthand += cardname + user.u_equip(src) + user.visible_message("[user] adds a card to \his hand.", "You add the [cardname] to your hand.") + H.interact(user) + if(H.currenthand.len > 4) + H.icon_state = "hand5" + else if(H.currenthand.len > 3) + H.icon_state = "hand4" + else if(H.currenthand.len > 2) + H.icon_state = "hand3" + del(src) + else + user << "You can't mix cards from other decks." + + +obj/item/toy/singlecard/attack_self(mob/user) + if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) + return + Flip() + + + + + + + + + + + diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 12b8daee81d..ed69ba9f38a 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -5,7 +5,7 @@ w_class = 1.0 raisins - name = "4no raisins" + name = "\improper 4no raisins" icon_state= "4no_raisins" candy name = "candy" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 90a0648d751..ec03643444a 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -263,7 +263,7 @@ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 30) + B1.reagents.add_reagent("aluminium", 30) B2.reagents.add_reagent("foaming_agent", 10) B2.reagents.add_reagent("pacid", 10) @@ -282,7 +282,7 @@ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 25) + B1.reagents.add_reagent("aluminium", 25) B2.reagents.add_reagent("plasma", 25) B2.reagents.add_reagent("sacid", 25) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 07c37cecbeb..326f5b0dc46 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -16,7 +16,7 @@ /obj/item/weapon/grenade/iedcasing name = "improvised explosive assembly" - desc = "An igniter stuffed into an aluminum shell." + desc = "An igniter stuffed into an aluminium shell." w_class = 2.0 icon = 'icons/obj/grenade.dmi' icon_state = "improvised_grenade" diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index a98a6918ac9..630224d05ac 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -64,9 +64,8 @@ add_fingerprint(user) var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) - var/log_str = "[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP)." - message_admins(log_str) - log_game(log_str) + message_admins("[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP).") + log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).") if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 92c803a0b4a..28af4445f00 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -178,9 +178,9 @@ source.lying = 0 source.update_canmove() - reagents.add_reagent("synaptizine", 10) - reagents.add_reagent("tricordrazine", 10) - reagents.add_reagent("hyperzine", 10) + source.reagents.add_reagent("synaptizine", 10) + source.reagents.add_reagent("tricordrazine", 10) + source.reagents.add_reagent("hyperzine", 10) /obj/item/weapon/implant/adrenalin/implanted(mob/source) source.mind.store_memory("An adrenal implant can be activated by using the scream emote, say *scream to attempt to activate.", 0, 0) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index f7d484b1832..3ae20446c88 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -1,11 +1,14 @@ /obj/item/weapon/melee/energy var/active = 0 - flags = FPRINT | TABLEPASS | NOBLOODY + flags = FPRINT | TABLEPASS - suicide_act(mob/user) - viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ - "\red [user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") - return (BRUTELOSS|FIRELOSS) +/obj/item/weapon/melee/energy/suicide_act(mob/user) + viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ + "\red [user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + return (BRUTELOSS|FIRELOSS) + +/obj/item/weapon/melee/energy/rejects_blood() + return 1 /obj/item/weapon/melee/energy/axe name = "energy axe" @@ -16,7 +19,7 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS | NOBLOODY + flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS origin_tech = "combat=3" attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") @@ -50,7 +53,7 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY + flags = FPRINT | TABLEPASS | NOSHIELD origin_tech = "magnets=3;syndicate=4" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/hacked = 0 @@ -152,7 +155,7 @@ throw_speed = 1 throw_range = 1 w_class = 4.0//So you can't hide it in your pocket or some such. - flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY + flags = FPRINT | TABLEPASS | NOSHIELD attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/datum/effect/effect/system/spark_spread/spark_system diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 7c1c11c1899..944c33382af 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -27,8 +27,9 @@ var/mob/living/carbon/human/H = M var/heal_amt = 10 for(var/obj/item/organ/limb/affecting in H.organs) - if(affecting.heal_damage(heal_amt, heal_amt)) - H.update_damage_overlays(0) + if(affecting.status == ORGAN_ORGANIC) //No Bible can heal a robotic arm! + if(affecting.heal_damage(heal_amt, heal_amt)) + H.update_damage_overlays(0) return /obj/item/weapon/storage/bible/attack(mob/living/M as mob, mob/living/user as mob) @@ -70,10 +71,24 @@ ticker.mode.remove_cultist(M.mind)*/ if ((istype(M, /mob/living/carbon/human) && prob(60))) bless(M) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] heals [] with the power of [src.deity_name]!", user, M), 1) - M << "\red May the power of [src.deity_name] compel you to be healed!" - playsound(src.loc, "punch", 25, 1, -1) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/message_halt = 0 + for(var/obj/item/organ/limb/affecting in H.organs) + if(affecting.status == ORGAN_ORGANIC) + if(message_halt == 0) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] heals [] with the power of [src.deity_name]!", user, M), 1) + M << "\red May the power of [src.deity_name] compel you to be healed!" + playsound(src.loc, "punch", 25, 1, -1) + message_halt = 1 + else + src << "[src.deity_name] refuses to heal this metalic taint!" + return + + + + else if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet)) M.adjustBrainLoss(10) @@ -81,6 +96,7 @@ for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] beats [] over the head with []!", user, M, src), 1) playsound(src.loc, "punch", 25, 1, -1) + else if(M.stat == 2) for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] smacks []'s lifeless corpse with [].", user, M, src), 1) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 3baf7f4f3f6..7b37c0e9c56 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -20,7 +20,7 @@ var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. - var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile + var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type /obj/item/weapon/storage/MouseDrop(obj/over_object) @@ -180,7 +180,7 @@ //This proc return 1 if the item can be picked up and 0 if it can't. //Set the stop_messages to stop it from printing messages /obj/item/weapon/storage/proc/can_be_inserted(obj/item/W, stop_messages = 0) - if(!istype(W)) return //Not an item + if(!istype(W) || (W.flags & ABSTRACT)) return //Not an item if(loc == W) return 0 //Means the item is already in the storage item @@ -246,7 +246,7 @@ if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) for(var/mob/M in viewers(usr, null)) if(M == usr) - usr << "You put \the [W] into [src]." + usr << "You put [W] into [src]." else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... M.show_message("[usr] puts [W] into [src].") else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... @@ -351,8 +351,10 @@ set name = "Switch Gathering Method" set category = "Object" - collection_mode = !collection_mode + collection_mode = (collection_mode+1)%3 switch (collection_mode) + if(2) + usr << "[src] now picks up all items of a single type at once." if(1) usr << "[src] now picks up all items in a tile at once." if(0) diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index dd468d164b2..33b3ce06b0a 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -31,11 +31,11 @@ on = !on if(on) icon_state = "[icon_state]-on" -// item_state = "[item_state]-on" + // item_state = "[item_state]-on" ion_trail.start() else icon_state = initial(icon_state) -// item_state = initial(item_state) + // item_state = initial(item_state) ion_trail.stop() return @@ -81,6 +81,14 @@ ..() air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) +/obj/item/weapon/tank/jetpack/oxygen/harness + name = "jet harness (oxygen)" + desc = "A lightweight tactical harness, used by those who don't want to be weighed down by traditional jetpacks." + icon_state = "jetpack-mini" + item_state = "jetpack-mini" + volume = 40 + throw_range = 7 + w_class = 3 /obj/item/weapon/tank/jetpack/carbondioxide name = "jetpack (carbon dioxide)" diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 25108058581..e6bdbbb1f69 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -99,7 +99,7 @@ name = "offhand" icon_state = "offhand" w_class = 5.0 - abstract = 1 + flags = ABSTRACT /obj/item/weapon/twohanded/offhand/unwield() del(src) diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm new file mode 100644 index 00000000000..3f44e648641 --- /dev/null +++ b/code/game/objects/items/weapons/vending_items.dm @@ -0,0 +1,58 @@ +/obj/item/weapon/vending_refill + name = "Resupply canister" + var/machine_name = "Generic" + + icon = 'icons/obj/vending_restock.dmi' + icon_state = "refill_snack" + item_state = "restock_unit" + flags = FPRINT | TABLEPASS| CONDUCT + force = 7.0 + throwforce = 15.0 + throw_speed = 1 + throw_range = 7 + w_class = 4.0 + + var/charges = 0 //how many restocking "charges" the refill has + +/obj/item/weapon/vending_refill/New() + ..() + name = "\improper [machine_name] restocking unit" + +/obj/item/weapon/vending_refill/examine() + set src in usr + ..() + if(charges) + usr << "It can restock [charges] item(s)." + else + usr << "It's empty!" + +//NOTE I decided to go for about 1/3 of a machine's capacity + +/obj/item/weapon/vending_refill/boozeomat + machine_name = "Booze-O-Mat" + icon_state = "refill_booze" + charges = 50//of 138 + +/obj/item/weapon/vending_refill/coffee + machine_name = "hot drinks" + icon_state = "refill_joe" + charges = 30//of 85 + +/obj/item/weapon/vending_refill/snack + machine_name = "Getmore Chocolate Corp" + charges = 15//of 48 + +/obj/item/weapon/vending_refill/cola + machine_name = "Robust Softdrinks" + icon_state = "refill_cola" + charges = 20//of 65 + +/obj/item/weapon/vending_refill/cigarette + machine_name = "cigarette" + icon_state = "refill_smoke" + charges = 10// of 30 + +/obj/item/weapon/vending_refill/autodrobe + machine_name = "AutoDrobe" + icon_state = "refill_costume" + charges = 28// of 58 diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 07147bbb3c1..f4b31fd97fc 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -12,7 +12,7 @@ /obj/structure/closet/syndicate/personal/New() ..() sleep(2) - new /obj/item/weapon/tank/jetpack/oxygen(src) + new /obj/item/weapon/tank/jetpack/oxygen/harness(src) new /obj/item/clothing/mask/gas/syndicate(src) new /obj/item/clothing/under/syndicate(src) new /obj/item/clothing/head/helmet/space/rig/syndi(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index f123d0a9fa0..04cb0538675 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -120,8 +120,8 @@ /obj/structure/closet/wardrobe/yellow name = "yellow wardrobe" - icon_state = "wardrobe-y" - icon_closed = "wardrobe-y" + icon_state = "yellow" + icon_closed = "yeloww" /obj/structure/closet/wardrobe/yellow/New() new /obj/item/clothing/under/color/yellow(src) @@ -135,8 +135,8 @@ /obj/structure/closet/wardrobe/atmospherics_yellow name = "atmospherics wardrobe" - icon_state = "yellow" - icon_closed = "yellow" + icon_state = "atmos" + icon_closed = "atmos" /obj/structure/closet/wardrobe/atmospherics_yellow/New() new /obj/item/clothing/under/rank/atmospheric_technician(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index e7597bd61a7..ab397404dcc 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -378,23 +378,3 @@ src.req_access += pick(get_all_accesses()) ..() - -/obj/structure/closet/crate/ex_act(severity) - switch(severity) - if(1.0) - for(var/obj/O in src.contents) - del(O) - del(src) - return - if(2.0) - for(var/obj/O in src.contents) - if(prob(50)) - del(O) - del(src) - return - if(3.0) - if (prob(50)) - del(src) - return - else - return diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 0a3c655ba23..9d3f2c0a82e 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -28,6 +28,12 @@ icon = 'icons/obj/flora/deadtrees.dmi' icon_state = "tree_1" +/obj/structure/flora/tree/festivus + name = "festivus pole" + icon = 'icons/obj/flora/pinetrees.dmi' + icon_state = "festivus_pole" + desc = "During last year's Feats of Strength the Research Director was able to suplex this passing immobile rod into a planter." + /obj/structure/flora/tree/dead/New() icon_state = "tree_[rand(1, 6)]" ..() diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index f9c3af20b00..02d1dc63834 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -50,7 +50,7 @@ // and play var/turf/source = get_turf(instrumentObj) for(var/mob/M in hearers(15, source)) - M.playsound_local(source, file(soundfile), 100, falloff = 2) + M.playsound_local(source, file(soundfile), 100, falloff = 5) /datum/song/proc/updateDialog(mob/user as mob) instrumentObj.updateDialog() // assumes it's an object in world, override if otherwise diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 5e85802b1fa..41bde491118 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -30,6 +30,8 @@ enter_delay = 3 var/pod_moving = 0 var/automatic_launch_time = 100 + var/cooldown_delay = 30 + var/launch_cooldown = 0 var/const/OPEN_DURATION = 6 var/const/CLOSE_DURATION = 6 @@ -121,9 +123,33 @@ obj/structure/ex_act(severity) open_animation() else if(icon_state == "open") - close_animation() + if(pod.contents.len && user.loc != pod) + user.visible_message("[user] starts emptying [pod]'s contents onto the floor!") + if(do_after(user, 40)) //So it doesn't default to close_animation() on fail + if(pod.loc == loc) + for(var/atom/movable/AM in pod) + AM.loc = get_turf(user) + if(ismob(AM)) + var/mob/M = AM + M.Weaken(5) + + else + close_animation() + break +/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/grab) && icon_state == "open") + var/obj/item/weapon/grab/G = W + if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE) + var/mob/GM = G.affecting + for(var/obj/structure/transit_tube_pod/pod in loc) + pod.visible_message("[user] starts putting [GM] into the [pod]!") + if(do_after(user, 60) && GM && G && G.affecting == GM) + GM.Weaken(5) + src.Bumped(GM) + del(G) + break /obj/structure/transit_tube/station/proc/open_animation() if(icon_state == "closed") @@ -150,7 +176,7 @@ obj/structure/ex_act(severity) pod_moving = 1 close_animation() sleep(CLOSE_DURATION + 2) - if(icon_state == "closed" && pod) + if(icon_state == "closed" && pod && launch_cooldown < world.time) pod.follow_tube() pod_moving = 0 @@ -179,6 +205,7 @@ obj/structure/ex_act(severity) /obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir) pod_moving = 1 spawn(5) + launch_cooldown = world.time + min(cooldown_delay, automatic_launch_time) open_animation() sleep(OPEN_DURATION + 2) pod_moving = 0 @@ -422,7 +449,6 @@ obj/structure/ex_act(severity) return - // Parse the icon_state into a list of directions. // This means that mappers can use Dream Maker's built in // "Generate Instances from Icon-states" option to get all diff --git a/code/game/sound.dm b/code/game/sound.dm index 2cbdc1fe399..cf876319587 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,4 +1,4 @@ -/proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num) +/proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff) soundin = get_sfx(soundin) // same sound for everyone @@ -7,20 +7,22 @@ return var/frequency = get_rand_frequency() // Same frequency for everybody + var/turf/turf_source = get_turf(source) // Looping through the player list has the added bonus of working for mobs inside containers for (var/P in player_list) var/mob/M = P if(!M || !M.client) continue - var/turf/T = get_turf(M) - if(T && T.z == source.z) - if(get_dist(T, source) <= world.view + extrarange) - M.playsound_local(source, soundin, vol, vary, frequency) + if(get_dist(M, turf_source) <= world.view + extrarange) + var/turf/T = get_turf(M) + if(T && T.z == turf_source.z) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff) var/const/FALLOFF_SOUNDS = 1 +var/const/SURROUND_CAP = 7 -/mob/proc/playsound_local(var/atom/source, soundin, vol as num, vary, frequency, falloff) +/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff) if(!src.client || ear_deaf > 0) return soundin = get_sfx(soundin) @@ -35,18 +37,18 @@ var/const/FALLOFF_SOUNDS = 1 else S.frequency = get_rand_frequency() - if(isturf(source)) + if(isturf(turf_source)) // 3D sounds, the technology is here! var/turf/T = get_turf(src) - var/dx = source.x - T.x // Hearing from the right/left - S.x = round(max(-10, min(10, dx)), 1) + var/dx = turf_source.x - T.x // Hearing from the right/left - var/dz = source.y - T.y // Hearing from infront/behind - S.z = round(max(-10, min(10, dz)), 1) + S.x = round(max(-SURROUND_CAP, min(SURROUND_CAP, dx)), 1) + + var/dz = turf_source.y - T.y // Hearing from infront/behind + S.z = round(max(-SURROUND_CAP, min(SURROUND_CAP, dz)), 1) // The y value is for above your head, but there is no ceiling in 2d spessmens. S.y = 1 - S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) src << S diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 1024f14d78a..7bd7b596a96 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -25,6 +25,8 @@ overlays += wet_overlay spawn(rand(790, 820)) // Purely so for visual effect + if(!istype(src, /turf/simulated)) //Because turfs don't get deleted, they change, adapt, transform, evolve and deform. they are one and they are all. + return if(wet > wet_setting) return wet = 0 if(wet_overlay) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 51c297fb101..87289267d97 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -76,4 +76,25 @@ var/global/normal_ooc_colour = "#002eb8" prefs.ooccolor = sanitize_ooccolor(new_ooccolor) prefs.save_preferences() feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return \ No newline at end of file + return + +//Checks admin notice +/client/verb/admin_notice() + set name = "Adminnotice" + set category = "Admin" + set desc ="Check the admin notice if it has been set" + + if(admin_notice) + src << "\blue Admin Notice:\n \t [admin_notice]" + else + src << "\blue There are no admin notices at the moment." + +/client/verb/motd() + set name = "MOTD" + set category = "OOC" + set desc ="Check the Message of the Day" + + if(join_motd) + src << "
    [join_motd]
    " + else + src << "\blue The Message of the Day has not been set." \ No newline at end of file diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 5402e8b3f1f..38a4334fae7 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -134,8 +134,8 @@ var/savefile/Banlist log_admin("Ban Expired: [key]") message_admins("Ban Expired: [key]") else - ban_unban_log_save("[key_name_admin(usr)] unbanned [key]") - log_admin("[key_name_admin(usr)] unbanned [key]") + ban_unban_log_save("[key_name(usr)] unbanned [key]") + log_admin("[key_name(usr)] unbanned [key]") message_admins("[key_name_admin(usr)] unbanned: [key]") feedback_inc("ban_unban",1) usr.client.holder.DB_ban_unban( ckey(key), BANTYPE_ANY_FULLBAN) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index ac4c3405b90..1f26ad0e918 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -537,6 +537,25 @@ var/global/floorIsLava = 0 log_admin("Announce: [key_name(usr)] : [message]") feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/datum/admins/proc/set_admin_notice() + set category = "Special Verbs" + set name = "Set Admin Notice" + set desc ="Set an announcement that appears to everyone who joins the server. Only lasts this round" + if(!check_rights(0)) return + + admin_notice = input(src,"Set a public notice for this round. Everyone who joins the server will see it.\n(Leaving it blank will delete the current notice):","Set Notice",admin_notice) as null|message + switch(admin_notice) + if(null) + return + if("") + message_admins("[key_name(usr)] removed the admin notice.") + log_admin("[key_name(usr)] removed the admin notice:\n[admin_notice]") + return + message_admins("[key_name(usr)] set the admin notice.") + log_admin("[key_name(usr)] set the admin notice:\n[admin_notice]") + world << "\blue Admin Notice:\n \t [admin_notice]" + feedback_add_details("admin_verb","SAN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /datum/admins/proc/toggleooc() set category = "Server" set desc="Toggle dis bitch" diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index e8cd48844c5..770456a6e35 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -281,4 +281,4 @@ var/list/admin_ranks = list() //list of all admin_rank datums log_admin("[key_name(usr)] added keyword [keyword] to permission of [adm_ckey]") log_admin_permission_modification(adm_ckey, D.rank.rights) - edit_admin_permissions() \ No newline at end of file + edit_admin_permissions() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 745d9cd6caa..a098cf02d2c 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -27,6 +27,7 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/ /datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/ /datum/admins/proc/announce, /*priority announce something to all clients.*/ + /datum/admins/proc/set_admin_notice,/*announcement all clients see when joining the server.*/ /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/ /client/proc/toggle_view_range, /*changes how far we can see*/ /datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/ @@ -138,6 +139,7 @@ var/list/admin_verbs_hideable = list( /datum/admins/proc/toggleenter, /datum/admins/proc/toggleguests, /datum/admins/proc/announce, + /datum/admins/proc/set_admin_notice, /client/proc/admin_ghost, /client/proc/toggle_view_range, /datum/admins/proc/view_txt_log, diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm index 3ba12599ba7..60ed1aa886a 100644 --- a/code/modules/admin/newbanjob.dm +++ b/code/modules/admin/newbanjob.dm @@ -175,9 +175,9 @@ var/savefile/Banlistjob log_admin("Banjob Expired: [key]") message_admins("Banjob Expired: [key]") else - log_admin("[key_name_admin(usr)] unjobbanned [key] from [rank]") + log_admin("[key_name(usr)] unjobbanned [key] from [rank]") message_admins("[key_name_admin(usr)] unjobbanned:[key] from [rank]") - ban_unban_log_save("[key_name_admin(usr)] unjobbanned [key] from [rank]") + ban_unban_log_save("[key_name(usr)] unjobbanned [key] from [rank]") feedback_inc("ban_job_unban",1) feedback_add_details("ban_job_unban","- [rank]") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 0034cf3b2fe..ffba4b4b691 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1339,11 +1339,11 @@ usr << "The person you are trying to contact is not wearing a headset" return - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcomm", "") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcom", "") if(!input) return src.owner << "You sent [input] to [H] via a secure channel." - log_admin("[src.owner] replied to [key_name(H)]'s Centcomm message with the message [input].") + log_admin("[src.owner] replied to [key_name(H)]'s Centcom message with the message [input].") message_admins("[src.owner] replied to [key_name(H)]'s Centcom message with: \"[input]\"") H << "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\"" @@ -1671,7 +1671,7 @@ MAX_EX_HEAVY_RANGE = 7 MAX_EX_DEVESTATION_RANGE = 3 message_admins("\red [key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]", 1) - log_admin("[key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]") + log_admin("[key_name(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]") if("wave") feedback_inc("admin_secrets_fun_used",1) @@ -1851,7 +1851,7 @@ if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") - command_alert("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.") + command_alert("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.") world << sound('sound/AI/commandreport.ogg') if("dorf") feedback_inc("admin_secrets_fun_used",1) @@ -1944,7 +1944,7 @@ for(var/name in listkicked) strkicked += "[name], " message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]", 1) - log_admin("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") + log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") else usr << "You may only use this when the game is running" if("showailaws") @@ -2070,7 +2070,7 @@ newChannel.is_admin_channel = 1 feedback_inc("newscaster_channels",1) news_network.network_channels += newChannel //Adding channel to the global network - log_admin("[key_name_admin(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!") + log_admin("[key_name(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!") src.admincaster_screen=5 src.access_news_network() @@ -2105,7 +2105,7 @@ for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) NEWSCASTER.newsAlert(src.admincaster_feed_channel.channel_name) - log_admin("[key_name_admin(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!") + log_admin("[key_name(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!") src.access_news_network() else if(href_list["ac_create_channel"]) @@ -2170,7 +2170,7 @@ news_network.wanted_issue.body = src.admincaster_feed_message.body news_network.wanted_issue.backup_author = src.admincaster_feed_message.backup_author src.admincaster_screen = 19 - log_admin("[key_name_admin(usr)] issued a Station-wide Wanted Notification for [src.admincaster_feed_message.author]!") + log_admin("[key_name(usr)] issued a Station-wide Wanted Notification for [src.admincaster_feed_message.author]!") src.access_news_network() else if(href_list["ac_cancel_wanted"]) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 3fc9a3fcd93..197756fefc7 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -924,11 +924,14 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(W, slot_wear_id) if("special ops officer") + var/obj/item/device/radio/headset/R = new /obj/item/device/radio/headset/headset_cent(M) + R.set_frequency(1441) + M.equip_to_slot_or_del(R, slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 840799f9467..6451ed11748 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -29,7 +29,7 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" + msg = "\blue CENTCOM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" admins << msg /proc/Syndicate_announce(var/text , var/mob/Sender) diff --git a/code/modules/awaymissions/loot.dm b/code/modules/awaymissions/loot.dm index 948def54681..65e78dd968b 100644 --- a/code/modules/awaymissions/loot.dm +++ b/code/modules/awaymissions/loot.dm @@ -8,7 +8,7 @@ /obj/effect/spawner/lootdrop/initialize() if(loot && loot.len) for(var/i = lootcount, i > 0, i--) - if(!loot.len) return + if(!loot.len) break var/lootspawn = pick(loot) if(!lootdoubles) loot.Remove(lootspawn) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 1273a84028f..8c2297108e7 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -129,7 +129,10 @@ prefs.save_preferences() src << "Others can[(prefs.toggles & MEMBER_PUBLIC) ? "" : "not"] see whether you are a byond member." -var/list/ghost_forms = list("ghost","ghostking","ghostian2") +var/list/ghost_forms = list("ghost","ghostking","ghostian2","ghost_red","ghost_black", \ + "ghost_blue","ghost_yellow","ghost_green","ghost_pink", \ + "ghost_cyan","ghost_dblue","ghost_dred","ghost_dgreen", \ + "ghost_dcyan","ghost_grey","ghost_dyellow","ghost_dpink") /client/verb/pick_form() set name = "Choose Ghost Form" set category = "Preferences" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 6ab112d03d8..2e551d4161b 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -42,8 +42,12 @@ item_color = "medical" //Exists for washing machines. Is not different from latex gloves in any way. /obj/item/clothing/gloves/botanic_leather - desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." + desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm." name = "botanist's leather gloves" icon_state = "leather" item_state = "ggloves" permeability_coefficient = 0.9 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT \ No newline at end of file diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8f513a82ed9..583bdcd42c7 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -162,7 +162,7 @@ /obj/item/clothing/suit/armor/centcom - name = "\improper Centcomm armor" + name = "\improper Centcom armor" desc = "A suit that protects against some damage." icon_state = "centcom" item_state = "centcom" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index fd56d1627d0..6adce1d083f 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -20,6 +20,7 @@ item_state = "bio_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT + allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen) //Chaplain /obj/item/clothing/suit/chaplain_hoodie diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 67684deccc1..dfe13854b02 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -73,84 +73,84 @@ flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/psyche - name = "psychedelic" + name = "psychedelic jumpsuit" desc = "Groovy!" icon_state = "psyche" item_color = "psyche" /obj/item/clothing/under/lightblue - name = "lightblue" + name = "lightblue jumpsuit" desc = "lightblue" icon_state = "lightblue" item_color = "lightblue" /obj/item/clothing/under/aqua - name = "aqua" + name = "aqua jumpsuit" desc = "aqua" icon_state = "aqua" item_color = "aqua" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/purple - name = "purple" + name = "purple jumpsuit" desc = "purple" icon_state = "purple" item_state = "p_suit" item_color = "purple" /obj/item/clothing/under/lightpurple - name = "lightpurple" + name = "lightpurple jumpsuit" desc = "lightpurple" icon_state = "lightpurple" item_color = "lightpurple" /obj/item/clothing/under/lightgreen - name = "lightgreen" + name = "lightgreen jumpsuit" desc = "lightgreen" icon_state = "lightgreen" item_color = "lightgreen" /obj/item/clothing/under/lightblue - name = "lightblue" + name = "lightblue jumpsuit" desc = "lightblue" icon_state = "lightblue" item_color = "lightblue" /obj/item/clothing/under/lightbrown - name = "lightbrown" + name = "lightbrown jumpsuit" desc = "lightbrown" icon_state = "lightbrown" item_color = "lightbrown" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/brown - name = "brown" + name = "brown jumpsuit" desc = "brown" icon_state = "brown" item_color = "brown" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/yellowgreen - name = "yellowgreen" + name = "yellowgreen jumpsuit" desc = "yellowgreen" icon_state = "yellowgreen" item_color = "yellowgreen" /obj/item/clothing/under/darkblue - name = "darkblue" + name = "darkblue jumpsuit" desc = "darkblue" icon_state = "darkblue" item_color = "darkblue" flags = FPRINT | TABLEPASS | ONESIZEFITSALL /obj/item/clothing/under/lightred - name = "lightred" + name = "lightred jumpsuit" desc = "lightred" icon_state = "lightred" item_color = "lightred" /obj/item/clothing/under/darkred - name = "darkred" + name = "darkred jumpsuit" desc = "darkred" icon_state = "darkred" item_color = "darkred" diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 409373d42e2..bc55934b5ba 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -1,11 +1,8 @@ /mob - var/bloody_hands = 0 var/mob/living/carbon/human/bloody_hands_mob - var/track_blood var/mob/living/carbon/human/track_blood_mob - var/track_blood_type /obj/item/clothing/gloves var/transfer_blood = 0 diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 7bdc7d663cc..b41e08d2d0c 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -231,6 +231,7 @@ var/datum/controller/event/events switch(DD) if(10) holiday = "Human-Rights Day" if(14) holiday = "Monkey Day" + if(21) holiday = "Mayan Doomsday Anniversary" if(22) holiday = "Orgasming Day" //lol. These all actually exist if(24) holiday = "Xmas" if(25) holiday = "Xmas" diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index 4785fbe560f..e66a1c815f8 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -31,6 +31,8 @@ new /obj/item/weapon/a_gift(T) for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list) Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian)) + for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in machines) + Monitor.icon_state = "entertainment_xmas" /datum/round_event/presents/announce() command_alert("Ho Ho Ho, Merry Xmas!", "Unknown Transmission") @@ -43,9 +45,6 @@ desc = "Directions for use: Requires two people, one to pull each end." var/cracked = 0 -/obj/item/weapon/toy/xmas_cracker/New() - ..() - /obj/item/weapon/toy/xmas_cracker/attack(mob/target, mob/user) if( !cracked && istype(target,/mob/living/carbon/human) && (target.stat == CONSCIOUS) && !target.get_active_hand() ) target.visible_message("[user] and [target] pop \an [src]! *pop*", "You pull \an [src] with [target]! *pop*", "You hear a *pop*.") diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 9ba4b862a9d..50393dab127 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -23,18 +23,18 @@ supply_shuttle.shuttle_loan = src switch(dispatch_type) if(HIJACK_SYNDIE) - command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","CentComm Counter Intelligence") + command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","Centcom Counter Intelligence") if(RUSKY_PARTY) - command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","CentComm Russian Outreach Program") + command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","Centcom Russian Outreach Program") if(SPIDER_GIFT) - command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","CentComm Diplomatic Corps") + command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","Centcom Diplomatic Corps") if(DEPARTMENT_RESUPPLY) - command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentComm Supply Department") + command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","Centcom Supply Department") thanks_msg = "The shuttle will be returned in 5 minutes." bonus_points = 0 /datum/round_event/shuttle_loan/proc/loan_shuttle() - command_alert(thanks_msg, "Cargo shuttle commandeered by CentComm.") + command_alert(thanks_msg, "Cargo shuttle commandeered by Centcom.") dispatched = 1 supply_shuttle.points += bonus_points @@ -172,7 +172,7 @@ while(crate_types.len > 0) var/datum/supply_order/O = new /datum/supply_order() O.ordernum = supply_shuttle.ordernum - O.orderedby = "CentComm" + O.orderedby = "Centcom" supply_shuttle.shoppinglist += O var/spawn_type = crate_types[crate_types.len] diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 1054b43e4cd..fddb051241d 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -103,9 +103,9 @@ "You hear shredding and ripping.") unbuckle() else - var/text = pick("rips","tears","pulls") + var/text = pick("rip","tear","pull") user.visible_message(\ - "[user.name] [text] at the vines.",\ + "[user.name] [text]s at the vines.",\ "You [text] at the vines.",\ "You hear shredding and ripping.") return diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 8dce200e64f..405c54f99f4 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -25,7 +25,7 @@ if(activeFor % interval == 0) var/obj/vent = pick_n_take(vents) - var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","psilocybin","lube", + var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube", "plantbgone","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = vent diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 571ffbc6974..1b5b92b86e9 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -27,7 +27,7 @@ /* /datum/recipe/bananaphone - reagents = list("psilocybin" = 5) //Trippin' balls, man. + reagents = list("mushroomhallucinogen" = 5) //Trippin' balls, man. items = list( /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/device/radio @@ -704,7 +704,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup /datum/recipe/rofflewaffles - reagents = list("psilocybin" = 5, "flour" = 10) + reagents = list("mushroomhallucinogen" = 5, "flour" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/egg, diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 58525834c72..67b455c53a0 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -716,7 +716,13 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) user << "You prepare the astroturf." - new/obj/item/stack/tile/grass(user.loc) + var/location = get_turf(user) + var/grassAmt = 1 // The grass we're holding + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/grassToConvert in location) // The grass on the floor + grassAmt += 1 + del(grassToConvert) + var/obj/item/stack/tile/newAstroturf = new /obj/item/stack/tile/grass(location) + newAstroturf.amount = grassAmt del(src) /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod @@ -727,8 +733,8 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment",1+round((potency / 50), 1)) - reagents.add_reagent("anti_toxin",1+round((potency / 25), 1)) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("anti_toxin", 1+round((potency / 25), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper @@ -765,22 +771,22 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi seed = "/obj/item/seeds/reishimycelium" name = "reishi" - desc = "Ganoderma lucidum: A special fungus believed to help relieve stress." + desc = "Ganoderma lucidum: A special fungus known for its medicinal and stress relieving properties." icon_state = "reishi" potency = 10 New() ..() spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1) + reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1)) reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("space_drugs", 1+round(potency / 25, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) + user << "- Anti-Toxin: [reagents.get_reagent_amount("anti_toxin")]%" user << "- Sleep Toxin: [reagents.get_reagent_amount("stoxin")]%" - user << "- Space Drugs: [reagents.get_reagent_amount("space_drugs")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita seed = "/obj/item/seeds/amanitamycelium" @@ -793,14 +799,14 @@ spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1) reagents.add_reagent("amatoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("psilocybin", 1+round(potency / 25, 1)) + reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%" - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel seed = "/obj/item/seeds/angelmycelium" @@ -813,14 +819,14 @@ spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) - reagents.add_reagent("psilocybin", 1+round(potency / 25, 1)) + reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%" - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap seed = "/obj/item/seeds/libertymycelium" @@ -832,13 +838,13 @@ ..() spawn(5) //So potency can be set in the proc that creates these crops reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("psilocybin", 3+round(potency / 5, 1)) + reagents.add_reagent("mushroomhallucinogen", 3+round(potency / 5, 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet seed = "/obj/item/seeds/plumpmycelium" @@ -878,7 +884,7 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment",1+round((potency / 25), 1)) + reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom @@ -897,7 +903,7 @@ potency = 30 plant_type = 2 spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("radium",1+round((potency / 20), 1)) + reagents.add_reagent("radium", 1+round((potency / 20), 1)) if(istype(src.loc,/mob)) pickup(src.loc)//adjusts the lighting on the mob else @@ -971,3 +977,21 @@ reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) reagents.add_reagent("singulo", 1+round((potency / 5), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) + +/obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit + seed = "/obj/item/seeds/gatfruit" + name = "gatfruit" + desc = "It smells like burning." + icon_state = "gatfruit" + potency = 60 + origin_tech = "combat=3" + trash = /obj/item/weapon/gun/projectile/revolver + New() + ..() + spawn(5) //So potency can be set in the proc that creates these crops + reagents.add_reagent("sulfur", 1+round((potency / 10), 1)) + reagents.add_reagent("carbon", 1+round((potency / 10), 1)) + reagents.add_reagent("nitrogen", 1+round((potency / 15), 1)) + reagents.add_reagent("potassium", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) + diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index b9c25badad5..c0a9a814980 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -58,6 +58,18 @@ obj/machinery/hydroponics/process() if(nutrilevel <= 0 && myseed.plant_type != 1) adjustHealth(-rand(1,3)) +//Photosynthesis///////////////////////////////////////////////////////// + // Lack of light hurts non-mushrooms + if(isturf(loc)) + var/turf/currentTurf = loc + var/lightAmt = currentTurf.lighting_lumcount + if(myseed.plant_type == 2) // Mushroom + if(lightAmt < 2) + adjustHealth(-1) + else // Non-mushroom + if(lightAmt < 4) + adjustHealth(-2) + //Water////////////////////////////////////////////////////////////////// // Drink random amount of water adjustWater(-rand(1,6)) @@ -228,7 +240,7 @@ obj/machinery/hydroponics/proc/hardmutate() obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant! if(!planted || dead) return - + var/oldPlantName = myseed.plantname if(myseed.mutatelist.len > 0) var/mutantseed = pick(myseed.mutatelist) @@ -282,7 +294,6 @@ obj/machinery/hydroponics/proc/plantdies() // OH NOES!!!!! I put this all in one pestlevel = 0 // Pests die if(!dead) update_icon() - visible_message("\improper\red [myseed.plantname] are looking very unhealthy!") dead = 1 @@ -314,9 +325,9 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) else if(istype(O, /obj/item/weapon/reagent_containers) ) // Syringe stuff (and other reagent containers now too) var/obj/item/weapon/reagent_containers/reagent_source = O var/datum/reagents/S = new /datum/reagents() - + S.my_atom = src - + var/obj/target = myseed ? myseed.plantname : src if(istype(reagent_source, /obj/item/weapon/reagent_containers/syringe)) @@ -327,7 +338,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(!reagent_source.reagents.total_volume) user << "[reagent_source] is empty." return 1 - + if(istype(reagent_source, /obj/item/weapon/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/weapon/reagent_containers/pill)) visible_message("[user] composts [reagent_source], spreading it through [target].") reagent_source.reagents.trans_to(S,reagent_source.reagents.total_volume) @@ -345,12 +356,12 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) else if(reagent_source.amount_per_transfer_from_this) // Droppers, cans, beakers, what have you. visible_message("[user] uses [reagent_source] on [target].") - + // Beakers, bottles, buckets, etc. Can't use is_open_container though. if(istype(reagent_source, /obj/item/weapon/reagent_containers/glass/)) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - - // There needs to be a good amount of mutagen to actually work + + // Requires 5 mutagen to possibly change species. if(S.has_reagent("mutagen", 5)) switch(rand(100)) if(91 to 100) plantdies() @@ -361,6 +372,11 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(11 to 20) mutateweed() if(1 to 10) mutatepest() else user << "Nothing happens..." + // 2 or 1 units is enough to change the yield and other stats. + else if(S.has_reagent("mutagen", 2)) + hardmutate() + else if(S.has_reagent("mutagen", 1)) + mutate() // Antitoxin binds shit pretty well. So the tox goes significantly down if(S.has_reagent("anti_toxin", 1)) @@ -463,10 +479,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) adjustNutri(round(S.get_reagent_amount("nutriment")*1)) // Poor man's mutagen. - if(S.has_reagent("radium", 1)) - adjustHealth(-round(S.get_reagent_amount("radium")*1.5)) - adjustToxic(round(S.get_reagent_amount("radium")*2)) - if(S.has_reagent("radium", 10)) + if(S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) switch(rand(100)) if(91 to 100) plantdies() if(81 to 90) mutatespecie() @@ -476,6 +489,19 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(11 to 20) mutateweed() if(1 to 10) mutatepest() else user << "Nothing happens..." + // Can change the yield and other stats, but requires more than mutagen + else if(S.has_reagent("radium", 5) || S.has_reagent("uranium", 5)) + hardmutate() + else if(S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) + mutate() + + // After handling the mutating, we now handle the damage from adding crude radioactives... + if(S.has_reagent("uranium", 1)) + adjustHealth(-round(S.get_reagent_amount("uranium")*1)) + adjustToxic(round(S.get_reagent_amount("uranium")*2)) + if(S.has_reagent("radium", 1)) + adjustHealth(-round(S.get_reagent_amount("radium")*1)) + adjustToxic(round(S.get_reagent_amount("radium")*3)) // Radium is harsher (OOC: also easier to produce) // The best stuff there is. For testing/debugging. if(S.has_reagent("adminordrazine", 1)) @@ -540,7 +566,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) user << "-Water level: \blue [waterlevel]/100" user << "-Nutrition level: \blue [nutrilevel]/10" user << "" - + else if(istype(O, /obj/item/weapon/minihoe)) if(weedlevel > 0) user.visible_message("[user] uproots the weeds.", "You remove the weeds from [src].") @@ -812,10 +838,12 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/machinery/hydroponics/proc/update_tray(mob/user = usr) harvest = 0 lastproduce = age - if((yieldmod * myseed.yield) <= 0) + if(istype(myseed,/obj/item/seeds/replicapod/)) + user << "You harvest from the [myseed.plantname]." + else if((yieldmod * myseed.yield) <= 0) user << "\red You fail to harvest anything useful." else - user << "You harvest from the [myseed.plantname]." + user << "You harvest [yieldmod * myseed.yield] items from the [myseed.plantname]." if(myseed.oneharvest) del(myseed) planted = 0 diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 74b271e1b58..4bd87828b18 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -429,7 +429,7 @@ /obj/item/seeds/reishimycelium name = "pack of reishi mycelium" - desc = "This mycelium grows into something relaxing." + desc = "This mycelium grows into something medicinal and relaxing." icon_state = "mycelium-reishi" species = "reishi" plantname = "Reishi" @@ -439,7 +439,7 @@ maturation = 10 production = 5 yield = 4 - potency = 15 // Sleeping based on potency? + potency = 15 oneharvest = 1 growthstages = 4 plant_type = 2 @@ -1050,3 +1050,19 @@ potency = 20 plant_type = 0 growthstages = 6 + +/obj/item/seeds/gatfruit + name = "pack of gatfruit seeds" + desc = "These seeds grow into .357 revolvers." + icon_state = "seed-gatfruit" + species = "gatfruit" + plantname = "gatfruit" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit + lifespan = 20 + endurance = 20 + maturation = 40 + production = 10 + yield = 2 + potency = 60 + plant_type = 0 + growthstages = 2 \ No newline at end of file diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index e3b03bad0cb..4c04ea6ce13 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -60,7 +60,7 @@ state = 0 if(2) - if(istype(I, /obj/item/weapon/book)) + if(istype(I, /obj/item/weapon/book) || istype(I, /obj/item/weapon/spellbook)) user.drop_item() I.loc = src update_icon() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index c182a1a5a32..a92a6019ec3 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -415,7 +415,7 @@ if(istype(W,/obj/item/weapon/storage/bag/ore)) var/obj/item/weapon/storage/bag/ore/S = W - if(S.collection_mode) + if(S.collection_mode == 1) for(var/obj/item/weapon/ore/O in src.contents) O.attackby(W,user) return diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index d35dbd733cc..60ce30b3917 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -22,10 +22,12 @@ attack_self(mob/living/user as mob) //It's magic I ain't gonna explain how instant conversion with no tool works. -- Urist var/location = get_turf(user) - for(var/obj/item/weapon/ore/glass/sandToConvert in location) - new /obj/item/stack/sheet/mineral/sandstone(location) + var/sandAmt = 1 // The sand we're holding + for(var/obj/item/weapon/ore/glass/sandToConvert in location) // The sand on the floor + sandAmt += 1 del(sandToConvert) - new /obj/item/stack/sheet/mineral/sandstone(location) + var/obj/item/stack/sheet/mineral/newSandstone = new /obj/item/stack/sheet/mineral/sandstone(location) + newSandstone.amount = sandAmt del(src) /obj/item/weapon/ore/plasma diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 212970e9900..87930516848 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -14,7 +14,7 @@ //Puts the item into your l_hand if possible and calls all necessary triggers/updates. returns 1 on success. /mob/proc/put_in_l_hand(var/obj/item/W) - if(lying) return 0 + if(lying && !(W.flags&ABSTRACT)) return 0 if(!istype(W)) return 0 if(!l_hand) W.loc = src //TODO: move to equipped? @@ -30,7 +30,7 @@ //Puts the item into your r_hand if possible and calls all necessary triggers/updates. returns 1 on success. /mob/proc/put_in_r_hand(var/obj/item/W) - if(lying) return 0 + if(lying && !(W.flags&ABSTRACT)) return 0 if(!istype(W)) return 0 if(!r_hand) W.loc = src diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 8e9629639b9..23fcf21929a 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -41,7 +41,7 @@ /mob/living/carbon/alien/adjustToxLoss(amount) storedPlasma = min(max(storedPlasma + amount,0),max_plasma) //upper limit of max_plasma, lower limit of 0 - hud_used.alien_plasma_display.maptext = "
    [storedPlasma]
    " + updatePlasmaDisplay() return /mob/living/carbon/alien/adjustFireLoss(amount) // Weak to Fire diff --git a/code/modules/mob/living/carbon/alien/screen.dm b/code/modules/mob/living/carbon/alien/screen.dm index 26b699276f8..8ad742fdb64 100644 --- a/code/modules/mob/living/carbon/alien/screen.dm +++ b/code/modules/mob/living/carbon/alien/screen.dm @@ -1,3 +1,10 @@ /obj/screen/zone_sel/alien/update_icon() overlays.Cut() - overlays += selecting \ No newline at end of file + overlays += selecting + +/mob/living/carbon/alien/proc/updatePlasmaDisplay() + if(hud_used) //clientless aliens + hud_used.alien_plasma_display.maptext = "
    [storedPlasma]
    " + +/mob/living/carbon/alien/larva/updatePlasmaDisplay() + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 2ec4c5e9ada..c12e5b31611 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -13,6 +13,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds /obj/item/alien_embryo/New() if(istype(loc, /mob/living)) affected_mob = loc + affected_mob.status_flags |= XENO_HOST processing_objects.Add(src) spawn(0) AddInfectionImages(affected_mob) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index a37b3483a60..b9b04c90203 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -161,14 +161,15 @@ var/const/MAX_ACTIVE_TIME = 400 if(!sterile) //target.contract_disease(new /datum/disease/alien_embryo(0)) //so infection chance is same as virus infection chance - new /obj/item/alien_embryo(target) - target.status_flags |= XENO_HOST - target.visible_message("\red \b [src] falls limp after violating [target]'s face!") Die() icon_state = "[initial(icon_state)]_impregnated" + if(!target.getlimb(/obj/item/organ/limb/robot/chest) && !(target.status_flags & XENO_HOST)) + new /obj/item/alien_embryo(target) + + if(iscorgi(target)) var/mob/living/simple_animal/corgi/C = target src.loc = get_turf(C) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 73a037fd4a6..871f9a7712a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -46,6 +46,13 @@ visible_message("[M] bursts out of [src]!") . = ..() +/mob/living/carbon/AltClickOn(var/atom/A) + if(!src.stat && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src)) + next_click = world.time + 5 + call(src, src.mind.changeling.chosen_sting)(A) + else + ..() + /mob/living/carbon/attack_hand(mob/user) if(!iscarbon(user)) return @@ -466,9 +473,9 @@
    [name]
    -
    Mask: [wear_mask ? wear_mask : "Nothing"] -
    Left Hand: [l_hand ? l_hand : "Nothing"] -
    Right Hand: [r_hand ? r_hand : "Nothing"]"} +
    Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"] +
    Left Hand: [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
    Right Hand: [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]"} dat += "
    Back: [back ? back : "Nothing"]" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index bb5e59c44bb..3c2f8f79eee 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -104,14 +104,14 @@ msg += "[t_He] [t_has] \icon[back] \a [back] on [t_his] back.\n" //left hand - if(l_hand && !l_hand.abstract) + if(l_hand && !(l_hand.flags&ABSTRACT)) if(l_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] blood-stained [l_hand.name] in [t_his] left hand!\n" else msg += "[t_He] [t_is] holding \icon[l_hand] \a [l_hand] in [t_his] left hand.\n" //right hand - if(r_hand && !r_hand.abstract) + if(r_hand && !(r_hand.flags&ABSTRACT)) if(r_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] blood-stained [r_hand.name] in [t_his] right hand!\n" else diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e10c86e18b1..0125ca4ff44 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -7,6 +7,7 @@ var/list/hud_list = list() + /mob/living/carbon/human/dummy real_name = "Test Dummy" status_flags = GODMODE|CANPUSH @@ -319,38 +320,38 @@
    [name]
    -
    Mask: [wear_mask ? wear_mask : "Nothing"] -
    Left Hand: [l_hand ? l_hand : "Nothing"] -
    Right Hand: [r_hand ? r_hand : "Nothing"] -
    Gloves: [gloves ? gloves : "Nothing"] -
    Eyes: [glasses ? glasses : "Nothing"] -
    Ears: [ears ? ears : "Nothing"] -
    Head: [head ? head : "Nothing"] -
    Shoes: [shoes ? shoes : "Nothing"]"} +
    Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"] +
    Left Hand: [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
    Right Hand: [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"] +
    Gloves: [(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "Nothing"] +
    Eyes: [(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "Nothing"] +
    Ears: [(ears && !(ears.flags&ABSTRACT)) ? ears : "Nothing"] +
    Head: [(head && !(head.flags&ABSTRACT)) ? head : "Nothing"] +
    Shoes: [(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "Nothing"]"} - dat += "
    Uniform: [w_uniform ? w_uniform : "Nothing"]" + dat += "
    Uniform: [(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "Nothing"]" if(w_uniform) - dat += "
    Belt: [belt ? belt : "Nothing"]" + dat += "
    Belt: [(belt && !(belt.flags&ABSTRACT)) ? belt : "Nothing"]" - dat += "
    Exosuit: [wear_suit ? wear_suit : "Nothing"]" + dat += "
    Exosuit: [(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "Nothing"]" if(wear_suit) - dat += "
    Suit Storage: [s_store ? s_store : "Nothing"]" + dat += "
    Suit Storage: [(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "Nothing"]" - dat += "
    Back: [back ? back : "Nothing"]" + dat += "
    Back: [(back && !(back.flags&ABSTRACT)) ? back : "Nothing"]" if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank)) dat += "
    [internal ? "Disable Internals" : "Set Internals"]" if(w_uniform) //we checked already, but a different place. - dat += "
    ID: [wear_id ? wear_id : "Nothing"]" + dat += "
    ID: [(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "Nothing"]" if(handcuffed) dat += "
    Handcuffed" if(legcuffed) dat += "
    Legcuffed" if(w_uniform) - dat += "

    Left Pocket ([l_store ? "Full" : "Empty"])" - dat += " - Right Pocket ([r_store ? "Full" : "Empty"])" + dat += "

    Left Pocket ([(l_store && !(l_store.flags&ABSTRACT)) ? "Full" : "Empty"])" + dat += " - Right Pocket ([(r_store && !(r_store.flags&ABSTRACT)) ? "Full" : "Empty"])" dat += {"
    @@ -390,9 +391,9 @@ //visible_message("[usr] tries to empty [src]'s pockets.", \ "[usr] tries to empty [src]'s pockets.") // Pickpocketing! - if(pocket_item) + if(pocket_item && !(pocket_item.flags&ABSTRACT)) usr << "You try to empty [src]'s [pocket_side] pocket." - else if(place_item && place_item.mob_can_equip(src, pocket_id, 1)) + else if(place_item && place_item.mob_can_equip(src, pocket_id, 1) && !(place_item.flags&ABSTRACT)) usr << "You try to place [place_item] into [src]'s [pocket_side] pocket." else return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3615496212e..9fbbc875afe 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -122,6 +122,43 @@ emp_act var/obj/item/organ/limb/affecting = get_organ(ran_zone(user.zone_sel.selecting)) +//--------------------- Cyber limb stuff ---------------------\\ + + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = I + if(affecting.status == ORGAN_ROBOTIC) + if (WT.remove_fuel(0)) + if(affecting.brute_dam > 0) + affecting.heal_robotic_damage(30,0) //Repair Brute + update_damage_overlays(0) + updatehealth() + for(var/mob/O in viewers(user, null)) + O.show_message(text("\blue [user] has fixed some of the dents on [src]'s [affecting.getDisplayName()]!"), 1) //Tell everyone [src]'s limb (by its real name) has been repaired + return //So we don't attack them as well + else + user << "[src]'s [affecting.getDisplayName()] is already in good condidtion" + return + else + user << "Need more welding fuel!" + return + + + if(istype(I, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/coil = I + if(affecting.status == ORGAN_ROBOTIC) + if(affecting.burn_dam > 0) + affecting.heal_robotic_damage(0,30) //Repair Burn + updatehealth() + coil.use(1) + for(var/mob/O in viewers(user, null)) + O.show_message(text("\blue [user] has fixed some of the burnt wires on [src]'s [affecting.getDisplayName()]!"), 1) + return //So we don't attack them as well + else + user << "[src]'s [affecting.getDisplayName()] is already in good condidtion" + return + +//-------------------- End of Cyber limb stuff ---------------------\\ + var/hit_area = parse_zone(affecting.name) if((user != src) && check_shields(I.force, "the [I.name]")) @@ -137,36 +174,39 @@ emp_act var/armor = run_armor_check(affecting, "melee", "Your armour has protected your [hit_area].", "Your armour has softened a hit to your [hit_area].") if(armor >= 2) return 0 if(!I.force) return 0 + var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords) apply_damage(I.force, I.damtype, affecting, armor , I) var/bloody = 0 if(((I.damtype == BRUTE) || (I.damtype == HALLOSS)) && prob(25 + (I.force * 2))) - I.add_blood(src) //Make the weapon bloody, not the person. - if(prob(I.force * 2)) //blood spatter! - bloody = 1 - var/turf/location = loc - if(istype(location, /turf/simulated)) - location.add_blood(src) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(get_dist(H, src) <= 1) //people with TK won't get smeared with blood - if(H.wear_suit) - H.wear_suit.add_blood(src) - H.update_inv_wear_suit(0) //updates mob overlays to show the new blood (no refresh) - else if(H.w_uniform) - H.w_uniform.add_blood(src) - H.update_inv_w_uniform(0) //updates mob overlays to show the new blood (no refresh) - if (H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - G.add_blood(H) - G.transfer_blood = 2 - G.bloody_hands_mob = H - else - H.add_blood(H) - H.bloody_hands = 2 - H.bloody_hands_mob = H - H.update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves + if(affecting.status == ORGAN_ORGANIC) + I.add_blood(src) //Make the weapon bloody, not the person. + if(prob(I.force * 2)) //blood spatter! + bloody = 1 + var/turf/location = loc + if(istype(location, /turf/simulated)) + location.add_blood(src) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(get_dist(H, src) <= 1) //people with TK won't get smeared with blood + if(H.wear_suit) + H.wear_suit.add_blood(src) + H.update_inv_wear_suit(0) //updates mob overlays to show the new blood (no refresh) + else if(H.w_uniform) + H.w_uniform.add_blood(src) + H.update_inv_w_uniform(0) //updates mob overlays to show the new blood (no refresh) + if (H.gloves) + var/obj/item/clothing/gloves/G = H.gloves + G.add_blood(H) + G.transfer_blood = 2 + G.bloody_hands_mob = H + else + H.add_blood(H) + H.bloody_hands = 2 + H.bloody_hands_mob = H + H.update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves + switch(hit_area) if("head") //Harder to score a stun but if you do it lasts a bit longer @@ -202,5 +242,23 @@ emp_act w_uniform.add_blood(src) update_inv_w_uniform(0) - if(I.force > 10 || I.force >= 5 && prob(33)) - forcesay(hit_appends) //forcesay checks stat already. \ No newline at end of file + if(Iforce > 10 || Iforce >= 5 && prob(33)) + forcesay(hit_appends) //forcesay checks stat already. + + + +/mob/living/carbon/human/emp_act(severity) + + for(var/obj/item/organ/limb/L in src.organs) + if(L.status == ORGAN_ROBOTIC) + switch(severity) + if(1) + L.take_damage(20) + src.Stun(rand(1,10)) + if(2) + L.take_damage(10) + src.Stun(rand(1,5)) + + + src << "Error, electormagnetic pulse detected in cyber limb!" + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 725053058ea..774d1fee51c 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -104,10 +104,10 @@ return tinted /mob/living/carbon/human/abiotic(var/full_body = 0) - if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) + if(full_body && ((src.l_hand && !( src.l_hand.flags&ABSTRACT )) || (src.r_hand && !( src.r_hand.flags&ABSTRACT )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) return 1 - if( (src.l_hand && !src.l_hand.abstract) || (src.r_hand && !src.r_hand.abstract) ) + if( (src.l_hand && !(src.l_hand.flags&ABSTRACT)) || (src.r_hand && !(src.r_hand.flags&ABSTRACT)) ) return 1 return 0 diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index d6badd8be93..86469725bd0 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -5,6 +5,7 @@ if(ishuman(src)) var/mob/living/carbon/human/H = src var/obj/item/I = H.get_active_hand() + var/obj/item/weapon/storage/S = H.get_inactive_hand() if(!I) H << "You are not holding anything to equip." return @@ -13,8 +14,20 @@ update_inv_l_hand(0) else update_inv_r_hand(0) + else if(s_active && s_active.can_be_inserted(I,1)) //if storage active insert there + s_active.handle_item_insertion(I) + else if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1)) //see if we have box in other hand + S.handle_item_insertion(I) else - H << "\red You are unable to equip that." + S = H.get_item_by_slot(slot_belt) + if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1)) //else we put in belt + S.handle_item_insertion(I) + else + S = H.get_item_by_slot(slot_back) //else we put in backpack + if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1)) + S.handle_item_insertion(I) + else + H << "\red You are unable to equip that." /mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/I, list/slots, del_on_fail = 1) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 91f17a70704..94e0f6a5b81 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1209,12 +1209,6 @@ // make it so you can only puke so fast lastpuke = 0 - //0.1% chance of playing a scary sound to someone who's in complete darkness - if(isturf(loc) && rand(1,1000) == 1) - var/turf/currentTurf = loc - if(!currentTurf.lighting_lumcount) - playsound_local(src,pick(scarySounds),50, 1, -1) - proc/handle_stomach() spawn(0) for(var/mob/living/M in stomach_contents) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index e2e7a04547c..1266d9f21bd 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -61,8 +61,9 @@ Please contact me on #coderbus IRC. ~Carnie x */ //Human Overlays Indexes///////// -#define BODY_LAYER 21 //underwear, eyes, lips(makeup) -#define MUTATIONS_LAYER 20 //Tk headglows etc. +#define BODY_LAYER 22 //underwear, eyes, lips(makeup) +#define MUTATIONS_LAYER 21 //Tk headglows etc. +#define AUGMENTS_LAYER 20 #define DAMAGE_LAYER 19 //damage indicators (cuts and burns) #define UNIFORM_LAYER 18 #define ID_LAYER 17 @@ -82,7 +83,7 @@ Please contact me on #coderbus IRC. ~Carnie x #define L_HAND_LAYER 3 #define R_HAND_LAYER 2 //Having the two hands seperate seems rather silly, merge them together? It'll allow for code to be reused on mobs with arbitarily many hands #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 21 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 22 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; ////////////////////////////////// /mob/living/carbon/human @@ -270,12 +271,12 @@ Please contact me on #coderbus IRC. ~Carnie x standing += image("icon"=eyes_s, "layer"=-BODY_LAYER) lying += image("icon"=eyes_l, "layer"=-BODY_LAYER) - //Underwear - if(underwear) - var/datum/sprite_accessory/underwear/U = underwear_all[underwear] - if(U) - standing += image("icon"=U.icon, "icon_state"="[U.icon_state]_s", "layer"=-BODY_LAYER) - lying += image("icon"=U.icon, "icon_state"="[U.icon_state]_l", "layer"=-BODY_LAYER) + //Underwear + if(underwear) + var/datum/sprite_accessory/underwear/U = underwear_all[underwear] + if(U) + standing += image("icon"=U.icon, "icon_state"="[U.icon_state]_s", "layer"=-BODY_LAYER) + lying += image("icon"=U.icon, "icon_state"="[U.icon_state]_l", "layer"=-BODY_LAYER) if(lying.len) overlays_lying[BODY_LAYER] = lying @@ -295,6 +296,45 @@ Please contact me on #coderbus IRC. ~Carnie x apply_overlay(FIRE_LAYER) +/mob/living/carbon/human/proc/update_augments() + remove_overlay(AUGMENTS_LAYER) + + var/list/lying = list() + var/list/standing = list() + + + if(getlimb(/obj/item/organ/limb/robot/r_arm)) + standing += image("icon"='icons/mob/augments.dmi', "icon_state"="r_arm_s", "layer"=-AUGMENTS_LAYER) + lying += image("icon"='icons/mob/augments.dmi', "icon_state"="r_arm_l", "layer"=-AUGMENTS_LAYER) + if(getlimb(/obj/item/organ/limb/robot/l_arm)) + standing += image("icon"='icons/mob/augments.dmi', "icon_state"="l_arm_s", "layer"=-AUGMENTS_LAYER) + lying += image("icon"='icons/mob/augments.dmi', "icon_state"="l_arm_l", "layer"=-AUGMENTS_LAYER) + + if(getlimb(/obj/item/organ/limb/robot/r_leg)) + standing += image("icon"='icons/mob/augments.dmi', "icon_state"="r_leg_s", "layer"=-AUGMENTS_LAYER) + lying += image("icon"='icons/mob/augments.dmi', "icon_state"="r_leg_l", "layer"=-AUGMENTS_LAYER) + if(getlimb(/obj/item/organ/limb/robot/l_leg)) + standing += image("icon"='icons/mob/augments.dmi', "icon_state"="l_leg_s", "layer"=-AUGMENTS_LAYER) + lying += image("icon"='icons/mob/augments.dmi', "icon_state"="l_leg_l", "layer"=-AUGMENTS_LAYER) + + if(getlimb(/obj/item/organ/limb/robot/chest)) + standing += image("icon"='icons/mob/augments.dmi', "icon_state"="chest_s", "layer"=-AUGMENTS_LAYER) + lying += image("icon"='icons/mob/augments.dmi', "icon_state"="chest_l", "layer"=-AUGMENTS_LAYER) + if(getlimb(/obj/item/organ/limb/robot/head)) + standing += image("icon"='icons/mob/augments.dmi', "icon_state"="head_s", "layer"=-AUGMENTS_LAYER) + lying += image("icon"='icons/mob/augments.dmi', "icon_state"="head_l", "layer"=-AUGMENTS_LAYER) + + + + if(lying.len) + overlays_lying[AUGMENTS_LAYER] = lying + if(standing.len) + overlays_standing[AUGMENTS_LAYER] = standing + + apply_overlay(AUGMENTS_LAYER) + + + /* --------------------------------------- */ //For legacy support. /mob/living/carbon/human/regenerate_icons() diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 0f4a12ff8e7..62c6efc75df 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -829,6 +829,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 icon_state = "golem" item_state = "golem" item_color = "golem" + flags = ABSTRACT has_sensor = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) canremove = 0 @@ -844,7 +845,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 body_parts_covered = FULL_BODY slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE | ABSTRACT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS | HEAD max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS | HEAD @@ -858,7 +859,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 icon_state = "golem" item_state = null canremove = 0 - flags = NOSLIP + flags = NOSLIP | ABSTRACT slowdown = SHOES_SLOWDOWN+1 @@ -870,6 +871,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 canremove = 0 siemens_coefficient = 0 unacidable = 1 + flags = ABSTRACT /obj/item/clothing/mask/breath/golem name = "golem's face" @@ -879,6 +881,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 canremove = 0 siemens_coefficient = 0 unacidable = 1 + flags = ABSTRACT /obj/item/clothing/gloves/golem @@ -888,6 +891,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 item_state = null siemens_coefficient = 0 canremove = 0 + flags = ABSTRACT /obj/item/clothing/head/space/golem @@ -898,7 +902,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 desc = "a golem's head" canremove = 0 unacidable = 1 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ABSTRACT heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 859a99abb29..002d7f3fde6 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -574,6 +574,9 @@ proc/handle_changeling() if(mind && mind.changeling) mind.changeling.regenerate() + hud_used.lingchemdisplay.invisibility = 0 + hud_used.lingchemdisplay.maptext = "
    [src.mind.changeling.chem_charges]
    " + ///FIRE CODE handle_fire() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 79bd9c84486..aefe2d0f814 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -385,7 +385,8 @@ var/mob/living/carbon/DNA_helper = pulling H.blood_DNA[DNA_helper.dna.unique_enzymes] = DNA_helper.dna.blood_type step(pulling, get_dir(pulling.loc, T)) - M.start_pulling(t) + if(M) + M.start_pulling(t) else if (pulling) if (istype(pulling, /obj/structure/window)) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 4d026c5c532..26bf2d24c95 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -26,12 +26,6 @@ var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. - var/t_plasma = null - var/t_oxygen = null - var/t_sl_gas = null - var/t_n2 = null - - var/now_pushing = null var/cameraFollow = null diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 3b53d5d549a..5539a1b74a3 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -298,7 +298,7 @@ var/list/department_radio_keys = list( var/mob/living/simple_animal/parrot/P = A if(P.speech_buffer.len >= 10) P.speech_buffer.Remove(pick(P.speech_buffer)) - P.speech_buffer.Add(message) + P.speech_buffer.Add(html_decode(message)) if(istype(A, /obj/)) //radio in pocket could work, radio in backpack wouldn't --rastaf0 var/obj/O = A diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 0aa514f2bab..746eeb0b287 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -18,7 +18,7 @@ var/list/ai_list = list() icon_state = "ai" anchored = 1 // -- TLE density = 1 - status_flags = CANSTUN|CANPARALYSE + status_flags = CANSTUN|CANPARALYSE|CANPUSH var/list/network = list("SS13") var/obj/machinery/camera/current = null var/list/connected_robots = list() @@ -253,6 +253,19 @@ var/list/ai_list = list() return +/mob/living/silicon/ai/verb/toggle_anchor() + set category = "AI Commands" + set name = "Toggle Floor Bolts" + if(!isturf(loc)) // if their location isn't a turf + return // stop + anchored = !anchored // Toggles the anchor + + src << "[anchored ? "You are now anchored." : "You are now unanchored."]" + // the message in the [] will change depending whether or not the AI is anchored + +/mob/living/silicon/ai/update_canmove() //If the AI dies, mobs won't go through it anymore + return 0 + /mob/living/silicon/ai/proc/ai_cancel_call() set category = "AI Commands" if(src.stat == 2) @@ -578,7 +591,7 @@ var/list/ai_list = list() if(usr.stat == 2) usr <<"You cannot change your emotional status because you are dead!" return - var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Sad", "BSOD", "Blank", "Problems?", "Awesome", "Facepalm", "Friend Computer") + var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Sad", "BSOD", "Blank", "Problems?", "Awesome", "Facepalm", "Friend Computer", "Dorfy", "Blue Glow", "Red Glow") var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions for (var/obj/machinery/M in machines) //change status if(istype(M, /obj/machinery/ai_status_display)) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 0ea2cafed14..7e28b4f111f 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -73,10 +73,6 @@ var/const/VOX_DELAY = 600 src << "Please wait [round((announcing_vox - world.time) / 10)] seconds." return - if(control_disabled) - src << "Wireless interface disabled, unable to interact with announcement PA." - return - var/message = input(src, "WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", src.last_announcement) as text last_announcement = message @@ -84,6 +80,13 @@ var/const/VOX_DELAY = 600 if(!message || announcing_vox > world.time) return + if(stat != CONSCIOUS) + return + + if(control_disabled) + src << "Wireless interface disabled, unable to interact with announcement PA." + return + var/list/words = stringsplit(trim(message), " ") var/list/incorrect_words = list() @@ -104,7 +107,7 @@ var/const/VOX_DELAY = 600 announcing_vox = world.time + VOX_DELAY - log_game("[key_name_admin(src)] made a vocal announcement with the following message: [message].") + log_game("[key_name(src)] made a vocal announcement with the following message: [message].") for(var/word in words) play_vox_word(word, src.z, null) @@ -141,4 +144,4 @@ var/const/VOX_DELAY = 600 return 1 return 0 -#endif \ No newline at end of file +#endif diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm index b824150bc92..3502c8d76f1 100644 --- a/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm @@ -104,7 +104,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', "cargo" = 'sound/vox_fem/cargo.ogg', "ceiling" = 'sound/vox_fem/ceiling.ogg', "celsius" = 'sound/vox_fem/celsius.ogg', -"centcomm" = 'sound/vox_fem/centcomm.ogg', +"centcom" = 'sound/vox_fem/centcom.ogg', "center" = 'sound/vox_fem/center.ogg', "centi" = 'sound/vox_fem/centi.ogg', "central" = 'sound/vox_fem/central.ogg', diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 8048a536def..d304938bd40 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -339,32 +339,6 @@ if(prob(75) && Proj.damage > 0) spark_system.start() return 2 - -/mob/living/silicon/robot/Bump(atom/movable/AM as mob|obj, yes) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable)) - return - if (!now_pushing) - now_pushing = 1 - if (!AM.anchored) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null - /mob/living/silicon/robot/triggerAlarm(var/class, area/A, var/O, var/alarmsource) if (stat == 2) return 1 diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 62f4791ae0e..d1e95a6fea6 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -253,4 +253,29 @@ number++ list += {"

    State Laws"} - usr << browse(list, "window=laws") \ No newline at end of file + usr << browse(list, "window=laws") + +/mob/living/silicon/Bump(atom/movable/AM as mob|obj, yes) //Allows the AI to bump into mobs if it's itself pushed + if ((!( yes ) || now_pushing)) + return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!now_pushing) + now_pushing = 1 + if (!AM.anchored) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index c757ecf8b82..c1f43125684 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -54,4 +54,18 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/sheet/wood(loc) + del(src) + +/mob/living/simple_animal/hostile/tree/festivus + name = "festivus pole" + desc = "serenity now... SERENITY NOW!" + icon_state = "festivus_pole" + icon_living = "festivus_pole" + icon_dead = "festivus_pole" + icon_gib = "festivus_pole" + +/mob/living/simple_animal/hostile/tree/festivus/Die() + ..() + visible_message("\red [src] is hacked into pieces!") + new /obj/item/stack/rods(loc) del(src) \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f4cd25c9737..d9941e57a35 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -233,8 +233,8 @@ var/list/slot_equipment_priority = list( \
    [name]
    -
    Left Hand: [l_hand ? l_hand : "Nothing"] -
    Right Hand: [r_hand ? r_hand : "Nothing"] +
    Left Hand: [(l_hand&&!(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
    Right Hand: [(r_hand&&!(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]
    Close "} user << browse(dat, "window=mob\ref[src];size=325x500") @@ -713,8 +713,8 @@ note dizziness decrements automatically in the mob's Life() proc. if(lying) density = 0 - drop_l_hand() drop_r_hand() + drop_l_hand() else density = 1 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 434c987786b..cf558c2fe0d 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -36,7 +36,6 @@ var/lastattacker = null var/lastattacked = null var/attack_log = list( ) - var/already_placed = 0 var/obj/machinery/machine = null var/other_mobs = null var/memory = "" @@ -57,8 +56,6 @@ var/ajourn = 0 var/druggy = 0 //Carbon var/confused = 0 //Carbon - var/antitoxs = null - var/plasma = null var/sleeping = 0 //Carbon var/resting = 0 //Carbon var/lying = 0 @@ -80,7 +77,6 @@ var/is_dizzy = 0 var/is_jittery = 0 var/jitteriness = 0//Carbon - var/charges = 0 var/nutrition = 400//Carbon var/overeatduration = 0 // How long this guy is overeating //Carbon @@ -88,10 +84,8 @@ var/stunned = 0 var/weakened = 0 var/losebreath = 0//Carbon - var/intent = null//Living var/shakecamera = 0 var/a_intent = "help"//Living - var/m_int = null//Living var/m_intent = "run"//Living var/lastKnownIP = null var/obj/structure/stool/bed/buckled = null//Living diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index d95fa724b0f..5ce7ec26399 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -3,7 +3,7 @@ /obj/item/weapon/grab name = "grab" - flags = NOBLUDGEON + flags = NOBLUDGEON | ABSTRACT var/obj/screen/grab/hud = null var/mob/affecting = null var/mob/assailant = null @@ -13,7 +13,6 @@ var/last_upgrade = 0 layer = 21 - abstract = 1 item_state = "nothing" w_class = 5.0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index d978bbfed94..9310e32b968 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -264,9 +264,9 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /proc/shake_camera(mob/M, duration, strength=1) - if(!M || !M.client || M.shakecamera) - return - spawn(1) + spawn(0) + if(!M || !M.client || M.shakecamera) + return var/oldeye=M.client.eye var/x M.shakecamera = 1 @@ -287,7 +287,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /mob/proc/abiotic(full_body = 0) - if(l_hand && !l_hand.abstract || r_hand && !r_hand.abstract) + if(l_hand && !l_hand.flags&ABSTRACT || r_hand && !r_hand.flags&ABSTRACT) return 1 return 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index eeef9836d1f..9f107361df7 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -438,7 +438,8 @@ var/atom/movable/t = M.pulling M.stop_pulling() step(pulling, get_dir(pulling.loc, A)) - M.start_pulling(t) + if(M) + M.start_pulling(t) else step(pulling, get_dir(pulling.loc, A)) return \ No newline at end of file diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 534ce1a7c11..b067cc0618c 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -3,6 +3,9 @@ if(join_motd) src << "
    [join_motd]
    " + if(admin_notice) + src << "\blue Admin Notice:\n \t [admin_notice]" + if(!mind) mind = new /datum/mind(key) mind.active = 1 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index b1f28299457..bca7be9241e 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -9,8 +9,7 @@ for(var/obj/item/weapon/implant/W in src) implants += W - //now the rest - if (tr_flags & TR_KEEPITEMS) + if(tr_flags & TR_KEEPITEMS) for(var/obj/item/W in (src.contents-implants)) drop_from_inventory(W) @@ -31,6 +30,8 @@ var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) del(animation) + + // hash the original name? if (tr_flags & TR_HASHNAME) O.name = "monkey ([copytext(md5(real_name), 2, 6)])" @@ -123,6 +124,8 @@ flick("monkey2h", animation) sleep(22) var/mob/living/carbon/human/O = new( loc ) + for(var/obj/item/C in O.loc) + O.equip_to_appropriate_slot(C) del(animation) diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm index 609bb604dcb..8ceb45e6adc 100644 --- a/code/modules/nano/nanoexternal.dm +++ b/code/modules/nano/nanoexternal.dm @@ -13,7 +13,7 @@ var/datum/nanoui/ui = locate(uiref) - if (ui) + if (istype(ui)) ui.close() if(ui.ref) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 901f68ec35f..d488e8b5c70 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -402,7 +402,7 @@ nanoui is used to open and update nano browser uis if (status != STATUS_INTERACTIVE || user != usr) // If UI is not interactive or usr calling Topic is not the UI user return - if (src_object.Topic(href, href_list)) + if (src_object && src_object.Topic(href, href_list)) nanomanager.update_uis(src_object) // update all UIs attached to src_object /** diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 9f14a83ae24..2243c00e0dc 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -454,7 +454,6 @@ if(stat & (BROKEN|MAINT)) return // do APC interaction - user.set_machine(src) src.interact(user) /obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user) @@ -490,28 +489,24 @@ /obj/machinery/power/apc/proc/get_malf_status(mob/user) - var/malfStatus if (ticker && ticker.mode && (user.mind in ticker.mode.malf_ai) && istype(user, /mob/living/silicon/ai)) if (src.malfai == (user:parent ? user:parent : user)) if (src.occupant == user) - malfStatus = 3 // 3 = User is shunted in this APC + return 3 // 3 = User is shunted in this APC else if (istype(user.loc, /obj/machinery/power/apc)) - malfStatus = 4 // 4 = User is shunted in another APC + return 4 // 4 = User is shunted in another APC else - malfStatus = 2 // 2 = APC hacked by user, and user is in its core. + return 2 // 2 = APC hacked by user, and user is in its core. else - malfStatus = 1 // 1 = APC not hacked. + return 1 // 1 = APC not hacked. else - malfStatus = 0 // 0 = User is not a Malf AI - return malfStatus + return 0 // 0 = User is not a Malf AI /obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main") if(!user) return - var/malfStatus = get_malf_status(user) - var/list/data = list( "locked" = locked, "isOperating" = operating, @@ -522,7 +517,7 @@ "totalLoad" = lastused_equip + lastused_light + lastused_environ, "coverLocked" = coverlocked, "siliconUser" = istype(user, /mob/living/silicon), - "malfStatus" = malfStatus, + "malfStatus" = get_malf_status(user), "powerChannels" = list( list( @@ -571,7 +566,6 @@ // The UI is already open so push the new data to it ui.push_data(data) return - //user.set_machine(src) /obj/machinery/power/apc/proc/report() return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" @@ -606,8 +600,6 @@ istype(user, /mob/living/silicon) || \ istype(user, /mob/living/carbon/monkey) /*&& ticker && ticker.mode.name == "monkey"*/) ) user << "\red You don't have the dexterity to use this [src]!" - user << browse(null, "window=apc") - user.unset_machine() return 0 if(user.restrained()) user << "\red You must have free hands to use this [src]" @@ -628,13 +620,9 @@ ) if(!loud) user << "\red \The [src] have AI control disabled!" - user << browse(null, "window=apc") - user.unset_machine() return 0 else if ((!in_range(src, user) || !istype(src.loc, /turf))) - user << browse(null, "window=apc") - user.unset_machine() return 0 var/mob/living/carbon/human/H = user @@ -648,71 +636,50 @@ return 0 return 1 -/obj/machinery/power/apc/proc/validation() - return (!locked && !istype(usr, /mob/living/silicon/ai)) || (istype(usr, /mob/living/silicon/ai) && !src.aidisabled) - /obj/machinery/power/apc/Topic(href, href_list) if(..()) return 0 - if(!isrobot(usr)) - if(!can_use(usr, 1)) - return 0 - - usr.set_machine(src) + if(!can_use(usr, 1)) + return 0 if (href_list["lock"]) - if(validation()) - coverlocked = !coverlocked + coverlocked = !coverlocked else if (href_list["breaker"]) - if(validation()) - toggle_breaker() + toggle_breaker() else if (href_list["cmode"]) - if(validation()) - chargemode = !chargemode - if(!chargemode) - charging = 0 - update_icon() + chargemode = !chargemode + if(!chargemode) + charging = 0 + update_icon() else if (href_list["eqp"]) - if(validation()) - var/val = text2num(href_list["eqp"]) - equipment = setsubsystem(val) - update_icon() - update() + var/val = text2num(href_list["eqp"]) + equipment = setsubsystem(val) + update_icon() + update() else if (href_list["lgt"]) - if(validation()) - var/val = text2num(href_list["lgt"]) - lighting = setsubsystem(val) - update_icon() - update() + var/val = text2num(href_list["lgt"]) + lighting = setsubsystem(val) + update_icon() + update() else if (href_list["env"]) - if(validation()) - var/val = text2num(href_list["env"]) - environ = setsubsystem(val) - update_icon() - update() - - else if( href_list["close"] ) - usr << browse(null, "window=apc") - usr.unset_machine() - return 0 - else if (href_list["close2"]) - usr << browse(null, "window=apcwires") - usr.unset_machine() - return 0 + var/val = text2num(href_list["env"]) + environ = setsubsystem(val) + update_icon() + update() else if (href_list["overload"]) - if( istype(usr, /mob/living/silicon) && !src.aidisabled ) + if(istype(usr, /mob/living/silicon)) src.overload_lighting() else if (href_list["malfhack"]) var/mob/living/silicon/ai/malfai = usr - if(get_malf_status(malfai)) + if(get_malf_status(malfai)==1) if (malfai.malfhacking) malfai << "You are already hacking an APC." return 1 @@ -744,15 +711,13 @@ malfvacate() else if (href_list["toggleaccess"]) - if (istype(usr, /mob/living/silicon/ai) && !src.aidisabled) + if(istype(usr, /mob/living/silicon)) if(emagged || (stat & (BROKEN|MAINT))) usr << "The APC does not respond to the command." else locked = !locked update_icon() - src.updateDialog() - return 1 /obj/machinery/power/apc/proc/toggle_breaker() @@ -792,9 +757,9 @@ src.occupant.verbs += /mob/living/silicon/ai/proc/corereturn src.occupant.verbs += /datum/game_mode/malfunction/proc/takeover src.occupant.cancel_camera() - - for(var/obj/item/weapon/pinpointer/point in world) - point.the_disk = src //the pinpointer will detect the shunted AI + if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) + for(var/obj/item/weapon/pinpointer/point in world) + point.the_disk = src //the pinpointer will detect the shunted AI /obj/machinery/power/apc/proc/malfvacate(var/forced) @@ -805,6 +770,12 @@ src.occupant.parent.adjustOxyLoss(src.occupant.getOxyLoss()) src.occupant.parent.cancel_camera() del(src.occupant) + if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) + for(var/obj/item/weapon/pinpointer/point in world) + for(var/datum/mind/AI_mind in ticker.mode.malf_ai) + var/mob/living/silicon/ai/A = AI_mind.current // the current mob the mind owns + if(A.stat != DEAD) + point.the_disk = A //The pinpointer tracks the AI back into its core. else src.occupant << "\red Primary core damaged, unable to return core processes." @@ -812,9 +783,8 @@ src.occupant.loc = src.loc src.occupant.death() src.occupant.gib() - - for(var/obj/item/weapon/pinpointer/point in world) - point.the_disk = null //the pinpointer will go back to pointing at the nuke disc. + for(var/obj/item/weapon/pinpointer/point in world) + point.the_disk = null //the pinpointer will go back to pointing at the nuke disc. /obj/machinery/power/apc/proc/ion_act() @@ -1018,9 +988,6 @@ else if (last_ch != charging) queue_icon_update() - //src.updateDialog() - src.updateDialog() - // val 0=off, 1=off(auto) 2=on 3=on(auto) // on 0=off, 1=on, 2=autooff diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 19265313142..7914d94a6c3 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -498,7 +498,6 @@ user << "You try to remove the light [fitting], but you burn your hand on it!" var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") - if(affecting.take_damage( 0, 5 )) // 5 burn damage H.update_damage_overlays(0) H.updatehealth() diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index f39e18acdc9..faea0bb278d 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -1,3 +1,27 @@ +// TURBINE v2 AKA rev4407 Engine reborn! + +// How to use it? - Mappers +// +// This is a very good power generating mechanism. All you need is a blast furnace with soaring flames and output. +// Not everything is included yet so the turbine can run out of fuel quiet quickly. The best thing about the turbine is that even +// though something is on fire that passes through it, it won't be on fire as it passes out of it. So the exhaust fumes can still +// containt unreacted fuel - plasma and oxygen that needs to be filtered out and re-routed back. This of course requires smart piping +// For a computer to work with the turbine the compressor requires a comp_id matching with the turbine computer's id. This will be +// subjected to a change in the near future mind you. Right now this method of generating power is a good backup but don't expect it +// become a main power source unless some work is done. Have fun. At 50k RPM it generates 60k power. So more than one turbine is needed! +// +// - Numbers +// +// Example setup S - sparker +// B - Blast doors into space for venting +// *BBB****BBB* C - Compressor +// S CT * T - Turbine +// * ^ * * V * D - Doors with firedoor +// **|***D**|** ^ - Fuel feed (Not vent, but a gas outlet) +// | | V - Suction vent (Like the ones in atmos +// + + /obj/machinery/compressor name = "compressor" desc = "The compressor stage of a gas turbine generator." @@ -21,28 +45,29 @@ icon_state = "turbine" anchored = 1 density = 1 + var/opened = 0 var/obj/machinery/compressor/compressor directwired = 1 var/turf/simulated/outturf var/lastgen /obj/machinery/computer/turbine_computer - name = "Gas Turbine Control Console" + name = "gas turbine control computer" desc = "A computer to remotely control a gas turbine" icon = 'icons/obj/computer.dmi' icon_state = "airtunnel0e" anchored = 1 density = 1 var/obj/machinery/compressor/compressor - var/list/obj/machinery/door/poddoor/doors var/id = 0 - var/door_status = 0 // the inlet stage of the gas turbine electricity generator /obj/machinery/compressor/New() ..() +// The inlet of the compressor is the direction it faces + gas_contained = new inturf = get_step(src, dir) @@ -55,6 +80,16 @@ #define COMPFRICTION 5e5 #define COMPSTARTERLOAD 2800 + +// Crucial to make things work!!!! +// OLD FIX - explanation given down below. +// /obj/machinery/power/compressor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +// return !density + + +/obj/machinery/power/compressor/CanAtmosPass(var/turf/T) + return !density + /obj/machinery/compressor/process() if(!starter) return @@ -66,11 +101,16 @@ return rpm = 0.9* rpm + 0.1 * rpmtarget var/datum/gas_mixture/environment = inturf.return_air() + + // It's a simplified version taking only 1/10 of the moles from the turf nearby. It should be later changed into a better version + var/transfer_moles = environment.total_moles()/10 //var/transfer_moles = rpm/10000*capacity var/datum/gas_mixture/removed = inturf.remove_air(transfer_moles) gas_contained.merge(removed) +// RPM function to include compression friction - be advised that too low/high of a compfriction value can make things screwy + rpm = max(0, rpm - (rpm*rpm)/COMPFRICTION) @@ -94,21 +134,41 @@ overlays += image('icons/obj/pipes.dmi', "comp-o1", FLY_LAYER) //TODO: DEFERRED +// These are crucial to working of a turbine - the stats modify the power output. TurbGenQ modifies how much raw energy can you get from +// rpms, TurbGenG modifies the shape of the curve - the lower the value the less straight the curve is. + +#define TURBPRES 9000000 +#define TURBGENQ 100000 +#define TURBGENG 0.5 + /obj/machinery/power/turbine/New() ..() +// The outlet is pointed at the direction of the turbine component + outturf = get_step(src, dir) spawn(5) +// compressor is found in the opposite direction + compressor = locate() in get_step(src, get_dir(outturf, src)) if(!compressor) stat |= BROKEN -#define TURBPRES 9000000 -#define TURBGENQ 20000 -#define TURBGENG 0.8 +// THIS MAKES IT WORK!!!!! + +// OLD FIX . Dunno how other engines handle this but this is how it should work: Turbine and compressor should be +// treated as walls to avoid conductivity and gas spread. This was the problem of the original turbine which was just +// a machinery - it didn't block the gas passage. +// /obj/machinery/power/turbine/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +// return !density + +/obj/machinery/power/turbine/CanAtmosPass(var/turf/T) + return !density + + /obj/machinery/power/turbine/process() if(!compressor.starter) @@ -119,10 +179,18 @@ if(!compressor) stat |= BROKEN return + + // This is the power generation function. If anything is needed it's good to plot it in EXCEL before modifying + // the TURBGENQ and TURBGENG values + lastgen = ((compressor.rpm / TURBGENQ)**TURBGENG) *TURBGENQ add_avail(lastgen) + + // Weird function but it works. Should be something else... + var/newrpm = ((compressor.gas_contained.temperature) * compressor.gas_contained.total_moles())/4 + newrpm = max(0, newrpm) if(!compressor.starter || newrpm > 1000) @@ -133,6 +201,8 @@ var/datum/gas_mixture/removed = compressor.gas_contained.remove(oamount) outturf.assume_air(removed) +// If it works, put an overlay that it works! + if(lastgen > 100) overlays += image('icons/obj/pipes.dmi', "turb-o", FLY_LAYER) @@ -143,69 +213,75 @@ AutoUpdateAI(src) +// AI can't use it! + /obj/machinery/power/turbine/attack_ai(mob/user) - if(stat & (BROKEN|NOPOWER)) - return + if(stat & (BROKEN|NOPOWER)) + return - interact(user) + interact(user) /obj/machinery/power/turbine/attack_hand(mob/user) - add_fingerprint(user) + add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) - return + if(stat & (BROKEN|NOPOWER)) + return - interact(user) + interact(user) /obj/machinery/power/turbine/proc/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) - user.machine = null - user << browse(null, "window=turbine") - return + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) + user.machine = null + user << browse(null, "window=turbine") + return - user.machine = src + user.machine = src - var/t = "Gas Turbine Generator
    "
    +        var/t = "Gas Turbine Generator
    "
     
    -	t += "Generated power : [round(lastgen)] W

    " + t += "Generated power : [round(lastgen)] W

    " - t += "Turbine: [round(compressor.rpm)] RPM
    " + t += "Turbine: [round(compressor.rpm)] RPM
    " - t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" - t += "

    Close" + t += "

    Close" - t += "" - user << browse(t, "window=turbine") - onclose(user, "turbine") + t += "
    " + user << browse(t, "window=turbine") + onclose(user, "turbine") - return + return /obj/machinery/power/turbine/Topic(href, href_list) - if(..()) - return + if(..()) + return - if( href_list["close"] ) - usr << browse(null, "window=turbine") - usr.machine = null - return + if( href_list["close"] ) + usr << browse(null, "window=turbine") + usr.machine = null + return + + else if( href_list["str"] ) + compressor.starter = !compressor.starter + + spawn(0) + for(var/mob/M in viewers(1, src)) + if ((M.client && M.machine == src)) + src.interact(M) - else if( href_list["str"] ) - compressor.starter = !compressor.starter - spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// COMPUTER NEEDS A SERIOUS REWRITE. + /obj/machinery/computer/turbine_computer/New() @@ -214,10 +290,7 @@ for(var/obj/machinery/compressor/C in world) if(id == C.comp_id) compressor = C - doors = new /list() - for(var/obj/machinery/door/poddoor/P in world) - if(P.id == id) - doors += P + /obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/screwdriver)) @@ -262,8 +335,7 @@ \nTurbine speed: [src.compressor.rpm]rpm
    \nPower currently being generated: [src.compressor.turbine.lastgen]W
    \nInternal gas temperature: [src.compressor.gas_contained.temperature]K
    - \nVent doors: [ src.door_status ? "Closed Open" : "Closed Open"] - \n
    View + \n
    View \n
    Close \n
    \n"} @@ -286,16 +358,6 @@ usr.client.eye = src.compressor else if( href_list["str"] ) src.compressor.starter = !src.compressor.starter - else if (href_list["doors"]) - for(var/obj/machinery/door/poddoor/D in src.doors) - if (door_status == 0) - spawn( 0 ) - D.open() - door_status = 1 - else - spawn( 0 ) - D.close() - door_status = 0 else if( href_list["close"] ) usr << browse(null, "window=computer") usr.machine = null @@ -307,4 +369,4 @@ /obj/machinery/computer/turbine_computer/process() src.updateDialog() - return \ No newline at end of file + return diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 6b0d70beece..c1ed4531c26 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -26,55 +26,6 @@ charge_cost = 100 projectile_type = "/obj/item/projectile/energy/declone" -obj/item/weapon/gun/energy/staff - name = "staff of change" - desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" - icon = 'icons/obj/gun.dmi' - icon_state = "staffofchange" - item_state = "staffofchange" - fire_sound = 'sound/weapons/emitter.ogg' - flags = FPRINT | TABLEPASS | CONDUCT - slot_flags = SLOT_BACK - w_class = 5 - charge_cost = 200 - projectile_type = "/obj/item/projectile/change" - origin_tech = null - clumsy_check = 0 - var/charge_tick = 0 - - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(200) - return 1 - - update_icon() - return - - shoot_with_empty_chamber(mob/living/user as mob|obj) - user << "The [name] whizzles quietly." - return - -/obj/item/weapon/gun/energy/staff/animate - name = "staff of animation" - desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - projectile_type = "/obj/item/projectile/animate" - icon_state = "staffofanimation" - item_state = "staffofanimation" - /obj/item/weapon/gun/energy/floragun name = "floral somatoray" desc = "A tool that discharges controlled radiation which induces mutation in plant cells." diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm new file mode 100644 index 00000000000..b5146ca47ed --- /dev/null +++ b/code/modules/projectiles/guns/magic.dm @@ -0,0 +1,53 @@ +/obj/item/weapon/gun/magic + name = "staff of nothing" + desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years." + icon = 'icons/obj/gun.dmi' + icon_state = "staffofnothing" + item_state = "staff" + fire_sound = 'sound/weapons/emitter.ogg' + flags = FPRINT | TABLEPASS | CONDUCT + w_class = 5 + var/projectile_type = "/obj/item/projectile/magic" + var/max_charges = 6 + var/charges = 0 + var/recharge_rate = 4 + var/charge_tick = 0 + var/can_charge = 1 + origin_tech = null + clumsy_check = 0 + +/obj/item/weapon/gun/magic/process_chambered() + if(in_chamber) return 1 + if(!charges) return 0 + if(!projectile_type) return 0 + in_chamber = new projectile_type(src) + return 1 + +/obj/item/weapon/gun/magic/afterattack(atom/target as mob, mob/living/user as mob, flag) + ..() + if(charges && !in_chamber && !flag) charges-- + +/obj/item/weapon/gun/magic/New() + ..() + charges = max_charges + if(can_charge) processing_objects.Add(src) + + +/obj/item/weapon/gun/magic/Del() + if(can_charge) processing_objects.Remove(src) + ..() + + +/obj/item/weapon/gun/magic/process() + charge_tick++ + if(charge_tick < recharge_rate || charges >= max_charges) return 0 + charge_tick = 0 + charges++ + return 1 + +/obj/item/weapon/gun/magic/update_icon() + return + +/obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) + user << "The [name] whizzles quietly." + return \ No newline at end of file diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm new file mode 100644 index 00000000000..dd38641e184 --- /dev/null +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -0,0 +1,23 @@ +obj/item/weapon/gun/magic/staff/ + slot_flags = SLOT_BACK + +obj/item/weapon/gun/magic/staff/change + name = "staff of change" + desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" + projectile_type = "/obj/item/projectile/magic/change" + icon_state = "staffofchange" + item_state = "staffofchange" + +obj/item/weapon/gun/magic/staff/animate + name = "staff of animation" + desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." + projectile_type = "/obj/item/projectile/magic/animate" + icon_state = "staffofanimation" + item_state = "staffofanimation" + +obj/item/weapon/gun/magic/staff/healing + name = "staff of healing" + desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead." + projectile_type = "/obj/item/projectile/magic/resurrection" + icon_state = "staffofhealing" + item_state = "staffofhealing" diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm new file mode 100644 index 00000000000..1bfc24b7ba2 --- /dev/null +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -0,0 +1,119 @@ +/obj/item/weapon/gun/magic/wand/ + name = "wand of nothing" + desc = "It's not just a stick, it's a MAGIC stick!" + projectile_type = "/obj/item/projectile/magic" + icon_state = "wand6" + item_state = "wand" + w_class = 2 + can_charge = 0 + max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) + var/variable_charges = 1 + +/obj/item/weapon/gun/magic/wand/New() + if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges + if(prob(33)) + max_charges = Ceiling(max_charges / 3) + else + max_charges = Ceiling(max_charges / 2) + ..() + +/obj/item/weapon/gun/magic/wand/examine() + ..() + usr << "Has [charges] charge\s remaining." + return + +/obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) + if(target == user) + return + ..() + +/obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) + if(target == user) + if(charges) + zap_self(user) + else + user << "The [name] whizzles quietly." + else + ..() + +/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) + user.visible_message("[user] zaps \himself with [src]!") + playsound(user, fire_sound, 50, 1) + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]" + +/obj/item/weapon/gun/magic/wand/death + name = "wand of death" + desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." + projectile_type = "/obj/item/projectile/magic/death" + icon_state = "wand4" + max_charges = 3 //3, 2, 2, 1 + +/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) + var/message ="You irradiate yourself with pure energy! " + message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") + user << message + user.adjustOxyLoss(500) + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/resurrection + name = "wand of resurrection" + desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." + projectile_type = "/obj/item/projectile/magic/resurrection" + icon_state = "wand1" + max_charges = 3 //3, 2, 2, 1 + +/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) + user.revive() + user << "You feel great!" + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/polymorph + name = "wand of polymorph" + desc = "This wand is attuned to chaos and will radically alter the victim's form." + projectile_type = "/obj/item/projectile/magic/change" + icon_state = "wand5" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) + ..() //because the user mob ceases to exists by the time wabbajack fully resolves + wabbajack(user) + charges-- + +/obj/item/weapon/gun/magic/wand/teleport + name = "wand of teleportation" + desc = "This wand will wrench targets through space and time to move them somewhere else." + projectile_type = "/obj/item/projectile/magic/teleport" + icon_state = "wand3" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) + do_teleport(user, user, 10) + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + smoke.set_up(10, 0, user.loc) + smoke.start() + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/door + name = "wand of door creation" + desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." + projectile_type = "/obj/item/projectile/magic/door" + icon_state = "wand0" + max_charges = 20 //20, 10, 10, 7 + +/obj/item/weapon/gun/magic/wand/door/zap_self() + return + +/obj/item/weapon/gun/magic/wand/fireball + name = "wand of fireball" + desc = "This wand shoots scorching balls of fire that explode into destructive flames." + projectile_type = "/obj/item/projectile/magic/fireball" + icon_state = "wand2" + max_charges = 8 //8, 4, 4, 3 + +/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + charges-- + ..() \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 57cb529b8f0..99cb19a89a5 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -51,16 +51,16 @@ return 0 -/obj/item/weapon/gun/projectile/shotgun/attack_self(mob/living/user as mob) +/obj/item/weapon/gun/projectile/shotgun/attack_self(mob/living/user) if(recentpump) return - pump() + pump(user) recentpump = 1 spawn(10) recentpump = 0 return -/obj/item/weapon/gun/projectile/shotgun/proc/pump(mob/M as mob) +/obj/item/weapon/gun/projectile/shotgun/proc/pump(mob/M) playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1) pumped = 0 if(chambered)//We have a shell in the chamber diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm new file mode 100644 index 00000000000..bec53531f8b --- /dev/null +++ b/code/modules/projectiles/projectile/magic.dm @@ -0,0 +1,223 @@ +/obj/item/projectile/magic + name = "bolt of nothing" + icon_state = "energy" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/death + name = "bolt of death" + icon_state = "pulse1_bl" + damage = 9001 + damage_type = OXY + nodamage = 0 + flag = "magic" + +/obj/item/projectile/magic/fireball + name = "bolt of fireball" + icon_state = "fireball" + damage = 25 //The spell fireball additionally does 20 burn, so the wand fireball is marginally less painful + damage_type = BRUTE + nodamage = 0 + flag = "magic" + +/obj/item/projectile/magic/fireball/on_hit(var/target) + var/turf/T = get_turf(target) + explosion(T, -1, 0, 2, 3, 0, flame_range = 2) + +/obj/item/projectile/magic/resurrection + name = "bolt of resurrection" + icon_state = "ion" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) + + if(istype(target,/mob)) + var/old_stat = target.stat + target.revive() + target.suiciding = 0 + if(!target.ckey) + for(var/mob/dead/observer/ghost in player_list) + if(target.real_name == ghost.real_name) + ghost.reenter_corpse() + break + if(old_stat != DEAD) + target << "You feel great!" + else + target << "You rise with a start, you're alive!!!" + +/obj/item/projectile/magic/teleport + name = "bolt of teleportation" + icon_state = "bluespace" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + var/inner_tele_radius = 0 + var/outer_tele_radius = 6 + +/obj/item/projectile/magic/teleport/on_hit(var/mob/target) + var/teleammount = 0 + var/teleloc = target + if(!isturf(target)) + teleloc = target.loc + for(var/atom/movable/stuff in teleloc) + if(!stuff.anchored && stuff.loc) + teleammount++ + do_teleport(stuff, stuff, 10) + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + smoke.set_up(max(round(10 - teleammount),1), 0, stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity + smoke.start() + +/obj/item/projectile/magic/door + name = "bolt of door creation" + icon_state = "energy" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/door/on_hit(var/atom/target) + var/atom/T = target.loc + if(isturf(target)) + if(target.density) + new /obj/structure/mineral_door/wood(target) + target:ChangeTurf(/turf/simulated/floor/plating) + else if (isturf(T)) + if(T.density) + new /obj/structure/mineral_door/wood(T) + T:ChangeTurf(/turf/simulated/floor/plating) + +/obj/item/projectile/magic/change + name = "bolt of change" + icon_state = "ice_1" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/change/on_hit(var/atom/change) + wabbajack(change) + +proc/wabbajack(mob/living/M) + if(istype(M)) + if(istype(M, /mob/living) && M.stat != DEAD) + if(M.monkeyizing) return + M.monkeyizing = 1 + M.canmove = 0 + M.icon = null + M.overlays.Cut() + M.invisibility = 101 + + if(istype(M, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/Robot = M + if(Robot.mmi) del(Robot.mmi) + else + for(var/obj/item/W in M) + if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something + del(W) + continue + W.layer = initial(W.layer) + W.loc = M.loc + W.dropped(M) + + var/mob/living/new_mob + + var/randomize = pick("monkey","robot","slime","xeno","human","animal") + switch(randomize) + if("monkey") + new_mob = new /mob/living/carbon/monkey(M.loc) + new_mob.universal_speak = 1 + if("robot") + new_mob = new /mob/living/silicon/robot(M.loc) + new_mob.gender = M.gender + new_mob.invisibility = 0 + new_mob.job = "Cyborg" + var/mob/living/silicon/robot/Robot = new_mob + Robot.mmi = new /obj/item/device/mmi(new_mob) + Robot.mmi.transfer_identity(M) //Does not transfer key/client. + if("slime") + if(prob(50)) new_mob = new /mob/living/carbon/slime/adult(M.loc) + else new_mob = new /mob/living/carbon/slime(M.loc) + new_mob.universal_speak = 1 + if("xeno") + if(prob(50)) + new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) + else + new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) + new_mob.universal_speak = 1 + + /*var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") + switch(alien_caste) + if("Hunter") new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) + if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) + if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) + else new_mob = new /mob/living/carbon/alien/larva(M.loc) + new_mob.universal_speak = 1*/ + if("animal") + var/animal = pick("parrot","corgi","crab","pug","cat","carp","bear","mushroom","tomato","mouse","chicken","cow","lizard","chick") + switch(animal) + if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) + if("corgi") new_mob = new /mob/living/simple_animal/corgi(M.loc) + if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) + if("pug") new_mob = new /mob/living/simple_animal/pug(M.loc) + if("cat") new_mob = new /mob/living/simple_animal/cat(M.loc) + if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) + if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) + if("mushroom") new_mob = new /mob/living/simple_animal/mushroom(M.loc) + if("tomato") new_mob = new /mob/living/simple_animal/tomato(M.loc) + if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc) + if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc) + if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc) + if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc) + else new_mob = new /mob/living/simple_animal/chick(M.loc) + new_mob.universal_speak = 1 + if("human") + new_mob = new /mob/living/carbon/human(M.loc) + + var/datum/preferences/A = new() //Randomize appearance for the human + A.copy_to(new_mob) + + var/mob/living/carbon/human/H = new_mob + ready_dna(H) + if(H.dna) + H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") + H.update_body() + else + return + + for (var/obj/effect/proc_holder/spell/S in M.spell_list) + new_mob.spell_list += new S.type + + new_mob.a_intent = "harm" + if(M.mind) + M.mind.transfer_to(new_mob) + else + new_mob.key = M.key + + new_mob << "Your form morphs into that of a [randomize]." + + del(M) + return new_mob + +/obj/item/projectile/magic/animate + name = "bolt of animation" + icon_state = "red_1" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/animate/Bump(var/atom/change) + . = ..() + if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects)) + var/obj/O = change + new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) + else if(istype(change, /mob/living/simple_animal/hostile/mimic/copy)) + // Change our allegiance! + var/mob/living/simple_animal/hostile/mimic/copy/C = change + C.ChangeOwner(firer) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 4ee36b9f107..3e22bd7a6af 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -271,9 +271,9 @@ datum feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") multiplier = max(multiplier, 1) //this shouldnt happen ... add_reagent(C.result, C.result_amount*multiplier) - + var/list/seen = viewers(4, get_turf(my_atom)) - + if(!istype(my_atom, /mob)) // No bubbling mobs for(var/mob/M in seen) M << "\blue \icon[my_atom] The solution begins to bubble." @@ -284,7 +284,7 @@ datum if(ME2.Uses <= 0) // give the notification that the slime core is dead for(var/mob/M in seen) M << "\blue \icon[my_atom] The [my_atom]'s power is consumed in the reaction." - ME2.name = "used slime extract" + ME2.name = "\improper used slime extract" ME2.desc = "This extract has been used up." playsound(get_turf(my_atom), 'sound/effects/bubbles.ogg', 80, 1) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index e0197d93388..1ca5e5ccfdb 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -16,7 +16,7 @@ var/beaker = null var/recharged = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", - "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", + "sodium","aluminium","silicon","phosphorus","sulfur","chlorine","potassium","iron", "copper","mercury","radium","water","ethanol","sugar","sacid") /obj/machinery/chem_dispenser/proc/recharge() @@ -113,7 +113,7 @@ var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, ui_key) if (!ui) // the ui does not exist, so we'll create a new one - ui = new(user, src, ui_key, "chem_dispenser.tmpl", "Chem Dispenser 5000", 370, 585) + ui = new(user, src, ui_key, "chem_dispenser.tmpl", "Chem Dispenser 5000", 370, 590) // When the UI is first opened this is the data it will use ui.set_initial_data(data) ui.open() @@ -199,6 +199,7 @@ /obj/machinery/chem_master/New() create_reagents(100) + overlays += "waitlight" /obj/machinery/chem_master/ex_act(severity) switch(severity) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9cdebc3d7bb..a1a46dca16b 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -621,7 +621,7 @@ datum virus_food name = "Virus Food" id = "virusfood" - description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." + description = "A mixture of water and milk. Virus cells can use this mixture to reproduce." reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#899613" // rgb: 137, 150, 19 @@ -695,9 +695,9 @@ datum if(!istype(T, /turf/space)) new /obj/effect/decal/cleanable/greenglow(T) - aluminum - name = "Aluminum" - id = "aluminum" + aluminium + name = "Aluminium" + id = "aluminium" description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -1946,10 +1946,10 @@ datum ..() return - psilocybin - name = "Psilocybin" - id = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." + mushroomhallucinogen + name = "Mushroom Hallucinogen" + id = "mushroomhallucinogen" + description = "A strong hallucinogenic drug derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 on_mob_life(var/mob/living/M as mob) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 8b2b69a1bd9..d6d8bff0470 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -53,7 +53,7 @@ datum name = "Silicate" id = "silicate" result = "silicate" - required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) + required_reagents = list("aluminium" = 1, "silicon" = 1, "oxygen" = 1) result_amount = 3 */ stoxin @@ -102,7 +102,7 @@ datum name = "Thermite" id = "thermite" result = "thermite" - required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) + required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1) result_amount = 3 lexorin @@ -316,7 +316,7 @@ datum name = "Flash powder" id = "flash_powder" result = null - required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 ) + required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 ) result_amount = null on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) @@ -345,7 +345,7 @@ datum name = "Napalm" id = "napalm" result = null - required_reagents = list("aluminum" = 1, "plasma" = 1, "sacid" = 1 ) + required_reagents = list("aluminium" = 1, "plasma" = 1, "sacid" = 1 ) result_amount = 1 on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/simulated/T = get_turf(holder.my_atom) @@ -460,7 +460,7 @@ datum name = "Virus Food" id = "virusfood" result = "virusfood" - required_reagents = list("water" = 5, "milk" = 5, "oxygen" = 5) + required_reagents = list("water" = 5, "milk" = 5) result_amount = 15 mix_virus @@ -469,7 +469,8 @@ datum result = "blood" required_reagents = list("virusfood" = 5) required_catalysts = list("blood") - var/level = 2 + var/level_min = 0 + var/level_max = 2 on_reaction(var/datum/reagents/holder, var/created_volume) @@ -477,7 +478,7 @@ datum if(B && B.data) var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) - D.Evolve(level - rand(0, 1)) + D.Evolve(level_min, level_max) mix_virus_2 @@ -485,14 +486,16 @@ datum name = "Mix Virus 2" id = "mixvirus2" required_reagents = list("mutagen" = 5) - level = 4 + level_min = 2 + level_max = 4 mix_virus_3 name = "Mix Virus 3" id = "mixvirus3" required_reagents = list("plasma" = 5) - level = 6 + level_min = 4 + level_max = 6 rem_virus @@ -555,7 +558,7 @@ datum name = "Metal Foam" id = "metalfoam" result = null - required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1) + required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "pacid" = 1) result_amount = 5 on_reaction(var/datum/reagents/holder, var/created_volume) @@ -2113,7 +2116,7 @@ datum name = "Hippies Delight" id = "hippiesdelight" result = "hippiesdelight" - required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) + required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1) result_amount = 2 bananahonk diff --git a/code/modules/reagents/grenade_launcher.dm b/code/modules/reagents/grenade_launcher.dm index 22a535e5236..392c4deb898 100644 --- a/code/modules/reagents/grenade_launcher.dm +++ b/code/modules/reagents/grenade_launcher.dm @@ -57,9 +57,9 @@ F.loc = user.loc F.throw_at(target, 30, 2) message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name_admin(user)] used a grenade ([src.name]).") + log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") F.active = 1 F.icon_state = initial(icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) spawn(15) - F.prime() \ No newline at end of file + F.prime() diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 91bf272d0a2..a837fab76fe 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -545,7 +545,6 @@ New() ..() reagents.add_reagent("nutriment", 3) - reagents.add_reagent("psilocybin", 3) src.bitesize = 6 /obj/item/weapon/reagent_containers/food/snacks/tomatomeat @@ -873,7 +872,7 @@ ..() reagents.add_reagent("nutriment", 5) reagents.add_reagent("amatoxin", 3) - reagents.add_reagent("psilocybin", 1) + reagents.add_reagent("mushroomhallucinogen", 1) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/plump_pie @@ -997,7 +996,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie name = "space twinkie" icon_state = "space_twinkie" - desc = "Guaranteed to survive longer then you will." + desc = "Guaranteed to survive longer than you will." New() ..() reagents.add_reagent("sugar", 4) @@ -1112,7 +1111,7 @@ New() ..() reagents.add_reagent("nutriment", 6) - reagents.add_reagent("psilocybin", 6) + reagents.add_reagent("mushroomhallucinogen", 6) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/amanitajelly @@ -1124,7 +1123,7 @@ ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("amatoxin", 6) - reagents.add_reagent("psilocybin", 3) + reagents.add_reagent("mushroomhallucinogen", 3) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/poppypretzel @@ -1467,7 +1466,7 @@ New() ..() reagents.add_reagent("nutriment", 8) - reagents.add_reagent("psilocybin", 8) + reagents.add_reagent("mushroomhallucinogen", 8) bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/stew @@ -2428,4 +2427,4 @@ ..() reagents.add_reagent("nutriment", 2) reagents.add_reagent("sugar", 5) - bitesize = 2 \ No newline at end of file + bitesize = 2 diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 1837e3b2eef..a9e2028ea10 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -87,6 +87,16 @@ ..() reagents.add_reagent("mutagen", 30) +/obj/item/weapon/reagent_containers/glass/bottle/plasma + name = "liquid plasma bottle" + desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle8" + + New() + ..() + reagents.add_reagent("plasma", 30) + /obj/item/weapon/reagent_containers/glass/bottle/synaptizine name = "synaptizine bottle" diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index e64f5132fcc..f6f9c673abb 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -1,120 +1,67 @@ - - - /obj/item/weapon/gun/syringe name = "syringe gun" - desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance." - icon = 'icons/obj/gun.dmi' + desc = "A spring loaded rifle designed to fit syringes, used to incapacitate unruly patients from a distance." icon_state = "syringegun" item_state = "syringegun" - w_class = 3.0 + w_class = 3 throw_speed = 2 throw_range = 10 - force = 4.0 - var/list/syringes = new/list() - var/max_syringes = 1 + force = 4 m_amt = 2000 + clumsy_check = 0 + fire_sound = 'sound/items/syringeproj.ogg' + var/list/syringes = list() + var/max_syringes = 1 - examine() - set src in view() - ..() - if(!(usr in view(2)) && usr != loc) - return - usr << "[syringes.len] / [max_syringes] syringes." +/obj/item/weapon/gun/syringe/process_chambered() + if(!syringes.len) return 0 + + var/obj/item/weapon/reagent_containers/syringe/S = syringes[1] + + if(!S) return 0 + + in_chamber = new /obj/item/projectile/bullet/dart/syringe(src) + S.reagents.trans_to(in_chamber, S.reagents.total_volume) + in_chamber.name = S.name + syringes.Remove(S) + + del(S) + return 1 +/obj/item/weapon/gun/syringe/examine() + ..() + usr << "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining." + return - attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/reagent_containers/syringe)) - if(syringes.len < max_syringes) - user.drop_item() - I.loc = src - syringes += I - user << "You put [I] in [src]." - user << "[syringes.len] / [max_syringes] syringes." - else - usr << "[src] cannot hold more syringes." +/obj/item/weapon/gun/syringe/attack_self(mob/living/user as mob) + if(!syringes.len) + user << "[src] is empty." + return 0 + + var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len] + + if(!S) return 0 + S.loc = user.loc + + syringes.Remove(S) + user << "You unload [S] from \the [src]!" + + return 1 - - afterattack(obj/target, mob/user , flag) - if(!isturf(target.loc) || target == user) return - - if(syringes.len) - spawn(0) fire_syringe(target,user) +/obj/item/weapon/gun/syringe/attackby(var/obj/item/A as obj, mob/user as mob, var/show_msg = 1) + if(istype(A, /obj/item/weapon/reagent_containers/syringe)) + if(syringes.len < max_syringes) + user.drop_item() + user << "You load [A] into \the [src]!" + syringes.Add(A) + A.loc = src + return 1 else - usr << "[src] is empty." - - - proc/fire_syringe(atom/target, mob/user) - if(locate (/obj/structure/table, src.loc)) - return - else - var/turf/trg = get_turf(target) - var/obj/effect/syringe_gun_dummy/D = new /obj/effect/syringe_gun_dummy(get_turf(src)) - var/obj/item/weapon/reagent_containers/syringe/S = syringes[1] - if(!S || !S.reagents) //ho boy! wot runtimes! //haha i love finding my old comments - return - S.reagents.trans_to(D, S.reagents.total_volume) - syringes -= S - del(S) - D.icon_state = "syringeproj" - D.name = "syringe" - playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) - - for(var/i=0, i<6, i++) - if(!D) break - if(D.loc == trg) break - step_towards(D,trg) - - if(D) - for(var/mob/living/carbon/M in D.loc) - if(!istype(M,/mob/living/carbon)) continue - if(M == user) continue - //Syringe gun attack logging by Yvarov - var/R - if(D.reagents) - for(var/datum/reagent/A in D.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - if(ismob(M)) - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R])") - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a syringegun ([R])") - if(D.reagents) - D.reagents.trans_to(M, 15) - M.visible_message("[M] is hit by the syringe!", \ - "[M] is hit by the syringe!") - - del(D) - break - if(D) - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) del(D) - - sleep(1) - - if(D) - spawn(10) - del(D) - + usr << "[src] cannot hold more syringes." + return 0 /obj/item/weapon/gun/syringe/rapidsyringe name = "rapid syringe gun" - desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes." + desc = "A modification of the syringe gun design, using a rotating cylinder to store up to six syringes." icon_state = "rapidsyringegun" - max_syringes = 4 - - -/obj/effect/syringe_gun_dummy - name = "" - desc = "" - icon = 'icons/obj/chemical.dmi' - icon_state = "null" - anchored = 1 - density = 0 - - New() - create_reagents(15) \ No newline at end of file + max_syringes = 6 diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index af110da5b57..939d55a5739 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -15,6 +15,7 @@ var/list/affecting // the list of all items that will be moved this ptick var/id = "" // the control ID - must match controller ID + var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons /obj/machinery/conveyor/centcom_auto id = "round_end_belt" @@ -38,7 +39,7 @@ operating = 0 else operating = 1 - icon_state = "conveyor[operating]" + icon_state = "conveyor[operating * verted]" // create a conveyor /obj/machinery/conveyor/New(loc, newdir) @@ -70,6 +71,10 @@ if(SOUTHWEST) forwards = WEST backwards = NORTH + if(verted == -1) + var/temp = forwards + forwards = backwards + backwards = temp /obj/machinery/conveyor/proc/setmove() if(operating == 1) @@ -87,7 +92,7 @@ operating = 0 if(stat & NOPOWER) operating = 0 - icon_state = "conveyor[operating]" + icon_state = "conveyor[operating * verted]" // machine process // move items to the target location diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index de54cfbe6ee..547c308003a 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -192,7 +192,7 @@ // can breath normally in the disposal /obj/machinery/disposal/alter_health() return get_turf(src) - + /obj/machinery/disposal/relaymove(mob/user as mob) attempt_escape(user) @@ -720,7 +720,7 @@ H.active = 0 H.loc = src return - if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile + if(istype(T,/turf/simulated/floor && T.intact)) //intact floor, pop the tile var/turf/simulated/floor/F = T //F.health = 100 F.burnt = 1 @@ -1233,6 +1233,7 @@ var/turf/target // this will be where the output objects are 'thrown' to. var/mode = 0 var/start_eject = 0 + var/eject_range = 2 New() ..() @@ -1262,10 +1263,10 @@ AM.loc = src.loc AM.pipe_eject(dir) spawn(5) - AM.throw_at(target, 3, 1) + if(AM) + AM.throw_at(target, eject_range, 1) H.vent_gas(src.loc) del(H) - return attackby(var/obj/item/I, var/mob/user) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index fbae5f41ff2..e2a80bdd9d8 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -250,14 +250,23 @@ datum/design/clonescanner materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/clonescanner" -datum/design/arcademachine - name = "Circuit Design (Arcade Machine)" +datum/design/arcadebattle + name = "Circuit Design (Battle Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new arcade machine." id = "arcademachine" req_tech = list("programming" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade" + build_path = "/obj/item/weapon/circuitboard/arcade/battle" + +datum/design/orion_trail + name = "Circuit Design (Orion Trail Arcade Machine)" + desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine." + id = "arcademachine" + req_tech = list("programming" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "sacid" = 20) + build_path = "/obj/item/weapon/circuitboard/arcade/orion_trail" datum/design/powermonitor name = "Circuit Design (Power Monitor)" @@ -749,12 +758,12 @@ datum/design/mech_grenade_launcher category = "Exosuit Equipment" datum/design/clusterbang_launcher - name = "Exosuit Module Design (SOP-6 Clusterbang Launcher)" - desc = "A weapon that violates the Geneva Convention at 6 rounds per minute" + name = "Exosuit Module Design (SOB-3 Clusterbang Launcher)" + desc = "A weapon that violates the Geneva Convention at 3 rounds per minute" id = "clusterbang_launcher" build_type = MECHFAB req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited" + build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang" category = "Exosuit Equipment" datum/design/mech_wormhole_gen diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 6a8f0741cc9..d3f3e9f7ebd 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -90,7 +90,7 @@ // Signal data - interpreter.SetVar("$content", signal.data["message"]) + interpreter.SetVar("$content", html_decode(signal.data["message"])) interpreter.SetVar("$freq" , signal.frequency) interpreter.SetVar("$source" , signal.data["name"]) interpreter.SetVar("$job" , signal.data["job"]) @@ -207,7 +207,7 @@ // Time interpreter.SetProc("time", /proc/time) - interpreter.SetProc("timestamp", /proc/timestamp) + interpreter.SetProc("timestamp", /proc/gameTimestamp) // Run the compiled code interpreter.Run() diff --git a/code/modules/scripting/Implementations/_Logic.dm b/code/modules/scripting/Implementations/_Logic.dm index d4bc9976625..871ffd1905f 100644 --- a/code/modules/scripting/Implementations/_Logic.dm +++ b/code/modules/scripting/Implementations/_Logic.dm @@ -142,9 +142,6 @@ /proc/time() return world.timeofday -/proc/timestamp(var/format = "hh:mm:ss") // Get the game time in text - return time2text(world.time + 432000, format) - /* //Makes a list where all indicies in a string is a seperate index in the list // JUST A HELPER DON'T ADD TO NTSCRIPT diff --git a/code/modules/surgery/appendectomy.dm b/code/modules/surgery/appendectomy.dm index 5e535b62cb4..7ba9ad03ba0 100644 --- a/code/modules/surgery/appendectomy.dm +++ b/code/modules/surgery/appendectomy.dm @@ -3,6 +3,7 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/extract_appendix, /datum/surgery_step/close) species = list(/mob/living/carbon/human, /mob/living/carbon/monkey) location = "groin" + requires_organic_chest = 1 //extract appendix diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index a0f71301ab7..72223b4716f 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -3,6 +3,7 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/handle_cavity, /datum/surgery_step/close) species = list(/mob/living/carbon/human, /mob/living/carbon/monkey) location = "chest" + requires_organic_chest = 1 //handle cavity diff --git a/code/modules/surgery/gender_reassignment.dm b/code/modules/surgery/gender_reassignment.dm index c5d94146421..0ef01d56d7c 100644 --- a/code/modules/surgery/gender_reassignment.dm +++ b/code/modules/surgery/gender_reassignment.dm @@ -3,6 +3,8 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/reshape_genitals, /datum/surgery_step/close) species = list(/mob/living/carbon/human) location = "groin" + requires_organic_chest = 1 + //reshape_genitals /datum/surgery_step/reshape_genitals diff --git a/code/modules/surgery/generic_steps.dm b/code/modules/surgery/generic_steps.dm index fdc1bc9dda5..f810bec205d 100644 --- a/code/modules/surgery/generic_steps.dm +++ b/code/modules/surgery/generic_steps.dm @@ -1,10 +1,12 @@ + //make incision /datum/surgery_step/incise implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45) time = 24 /datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to make an incision in [target]'s [target_zone].") + user.visible_message("[user] begins to make an incision in [target]'s [parse_zone(target_zone)].") + //clamp bleeders @@ -13,7 +15,7 @@ time = 48 /datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to clamp bleeders in [target]'s [target_zone].") + user.visible_message("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].") //retract skin @@ -22,7 +24,8 @@ time = 32 /datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to retract the skin in [target]'s [target_zone].") + user.visible_message("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].") + //close incision @@ -31,7 +34,8 @@ time = 32 /datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to mend the incision in [target]'s [target_zone].") + user.visible_message("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].") + /datum/surgery_step/close/tool_check(mob/user, obj/item/tool) if(istype(tool, /obj/item/weapon/cautery)) @@ -58,4 +62,7 @@ time = 64 /datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to saw through the bone in [target]'s [target_zone].") \ No newline at end of file + user.visible_message("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].") + + + diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index e353ffeaa3c..23866878825 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -12,6 +12,16 @@ continue if(S.target_must_be_fat && !(FAT in M.mutations)) continue + + if(S.requires_organic_chest && M.getlimb(/obj/item/organ/limb/robot/chest)) //This a seperate case to below, see "***" in surgery.dm - RR + continue + + var/mob/living/carbon/human/H = M //So we can use get_organ and not some terriblly long Switch or something worse - RR + var/obj/item/organ/limb/affecting = H.get_organ(user.zone_sel.selecting) + + if(affecting.status == ORGAN_ROBOTIC) //Cannot operate on Robotic organs - RR + continue + for(var/path in S.species) if(istype(M, path)) available_surgeries[S.name] = S @@ -23,8 +33,10 @@ var/datum/surgery/procedure = new S.type if(procedure) if(get_location_accessible(M, procedure.location)) + if(procedure.location == "anywhere") // if location == "anywhere" change location to the surgeon's target, otherwise leave location as is. + procedure.location = user.zone_sel.selecting M.surgeries += procedure - user.visible_message("[user] drapes [I] over [M]'s [procedure.location] to prepare for \an [procedure.name].") + user.visible_message("[user] drapes [I] over [M]'s [parse_zone(procedure.location)] to prepare for \an [procedure.name].") user.attack_log += "\[[time_stamp()]\]Initiated a [procedure.name] on [M.name] ([M.ckey])" M.attack_log += "\[[time_stamp()]\][user.name] ([user.ckey]) initiated a [procedure.name]" @@ -38,6 +50,7 @@ return 0 + proc/get_location_modifier(mob/M) var/turf/T = get_turf(M) if(locate(/obj/structure/optable, T)) @@ -108,4 +121,5 @@ proc/get_location_modifier(mob/M) if(covered_locations & FOOT_RIGHT) return 0 - return 1 \ No newline at end of file + return 1 + diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index ded11d30ea0..55bd4a572dd 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -3,6 +3,8 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close) species = list(/mob/living/carbon/human, /mob/living/carbon/monkey) location = "chest" + requires_organic_chest = 1 + //extract implant diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm new file mode 100644 index 00000000000..79ee6030520 --- /dev/null +++ b/code/modules/surgery/limb augmentation.dm @@ -0,0 +1,78 @@ + +/////AUGMENTATION SURGERIES////// + + +//SURGERY STEPS + +/datum/surgery_step/replace + implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/wirecutters = 55) + time = 32 + + +/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]!") + + +/datum/surgery_step/add_limb + implements = list(/obj/item/robot_parts = 100) + time = 32 + var/obj/item/organ/limb/L = null // L because "limb" + allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head") + + + +/datum/surgery_step/add_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + L = new_organ + if(L) + user.visible_message("[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].") + else + user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].") + + + +//ACTUAL SURGERIES + +/datum/surgery/augmentation + name = "augmentation" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/add_limb) + species = list(/mob/living/carbon/human) + location = "anywhere" //Check attempt_initate_surgery() (in code/modules/surgery/helpers) to see what this does if you can't tell + has_multi_loc = 1 //Multi location stuff, See multiple_location_example.dm + + +//SURGERY STEP SUCCESSES + +/datum/surgery_step/add_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(L) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + user.visible_message("[user] successfully augments [target]'s [parse_zone(user.zone_sel.selecting)]!") + L.loc = get_turf(target) + H.organs -= L + switch(user.zone_sel.selecting) //for the surgery to progress this MUST still be the original "location" so it's safe to do this. + if("r_leg") + H.organs += new /obj/item/organ/limb/robot/r_leg(src) + if("l_leg") + H.organs += new /obj/item/organ/limb/robot/l_leg(src) + if("r_arm") + H.organs += new /obj/item/organ/limb/robot/r_arm(src) + if("l_arm") + H.organs += new /obj/item/organ/limb/robot/l_arm(src) + if("head") + H.organs += new /obj/item/organ/limb/robot/head(src) + if("chest") + var/datum/surgery_step/xenomorph_removal/xeno_removal = new + xeno_removal.remove_xeno(user, target) // remove an alien if there is one + H.organs += new /obj/item/organ/limb/robot/chest(src) + for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it + A.cure(1) + user.drop_item() + del(tool) + H.update_damage_overlays(0) + H.update_augments() //Gives them the Cyber limb overlay + user.attack_log += "\[[time_stamp()]\] Augmented [target.name]'s [parse_zone(user.zone_sel.selecting)] ([target.ckey]) INTENT: [uppertext(user.a_intent)])" + target.attack_log += "\[[time_stamp()]\] Augmented by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])" + log_attack("[user.name] ([user.ckey]) augmented [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)])") + else + user.visible_message("[user] [target] has no organic [parse_zone(user.zone_sel.selecting)] there!") + return 1 diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 141e5784278..23448dc62e0 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -4,6 +4,8 @@ species = list(/mob/living/carbon/human) target_must_be_fat = 1 location = "chest" + requires_organic_chest = 1 + //cut fat /datum/surgery_step/cut_fat diff --git a/code/modules/surgery/multiple_location_example.dm b/code/modules/surgery/multiple_location_example.dm new file mode 100644 index 00000000000..7a7dba5eaee --- /dev/null +++ b/code/modules/surgery/multiple_location_example.dm @@ -0,0 +1,54 @@ +/* +//CONTENTS// +Multiple location example surgery + + + +//THE SURGERY// +it is very similar to a normal surgery. +Location = "anywhere" is the unique difference. + +/datum/surgery/multiLocExample + name = "Multiple Location Surgery Example" + steps = list(/datum/surgery_step/multiLocExampleStep) + species = list(/mob/living/carbon) + location = "anywhere" //A Location "Anywhere" is handled in /code/modules/surgery/helpers attempt_initiate_surgery(), it is converted into a User.zone_sel.selecting. + has_multi_loc = 1 //Needed to handle Multilocation + +//THE STEPS// +The block of "If's" is necessary, add or remove so you have just the areas you want, and set them to convert L(or your subsitute) to what you want it to be +EG: a zone on a mob (where user is targetting) to the limb thats actually there. + + +/datum/surgery_step/multiLocExampleStep + implements = list() + time = 9001 + allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head", "etc") + // allowed_organs is a list of organs this operation works with, it is defined in the earliest instance of the surgery_step (Eg, datum/surgery_step/multiLocExampleStep) + // allowed_organs is handled in Handle_Multi_Loc() in surgery_step.dm + + +/datum/surgery_step/multiLocExampleStep/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + L = new_organ //new_organ is a variable in /datum/surgery_step, it is null by default, and is given a value in Handle_Multi_Loc() + //Although Handle_Multi_Loc() is /datum/surgery_step/SURGERYNAME/Handle_Multi_Loc() you do not need to rewrite it in the surgery + if(L) + user.visible_message("Generic Statement.") + else + user.visible_message("Generic Statement 2.") + + +/datum/surgery_step/multiLocExampleStep/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) +You can use whatever you substituted "L" for here for useful things, swapping limbs for other limbs, etc. +if the surgery is intended to be MultiLoc but should only be performable once per limb, add this +"surgery.invalid_locations += user.zone_sel.selecting" +Just after you have swapped limbs around, see limb augmentation for an example of this + +*/ + +//This file is commented out as to avoid: +// a snowflakey removal of it 100% of the time +// it's an example, it doesn't work perfectly due to just being the multiple locations section. +// It is also not set to compile, due to being Empty (according to the compiler) + +//Enjoy making Multi-location operations! (if you understood my Rambling) +//If you didn't understand this, Ask for RobRichards in Coderbus \ No newline at end of file diff --git a/code/modules/surgery/organs/augments.dm b/code/modules/surgery/organs/augments.dm new file mode 100644 index 00000000000..d3acb5135d9 --- /dev/null +++ b/code/modules/surgery/organs/augments.dm @@ -0,0 +1,51 @@ +/////AUGMENTATION\\\\\ +//See code/modules/surgery/organs/organ.dm for the parent "limb" + + +/obj/item/organ/limb/robot + name = "cyberlimb" + desc = "You should never be seeing this!" + status = ORGAN_ROBOTIC + +/obj/item/organ/limb/robot/chest + name = "chest" + desc = "A Robotic chest" + icon_state = "chest" + max_damage = 200 + body_part = CHEST + +/obj/item/organ/limb/robot/head + name = "head" + desc = "A Robotic head" + icon_state = "head" + max_damage = 200 + body_part = HEAD + +/obj/item/organ/limb/robot/l_arm + name = "l_arm" + desc = "A Robotic arm" + icon_state = "l_arm" + max_damage = 75 + body_part = ARM_LEFT + +/obj/item/organ/limb/robot/l_leg + name = "l_leg" + desc = "A Robotic leg" + icon_state = "l_leg" + max_damage = 75 + body_part = LEG_LEFT + +/obj/item/organ/limb/robot/r_arm + name = "r_arm" + desc = "A Robotic arm" + icon_state = "r_arm" + max_damage = 75 + body_part = ARM_RIGHT + +/obj/item/organ/limb/robot/r_leg + name = "r_leg" + desc = "A Robotic leg" + icon_state = "r_leg" + max_damage = 75 + body_part = LEG_RIGHT + diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 9e6c066869b..36f5d2ef599 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -1,4 +1,13 @@ mob/proc/getorgan() return mob/living/carbon/getorgan(typepath) - return (locate(typepath) in internal_organs) \ No newline at end of file + return (locate(typepath) in internal_organs) + +mob/proc/getlimb() + return + +mob/living/carbon/human/getlimb(typepath) + return (locate(typepath) in organs) + + + diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index d3ce4ca8f8f..bbd1faf8f0f 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -3,6 +3,7 @@ icon = 'icons/obj/surgery.dmi' + /obj/item/organ/heart name = "heart" icon_state = "heart-on" @@ -30,6 +31,10 @@ //Looking for brains? //Try code/modules/mob/living/carbon/brain/brain_item.dm +//Old Datum Limbs: +// code/modules/unused/limbs.dm + + /obj/item/organ/limb name = "limb" var/mob/owner = null @@ -39,44 +44,59 @@ var/brute_dam = 0 var/burn_dam = 0 var/max_damage = 0 + var/status = ORGAN_ORGANIC + + /obj/item/organ/limb/chest name = "chest" + desc = "why is it detached..." icon_state = "chest" max_damage = 200 body_part = CHEST + /obj/item/organ/limb/head name = "head" + desc = "what a way to get a head in life..." icon_state = "head" max_damage = 200 body_part = HEAD + /obj/item/organ/limb/l_arm name = "l_arm" + desc = "why is it detached..." icon_state = "l_arm" max_damage = 75 body_part = ARM_LEFT + /obj/item/organ/limb/l_leg name = "l_leg" + desc = "why is it detached..." icon_state = "l_leg" max_damage = 75 body_part = LEG_LEFT + /obj/item/organ/limb/r_arm name = "r_arm" + desc = "why is it detached..." icon_state = "r_arm" max_damage = 75 body_part = ARM_RIGHT + /obj/item/organ/limb/r_leg name = "r_leg" + desc = "why is it detached..." icon_state = "r_leg" max_damage = 75 body_part = LEG_RIGHT + //Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. //Damage will not exceed max_damage using this proc //Cannot apply negative damage @@ -85,6 +105,11 @@ brute = max(brute,0) burn = max(burn,0) + + if(status == ORGAN_ROBOTIC) //This makes robolimbs not damageable by chems and makes it stronger + brute = max(0, brute - 5) + burn = max(0, burn - 4) + var/can_inflict = max_damage - (brute_dam + burn_dam) if(!can_inflict) return 0 @@ -112,13 +137,27 @@ //Damage cannot go below zero. //Cannot remove negative damage (i.e. apply damage) /obj/item/organ/limb/proc/heal_damage(brute, burn) - brute = max(brute, 0) - burn = max(burn, 0) + if(status == ORGAN_ROBOTIC) // This makes robolimbs not healable by chems + brute = max(0, brute - 3) + burn = max(0, burn - 3) + brute_dam = max(brute_dam - brute, 0) burn_dam = max(burn_dam - burn, 0) return update_organ_icon() +/obj/item/organ/limb/proc/heal_robotic_damage(brute, burn) //so you can heal robotic limbs but not with the original proc - RR + if(status == ORGAN_ORGANIC) //This is a robotic heal proc so no healing organic limbs - RR + brute = max(0, brute - 3) + burn = max(0, burn - 3) + + brute_dam = max(brute_dam - brute, 0) + burn_dam = max(burn_dam - burn, 0) + return update_organ_icon() + + + + //Returns total damage...kinda pointless really /obj/item/organ/limb/proc/get_damage() return brute_dam + burn_dam @@ -127,21 +166,24 @@ //Updates an organ's brute/burn states for use by update_damage_overlays() //Returns 1 if we need to update overlays. 0 otherwise. /obj/item/organ/limb/proc/update_organ_icon() - var/tbrute = round( (brute_dam/max_damage)*3, 1 ) - var/tburn = round( (burn_dam/max_damage)*3, 1 ) - if((tbrute != brutestate) || (tburn != burnstate)) - brutestate = tbrute - burnstate = tburn - return 1 - return 0 + if(status == ORGAN_ORGANIC) //Robotic limbs show no damage - RR + var/tbrute = round( (brute_dam/max_damage)*3, 1 ) + var/tburn = round( (burn_dam/max_damage)*3, 1 ) + if((tbrute != brutestate) || (tburn != burnstate)) + brutestate = tbrute + burnstate = tburn + return 1 + return 0 //Returns a display name for the organ -/obj/item/organ/limb/proc/getDisplayName() +/obj/item/organ/limb/proc/getDisplayName() //Added "Chest" and "Head" just in case, this may not be needed - RR. switch(name) if("l_leg") return "left leg" if("r_leg") return "right leg" if("l_arm") return "left arm" if("r_arm") return "right arm" + if("chest") return "chest" + if("head") return "head" else return name diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index f8aea15eb38..ebba423b6f8 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -1,12 +1,16 @@ /datum/surgery var/name = "surgery" var/status = 1 - var/list/steps = list() - var/step_in_progress = 0 - var/list/species = list(/mob/living/carbon/human) - var/location = "chest" - var/target_must_be_dead = 0 - var/target_must_be_fat = 0 + var/list/steps = list() //Steps in a surgery + var/step_in_progress = 0 //Actively performing a Surgery + var/list/species = list(/mob/living/carbon/human) //Acceptable Species + var/location = "chest" //Surgery location + var/target_must_be_dead = 0 //Needs to be dead + var/target_must_be_fat = 0 //Needs to be fat + var/requires_organic_chest = 0 //Prevents you from performing an operation on Robotic chests*** + var/has_multi_loc = 0 //Multiple locations - RR + + /datum/surgery/proc/next_step(mob/user, mob/living/carbon/target) @@ -25,20 +29,30 @@ src = null + //INFO //Check /mob/living/carbon/attackby for how surgery progresses, and also /mob/living/carbon/attack_hand. //As of Feb 21 2013 they are in code/modules/mob/living/carbon/carbon.dm, lines 459 and 51 respectively. -//Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon). +//Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon) +// var/list/organs (/mob/living/carbon/human) is the LIMBS of a Mob. //Surgical procedures are initiated by attempt_initiate_surgery(), which is called by surgical drapes and bedsheets. +// /code/modules/surgery/multiple_location_example.dm contains steps to setup a multiple location operation. //TODO //specific steps for some surgeries (fluff text) //R&D researching new surgeries (especially for non-humans) -//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) //more interesting failure options //randomised complications //more surgeries! //add a probability modifier for the state of the surgeon- health, twitching, etc. blindness, god forbid. //helper for converting a zone_sel.selecting to body part (for damage) -//combine hands/feet into the arms \ No newline at end of file + + +//RESOLVED ISSUES //"Todo" jobs that have been completed +//combine hands/feet into the arms - Hands/feet were removed - RR +//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see multiple_location_example.dm - RR + + +//*** This may seem entirely redundant because of Organic organs only having operations but you CAN circumvent that due to +//all surgeries (except augmentation) not checking where the surgeon aims so this is just a double check, it IS needed - RR \ No newline at end of file diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index 52c525d26b0..4ceed4b0d5e 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -4,6 +4,8 @@ var/accept_hand = 0 //does the surgery step require an open hand? If true, ignores implements. Compatible with accept_any_item. var/accept_any_item = 0 //does the surgery step accept any item? If true, ignores implements. Compatible with require_hand. var/time = 10 //how long does the step take? + var/new_organ = null //Used for multilocation operations + var/list/allowed_organs = list()//Allowed organs, see Handle_Multi_Loc below - RR /datum/surgery_step/proc/try_op(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -35,6 +37,9 @@ /datum/surgery_step/proc/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) surgery.step_in_progress = 1 + if(surgery.has_multi_loc) //if it is multi-location, handle that + Handle_Multi_Loc(user, target) + preop(user, target, target_zone, tool) if(do_after(user, time)) @@ -72,7 +77,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target H.apply_damage(75,"brute","[target_zone]") - user.visible_message("[user] saws [target]'s [target_zone] open!") + user.visible_message("[user] saws [target]'s [target_zone] open!") return 1 /datum/surgery_step/proc/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -82,3 +87,38 @@ /datum/surgery_step/proc/tool_check(mob/user, obj/item/tool) return 1 + +/datum/surgery_step/proc/Handle_Multi_Loc(mob/user, mob/living/carbon/target) //this is here so MultiLoc Surgeries don't need to rewrite it each time - RR + + + if(user.zone_sel.selecting in allowed_organs) + + switch(user.zone_sel.selecting) //Switch, for Aran - RR + if("r_arm") + new_organ = target.getlimb(/obj/item/organ/limb/r_arm) + if("l_arm") + new_organ = target.getlimb(/obj/item/organ/limb/l_arm) + if("r_leg") + new_organ = target.getlimb(/obj/item/organ/limb/r_leg) + if("l_leg") + new_organ = target.getlimb(/obj/item/organ/limb/l_leg) + if("chest") + new_organ = target.getlimb(/obj/item/organ/limb/chest) + if("groin") + new_organ = target.getlimb(/obj/item/organ/limb/chest) + if("head") + new_organ = target.getlimb(/obj/item/organ/limb/head) + if("eyes") + new_organ = target.getlimb(/obj/item/organ/limb/head) + if("mouth") + new_organ = target.getlimb(/obj/item/organ/limb/head) + else + user << "You cannot perform this operation on this body part!" //Explain to the surgeon what went wrong - RR + return 0 + + return new_organ + + else + return 0 + + diff --git a/code/modules/surgery/xenomorph_removal.dm b/code/modules/surgery/xenomorph_removal.dm index 025a51e8daa..9143713034d 100644 --- a/code/modules/surgery/xenomorph_removal.dm +++ b/code/modules/surgery/xenomorph_removal.dm @@ -3,6 +3,8 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/xenomorph_removal, /datum/surgery_step/close) species = list(/mob/living/carbon/human, /mob/living/carbon/monkey) location = "chest" + requires_organic_chest = 1 + //remove xeno from premises @@ -14,6 +16,13 @@ user.visible_message("[user] begins to search in [target]'s chest for a xenomorph.") /datum/surgery_step/xenomorph_removal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(remove_xeno(user, target)) + user.visible_message("[user] successfully extracts the xenomorph from [target]!") + else + user.visible_message("[user] can't find anything in [target]'s chest!") + return 1 + +/datum/surgery_step/xenomorph_removal/proc/remove_xeno(mob/user, mob/living/carbon/target) var/obj/item/alien_embryo/A = locate() in target.contents if(A) user << "You found an unknown alien organism in [target]'s chest!" @@ -25,10 +34,8 @@ A.AttemptGrow() A.loc = get_turf(target) - user.visible_message("[user] successfully extracts the xenomorph from [target]!") - else - user.visible_message("[user] can't find anything in [target]'s chest!") - return 1 + return 1 + /datum/surgery_step/xenomorph_removal/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/alien_embryo/A = locate() in target.contents diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index e1682cfbbfc..d6c2246d76d 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -207,7 +207,7 @@ dest = target flick("pad-beam", telepad) - playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 25, 1) + playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) for(var/atom/movable/ROI in source) // if is anchored, don't let through if(ROI.anchored) diff --git a/code/unused/powerarmor/powerarmor.dm b/code/unused/powerarmor/powerarmor.dm index 0c6b3b89937..2bf9d94dea2 100644 --- a/code/unused/powerarmor/powerarmor.dm +++ b/code/unused/powerarmor/powerarmor.dm @@ -268,7 +268,7 @@ obj/item/clothing/suit/powered/spawnable/regular New() servos = new /obj/item/powerarmor/servos(src) servos.parent = src - reactive = new /obj/item/powerarmor/reactive/centcomm(src) + reactive = new /obj/item/powerarmor/reactive/centcom(src) reactive.parent = src atmoseal = new /obj/item/powerarmor/atmoseal/optional/adminbus(src) atmoseal.parent = src diff --git a/code/unused/powerarmor/powerarmorcomponents.dm b/code/unused/powerarmor/powerarmorcomponents.dm index 03848b6a25d..07b525115cd 100644 --- a/code/unused/powerarmor/powerarmorcomponents.dm +++ b/code/unused/powerarmor/powerarmorcomponents.dm @@ -113,8 +113,8 @@ if(parent.shoes) parent.shoes.armor[armorvar] = parent.armor[armorvar] - centcomm - name = "CentComm power armor reactive plating" + Centcom + name = "Centcom power armor reactive plating" desc = "Pretty effective against everything, not perfect though." togglearmor = list(melee = 90, bullet = 70, laser = 60,energy = 40, bomb = 75, bio = 75, rad = 75) slowdown = 2 diff --git a/code/world.dm b/code/world.dm index 860536fba51..00d45043c40 100644 --- a/code/world.dm +++ b/code/world.dm @@ -52,6 +52,8 @@ // dumb and hardcoded but I don't care~ config.server_name += " #[(world.port % 1000) / 100]" + timezoneOffset = text2num(time2text(0,"hh")) * 36000 + makepowernets() sun = new /datum/sun() diff --git a/config/admins.txt b/config/admins.txt index d8b930ffaab..d43705dab13 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -8,6 +8,7 @@ # NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # ############################################################################################### +adrinus = Game Master rolan7 = Game Master quarxink = Game Master tle = Game Master @@ -32,7 +33,7 @@ sieve = Game Master aranclanos = Game Master intigracy = Game Master dumpdavidson = Game Master -kazeespada = Game Master +kazeespada = Game Master malkevin = Game Master incoming = Game Master demas = Game Master @@ -43,8 +44,10 @@ crimsonvision = Game Master iamgoofball = Game Master zelacks = Game Master androidsfv = Game Master -miauw62 = Game Master +miggles = Game Master jordie0608 = Game Master s0ldi3rkr4s0 = Game Master ergosavi = Game Master vistapowa = Game Master +miauw62 = Game Master +kazeespada = Game Master diff --git a/html/changelog.html b/html/changelog.html index 99f5340256c..c04d7d583f6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,11 +50,124 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit tho. Thanks. --> - - - + + +
    +

    14 December 2013

    +

    Incoming updated:

    +
      +
    • Magic Mania! Powerful new magical tools and skills for wizard and crew alike!
    • +
    • Beware the new Summon Magic spell, which will grant the crew access to magical tools and spells and cause some to misuse it!
    • +
    • One Time Spellbooks that can be spawned during summon magic that can teach a low level magic skill to anyone! Beware the effects of reading pre-owned books, the magical rights management is potent! +
    • Magical Wands that can be spawned during Summon Magic! They come in a variety of effects that mimic both classical wizard spells and all new ones. They come precharged but lack the means to refill them once their magical energy is depleted... Fire efficently!
    • +
    • Be aware of the new Charge spell, which can take normally useless spent wands and give them new life! This mysterious effect has been found to wear down the overall magical potency of wands over time however. Beyond wands the clever magical user can find ways to use this spell on other things that may benefit from a magical charge...
    • +
    • The Staff of Resurrection, which holds intense healing magics able to defeat death itself! Look out for this invaluable magical tool during castings of Summon Magic.
    • +
    • Be on the lookout for a new apprentice! This noble mage is a different beast from most wizards, trained in the arts of defending and healing. Too bad he still works for the wizard!
    • +
    +
    + + +
    +

    9 December 2013

    +

    Giacom updated:

    +
      +
    • New colourful ghost sprites for BYOND members. Sprites by anonus.
    • +
    +
    + + +
    +

    8 December 2013

    +

    Rolan7 updated:

    +
      +
    • Leather gloves can be used to removes lights.
    • +
    • Plant, ore, and trash bags have a new option to pick up all items of single type
    • +
    • Creating astroturf now works like sandstone, converting all the grass at once.
    • +
    • Uranium and radium can be used instead of mutagen. 10 can mutate species, 5 or 2 mutate traits. Highly toxic.
    • +
    • Plants require a little light to live. Mushroom require even less (2 units vs 4) and take less damage.
    • +
    +
    + +
    +

    5 December 2013

    +

    Razharas updated:

    +
      +
    • Reworked how ling stings are done, now when you click a sting in the changeling tab it becomes current active sting, the icon of that sting appears under the chem counter, alt+clicking anyone will sting them with current sting, clicking the icon of the sting will unset it.
    • +
    • Monkeys have ling chem counter and active sting icons in their UI.
    • +
    • Going monkey -> human will try to equip the human with everything on the ground below it.
    • +
    +
    + +
    +

    2 December 2013

    +

    Giacom updated:

    +
      +
    • A less annoying virology system! From now on, you can only get low level virus symptoms from virus food, medium level virus symptoms from unstable mutagen and high level virus symptoms from liquid plasma. You can find a list of symptoms, and which chemicals are required to get them, here: http://wiki.ss13.eu/index.php/Infections#Symptoms_Table
    • +
    • The virologist starts with a bottle of plasma in his smart fridge.
    • +
    • Made it so you cannot accidentally click in the gaps between chem masters.
    • +
    +
    + + +
    +

    1 December 2013

    +

    cookingboy3 updated:

    +
      +
    • Added three new buttons to the sandbox panel.
    • +
    • Removed canister menu, replaced it with buttons.
    • +
    • Players can no longer spawn "dangerous" canisters in sandbox, such as Plasma, N20, CO2, and Nitrogen.
    • +
    +
    + +
    +

    28 November 2013

    +

    Malkevin updated:

    +
      +
    • Made the suit storage on the Captain's Tunic more useful than just a place to store your e-o2 tank. You can now store the nuke disk, stamps, medal box, flashes and melee weapons (mainly intended for the Chain of Command), and of course - smoking paraphernalia
    • +
    +
    + + +
    +

    30 November 2013

    +

    Yota updated:

    +
      +
    • The identification console will now require that ID and job names follow the same restrictions as player names.
    • +
    • NTSL scripts and parrots should now handle apostrophes and such properly. It&#39;s about time.
    • +
    • NTSL scripts now have a better sense of time.
    • +
    +
    + +
    +

    27 November 2013

    +

    RobRichards updated:

    +
      +
    • Nanotrasen surgeons are now certified to perform Limb replacements, The robotic parts used in construction of Nanotrasen Cyborgs are the only parts authorized for crew augmentation, these replacement limbs can be repaired with standard welding tools and cables.
    • +
    +
    + + +
    +

    17 November 2013

    +

    Laharl Montgommery updated:

    +
      +
    • AI can now anchor and unanchor itself. In short, it means the AI can be dragged, if it wants to.
    • +
    +
    + + +
    +

    16 November 2013

    +

    Kyrahabattoir updated:

    +
      +
    • Added restocking units for the snack, softdrinks, cigarettes, booze and hot drinks vending machines, can be ordered in cargo.
    • +
    • Vending machines need their service screwed on in order to dispense products.
    • +
    +
    + +

    15 November 2013

    Giacom updated:

    diff --git a/html/longchangelog.html b/html/longchangelog.html index 2985ea6b448..c07456e3f04 100644 --- a/html/longchangelog.html +++ b/html/longchangelog.html @@ -58,7 +58,13 @@ should be listed in the changelog upon commit tho. Thanks. --> - +
    +

    17 November 2013

    +

    Laharl Montgommery updated:

    +
      +
    • AI can now anchor and unanchor itself. In short, it means the AI can be dragged, if it wants to.
    • +
    +

    29 September 2013

    diff --git a/icons/mob/augments.dmi b/icons/mob/augments.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c0a574c4afe4f1c1afef561154770872f953ec3e GIT binary patch literal 1364 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%0AIg`KVzY8A&C%#9+g9 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�VmNr!$8xkPV;irg6soR*i9Ag( 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 M6)ojLCCkA70YPyyyZ`_I literal 61700 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 aeW22310_Axz%OQlQ@UWQ2V{j2lmCcJXM8k zPZ|*7wzce-)*0%?Q?Hfi1{-3}op{8E3gd!&R0ui~=?(GS7N8qt*lR6+bo%UB+qKr> z>FAOSnBeJ?A@@z41r8s1^UP>g_pNSTP$uwU=>!wvBgBU3qSg3WXvd&$=y4omNL%*j zt_%q8)v}wAH4UBe;!{OI`81dusW>(nI+evm=FrsT6yNgbocMx;Uy0#R&=<${hJT&8 zV;H6=&$A=t4$9R`e_!h8PMVyB{KEbB3Eu?eM~#bpy>>S7@*yTRnrYZV;IJ^b zYkgv4JHfzEyCf{ZeBr`1N4Zds#pB3*wSB?-!~Q4V{*-q~x%^wkywtw%=mR#FY7}f= zF=Mox>+VYE5*l1(x2g( z*(c5Il0b7%o$H{JtaIY-_93>AitQNRvUQ%r3Zdp?l$uB$*or&)03o)nQsXUQZ~t2J z_Y!`~9iyoB^V~DAH7P~2o~Gt7B1K6;-(%bK_j7WVhNWYq2a|IOaZ0j|YqF=OhbSxs zI?M?MV}K6ha1~x6bl|)jcM32YLEDt{f@d73p5tj&?6fJ^mh?7knyUv-q26hpB|`ws^q zK{|O`#0`vs(&%>}x|kg$<*_|2X98&yEW}kUfjEoqC3uE(whWspq=;C0py|xn0@oMZLZn{mxw>-eE-N@XkRhP z1JtEcbeS$BWl%Kn9UHX>d6+S(A(&u_kJk5VVEHe}%AjM+ghGEQIn~wK_-BuTXt6Z} zjL@ez27NFlpIu&)awG1F=@QG*zk-;D56hj6TH^a}Dub~Ny{jV-u_005O_Ag1MJV+^ zynW(ohwjUaJRhUfJfHYQnXkvv4!&qExye2`eJ(fm9|d@?=BL!T$W5=FV38;NRuk51 zdF496Hzk~)S=S^~&s|;RHd|UZBvzt*;`x$pJ!>Dk8rdXN-3Kxu5p>7y@jP@%#{WEY z=mQXnVPoxOdT`-X{Z7DWsp5$f0_z7GXf({KsY*Zbvg^(=wy@sk%=tI(|u$(^^1z%QIT`ns%ZLH{lhd~6)cwW2}vkf_>rO9Gw>0A&J|fnf(E!Uua|jv`}9&{NxMQtB7bvJ=)H^QhTe5Z~w1q6ak) zh1Ij60P}5wIv@)9FpdkNCeDQrH^fl8i$}Af6XST&)#9(1a8Pr;%lmwc$hXxQ#Hl4Y z;DdT*p7Md!VUzHJ24grAZ6FunJ@gP3m-Bd~q-RDz^ON99=4i`8bk-T*|eX$g~F8ia$S(v-g-rfWl32M)|`NV`}4*PK-hl*wWruQy6 zfO;sYBKjV9V|FqnTNe4aYPcD*Z1azcZ>FJ=v-+u*dqv z>&B5+&Fe*#JAw?x+p1e0m=&jF+6;Yp^+R@<3dEy=EYP-+f`= z(NdFR)2)Pt#z%E;%Qq`_hit^!R3&VtA6i;lnbjK_gL8A0YO=Yd1W@@EE3sI(o|K;~ z-0LpUy0bo5OqG;#pL`s&5GtzoNKQ_E@f34E2C{ya4&y1!E|JYLxlG~y;zp6{52(UI zFohZ!yilPdhd{R%-nRy4ly}=jy$KR;Y3I0}3|x&tfKFRttcnX`wwH&`e3|kXG~4>I7ErP2L$)){IjWMzeno`@KBYfA!#c%%ZDRaf*px

    fPou@pux}DU4thF&;L6_O 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Ή<<4*IyajP>9x#KRLiJ^DM2Qe`R%a)lC1gOmr`w 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 delta 82703 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 diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 9c9f97dd4e9535ac5b5a0c57209edb35db8fab4e..cbb4183793f27094f3c858375c934055ac49ed3f 100644 GIT binary patch delta 86730 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 delta 85449 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 z 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 diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 18f1823b4b873f2b555a840e29fe0abacbc4138a..ee94f54395b5e5aa605baa8582c6fbdd9911153d 100644 GIT binary patch literal 27052 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 literal 25845 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 W!*X}A4=xdbKP`1VwX(ZbZ~hCm%2u`j delta 7519 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 diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 39811fbde4ec3700dc7ee18485b1e91034200fdb..56c59b87ecd29caa0a8d65449e06f0ba2a43ef4f 100644 GIT binary patch literal 20569 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 RFhC3fadGrGU2h*u{0||YA7=mn diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 13e318b6a562de9fa5cd93d8bfa544cedb7cc958..8755190607883818828e318ea913bcf54c0748f7 100644 GIT binary patch delta 10587 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 delta 10482 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

  • T&W8ge*<~O0Ew?U4tXBY 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 diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index f1acede2711cec6f6f256f21f1f618fb93d01f02..dccfb27e8673bb3aeb6ca058c4faaf67c2aa177c 100644 GIT binary patch literal 22600 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 literal 20405 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 diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 53237188526ca78c221c4c3316a4911807998341..98283e0ee84e1e44f86d0b0ed43f6b4f7b78b29d 100644 GIT binary patch literal 41333 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 qll0P03>fuw5^&DskC-Zp% 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 E4>~aS6951J delta 15188 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 z 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 diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi index f6765b5aa65f99dddf68e087fd5a70c0014dfd62..093c17cd2b316f027ef3f3eeeaf7a1ec713ee75a 100644 GIT binary patch delta 11498 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 delta 10119 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 }1np*U#26X!DpdVW=Qi>P8 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 C8pRR- literal 18517 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

    >L>L=!&($ePF5nZqt^OV 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 literal 13302 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 Q$3fut6Q}HJZ7-$#2lj2ySpWb4 diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 9eff29d8b12bf06082925c84370a77d060c9f08e..28390abff25c460ed6fd3a953c3d46ccdbd18091 100644 GIT binary patch literal 13681 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 OASp3<(Q;wK@BbGNY#u@Y literal 9935 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 diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index 8c7c88b689ff3ef8fa52bae6fabc277e5bb271eb..ab7230f1d21416163c34d20511d952e8bd2dd0d9 100644 GIT binary patch literal 6295 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 YOw3kd#V@$9KO6w9$GU1YD%K(Y0|RU^F#rGn literal 2362 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 O!0?8t?k8=>i2nuq$Cd;D literal 10566 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 diff --git a/icons/obj/vending_restock.dmi b/icons/obj/vending_restock.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ec37cad94c5651c04881ff7e343bdcaabcebb597 GIT binary patch literal 986 zcmV<0110>4P)Mn=HEz+WK)Y$pZLiva7m0RPAU*|Nnn~f2F0Rl9H0P)|mhM|CPgQMrbX2*Gf$Q0004WQchC< zK<3zH0001xdQ@0+L}hbha%pgMX>V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r z;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sVFrqGbbm$I4?0dTZxM^C9|j)C~U~Z znO2mTn+joLD9+8#P9;`xQht6F(TbDva}tSFo0U(3vBf2&xj2<8E4cc(fI|-eZOCAH zAFI4z^j8N!}Ovv z`fr%wv-Y=kCC~2DQ&d#cO$kyDejDIJ>lGh$O7&0Tb6?lI6jpCSV>>Pc-uggE6i z$cuc049fc#CY=D1peu(oyRMbD!UsQ5ws?hs0YXATM07*qo IM6N<$f~aiL-2eap literal 0 HcmV?d00001 diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index aef6d804a14402590a78d6270660eba66c478796..09ceeed47d567ba007cf723c567567680cae2615 100644 GIT binary patch literal 23560 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 diff --git a/maps/MetaStation.v38K.dmm b/maps/MetaStation.v38N.dmm similarity index 92% rename from maps/MetaStation.v38K.dmm rename to maps/MetaStation.v38N.dmm index a608134bc7e..dd3c98214a3 100644 --- a/maps/MetaStation.v38K.dmm +++ b/maps/MetaStation.v38N.dmm @@ -32,7 +32,7 @@ "aaF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area) "aaG" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/security/processing) "aaH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters) -"aaI" = (/obj/structure/table,/obj/item/weapon/dice,/turf/simulated/floor,/area/security/prison) +"aaI" = (/obj/machinery/space_heater,/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = -25; pixel_y = -5; req_access_txt = "12"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aaJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aaK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters) "aaL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod3/station) @@ -42,12 +42,12 @@ "aaP" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "0"; req_one_access_txt = "1:13"},/turf/simulated/floor/plating,/area/security/processing) "aaQ" = (/turf/simulated/wall,/area/security/main) "aaR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"aaS" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"aaS" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/crew_quarters) "aaT" = (/turf/space,/area/solar/auxport) "aaU" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aaV" = (/obj/machinery/door/airlock/external{name = "Escape Pod Two"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters) "aaW" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"aaX" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"aaX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aaY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "aaZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "aba" = (/obj/structure/grille,/turf/space,/area) @@ -90,13 +90,13 @@ "abL" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/laborcamp/station) "abM" = (/obj/machinery/door/airlock/external{name = "Escape Pod Two"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/processing) "abN" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/security/main) -"abO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) +"abO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "abP" = (/obj/structure/table,/obj/machinery/recharger,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "abQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) -"abR" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/holodeck) -"abS" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Holodeck APC"; pixel_x = -1; pixel_y = 26},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/holodeck) -"abT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) -"abU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) +"abR" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"abS" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Holodeck APC"; pixel_x = -1; pixel_y = 26},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/holodeck) +"abT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore) +"abU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) "abV" = (/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/turf/simulated/floor,/area/holodeck) "abW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "abX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) @@ -110,9 +110,9 @@ "acf" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) "acg" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "ach" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 1"; pixel_x = -28},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"aci" = (/obj/structure/toilet{dir = 1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) +"aci" = (/obj/item/stack/sheet/cardboard,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/starboard) "acj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"ack" = (/obj/item/stack/sheet/cardboard,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/starboard) +"ack" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/maintenance{name = "Brig Maintenance"; req_access_txt = "63"},/turf/simulated/floor/plating,/area/maintenance/fore) "acl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/starboard) "acm" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "acn" = (/turf/space,/area/maintenance/starboard) @@ -131,8 +131,8 @@ "acA" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fore) "acB" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "acC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/warden) -"acD" = (/obj/machinery/disposal,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"acE" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"acD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"acE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "acF" = (/obj/effect/landmark/start{name = "Warden"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "acG" = (/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "acH" = (/obj/structure/table,/obj/item/weapon/paper{desc = ""; info = "Labor Camp Facility Operation Guide

    Hello there, proud operator of an NT-Sec Prisoner Rehabilitation Center. A solution to rising crime rates and falling productivity, these facilities are specifically designed for the safe, productive imprisonment of your most dangerous criminals.

    To press a long-term prisoner into the service of the station, replace his equipment with prisoners' garb at one of the prison lockers, as per normal operating procedure. Before assigning a prisoner his ID, insert the ID into a prisoner management console and assign the prisoner a quota, based on the severity of his crime.
    A single sheet of most materials produces five points for the prisoner, and points can be expected to be produced at a rate of about 100 per minute, though punishments as severe as forced labor should be reserved for serious crimes of sentences not less than five minutes long.
    Once you have prepared the prisoner, place him in the secure northern half of the labor shuttle, and send him to the station. Once he meets his quota by feeding sheets to the stacker, he will be allowed to return to the station, and will be able to open the secure door to the prisoner release area.

    In the case of dangerous prisoners, surveilance may be needed. To that end, there is a prisoner monitoring room on the mining station, equipped with a remote flasher and a lockdown button. The mine itself is patrolled by a securibot, so the nearby security records console can also be used to secure hostile prisoners on the mine."; name = "Labor Camp Operating Guide"},/obj/item/weapon/folder/red,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) @@ -168,13 +168,13 @@ "adl" = (/obj/structure/rack,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/starboard) "adm" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"},/area/security/main) "adn" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"ado" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ado" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "adp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "adq" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/pen/red,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/lawoffice) "adr" = (/turf/simulated/wall,/area/maintenance/fore) "ads" = (/turf/simulated/floor/plating,/area/maintenance/fore) "adt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"},/area/security/main) -"adu" = (/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "dark"},/area/security/main) +"adu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/warden) "adv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "red"},/area/security/main) "adw" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "adx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) @@ -185,7 +185,7 @@ "adC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) "adD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) "adE" = (/turf/simulated/floor{icon_state = "grimy"},/area/security/main) -"adF" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"adF" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera{c_tag = "Holodeck"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/holodeck) "adG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation Monitoring"; req_access = null; req_access_txt = "1"},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "adH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "adI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/main) @@ -211,8 +211,8 @@ "aec" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "aed" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aee" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/power/apc{dir = 4; name = "Garden APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aef" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/camera{c_tag = "Brig Control Room"},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aeg" = (/obj/machinery/disposal,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aef" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aeg" = (/obj/machinery/vending/security,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeh" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "aei" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "aej" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) @@ -221,36 +221,36 @@ "aem" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aen" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeo" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 22},/obj/machinery/computer/crew,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aep" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) -"aeq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer{pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) +"aep" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"aeq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aer" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "aes" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) -"aet" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/main) -"aeu" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aet" = (/obj/machinery/portable_atmospherics/canister/air,/obj/item/weapon/tank/air,/turf/simulated/floor/plating,/area/maintenance/fore) +"aeu" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aev" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Warden"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aew" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Brig Control Desk"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aex" = (/turf/simulated/wall,/area/security/warden) "aey" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aez" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aez" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "aeA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aeC" = (/obj/structure/table,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/item/device/assembly/timer,/obj/item/weapon/handcuffs,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aeC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeD" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -26; pixel_y = 26; req_access_txt = "2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeF" = (/obj/structure/closet/secure_closet/warden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeG" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/main) "aeH" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/flash,/turf/simulated/floor,/area/security/main) -"aeI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aeI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeJ" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeK" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/security/brig) "aeL" = (/obj/structure/rack,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/under/rank/medical/purple,/obj/item/clothing/tie/stethoscope,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "aeM" = (/turf/simulated/wall,/area/security/brig) -"aeN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aeO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) +"aeN" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/fore) +"aeO" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeP" = (/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/starboard) "aeQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aeR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) -"aeS" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aeS" = (/obj/structure/sign/poster{pixel_y = -32},/obj/item/weapon/vending_refill/cigarette,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "aeU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -259,16 +259,16 @@ "aeY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "aeZ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "afa" = (/obj/structure/rack,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/mask/gas,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) -"afb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) +"afb" = (/obj/machinery/disposal,/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "afc" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/turf/simulated/floor,/area/security/main) -"afd" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) +"afd" = (/obj/item/weapon/cigbutt,/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/fore) -"aff" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"aff" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/turf/simulated/floor,/area/security/main) "afg" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) "afh" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "afi" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/auxport) -"afj" = (/obj/machinery/computer/secure_data,/obj/structure/reagent_dispensers/peppertank{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/main) -"afk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"afj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) +"afk" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/structure/reagent_dispensers/peppertank{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "afl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "afm" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "afn" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/handcuffs,/turf/simulated/floor,/area/security/main) @@ -278,14 +278,14 @@ "afr" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afs" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/packageWrap,/turf/simulated/floor,/area/security/main) "aft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) -"afu" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"afu" = (/obj/machinery/light_construct/small,/obj/item/weapon/toolbox_tiles_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afv" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) "afw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "afx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) "afy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/security/brig) -"afz" = (/obj/machinery/door/airlock/maintenance{name = "Brig Maintenance"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) +"afz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "afA" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/security/brig) -"afB" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"afB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/holodeck) "afD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/holodeck) "afE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) @@ -302,8 +302,8 @@ "afP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "afQ" = (/turf/simulated/wall/r_wall,/area/security/brig) "afR" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"afS" = (/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/wood,/area/lawoffice) -"afT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"afS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/reagent_dispensers/peppertank{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"afT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afV" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/security/brig) @@ -317,7 +317,7 @@ "age" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "agf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/brig) "agg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) -"agh" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) +"agh" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 1},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "agi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "agj" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/seccarts{pixel_x = -3; pixel_y = -2},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "agk" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) @@ -326,7 +326,7 @@ "agn" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ago" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Security Delivery"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"},/area/security/main) "agp" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) -"agq" = (/obj/structure/filingcabinet,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/main) +"agq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "agr" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ags" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "agt" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -336,7 +336,7 @@ "agx" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/device/radio/off,/turf/simulated/floor,/area/security/main) "agy" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "agz" = (/obj/structure/disposalpipe/segment,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 5},/area/hallway/secondary/construction{name = "\improper Garden"}) -"agA" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"agA" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/fore) "agB" = (/obj/structure/closet/crate/medical,/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/starboard) "agC" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light_construct/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) "agD" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -351,17 +351,17 @@ "agM" = (/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters) "agN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters) "agO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) -"agP" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"agP" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fore) "agQ" = (/obj/structure/rack,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fore) "agR" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fore) -"agS" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = 32},/turf/simulated/floor/wood,/area/lawoffice) +"agS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "agT" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "agU" = (/turf/space,/area/maintenance/auxsolarstarboard) "agV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"agW" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 8; name = "Detective APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/weapon/storage/secure/briefcase,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"agW" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "agX" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "white"},/area/security/brig) -"agY" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/security/brig) -"agZ" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/security/brig) +"agY" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 28},/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{icon_state = "white"},/area/security/brig) +"agZ" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "aha" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/laborcamp/station) "ahb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ahc" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -369,11 +369,11 @@ "ahe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) "ahf" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ahg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) -"ahh" = (/obj/structure/closet/wardrobe/red,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"ahh" = (/obj/machinery/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "ahi" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/device/flash,/turf/simulated/floor,/area/security/main) -"ahj" = (/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/main) +"ahj" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) "ahk" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/blue{pixel_x = -2; pixel_y = 3},/turf/simulated/floor,/area/security/main) -"ahl" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"ahl" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Warden's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "ahm" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/laborcamp/station) "ahn" = (/turf/simulated/wall/r_wall,/area/security/range) "aho" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) @@ -390,17 +390,17 @@ "ahz" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/simulated/floor,/area/security/main) "ahA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "ahB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"ahC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"ahC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "ahD" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "ahE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) -"ahF" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) +"ahF" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "ahG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) "ahH" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "ahI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main) "ahJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "ahK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/warden) -"ahL" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/glass_security{name = "Officer Lockers"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) -"ahM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"ahL" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/fore) +"ahM" = (/obj/machinery/door/airlock/maintenance{icon = 'icons/obj/doors/Doorint.dmi'; name = "Brig Emergency Storage"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "ahN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ahO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ahP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -409,15 +409,15 @@ "ahS" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ahT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/laborcamp/station) "ahU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) -"ahV" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ahW" = (/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"ahV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer{pixel_y = -2},/obj/machinery/camera{c_tag = "Brig Infirmary"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) +"ahW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "ahX" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/laborcamp/station) "ahY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) -"ahZ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) +"ahZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aia" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) "aib" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fore) -"aic" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/fore) -"aid" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aic" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fore) +"aid" = (/obj/structure/table,/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/taperecorder{pixel_x = -3; pixel_y = 2},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aie" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aif" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aig" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -441,19 +441,19 @@ "aiy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "aiz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "aiA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/turf/simulated/floor,/area/security/main) -"aiB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aiB" = (/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security Office Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "aiC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/warden) -"aiD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"aiD" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aiE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/warden) -"aiF" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) +"aiF" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aiG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) -"aiH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/brig) -"aiI" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/brig) +"aiH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aiI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aiJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) -"aiK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/warden) -"aiL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aiK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aiL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aiM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) -"aiN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aiN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Evidence Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aiO" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/maintenance/auxsolarstarboard) "aiP" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) "aiQ" = (/obj/structure/rack,/obj/item/clothing/suit/hazardvest,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -462,7 +462,7 @@ "aiT" = (/obj/structure/table/reinforced,/obj/item/seeds/appleseed,/obj/item/seeds/bananaseed,/obj/item/seeds/cocoapodseed,/obj/item/seeds/grapeseed,/obj/item/seeds/orangeseed,/obj/item/seeds/sugarcaneseed,/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/item/weapon/paper/hydroponics,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aiU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aiV" = (/obj/structure/table/reinforced,/obj/item/clothing/head/greenbandana,/obj/item/clothing/head/greenbandana,/obj/item/clothing/head/greenbandana,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aiW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aiW" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aiX" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/pestkiller{pixel_x = 3; pixel_y = 4},/obj/item/nutrient/ez,/obj/item/nutrient/rh{pixel_x = 2; pixel_y = 1},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aiY" = (/obj/machinery/seed_extractor,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aiZ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area) @@ -479,20 +479,20 @@ "ajk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "ajl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) -"ajn" = (/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ajn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajs" = (/obj/machinery/door/poddoor/shutters{id = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajt" = (/obj/machinery/space_heater,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aju" = (/obj/machinery/space_heater,/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = -25; pixel_y = -5; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aju" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "ajv" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"ajw" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/fore) +"ajw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fore) "ajx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ajy" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "ajz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) -"ajA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"ajA" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "ajC" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area) "ajD" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) @@ -502,9 +502,9 @@ "ajH" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "ajI" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area) "ajJ" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Dormitories APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) -"ajK" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) -"ajL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) -"ajM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main) +"ajK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Crew Quarters Hallway Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) +"ajL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) +"ajM" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor,/area/security/brig) "ajN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "ajO" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "ajP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) @@ -519,16 +519,16 @@ "ajY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "ajZ" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "aka" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/range) -"akb" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/main) +"akb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "akc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/range) -"akd" = (/turf/simulated/floor{icon_state = "warning"},/area/security/brig) +"akd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) "ake" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod2/station) "akf" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "akg" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod2/station) "akh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aki" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/security/brig) +"aki" = (/obj/structure/rack,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/weapon/storage/secure/briefcase{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "akj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/range) -"akk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/security/brig) +"akk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "akl" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fore) "akm" = (/obj/structure/closet{name = "Evidence Closet 5"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 5"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) "akn" = (/obj/structure/closet{name = "Evidence Closet 2"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 2"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) @@ -540,10 +540,10 @@ "akt" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "aku" = (/obj/machinery/deployable/barrier,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "akv" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light/small{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) -"akw" = (/obj/machinery/vending/security,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) +"akw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main) "akx" = (/obj/structure/closet/bombcloset,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "aky" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/miningdock) -"akz" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) +"akz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/main) "akA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) "akB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/security/brig) "akC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) @@ -562,7 +562,7 @@ "akP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) "akQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/prison/solitary{name = "Prisoner Education Chamber"}) "akR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/prison/solitary{name = "Prisoner Education Chamber"}) -"akS" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) +"akS" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Garden"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) "akT" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) "akU" = (/obj/machinery/power/solar_control{id = "foreport"; name = "Fore Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "akV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/auxsolarstarboard) @@ -591,7 +591,7 @@ "als" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "alt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "alu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"alv" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Crew Quarters Hallway APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) +"alv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "alw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "alx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/engineering) "aly" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/engineering) @@ -642,20 +642,20 @@ "amr" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area) "ams" = (/obj/machinery/door/poddoor/shutters{id = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) -"amu" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"amu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/engineering) "amw" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm Close"; dir = 4; network = list("Singulo")},/turf/space,/area) "amx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/carpet,/area/security/detectives_office) "amy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"amz" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/carpet,/area/security/detectives_office) +"amz" = (/obj/structure/closet,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/fore) "amA" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/clothing/glasses/sunglasses,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/carpet,/area/security/detectives_office) -"amB" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/secure/safe{pixel_x = 32},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/turf/simulated/floor/carpet,/area/security/detectives_office) +"amB" = (/obj/machinery/computer/security,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "amC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "amD" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fore) "amE" = (/obj/structure/stool/bed/chair,/obj/machinery/flasher{id = "holdingflash"; pixel_x = -25},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amG" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) -"amH" = (/obj/structure/rack,/obj/item/clothing/under/color/orange{pixel_x = 2; pixel_y = -3},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = -1; pixel_y = 1},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/machinery/flasher{id = "holdingflash"; pixel_x = 25},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"amH" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "windoor"; req_access_txt = "0"},/obj/item/weapon/book/manual/engineering_hacking,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amJ" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fore) "amK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) @@ -670,7 +670,7 @@ "amT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "amU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engineering) "amV" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Blast Door Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/item/stack/sheet/cardboard,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"amW" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"amW" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c20{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "amY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "amZ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -710,15 +710,15 @@ "anH" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) "anI" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) "anJ" = (/obj/effect/decal/cleanable/oil,/obj/machinery/power/apc{dir = 4; name = "Disposal APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"anK" = (/obj/structure/stool/bed/chair{name = "Judge"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/crew_quarters/courtroom) +"anK" = (/obj/structure/table/reinforced,/obj/machinery/light_construct/small{dir = 8},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anL" = (/obj/machinery/door/poddoor/shutters{id = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"anM" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/filingcabinet,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"anM" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "anN" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anO" = (/obj/machinery/door/airlock/maintenance{name = "Mining Dock Maintenance"; req_access_txt = "48"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "anQ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "Disposal Exit"; layer = 3.1; name = "disposal mass driver blast door"; opacity = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "anR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"anS" = (/obj/machinery/door/poddoor{id = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) +"anS" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c100,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "anU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/engine/engineering) "anV" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/wrench,/obj/machinery/light{dir = 8},/obj/item/weapon/hand_labeler,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -750,7 +750,7 @@ "aov" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aow" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aox" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) -"aoy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aoy" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "aoz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "aoA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/holodeck) "aoB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -762,16 +762,16 @@ "aoH" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aoI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) "aoJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) -"aoK" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/security/brig) +"aoK" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera{c_tag = "Security Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aoL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 0; pixel_y = -26; req_access_txt = "1"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "aoM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "aoN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 2; name = "Brig APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"},/area/security/brig) -"aoO" = (/obj/structure/closet/secure_closet/detective,/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"aoO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Security Office Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "aoP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "aoQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/brig) "aoR" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/hand_labeler,/turf/simulated/floor/carpet,/area/security/detectives_office) "aoS" = (/obj/effect/landmark/start{name = "Detective"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/security/detectives_office) -"aoT" = (/obj/machinery/newscaster{pixel_x = 28},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/carpet,/area/security/detectives_office) +"aoT" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aoU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aoV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/security/brig) "aoW" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; frequency = 1424; listening = 0; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) @@ -782,7 +782,7 @@ "apb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) "apc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "apd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Brig"; req_access = null; req_access_txt = "63; 42"},/turf/simulated/floor,/area/crew_quarters/courtroom) -"ape" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/door_timer/cell_1,/turf/simulated/floor{icon_state = "red"},/area/security/brig) +"ape" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/disk/data,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "apg" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) "aph" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) @@ -814,14 +814,14 @@ "apH" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "apI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "apJ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"apK" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area/maintenance/disposal) +"apK" = (/obj/machinery/door/airlock/maintenance{name = "Secure Storage Room"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "apM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) "apN" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "apO" = (/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/courtroom) "apP" = (/obj/effect/landmark/start{name = "Lawyer"},/turf/simulated/floor,/area/crew_quarters/courtroom) "apQ" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/courtroom) -"apR" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor,/area/crew_quarters/courtroom) +"apR" = (/obj/item/weapon/grown/log,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apS" = (/obj/machinery/door/window/southright{dir = 4; name = "Engineering Deliveries"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "apT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "apU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -846,17 +846,17 @@ "aqn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aqo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor,/area/security/brig) "aqp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) -"aqq" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/woodentable,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"aqq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "aqr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aqs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aqt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aqu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor,/area/security/brig) -"aqv" = (/obj/machinery/computer/med_data,/obj/machinery/door_control{id = "detsht"; name = "Privacy Shutters Control"; pixel_x = 25; pixel_y = 5; req_access_txt = "63"},/obj/machinery/light_switch{pixel_x = 38},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"aqv" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "aqw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "aqx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "aqy" = (/obj/machinery/door_control{id = "qm_mine_warehouse"; name = "Warehouse Door Control"; pixel_x = 24; pixel_y = 28; req_access_txt = "48"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) "aqz" = (/obj/structure/disposalpipe/segment,/obj/machinery/door_control{id = "qm_mine_warehouse"; name = "Warehouse Door Control"; pixel_x = -24; pixel_y = 28; req_access_txt = "48"},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"aqA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) +"aqA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = 26; pixel_y = 26; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) "aqB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aqC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aqD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -887,8 +887,8 @@ "arc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "green"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "ard" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "are" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"arf" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) -"arg" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"arf" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) +"arg" = (/obj/item/weapon/caution/cone,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) "ari" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall,/area/holodeck) "arj" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal) @@ -914,20 +914,20 @@ "arD" = (/obj/item/weapon/storage/bag/plants/portaseeder,/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "arE" = (/turf/simulated/shuttle/floor,/area/shuttle/laborcamp/station) "arF" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/item/weapon/coin/silver,/obj/item/weapon/minihoe,/obj/machinery/light,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) -"arG" = (/turf/simulated/floor/wood,/area/lawoffice) +"arG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security E.V.A. Storage"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "arH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/auxsolarport) "arI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "arJ" = (/obj/structure/table,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/apron,/obj/item/clothing/head/pumpkinhead,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "arK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "arL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/holodeck) -"arM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"arM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/item/weapon/paper,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "arN" = (/turf/simulated/wall/r_wall,/area/maintenance/starboard) "arO" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/starboard) "arP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "arQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "arR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/maintenance/starboard) "arS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"arT" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"arT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/crowbar/red,/obj/item/weapon/grenade/empgrenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) "arV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arW" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -947,7 +947,7 @@ "ask" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "asl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "asm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) -"asn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"asn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area) "aso" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "asp" = (/obj/structure/rack,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -961,11 +961,11 @@ "asy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "asz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "asA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) -"asB" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) +"asB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) "asC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "asD" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor,/area/security/processing) "asE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) -"asF" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"asF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/firealarm_electronics,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asG" = (/obj/structure/rack,/obj/item/weapon/tank/oxygen/red{pixel_x = -4; pixel_y = -1},/obj/item/weapon/tank/oxygen/red{pixel_x = 4; pixel_y = -1},/obj/item/weapon/tank/anesthetic{pixel_x = 2},/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asH" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asI" = (/obj/machinery/atmospherics/binary/pump,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -1002,24 +1002,24 @@ "atn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "ato" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "atp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Brig Control"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) -"atq" = (/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) +"atq" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "atr" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Brig Control Desk"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/paper,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "ats" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "att" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "atu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/security/range) "atv" = (/obj/structure/table,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/glasses/sunglasses{pixel_x = 3; pixel_y = 3},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/security/range) -"atw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) -"atx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security E.V.A. Storage"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/brig) +"atw" = (/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"atx" = (/obj/machinery/computer/med_data,/obj/machinery/newscaster{pixel_x = 28},/turf/simulated/floor/carpet,/area/security/detectives_office) "aty" = (/obj/structure/closet/secure_closet/security,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"atz" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"atA" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Lawyer"},/turf/simulated/floor/wood,/area/lawoffice) -"atB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"atC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) +"atz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Dorms Aft"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"atA" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 8; name = "Detective APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/taperecorder{pixel_x = 3; pixel_y = 0},/obj/item/weapon/storage/box/evidence,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"atB" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"atC" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/tie/red{pixel_x = -5; pixel_y = 3},/obj/item/clothing/tie/horrible,/obj/item/clothing/tie/blue{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/obj/item/weapon/dice/d8,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "atD" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "atE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "atF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) "atG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fore) -"atH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fore) +"atH" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "atI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "atJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard) "atK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -1028,11 +1028,11 @@ "atN" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "atO" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "atP" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"atQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) +"atQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Security EVA Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) "atR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters) "atS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atT" = (/obj/structure/cable,/obj/machinery/power/emitter{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"atU" = (/obj/structure/closet/secure_closet/security,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"atU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/yellow,/obj/item/weapon/mop,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "atV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atX" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -1051,7 +1051,7 @@ "auk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aul" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "aum" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"aun" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/lawoffice) +"aun" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/filingcabinet,/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "auo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -26},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aup" = (/obj/structure/lattice,/turf/space,/area/solar/auxstarboard) "auq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -1090,7 +1090,7 @@ "auX" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/door_control{id = "Cabin3"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters) "auY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table/woodentable,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/crew_quarters) "auZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Tertiary AI Base"},/area/turret_protected/ai) -"ava" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"ava" = (/obj/item/hand_labeler_refill,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avb" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/crew_quarters) "avc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "avd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 8; icon_state = "left"; name = "Tertiary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -1139,7 +1139,7 @@ "avU" = (/turf/simulated/wall/r_wall,/area/security/nuke_storage) "avV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/freezer/money,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "avW" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/nuke_storage) -"avX" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/nuke_storage) +"avX" = (/obj/item/weapon/bucket_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avY" = (/obj/machinery/power/apc{dir = 1; name = "Vault APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/nuke_storage) "avZ" = (/obj/machinery/computer/secure_data/detective_computer,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "awa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/crew_quarters) @@ -1148,7 +1148,7 @@ "awd" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/door_control{id = "Cabin4"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters) "awe" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "awf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 4; name = "Secondary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"awg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"awg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/bot/secbot/beepsky{desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too. "; health = 45; maxhealth = 45; name = "Officer Beepsky"},/turf/simulated/floor,/area/security/brig) "awh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/crew_quarters) "awi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = -24; pixel_y = 8},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "awj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -1157,15 +1157,15 @@ "awm" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area) "awn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) "awo" = (/obj/structure/cable,/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area) -"awp" = (/obj/structure/table,/obj/item/weapon/dice/d20,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/prison) +"awp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63"},/turf/simulated/floor/plating,/area/maintenance/fore) "awq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"awr" = (/obj/structure/table,/turf/simulated/floor,/area/security/prison) +"awr" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 5},/turf/simulated/floor,/area/security/prison) "aws" = (/turf/simulated/floor,/area/security/processing) "awt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) "awu" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"awv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice) +"awv" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor,/area/security/brig) "aww" = (/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/security/prison) -"awx" = (/obj/structure/table,/obj/item/weapon/folder,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"awx" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor,/area/security/prison) "awy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/processing) "awz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters) "awA" = (/obj/structure/table,/obj/structure/bedsheetbin,/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/security/prison) @@ -1192,11 +1192,11 @@ "awV" = (/turf/simulated/wall,/area/quartermaster/miningdock) "awW" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock) "awX" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/folder,/obj/item/weapon/paper/hydroponics,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/prison) -"awY" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock) +"awY" = (/obj/item/weapon/vending_refill/snack,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "awZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/prison) -"axa" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/weapon/paper,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"axa" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "axb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"axc" = (/obj/structure/closet/emcloset,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"axc" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor,/area/security/prison) "axd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "axe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/module/power_control,/obj/item/weapon/cell{maxcharge = 2000},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "axf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/nuke_storage) @@ -1207,7 +1207,7 @@ "axk" = (/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "axl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/monitor{name = "Bridge Power Monitoring Console"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "axm" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/security/prison) -"axn" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"axn" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "axo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/processing) "axp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/security/processing) "axq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -1241,11 +1241,11 @@ "axS" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/door_control{id = "Cabin5"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "axT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "axU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) +"axV" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/camera{c_tag = "Mining Dock"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) "axW" = (/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/crew_quarters) "axX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/security/processing) "axY" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/table,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) -"axZ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) +"axZ" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Crew Quarters Hallway APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Crew Quarters Hallway Aft"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "aya" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "ayb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/processing) "ayc" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -1279,8 +1279,8 @@ "ayE" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/crew_quarters) "ayF" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/crew_quarters) "ayG" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"ayH" = (/obj/machinery/door/morgue{name = "Area of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) -"ayI" = (/obj/machinery/door/morgue{name = "Area of Quiet Contemplation"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"ayH" = (/obj/structure/closet/secure_closet/detective,/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Detective's Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"ayI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/camera{c_tag = "Engineering Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "ayJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters) "ayK" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "ayL" = (/obj/machinery/turret{dir = 8},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) @@ -1300,7 +1300,7 @@ "ayZ" = (/obj/machinery/hydroponics,/obj/item/weapon/minihoe,/obj/item/seeds/carrotseed,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aza" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "azb" = (/obj/machinery/hydroponics,/obj/item/device/analyzer/plant_analyzer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"azc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/lawoffice) +"azc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor,/area/security/brig) "azd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aze" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/security/processing) "azf" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/flasher_button{id = "processinghall"; pixel_x = -28; pixel_y = -28; req_access_txt = "1"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/processing) @@ -1308,16 +1308,16 @@ "azh" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/processing) "azi" = (/obj/machinery/mineral/input,/obj/machinery/mineral/labor_claim_console{machinedir = 2; pixel_x = 30},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/laborcamp/station) "azj" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"azk" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) +"azk" = (/obj/machinery/computer/security/wooden_tv{density = 0; pixel_x = 3; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/table/woodentable,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/carpet,/area/security/detectives_office) "azl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "azm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"azn" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/item/weapon/gun/projectile/shotgun/pump{desc = "Useful for keeping the riff-raff down."; item_state = "shotgun"; name = "riot shotgun"},/obj/item/weapon/gun/projectile/shotgun/pump{desc = "Useful for keeping the riff-raff down."; item_state = "shotgun"; name = "riot shotgun"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"azn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "azo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "azp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/warden) -"azq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) +"azq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "azr" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) -"azs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Officer Lockers"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) -"azt" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 3; pixel_y = -30},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) +"azs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) +"azt" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/safe{pixel_x = 32},/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) "azu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/main) "azv" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "azw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Offices"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) @@ -1335,13 +1335,13 @@ "azI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock) "azJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall,/area/quartermaster/miningdock) "azK" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) -"azL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore) +"azL" = (/obj/structure/rack,/obj/machinery/flasher{id = "holdingflash"; pixel_x = 25},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/under/color/orange{pixel_x = 1; pixel_y = -1},/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/orange,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "azM" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/prison) "azN" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azP" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azQ" = (/obj/structure/closet/crate,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"azR" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"azR" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "azS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/security/nuke_storage) "azT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/nuke_storage) "azU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/nuke_storage) @@ -1356,28 +1356,28 @@ "aAd" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/fore) "aAe" = (/obj/structure/table,/obj/item/weapon/paper,/turf/simulated/floor/plating,/area/maintenance/fore) "aAf" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fore) -"aAg" = (/obj/structure/table,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters) +"aAg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/warden) "aAh" = (/obj/structure/stool/bed,/obj/machinery/door_control{id = "Cabin1"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters) "aAi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "aAj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "aAk" = (/obj/machinery/door/airlock/maintenance{name = "Prisoner Education Maintenance"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "aAl" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/processing) "aAm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/processing) -"aAn" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/prison) -"aAo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison) -"aAp" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/prison) +"aAn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"aAo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) +"aAp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/fore) "aAq" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) "aAr" = (/turf/simulated/floor,/area/security/range) "aAs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/security/warden) "aAt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Armory"; req_access = null; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aAu" = (/obj/structure/closet{name = "Evidence Closet 3"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 3"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) "aAv" = (/obj/structure/closet{name = "Evidence Closet 4"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 4"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) -"aAw" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/weapon/cartridge/lawyer,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/lawoffice) +"aAw" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless,/area/solar/auxport) "aAx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aAy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"aAz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/security/brig) -"aAA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/security/brig) -"aAB" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/security/brig) +"aAy" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump{desc = "Useful for keeping the riff-raff down."; item_state = "shotgun"; name = "riot shotgun"},/obj/item/weapon/shield/riot,/obj/item/weapon/gun/projectile/shotgun/pump{desc = "Useful for keeping the riff-raff down."; item_state = "shotgun"; name = "riot shotgun"; pixel_x = 4; pixel_y = -2},/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aAz" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor,/area/security/prison) +"aAA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/prison) +"aAB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor,/area/security/prison) "aAC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "aAD" = (/obj/item/weapon/tank/air,/turf/simulated/floor/plating,/area/hallway/primary/central) "aAE" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) @@ -1406,7 +1406,7 @@ "aBb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/shuttle/mining/station) "aBc" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "aBd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"aBe" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder/yellow,/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) +"aBe" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock) "aBf" = (/obj/machinery/door_control{id = "permacell2"; name = "Cell 2 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/flasher_button{id = "PCell 2"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "aBh" = (/obj/structure/closet/secure_closet/miner,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock) @@ -1420,7 +1420,7 @@ "aBp" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/nuke_storage) "aBq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBr" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_x = -27},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"aBs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) +"aBs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aBt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) "aBv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) @@ -1431,23 +1431,23 @@ "aBA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aBC" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/security/mining,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge) -"aBD" = (/obj/structure/rack,/obj/item/weapon/storage/lockbox/loyalty,/obj/machinery/bot/secbot{on = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aBD" = (/obj/structure/table,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters) "aBE" = (/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aBF" = (/obj/machinery/flasher/portable,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) "aBG" = (/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aBH" = (/obj/machinery/flasher/portable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/warden) "aBI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/flasher_button{id = "processinghall"; pixel_x = 6; pixel_y = 24; req_access_txt = "1"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) -"aBK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) +"aBK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) "aBL" = (/obj/machinery/door_control{id = "permacell1"; name = "Cell 1 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/flasher_button{id = "PCell 1"; pixel_x = 6; pixel_y = 24},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) -"aBM" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aBM" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aBN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/prison) "aBO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/security/prison) "aBP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aBQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aBR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBS" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/turf/simulated/floor/wood,/area/lawoffice) -"aBT" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/wood,/area/lawoffice) +"aBT" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera{c_tag = "Vault"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/nuke_storage) "aBU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "aBV" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plating/airless,/area) "aBW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) @@ -1457,7 +1457,7 @@ "aCa" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/tracker_electronics,/obj/item/weapon/paper/solar,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aCb" = (/obj/item/weapon/phone{desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/security/hos) "aCc" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/security/hos) -"aCd" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -24},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) +"aCd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/brig) "aCe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aCf" = (/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aCg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) @@ -1479,7 +1479,7 @@ "aCw" = (/obj/structure/table/woodentable,/obj/item/weapon/stamp/hos,/turf/simulated/floor/carpet,/area/security/hos) "aCx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aCy" = (/obj/structure/closet/crate/internals,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"aCz" = (/obj/machinery/power/apc{dir = 4; name = "Warehouse APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"aCz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/brig) "aCA" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/range) "aCB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "aCC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/starboard) @@ -1490,7 +1490,7 @@ "aCH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aCI" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aCJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aCK" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Prison Wing APC"; pixel_x = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) +"aCK" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/security/brig) "aCL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aCM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aCN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/prison) @@ -1504,20 +1504,20 @@ "aCV" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/airless,/area) "aCW" = (/turf/simulated/wall,/area/hallway/secondary/construction{name = "\improper Garden"}) "aCX" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 0},/obj/item/device/radio/off{pixel_x = 0; pixel_y = 3},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"aCY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/main) +"aCY" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aCZ" = (/turf/simulated/wall,/area/crew_quarters/locker) "aDa" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof{pixel_x = -4; pixel_y = 3},/obj/item/clothing/suit/armor/laserproof,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/item/weapon/storage/secure/briefcase{pixel_x = 3; pixel_y = -3},/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aDb" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aDc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/security/hos) "aDd" = (/obj/machinery/computer/crew,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/bridge) "aDe" = (/obj/structure/window/reinforced,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/security/range) -"aDf" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aDf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aDh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aDi" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) +"aDi" = (/obj/structure/rack,/obj/item/weapon/storage/lockbox/loyalty,/obj/machinery/bot/secbot{health = 35; name = "Securitron #359"; on = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aDj" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Shooting Range"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "warning"},/area/security/range) "aDk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/prison) -"aDl" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) +"aDl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aDn" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) @@ -1612,7 +1612,7 @@ "aEZ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor,/area/construction) "aFa" = (/turf/space,/area/supply/station) "aFb" = (/obj/structure/target_stake,/obj/item/target/syndicate,/turf/simulated/floor,/area/security/range) -"aFc" = (/obj/machinery/power/apc{dir = 4; name = "Arrivals APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aFc" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig Hallway Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) "aFd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Cabin7"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "aFe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) "aFf" = (/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1622,7 +1622,7 @@ "aFj" = (/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/engine/break_room) "aFk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"aFm" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) +"aFm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/door_timer/cell_1,/obj/machinery/camera{c_tag = "Brig Hallway Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "aFn" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -1630,7 +1630,7 @@ "aFr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/hallway/primary/starboard) "aFs" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "aFt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aFu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) +"aFu" = (/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aFv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aFw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aFx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -1654,19 +1654,19 @@ "aFP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aFQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aFR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) -"aFS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aFS" = (/obj/item/hand_labeler_refill,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aFT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aFU" = (/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aFV" = (/obj/machinery/door/airlock/hatch{name = "Internal Access"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aFV" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aFW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aFX" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aFY" = (/turf/simulated/floor/plating,/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aFY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aFZ" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engine/engineering) "aGa" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating,/area/engine/engineering) "aGb" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aGc" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aGc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aGd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGe" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aGe" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "aGf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "aGg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "aGh" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) @@ -1679,8 +1679,8 @@ "aGo" = (/obj/item/weapon/wirecutters,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "aGp" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area) "aGq" = (/obj/machinery/the_singularitygen{anchored = 1},/turf/simulated/floor/plating/airless,/area) -"aGr" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/construction) -"aGs" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor,/area/construction) +"aGr" = (/obj/machinery/camera{c_tag = "Interrogation"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"aGs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig Hallway Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aGt" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/construction) "aGu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) "aGv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -1690,26 +1690,26 @@ "aGz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGB" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGC" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aGC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) "aGE" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGI" = (/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aGJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGK" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/table,/obj/item/clothing/gloves/orange,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aGL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aGN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGO" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGP" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGP" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGQ" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGS" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) +"aGS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "aGT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"aGV" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint2{name = "Customs"}) +"aGV" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/range) "aGX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGY" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) @@ -1771,7 +1771,7 @@ "aIc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "aId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/quartermaster/storage) "aIe" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage) -"aIf" = (/obj/machinery/autolathe,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aIg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{icon = 'icons/obj/doors/Dooreng.dmi'; name = "Tech Storage"; req_access_txt = "0"; req_one_access_txt = "23;30"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/storage/tech) "aIh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/storage/tech) "aIi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools) @@ -1779,8 +1779,8 @@ "aIk" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) "aIl" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aIm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"aIn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2{name = "Customs"}) -"aIo" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) +"aIo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Dorms Fore"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "aIp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aIq" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aIr" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) @@ -1789,7 +1789,7 @@ "aIu" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/hallway/primary/central) "aIv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/fore) "aIw" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIx" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = -29; pixel_y = 0},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) +"aIx" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters) "aIy" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aIz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aIA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -1800,7 +1800,7 @@ "aIF" = (/turf/simulated/floor,/area/crew_quarters/locker) "aIG" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "aIH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/central) -"aII" = (/obj/structure/table,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aII" = (/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "aIJ" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps{opacity = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aIK" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aIL" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -1813,9 +1813,9 @@ "aIS" = (/obj/machinery/door/airlock/maintenance{name = "Supply Maintenance"; req_access_txt = "50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aIT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aIU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aIV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aIW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aIX" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aIV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"aIW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Armoury"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) +"aIX" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 3; pixel_y = -30},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aIY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "aIZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aJa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/break_room) @@ -1848,26 +1848,26 @@ "aJB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aJC" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/obj/structure/lattice,/turf/space,/area) "aJD" = (/obj/structure/transit_tube,/turf/space,/area) -"aJE" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aJE" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aJF" = (/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/window/reinforced,/turf/space,/area) "aJG" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aJH" = (/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/turf/space,/area) "aJI" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/space,/area) -"aJJ" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aJK" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aJJ" = (/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Space Access Airlock"; req_one_access_txt = "32;19"},/turf/simulated/floor/plating,/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aJK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{dir = 8; name = "MiniSat Airlock Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aJL" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aJM" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aJN" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/pen/red,/obj/structure/table/reinforced,/turf/simulated/floor{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aJO" = (/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) -"aJP" = (/obj/machinery/door/airlock/hatch{name = "Cyborg Recharging Station"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aJQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aJP" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) +"aJQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai) "aJR" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/briefcase{pixel_x = -2},/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/cartridge/detective,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aJS" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) -"aJT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/computer/monitor{name = "Satellite Power Monitoring Console"},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aJT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "MiniSat Airlock Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aJU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aJV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/locker) -"aJW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aJX" = (/obj/structure/table/reinforced,/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aJW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 23},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aJX" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aJY" = (/obj/structure/mirror{pixel_y = 28},/obj/structure/sink{pixel_y = 17},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aJZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) "aKa" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) @@ -1920,7 +1920,7 @@ "aKV" = (/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; name = "Deliveries"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/break_room) "aKX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aKY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aKY" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aKZ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/break_room) "aLa" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engine/break_room) "aLb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -1935,25 +1935,25 @@ "aLk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/station) "aLl" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod1/station) "aLm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/construction) -"aLn" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/construction) +"aLn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Evidence Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aLo" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/quartermaster/storage) "aLp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/quartermaster/storage) -"aLq" = (/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8},/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8},/obj/machinery/computer/supplycomp,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) +"aLq" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aLr" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aLs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aLt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "aLu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "aLv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) -"aLw" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aLw" = (/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "aLx" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/break_room) -"aLy" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aLy" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "aLz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/break_room) "aLA" = (/obj/effect/landmark/start{name = "Captain"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)"; icon_state = "comfychair_brown"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aLB" = (/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "aLC" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aLD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{name = "Escape Pod 4"; req_access = null; req_access_txt = "32"},/turf/simulated/floor,/area/engine/break_room) -"aLE" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"aLF" = (/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aLE" = (/obj/item/stack/sheet/cardboard,/obj/machinery/light_construct/small{dir = 1},/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/obj/structure/sign/poster{pixel_y = 32},/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/watertank,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aLF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aLG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aLI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -1977,16 +1977,16 @@ "aMa" = (/obj/structure/toilet{pixel_y = 13},/obj/machinery/light{dir = 2; icon_state = "tube1"},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aMb" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/grille,/turf/space,/area) "aMc" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/space,/area) -"aMd" = (/obj/structure/table,/obj/machinery/camera/autoname{c_tag = "Engineering SMES Room"; dir = 8; network = list("SS13","MiniSat","RD")},/obj/item/toy/prize/seraph{pixel_y = 10},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aMd" = (/obj/machinery/computer/security/telescreen{dir = 2; name = "MiniSat Camera Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aMe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aMf" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) -"aMg" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aMg" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Auxiliary MiniSat Distribution Port"},/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aMh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/central) "aMi" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{dir = 4},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) -"aMj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aMj" = (/turf/simulated/floor,/area/engine/break_room) "aMk" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/engineering) "aMl" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) -"aMm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) +"aMm" = (/obj/structure/table,/obj/item/weapon/soap/deluxe,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aMn" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aMo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warning"},/area/engine/engineering) "aMp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -2016,7 +2016,7 @@ "aMN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aMO" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) "aMP" = (/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/pill/kelotane{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/engine/chiefs_office) -"aMQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "CE Office APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"aMQ" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aMR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access_txt = "41"},/turf/simulated/floor,/area/quartermaster/qm) "aMS" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/engineering) "aMT" = (/obj/machinery/door_control{id = "transittube"; name = "Transit Tube Lockdown"; pixel_x = -24; pixel_y = -5; req_access_txt = "24"},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; pixel_y = 5; req_access_txt = "11"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2028,8 +2028,8 @@ "aMZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aNa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aNc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/storage/tools) -"aNd" = (/obj/structure/table,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) +"aNc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aNd" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aNe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2053,32 +2053,32 @@ "aNy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNA" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4},/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/bridge) -"aNB" = (/obj/structure/lattice,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/space,/area/hallway/secondary/entry{name = "Arrivals"}) +"aNB" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) "aNC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aND" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/crew_quarters/fitness) "aNG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aNI" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aNI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) "aNJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "aNL" = (/turf/simulated/wall/r_wall,/area/engine/chiefs_office) "aNM" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 5},/obj/item/weapon/pen,/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering) "aNN" = (/obj/machinery/power/apc{dir = 2; name = "Supply Offices APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aNO" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) +"aNO" = (/obj/machinery/door/poddoor{id = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aNP" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNQ" = (/obj/machinery/door/airlock/external{name = "South Containment Arm Access"},/turf/simulated/floor/plating,/area/engine/engineering) "aNR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "aNS" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "aNT" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering) "aNU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) -"aNV" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/engine/break_room) -"aNW" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 29; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/break_room) +"aNV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) +"aNW" = (/obj/machinery/power/port_gen/pacman,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aNX" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/turf/simulated/floor{icon_state = "neutral"},/area/engine/chiefs_office) "aNY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) "aNZ" = (/obj/item/weapon/screwdriver,/obj/structure/lattice,/turf/space,/area) -"aOa" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor{icon_state = "neutral"},/area/engine/break_room) +"aOa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aOb" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "aOc" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/hazardvest,/turf/simulated/floor,/area/construction) "aOd" = (/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -5; req_access_txt = "10"},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; req_access_txt = "24"},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2086,14 +2086,14 @@ "aOf" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "aOg" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aOh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aOi" = (/obj/structure/closet/toolcloset,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) -"aOj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/tools) +"aOi" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/item/weapon/wrench,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aOj" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aOk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) "aOl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) "aOm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aOn" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm) "aOo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/secure_data,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aOp" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aOp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Dorms Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "aOq" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) "aOr" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aOs" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) @@ -2117,16 +2117,16 @@ "aOK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central) "aOL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aOM" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aON" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aON" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "CE Office APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aOO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central) -"aOP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/heads) +"aOP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aOQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/hallway/primary/central) "aOR" = (/obj/machinery/light_switch{pixel_x = -38},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) "aOS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) "aOT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/quartermaster/storage) "aOU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/quartermaster/storage) "aOV" = (/obj/structure/stool/bed/chair/office/dark{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) -"aOW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aOW" = (/obj/structure/table,/obj/structure/flora/kirbyplants{desc = "A living potted plant."; name = "Photosynthetic Potted Plant"; pixel_y = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aOX" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/space,/area) "aOY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "aOZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -2156,7 +2156,7 @@ "aPx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aPy" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aPz" = (/obj/machinery/computer/supplycomp,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aPA" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/lighter/zippo,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"aPA" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aPB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/entry{name = "Arrivals"}) "aPC" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aPD" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2193,7 +2193,7 @@ "aQi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "aQj" = (/obj/machinery/computer/secure_data,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "aQk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) -"aQl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aQl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Tech Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aQm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard) "aQn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aQo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -2202,7 +2202,7 @@ "aQr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aQs" = (/turf/simulated/floor/plating,/area/maintenance/starboard) "aQt" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) -"aQu" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aQu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aQv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aQw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/engine/chiefs_office) "aQx" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2212,23 +2212,23 @@ "aQB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aQC" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aQD" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"aQE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) -"aQF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/tools) +"aQE" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"aQF" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor{icon_state = "neutral"},/area/engine/chiefs_office) "aQG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tech) "aQH" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/crew{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/card{pixel_x = 2; pixel_y = -2},/obj/item/weapon/circuitboard/communications{pixel_x = 5; pixel_y = -5},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aQI" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/engine/engineering) "aQJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) -"aQK" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aQK" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 29; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aQL" = (/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aQM" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aQN" = (/turf/simulated/wall,/area/hallway/secondary/entry{name = "Arrivals"}) "aQO" = (/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "aQP" = (/obj/machinery/light_construct,/turf/simulated/floor,/area/construction) "aQQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aQR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/construction) -"aQS" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/multitool,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) +"aQR" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"aQS" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aQT" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) -"aQU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aQU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aQV" = (/turf/simulated/wall,/area/security/checkpoint/supply) "aQW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aQX" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) @@ -2242,12 +2242,12 @@ "aRf" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engineering) "aRg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aRh" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Security APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) -"aRi" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) +"aRi" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder/yellow,/obj/structure/table,/obj/machinery/camera{c_tag = "Bridge - Central"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "aRj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/security/checkpoint/engineering) "aRk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "aRl" = (/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor/plating,/area/engine/engineering) "aRm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aRn" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aRn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aRo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/janitor) "aRp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aRq" = (/obj/machinery/door/airlock{name = "Central Emergency Storage"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -2260,21 +2260,21 @@ "aRx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/hallway/primary/port) "aRy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "aRz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"aRA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) +"aRA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aRC" = (/obj/structure/lattice,/obj/structure/grille,/turf/simulated/wall/r_wall,/area) "aRD" = (/obj/structure/grille,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area) "aRE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge) -"aRF" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/wood,/area/bridge) +"aRF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRG" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aRI" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) -"aRJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/storage) -"aRK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/storage) +"aRJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2{name = "Customs"}) +"aRK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRL" = (/obj/structure/closet/crate,/obj/item/device/assembly/prox_sensor,/turf/simulated/floor/plating,/area/maintenance/starboard) "aRM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall,/area/maintenance/storage) -"aRN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/storage) -"aRO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/storage) +"aRN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) +"aRO" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint2{name = "Customs"}) "aRP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aRQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall,/area/maintenance/storage) "aRR" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) @@ -2285,12 +2285,12 @@ "aRW" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aRX" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter/zippo,/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aRY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aRZ" = (/obj/item/weapon/packageWrap,/obj/item/weapon/reagent_containers/glass/rag{pixel_y = 5},/obj/structure/table,/obj/structure/sign/maltesefalcon/left{pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aRZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) "aSa" = (/turf/simulated/wall,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSb" = (/obj/machinery/camera{c_tag = "Bar"; dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aSb" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aSc" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aSd" = (/obj/structure/table,/obj/structure/sign/maltesefalcon/right{pixel_y = 32},/obj/item/weapon/book/manual/barman_recipes{pixel_y = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSe" = (/obj/structure/closet/secure_closet/cargotech,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aSe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aSf" = (/obj/machinery/light,/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aSg" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area) "aSh" = (/obj/machinery/door/airlock/external{name = "Escape Pod One"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2306,20 +2306,20 @@ "aSr" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "aSs" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "aSt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) -"aSv" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) +"aSu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aSv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/effect/landmark/start{name = "Captain"},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aSw" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/bridge) "aSx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSy" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/supply) "aSz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSA" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aSB" = (/obj/item/device/radio/beacon,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aSA" = (/obj/structure/rack,/obj/machinery/cell_charger,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aSB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) "aSC" = (/obj/structure/table,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) -"aSD" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aSD" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = -29; pixel_y = 0},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/camera{c_tag = "Custodial Closet"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aSE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "aSF" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aSG" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2{name = "Customs"}) -"aSH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aSH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Supply Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aSI" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)"; icon_state = "comfychair_brown"; dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aSJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/hos) "aSK" = (/obj/machinery/hologram/holopad,/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/carpet,/area/security/hos) @@ -2332,61 +2332,61 @@ "aSR" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) "aSS" = (/obj/machinery/atmospherics/pipe/vent{dir = 1},/turf/simulated/floor/plating/airless,/area) "aST" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"aSU" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"aSU" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Primary AI Base"},/area/turret_protected/ai) "aSV" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair_beige"; tag = ""},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "aSW" = (/turf/simulated/wall,/area/hallway/primary/port) "aSX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aSY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aSZ" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/starboard) "aTa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) -"aTb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aTb" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aTc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aTd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aTe" = (/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/port) -"aTf" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) +"aTf" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/hallway/primary/central) "aTg" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "aTh" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/starboard) "aTi" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/port) "aTj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aTk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/engine/break_room) -"aTl" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) +"aTk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) +"aTl" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aTm" = (/turf/simulated/wall/r_wall,/area/engine/break_room) "aTn" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aTo" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aTp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aTq" = (/obj/structure/rack,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"aTq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/port) "aTr" = (/obj/machinery/door/airlock/command{name = "Command Desk"; req_access = null; req_access_txt = "19"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"aTs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aTx" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aTs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Auxiliary Tool Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aTt" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Engineering"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aTu" = (/obj/machinery/autolathe,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTv" = (/obj/structure/table,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTw" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/camera{c_tag = "Mailroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTx" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aTy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"aTz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) +"aTz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "aTA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aTB" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge) -"aTC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/engine/break_room) +"aTC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "aTD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "63"},/turf/simulated/floor,/area/security/checkpoint/supply) "aTE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply) "aTF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/checkpoint/supply) "aTG" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/security/checkpoint/supply) "aTH" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/computer/security/mining,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/supply) "aTI" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"aTJ" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/space,/area) -"aTK" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) +"aTJ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/hologram/holopad,/obj/machinery/camera/autoname{c_tag = "Engineering SMES Room"; dir = 8; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aTK" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/hologram/holopad,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aTL" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central) -"aTM" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"aTN" = (/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"aTM" = (/obj/structure/rack,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/engineering_construction{pixel_x = 0; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/starboard) +"aTN" = (/obj/structure/rack,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/starboard) "aTO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"aTP" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) -"aTQ" = (/obj/structure/transit_tube,/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) -"aTR" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) +"aTP" = (/obj/structure/table,/obj/structure/sign/maltesefalcon/left{pixel_y = 32},/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aTQ" = (/obj/machinery/camera{c_tag = "Bar"; dir = 2; network = list("SS13")},/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag{pixel_y = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aTR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/turf/simulated/floor,/area/janitor) "aTS" = (/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aTT" = (/obj/machinery/vending/boozeomat,/turf/simulated/wall,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aTU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aTV" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aTW" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aTV" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/off{pixel_y = 4},/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aTW" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/obj/item/weapon/folder/blue,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aTX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "aTY" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "aTZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -2395,7 +2395,7 @@ "aUc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aUd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/storage) "aUe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUf" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUf" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) "aUg" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "aUh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) "aUi" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2410,45 +2410,45 @@ "aUr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aUs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) -"aUu" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aUu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aUv" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/maintenance/storage) "aUw" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aUx" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aUy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aUz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aUA" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aUx" = (/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"aUy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"aUz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aUA" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 28},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aUB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aUC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aUD" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aUE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aUF" = (/obj/item/weapon/phone{desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table/reinforced,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "grimy"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aUE" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 1; name = "MiniSat Teleporter APC"; pixel_x = 0; pixel_y = 29},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"aUF" = (/obj/item/device/radio/beacon,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aUG" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor,/area/crew_quarters/heads) "aUH" = (/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"aUI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aUI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Courtroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUJ" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) -"aUK" = (/obj/structure/table/reinforced,/obj/machinery/power/apc{aidisabled = 0; dir = 2; name = "Satellite Interior APC"; pixel_y = -24},/obj/structure/cable,/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aUK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aUL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aUM" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUN" = (/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore-Starboard Corner"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUO" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUP" = (/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUP" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aUQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"aUR" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore-Port Corner"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) -"aUT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUU" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aUT" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aUU" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "aUV" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aUW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/maintenance/storage) "aUX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Vacant Office"; opacity = 1; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/security/vacantoffice) "aUY" = (/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "aUZ" = (/obj/machinery/door/morgue{name = "Study #2"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVa" = (/turf/simulated/wall,/area/hallway/primary/starboard) -"aVb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aVb" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "aVc" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/supply) "aVd" = (/obj/machinery/door/morgue{name = "Study #1"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVe" = (/obj/machinery/photocopier{pixel_y = 3},/turf/simulated/floor/wood,/area/library) "aVf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"aVg" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aVg" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "aVh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "aVi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "aVj" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) @@ -2472,7 +2472,7 @@ "aVB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central) "aVC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "aVD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aVE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aVE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aVF" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "aVG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/maintenance/storage) "aVH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2493,7 +2493,7 @@ "aVW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVX" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVY" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aVZ" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 24; req_access_txt = "24"},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) +"aVZ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) "aWa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aWb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "aWc" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply) @@ -2502,10 +2502,10 @@ "aWf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) "aWg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aWh" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aWi" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aWj" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWi" = (/obj/structure/closet/toolcloset,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) +"aWj" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aWk" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) -"aWl" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "aWn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWo" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2531,7 +2531,7 @@ "aWI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "aWJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aWK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central) -"aWL" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/hos) "aWN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L4"},/area/hallway/primary/central) "aWO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -2544,26 +2544,26 @@ "aWV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central) "aWW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/central) "aWX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/central) -"aWY" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aWZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/hallway/primary/port) -"aXa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) -"aXb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"aWY" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; layer = 2.9; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aXa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/light/small{dir = 4},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aXc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/library) -"aXd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/storage/tools) +"aXd" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aXe" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) -"aXf" = (/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"aXf" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aXg" = (/turf/simulated/floor{icon_state = "neutral"; dir = 10},/area/hallway/primary/port) "aXh" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/port) -"aXi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXi" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) "aXj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXk" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aXl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aXm" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = -32},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"aXm" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/port) "aXn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/port) "aXo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aXp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) -"aXq" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) -"aXr" = (/obj/machinery/door/window/southright{dir = 4; name = "Bar Door"; req_access_txt = "0"; req_one_access_txt = "25;28"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aXq" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/space,/area) +"aXr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) "aXs" = (/mob/living/carbon/monkey{name = "Pun Pun"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aXt" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/primary/central) "aXu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) @@ -2576,15 +2576,15 @@ "aXB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "hopflash"; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "aXC" = (/obj/machinery/power/apc{dir = 1; name = "Theatre APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aXD" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) -"aXE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aXE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 8; network = list("SS13")},/obj/structure/rack,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) "aXF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aXG" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aXH" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXI" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aXG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/item/clothing/gloves/fyellow,/obj/item/clothing/suit/hazardvest,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) +"aXH" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) +"aXI" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Supply Foyer"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aXJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "aXK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aXL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aXN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "20;12"},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aXO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aXP" = (/obj/structure/piano,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -2599,9 +2599,9 @@ "aXY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) "aXZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/port) "aYa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) -"aYb" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"aYb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "aYc" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 6; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"aYd" = (/obj/machinery/power/apc{dir = 1; name = "Port Hallway APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"aYd" = (/obj/structure/transit_tube{tag = "icon-W-NE"; icon_state = "W-NE"},/obj/structure/lattice,/turf/space,/area) "aYe" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/computer/station_alert,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "aYf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/storage) "aYg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -2611,56 +2611,56 @@ "aYk" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) "aYl" = (/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "aYm" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table,/turf/simulated/floor{icon_state = "caution"; dir = 5},/area/maintenance/storage) -"aYn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/maintenance/storage) +"aYn" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "aYo" = (/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aYp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "aYq" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Librarian"},/turf/simulated/floor/wood,/area/library) "aYr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"aYs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor,/area/maintenance/storage) +"aYs" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "aYt" = (/turf/simulated/wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aYu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/hos) -"aYv" = (/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -28; pixel_y = -3; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "showroomfloor"},/area) +"aYv" = (/obj/structure/rack,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "aYw" = (/obj/structure/table/woodentable,/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) -"aYx" = (/obj/machinery/teleport/hub,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aYx" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) "aYy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) -"aYz" = (/obj/machinery/computer/teleporter,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aYA" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aYz" = (/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/rack,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/mask/gas,/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"aYA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aYB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/crew_quarters/heads) "aYC" = (/obj/item/weapon/cigbutt,/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Port Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aYD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark/start{name = "Janitor"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) -"aYE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"aYE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aYF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/port) "aYG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "aYH" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/firecloset,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "aYI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/port) "aYJ" = (/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 0},/obj/structure/table/woodentable,/obj/item/weapon/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/ids,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aYK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"aYK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aYL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "aYM" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "aYN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "aYO" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "aYP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aYQ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aYR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aYS" = (/obj/machinery/door/airlock/hatch{name = "Internal Control"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aYT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aYR" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"aYS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aYT" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "aYU" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/bridge) "aYV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; name = "Unfiltered & Air to Mix"; on = 1},/turf/simulated/floor,/area/maintenance/storage) -"aYW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aYX" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aYY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aYW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) +"aYX" = (/obj/structure/stool/bed/chair,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aYY" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 3; pixel_y = -3},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aYZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aZa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aZa" = (/obj/machinery/recharge_station,/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "aZb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/break_room) "aZc" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) "aZd" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/port) -"aZe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aZf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aZe" = (/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"aZf" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aZg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aZh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aZk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aZk" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZl" = (/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "aZm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aZn" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/item/weapon/folder/yellow,/turf/simulated/floor/wood,/area/bridge) @@ -2669,51 +2669,51 @@ "aZq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aZr" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aZs" = (/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aZt" = (/obj/machinery/door/airlock/hatch{name = "Internal Access"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aZt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZu" = (/obj/structure/table/woodentable,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/item/weapon/book/manual/security_space_law{pixel_y = 3},/turf/simulated/floor/wood,/area/bridge) -"aZv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) -"aZw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"aZv" = (/obj/machinery/door/airlock/hatch{name = "Telecomms Control Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"aZw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aZx" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) -"aZy" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aZy" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecomms Control APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/server{network = "tcommsat"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZz" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 2; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aZA" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aZB" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/maintenance/storage) -"aZC" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) -"aZD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aZE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aZF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"aZG" = (/obj/machinery/door/airlock/hatch{name = "Internal Access"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aZC" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aZD" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aZE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aZF" = (/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"aZG" = (/obj/machinery/vending/cigarette,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "aZH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"aZI" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) -"aZJ" = (/obj/structure/transit_tube{tag = "icon-W-NE-SE"; icon_state = "W-NE-SE"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) +"aZI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"aZJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/storage) "aZK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central) "aZL" = (/turf/simulated/wall,/area/hallway/primary/central) "aZM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "aZN" = (/turf/simulated/wall,/area/janitor) -"aZO" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"aZO" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Bridge - Starboard Access"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) "aZP" = (/turf/simulated/wall/r_wall,/area/bridge) -"aZQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aZR" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) -"aZS" = (/obj/structure/lattice,/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) +"aZQ" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Council Chamber"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/bridge) +"aZR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/storage) +"aZS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZT" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aZU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aZV" = (/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area) -"aZW" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/space,/area) -"aZX" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) +"aZV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aZW" = (/obj/machinery/teleport/hub,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"aZX" = (/obj/machinery/computer/teleporter,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZY" = (/obj/machinery/atmospherics/pipe/manifold{tag = "icon-manifold-r (EAST)"; icon_state = "manifold-r"; dir = 4; level = 2; pipe_color = "red"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) -"aZZ" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) +"aZZ" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "baa" = (/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bab" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"bac" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) +"bac" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bad" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bae" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "baf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "transittube"; name = "Transit Tube Blast Door"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) -"bag" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) +"bag" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bah" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/central) -"bai" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room) -"baj" = (/obj/machinery/vending/cola,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bai" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"baj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) "bak" = (/turf/simulated/floor{icon_state = "warning"},/area/engine/break_room) -"bal" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/break_room) +"bal" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bam" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "ban" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{dir = 4; icon_state = "escape"},/area/maintenance/storage) "bao" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2725,7 +2725,7 @@ "bau" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bav" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "baw" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"bax" = (/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"bax" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Auxiliary Bathrooms"; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bay" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/quartermaster/storage) "baz" = (/obj/machinery/reagentgrinder,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "baA" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/shuttle/arrival/station) @@ -2740,7 +2740,7 @@ "baJ" = (/obj/machinery/power/apc{dir = 1; name = "Customs APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "baK" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "baL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) -"baM" = (/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/photocopier,/turf/simulated/floor,/area/storage/art) +"baM" = (/obj/machinery/photocopier{pixel_y = 3},/turf/simulated/floor/wood,/area/crew_quarters/heads) "baN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "baO" = (/obj/structure/closet/jcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "baP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/storage/art) @@ -2780,7 +2780,7 @@ "bbx" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/space,/area) "bby" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/hallway/primary/central) "bbz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) -"bbA" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 9e+006; chargelevel = 80000; output = 80000},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bbA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bbB" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bbC" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/woodentable,/obj/item/weapon/pinpointer,/obj/item/weapon/disk/nuclear,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bbD" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2789,32 +2789,32 @@ "bbG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bbH" = (/obj/structure/transit_tube{tag = "icon-S-NW"; icon_state = "S-NW"},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bbI" = (/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) -"bbJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/storage/tools) -"bbK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/tools) +"bbJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"bbK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = -32},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "bbL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central) "bbM" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/starboard) "bbN" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/starboard) "bbO" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bbP" = (/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bbP" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bbQ" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/space,/area) "bbR" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/hallway/primary/central) "bbS" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/space,/area) -"bbT" = (/obj/machinery/light/small{dir = 8},/obj/machinery/porta_turret,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bbT" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bbU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage) "bbV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"bbW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bbW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bbX" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bbY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bbZ" = (/obj/machinery/light/small{dir = 1},/obj/machinery/porta_turret,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bbY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/hatch{name = "MiniSat East Wing"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bbZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bca" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) -"bcb" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bcc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bcd" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 28},/obj/structure/rack,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bcb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bcc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bcd" = (/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 4; name = "MiniSat East Wing APC"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bce" = (/turf/simulated/floor/plating,/area/engine/break_room) -"bcf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bcf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bcg" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "bch" = (/obj/structure/closet/l3closet/janitor,/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) -"bci" = (/obj/machinery/light/small{dir = 4},/obj/machinery/porta_turret,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bci" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bcj" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/shuttle/arrival/station) "bck" = (/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bcl" = (/obj/machinery/computer/arcade,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) @@ -2824,13 +2824,13 @@ "bcp" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bcq" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/arrival/station) "bcr" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (WEST)"; icon_state = "burst_r"; dir = 8},/turf/space,/area/shuttle/arrival/station) -"bcs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bcs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bct" = (/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) "bcu" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area) -"bcv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) -"bcw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) +"bcv" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"bcw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "bcx" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) -"bcy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) +"bcy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bcz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2{name = "Customs"}) "bcA" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "bcB" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/heads) @@ -2841,25 +2841,25 @@ "bcG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bcH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/wood,/area/bridge) "bcI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) -"bcJ" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"bcJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) "bcK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/quartermaster/storage) "bcL" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) -"bcM" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) +"bcM" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bcN" = (/obj/structure/table,/obj/item/trash/syndi_cakes{pixel_y = 4},/turf/simulated/floor,/area/engine/break_room) "bcO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) -"bcP" = (/obj/structure/table,/obj/item/trash/raisins{pixel_y = 7},/turf/simulated/floor,/area/engine/break_room) +"bcP" = (/obj/machinery/door/window/southright{dir = 4; name = "Bar Door"; pixel_x = -3; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "25;28"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bcQ" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/break_room) "bcR" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko,/turf/simulated/floor,/area/engine/break_room) "bcS" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard) "bcT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/storage/art) "bcU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorengglass.dmi'; name = "Art Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/art) "bcV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/break_room) -"bcW" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/engine/break_room) +"bcW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/camera{c_tag = "Port Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) "bcX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/break_room) "bcY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room) "bcZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 6},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/hallway/primary/starboard) "bda" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Foyer"; req_access_txt = "0"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/break_room) -"bdb" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) +"bdb" = (/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 2; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bdd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bde" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge) @@ -2876,9 +2876,9 @@ "bdp" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/filingcabinet{pixel_x = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdq" = (/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdr" = (/obj/machinery/door/window/westright,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bds" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/effect/landmark/start{name = "Captain"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bds" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bdt" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorint.dmi'; name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bdu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) +"bdu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engine/break_room) "bdv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bdw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bdx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2891,9 +2891,9 @@ "bdE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "19"},/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = -34; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge) "bdF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/hallway/primary/port) "bdG" = (/obj/machinery/computer/security/telescreen{name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/obj/machinery/light{dir = 1},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bdH" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/paper,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bdH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/engineering) -"bdJ" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bdJ" = (/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bdK" = (/turf/simulated/floor/carpet,/area/hallway/primary/port) "bdL" = (/obj/machinery/computer/security/mining,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bdM" = (/turf/simulated/wall,/area/construction/Storage{name = "Storage Wing"}) @@ -2901,17 +2901,17 @@ "bdO" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Research Division"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/aft{name = "Aft Maintenance"}) "bdP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "bdQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"bdR" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/obj/item/weapon/pen/blue,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bdS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bdT" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bdU" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bdV" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bdW" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bdR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bdS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bdT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bdU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bdV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Central Foyer"; req_one_access_txt = "32;19"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bdW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bdX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bdY" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bdZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bea" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"beb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bdY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bdZ" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bea" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) +"beb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bec" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/arrival/station) "bed" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bee" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/arrival/station) @@ -2919,22 +2919,22 @@ "beg" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/arrival/station) "beh" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/arrival/station) "bei" = (/obj/machinery/computer/ordercomp,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/crew_quarters/heads) -"bej" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bej" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bek" = (/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) -"bel" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"bel" = (/obj/machinery/recharge_station,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bem" = (/obj/item/weapon/paper,/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) -"ben" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) +"ben" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "beo" = (/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) "bep" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 1; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"beq" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"ber" = (/obj/machinery/light/small{dir = 8},/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air{pixel_x = 5; pixel_y = -2},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"beq" = (/obj/machinery/computer/security/telescreen{dir = 8; name = "Telecoms Camera Monitor"; network = list("tcomm"); pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"ber" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bes" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bet" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) "beu" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "bev" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bew" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "bex" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bey" = (/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bey" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) "bez" = (/obj/structure/transit_tube{tag = "icon-NW-SE"; icon_state = "NW-SE"},/turf/space,/area) "beA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) "beB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) @@ -2942,7 +2942,7 @@ "beD" = (/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/starboard) "beE" = (/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/starboard) "beF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/starboard) -"beG" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"beG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) "beH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) "beI" = (/obj/structure/table,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/turf/simulated/floor,/area/storage/art) "beJ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/bridge) @@ -2963,7 +2963,7 @@ "beY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "beZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 4; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) "bfa" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) -"bfb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bfb" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Atmospherics"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) "bfc" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "bfd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/carpet,/area/bridge) "bfe" = (/obj/structure/transit_tube{tag = "icon-N-SE"; icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) @@ -2971,16 +2971,16 @@ "bfg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/bridge) "bfh" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge) "bfi" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/photo_album{pixel_y = -4},/obj/item/device/camera{pixel_y = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bfj" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/space,/area) +"bfj" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) "bfk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bfl" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bfm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/bridge) -"bfn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "caution"},/area/engine/break_room) -"bfo" = (/turf/simulated/floor{dir = 2; icon_state = "caution"},/area/engine/break_room) +"bfn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/break_room) +"bfo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/break_room) "bfp" = (/turf/simulated/floor{dir = 10; icon_state = "caution"},/area/engine/break_room) -"bfq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bfr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "caution"},/area/engine/break_room) -"bfs" = (/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bfq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "warning"},/area/engine/break_room) +"bfr" = (/obj/structure/table/woodentable,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"bfs" = (/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat West Wing"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bft" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #3"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/bot/mulebot{home_destination = "QM #3"; suffix = "#3"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) "bfu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/port) "bfv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 3},/turf/simulated/floor,/area/hallway/primary/port) @@ -2990,39 +2990,39 @@ "bfz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "bfA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "bfB" = (/obj/structure/table,/obj/machinery/light_switch{pixel_y = -25},/obj/item/toy/prize/marauder{pixel_y = 10},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) -"bfC" = (/obj/machinery/door/airlock/hatch{name = "Telecomms"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bfC" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfD" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"bfE" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/hallway/primary/port) -"bfF" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet,/area/hallway/primary/port) -"bfG" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/turf/simulated/floor,/area/janitor) -"bfH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bfI" = (/obj/machinery/door/airlock/hatch{name = "Internal Access"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bfE" = (/obj/structure/transit_tube,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) +"bfF" = (/obj/structure/transit_tube{tag = "icon-W-NE-SE"; icon_state = "W-NE-SE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) +"bfG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) +"bfH" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) +"bfI" = (/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfJ" = (/obj/machinery/computer/message_monitor,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "bfK" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "bfL" = (/obj/structure/transit_tube/station{tag = "icon-closed (EAST)"; icon_state = "closed"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bfM" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "N2O to Pure"; on = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 5; icon_state = "escape"},/area/maintenance/storage) "bfN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bfO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bfO" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) "bfQ" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"bfR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bfR" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "bfT" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/clothing/mask/horsehead,/obj/item/clothing/mask/muzzle/gag,/obj/machinery/light_switch{pixel_x = -23; pixel_y = -11},/turf/simulated/floor/wood,/area/crew_quarters/theatre) -"bfU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) +"bfU" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2{name = "Customs"}) -"bfW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bfX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bfY" = (/obj/machinery/door/airlock/hatch{name = "Internal Control"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bfW" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bfX" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals Middle Arm Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bfY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bfZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 1; icon_state = "manifold-y"; level = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/maintenance/storage) -"bga" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bga" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "transittube"; name = "Transit Tube Blast Door"; opacity = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "bgb" = (/obj/machinery/vending/autodrobe,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/theatre) -"bgc" = (/obj/machinery/door/airlock/hatch{name = "Internal Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bgc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "bgd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"bge" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bge" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/hallway/primary/port) "bgf" = (/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) -"bgg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bgg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/break_room) "bgh" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 6; icon_state = "intact-y"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) -"bgi" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bgi" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/photocopier,/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/storage/art) "bgj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "bgk" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "25"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bgl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -3053,11 +3053,11 @@ "bgK" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor,/area/storage/art) "bgL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bgM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) -"bgN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bgN" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/obj/machinery/power/apc{aidisabled = 0; dir = 4; name = "MiniSat Central Foyer APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 29},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bgO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "bgP" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bgQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "blackcorner"},/area/hallway/primary/starboard) -"bgR" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) +"bgR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "bgS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/starboard) "bgT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/break_room) "bgU" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/table,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) @@ -3069,28 +3069,28 @@ "bha" = (/obj/item/device/assembly/prox_sensor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bhb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bhc" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) -"bhd" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) +"bhd" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhe" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bhf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bhg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"bhh" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) -"bhi" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/space,/area) +"bhh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table,/obj/machinery/alarm{pixel_y = 26},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bhi" = (/obj/machinery/light/small{dir = 8},/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/engine/break_room) "bhk" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station) "bhl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bhm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bhn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) -"bho" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "Engineering Foyer APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engine/break_room) -"bhp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room) -"bhq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/break_room) +"bho" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/computer/security/telescreen{dir = 2; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bhp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"bhq" = (/obj/machinery/light/small{dir = 4},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 4; name = "MiniSat West Wing APC"; pixel_x = 29; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) -"bhs" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/break_room) -"bht" = (/obj/structure/closet/firecloset,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bhu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/crew_quarters/fitness) +"bhs" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"bht" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) +"bhu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/engine/break_room) "bhv" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness) "bhw" = (/turf/simulated/floor,/area/crew_quarters/fitness) "bhx" = (/obj/machinery/vending/tool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bhy" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) +"bhy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bhz" = (/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating,/area/engine/engineering) "bhA" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating,/area/engine/engineering) "bhB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) @@ -3105,7 +3105,7 @@ "bhK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Vault Storage"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/construction/Storage{name = "Storage Wing"}) "bhL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "bhM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"bhN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai) +"bhN" = (/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bhO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bhP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bhQ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -3113,16 +3113,16 @@ "bhS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "bhT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "bhU" = (/obj/machinery/door/window/westleft{dir = 4; name = "Bridge Deliveries"; req_access_txt = "19"},/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/turf/simulated/floor{icon_state = "delivery"},/area/bridge) -"bhV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bhW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecomms Control APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/server{network = "tcommsat"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bhX" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bhV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) +"bhW" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bhX" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/structure/rack,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhY" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bhZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bia" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "bib" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bic" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bid" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"bie" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) +"bie" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bif" = (/obj/machinery/door/airlock/silver{name = "Bathroom"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "big" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bih" = (/obj/machinery/door/poddoor/shutters{id = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -3131,20 +3131,20 @@ "bik" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bil" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=13-Engineering"; location = "12-Central-Starboard"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "bim" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"bin" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bio" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) +"bin" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bio" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Arrivals Middle Arm"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bip" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "biq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bir" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) "bis" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bit" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"biu" = (/obj/structure/closet/lawcloset,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/lawoffice) +"biu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "biv" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/crew_quarters/courtroom) "biw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bix" = (/obj/machinery/computer/telecomms/traffic{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "biy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "biz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"biA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"biA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "biB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "biC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "biD" = (/obj/structure/stool/bed/chair{name = "Bailiff"},/turf/simulated/floor,/area/crew_quarters/courtroom) @@ -3152,7 +3152,7 @@ "biF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "biG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "biH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"biI" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"biI" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Atmospherics Control Room"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "biJ" = (/turf/simulated/wall,/area/maintenance/storage) "biK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/maintenance/storage) "biL" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) @@ -3174,33 +3174,33 @@ "bjb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) "bjc" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/engine/engineering) "bjd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/engineering) -"bje" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) -"bjf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bje" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/camera{c_tag = "Atmospherics Entrance"; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"bjf" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/weapon/table_parts,/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bjg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/primary) "bjh" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/vending/coffee{pixel_x = 1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "bji" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/vending/cigarette{pixel_x = -1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "bjj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/primary) "bjk" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bjl" = (/turf/simulated/wall/r_wall,/area/storage/primary) -"bjm" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bjm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "caution"},/area/engine/break_room) "bjn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "bjo" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock) "bjp" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/miningdock) "bjq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/primary) -"bjr" = (/obj/machinery/computer/security/telescreen{dir = 8; name = "Telecoms Camera Monitor"; network = list("tcomm"); pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bjr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "caution"},/area/engine/break_room) "bjs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/storage/primary) "bjt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/turf/simulated/floor,/area/storage/primary) "bju" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bjv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/courtroom) "bjw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) -"bjx" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/lawoffice) -"bjy" = (/obj/machinery/light{dir = 8},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) +"bjx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) +"bjy" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "bjz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/lawoffice) "bjA" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bjB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b"; level = 2; tag = "icon-manifold-b (NORTH)"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b"; level = 2; tag = "icon-manifold-b"},/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) -"bjD" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fore) -"bjE" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"bjD" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/transit_tube_pod,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) +"bjE" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 101},/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Atmospherics Distro Loop"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjF" = (/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/crew_quarters/courtroom) "bjG" = (/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bjH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) @@ -3211,7 +3211,7 @@ "bjM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "bjN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/bridge) "bjO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge) -"bjP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bjP" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/hallway/primary/central) "bjR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "bjS" = (/turf/simulated/wall,/area/crew_quarters/theatre) @@ -3229,12 +3229,12 @@ "bke" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) "bkf" = (/obj/structure/table,/obj/item/clothing/under/suit_jacket/female{pixel_x = 3; pixel_y = 1},/obj/item/clothing/under/suit_jacket/really_black{pixel_x = -2; pixel_y = 0},/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bkg" = (/obj/machinery/washing_machine,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/locker) -"bkh" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"bkh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Art Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bki" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bkj" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bkk" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bkl" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) -"bkm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bkm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Port Primary Hallway - Middle"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkn" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/fitness) "bko" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bkp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/fore) @@ -3246,13 +3246,13 @@ "bkv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/courtroom) "bkw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/hallway/primary/fore) "bkx" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/quartermaster/office{name = "\improper Supply Offices"}) -"bky" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) +"bky" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) "bkz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"bkA" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 101},/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"bkA" = (/obj/machinery/power/apc{dir = 1; name = "Port Hallway APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkB" = (/obj/machinery/turret{dir = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bkC" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 2; icon_state = "freezer_0"; on = 1; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bkD" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/arrival/station) -"bkE" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bkE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bkG" = (/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bkH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) @@ -3272,7 +3272,7 @@ "bkV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bkW" = (/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary) "bkX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"bkY" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/storage/primary) +"bkY" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bkZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bla" = (/obj/machinery/door/window/northleft{dir = 4; name = "MuleBot Supply Access"; req_access_txt = "50"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "blb" = (/obj/machinery/atmospherics/pipe/manifold{tag = "icon-manifold-g (EAST)"; icon_state = "manifold-g"; dir = 4; level = 2; pipe_color = "green"},/turf/simulated/floor,/area/maintenance/storage) @@ -3293,7 +3293,7 @@ "blq" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "blr" = (/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bls" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/folder/blue,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"blt" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"blt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Engineering Foyer APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/engine/break_room) "blu" = (/obj/machinery/computer/communications,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "blv" = (/obj/structure/table/woodentable,/obj/machinery/computer/security/wooden_tv{pixel_x = 3; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "blw" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/handcuffs,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) @@ -3322,12 +3322,12 @@ "blT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "blU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "blV" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"blW" = (/obj/structure/table,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/robocop,/obj/item/weapon/aiModule/paladin,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"blW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room) "blX" = (/turf/simulated/floor,/area/maintenance/storage) "blY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) "blZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bma" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"bmb" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/wood,/area/lawoffice) +"bmb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bmc" = (/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bmd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/maintenance/storage) "bme" = (/obj/machinery/space_heater,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) @@ -3338,14 +3338,14 @@ "bmj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/maintenance/storage) "bmk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "green"; dir = 1; icon_state = "manifold-g"; level = 2; tag = "icon-manifold-g (NORTH)"},/turf/simulated/floor,/area/maintenance/storage) "bml" = (/obj/machinery/atmospherics/pipe/simple{tag = "icon-intact-g (SOUTHEAST)"; icon_state = "intact-g"; dir = 6; level = 2; pipe_color = "green"},/turf/simulated/floor,/area/maintenance/storage) -"bmm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) -"bmn" = (/obj/effect/landmark/start{name = "Lawyer"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) -"bmo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/wood,/area/lawoffice) +"bmm" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/break_room) +"bmn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) +"bmo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bmp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bmr" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bms" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bmt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) +"bmt" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Arrivals Station Entrance"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bmu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/turf/simulated/floor/wood,/area/crew_quarters/courtroom) "bmv" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bmw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/storage/primary) @@ -3385,12 +3385,12 @@ "bne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bnf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/device/flash,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) "bng" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bnh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"bnh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bni" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bnj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bnk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) -"bnl" = (/obj/structure/sink{pixel_y = 30},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bnm" = (/obj/structure/sink{pixel_y = 30},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"bnl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bnm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bnn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bno" = (/obj/structure/table/woodentable,/obj/item/weapon/stamp/captain,/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bnp" = (/obj/effect/landmark/start{name = "Captain"},/obj/structure/stool/bed/chair/comfy/brown,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3411,12 +3411,12 @@ "bnE" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "bnF" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bnG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bnH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/fore) +"bnH" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/camera{c_tag = "Bridge - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) "bnI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"bnJ" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/hallway/primary/fore) -"bnK" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/hallway/primary/fore) -"bnL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/hallway/primary/fore) -"bnM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"bnJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Bridge - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bnK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bnL" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bnM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/maintenance/fore) "bnN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "bnO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "bnP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/maintenance/storage) @@ -3435,9 +3435,9 @@ "boc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage) "bod" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage) "boe" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) -"bof" = (/obj/item/device/radio/beacon,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bog" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"boh" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bof" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bog" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Engineering Foyer Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) +"boh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Port Primary Hallway - Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "boi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "boj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bok" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;9"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -3463,13 +3463,13 @@ "boE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "boF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "boG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"boH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"boH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "boI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/engineering) "boJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "boK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "boL" = (/turf/simulated/wall,/area/bridge) "boM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/port) -"boN" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/bridge) +"boN" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "boO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "boP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/structure/rack,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/timer,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge) "boQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) @@ -3494,23 +3494,23 @@ "bpj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/fore) "bpk" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-Gateway"; location = "1-SecurityCheckpoint"},/turf/simulated/floor,/area/hallway/primary/fore) "bpl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/fore) -"bpm" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bpn" = (/obj/machinery/light/small{dir = 8},/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bpm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"bpn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bpo" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/fore) -"bpp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) +"bpp" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -34; req_access_txt = "19"},/obj/machinery/camera{c_tag = "Bridge - Command Chair"; dir = 1; network = list("SS13")},/turf/simulated/floor/carpet,/area/bridge) "bpq" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bpr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/fore) "bps" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/primary/fore) "bpt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-Storage"; location = "1-SecurityCheckpoint"},/turf/simulated/floor,/area/hallway/primary/fore) "bpu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) "bpv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) -"bpw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/fore) -"bpx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/hallway/primary/fore) +"bpw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/newscaster{pixel_x = 28; pixel_y = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bpx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bpy" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) -"bpz" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/fore) -"bpA" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/hallway/primary/fore) +"bpz" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bpA" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bpB" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Mix to Filter"; on = 1},/turf/simulated/floor,/area/maintenance/storage) -"bpC" = (/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fore) +"bpC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bpD" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bpE" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bpF" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) @@ -3524,45 +3524,45 @@ "bpN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "bpO" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bpP" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) -"bpQ" = (/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"bpQ" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bpR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) "bpS" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bpT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bpU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bpV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness) "bpW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bpX" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"bpX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bpY" = (/turf/simulated/wall,/area/chapel/main) "bpZ" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/effect/landmark{name = "blobstart"},/obj/machinery/door_control{id = "Toilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bqa" = (/turf/simulated/wall,/area/library) "bqb" = (/obj/machinery/door/airlock{id_tag = "Toilet2"; name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bqc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/hallway/primary/fore) +"bqc" = (/obj/item/device/radio/beacon,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bqd" = (/obj/item/weapon/book/manual/security_space_law,/obj/machinery/newscaster{hitstaken = 1; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply) -"bqe" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/hallway/primary/fore) -"bqf" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"},/area/hallway/primary/fore) +"bqe" = (/obj/machinery/light/small,/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bqf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bqh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/hallway/primary/fore) +"bqh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) "bqj" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply) -"bqk" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/rack,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/fore) +"bqk" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bql" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/supply) "bqm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bqn" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/power/apc{dir = 1; name = "Quartermaster's Office APC"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm) -"bqo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) -"bqp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bqo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bqp" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bqq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply) "bqr" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/qm) -"bqs" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/fore) +"bqs" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bqt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/bridge) "bqu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall,/area/bridge) -"bqv" = (/obj/machinery/camera/emp_proof{c_tag = "Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) +"bqv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/bridge) "bqx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) "bqy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) "bqz" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bqC" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bqC" = (/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Fore Primary Hallway APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bqE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bqF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central) @@ -3570,24 +3570,24 @@ "bqH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bqI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bqJ" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{pixel_y = 23},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm) -"bqK" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/porta_turret,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bqK" = (/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqM" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "bqO" = (/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"bqR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"bqS" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/security/telescreen{dir = 2; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bqR" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 24; pixel_y = 5},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bqS" = (/obj/structure/window/reinforced,/obj/machinery/power/apc{aidisabled = 0; dir = 2; name = "MiniSat Exterior APC"; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/light,/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqT" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) -"bqU" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"bqU" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/lattice,/turf/space,/area) "bqV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bqW" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bqW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bqX" = (/obj/structure/table,/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = 25; pixel_y = 0; req_access_txt = "11"},/obj/item/weapon/storage/toolbox/electrical{pixel_y = 5},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bqY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bqZ" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/crew_quarters/fitness) "bra" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = -6; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = 4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) -"brb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light_switch{pixel_x = -26},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) +"brb" = (/obj/machinery/light/small{dir = 8},/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air{pixel_x = 5; pixel_y = -2},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "brc" = (/obj/machinery/door/airlock{id_tag = "Toilet4"; name = "Unit 4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "brd" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bre" = (/obj/structure/table,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack{pixel_x = 10; pixel_y = 2},/obj/item/stack/medical/ointment{pixel_y = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -3606,7 +3606,7 @@ "brr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "brs" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "brt" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) -"bru" = (/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) +"bru" = (/obj/machinery/power/apc{dir = 4; name = "Arrivals APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "brv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brw" = (/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "brx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) @@ -3616,17 +3616,17 @@ "brB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"brE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"brE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/port) "brF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "brI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"brJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/port) -"brK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/porta_turret{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"brJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" The station model number is MSv38-L:221111."},/area/hallway/primary/port) +"brK" = (/obj/machinery/hologram/holopad{pixel_y = -16},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/hallway/primary/port) "brL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brM" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) -"brO" = (/obj/structure/window/reinforced,/obj/machinery/light/small,/obj/structure/cable,/obj/machinery/power/apc{aidisabled = 0; dir = 2; name = "Satellite Exterior APC"; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"brO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "brP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/chapel/main) "brQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "brR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/storage/primary) @@ -3643,17 +3643,17 @@ "bsc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood,/area/library) "bsd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "bse" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bsf" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bsf" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera{c_tag = "Arrivals Lounge"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bsg" = (/obj/machinery/door/airlock/maintenance{name = "Tool Storage Maintenance"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/primary) "bsh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/storage/primary) -"bsi" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bsi" = (/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fore) "bsj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) "bsk" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/rack,/obj/item/weapon/storage/secure/briefcase,/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) "bsl" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/crew_quarters/locker) "bsm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsn" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/item/weapon/pen/red,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/qm) "bso" = (/obj/effect/landmark/start{name = "Quartermaster"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) -"bsp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bsp" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bsq" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/bridge) "bsr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bss" = (/turf/simulated/floor/wood,/area/bridge) @@ -3661,12 +3661,12 @@ "bsu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bsv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Locker Room APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) -"bsx" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"bsx" = (/obj/machinery/vending/cola,/obj/machinery/newscaster{pixel_x = -28; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) "bsy" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) "bsz" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsB" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bsC" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bsC" = (/obj/machinery/turretid{control_area = "\improper MiniSat East Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat East Wing turret control"; pixel_x = 24; pixel_y = -26},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bsD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bsE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsF" = (/obj/machinery/door/airlock/command{name = "Emergency Escape"; req_access = null; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3677,7 +3677,7 @@ "bsK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bsL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bsM" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bsN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bsN" = (/obj/machinery/turretid{control_area = "\improper MiniSat Central Foyer"; enabled = 0; icon_state = "motion0"; name = "MiniSat Central Foyer turret control"; pixel_x = 25; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bsO" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/starboard) "bsP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsQ" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -3687,7 +3687,7 @@ "bsU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/quartermaster/qm) "bsV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "bsW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/maintenance/storage) -"bsX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" The station model number is MSv38-K:141111."},/area/hallway/primary/port) +"bsX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat West Wing"; req_one_access_txt = "32;19"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bsY" = (/obj/structure/rack,/obj/item/device/aicard,/obj/item/device/radio/off,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge) "bsZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/engineering) "bta" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -3696,26 +3696,26 @@ "btd" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes{capacity = 9e+006; charge = 1e+006; chargelevel = 50000; chargemode = 1; charging = 1; output = 50000},/obj/machinery/light_switch{pixel_x = -24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) "bte" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) "btf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"btg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bth" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bti" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) -"btj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) +"btg" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/vending/coffee,/obj/machinery/camera{c_tag = "Engineering Foyer Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) +"bth" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) +"bti" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing - Security Access Door"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) +"btj" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage Wing Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "btk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "btl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) -"btm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) +"btm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "btn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) "bto" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "btp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) -"btq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) +"btq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Cargo Bay Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) "btr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "bts" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "btt" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/fyellow,/obj/machinery/light/small,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "btu" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Distro to Waste"; on = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) -"btv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) +"btv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "btw" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "btx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/storage/primary) "bty" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"btz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/primary/central) +"btz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "btA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "btB" = (/turf/simulated/floor/carpet,/area/chapel/main) "btC" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/machinery/power/apc{dir = 2; name = "Tool Storage APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/storage/primary) @@ -3739,24 +3739,24 @@ "btU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "btV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Council Chamber"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) "btW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) -"btX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"btX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/lawoffice) "btY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "btZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bua" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bub" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bub" = (/obj/machinery/door/window{dir = 1; name = "glass door"; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/security/detectives_office) "buc" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)"; icon_state = "comfychair_brown"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bud" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bue" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/construction) "buf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) -"bug" = (/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"bug" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "buh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fore Primary Hallway"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bui" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fore Primary Hallway"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "buj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "buk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai_upload_foyer) -"bul" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/carpet,/area/hallway/primary/port) +"bul" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bum" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bun" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"buo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"buo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bup" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) "buq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) "bur" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) @@ -3796,7 +3796,7 @@ "buZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central) "bva" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/library) "bvb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bvc" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) +"bvc" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/turf/simulated/floor/wood,/area/lawoffice) "bvd" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bve" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) "bvf" = (/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3805,14 +3805,14 @@ "bvi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bvj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bvk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/wood,/area/bridge) -"bvl" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 24; pixel_y = -7},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Primary AI Base"},/area/turret_protected/ai) +"bvl" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bvm" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/bridge) -"bvn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"bvn" = (/obj/structure/stool/bed/chair{name = "Judge"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Courtroom"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/crew_quarters/courtroom) "bvo" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/bridge) "bvp" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/turf/simulated/floor/carpet,/area/bridge) "bvq" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet,/area/bridge) "bvr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) -"bvs" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) +"bvs" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bvt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bvu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) "bvv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3821,17 +3821,17 @@ "bvy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/qm) "bvA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) -"bvB" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"bvB" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "bvC" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bvD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/locker) "bvE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Quarters Access"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) "bvF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Quarters Access"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/crew_quarters/locker) "bvG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bvH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bvI" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/central) -"bvJ" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"bvK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bvL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/storage/primary) +"bvI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bvJ" = (/obj/machinery/door/airlock/hatch{name = "MiniSat East Wing"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bvK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"bvL" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bvM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/storage/primary) "bvN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/storage/primary) "bvO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Engine Room"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) @@ -3855,12 +3855,12 @@ "bwg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bwh" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) "bwi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bwj" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer's Office"; req_access_txt = "56"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) -"bwk" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/turf/simulated/floor/wood,/area/security/vacantoffice) -"bwl" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/wood,/area/security/vacantoffice) -"bwm" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/turf/simulated/floor/wood,/area/security/vacantoffice) +"bwj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/fore) +"bwk" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/construction) +"bwl" = (/obj/machinery/conveyor{dir = 1; id = "QMLoad2"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bwm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Locker Room Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bwn" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bwo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bwo" = (/obj/machinery/photocopier,/obj/machinery/camera{c_tag = "Law Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/lawoffice) "bwp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bwq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bwr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3881,43 +3881,43 @@ "bwG" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red,/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "bwH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) -"bwJ" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bwJ" = (/obj/machinery/hologram/holopad,/obj/structure/sign/kiddieplaque{pixel_y = 32},/obj/machinery/camera{c_tag = "AI Upload Chamber - Fore"; dir = 2; network = list("SS13","RD","AIUpload")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bwK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bwL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/locker) "bwM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) "bwN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) -"bwO" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) +"bwO" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/camera{c_tag = "Fitness Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "bwP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "bwQ" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/bridge) "bwR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fore Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/fore) -"bwS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/central) -"bwT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/central) +"bwS" = (/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Central Foyer"; req_one_access_txt = "32;19"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) +"bwT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bwU" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge) -"bwV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bwV" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bwW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "bwX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bwY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/central) -"bwZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/central) +"bwZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bxa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/quartermaster/storage) "bxb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/trash/popcorn,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bxc" = (/obj/structure/table,/obj/item/weapon/cartridge/quartermaster{pixel_x = 6; pixel_y = 5},/obj/item/weapon/cartridge/quartermaster,/obj/item/weapon/cartridge/quartermaster{pixel_x = -4; pixel_y = 7},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm) -"bxd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bxd" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/security/detectives_office) "bxe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bxf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/sortjunction{sortType = 5},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) "bxg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) "bxh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bxi" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bxi" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/lawoffice) "bxj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) "bxk" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Auxiliary Tool Storage APC"; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) "bxl" = (/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "bxm" = (/obj/structure/closet/toolcloset,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/storage/tools) -"bxn" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bxn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bxo" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "bxp" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bxq" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) -"bxr" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/engineering) -"bxs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light_switch{pixel_x = 26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/engineering) -"bxt" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/engineering) +"bxr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) +"bxs" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bxt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light_switch{pixel_x = -26},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bxu" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bxv" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/simulated/floor,/area/maintenance/storage) "bxw" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -3934,7 +3934,7 @@ "bxH" = (/turf/simulated/floor/wood,/area/security/vacantoffice) "bxI" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/wood,/area/security/vacantoffice) "bxJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/secure_data{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/security{pixel_x = 1; pixel_y = -1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"bxK" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) +"bxK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/brig) "bxL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/cloning{pixel_x = 0},/obj/item/weapon/circuitboard/med_data{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/clonescanner,/obj/item/weapon/circuitboard/clonepod,/obj/item/weapon/circuitboard/scan_consolenew,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bxM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bxN" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/obj/item/device/multitool,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) @@ -3956,9 +3956,9 @@ "byd" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm) "bye" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm) "byf" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/qm) -"byg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) -"byh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/storage/primary) -"byi" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"byg" = (/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 26},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) +"byh" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area) +"byi" = (/obj/machinery/computer/arcade,/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/crew_quarters/fitness) "byj" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/closet/crate/internals,/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "byk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) "byl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -3972,7 +3972,7 @@ "byt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "byu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "byv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"byw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"byw" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "byx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "byy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "byz" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/surgery) @@ -3980,9 +3980,9 @@ "byB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper{name = "Sleepers"}) "byC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) "byD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) -"byE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) -"byF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/storage/primary) -"byG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/emergency{name = "\improper MiniSat Interior"}) +"byE" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) +"byF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig Desk"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) +"byG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Fore Primary Hallway Cells"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "byH" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "byI" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/device/assembly/igniter,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "byJ" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) @@ -3992,14 +3992,14 @@ "byN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/crew_quarters/courtroom) "byO" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/starboard) "byP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/courtroom) -"byQ" = (/obj/machinery/photocopier,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) +"byQ" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "byR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"}) "byS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "byT" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Air to Port"; on = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/storage) "byU" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "byV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"byW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/lawoffice) -"byX" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/wood,/area/lawoffice) +"byW" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/lawoffice) +"byX" = (/obj/effect/landmark/start{name = "Lawyer"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/wood,/area/lawoffice) "byY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "byZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor,/area/crew_quarters/locker) "bza" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) @@ -4030,14 +4030,14 @@ "bzz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bzA" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Tool Storage"},/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "bzB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/shower{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) -"bzC" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/storage/primary) +"bzC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/lawoffice) "bzD" = (/obj/structure/table,/obj/item/weapon/weldingtool,/obj/item/weapon/crowbar,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/storage/primary) "bzE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bzF" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/storage/primary) "bzG" = (/obj/machinery/sleep_console{density = 0; dir = 8; icon_state = "console"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bzH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzJ" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Restrooms"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bzK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bzM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -4045,29 +4045,29 @@ "bzO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bzR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/storage/primary) +"bzR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/brig) "bzS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bzV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-Aft"; location = "7-Command-Starboard"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bzW" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bzX" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bzY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bzZ" = (/obj/structure/table,/obj/item/weapon/wirecutters,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) +"bzY" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/lawoffice) +"bzZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/brig) "bAa" = (/obj/machinery/door/airlock{id_tag = "Toilet1"; name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bAb" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) -"bAc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/lawoffice) -"bAd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/lawoffice) +"bAc" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/fyellow,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/storage/primary) +"bAd" = (/obj/structure/table,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bAe" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bAf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Storage Access"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bAg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bAh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) +"bAg" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) +"bAh" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "bAi" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Engine Room APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bAj" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bAj" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bAk" = (/obj/machinery/computer/station_alert,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bAl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bAm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engine/engineering) -"bAn" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) +"bAn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/brig) "bAo" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) "bAp" = (/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness) "bAq" = (/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/toxins/lab) @@ -4093,15 +4093,15 @@ "bAK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil,/obj/item/weapon/screwdriver,/obj/item/weapon/weldingtool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bAL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/black,/obj/item/weapon/extinguisher{pixel_x = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/clothing/glasses/meson,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bAM" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bAN" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bAN" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/brig) "bAO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"bAP" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bAP" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "bAQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "bAR" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bAS" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) -"bAT" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) +"bAT" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bAU" = (/obj/machinery/computer/crew,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/medbay{name = "Medbay Central"}) -"bAV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bAV" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bAW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bAX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bAY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Observation"; req_access_txt = "45"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/medical/surgery) @@ -4109,11 +4109,11 @@ "bBa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bBb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bBc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/crew_quarters/locker) -"bBd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bBd" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) "bBe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central) "bBf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{aidisabled = 0; dir = 1; name = "AI Chamber APC"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai) "bBg" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/obj/machinery/door/window{dir = 1; name = "Primary AI Core Access"; pixel_y = 0; req_access_txt = "16"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai) -"bBh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bBh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/lawoffice) "bBi" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bBj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bBk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/southleft,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) @@ -4125,9 +4125,9 @@ "bBq" = (/turf/simulated/wall/r_wall,/area/teleporter{name = "\improper Teleporter Room"}) "bBr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) "bBs" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/cmo) -"bBt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bBt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/lawoffice) "bBu" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) -"bBv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"bBv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/wood,/area/lawoffice) "bBw" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "bBx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bBy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) @@ -4135,7 +4135,7 @@ "bBA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) "bBB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bBC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bBD" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) +"bBD" = (/obj/effect/landmark/start{name = "Lawyer"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/lawoffice) "bBE" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/storage/primary) "bBF" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/storage/primary) "bBG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) @@ -4143,8 +4143,8 @@ "bBI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "bBJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/lab) "bBK" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bBL" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small,/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bBM" = (/obj/item/weapon/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bBL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer's Office"; req_access_txt = "56"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/chiefs_office) +"bBM" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bBN" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm Close"; dir = 4; network = list("Singulo")},/turf/space,/area) "bBO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bBP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -4161,7 +4161,7 @@ "bCa" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) "bCb" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) "bCc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) -"bCd" = (/obj/structure/closet/boxinggloves,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) +"bCd" = (/obj/structure/table,/obj/item/clothing/head/hardhat/orange{name = "protective hat"; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/construction) "bCe" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/stool{pixel_y = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/locker) "bCf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/security/vacantoffice) "bCg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) @@ -4193,9 +4193,9 @@ "bCG" = (/turf/simulated/wall/r_wall,/area/gateway) "bCH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bCI" = (/obj/structure/closet/lasertag/red,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) -"bCJ" = (/obj/machinery/teleport/station,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) +"bCJ" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bCK" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bCL" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) +"bCL" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bCM" = (/obj/structure/closet/lasertag/blue,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "bCN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/gateway) "bCO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) @@ -4206,14 +4206,14 @@ "bCT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) "bCU" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bCV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) -"bCW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"bCX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/crew_quarters/locker) +"bCW" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/security_space_law,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"bCX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bCY" = (/obj/machinery/turret{dir = 1},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bCZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/science{pixel_x = 32},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) +"bCZ" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) "bDa" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/lab) "bDb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/sign/chemistry{pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bDc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/disposal/deliveryChute{dir = 4; name = "Crate Disposal Chute"; pixel_x = -5; pixel_y = 2},/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Crate Disposal Chute"; req_access_txt = "0"},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) -"bDd" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/storage/primary) +"bDd" = (/obj/machinery/power/apc{dir = 4; name = "Warehouse APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "bDe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "bDf" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bDg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/mob/living/simple_animal/cat/Runtime,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -4236,7 +4236,7 @@ "bDx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "bDy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) "bDz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) -"bDA" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/camera/autoname{c_tag = "Engineering SMES Room"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) +"bDA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/construction) "bDB" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Power Monitoring"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bDC" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "bDD" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) @@ -4264,7 +4264,7 @@ "bDZ" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 0; pixel_y = 6},/obj/item/weapon/pen,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bEa" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "bEb" = (/turf/simulated/wall/r_wall,/area/toxins/telesci) -"bEc" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"bEc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/bodybag,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/turf/simulated/floor{icon_state = "dark"},/area/security/detectives_office) "bEd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/fore) "bEe" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/book/manual/telescience{pixel_y = 8},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bEf" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) @@ -4274,8 +4274,8 @@ "bEj" = (/turf/simulated/wall,/area/crew_quarters/kitchen) "bEk" = (/obj/machinery/computer/telescience,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bEl" = (/obj/structure/stool,/obj/machinery/light{dir = 1},/obj/machinery/newscaster{dir = 8; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"bEm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/telesci) -"bEn" = (/obj/structure/rack{pixel_y = 3},/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) +"bEm" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor,/area/construction) +"bEn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office) "bEo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage) "bEp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/fore) "bEq" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Starboard Maintenance APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) @@ -4287,10 +4287,10 @@ "bEw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bEx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) -"bEz" = (/obj/machinery/hologram/holopad,/obj/structure/sign/kiddieplaque{pixel_y = 32},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD","AIUpload")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bEz" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Courtroom Gallery"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bEA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/fore) -"bEC" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"bEC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bED" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/obj/structure/stool,/turf/simulated/floor,/area/maintenance/storage) "bEE" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor,/area/maintenance/storage) "bEF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/gateway) @@ -4303,7 +4303,7 @@ "bEM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Prisoner Education Gallery"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/prison/solitary{name = "Prisoner Education Chamber"}) "bEN" = (/obj/machinery/chem_master,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bEO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bEP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bEP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "bEQ" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bER" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/library) "bES" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) @@ -4323,7 +4323,7 @@ "bFg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "bFh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bFi" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bFj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) +"bFj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bFk" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/lab) "bFl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/cryo) "bFm" = (/turf/simulated/wall/r_wall,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -4331,10 +4331,10 @@ "bFo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "purplefull"},/area/hallway/primary/aft) "bFp" = (/obj/machinery/door/airlock/maintenance{name = "Gateway Maintenance"; req_access_txt = "17"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/gateway) "bFq" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) -"bFr" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bFr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bFs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "bFt" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/library) -"bFu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) +"bFu" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bFv" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bFw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bFx" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4345,7 +4345,7 @@ "bFC" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bFD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bFE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"bFF" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"bFF" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/quartermaster/storage) "bFG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bFH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bFI" = (/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4364,12 +4364,12 @@ "bFV" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) "bFW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bFX" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) -"bFY" = (/obj/structure/closet,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bFY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) "bFZ" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bGa" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) "bGb" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bGc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bGd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"bGd" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals Fore Arm Far"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bGe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) "bGf" = (/obj/item/weapon/cigbutt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -4421,7 +4421,7 @@ "bHa" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bHb" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bHc" = (/obj/structure/table,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) -"bHd" = (/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/telesci) +"bHd" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bHe" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) "bHf" = (/obj/effect/decal/cleanable/blood/gibs/limb,/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bHg" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/wood,/area/library) @@ -4430,22 +4430,22 @@ "bHj" = (/obj/structure/rack,/obj/item/weapon/hatchet,/obj/item/weapon/butch,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bHk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) "bHl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bHm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) +"bHm" = (/obj/structure/morgue{pixel_x = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/detectives_office) "bHn" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "bHo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bHp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "bHq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/primary) -"bHr" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bHr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bHs" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bHt" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bHu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bHv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/fore) "bHw" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/turretid{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 8; pixel_y = 24},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -8; pixel_y = 22},/obj/effect/landmark/start{name = "Cyborg"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "AI Upload Access APC"; pixel_x = 0; pixel_y = -27},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai_upload_foyer) "bHx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bHy" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"bHy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bHz" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/wood,/area/security/vacantoffice) "bHA" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bHB" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) +"bHB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bHC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bHD" = (/obj/machinery/chem_dispenser,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bHE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/antitoxin,/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) @@ -4473,17 +4473,17 @@ "bIa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bIb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Medical Officer's Office"; req_access_txt = "40"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bIc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bIe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) +"bId" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bIe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bIg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bIh" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bIi" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/floor/plating,/area/medical/chemistry) -"bIj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bIi" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bIj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bIl" = (/obj/machinery/sleep_console{density = 0; dir = 4; icon_state = "console"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bIm" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bIn" = (/obj/machinery/door/airlock/maintenance{name = "Telescience Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bIn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "bIo" = (/obj/item/device/radio/beacon,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) "bIp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bIq" = (/obj/structure/stool/bed,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -4505,23 +4505,23 @@ "bIG" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Telescience Lab"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bIH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bII" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bIL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bIL" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIM" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bIN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/central) "bIO" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/weapon/pen,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bIP" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1441; icon_state = "on"; id = "co2_in"; on = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bIQ" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/lab) "bIR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bIS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD","AIUpload")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) -"bIT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"bIU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "blobstart"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bIS" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) +"bIT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bIU" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central) "bIV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bIW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/solar/port) "bIX" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bIY" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) -"bIZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"bIZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light_switch{pixel_x = 26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bJa" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "bJb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJc" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4531,10 +4531,10 @@ "bJg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bJh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bJi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bJj" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bJj" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 23},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bJk" = (/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bJl" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bJm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bJm" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bJn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bJo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bJp" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/library) @@ -4554,7 +4554,7 @@ "bJD" = (/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bJE" = (/obj/structure/table/woodentable,/obj/machinery/cell_charger,/obj/item/weapon/cell/crap,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bJF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/construction) -"bJG" = (/obj/structure/table/woodentable,/obj/item/device/paicard{desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; name = "Nanotrasen Personal AI Device Exhibit"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bJG" = (/obj/structure/table,/obj/item/clothing/gloves/orange,/turf/simulated/floor,/area/construction) "bJH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bJI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bJJ" = (/obj/structure/closet/firecloset,/turf/simulated/floor,/area/construction) @@ -4576,7 +4576,7 @@ "bJZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "bKa" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bKb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"bKc" = (/obj/structure/sign/poster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bKc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bKd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) "bKf" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/library) @@ -4587,7 +4587,7 @@ "bKk" = (/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bKl" = (/obj/machinery/light/small,/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bKm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area) -"bKn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Emergency Storage Maintenance"; req_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bKn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bKo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 9},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4616,7 +4616,7 @@ "bKN" = (/obj/structure/cult/tome,/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/obj/item/clothing/under/suit_jacket/red,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bKO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/wood,/area/library) "bKP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/wood,/area/library) -"bKQ" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bKQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bKR" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) "bKS" = (/obj/machinery/disposal{pixel_x = -4},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/lab) "bKT" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -4625,7 +4625,7 @@ "bKW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) "bKX" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bKY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "O2 to Pure"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) -"bKZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bKZ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bLa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bLb" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bLc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -4635,9 +4635,9 @@ "bLg" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/woodentable,/obj/structure/reagent_dispensers/beerkeg{desc = "One of the more successful achievements of the NanoTrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devestatingly effective. Signs explain that though this is just a model, every NanoTrasen station is equipped with one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; icon = 'icons/obj/stationobjs.dmi'; icon_state = "nuclearbomb0"; name = "NanoTrasen Brand Nuclear Fission Explosive Exhibit"; pixel_x = 2; pixel_y = 6},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bLh" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/matches{pixel_x = -2; pixel_y = 3},/obj/item/clothing/mask/cigarette/cigar{pixel_x = 4; pixel_y = 1},/obj/item/clothing/mask/cigarette/cigar{pixel_x = -4; pixel_y = 1},/obj/item/clothing/mask/cigarette/cigar/cohiba,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bLi" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/showcase{desc = "A slightly battered looking TV. Vaious Nanotrasen infomercials play on a loop, accompanied by a jaunty tune."; dir = 1; icon = 'icons/obj/computer.dmi'; icon_state = "security_det"; name = "NanoTrasen Corporate News"; pixel_x = 2; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bLj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bLj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "bLk" = (/turf/simulated/wall,/area/crew_quarters/hor) -"bLl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) +"bLl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "bLm" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/cryo) "bLn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "bLo" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) @@ -4659,7 +4659,7 @@ "bLE" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bLF" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "N2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bLG" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) -"bLH" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bLI" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 1; name = "O2 Outlet Valve"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bLJ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bLK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -4691,7 +4691,7 @@ "bMk" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) "bMl" = (/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "bMm" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"bMn" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"bMn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bMo" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bMp" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "bMq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/port) @@ -4708,10 +4708,10 @@ "bMB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "bMC" = (/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/trash/candy,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bMD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) -"bME" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bMF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bME" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) +"bMF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bMG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bMH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bMH" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "bMI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bMJ" = (/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "bMK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 10; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -4732,7 +4732,7 @@ "bMZ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "caution"},/area/maintenance/storage) "bNa" = (/obj/structure/closet,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bNb" = (/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bNc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) +"bNc" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) "bNd" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "bNe" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "bNf" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) @@ -4742,10 +4742,10 @@ "bNj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) "bNk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bNl" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bNm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bNm" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bNn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bNo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bNp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) +"bNo" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bNp" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bNq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/turret_protected/ai_upload) "bNr" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bNs" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4785,7 +4785,7 @@ "bOa" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bOb" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bOc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bOd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway) +"bOd" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bOe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/engine,/area/toxins/telesci) "bOf" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bOg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/hydroponics) @@ -4822,7 +4822,7 @@ "bOL" = (/obj/machinery/door/poddoor{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main) "bOM" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 16},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bON" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/storage) -"bOO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"bOO" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/central) "bOP" = (/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/screwdriver{pixel_x = -2; pixel_y = 6},/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/radio/headset/headset_med,/obj/structure/table,/turf/simulated/floor{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) "bOQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboard) "bOR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) @@ -4844,7 +4844,7 @@ "bPh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) "bPi" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/hallway/primary/central) -"bPk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bPk" = (/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8},/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8},/obj/machinery/computer/supplycomp,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bPl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPm" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bPn" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/hydroponics) @@ -4853,7 +4853,7 @@ "bPq" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/space,/area) "bPr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/hydroponics) "bPs" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics) -"bPt" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bPt" = (/obj/structure/closet/lawcloset,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/wood,/area/lawoffice) "bPu" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 9; icon_state = "intact-y"; level = 2},/turf/space,/area) "bPv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/minihoe,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bPw" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) @@ -4863,11 +4863,11 @@ "bPA" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPB" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/space,/area) "bPC" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/space,/area) -"bPD" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bPD" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/construction) "bPE" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/space,/area) "bPF" = (/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "7"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPG" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"bPH" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/maintenance/storage) +"bPH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/construction) "bPI" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bPJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "bPK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4886,7 +4886,7 @@ "bPX" = (/obj/structure/filingcabinet/filingcabinet,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bPY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPZ" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics) -"bQa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bQa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/construction) "bQb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bQc" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bQd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4905,7 +4905,7 @@ "bQq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L16"},/area/hallway/primary/central) "bQr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bQs" = (/obj/structure/rack,/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bQt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bQt" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bQu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bQv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/lab) "bQw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/vending/cola,/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) @@ -4929,13 +4929,13 @@ "bQO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research and Development Lab"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/lab) "bQP" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bQQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "gateshutter"; name = "Gateway Access Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/gateway) -"bQR" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bQR" = (/obj/structure/table,/obj/item/weapon/wirecutters,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Tool Storage"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bQS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQT" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "evashutter"; name = "E.V.A. Storage Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bQU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQW" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway) -"bQX" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"bQX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Fore Primary Hallway Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bQY" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/space,/area) "bQZ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "bRa" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4972,7 +4972,7 @@ "bRF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "purple"},/area/hallway/primary/aft) "bRG" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 10; icon_state = "whitepurple"},/area/toxins/lab) "bRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bRI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bRI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/construction) "bRJ" = (/turf/simulated/wall/r_wall,/area/toxins/server) "bRK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bRL" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) @@ -4981,10 +4981,10 @@ "bRO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bRP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bRQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central) -"bRR" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"bRR" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bRS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/surgery) -"bRU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bRU" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/primary) "bRV" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bRW" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Chemist"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bRX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5008,9 +5008,9 @@ "bSp" = (/obj/machinery/atmospherics/pipe/tank/oxygen{volume = 3200},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bSq" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bSr" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bSs" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD","AIUpload")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bSs" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Engineering Power Monitoring"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) -"bSu" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD","AIUpload")},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bSu" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/camera{c_tag = "AI Upload Chamber - Starboard"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bSv" = (/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSw" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSx" = (/obj/structure/stool/bed/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) @@ -5019,7 +5019,7 @@ "bSA" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bSB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bSC" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) -"bSD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bSD" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bSE" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bSF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bSG" = (/obj/structure/table,/obj/item/device/healthanalyzer,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) @@ -5038,8 +5038,8 @@ "bST" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bSU" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bSV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/hor) -"bSW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) -"bSX" = (/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"bSW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "AI Upload Chamber - Port"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bSX" = (/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bSY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bSZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/hydroponics) "bTa" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/hydroponics) @@ -5051,12 +5051,12 @@ "bTg" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/cryo) "bTh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bTi" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bTj" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bTj" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTk" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bTl" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bTm" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTn" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/machinery/light,/turf/simulated/floor/wood,/area/library) -"bTo" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bTo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Crew Quarters Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bTp" = (/obj/structure/table,/obj/item/weapon/cell/potato,/obj/machinery/light,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -3; pixel_y = -26},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bTq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "bTr" = (/obj/machinery/chem_master,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) @@ -5075,10 +5075,10 @@ "bTE" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/misc_lab) "bTF" = (/obj/structure/rack,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bTG" = (/obj/structure/table,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bTH" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 11},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) +"bTH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bTI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bTJ" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) -"bTK" = (/obj/structure/sign/poster{pixel_x = -32; pixel_y = 0},/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bTK" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bTL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) "bTM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bTN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -5096,7 +5096,7 @@ "bTZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bUa" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/wood,/area/library) "bUb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bUc" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"bUc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/construction) "bUd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bUe" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) "bUf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5108,7 +5108,7 @@ "bUl" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bUm" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bUn" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) -"bUo" = (/obj/structure/sign/poster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bUo" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bUp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hydroponics) "bUq" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bUr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5135,7 +5135,7 @@ "bUM" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bUN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "bUO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bUP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'; name = "Gateway Chamber"},/turf/simulated/floor,/area/gateway) +"bUP" = (/obj/structure/closet/boxinggloves,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "bUQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "bUR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUS" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - CO2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) @@ -5148,13 +5148,13 @@ "bUZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bVa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bVb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bVc" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/disposal,/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bVc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/primary) "bVd" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/incinerator) "bVe" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/research{name = "Research Division"}) "bVf" = (/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bVi" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bVi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bVj" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bVk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -5175,8 +5175,8 @@ "bVA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bVB" = (/obj/structure/rack,/obj/item/weapon/paper,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bVC" = (/obj/structure/stool/bed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bVD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bVE" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bVD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/construction) +"bVE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/construction) "bVF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bVG" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVH" = (/obj/structure/table,/obj/structure/sign/greencross{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5195,12 +5195,12 @@ "bVU" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bVV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bVW" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) -"bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/construction) "bVY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bVZ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/space,/area) "bWa" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bWb" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Toxins Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) -"bWc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bWc" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) "bWd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bWe" = (/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/reagentgrinder{pixel_y = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bWf" = (/turf/simulated/wall,/area/medical/medbay2{name = "Medbay Storage"}) @@ -5298,10 +5298,10 @@ "bXT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) "bXU" = (/obj/structure/closet/secure_closet/scientist{pixel_x = -4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/lab) "bXV" = (/obj/structure/closet/l3closet/general,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bXW" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) +"bXW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/central) "bXX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bXY" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) -"bXZ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"bXZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/central) "bYa" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "bYb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bYc" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5309,7 +5309,7 @@ "bYe" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bYf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYg" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/item/trash/popcorn,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"bYh" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bYh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/telesci) "bYi" = (/obj/structure/closet,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYj" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 0},/obj/machinery/chem_master,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/maintenance/storage) @@ -5329,7 +5329,7 @@ "bYy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bYz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bYA" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bYB" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bYB" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = -5; pixel_y = 2},/obj/item/weapon/storage/backpack/satchel_tox,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = 5; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bYC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -5355,7 +5355,7 @@ "bYY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bYZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server) "bZa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"bZb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bZb" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZc" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "bZd" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "24"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bZe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5365,10 +5365,10 @@ "bZi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard) "bZj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bZk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) -"bZl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bZl" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bZn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/central) -"bZo" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bZo" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bZq" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/maintenance/storage) "bZr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central) @@ -5386,13 +5386,13 @@ "bZD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZF" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bZG" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bZG" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "bZH" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bZI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bZK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/science) "bZL" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 6},/obj/machinery/newscaster/security_unit{pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/science) -"bZM" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"bZM" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bZN" = (/turf/simulated/wall,/area/medical/chemistry) "bZO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "bZP" = (/obj/structure/closet/secure_closet/chemical,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) @@ -5408,16 +5408,16 @@ "bZZ" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area) "caa" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "cab" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/port) -"cac" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cac" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cad" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science) "cae" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caf" = (/obj/machinery/computer/med_data,/obj/machinery/light{dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "cag" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/power/apc{dir = 1; name = "Sleeper Room APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "cah" = (/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) -"cai" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"caj" = (/obj/structure/sign/poster{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cai" = (/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"caj" = (/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cak" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"cal" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cal" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cam" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "can" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) "cao" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5426,8 +5426,8 @@ "car" = (/obj/structure/disposalpipe/sortjunction{dir = 2; sortType = 20},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cas" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) "cat" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Kitchen"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/crew_quarters/kitchen) -"cau" = (/obj/structure/closet{name = "Spare Table Modules"},/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) -"cav" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) +"cau" = (/obj/structure/sign/poster{pixel_x = 32; pixel_y = 0},/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"cav" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/science{pixel_x = 32},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "caw" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics) "cax" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "cay" = (/obj/structure/closet,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5459,9 +5459,9 @@ "caY" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "caZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cba" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cbb" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"cbb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "cbc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cbd" = (/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"cbd" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/wall,/area/medical/chemistry) "cbe" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warning"},/area/crew_quarters/kitchen) "cbf" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Toxins Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "bot"},/area/toxins/misc_lab) "cbg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) @@ -5482,7 +5482,7 @@ "cbv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cbw" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/starboard) "cbx" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cby" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cby" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "cbz" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "cbA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cbB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) @@ -5502,18 +5502,18 @@ "cbP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/library) "cbQ" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central) "cbR" = (/obj/structure/closet/crate/rcd{pixel_y = 4},/obj/machinery/door/window/northleft{dir = 4; name = "RCD Storage"; pixel_x = 1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cbS" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"cbS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cbT" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Air"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "cbU" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) "cbV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cbW" = (/obj/machinery/door/airlock/maintenance{name = "Kitchen Maintenance"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cbX" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/teleporter{name = "\improper Teleporter Room"}) -"cbY" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/aft{name = "Aft Maintenance"}) -"cbZ" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cbY" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) +"cbZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cca" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "ccb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "ccc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"ccd" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"ccd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cce" = (/obj/structure/table/woodentable,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/wood,/area/library) "ccf" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) @@ -5530,7 +5530,7 @@ "ccr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccs" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cct" = (/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) -"ccu" = (/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"ccu" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "ccv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "ccw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "ccx" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics) @@ -5541,7 +5541,7 @@ "ccC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) "ccD" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "ccE" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"ccF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"ccF" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ccG" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "ccH" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "ccI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -5560,10 +5560,10 @@ "ccV" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "ccW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/gateway) "ccX" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"ccY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"ccY" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) "ccZ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Plasma to Pure"; on = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage) "cda" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cdb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cdb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "cdc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "cdd" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/airlock/command{name = "E.V.A. Storage"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "delivery"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cde" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/command{name = "E.V.A. Storage"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "delivery"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) @@ -5597,7 +5597,7 @@ "cdG" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/power/apc{dir = 8; name = "E.V.A. Storage APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cdH" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/chemistry) "cdI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"cdJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cdJ" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/aft{name = "Aft Maintenance"}) "cdK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdL" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/science) "cdM" = (/obj/machinery/power/apc{dir = 8; name = "Research Wing Security APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/science) @@ -5610,7 +5610,7 @@ "cdT" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "cdV" = (/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"cdW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cdW" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cdX" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdY" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cdZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery) @@ -5649,15 +5649,15 @@ "ceG" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "ceH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/maintenance/storage) "ceI" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"ceJ" = (/obj/structure/table,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"ceK" = (/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceJ" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceK" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ceL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "ceM" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "ceN" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/northleft{dir = 8; name = "Disposals Chute"; pixel_x = -1; pixel_y = 0; req_access_txt = "0"},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposals chute"; pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) -"ceO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) +"ceO" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "ceP" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "ceQ" = (/obj/machinery/door/airlock/external{name = "Auxiliary Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"ceR" = (/obj/structure/closet,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"ceR" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "ceS" = (/obj/structure/barricade/wooden,/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ceT" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "ceU" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/window/westright{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/turf/simulated/floor{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics) @@ -5665,11 +5665,11 @@ "ceW" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "ceX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "ceY" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) -"ceZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/storage) +"ceZ" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfa" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor,/area/medical/surgery) "cfb" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) "cfc" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) -"cfd" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/surgery) +"cfd" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfe" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) "cff" = (/obj/machinery/gibber,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cfg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5679,26 +5679,26 @@ "cfk" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cfl" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/medical/cryo) "cfm" = (/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/wood,/area/security/vacantoffice) -"cfn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cfn" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cfp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "cfq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cfr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) +"cfr" = (/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/table/woodentable,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cfu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) +"cfu" = (/obj/structure/stool,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfv" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "cfw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cfx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cfx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfy" = (/turf/simulated/floor{icon_state = "greenfull"},/area/hallway/primary/central) "cfz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hallway/primary/central) -"cfA" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfA" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "cfB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/aft) "cfC" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfD" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cfE" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfF" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cfG" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/maintenance/storage) +"cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "cfI" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "cfJ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -5706,7 +5706,7 @@ "cfL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cfM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/maintenance/storage) "cfN" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"cfO" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cfO" = (/obj/structure/closet/secure_closet/bar{pixel_x = -3; pixel_y = -1; req_access_txt = "25"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cfQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/watertank,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) "cfR" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) @@ -5732,7 +5732,7 @@ "cgl" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway) "cgm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) "cgn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) -"cgo" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"cgo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cgp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor,/area/medical/cryo) "cgq" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/cryo) "cgr" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/cryo) @@ -5742,7 +5742,7 @@ "cgv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cgw" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cgx" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/multitool,/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cgy" = (/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cgy" = (/obj/structure/stool,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cgA" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "cgB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/storage) @@ -5752,14 +5752,14 @@ "cgF" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "cgG" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "cgH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) -"cgI" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"cgI" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgJ" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgK" = (/obj/structure/closet,/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/maintenance/storage) "cgM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 2; icon_state = "blackcorner"},/area/maintenance/storage) "cgN" = (/obj/machinery/atmospherics/pipe/vent{dir = 2},/turf/simulated/floor/plating/airless,/area) "cgO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) -"cgP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cgP" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/table/woodentable,/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/starboard) "cgR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "cgS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "20;12"},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -5782,18 +5782,18 @@ "chj" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) "chk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Maltese Falcon"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"chm" = (/obj/structure/closet/crate,/obj/item/device/multitool,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/central) "chn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cho" = (/obj/structure/table,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chp" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chq" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"chr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"chr" = (/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "chs" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cht" = (/obj/structure/optable,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/surgery) "chw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"chx" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"chx" = (/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "chy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Surgery Observation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chA" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway) @@ -5814,9 +5814,9 @@ "chP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central) "chQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/carpet,/area/security/vacantoffice) "chR" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) -"chS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"chS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/starboard) "chT" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) -"chU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway) +"chU" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "chV" = (/obj/structure/sign/chemistry,/turf/simulated/wall,/area/medical/chemistry) "chW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Maltese Falcon"},/turf/simulated/floor,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chX" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "CO2 to Pure"; on = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/storage) @@ -5833,7 +5833,7 @@ "cii" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cij" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central) "cik" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cil" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cil" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/keycard_auth{pixel_x = 26; pixel_y = 0},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cim" = (/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cin" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) "cio" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -5848,7 +5848,7 @@ "cix" = (/obj/machinery/power/apc{dir = 8; name = "Aft Port Solar APC"; pixel_x = -26; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "ciy" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/maintenance/storage) "ciz" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ciA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/maintenance/starboard) +"ciA" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ciB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) "ciC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciD" = (/obj/machinery/computer/operating,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5866,15 +5866,15 @@ "ciP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ciQ" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/hallway/secondary/exit) "ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"ciS" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/security/vacantoffice) -"ciT" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ciU" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ciS" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"ciT" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) +"ciU" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/wirecutters,/obj/item/weapon/weldingtool,/turf/simulated/floor/plating,/area/maintenance/starboard) "ciV" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "ciW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "ciX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/aft) "ciY" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ciZ" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Research and Development"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/lab) -"cja" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"cja" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "cjb" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "dark"},/area/library) "cjc" = (/turf/simulated/wall,/area/assembly/chargebay) "cjd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) @@ -5901,7 +5901,7 @@ "cjy" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/device/t_scanner,/obj/item/device/t_scanner,/obj/item/device/t_scanner,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cjz" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor,/area/medical/surgery) "cjA" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) -"cjB" = (/obj/machinery/vending/wallmed2{pixel_y = -28},/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"cjB" = (/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "cjC" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) "cjD" = (/obj/structure/closet/crate/freezer,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor,/area/medical/surgery) "cjE" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5909,7 +5909,7 @@ "cjG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "cjH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; pixel_y = -2; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) "cjI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cjJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cjJ" = (/obj/structure/sign/poster{pixel_y = -32},/obj/structure/table/woodentable,/obj/machinery/light_construct/small,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cjK" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) "cjL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) "cjM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -5917,20 +5917,20 @@ "cjO" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = -32},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cjP" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Gas Mix Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/maintenance/storage) "cjQ" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"cjR" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) +"cjR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "cjS" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/robotics) -"cjT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cjT" = (/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cjU" = (/obj/machinery/light/small,/obj/machinery/power/apc{dir = 8; name = "Library APC"; pixel_x = -25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/library) -"cjV" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor,/area/maintenance/storage) +"cjV" = (/obj/machinery/vending/wallmed2{pixel_y = -28},/obj/machinery/light,/obj/machinery/camera{c_tag = "Medbay Surgery"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cjW" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) -"cjX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway) +"cjX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cjY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cjZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/library) "cka" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/library) -"ckb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"ckb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "ckc" = (/obj/machinery/light/small,/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/library) "ckd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor/wood,/area/library) -"cke" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) +"cke" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "ckf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 13},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ckg" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ckh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/crew_quarters/hor) @@ -5968,7 +5968,7 @@ "ckN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckO" = (/turf/simulated/wall,/area/medical/morgue) "ckP" = (/obj/structure/sign/vacuum,/turf/simulated/wall,/area/hallway/secondary/exit) -"ckQ" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/device/flashlight,/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) +"ckQ" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "ckR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckS" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/clothing/mask/pig,/obj/item/weapon/bikehorn,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckT" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5996,7 +5996,7 @@ "clp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clq" = (/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "clr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cls" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cls" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/storage/primary) "clt" = (/turf/simulated/wall/r_wall,/area/maintenance/atmos_control{name = "Telecomms Storage"}) "clu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/starboard) "clv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -6020,7 +6020,7 @@ "clN" = (/obj/structure/dresser,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clP" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) -"clQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway) +"clQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) "clR" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) "clS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "clT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6047,19 +6047,19 @@ "cmo" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/light{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmp" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/library) "cmq" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cmr" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cmr" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cms" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "cmt" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/security/vacantoffice) -"cmu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"cmv" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"cmu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cmv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cmw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cmx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmz" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmA" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cmB" = (/obj/machinery/door/window{dir = 4; name = "Theatre Stage"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cmC" = (/obj/machinery/vending/cigarette,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cmD" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"cmC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cmD" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cmE" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "Serving Hatch"},/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cmF" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area) "cmG" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "Serving Hatch"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -6088,13 +6088,13 @@ "cnd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cne" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 2; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "cnf" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) -"cng" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"cng" = (/obj/item/weapon/storage/toolbox/emergency,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cnh" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cni" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"cnj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cnj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Auxiliary Restrooms APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "cnk" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) "cnl" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/carpet,/area/security/vacantoffice) -"cnm" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) +"cnm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "cnn" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cno" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/hallway/primary/starboard) "cnp" = (/turf/simulated/wall,/area/hallway/primary/aft) @@ -6126,7 +6126,7 @@ "cnP" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "cnQ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cnR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/genetics) -"cnS" = (/obj/structure/table,/obj/item/clothing/head/cakehat,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"cnS" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cnT" = (/obj/machinery/computer/rdservercontrol,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cnU" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cnV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) @@ -6154,7 +6154,7 @@ "cor" = (/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cos" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) "cot" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cou" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/chapel/main) +"cou" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/weapon/cartridge/lawyer,/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/wood,/area/lawoffice) "cov" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cow" = (/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cox" = (/turf/simulated/floor,/area/hallway/primary/aft) @@ -6200,7 +6200,7 @@ "cpl" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgical_drapes,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/assembly/robotics) "cpm" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/turf/simulated/floor/carpet,/area/chapel/main) "cpn" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing) -"cpo" = (/obj/item/device/radio/beacon,/turf/simulated/shuttle/plating{icon_state = "plating"; luminosity = 2},/area) +"cpo" = (/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "cpp" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) "cpq" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpr" = (/obj/machinery/computer/arcade,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit) @@ -6231,7 +6231,7 @@ "cpQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/exit) "cpR" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Xenobiology Airlock"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) "cpS" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cpT" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) +"cpT" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/lawoffice) "cpU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cpV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cpW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6246,7 +6246,7 @@ "cqf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"cqi" = (/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"cqi" = (/obj/machinery/door/airlock/maintenance{name = "Telescience Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/hallway/secondary/exit) "cqk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/chapel/main) "cql" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) @@ -6282,7 +6282,7 @@ "cqP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cqQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqR" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"cqS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"cqS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cqT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/assembly/robotics) "cqU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cqV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) @@ -6309,7 +6309,7 @@ "crq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) "crr" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "crs" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"crt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"crt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cru" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "crv" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "crw" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) @@ -6388,19 +6388,19 @@ "csR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) "csS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) "csT" = (/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) -"csU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) -"csV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/toxins/mixing) +"csU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"csV" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "csW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) "csX" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) -"csY" = (/obj/structure/table,/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"csY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "csZ" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Lab APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cta" = (/obj/structure/largecrate,/obj/item/weapon/paper,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) "ctb" = (/obj/structure/table,/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "ctc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "ctd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cte" = (/obj/machinery/alarm{pixel_y = 32},/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/gloves/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cte" = (/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "CMO's Office"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ctf" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"ctg" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ctg" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) "cth" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) "cti" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctj" = (/turf/simulated/wall,/area/medical/genetics_cloning) @@ -6445,7 +6445,7 @@ "ctW" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "ctX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/sign/vacuum{pixel_x = -30},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit) "ctY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"ctZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"ctZ" = (/obj/machinery/light/small,/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cua" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cub" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuc" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6458,17 +6458,17 @@ "cuj" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cuk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cul" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"cum" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cun" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cum" = (/obj/structure/table/woodentable,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"cun" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cuo" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cup" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cuq" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing) -"cur" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "mix vent bast door"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"cur" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cus" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) "cut" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) "cuu" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing) "cuv" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing) -"cuw" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing) +"cuw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cux" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cuy" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) "cuz" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing) @@ -6481,7 +6481,7 @@ "cuG" = (/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) "cuH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) "cuI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) -"cuJ" = (/obj/structure/table,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) +"cuJ" = (/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cuK" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cuL" = (/turf/simulated/floor/plating/airless,/area/solar/port) "cuM" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/server{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) @@ -6507,15 +6507,15 @@ "cvg" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing) "cvh" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1449; id = "tox_airlock_pump"},/turf/simulated/floor/engine,/area/toxins/mixing) "cvi" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing) -"cvj" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"cvj" = (/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) "cvk" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cvl" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) "cvm" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cvo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvp" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cvq" = (/obj/machinery/door_control{dir = 2; id = "genetics"; name = "Shutter Control"; pixel_x = 26; pixel_y = 6; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) -"cvr" = (/obj/machinery/dna_scannernew,/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"cvq" = (/obj/structure/stool,/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cvr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cvs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cvt" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cvu" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -6536,12 +6536,12 @@ "cvJ" = (/turf/simulated/wall,/area/assembly/robotics) "cvK" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "cvL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/assembly/robotics) -"cvM" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) -"cvN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/obj/structure/sign/fire{pixel_y = -32},/turf/simulated/floor/engine,/area/toxins/mixing) +"cvM" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"cvN" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics Starboard-Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) "cvO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cvP" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual inlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "cvQ" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing) -"cvR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cvR" = (/obj/machinery/light/small,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cvS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) "cvT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) "cvU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) @@ -6551,7 +6551,7 @@ "cvY" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "cvZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/plating,/area/toxins/server) "cwa" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cwb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cwb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "cwc" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = list("SS13","RD"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cwd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cwe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) @@ -6568,7 +6568,7 @@ "cwp" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwq" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) "cwr" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room A APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cws" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 8; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"cws" = (/obj/structure/filingcabinet{pixel_x = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cwt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwu" = (/turf/simulated/wall/r_wall,/area/medical/virology) "cwv" = (/turf/simulated/floor,/area/security/checkpoint/medical) @@ -6592,7 +6592,7 @@ "cwN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cwP" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Access"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/medical/research{name = "Research Division"}) -"cwQ" = (/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) +"cwQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "cwR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cwS" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cwT" = (/turf/simulated/wall,/area/hallway/secondary/exit) @@ -6602,7 +6602,7 @@ "cwX" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "cwY" = (/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/genetics) "cwZ" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology) -"cxa" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cxa" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/lawoffice) "cxb" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cxc" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxd" = (/turf/simulated/wall,/area) @@ -6702,7 +6702,7 @@ "cyT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyV" = (/obj/machinery/power/solar_control{id = "starboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cyW" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/lockbox/clusterbang{desc = "An inpenetrable lockbox, designed for transporting the most dangerous of items. You have a bad feeling about opening this."; name = "Lockbox Exhibit"; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cyW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port-Aft"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cyX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cyY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyZ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -6715,9 +6715,9 @@ "czg" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "czh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/medical/virology) "czi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/medical/virology) -"czj" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"czj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "czk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"czl" = (/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) +"czl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czm" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics_cloning) "czn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "0"},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) "czo" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/genetics_cloning) @@ -6726,22 +6726,22 @@ "czr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "czs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "czt" = (/obj/machinery/smartfridge/chemistry/virology,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"czu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) +"czu" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "czv" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "czw" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czx" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"czy" = (/obj/structure/stool/bed/roller,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) -"czz" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"czy" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"czz" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) "czA" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czC" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "czF" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security in red at the top, you see engineering in yellow, science in purple, escape in checkered red-and-white, medbay in green, arrivals in checkered red-and-blue, and then cargo in brown."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"czG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics) +"czG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czH" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"czJ" = (/obj/structure/stool/bed/roller,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) +"czJ" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "czK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/assembly/chargebay) "czL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "czM" = (/obj/machinery/power/apc{dir = 8; name = "Xenobiology APC"; pixel_x = -25},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) @@ -6792,7 +6792,7 @@ "cAF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/aft) "cAG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/primary/aft) "cAH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft) -"cAI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cAI" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 0; pixel_y = -30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cAJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cAK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) "cAL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/aft) @@ -6846,7 +6846,7 @@ "cBH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cBI" = (/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cBJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cBK" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cBK" = (/turf/simulated/wall,/area/gateway) "cBL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cBM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/aft) "cBN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) @@ -6885,7 +6885,7 @@ "cCu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCv" = (/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cCx" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = -30},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cCx" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cCy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCz" = (/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCA" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) @@ -6899,7 +6899,7 @@ "cCI" = (/turf/space,/area/syndicate_station/southeast) "cCJ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,/obj/item/weapon/reagent_containers/glass/bottle/cold{pixel_x = 3; pixel_y = 3},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cCK" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCL" = (/obj/structure/table,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cCL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cCM" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/packageWrap,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cCN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCO" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) @@ -6916,7 +6916,7 @@ "cCZ" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cDa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "cDb" = (/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cDc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) +"cDc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cDd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology) "cDe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cDf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -6967,7 +6967,7 @@ "cDY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/medical/genetics) "cDZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cEa" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cEb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) +"cEb" = (/obj/machinery/door/poddoor/shutters{id = "teleshutter"; name = "Teleporter Access Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cEc" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard) "cEd" = (/turf/space,/area/syndicate_station/south) "cEe" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area) @@ -7271,10 +7271,10 @@ "cJQ" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/genetics) "cJR" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cJS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) -"cJT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cJT" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cJU" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cJV" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) -"cJW" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"cJW" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/teleporter{name = "\improper Teleporter Room"}) "cJX" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/simulated/shuttle/plating,/area/centcom/evac) "cJY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cJZ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7293,14 +7293,14 @@ "cKm" = (/turf/simulated/shuttle/floor,/area/centcom/evac) "cKn" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cKo" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"cKp" = (/obj/machinery/light,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cKp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) "cKq" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/item/robot_parts/chest{name = "Cyborg Torso Exhibit"; pixel_x = -2; pixel_y = 2},/obj/item/robot_parts/head{name = "Cyborg Head Exhibit"; pixel_x = 3; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cKr" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKt" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKu" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"cKw" = (/mob/living/carbon/monkey,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cKw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Gateway - Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "cKx" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKy" = (/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/grapeseed,/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cKz" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) @@ -7338,10 +7338,10 @@ "cLf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) "cLg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) "cLh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/centcom/evac) -"cLi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/toxins/mixing) -"cLj" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/toxins/mixing) +"cLi" = (/obj/machinery/vending/coffee,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"cLj" = (/obj/machinery/vending/cigarette,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cLk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cLl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor,/area/toxins/mixing) +"cLl" = (/obj/machinery/vending/cola,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cLm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cLn" = (/turf/simulated/shuttle/floor,/area/supply/dock) "cLo" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -7381,7 +7381,7 @@ "cLW" = (/obj/machinery/door/unpowered/shuttle{name = "cargo door"},/turf/simulated/shuttle/plating{dir = 1; icon_state = "delivery"},/area/shuttle/escape/centcom) "cLX" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape/centcom) "cLY" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) -"cLZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cLZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) "cMa" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cMc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) @@ -7406,11 +7406,11 @@ "cMv" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/plating{icon_state = "floorgrime"},/area/shuttle/escape/centcom) "cMw" = (/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) "cMx" = (/turf/unsimulated/wall,/area/centcom/ferry) -"cMy" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "Cloning Lab APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"cMy" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cMz" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/control) "cMA" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"cMB" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) -"cMC" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) +"cMB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'; name = "Gateway Chamber"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/gateway) +"cMC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 26; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) "cMD" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "cME" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "cMF" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) @@ -7427,9 +7427,9 @@ "cMQ" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "cMR" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"cMT" = (/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; req_access_txt = "9"},/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) +"cMT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cMU" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Nanotrasen Corporate Showroom APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/cigbutt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cMV" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/crema_switch{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"cMV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/storage/primary) "cMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) "cMX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) "cMY" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) @@ -7444,7 +7444,7 @@ "cNh" = (/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/alien,/obj/item/target/syndicate,/obj/structure/closet/crate/secure{desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; req_access_txt = "8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing) "cNi" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics_cloning) -"cNk" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/door_control{id = "chapel"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25; req_access_txt = "22"},/obj/machinery/light_switch{pixel_y = 36},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"cNk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "cNl" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/genetics) "cNn" = (/obj/machinery/door/airlock/external{name = "Auxiliary Escape Airlock"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7471,7 +7471,7 @@ "cNI" = (/obj/machinery/sleeper,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cNJ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "cNK" = (/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"cNL" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cNL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/gateway) "cNM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cNO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/oil,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -7482,7 +7482,7 @@ "cNT" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac) "cNU" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cNV" = (/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"cNW" = (/obj/machinery/vending/cola,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) +"cNW" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "cNX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) "cNY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) "cNZ" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) @@ -7505,7 +7505,7 @@ "cOq" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOr" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOs" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"cOt" = (/obj/machinery/door/airlock/glass_security{name = "CentComm Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"cOt" = (/obj/machinery/door/airlock/glass_security{name = "Centcom Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cOu" = (/obj/machinery/door/airlock/medical{name = "Patient Room B"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) "cOv" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape/centcom) "cOw" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) @@ -7667,7 +7667,7 @@ "cRw" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cRx" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "cRy" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cRz" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "19"},/turf/simulated/floor/plating,/area/toxins/xenobiology) +"cRz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice) "cRA" = (/turf/unsimulated/wall,/area/wizard_station) "cRB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) "cRC" = (/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) @@ -7707,7 +7707,7 @@ "cSk" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/ignition_switch{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/door_control{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) "cSl" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cSm" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cSn" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) +"cSn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/lawoffice) "cSo" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cSp" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cSq" = (/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) @@ -7752,9 +7752,9 @@ "cTd" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) "cTe" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) "cTf" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"cTg" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) +"cTg" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cTh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"cTi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"cTi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "cTj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cTk" = (/obj/structure/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) "cTl" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) @@ -8768,7 +8768,7 @@ "dmF" = (/turf/simulated/floor/airless,/area/mine/abandoned) "dmG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dmH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"dmI" = (/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/table,/obj/item/weapon/folder/white,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/paper,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dmI" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Starboard Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "dmJ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dmK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dmL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) @@ -8832,7 +8832,7 @@ "dnR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dnS" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dnT" = (/turf/simulated/wall,/area/mine/explored) -"dnU" = (/turf/space,/area/toxins/telesci) +"dnU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dnV" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/mine/north_outpost) "dnW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/north_outpost) "dnX" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/north_outpost) @@ -8848,7 +8848,7 @@ "doh" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "doi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doj" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dok" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dok" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37;25;28"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dol" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dom" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/mine/north_outpost) "don" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/mine/north_outpost) @@ -8865,7 +8865,7 @@ "doy" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/airless,/area/mine/abandoned) "doz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/morgue) -"doB" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/folder/white,/obj/item/clothing/gloves/latex,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"doB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "doC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "doD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/north_outpost) "doE" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/north_outpost) @@ -9137,7 +9137,7 @@ "dtK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) "dtL" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/mine/maintenance) "dtM" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"dtN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dtN" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "dtO" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor,/area/mine/living_quarters) "dtP" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) "dtQ" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor,/area/mine/living_quarters) @@ -9171,7 +9171,7 @@ "dus" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters) "dut" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) "duu" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/living_quarters) -"duv" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; dir = 8; invuln = 1; light = null; name = "Hardened Bomb-Test Camera"; network = list("Toxins"); use_power = 0},/obj/item/target/alien,/turf/simulated/shuttle/plating{icon_state = "plating"; luminosity = 2},/area) +"duv" = (/obj/structure/table,/obj/item/clothing/head/cakehat,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "duw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) "dux" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/production) "duy" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) @@ -9237,10 +9237,10 @@ "dvG" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) "dvH" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/mine/production) "dvI" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/production) -"dvJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/production) +"dvJ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dvK" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/production) "dvL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) -"dvM" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dvM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dvN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/gateway) "dvO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway) "dvP" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) @@ -9252,7 +9252,7 @@ "dvV" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dvW" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor,/area/mine/production) "dvX" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) -"dvY" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor,/area/mine/production) +"dvY" = (/obj/structure/closet{name = "spare parts locker"},/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/wrench,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "dvZ" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/mine/production) "dwa" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dwb" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) @@ -9451,7 +9451,7 @@ "dzM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/portsolar) "dzN" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/plating{dir = 1; icon_state = "warning"},/area/shuttle/escape/centcom) "dzO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dzP" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dzP" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 8; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) "dzQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/portsolar) "dzR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "dzS" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "whiteredcorner"},/area/medical/medbay3{name = "Medbay Aft"}) @@ -9462,9 +9462,9 @@ "dzX" = (/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A stand with an empty construction mech bolted to it. The clamps are rated at 9300PSI."; icon = 'icons/mecha/mecha.dmi'; icon_state = "firefighter"; name = "Construction Mech Exhibit"},/obj/machinery/light/small{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "dzY" = (/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern mech appliances, as well as the development of the uncorruptable cyborg servants of tomorrow, available today."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Machine' Exhibit"; pixel_x = 0; pixel_y = 32},/obj/structure/showcase{desc = "This cyborg looks frighteningly robust, with cold unseeing eyes. Signs praise the incorruptible nature of synthetics."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "Security"; name = "Cyborg Exhibit"; pixel_y = 3},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "dzZ" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death."; icon = 'icons/obj/cloning.dmi'; icon_state = "pod_0"; name = "Cloning Pod Exhibit"},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"dAa" = (/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/really_black,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dAa" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "dAb" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dAc" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dAc" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dAd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "dAe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "dAf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology) @@ -9482,7 +9482,7 @@ "dAr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboardsolar) "dAs" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) "dAt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) -"dAu" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dAu" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "dAv" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dAw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/robotics) "dAx" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -28},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) @@ -9506,7 +9506,7 @@ "dAP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dAQ" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "dAR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"dAS" = (/obj/machinery/door_control{desc = "A remote control switch for the cloning door."; id = "CloningDoor"; name = "Cloning Exit Button"; normaldoorcontrol = 1; pixel_x = -23; pixel_y = 8},/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dAS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "dAT" = (/obj/item/weapon/storage/box,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -9522,16 +9522,16 @@ "dBf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/laborcamp/station) "dBg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dBh" = (/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dBi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"dBi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "dBj" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "dBk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "dBl" = (/obj/machinery/power/apc{dir = 1; name = "Mech Bay APC"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/assembly/chargebay) "dBm" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/laborcamp/station) "dBn" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/laborcamp/station) -"dBo" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/ale,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "dBp" = (/obj/machinery/camera{c_tag = "Virology Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dBq" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/sign/biohazard{pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"dBr" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "dBs" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod4/station) "dBt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) "dBu" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) @@ -9543,7 +9543,7 @@ "dBA" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) "dBB" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) "dBC" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) -"dBD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBD" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) "dBE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "dBF" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/effect/landmark{name = "blobstart"},/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing) "dBG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) @@ -9592,18 +9592,18 @@ "dCx" = (/obj/machinery/vending/wallmed1{pixel_y = -28},/obj/structure/table,/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dCy" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dCz" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/medbay3{name = "Medbay Aft"}) -"dCA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"dCA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/wood,/area/security/vacantoffice) "dCB" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod4/transit) "dCC" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/medical) "dCD" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dCE" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod4/transit) "dCF" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) -"dCG" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/toxins/mixing) -"dCH" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing) +"dCG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) +"dCH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dCI" = (/obj/item/weapon/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "dCJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "dCK" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod4/transit) -"dCL" = (/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"dCL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) "dCM" = (/obj/structure/closet/crate,/obj/item/weapon/cable_coil,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dCN" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing) "dCO" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod4/transit) @@ -9643,25 +9643,25 @@ "dDw" = (/turf/simulated/wall,/area/mine/laborcamp) "dDx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dDy" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/reagentgrinder,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"dDz" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 8; pixel_y = 28; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) -"dDA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 26; pixel_y = 26},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) +"dDz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area) +"dDA" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area) "dDB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dDC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dDD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dDE" = (/obj/structure/lattice,/turf/space,/area/mine/unexplored) "dDF" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 0; pixel_y = 24; req_access_txt = "39"},/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) -"dDG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"dDG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) "dDH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"dDI" = (/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay3{name = "Medbay Aft"}) +"dDI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area) "dDJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDK" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"dDM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/medbay3{name = "Medbay Aft"}) -"dDN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Medbay Security Post"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/medical) +"dDM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Command Hallway - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dDN" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) "dDO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dDP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dDP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/crew_quarters/locker) "dDQ" = (/obj/structure/table,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/obj/item/device/radio/intercom{pixel_y = 25},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/medical) -"dDR" = (/obj/machinery/power/apc{dir = 1; name = "Medical Security Checkpoint APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) +"dDR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/storage/primary) "dDS" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{dir = 1; icon_state = "red"},/area/security/checkpoint/medical) "dDT" = (/turf/space,/area/shuttle/laborcamp/outpost) "dDU" = (/obj/machinery/space_heater,/obj/item/weapon/storage/toolbox/emergency,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -9683,9 +9683,9 @@ "dEk" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) "dEl" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isola"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/exam_room{name = "Patient Room B"}) "dEm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "isola"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/exam_room{name = "Patient Room B"}) -"dEn" = (/obj/structure/rack,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dEo" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/toxins/telesci) -"dEp" = (/turf/space,/area/toxins/mixing) +"dEn" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/lattice,/turf/space,/area) +"dEo" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area) +"dEp" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area) "dEq" = (/turf/simulated/wall,/area/medical/exam_room{name = "Patient Room B"}) "dEr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dEs" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) @@ -9696,7 +9696,7 @@ "dEx" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) "dEy" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "dEz" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/exam_room{name = "Patient Room B"}) -"dEA" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dEA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing) "dEB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "dEC" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dED" = (/turf/simulated/floor/plating/asteroid/airless,/area/mine/unexplored) @@ -9841,7 +9841,7 @@ "dHm" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) "dHn" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHo" = (/obj/machinery/vending/sustenance,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dHp" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dHp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dHq" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/laborcamp) "dHs" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) @@ -9909,13 +9909,13 @@ "dIC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/tcommsat/server) "dID" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dIE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/lattice,/turf/space,/area) -"dIF" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; pixel_y = 3},/turf/simulated/floor/wood,/area/library) +"dIF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dIG" = (/obj/structure/stool/bed/chair/wood/wings,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Mime"},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"dIH" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"dII" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"dIH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing) +"dII" = (/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing) "dIJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"dIK" = (/obj/machinery/light/small,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"dIL" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 0; pixel_y = -30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"dIK" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area) +"dIL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area) "dIM" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecoms Server Room APC"; pixel_x = 25; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIO" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13","tcomm")},/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) @@ -9946,10 +9946,202 @@ "dJn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dJp" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dJq" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dJq" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) "dJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJs" = (/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dJt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dJu" = (/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/telesci) +"dJv" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) +"dJw" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dJx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dJy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dJz" = (/obj/item/weapon/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dJA" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) +"dJB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"dJC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"dJD" = (/obj/structure/table,/obj/machinery/recharger,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dJE" = (/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dJF" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"dJG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/horsehead,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dJH" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/lockbox/clusterbang{desc = "An inpenetrable lockbox, designed for transporting the most dangerous of items. You have a bad feeling about opening this."; name = "Lockbox Exhibit"; pixel_y = 3},/obj/item/device/paicard{desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; name = "Nanotrasen Personal AI Device Exhibit"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dJI" = (/obj/structure/table/woodentable,/obj/machinery/bot/cleanbot{desc = "A little cleaning robot, one of NanoTrasen's more successful products. The label states that, on average, this model requires 40% less psychiatric care than its biological counterpart."; name = "\improper NanoTrasen Cleanbot Exhibit"; on = 0; pixel_y = 4},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dJJ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"dJK" = (/obj/structure/table,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dJL" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) +"dJM" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"dJN" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJO" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door_control{id = "AuxShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJP" = (/obj/machinery/door/airlock{id_tag = "AuxShower"; name = "Shower"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJQ" = (/obj/machinery/door/airlock{id_tag = "AuxToilet2"; name = "Unit 2"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJR" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJS" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "blobstart"},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJT" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJU" = (/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"},/area) +"dJV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJW" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; dir = 8; invuln = 1; light = null; name = "Hardened Bomb-Test Camera"; network = list("Toxins"); use_power = 0},/obj/item/target/alien{anchored = 1},/turf/simulated/shuttle/plating{dir = 4; icon_state = "warnplate"; luminosity = 2},/area) +"dJX" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/wood,/area/library) +"dJY" = (/obj/machinery/door/airlock{id_tag = "AuxToilet1"; name = "Unit 1"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJZ" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet1"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKa" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plating/airless,/area) +"dKb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dKc" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dKd" = (/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade{pixel_x = 2; pixel_y = 2},/obj/item/weapon/lipstick/purple{pixel_x = -2; pixel_y = -2},/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dKe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/landmark/costume,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dKf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dKg" = (/obj/structure/table,/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dKh" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/landmark/costume,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dKi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Command Hallway - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dKj" = (/obj/machinery/door/airlock{id_tag = "AuxToilet3"; name = "Unit 3"},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKk" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKl" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKm" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKn" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKo" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/chapel/main) +"dKp" = (/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor,/area/hallway/secondary/exit) +"dKq" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) +"dKr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "24"},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/maintenance/storage) +"dKs" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) +"dKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKu" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/crema_switch{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"dKw" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_y = 36},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"dKx" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dKy" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) +"dKz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"dKB" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/medbay3{name = "Medbay Aft"}) +"dKD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Medbay Security Post"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/medical) +"dKE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dKF" = (/obj/machinery/power/apc{dir = 1; name = "Medical Security Checkpoint APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) +"dKG" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKH" = (/obj/structure/rack,/obj/item/hand_labeler_refill,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKI" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKJ" = (/obj/item/clothing/suit/ianshirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKK" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) +"dKL" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology) +"dKM" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/flora/kirbyplants/dead{desc = "A rather demotivating prison decoration."; layer = 4.1; name = "potted plant"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dKN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) +"dKO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) +"dKP" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area) +"dKQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area) +"dKR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) +"dKS" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area) +"dKT" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) +"dKU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) +"dKV" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 26; pixel_y = 26; req_access_txt = "39"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) +"dKX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -26; pixel_y = 28; req_access_txt = "39"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"dKY" = (/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay3{name = "Medbay Aft"}) +"dKZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"dLb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"dLc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dLd" = (/obj/machinery/door/airlock/maintenance{name = "airlock access"; req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dLe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"dLf" = (/obj/machinery/door/airlock/research{name = "Toxins Space Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dLg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"dLh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dLi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing) +"dLj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing) +"dLk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dLl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"dLm" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"dLn" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing) +"dLo" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"dLp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/ore_box,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dLq" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/folder/red,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dLs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dLt" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLu" = (/obj/structure/table/woodentable,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/clipboard,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLv" = (/obj/structure/table/woodentable,/obj/item/device/camera_film{pixel_y = 9},/obj/item/device/camera_film{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLw" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/security/vacantoffice) +"dLx" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge) +"dLy" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge) +"dLz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge) +"dLA" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge) +"dLB" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"dLC" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"dLD" = (/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/obj/machinery/light/small{dir = 1},/obj/structure/table/woodentable,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/really_black,/obj/item/clothing/glasses/sunglasses,/obj/machinery/camera{c_tag = "Corporate Showroom"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dLE" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/obj/machinery/camera{c_tag = "Gateway - Atrium"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLF" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLG" = (/obj/structure/dispenser/oxygen{layer = 2.9; pixel_x = -1; pixel_y = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"dLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLJ" = (/obj/machinery/camera{c_tag = "Arrivals Aft Arm Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) +"dLN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Kitchen"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"dLO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Arrivals Aft Arm"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLR" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"dLS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) +"dLT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/gateway) +"dLV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway) +"dLW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"dLX" = (/obj/structure/closet/secure_closet/exile,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) +"dLY" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/device/flashlight,/obj/structure/closet/crate,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) +"dLZ" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) +"dMa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMb" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) +"dMc" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = -30},/obj/machinery/camera{c_tag = "Virology Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMd" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Corner"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMg" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMh" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dMi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"dMj" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"dMk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dMl" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/toxins/mixing) +"dMm" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"dMn" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/folder/white,/obj/item/clothing/gloves/latex,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"dMo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Virology Break Room"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dMp" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing) +"dMq" = (/obj/machinery/camera{c_tag = "Medbay Hallway Aft"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"dMr" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/stool/bed/chair{dir = 1},/mob/living/carbon/human{dir = 1; name = "Artifical Test Subject Beta"; voice_name = "Artifical Test Subject Beta"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area) +"dMs" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing) +"dMt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing) +"dMu" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"dMv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dMw" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Medbay Security Post"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"dMx" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"dMy" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Virology Testing Area"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMz" = (/obj/structure/table,/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMA" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/gloves/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMB" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMC" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dME" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dMF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dMG" = (/obj/machinery/door_control{dir = 2; id = "genetics"; name = "Shutter Control"; pixel_x = 26; pixel_y = 6; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) +"dMH" = (/obj/structure/table,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/camera{c_tag = "Genetics Desk"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) +"dMI" = (/obj/machinery/dna_scannernew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"dMJ" = (/obj/machinery/computer/scan_consolenew,/obj/machinery/camera{c_tag = "Genetics Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"dMK" = (/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) +"dML" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) +"dMP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) +"dMQ" = (/obj/machinery/light,/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dMR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dMS" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMT" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dMU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Middle"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMV" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair,/mob/living/carbon/human{name = "Artificial Test Subject Alpha"; real_name = "Artificial Test Subject Alpha"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area) +"dMW" = (/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) +"dMX" = (/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics) +"dMY" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) +"dMZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "Cloning Lab APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow,/obj/machinery/camera{c_tag = "Genetics Cloning Lab"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dNa" = (/obj/machinery/door_control{desc = "A remote control switch for the cloning door."; id = "CloningDoor"; name = "Cloning Exit Button"; normaldoorcontrol = 1; pixel_x = -23; pixel_y = 8},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dNb" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) +"dNc" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/production) +"dNd" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/production) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10013,176 +10205,176 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaadaapaapaapaapaapaadadAaadaapaapaapaapaapaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEabaabaaadaaaaaaaaaajCajaajDajaajCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaanyanyanyanyajCajcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaTaaTaaOaaTaaTaadadAaaaaaTaaTaaOaaTaaTaaaaaEaadaadaadaadaaEabaaaEaadaadaadaaaaadaadaadaaaaadaadaadahqaaPahqakeakfakgahqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaadaaaanyayEayEaaqaaraaraauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadacNacNacNacNacNaaOafiaaOacNacNacNacNacNaadabaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaamaaNaaPaasaataaGahqaaaaaadBfdBmdBmdBmdBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadanyanyawzaaKaaHanyanyanyabAabAaehaeiaejaekaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaakaakaakabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaakaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaiaaiaajaaiaajaaiaaiaaaahqaamahqahqabMahqahqaaaaaaahTabKdpCabLahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyabxabrabrabrabBanyabzabyabAaaMaaraaraaLaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaakaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaiaaiaajaaiaajaaiaaiaaaahqaamahqahqabMahqahqaaaaaaahTabKdpCabLahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyabxabrabrabrabBanyabzabyaaSaaMaaraaraaLaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaapaapaapaapaapaadadAaadaapaapaapaapaapaadaakaaaaadaadaadaaaaaaaaaaaaaadaadaaiabeaaoabfaaoabgaaiaadaadaaaahqabmabnabkablabiabjabhdAodAodAoabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaacaaaaaaaaaanuabcabdabdaaYaaZanyanyaaVanyanyajCaDZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadadwaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadabaaaaaaTaaTaaOaaTaaTaaaadAaaaaaTaaTaaOaaTaaTaaaaakaaaaaaaaaaadaaaaaaaadaadaadaaaabbayNayPaaRayQayRaxKaaaaadaadawyayUayTawsaySawscRVcRWcRXcRXcRXcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaayJabcabdanyayIayHanyabAayFabAanyanyanyaadaadaadaadaadaakaakaakaakaakaakaakaaaaelaaaabaaakaakaakabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadabaaaaaaTaaTaaOaaTaaTaaaaAwaaaaaTaaTaaOaaTaaTaaaaakaaaaaaaaaaadaaaaaaaadaadaadaaaabbayNayPaaRayQayRaxKaaaaadaadawyayUayTawsaySawscRVcRWcRXcRXcRXcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaayJabcabdanyaIVaIIanyabAayFaIxanyanyanyaadaadaadaadaadaakaakaakaakaakaakaakaaaaelaaaabaaakaakaakabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadacNacNacNacNacNaaOadAaaOacNacNacNacNacNaadabaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaiayZazaaaCazdazbaaiaaaaaaaadahqazfazeazhaAmabiabjabhcRXcRXaziahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaopabcayVanyawKameaaVayYabAayXayWayXayWaaaaadaaaaaaaaaaaEaaaabCaupaupaupabCaaaaelaadaupabCaupaupabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaaEaadaadaadaadaadaadaaaaaaaaiaajaaiaaiaxRaxOaxQaaiaaiaxKaaiaadahqaxIaxHaxGaxFaaaaadaxNaxMaxLcGdahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyaxDaxEanyaxCaxBanyanyanyanyanyanyanyaadaadaaaaaaaaaaakaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaapaapaapaapaapaadadAaadaapaapaapaapaapaaaaakaaaaaaaadauWauWauNauWaaiaaiayCaaWaytayvaaRaysaayaygayeaaiaadahqaybaxXawCaAlabiabjabharEarEayfahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadanyanyanyaxJapmaxVaxTapVaxSavbaxWanuaaaaaaaaaaadaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaaaaOaaTaaOaaOaaTaaaajdaaaaaTaaOaaTaaTaaOaaaaaaaaaaaaaadauWauWauNauWaaiawxaaBaayaayawpawrawuaaJawwawAaaiaadawyawEawDawCawBawsasDauxarEarEarEcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaakaaaaaaaaaaaaaadaaaanuawcauuawdawhavTavhawbawaavSavNaopaaaaadaadaadaadaadaadaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaxnawZaayaaxawXaaIaxmaaoaxkaaXaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaapaapaapaapaapaadadAaadaapaapaapaapaapaaaaakaaaaaaaadauWauWauNauWaaiaaiayCaxkaytayvaaRaysaBMaygayeaaiaadahqaybaxXawCaAlabiabjabharEarEayfahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadanyanyanyaxJapmaIoaxTapVaxSavbaxWanuaaaaaaaaaaadaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaaaaOaaTaaOaaOaaTaaaajdaaaaaTaaOaaTaaTaaOaaaaaaaaaaaaaadauWauWauNauWaaiaxaaaBaayaayawrawxawuaaJawwawAaaiaadawyawEawDawCawBawsasDauxarEarEarEcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaakaaaaaaaaaaaaaadaaaanuawcauuawdawhavTavhawbawaavSavNaopaaaaadaadaadaadaadaadaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaxnawZaayaaxawXaxcaxmaaoaaWazRaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaOaaOaaTaaTaaOaaaabYaaaaaTaaOaaTaaOaaTaaaaaaaaaaaaaadauWaaiauUauVaaRaaRauRaaRauSauTaaUauPauQaayaayauOauNauMauDauCauzahqaaaaadahTahRahRahRahTaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaadaadaaaanyanyanyapmauvaurauqapVausauuautanuaaaaadaaaaaaaacaaaaaaaakaadafgafgafgafgafgaupafMaupafgafgafgafgafgaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadavuavtavtavtdehaadaadaadaadaadaadaakauNaaiavGavMaayaayavCavDavzavBadbavyavwaaRaaRavrauNavsavoavnavqavpaadaadahaahmahmahmahpaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaanuauYavbauXaxJavjavhavfaveaqOavkaopaaaaadaaaaaaaaaaaaaaaaakaaaafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaEHaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaEJaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaadaaaaadaadabYaadaadaaaaaaaaaaaaaaaauWabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiauNawyavoavnavqavpaaaaadaYvabvabvabvabvabvaaaaadaaaaaaabwabwaWyaWMaYuabwabwaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadanyanyanyapmamRaurauqapVaFdavbauYanuaaaaadaaaaaaaaaaaaaaaaaEaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaciaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaDuabvabvaadaadabwabwaDFaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupafMaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaadaaaaadaadabYaadaadaaaaaaaaaaaaaaaauWabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiauNawyavoavnavqavpaaaaadaaaabvabvabvabvabvaaaaadaaaaaaabwabwaWyaWMaYuabwabwaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadanyanyanyapmamRaurauqapVaFdavbauYanuaaaaadaaaaaaaaaaaaaaaaaEaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaDuabvabvaadaadabwabwaDFaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaadaaaakhaQJakhaadaadaadaadaadaadauNaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiaajayOaWfaWeaWkayOaadabvabvaEsaEqaEpaEpaErabvabvaadabwaDYaEaaEbaEeaUCaVuaEmabwaadahwaSNaSPaWxahwaaaaaaaaaaadaaaaaaaaaaadaaaaopaseaExaEvaEwaDoaEuanyanyanyanyanyaaaaaaaadaaaaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaaaaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaBsaBtaBLaBKaBJaBIaBWaBRaBOaBNaadabvaBDaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaaaaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaCKaCHaCLaDgaCHaDhaSLaDiaCTaDkaadabvaDfaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaCUaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaDlavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapMalGapXalGalHaoFakTaqaalJareakTaKBagVaKBaaaaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaApaAoaAnaexaexaexabvabvabvaznazmazlazkazjazjazEabvaadabwaCdaCeaBYaCcaAIaBXaztabwaadahwaAqaAraCAahwaAcadraAdadsaAeaAfadraadaaaaopaAgamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanSapKakSammanHamnafaakTamoarHamqakTajnbMbaKBaKBaaaauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaAzaABaAAaexaAuaAyaAvabvabvabvaAtaAsabvabvabvabvabvaCYabwabwaEgaElaEnaDGaEfabwabwaCYahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFaoFanQammamnamnalKalDakTaleanbakTbrTbrTbrTaKBaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaakBakAakCakAatxakkakdakiaexaknailakmabvakuakoakpakxawtatyatUamuabvakzakwaaQaqTaqwanYattatsaaQatqatwahnatvatuakvahwajwadsadsadsadradranyajHajKajJajAajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZanGanHanIanJalDaoYapvbrTaKBbHMaiNbrTaKBaadaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMaiHacZaiIaexaikailaimabvaioaipaiqairaiJaemacBaiLaiKajMajLajOajNajVajPajXajWajZajYakbakaakjakcaiFahwadsadsaicaibadraiaahZahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFamSaoFamVaoHanEahdanFahfarXaeJarXahbahVaKBaKBaKBagVaKBaKBaKBaKBaaaadradradrafQagXagZagYahFahGahDahEahCahBahAahBahMahKahKaiEaiCaiDaiBaidaidahLahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsahsadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZaoFapyalHaoFaoFbHMacpbrTaKBaKBaKBaKBaKBbMbbHMarnafVaKBafNaKBafZadraklajwafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaghabQacBahhaexaexahlafkahiaguahkahjahuahtahvafbahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaoFamZaqjaqkaqkaqlaqmajqacpbrTaKBafBbHMbrTaKBbrTbrTbrTaKSaKBaKBaKBadsafxagOaviafzafyafyafAafvaeraiRafuabvahgafwaheabvabvacCagyacCabvagAagPacCagqaflafkagxagwaguagsagiaftafsafbagpagoagmafeaeYaeYaeYaeZaeVaeTaeXaeWakWamiamiamiamiamiaoAadZabXaeOaCWaeQaJOaJOaJObmQaJOaeSaCWaQsbnBaQsaQsbWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFaoFarjaoFarkaoFaoFagrbZlarXaeJarXaeIbrTaKBbrTbrTbHMaeNagvbrTaKBadsahsadsadsafQaeLaeKaeKaeqaeraiRaesacIaeDaeEaeFaefaegaemaenaeoabvacBaeCaexafjaflafkafoafnafqafpaeHaeGafcafbafdacTacTaaQaaQaaQaaQaxUakKamJadYadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWaedbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBajuajtaKBbMeaDnadpbrTaspaKBagracpbrTaKBbrTaKSbrTaKBadobrTbHMbrTaqhbrTaKBadsahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaezadOaeyaevaewacBaeuaexaetaepadRadPadNadMadLadJadKadJadIadHadGadEadFadEadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadlbyOavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaiWaeUafrafRbrTbrTbrTbrTbrTahcagnafTacracqagvbrTbrTbrTbrTaKBagracpadsadradradradradradradradradracAadradradsahsaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFacEacGacHabPabQacBacDacCaduadzadvadcadaadtadmacWacVacYacXacUacTabNabNabNaaSaaQabOabUabTabSabRabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIackarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBarVarXarXarXarXarXatzatBazLatCatDatEatFatHatGatIasaasaatKasaasaascatQaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatrazqazpabvabvabvazsacCaexaaQaaQazuazxazwazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaugavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBaBMaBPaKBaadaaaaaaaaaaaaaaaaaaaadapZapZapWaKBasLaUDbHMbrTbrTbHMarSaowaowarTagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCaslaslasEaslasFasCaslasbarZashasgasjasiaslaskaskasgasnasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaapWapZapWaKBaKBaKBbHMbrTbrTbHMbrTarlbrTaqcagrbJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsaqsaqDaqoaqBaqCaqsaqAaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUazoaqSajgajhajiargaeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFarJarKarQarsaCWavAapCartarwarwaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaXOaXOaXOaoyarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGapeapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaoKapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWavXavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFawYanharuawVaxaaxbaxcaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIamHaldanMamyamxamAamzamBaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaamWanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldaoOahWalPaoRaoSaoTanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkaxZanZayaaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyarfawVazNazOazPazQazRadrakYadraaaazSazTazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldagWalbalaapEapFapGaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwalvaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObnZbnObnVboaboebobbombolbnHbnJbnKbnLafQainaneaqqaqrbnMahWaffaqvaneakZbaabnubnvbntbnlbnlbnmbngbnhaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCyaCzadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbpzbpAbpwbpxafQainaneaneanebpCaneaneaneaneakZbaabaabaaboHbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbqWbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObqcbqebqfbqhafQainajvaeMbqkbqobqsaeXaeXaeXbqibaabpZbqbbpWbpXbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbpQallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLbrnaqLaqLaqLakZbaabaabaabrbbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbqvaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaGraCkaCkaCkaCkaCkaCkaGsaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubaWbsebaVbaybppbbUboubaTbaUbaRbitbisbiqbiebikbicbidbiobipbimbDpbAObAQbAfbAgbDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoeanKaogaohaoiaojaoabiuafSaDsadqagSaqLakZbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbhuaEDallarNbhAbhzbhyaFZasPbhxaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXaHYaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbjfbdMbdMbdMbjmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabjybjzbjxaDqatAaqLbjDbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbiIaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbjeasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbkYbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbEzbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohapRaoaaBTaBUasBaBSaunaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbkmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbjZaHLbjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkaCkaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsblWaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubmobmtbmmbmnbmbaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbiIaEDacjarNaKhblOaHDaGaasPblPblQaDBaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkaLnaCkaCkaCkaEXaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpaLqaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbyhbLlbNpbNcbNcbyFbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoabyQbyWarGbyXaAwaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtblQaDBaAObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkaCkaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKubAbaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbzCbOTbzDbzFbOTbzRbzZbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbAhaoaastasuasuasvaswastasuasxasyaoabAcbAdawvaqLazcaqLbAeaIEaIFaKRbAIbnbaIEaIFaKRaKRaIFbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbAnbAmbAjbAiblQaDBaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkaEUaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbzCbOTbBEbBFbOTbzRbBDbjlaaaaFsbSubAPaLQbTmaGYbANbSsaFsaaaaxwbAXatZbjwbATbAVaueaueaueaojaueauebAZaojaoabBdbBhbBtbBvbBabBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbCdbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbCzbCybCsbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtobTobBHbBHbBHbBKbBHbBHbBHbBHbBLbBHbBHbBHbBHbBKbBHbBHbBHaQucCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsbmNbmNaCkaEUaEUaEUaEUaCkaCkaCkaCkaEUaEUaKBarVagvafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebygaKAbyfbyebydbxcaKBasNaYhbDcbDdbTqbTCbTDbOTbzRbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQaojaueaueaueaojaueauebCUaojaBQbCWbCXbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaIFbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbDAaTgbDCbDBbDIbDHbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQKbzWaQMbmNaEUbueaEUaQPaEXaEXaEUaEUaEUbuwaQRbueaKBasdbKdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaQVaQVaQVaQVaQVaKBbsbbsgbshbsdbsdbrQbrRbrNbHmbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbsiavlarPbsCaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbsNbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahraQsbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbtmbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaSgaQNaQNaShaSiaQNaQNaQNbvfaQNblSblSblSblSaQNaQNbvnaQNaQNaQNbtqaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbsfaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbtvbtxbjlaTLbtzaTLaNnbHwbukbISaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbubaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLasPbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpbtybtfbthbtibtjaTsaTtaTsaTsaTsaTsaTuaTsaTvaTwaTxbtXaTzaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbvLbjgbjlbvJbIZaTMaNnbvAaNpbvraNnbvsbIVbvdbvcbvebqFbuZbuYbuMbLGbvIaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybvBbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTasPbtpbwjasPbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaNKbJjaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbwncXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaULaWLbPDaUNaUMaUMaUMaUMaUOaQOaQOaUPaUMaUMaUMaUOaQOaUQaURaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbxdbxebuzbwXbwYbwZbwSbwTbzYbLjaVkbwOaQbaVsburaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVEaVDbvbbwKaVDbwJaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMbxnbKvaQsaNLbxpbxpbxpbxrbxtbxsasPbxubuVbxiaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKawebxSaxxayMaweayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaWgaQNaQNaQNaTpaWhaTpaWiaQOaQOaWjaTpaWhaTpaOWaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaOpaOmaOlaQVaQVaQVaQVaWzaKBaKBaONaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaOjbbKaOiaVMaQsaOhaThaNLaOdaOgaNXaOaaNVaNWaTmaNUaNSaNRaHoaNTaNOaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaadaaaaaaaadaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaNBaPBaXEbeNaXFbhtaXHaVgaXIaXFbeNaXJaXKaQNaXLaXMaNIaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaLwaKzaJXaLyaSeaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaKYaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaSXaNiaTjaSYaNjaSXaSYaSYaLdaYGaRkaJzaMAaMHaMFaMyaMwaMzaHUaMvaMuaHUaaaavAacjaVMaMraNcaXdaNdaVMaQsaNbaQsaNLaMTaMUaMVaMWaMPaMQaNLaMSaMoaMmaHoaMlaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaMgawqatXawlawkawjatXawiaMdaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjbcsaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaRnaHgaRmaYpaRpaZNaZNbfGaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaQSaQFbbJaQEaVMaQsaQsaQsaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaRiaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaQlaFUaFUaFUatXawgawfavmatXatXatXauZavdavaaGvaFUaFUaFUaQvaQucXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaSHbaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLbbyaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCbdGbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaPAaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjbqpatXatXbvlatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaIrbckbcqbcraTpaZjbcsaGVaInbcvbcwbcxbcybczbcAbaeaGCaISaIbaIbaIaaHuaHqaHgaHgaHgaHgaGPaHsaHraGNaGOaGHaGQaGRaFhaIRaIQaIOaIHaYpbRAaZNaIxaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdrbdsaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaFYaFVaIqaFVaGccCmaaaaFUaFUaFUaImaweaJBaCRbBfbBgbhNaCRaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaFcaZlaFGbekbelbembenaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaGJaZNaGKaGMaYDaGSaZLaADaBxaTLaadaadbeVaKxaEEaDdaBebfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaFubfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaFSaTmaFJaFLaFMaFnaFoaFnaFmaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaFYaFVaGbaFVaGccCmaaaaFUaGeaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnbfUbfVbfUbaHbaHarMaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaLOaLMaZLaBxbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaFUaLFaGeaJJaImatXatXatXaLEatXatXatXatXaLHaLIaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaIoaIIaIwaHgaGFaHtaNNaPgaIfaHgaKGaKIaKHaKCaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIVaIWaFOaGjaOGbiwbiwbiyaIXaFOaIYaIZaJaaJbaJcaJdaJfaJlaJlaJlaJhaZbaJtaJqaJqaJqaJqajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaddlJaaaaJAaJvaJDaJCaJHaJFajeaJIaJEaFUaFUaFUaJPaJJaJJaJQaJJaJJaJJaJKaJJaJJaJJaJWbbAaJTaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbqbbRbjQaTLboLaZOaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObjPaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbcWbcPbcNbcRbcQaZbbcMaJqaJqbcJbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbpmbbBbbPbqKaFUbpnbqRbqSbcdbcfbciaJJbbZaJKbbZaJJbbTbbYbcbbccaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbkEbkFbkGaSWbfsaYOaTaaYOaSUaSWaZcaXYaZdaYKbkXbkXaYLaYMbkXbizbjJaYdbizbkXbkXaYNbkXaYEaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTaZQaYpceXbaIbaGbaPbaMbkdbawbazbaxbaubatbavaSRaQsbDEavAaUqaSRbasaQsbOoavAaQsbaravAbambaobapbaqbakbakbakbalaJlaJlaJlaJhbaibagbafbadbacaZZaZXaaaaaaaZWaZVaTQaZIaTQaTQaZIaTQaTQaTQaTQaTQaTQaZIaTQaTQaTQaTQaTQaTQaZIaTQaZJaZRaBzaBzaZSaZCaZybltaZDaZDaZEaZGaZFaZaaZeaZfaZkaYTaZtaYRaZwaYRaYSaYTaYWaYXaYYaYZaLIaLIaYQcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbkGaSWbqTbulbfEbdKbTjaSWcNWaZvbfubmCbsXbmCbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbdcbcBblebdLbeibpHbtIbfBblqbmYbmZbskbsYbncbndblGbeJbnfboPboybnibnjbnkaSCaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbgpbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbgRbgTbhobhjbhqbhpbhsbhrbafbadbacbhhcXlaaaaaabhibbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbwVbwobvKbuobfIbfHbggbyGbgebgabfRbgcbfXbyEbfXbfYbfRbfWbyibfOaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPBaQNaXFbzWaXFbajbofbogbohaXFbzWboibojaQNaZjbkFbkGaSWbqTbfFbdFbdKbdJaSWbpPbkybdAbdBbosbosbkVbdwboxbdCbnCbosbosbvhbvhbySbosbosbdubkVbdvbosbosbnDboAboBbkQblebbubbVbbfbdbbbfbbvbbfbtIbtIboJboKboLboLboLbjhboNbndbdEbjiboLboLboLboQboRaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbeTbeSbeGaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaTmaTmaTmbeCaTmbfpbfobfnbfrbsaaJqaJqbffbfebeUaaaaJAbfjaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbrObexbbPbrKaFUberaZebeabebbejbdWaJJbdYbrEbdTaUybdUbdVbqUbdSaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaULaWhaULaWiaQOaQOaWjaULaWhaULaTbbrsbpNbkFbkGaSWbfsaSVaTaaSVaSUaSWaSvaSuaTfaKBaTeaTiaTiaKBaKBaTcaKBbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTaOPaSTaPEaWFaUBaWGaQkaUtbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbqCaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSaaTWaTVavAaTUavAavAaUnbbNbbMavAaQsaTZaTXaTYaUhaUiaUbaUgarwarwarwapDaTmaTmbhcbhdaTlaTkaTCaTqaTPaTNaTRaTQaTKaTJaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaUuaFUaUraUpaUzaUAaUxaUyaJJaJJaJQbfCaJJaUIaUEaUFaUKaUUaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaQUbrsbrsbrtaQOaQObrubrsbrsbrraRAaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnbrJaRIaKBaKBaKBaKBaKBbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGaXGbleaVJaOoaNwaVpbtIaOJbspboLbsqaZuaSwbssbssaREaRFaZnaYUboLbsxbsyaZTbszbsAbsBaZzaSIbsEbsFaTdaYtaEMbqFbsHaSaaRZaSdaSbaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaSnavAavAavAavAavAavAavAaRPavAaRRaRSaRTbiJbiJaRQbiJbiJbiJbgXbiJbiKaRNaRMaRKaRJaROaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaSAaSBaSDclMbPObdHbdRbdZbeqbeybfbbfqaLIaLIaSQaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULaWLaWYaUcaUfaUeaUeaUTaUeaUeaUebcaaXibbWaXkaXjaKeaWZaXbaXaaXfaXeaXhaXgaXmaXqaKBbMbbMebMbaKBaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbcHbtVbtWbcObtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZaXraRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbiJaYkaYlaYbaYeaYmbgXbkraYnaYsbkuaVRbkabtubjCbjBbkAbjEbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaYzaYAaYxclMbixbiAbiabinbkJckwbjrclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaQNaWgaQNaQNbuNbojaQNbuNbojaQNaQNaQQaQpaKBaMjaKBaKBbuQbuRaUXbuQbuQbuQbuQbuQaKBaKBbrTbrTbrTaKBaKBacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqaaVbaYpbRAaXTaXSaUHaSEaXRaSEaUHaUHaXBbBibviaZxbqtbvkaTBbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbkhaVlaVnaUvaVoaVGaVIaVKaVZbgXaQibksbmdbmeaUdbjAbmhblXbmibmjbiObPGaWdaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaadaaEaAXaAXaAXaAXaAXaAXaaEaAXaAXaAXaAXaMfaWBcCmaaaaFUaFUaFUaFUclMbfJbfKbfNbgibgNbhVbhWbhXaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBapvbrTciTbuQciSccRbwkbwkbwlbwkbuQciUbHMbHMbrTbrTbrTaKBacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdIFaXcbqgaYpaZKaXTcbabZQbZWbYobYobYobYEbYnbBibwPbwQaZPaZPaZPceOcfrcfrcfrcfuaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbqGcjqcjscjscjscjscjscjtaRUaRUaRUcjxaXuaVUchochpchYcimdIGcimcidciYavAaRPavAcjaaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPbHnbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaaaFUclMdIIdIHbkJbkJbkJdIKdILclMaFUaaaaMfdIJbBHcjTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBchSarXagvbuQchIccRbwmchLbxHchQbuQbrTbrTbrTbrTbrTbrTaKBacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcbkcbAcaPcdqcaPcbgcaPcdqcaPcaTcdDcdjbylcjIbynbyobypbypbypcegbypbymbyrbysbytceicekbyobyocjJbywbyxbyybyocelcfLbyCbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjrbZmbAGcfocfnbHMaqhbuQcfmccRbxHbxHbxHbxKbuQbrTbrTaKSaiNbrTbHMaKBacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAbWNcblbXCbzPbZzbZJcbGbZycfxbWcbVXbVYcaWcaZbzHcaQbZObzIbzIbzJbzKbzIbZObzMbzNbzObzPcaDcaWcfwbzSbzTccMccLbzPbzVcftccCcjwcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUcfOcfWavAbpqcgQcgYcgUcgLcgBcgOcgMcfGcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtchxbBHbBHdIBcCmaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjbyVaKBaZmbMeaqhbuQbWmccRbxHbxHbxHbxHbuQbrTbrTbrTarVarXbKoaeJcdbahccdabrVbrVbtEbZfbzobrVbrVbrVbrVbrVckVaXcbqgbWCbZkbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqbBjbBibVjbBlbBmbBnbBobBlbVibBibBjbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlbCGbZrbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfeceZceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDscAlajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjcnjaKBaZmbHMaqhbuQbWmccRbCfcnlchQbxHbuQadobrTbHMbrTbrTbrTaKBacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNeckQcvOckLbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbCGdvMdvNdvOdvTbCGbCGbCGbCGbCGcPEbCGcmYbCObqGaSacnScjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnuaRKcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcnYbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaMfaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaMLaWgaPBaQNckJaSlbxFaQNaQNaMLdAbaZjckbaKBaZmbrTcmrbuQcmJcmsbCfcmtbDqbEHbuQaKBaKBaKBaKBaKBaKBaKBacpbrTbqacmpbrVbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadckDcjWcjXcDccJWclQcvxcPCcOKbCGcgVbCGckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcmvcmCcmDcmAcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbKIbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpclsbrsbrsbrsbrsbrsbrsbrsbrsbrrbrsbpNchraKBaZmbrTaqhbuQclnclobxHbxHbxHcljbuQbQsbrTbrTbHMbrTciTaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTchUcicchNchAbCGcgVbCGcmubqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYaQsaQsaSRbgXbxqcfKcfJcfNcjVbxvbxwbxxbxychHbbmcfibQZbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtclAaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIbwncXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULbwBaUMaUcciMcihbtgcilbtgbtgbtgcgRcgPckeaKBaZmbHMaqhbuQbWmbGabxHbxHbGabxIbuQbrTaKSaeNarXagvbrTaKBacpasdbqacjUbxXckacjZbrVccDckdckcbrVcdtbqacdFbqgaYpcdIbSAcbRbFvcbScfYcbicbicbUcbXcdPccqbBqdzXdzYbGybGzbGAbGBdAaclGcjlbGFdzZbCGcgIbJPcgncgobCGcglcgXcgWbCGcgVbCGcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQscxnaQsbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaTpceQaTpaQNbuNbojaQNbuNbojaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQbrTbrTbrTbrTbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbCGbHEbJPbLubLDbOdbWxbWnbWpbCGbQWbCGbXkbqFbqGbUXcwybLzbLEbLEbUZbFCbLzbVabVcbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCbGdaQsaQsbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZbWbbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXFbeNaXFaaaaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUybUubuQbuQbuQbuQbUvbuQbuQbuQarnbMebHMbrTbUAbrTaKBacpbKQbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIobFubJObBqcKqcLEcxwbJDbJEcbnbJGcyvbJHbJIcyWbCGbFsbGIbPJbGNbUPbUQbUCbUNbFpbEFbCGbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjbUcbHabKabKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQsaThbgXbArbZqbZpbUebBXbAvbBYblXbxwbAwbbmcaObKIbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULceQaULaaaaaaaaaaaaaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnbrTbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPbHgbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTebDQcbibDlbCJbCLbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbCGbEabEcbDYbSXbOdbSIbSIbSWbCGbGYbCGbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAaQsckFaQsaQsaOhaQsckEaQsbgXbgXbQXaSkbAubiJbAvbDhblXbDibOybbmchBbQZbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtbKtbKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpbSDbSAbSAbQTbQTbQTbSAbSAbBqbBqbBqbBqbBqbMEbMFbMGbMEbMHbMHbMHbMFbMIbMEbMFbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNbCGbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJbPHblXbEDbEEbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgaYpbYeccrccnccicciccicclcdoccrccrccrccYbYLccrbNDbNJbNKbNKbNKbXTbNKbXYbNNcccccKccJbXwcfSccFccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQbFRbnIbFSbFTbFUbOzchXccabHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTarnaKBaadaadaadaadaadaadaadaKBbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZbPabPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjchPcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjcaucavcatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcancaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbKIbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfcalbBHbBHbBHbBHbBHbBHbBHctQbBHbBHbBHbBHbBHbBHbBHcaccCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTbKZbrTbrTaKBaaaaaaaaaaaaaaaaadaqXaKBbrTbrTbZAbKtbKtbKtbKtbKtbKtbZDbZEbZEbZEbOMbOScdJcQabTPbQabQdbQcbQebQdbZXbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZcgZcdUchachachibQtbZobRXbRUchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMbZjcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXblXblXbbmccjbQZbHWbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBaKBaadaadcgNaadaadaadaKBaKBaKBaKBaKBaKBaKBaKBbMbbMbbHMbYfbYcbYdbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLbXZbRwbRwcezceDbRwbRwbRwbYacbDbqFcbBcbCbRDbRDbRDbXDcexbRDbRDbXWaZLbvCbugcbdcbbaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMibWQbMibMibiNbRhbWLbWMblXbWHbevbWJbevbevbevbWGblXbbmbIHbWybUiaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBaadaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqaKBaKBaKBaKBbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLbRRbSNbRRbLObYKbRRbSNbRRbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjaUnbMkcrCavAbgXbMnbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbKIbUiaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaadaadaadaadaaaaaaaadcZYbTsbTsbTsbTsbTsbTtbTubTvbTwbTwbTxaKBaUDaUDaKBbTybrTaKBbMbbSobWqbBMbSmbSnbXxbXxbXxbXxbSCbSBaZLbePbYIbWsbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpciAcpjaQsaUobNgcsgbNabNfavAavAavAbvSavAavAbgXbNibMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbKIbUiaadaaaaaaaadaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaaabKmbKjbKjbKeaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMaKBbwqbKoaeJbKpbzkbKnbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAavAavAaQsaQsbKvaQscasbgXbKubKFbKDbKCbKAbKzbKybKxbKwbKYbKWbKUbKLbKJbKIbKHaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbVObVPbVQbVRbTvbVSbNRbOqbOCbTQaKBbKZbrTaKBbTybrTaKBbMebtwbNSbObaKBbOcbQNbQubXxbXxbQRbYIbYIbAUbYIbLabDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJaQsavAcfRchjavAaUnaQsaQsaQsaOhaQsaThbgXbwbbwbbLybwbbLFbwbbLybLCbLAbLIbKIbwbbLJbWFbLHbgXaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdaKBbrTbOBaKBcsrbZwaKBbxzbxzbxzbxzbxzbxzbZbbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEccubSEcctcctcjRbUIbTLbTSbTTbRRbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbLWbCRbOWctcckvarwbNrarwbGdavAaQsaQsaQsbOObOQaQsaQsbgXbgXbONbOIbOEbOFbOEbOIbOEbOFbOFbODbOEbODbOHbgXbgXaadaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadbYtcWRcWRcdvbTsbTsbTsbTsbTsbYwbYwbPibYwbYwbYwbYwbYwbYwbYwbPkbYwbYwcazcaBcafcagcbmbxzcaHcaGcaJcaIcaCbYIcaFcaEcaLbStcdsbZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbZhbYwaQsaQsaQsavAaQsaQsavAaQsaQsaQsaQsaQsbOoavAavAaadaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadcZYaaeaaeaaebPlbNmbPlckAckBckBbTibThbZxbZxbZxbZxbZxbZxcpHbNncslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbBWbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgbNobYwbWBbJfbDNbElbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgcbubYwbWIbZibUsavAciVcjQavAbyOaQsbEvaQsavAcgaavAaadaadbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadbZZaaebYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsbYBbJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBccEccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgcizbYwbYwbYwbYwavAavAavAavAavAavAavAbYwbYwaadaaaaaaaadbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaaaaadaadbYwbYwbYhbZGcaicpqcajbZsbZubIUbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwbHrbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGebIibJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbQLbYwbFYbFZbGbavAbVGbVHbVIbVKbVTbWebYwaaaaadaadaadaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacdWcbybQLbQLdBrcpqbQLcpqbYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTSbYNbYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbrZbkSceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQdttcbxcakbGwbGvavAcbwaQsbQLbQLcpqbENbYwaaaaadaaaaaaaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaabYwbTKbQLbQLdBocpqbUobYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNbECcfvbEUbUqbZNbZNbDbbTSbCZbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebEnbEmbEbbZgbQLbYwbErbEtbEubYwbTFcpqbQLbQLbQLbQLbYwaaaaadaaaaaaaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaacdWbVDbQLdBDctgcpqbQLbVEbYwbQKbYwcfacfbcfccfdbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNbFFcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbESbEPbFrbESbESbFjbEbbZgbZhbYwbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaaaaaabYwbYwbKccpqcpqbQLbQLcfAbYwbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpcgycembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFbILbIJbESbIdbIjbIebInbRIbQLchmbYwbIMcwNceScfkbQLbQLbQLcotbHfbYwaadaadaaaaRCaaaaRCaRCaRCaRCaRCaRCaRCaaEaRCaWuaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacdWcfEbQLbQLbQLbQLbUobYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgcotcgJbYwbJebJbcfDcakbJmbIXbQLbQLcfCclraaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaabYwccdbQLcbYbYwcbZcbZbYwcgKbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMbHybKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRbHBcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHebHdbEbbZgcizcjubYwbYwbYwbYwcbEcbKbHjbQLbQLbHhbYwaaaaadaaaaadaWuaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaaaaaacdWceRceKceJbYwctGctGbYwbIObQKbYwcjzcjAcjBcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehbPtbAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkbTHckpcaScbfbTEbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwaaeaaebYwbYwbYwbYwclrbYwbYwbYwaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaaaaaabYwcdWbYwcdWbYwcdYdJqbYwbQLbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwbYlcpXctZcubcumcunaaeaaeaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaaaaaaaaaaaaaaaaaabYwbYwdJpbYwbQLbQKbZhcucdCMbQLbQLbQLbZhbQLctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbctecsYcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvcvRdttdEabITdEbbYwbYwbYwaKBaaeaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaadaadaaebYvdJsbYwcLZdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCcwGcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmlcngcnicJRbYvbJTbQLbYwbQLbZgbYwcABcjvaKBaadaadaaadnUdnUdnUdnUdnUdEpdEpdEpdEpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizbQLbQLbQLbQLcpWbQLclwbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEcvrcoCcuJcvqcxJcxJcvGbTScBgcmPcvCclUcwzcwDdBtcwFcvHcwwckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvbQLdEnbYwbQLbZgbYwbQLbQLcAIaaaaadaaadnUdEodnUdnUdnUdnUdnUdnUdnUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLbZhbQLbQLbQLbQLbZhbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGcEbcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRcJScmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcrSbYvbYwbYwbYwbQLcJTdEAbZMcpZbYwaadaadaaadnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZbYwclfckXcpZcuSbZhcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjczGczJczuczyczldEvcyIcyRcAKdEwcDSbTSdBMcjccANcmTcmTcmTdBtcmTczKczLczXcBOcKNcKJcrfcpMcpNdCqcKfcKddCNcpSdBwdExcpVdEycrScdYdBxclpclpclpcpYbYwbYwbYwbYwaaaaadaaadnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdASdAccMycoCcMBcMCcMTcMCcMBcoCdELdEKdEMcnRdENcnNcNBcpbcNDcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKctKcNhdCudCvaaaaadaaadnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCcKOcKwcKpcKwcKTcoCdEBcKOcKOcxJcrtbTSbYNcjccMpclUcMoclWdBtdBAcLvcLYckUbTXcrEcrFdAKcrHcrIcrJcrKcrLdzRcrNcNCcqodzPdCpcrSdBFcOGcrVcrWcLlcLicLjcKUdEIcMXaaaaadaaadnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdokctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqlcrfcsFcsFcsGcsHdCFcqncsKcqmcsMcxNcqocsPcsQcsRcsScsTcsUcsVdCGcnrcnscsWaadaadaaadnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaacwucyJcwucwucyJcwucyJcwucwucwucyJcwuaaaaaabYwcizcpWbYwbYgdnEcqqcqScqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIclKclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDctBcrScrScrScrScrSctCcrScPtcphcpndmIcrSctHctIctJctKctLctMctNctKcrfctKaaeaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacwucjmcjjcnXczbczcczdczeczfczgczdcwuaadaadbYwbQLcpWbYwbYwbYwbYwbYwbYwbYwcqiduXduRduUduYcAactfckOcDPcmLclIclKclIduAduNcDRckOcszbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswcrScuqcurcuscutcuucuvcuucuwcuxcuycrScrSctKcqQcsactKcuzcpxcpBcuCcpGaaeaaeaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpoduvajCaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadaaEcyJczxcjnczzczcczcczAczBczCczDczAcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttdtNdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdoBdoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQcrfcuqcurcvfcvfcvgcvhcvicvjcvkcvlcrScvmbQLdACcvpctKctKctKctKctKcomcxdaaeaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcnAczZcrMcAbcAcdApczcczccAecAfconcAhczicwEaaaaaacwucwucwucwucwuctvdAuctvctvdADdAFdABctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacudcrScuqcurcvfcvMcuucvNcuudCHcvPcvQcrScuScdXcvobQLbQLbYwaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadcwucAwcrUclDcAzcAzcsmdzUcACcADdAiczhdAedzVdAhdAfdwbdwFdxxcwudvAdvBctvdvVcrXdzOdzScxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZctldAMctmcrSbZhbZhcwnbQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcztdDycAZcBacBbcBccticBectdcsNcBhdDCdDBdDAdDzdDGdDHdDDdDFdDKdDLdDIdDJdDOdDPdDMdDNdDRdDSdDQbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcAScwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucBCcBDcuZcBecBFcvncBHcBIcvIcBKcwudDpdDodDqcwudBjdBpcyMcwudBqdBUctvdCsdCxdCydCzcxLdCAdCCdCLbYwdAWbZxbZxbZxbZxdBacARclpdBidBgdBdcwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdCJcmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucCacCbcCccCdcCecCfcCgcChcCicCjcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcwxcwvcwsbYwcwocnpcnpcnpcnpcwmbNGbNGcwjcwTcwkbTScwbcsecnmdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucCxcCycCzcCAcxecBDcCBcxecamcBDcwuaadaadaadbYwcmzbQLbQLbQLcxgcxbclpclpclpclpcxacxLcwUcwQcwWcwVcwMcnpcwJcwJcnpcnpcnpcnpcnpcnpcwkbTSbYNcsecokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaacwucCJcCycCKcCLcxecCzcjncxecCXcCzcwuaaaaadaaabYwcdYcxRcxQcxQcybcxWbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocnpcyZczaczjczrczvczFcyDcyKcyLcyQcyXcsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcCWcCXcCYcCZcDacDbdAAcDadAAcDbcwuaaaaaaaaabYwbYwcAAbYwbYwbYwcAEbYwbYwbQLcwmcAncAmcAmcAycAmcAmcBfcBicAXcAYcoxcoxcoxcoxcAHcALcAFcAGcAMcAQclpclpclpclpcBkcBjclpcBlcBScoVcoWcxlcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucwucDkcDlcwucwucyJcwucwucwucyJcwuaadaadaadbGhcGkcGjbGhcGccGbcGacDTbGhcJZbYwbYwbYwbYwcGlbYwbYwbYwcnpcCCcAYcBJcBLcBMcBNcBNcDIcDLcDMcDGbYwbYwbYwcOzcdYcxqbWubYwbYwcBScwXcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwcwNcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadcwucAwcDwcwuaaaaadaaaaaaaaaaadaaaaaaaaaaaabGhcMVcMQbGhcMYcMDcMhcMLbGhbpYbpYaBrcNKcNfcNbcNJcNkcoucLtcAXcAYcLkcwTcwTcxDcLxcLAcLwcxDcwTcwTaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwbQLbQLbQLcNLbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaacZYaaaaaaaadaaaaaaaaaaadaadaaaaaaaaabGhcoKbMpbGhcOMcOZcONbJZbGhcQwcPSbtBbtBbrPcQXcQLcQLcRkcyKcRucRvbYNcwTcRMcRTcRTcRUcSjcSScTgcyAaaabYwcOzbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLbJTcpFbQLcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaadwIaaaaaaaaEaaaaaaaaaaadaaaaaaaaaaaabGhcTMcTidiLdcndkOdkGdkRbGhdlobpYdlxdlvdlCdlydlGdlGdmjdmvdlZdmbdmHcxDcyBcxGcxGcolcoqcxGcyaczkaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaakaaaaaaaaaaadaaaaaaaaaaaabGhcoKcoJbGhcoHcoGcoFcoDcoAcozbpYbwzbwAbrPcoybwzbKEcoucovcowcoxcorcwTcoscxGcxGcolcoqcxGcojcwTaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaaaaaEaakaaEaadaaEaaEaaEaaaaaEbpYbGhbGhbGhbGhbGhbGhcoQcoRbGhbGhbpYcoPbxVbrPcoybxUcoObpYbpYcwTcxDcwTcwTcoNcxGcxGcoMcoqcxGcoLcwTaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaabMhcoTbKBbpYcpacoXcpmcpicpgcpdbpYbKEbzibwAbrPcoybwzbwAbMmbpYcprcpscpEcwTcpTcxGcxGcxGcoqcxGcppcwTaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcpRcyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaaaaacqVcqYbKBcqrcqscqscqscqxcqPcqBcqbcpUcqhcqccqpcqkbxUbMlaUVcoucrgcricrkcrqcrjcrecrecrecqZcxGciIcyAaaaaadaaacwZcwZcwZcwZcwZcwZcznclzczpcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaadaadaaaaaaaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaacqVcqYcrRcpgccsccsccscrPbDtcrOcsDcstcspcsocsccrTduHbKEcrubpYcincqjcoEcqjcqjcqjcqdcrAcpQcpOciIczkaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaaaabNjctxbKBcpgccsccsccsbJabpYbpYbpYbMlaUVctwbxTctnctrccgaUVcoucinciQcsOciQciQciQciIcthctacincsXcwTaaaaadaaacxpcAocApcApcAqcApcArcAscAtcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbpYbpYbpYctzbxTbxTbxTbxTctTdJmbpYbpYctVbKEduMbKEduMctWbpYbpYctXckscufckscksckscugcuTcuVcuWcuXckPaaaaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbpYcuYbIYbIYcvdcvacvscvebpYcvtcvubMlaUVbMlaUVcvvcvtbpYcvwcypcvAcypcypcsqcypcypcvScvUcypcxDaaaaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbpYbpYbQJbPUbPUbQIbpYbOLbpYbpYbpYbQJbPUbPUbQIbpYbpYbpYcyAcBmcBPcBmcKvcClcBncBmcBmcxHcBocwTaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadcyNcypcyNcypcyNaaacMccBRcBRcMcaaaaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadczkcBmdBkcBmczkaaadAEcBmcBmdAEaadaadaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcCvcCvcCNcCOcCPcCQcCRcCScCTcCocCocCUcwZaadaaaaaaaaaaadaadaAXaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfcDgcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocDmcCqcCrcDfcAucDncDocCvcCvcCvcwZaadaadaaaaaaaaaaadaAXaadcDAcDAcDAcDAcDAaaacDiaadcDAcDAcDAcDAcDAaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcDxcCvcpPcrccCrcDfcAucpLcoZcCvcCvcCvcwZaadaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaacDUaaaaadaaaaadaadaadaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcDCcDDcCPcDEcApcCScDFcCocCocCUcwZaadaaaaaaaaaaaaaadaAXaaacDhcDhcDhcDhcDhaadcDXaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcBScBScBScBScDdcDHcDfcAucDdcBScBScBScBScwZcwZaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDZcEacDZcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCncCocCocDJcCqdwHcDKcDfcAucAudwGcTPcTOcCvcCvcwZaaaaaaaaaaaaaaaaadaadcDAcDAcDAcDAcDAaaacAWaaacDAcDAcDAcDAcDAaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvccpcibcAucAudBHcAucAucjfclVcTNcCvcCvcwZaaaaaaaaaaaaaaaaaEaaaaaaaadaadaadaaaaaacAWaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvcDQdEWcTEcTHcTycTxcTrdEVcTDcTzcCocCUcwZaadaadaaaaadaadaAXaaEaAXaAXaAXaaaaaaaaacAWaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcwZcwZcwZdETcSYcTccTfcTecThdEUcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaAXaadcEcaadaAXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcSDcSIcSncSqdEScSkcbpcSbcRCcRBcRzcOHcRrcwZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcwZcPPcwZcRacRhcRjcaRcRmcRqcRacwZcOHcwZcwZaadaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadaadcwZcPPcwZcwZcQKcQtcCvcQUcQKcwZcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcCvcCvcQtcCvcCvcCvdEQcwZcOHcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaacaaaaaacwZcPPcwZcQxcCvcQucCvcQJcCvdERcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadcwZcPPcwZcCwcCvcCvcPrcCvcPsdEPcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcwZcwZcwZcwZcwZcwZcwZcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadaadaaaaadaadaaaaaacZYaaaaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaEaaaaadaaaaaaaaaaaaaaadaiaaaaaaaadaaaaadaaaaadaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaakaakaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaakaaEaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaakaakaadaaaaaaaaaaaaaaaaadaakaaEaakaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaEaakaaaaaaaadaakaakaakaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaadaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaCYaBtaBLaFVaBJaBIaBWaBRaBOaBNaadabvaDiaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaadaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaCHaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaOiaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaCUaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaOpavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapMalGapXalGalHaoFakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaAyazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaAfadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaNBaNdammanHamnafaakTamoarHamqakTaMmaLEaLqaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFaoFanQammamnamnalKalDakTaleanbakTatUavXawYatCajeaadaadaadaaaaadaaaaaaaaaaaaaaaakBakAakCatQarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHatBajJatzajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZanGanHanIanJalDaoYapvbGxaWoarTamuargasFasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaioaipaiqairaiJakbacBakiakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadraiaahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFamSaoFamVaoHanEahdanFahfarXapKarXahbapRapeaWoapZaKBagVaKBaKBaKBaaaadradradrafQagXagZagYahjahGahDahEaiIahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHaiDahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsahsadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZaoFapyalHaoFaoFbHMacpbrTaWoanKamHamWanSaWoaKBaKBarnaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaoyabQaenaidaoKaexaoOafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaoFamZaqjaqkaqkaqlaqmajqacpbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBahLafxagOaviahMafyafyafAafvaeraiRalvabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftafsafjagpagoagmafeaeYaeYaeYaeZaeVaeTaeXaeWakWamiamiamiamiamiaoAadZabXajKaCWaeQaJOaJOaJObmQaJOakSaCWaQsbnBaQsaQsbWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFaoFarjaoFarkaoFaoFagraiFarXaeJajnagqaiWbrTajAaKBbHMagSagvafVaKBadYahsagPagAafQaeLaeKaeKahVaeraiRaesacIaeDaeEaeFahlafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjaiBacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWaedbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBaaIajtaKBbMeaDnadpbrTaspaKBafBafTbrTaKBardafdafuaeSaeOaKBaeubrTaqhbrTaKBaetahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaeIadOaeyaevaewaenaaXaghaexaezadRadPadNadMadLadJadKadJadIadHadGadEadEaepadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadlbyOavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaeCaeUafrafRbrTbrTbrTbrTbrTahcagnaeqacracqagvbrTbrTbrTbMbaKBaefaZmadradradradradradradradradradracAadradradrackaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFadoacGacHabPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNabNabNabRaaQabOabUabTabSadFabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIaciarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBarVarXarXarXarXarXaIfaZmadraInatDatEatFawpatGatIasaasaatKasaasaascaApaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatraAgazpabvabvabvaAnaAoaexaexaaQazuazxazwazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaugavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadapZapZapWaKBasLaUDbHMarlbrTbHMaGPaGCaGJaGVagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslaGsasCazsasbarZashasgasjasiaslaskaskasgaskasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaapWapZapWaKBaKBaKBbHMbrTbrTbHMaFSbrTaKBaqcaFubJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUazoaqSajgajhajiaGraeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFarJarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGaFmapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaFcapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWaBTavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMaxbaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkayaanZayIaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyaxVawVazNazOazPazQahZadrakYadraaaazSazTazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwaxZaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywbyFafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCybDdadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObAnbANbAPbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbAjallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbBMaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubaWbsebaVbaybtqbbUboubaTbaUbaRbitbisbiqbtjbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLakZbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbhxaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbvBasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbwJbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaBSbyWaBUbwoaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbwmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbjZaHLbjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkaCkaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbwOaEDacjarNaKhblOaHDaGaasPblPblQaDBaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQaaEXaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtblQaDBaAObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKubAbaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbSsbAmbRRbAiblQaDBaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbCzbCybCsbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbBKbBHbBHbBHbBHbZMbBHbBHbBHbBHbBKbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebViaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbDHbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaQVaQVaQVaQVaQVaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbEzaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbEPbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbFFaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbFYaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbAVaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbGdbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbNcbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbKZaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsburaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbwKaVDaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbxpbxpbxpbOdbxpbIZaNLbxubuVbNmaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbxSaxxayMbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaWjaOmaOlaQVaQVaQVaQVaWzaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaONaNLaNUaNSaNRaHoaNTaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaURaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUIaNiaTjaSYaNjaSXaSYaSYaLdaYGaUNaJzaMAaMHaMFaMyaMwaMzaHUaMvaMuaHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaNbbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaMlaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaPAawqatXawlawkawjatXawiaOWaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaXIaHgaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaXbaFUaFUaFUatXaTKawfavmatXatXatXauZavdaTJaGvaFUaFUaFUaQvaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCbdGbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaIrbckbcqbcraTpaZjaSeaROaRJaRFaRKbcxaRAbczbcAbaeaTlaISaIbaIbaIaaHuaHqaHgaHgaHgaHgaSHaHsaHraGNaGOaGHaGQaGRaFhaIRaIQaIOaIHaYpbRAaZNaSDaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdraSvaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaQlbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaLOaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaTwaTvaIwaHgaGFaHtaNNaPgaTuaHgaKGaKIaKHaKCaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaTsaIUaFOaGjaOGbiwbiwbiyaTtaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbnKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbmtbkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIaYQcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbsfbdKbrKbdKbspaSWbsxbjxbfubmCbrJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbdcbcBblebdLbeibpHbtIbfBblqbmYbmZbskbsYbncbndblGbeJbnfboPboybnibnjbnkaSCaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbgpbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbltbhjblWbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpaadaaaaadaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbpxbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbohbkVbdvbosbosbnDboAboBbkQblebbubbVbbfboNbbfbbvbbfbtIbtIboJboKboLboLboLbjhbppbndbdEbjiboLboLboLboQboRaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbeTbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqbfpbjmbjrbsaaTmaTmbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbqRaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBaWGaQkaUtbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDaJqaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaYSaZvbPOaMQaMQbelaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaOJbajboLbsqaZuaSwbssbssaREaZQaZnaYUboLaZObsyaZTbszbsAbsBaZzaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaSnavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaUEaUFbcvclMaTVaTWaUuaUKaUAaXdaXkbcwaLIaLIaSQaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMbfXaUcaUeaUeaUeaUebiebhybiobcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbalaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbcHbtVbtWbcObtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlbiIaYeaYmbgXbkrbjebdHbkuaVRbkabtubjCbjBbjEbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWclMbixbdRbiaaZVbkJckwbeqclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAaXTaXSaUHaSEaXRaSEaUHaUHaXBbBibviaZxbqtbvkaTBbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbfbaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGaWdaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUclMbfJbfKbfNaZkaZtaZSaZyclMaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYdJZaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpaZKaXTcbabZQbZWbYobYobYobYEbYnbBibwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPbHnbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaaaFUclMcumctZcunbkJcwscvRcAIclMaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpcngcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcbkcbAcaPcdqcaPcbgcaPcdqcaPcaTcdDcdjbylcjIbynbyobypbypdLrcegbypbymbyrbysbytceicekbyobyodLsbyobyxbyybyocelcfLbyCbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQdJSaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAbWNcblbXCbzPbZzbZJcbGbZydKidKfdKbbVYcaWcaZbzHcaQbZObzIbzIdJqbzKbzIbZObzMbzNbzObzPcaDcaWcfwbzSbzTccMccLbzPbzVcftccCcjwcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHdIBcCmaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVbrVckVaXcbqgbWCbZkbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqbBjbBibVjbBlbBmbBnbBobBldDMbBibBjbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKbZrbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDscAlajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmdKnaUxdKkdKjdKlaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcnYbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpbrVbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlcmAcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbKIbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNdLOaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnbHMdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYaQsaQsaSRbgXbxqcfKcfJcfNdLRbxvbxwbxxbxychHbbmcfibQZbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtclAaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIbwncXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMdLJdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpasdbqacjUbxXckacjZbrVccDckdckcbrVcdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPccqbBqdzXdzYbGybGzbGAbGBdLDclGcjlbGFdzZbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQscxnaQsbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCdJCaQsaQsbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZbWbbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUybUubuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcKqcLEcxwbJDbJEcbndJIcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHabKabKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQsaThbgXbArbZqbZpbUebBXbAvbBYblXbxwbAwbbmcaObKIbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnbrTbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPbHgbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAaQsckFaQsaQsaOhaQsckEaQsbgXbgXcJTaSkbAubiJbAvbDhblXbDibOybbmchBbQZbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtbKtbKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJczJblXbEDbEEbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgaYpbYeccrccnccicciccicclcdoccrdBiccidASbYLccrbNDbNJbNKbNKbNKbXTbNKbXYbNNcccccKccJbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQbFRbnIbFSbFTbFUbOzchXccabHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTdAcaKBaadaadaadaadaadaadaadaKBbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZbPabPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjchPcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjdvYdAacatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcancaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbKIbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfdvMbBHbBHbBHbBHbBHbBHbBHctQbBHbBHbBHbBHbBHbBHbBHdvJcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTdJybrTbrTaKBaaaaaaaaaaaaaaaaadaqXaKBavabrTbZAbKtbKtbKtbKtbKtbKtbZDbZEbZEbZEbOMbOSdokcQabTPdoBbQdbQcbQebQdbZXbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZcgZcdUchachachachidmIbRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMbZjcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXblXblXbbmccjbQZbHWbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBaKBaadaadcgNaadaadaadaKBaKBaKBaKBaKBaKBaKBaKBbMbbMbbHMbYfbYcbYdbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLdJMbRwbRwcezceDbRwcNWbRwbYacbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDdJLaZLbSXbNpbNpciTaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMibWQbMibMibiNbRhbWLbWMblXbWHbevbWJbevbevbevbWGblXbbmbIHbWybUiaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBaadaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqaKBaKBaKBaKBbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjaUnbMkcrCavAbgXcyWbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbKIbUiaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaadaadaadaadaaaaaaaadcZYbTsbTsbTsbTsbTsbTtbTubTvbTwbTwbTxaKBaUDaUDaKBbTybGxaKBbMbbSobWqdJzbSmbSnbXxbXxbXxbXxbSCbSBaZLbePbYIbWsbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobNgcsgbNabNfavAavAavAbvSavAavAbgXbNibMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbKIbUiaadaaaaaaaadaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaaabKmbKjbKjbKeaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMaKBbwqbKoaeJbKpbzkcvrbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAavAavAaQsaQsbKvaQscasbgXbKubKFbKDbKCbKAbKzbKybKxbKwbKYbKWbKUbKLbKJbKIbKHaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbVObVPbVQbVRbTvbVSbNRbOqbOCbTQaKBdJybrTaKBbTybrTaKBbMebtwbNSbObaKBbOcbQNbQubXxbXxcvMbYIbYIbAUbYIbLabDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJaQsavAcfRchjavAaUnaQsaQsaQsaOhaQsaThbgXbwbbwbbLybwbbLFbwbbLybLCbLAbLIbKIbwbbLJbWFcvNbgXaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdaKBbrTbOBaKBcsrbZwaKBbxzbxzbxzbxzbxzbxzczzbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbLWbCRbOWctcckvarwbNrarwdJCavAaQsaQsaQsdJBbOQaQsaQsbgXbgXbONbOIbOEbOFbOEbOIbOEbOFbOFbODbOEbODbOHbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadbYtcWRcWRcdvbTsbTsbTsbTsbTsbYwbYwbPibYwbYwbYwbYwbYwbYwbYwczGbYwbYwcazcaBcafcagcbmbxzcaHcaGcaJcaIcaCbYIcaFcaEcaLbStcdsbZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbZhbYwaQsaQsaQsavAaQsaQsavAaQsaQsaQsaQsaQsbOoavAavAaadaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqaadaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadcZYaaeaaeaaebPlczjbPlckAckBckBbTibThbZxbZxbZxbZxbZxbZxcpHbNncslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbBWbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgczlbYwbWBbJfbDNbElbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgcbubYwbWIbZibUsavAciVcjQavAbNobWIbEvaQsavAcgaavAaadaadbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadbZZcxdbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBccEccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgcizbYwbYwbYwbYwavAavAavAavAavAavAavAbYwbYwaadaaaaaaaadbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaaaaadaadbYwcfdceZcfncfrcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbQLbYwceRbFZbGbavAbVGbVHbVIbVKbVTbWebYwaaaaadaadaadaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaaaaadcfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbrZbkSceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQdttcbxcakcfEbGvavAcbwaQsbQLbQLcpqbENbYwaaaaadaaaaaaaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbQLbYwbErbEtbEubYwbTFcpqbZbbQLbZlbQLbYwaaaaadaaaaaaaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbZhbYwbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaaaaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFcrtcqSckQcjXcmrclQcqicmubQLdJwbYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadaadaaaaRCaaaaRCaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgcotcgJbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaacacciScalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgcizcjubYwbYwbYwbYwcbEcbKbHjbQLbQLbHhbYwaaaaadaaaaadaWuaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaaaaaacaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpcaScbfbTEbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwaaabYwbYwbYwbYwclrbYwbYwbYwaaaaadaadaadaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaaaaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaaaaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLcpZcuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaadaadaaebYwdJsbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizbQLbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPcvCclUcwzcwDdBtcwFcvHcwwckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvbQLdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLbQLbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRcJScmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcrSbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjccANcmTcmTcmTdBtcmTczKczLczXcBOcKNcKJcrfcpMcpNdCqcKfcKddCNcpSdBwdExcpVdEycrScdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbcNDcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKdLncNhdCudCvaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdMScKTdMRdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjccMpclUcMoclWdBtdBAcLvcLYckUbTXcrEcrFdAKcrHcrIcrJcrKcrLdzRcrNcNCdLldLkdCpcrSdBFcOGcrVcrWdLjdLicKUcKUdEIcMXaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqlcrfcsFcsFcsGcsHdCFcqncsKcqmcsMcxNcqocsPcsQcsRcsScsTdEAdIHdIIcnrcnscsWaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaacwucyJcwucwucyJcwucyJcwucwucwucyJcwuaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDctBcrScrScrScrScrSctCcrScPtcphcpndMhcrSctHctIctJctKctLctMctNctKcrfctKaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacwucjmcjjcnXczbczcczdczeczfczgczdcwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPcmLclIclKclIduAduNcDRckOcszbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswcrScuqdMmcuscutcuucuvcuudMpcuxcuycrScrSctKcqQcsactKcuzcpxcpBcuCcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadaaEcyJczxcjndMoczcczcczAczBczCczDczAcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQcrfcuqdMmcvfcvfcvgcvhcvidMlcvkcvlcrScvmbQLdACcvpctKctKctKctKctKcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcnAczZcrMcAbcAcdApczcczccAecAfconcAhczicwEaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdABctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacudcrScuqdMmcvfdMucuudMtcuudMscvPcvQcrScuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadcwucAwcrUclDcAzcAzcsmdzUcACcADdAiczhdAedzVdAhdAfdwbdwFdxxcwudvAdvBctvdvVcrXdzOdzScxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZctldAMctmcrSbZhbZhcwnbQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddMrcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcztdDycAZcBacBbcBccticBectdcsNcBhdDCdDBdKWdKVdKXdDHdDDdDFdDKdDLdKYdDJdDOdKEdKCdKDdKFdDSdDQbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcAScwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucBCcBDcuZcBecBFcvncBHcBIcvIdMycwudDpdDodDqcwudBjdBpcyMcwudBqdBUctvdCsdCxdCydCzcxLdMwdCCdMxbYwdAWbZxbZxbZxbZxdBacARdMvbCRdBgdBdcwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdCJcmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucCacCbcCccCdcCecCfcCgcChcCicCjcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcwxcwvdzPbYwcwocnpcnpcnpcnpcwmbNGcwjcdYcwTcwkbTSdMacsedMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwudMccCycCzcCAcxecBDcCBcxecamcBDcwuaadaadaadbYwcmzbQLbQLbQLcxgcxbclpclpclpdKtdKucxLcwUdKscwWcwVcwMcnpcwJcwJcnpcnpcnpcnpcnpcnpcwkbTSbYNcsecokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaacwucCJcCycCKdMdcxecCzcjncxecCXcCzcwuaaaaadaaabYwcdYcxRcxQcxQcybcxWbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocnpcyZczadMeczrczvczFcyDcyKcyLcyQcyXcsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcCWcCXcCYcCZcDacDbdAAcDadAAcDbcwuaaaaaaaaabYwbYwcAAbYwbYwbYwcAEbYwbYwbQLcwmcAncAmcAmcAycAmcAmcBfcBicAXcAYcoxcoxcoxcoxcAHcALcAFcAGcAMcAQclpclpclpclpcBkcBjclpcBlcBScoVcoWcxlcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucwucDkcDlcwucwucyJcwucwucwucyJcwuaadaadaadbGhcGkcGjbGhcGccGbcGacDTbGhcJZbYwbYwbYwbYwcGlbYwbYwbYwcnpcCCcAYcBJcBLcBMcBNcBNcDIcDLcDMcDGbYwbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadcwucAwcDwcwuaaaaadaaaaaaaaaaadaaaaaaaaaaaabGhdKvcMQbGhcMYcMDcMhcMLbGhbpYbpYaBrcNKcNfcNbcNJdKwdKocLtcAXcAYcLkcwTcwTcxDcLxcLAcLwcxDcwTcwTaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaacZYaaaaaaaadaaaaaaaaaaadaadaaaaaaaaabGhcoKbMpbGhcOMcOZcONbJZbGhcQwcPSbtBbtBbrPcQXcQLcQLcRkcyKcRucRvbYNcwTcRMcRTcRTcRUcSjcSSdKycyAaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaadwIaaaaaaaaEaaaaaaaaaaadaaaaaaaaaaaabGhcTMdKAdiLdcndkOdkGdkRbGhdlobpYdlxdlvdlCdlydlGdlGdmjdmvdlZdmbdmHcxDcyBcxGcxGcolcoqcxGcyaczkaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaakaaaaaaaaaaadaaaaaaaaaaaabGhcoKcoJbGhcoHcoGcoFcoDcoAcozbpYbwzbwAbrPcoybwzbKEdKocovcowcoxcorcwTcoscxGcxGcolcoqcxGcojcwTaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaaaaaEaakaaEaadaaEaaEaaEaaaaaEbpYbGhbGhbGhbGhbGhbGhcoQcoRbGhbGhbpYcoPbxVbrPcoybxUcoObpYbpYcwTcxDcwTcwTcoNcxGcxGcoMcoqcxGcoLcwTaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaabMhcoTbKBbpYcpacoXcpmcpicpgcpdbpYbKEbzibwAbrPcoybwzbwAbMmbpYcprcpscpEcwTdKqcxGcxGdKpcoqcxGcppcwTaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcpRcyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaaaaacqVcqYbKBcqrcqscqscqscqxcqPcqBcqbcpUcqhcqccqpcqkbxUbMlaUVdKocrgcricrkcrqcrjcrecrecrecqZcxGciIcyAaaaaadaaacwZcwZcwZcwZcwZcwZcznclzczpcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaadaadaaaaaaaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaacqVcqYcrRcpgccsccsccscrPbDtcrOcsDcstcspcsocsccrTduHbKEcrubpYcincqjcoEcqjcqjcqjcqdcrAcpQcpOciIczkaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaaaabNjctxbKBcpgccsccsccsbJabpYbpYbpYbMlaUVctwbxTctnctrccgaUVdKocinciQcsOciQciQciQciIcthctacincsXcwTaaaaadaaacxpcAocApcApcAqcApcArcAscAtcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbpYbpYbpYctzbxTbxTbxTbxTctTdJmbpYbpYctVbKEduMbKEduMctWbpYbpYctXckscufckscksckscugcuTcuVcuWcuXckPaaaaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbpYcuYbIYbIYcvdcvacvscvebpYcvtcvubMlaUVbMlaUVcvvcvtbpYcvwcypcvAcypcypcsqcypcypcvScvUcypcxDaaaaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbpYbpYbQJbPUbPUbQIbpYbOLbpYbpYbpYbQJbPUbPUbQIbpYbpYbpYcyAcBmcBPcBmcKvcClcBncBmcBmcxHcBocwTaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadcyNcypcyNcypcyNaaacMccBRcBRcMcaaaaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadczkcBmdBkcBmczkaaadAEcBmcBmdAEaadaadaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcCvcCvcCNcCOcCPcCQcCRcCScCTcCocCocCUcwZaadaaaaaaaaaaadaadaAXaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfcDgcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocDmcCqcCrcDfcAucDncDocCvcCvcCvcwZaadaadaaaaaaaaaaadaAXaadcDAcDAcDAcDAcDAaaacDiaadcDAcDAcDAcDAcDAaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcDxcCvcpPcrccCrcDfcAucpLcoZcCvcCvcCvcwZaadaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaacDUaaaaadaaaaadaadaadaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcDCcDDcCPcDEcApcCScDFcCocCocCUcwZaadaaaaaaaaaaaaaadaAXaaacDhcDhcDhcDhcDhaadcDXaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcBScBScBScBScDdcDHcDfcAucDdcBScBScBScBScwZcwZaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDZcEacDZcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCncCocCocDJcCqdwHcDKcDfcAucAudwGcTPcTOcCvcCvcwZaaaaaaaaaaaaaaaaadaadcDAcDAcDAcDAcDAaaacAWaaacDAcDAcDAcDAcDAaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvccpcibcAucAudBHcAucAucjfclVcTNcCvcCvcwZaaaaaaaaaaaaaaaaaEaaaaaaaadaadaadaaaaaacAWaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvcDQdEWcTEcTHcTycTxcTrdEVcTDcTzcCocCUcwZaadaadaaaaadaadaAXaaEaAXaAXaAXaaaaaaaaacAWaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcwZcwZcwZdETcSYcTccTfcTecThdEUcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaAXaadcEcaadaAXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcSDcSIdKKcSqdEScSkcbpcSbcRCcRBdKLcOHcRrcwZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcwZcPPcwZcRacRhcRjcaRcRmcRqcRacwZcOHcwZcwZaadaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadaadcwZcPPcwZcwZcQKcQtcCvcQUcQKcwZcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcCvcCvcQtcCvcCvcCvdEQcwZcOHcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaacaaaaaacwZcPPcwZcQxcCvcQucCvcQJcCvdERcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadcwZcPPcwZcCwcCvcCvcPrcCvcPsdEPcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcwZcwZcwZcwZcwZcwZcwZcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadaadaaaaadaadaaaaaacZYaaaaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaEaaaaadaaaaaaaaaaaaaaadaiaaaaaaaadaaaaadaaaaadaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaakaakaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaakaaEaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaakaakaadaaaaaaaaaaaaaaaaadaakaaEaakaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaEaakaaaaaaaadaakaakaakaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10389,7 +10581,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxcOPcOPcRQcRRcRScOxcOPcOPcOPcOxdDndDmdDldDjdDkcOxdxucNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcRGcRGcRGcRGcRGcRGcRGcRYcRZcSacRAaaaaaacRNdyucSccSdcSdcSdcSdcSdcSecSfcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSgcSecShcShcShcShcShcScdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxdyAcOPcOPcOPcOPcSlcOPcOPcOPcSmcOPcOPcOPcOPdBVcOxdxucNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcSocSocRGcRGcRGcSpcRAdyEcSrcSscRAaaaaaacRNdyucSccSdcStcSdcStcSdcSecSfcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSgcSecShcSucShcSucShcScdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxcOPcOPcOPcOPcOPcSvcOPcOPcOPcSwcOPcOPcOPcOPdyGcOxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcRGcRGcRGcRGcSxcSxcRAcRAcSycRAcRAaaaaaacRNdyucSccSdcSdcSzcSdcSdcSecSfcRPcRPcRPcRPcRPcSAcSBcSAcRPcRPcRPcRPcRPcSgcSecShcShcSCcShcShcScdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxdyAcOPcOPcSEcQrcOxcSFcSGcSHcOxdBVdyGcOPcOPcOxcOxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcSJcSJcRGcSKcSLcSMcRAcSNcSycSOcRAaaaaaacRNdyucSccSdcSdcSdcSdcSdcSecSfcRPcRPcRPcRPcRPcSAcSPcSAcRPcRPcRPcRPcRPcSgcSecShcShcShcShcShcScdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxdyAcOPcOPcSEcQrcOxcSFcSGcSHcOxdBVdyGcOPcOPcOPcOxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcSJcSJcRGcSKcSLcSMcRAcSNcSycSOcRAaaaaaacRNdyucSccSdcSdcSdcSdcSdcSecSfcRPcRPcRPcRPcRPcSAcSPcSAcRPcRPcRPcRPcRPcSgcSecShcShcShcShcShcScdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxcOPcOPcOPcOxcOxcOxcSQcSRcOPcOxcOxcOxcOPcOPcOPcOxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcRGcRGcRGcSKdyDcSTcRAcSUcSycSVcRAaaaaaacRNdyucSccSdcStcSdcStcSdcSecSfcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSgcSecShcSucShcSucShcScdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxcQrcSWcSXcOxcNvcOxdyvdyvdyvcOxcNvcOxcOTcSZcTacOxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcRGcRGcRGcRGcRGcRAcRAcRAcRAcRAcRAaaaaaacRNdyucTbcSdcSdcSdcSdcSdcSecSfcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSgcSecShcShcShcShcShcTbdywcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcOxdyvdyvdyvcOxcNvcPXdyocTddypcPZcNvcOxdyvdyvdyvcOxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRAdyxdyzdyycRGcRGcTjcTkcTlcTmcTncRAaaaaaacRNcRNcRNcTocTocTocTocTocRNcROcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcROcRNcTocTocTocTocTocRNcRNcRNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11060,16 +11252,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdHRdHRdH aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdHAdHBdHCdHDdDwdHydGBdGBdGBdEJdnTdnTdnTdnTdGndDudDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlrdHzdlsdlFdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdkIdludkMdltdkYdkXdDtdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaadEJdHIdHJdHGdHHdDwdHOdGBdHNdHLdHMdHKdGvdGvdnTdGndHFdDudDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdHEdHEdlwdlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdkIdkNdkMdDtdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdHrdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdGAdGBdHydHvdGAdGBdGCdDwdGEdGhdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdLpdGBdHydHvdGAdGBdGCdDwdLodGEdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHgdHhdHddHedGXdHfdGBdGAdHcdGBdHbdGhdGhdGvdGvdGvdGvdGndDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlldljdlkdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdnTdlBdDtdDtdFldFldlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdDtdkHdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodHpdEsdHndGXdHmdGBdHldDwdHkdDwdHjdGhdGhdHidGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdDtdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodKMdEsdHndGXdHmdGBdHldDwdHkdDwdHjdGhdGhdHidGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdDtdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdDwdDwdDwdGUdGBdGVdGXdGWdGZdGYdDwdHadGhdGvdGhdGvdGndGndGTdDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdlidEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaadlfdlfaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdlcdlhdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGOdGPdGOdGQdGBdGBdGAdGBdGSdDwdGRdDwdGhdGhdGhdGvdGvdGndGndGNdDudDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdlidEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfaaaaaaaaaaaadlddlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdEJdEJdGJdGBdGBdGAdGLdGKdDwdGMdDwdGEdGhdGhdGndGndGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdEJdGCdGBdGAdGIdGHdGGdGFdDwdGEdGDdGndGndGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdEJdGCdGBdGAdGIdGHdGGdGFdDwdLodGDdGndGndGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFcdFcdFcdFcdGzdGydFUdFUdFUdGwdFedFedGxdGndGvdGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGsdFLdFLdFLdGudGtdGpdGqdGpdGpdGodFLdGrdGhdGhdGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedGmdFedFedGidGkdGjdFedFedGhdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedGmdFedFedGidGkdGjdFedFedGEdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdGfdGedGddGcdGbdGadFZdFYdFXdFWdFVdFUdFTdFSdGgdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdlcdlgdlhdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFKdFMdFLdFNdFLdFOdFedFQdFPdFPdFRdFJdFedDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdkHdDtdDVdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaddFkdFjdFidFodFndFmdFedFIdFHdFGdFFdFJdFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11170,9 +11362,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdlBdDtdDtdDtdqJdqJdqJdqJdqJdqJdDtdDtdlBdlBdlBdlBdlBdlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlddlddlddlBdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdkQdkXdDtdDtdDtdDtdDtdDtdDtdlBdqkduIduJduKduJdqkduLdtgdtcduOduPdqkduQdtbduSdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaadaadaadaadaadaadaadaadaaddrVduTdsZdtBdrVdrVdrVdrVduVdrVduWdrVdrVdtadqBdqBdqBdqBdDtdlBdlddlddlfdlfdlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdlcdlgdlgdlgdlhdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdDtdlBdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdlcdlgdlgdlgdocdoddlgdlgdlgdlhdDtdDtdDtdDtdqkdtodtndvadvbdqkdvcduPduPdvddvedqkdvfdtpdvhdqkdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaaddvidvidvidvidviaadaaaaaadrVdvjdtmdtBdtjdvmdvnduCduCdvoduCduDdrVdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdlcdlhdDtdDtdkQdkXdDtdDtdofdlgdlgdlgdlgdlgdoedDtdlBdlddlddlddlddlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdkHdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdtqdvqdvrdvsdvedqkduqdIjduqdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaaddvidvidvidvidviaadaaadsodrXdvudvvdvwdrVdrVdrVdrVdrVdrVdvxdvydrVdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlBdlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdlBdDtdFpdDtdDtdlcdlgdlgdocdoddlgdlgdoedDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdlgdlhdDtdDtdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdqkdIkdIldpkdFEdDtdDtdDtdDtdDtaaaaaaaaaaadaaaaaaaaaaaddvidvidvidvidvidvCdsWdvDdvEdsqdvFdtBdtudvGdvHdvIdvJdvKdvLdvydrVdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlBdlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdlBdDtdFpdDtdDtdlcdlgdlgdocdoddlgdlgdoedDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdlgdlhdDtdDtdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdqkdIkdIldpkdFEdDtdDtdDtdDtdDtaaaaaaaaaaadaaaaaaaaaaaddvidvidvidvidvidvCdsWdvDdvEdsqdvFdtBdtudvGdvHdvIdNcdvKdvLdvydrVdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlddlddlddlddlddlBdlBdnTdlBdDtdDtdDtdDtdkIdkMdDtdDtdDtdDtdFpdDtdlBdlBdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdkIdtydtxdtxdtxdtxdtwdkMdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaadaaddvidvidvidvidvidvPdsqdvPdsqdsqdvFdtBdsqdsqdvQdsqdsqdvRdvSdtvdrVdDtdDtdDtdDtdlBdlddlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdnTdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaddvidvidvidvidvidrWdsWdvUdImdsqdvFdvWdugdugdvXdugdugdvYdvZdwadrVdDtdDtdDtdDVdnTdlddlddlddlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdnTdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaddvidvidvidvidvidrWdsWdvUdImdsqdvFdvWdugdugdvXdugdugdNddvZdwadrVdDtdDtdDtdDVdnTdlddlddlddlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdDtdDtdDtdDtdlcdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlhdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaddvidvidvidvidviaadaaaduxdrXdIndvFdtBdsqdsqdwcdvGdsqdsqdvxdwddrVdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdDtdkQdkXdDtdDtdDtdwedweaaaaaaaaaaaddvidvidvidvidviaadaaaaaadwfdwfdwgdwhdugdwidwjdwkdwldwmdvSdvydrVdDtdDtdDtdDtdlBdlddlddlddlddlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdocdoddlgdlgdlgdwndwodwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwqdwrdwsdsqdsqdsqdpfdwudwvdwwdwxdpedrVdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/RandomZLevels/centcomAway.dmm b/maps/RandomZLevels/centcomAway.dmm index e63b6e0632a..9a4aba792cc 100644 --- a/maps/RandomZLevels/centcomAway.dmm +++ b/maps/RandomZLevels/centcomAway.dmm @@ -92,7 +92,7 @@ "bN" = (/obj/machinery/autolathe,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general) "bO" = (/turf/simulated/floor{dir = 2; icon_state = "green"},/area/awaymission/centcomAway/cafe) "bP" = (/turf/simulated/floor{icon_state = "green"; dir = 6},/area/awaymission/centcomAway/cafe) -"bQ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area/awaymission/centcomAway/maint) +"bQ" = (/obj/structure/table,/obj/item/clothing/glasses/welding,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) "bR" = (/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar) "bS" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/awaymission/centcomAway/hangar) "bT" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/awaymission/centcomAway/hangar) @@ -404,7 +404,7 @@ "hN" = (/obj/structure/rack,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) "hO" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) "hP" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) -"hQ" = (/obj/structure/table,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) +"hQ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/awaymission/centcomAway/maint) "hR" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor{icon_state = "white"},/area/awaymission/centcomAway/courtroom) "hS" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom) "hT" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom) @@ -427,7 +427,7 @@ "ik" = (/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/hangar) "il" = (/obj/structure/mecha_wreckage/ripley,/turf/simulated/floor{icon_state = "dark"},/area/awaymission/centcomAway/hangar) "im" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/centcomAway/hangar) -"in" = (/obj/structure/rack,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) +"in" = (/obj/structure/rack,/obj/item/clothing/glasses/night,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) "io" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) "ip" = (/obj/structure/bookcase,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/centcomAway/general) "iq" = (/obj/structure/closet/secure_closet/hos,/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/centcomAway/general) @@ -579,14 +579,14 @@ "lg" = (/obj/machinery/door/window/southright,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome) "lh" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome) "li" = (/turf/simulated/floor{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome) -"lj" = (/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome) +"lj" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) "lk" = (/turf/simulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome) "ll" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome) "lm" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome) "ln" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome) "lo" = (/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome) "lp" = (/obj/structure/table,/obj/item/weapon/lipstick,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome) -"lq" = (/obj/structure/table,/turf/simulated/floor{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome) +"lq" = (/obj/structure/table/woodentable,/obj/item/device/radio/off,/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) "lr" = (/obj/machinery/icecream_vat,/turf/simulated/floor{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome) "ls" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/thunderdome) "lt" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/awaymission/centcomAway/thunderdome) @@ -629,10 +629,10 @@ "me" = (/obj/machinery/vending/boozeomat{req_access_txt = ""},/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/cafe) "mf" = (/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) "mg" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) -"mh" = (/obj/item/weapon/extinguisher,/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) +"mh" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/popcorn,/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) "mi" = (/obj/structure/disposalpipe/segment,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) "mj" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/southright,/turf/simulated/floor{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) -"mk" = (/obj/item/weapon/wrench,/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) +"mk" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/popcorn,/turf/simulated/floor{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome) "ml" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/cafe) "mm" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) "mn" = (/obj/structure/table,/turf/simulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome) @@ -699,6 +699,7 @@ "nw" = (/turf/simulated/floor{tag = "icon-plaque"; icon_state = "plaque"},/area/awaymission/centcomAway/thunderdome) "nx" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/awaymission/centcomAway/thunderdome) "ny" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/centcomAway/thunderdome) +"nz" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/sugar,/obj/item/weapon/reagent_containers/food/drinks/milk,/obj/item/weapon/reagent_containers/food/drinks/ice,/turf/simulated/floor{tag = "icon-barber (WEST)"; icon_state = "barber"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/thunderdome) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -734,14 +735,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVaVagagakakakakakaiaiaiaiaiaiaiaiawaKaWaxaxaXawaYawaZbaauaNaOauakagagbhbhagbbababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVbcbdbdbdbdbdbdbdbdbebdbdbdbdbdbdbdbdbdbdbdbdaVagagakaFaGaHakaiaiaiaiaiaiaiaiaIbfawaxaxaXakakmaakaklXaNaOlSakbjagagagagagagabaabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbnbobpbqbrbdbdbdbdbdbdbdbnbobpbqbrbdbebsaVagagakaQaGaGbtaiaiaiaiaiaiaiaiaIbfawaxaxaXmebubvbwakbxbyaObzakbAagagagagagagabaabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbBbCbCbCbDbEbFbGbHbEbFbGbIbCbCbCbBbdbdbdaVagagakakakakakaiaiaibJbJaiaiaiaIbfawbKanaXakbLbvbMakmibObPbzakakakacababagagabababbkbQbQbQbQbQbQbQbQbQbQbQbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbBbCbCbCbDbEbFbGbHbEbFbGbIbCbCbCbBbdbdbdaVagagakakakakakaiaiaibJbJaiaiaiaIbfawbKanaXakbLbvbMakmibObPbzakakakacababagagabababbkhQhQhQhQhQhQhQhQhQhQhQhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbBbRbRbSbTbUbVbWbXbYbVbUbZcabRbRbBbdbdbdaVagagakaFaGaHakaiaiaIcbccaiaiaiaiakakakaKmjakakakakakcecfcfaKcgchchataaciagagcjagckclclclclclclclclclclclclclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbBbRbRcmcncnbVcncncnbVcncncmbRbRbBbdbdbdaVagagakaQaGaGbtaiaiaIcoaJaiaiaiaiaKcpcpcpcqcrcrcrcrcrmlctctctctctctaBaacuagagcvababbkbQbQbQbQbQbQbQbQbQbQbQbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbBbRbRcmcncnbVcncncnbVcncncmbRbRbBbdbdbdaVagagakaQaGaGbtaiaiaIcoaJaiaiaiaiaKcpcpcpcqcrcrcrcrcrmlctctctctctctaBaacuagagcvababbkhQhQhQhQhQhQhQhQhQhQhQhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdcwcabRcxcnbVbVbVbVbVbVbVcncxbRbScybdbdczaVcAahakakakakakaiaiaIaJaJaiaiaiaicBcpcpcCcCcCcpcpcpcpcfctcEcFcGcHctaBaacuagagabaabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbdcwbHcIcJcKcLcMbVcNcObVcPcQbHcybdbdcRcRcjagagagmxaiaiaiaiaiaIaJaJaiaiaiaiaKcpcpcpcScrcrcrcrcrmyctctctctctctaBaacuagagabaabkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbebdbdbBcUcVcWcXbVcncnbVcPbBbdbdbdbdbdcRcjagagagmxaiaiaiaiaiaIaJaJaiaiaiaiakakakaKmzakakakakakcecfcfaKcgchchbaaacZagagcvababbkbQbQbQbQbQbQbQbQbQbQbQbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbebdbdbBcUcVcWcXbVcncnbVcPbBbdbdbdbdbdcRcjagagagmxaiaiaiaiaiaIaJaJaiaiaiaiakakakaKmzakakakakakcecfcfaKcgchchbaaacZagagcvababbkhQhQhQhQhQhQhQhQhQhQhQhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbecRbdbBdadbdbcMbVcPdcbVcPcmddbdbddedeczaVaVahakakakakakaiaiaiaiaiaiaiaiaIbfdfdgdhdiakbLbvbMakmidjdkbzakakakacababagagcjagcjclclclclclclclclclclclclclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbdbdbdbBdldbdbdmbVcPdcbVbVbFbdbdbdbmdndodpaVagakaFdqaHakaiaiaiaiaiaiaiaiaIbfdfaxaxdimAbubvbwakdsbydtbzakbAagagagagagagabababbkbQbQbQbQbQbQbQbQbQbQbQbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbdbdbdbBdldbdbdmbVcPdcbVbVbFbdbdbdbmdndodpaVagakaFdqaHakaiaiaiaiaiaiaiaiaIbfdfaxaxdimAbubvbwakdsbydtbzakbAagagagagagagabababbkhQhQhQhQhQhQhQhQhQhQhQhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdcRbebdbDbHbHbHcIbVcncnbVcPdubdbdbdbmbccRdvaVagakaQaGaGbtaiaiaiaiaiaiaiaiaIbfdfaxaxdiakakmaakakmBdxdtmCakdyagagagagagagabaabkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbdbdbdbBdzbVdzbBbVcPdcbVcPdAbdbdbdbmbccRdBaVagakakakakakaiaiaIaJdCaiaiaidfaKdDaxaxdidfdEdfdFataudxdtauakakakakakagagagabaabkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbdbdbdbdbBdzbVdGcmbVcPdcbVcPdubdbdbdbmbccRdBaVagakaFdqaHakaiaiaIaJaJaiaiaidfmDdfaxaxazaxaxaxdHaBaudxdtauakmFmGmEakagagababaabkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -763,7 +764,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmgDgDgDgDgDgRgDgS aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmgDgSbHbHgTgDgDhchddchegDgmbccRcRcRhfhgaVgJgKgKhhhievgWeveudIeDgcgrhjhkhlhmhnholMgrgieDdJgAgAgAgAhqhrgAgAgAgAlOgAgAgAfTgAgAicgCgCgCiceYfmfmfIfIfmfmhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmgDhchddchugDgDhvbHbHhwgDgmbccRcRcRcRhxaVgJgKgKhhhyevgWeveueDeDgceufufvfvfvfvfvfxeugieDeDhzhAeJeuaaaaaaaagAhBhCgAfEfEfEfEgAicfEfEfEiceYfmhDfHfHhEfmhFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmgDhvbHbHhwgDgDgDgDgDgDgDgmbccRcRcRcRhGaVgJgKgKhHeuevgWeveueDeDgqhIhIhIhIhIhIhIhIhIgzeDeDlReJhJeuaaaaaaaagAhBhCgAfEgHfEfEgAgAgAgAgAgAgAfmhDfHfHhEfmhFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVhKgDgDgDgDgDgDgDgDgDgDgDhLgmhMhNhOhPhQhGaVeueueueueueudYeueueDeDeDeDeDjmlQeDlQjleDgVeDiOeDhzeJeJeuaaaaaaaagAhRhCgAhShThTicgAaaaaaaaaaahtfmhDfHfHhEfmhFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVhKgDgDgDgDgDgDgDgDgDgDgDhLgmhMhNhOhPbQhGaVeueueueueueudYeueueDeDeDeDeDjmlQeDlQjleDgVeDiOeDhzeJeJeuaaaaaaaagAhRhCgAhShThTicgAaaaaaaaaaahtfmhDfHfHhEfmhFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVhUaVaVaVaVaVaVaVaVaVmTaVaVaVaVaVaVaVaVaVaVhWgWgWgWhWeugWeueueueueueueueueumOeueueueumPeueueueueueuaaaaaaaagAhYhZgAiaibicicgAaaaaaaaaaaidiefmififfmigidaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVaVihiiijikilimczincRcRcRioczaaaaaaaaaaaaeueveveveveveudYeuipiqfrmUiseueuitititeuiueVevivaabkaaaaaaaaaaaaaagAgAgAgAhqiwiwixgAbkbkbkbkbkgAgAgAgAgAgAgAgAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiyiziAiBikikgDimczczczmSczczczfufvfvfvfviCeuevgWiDgWevevgWeuiEiEiEiEiEeueueVmOeVeueueumPeueubkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -799,9 +800,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSlclclclclclclclclclclclclckSlclclckSlclclclclclclclclclclclclckSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclclclclclclclclclclclclclcmYlclclcmYlclclclclclclclclclclclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSmZkSkSkSkSkSkSkSkSkSkSkSlelflgkSkSkSkSkSkSkSlclhlhlhlclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSlilililililjlklklklklllklklklklklllmlllnlokSlclalalalclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSlilililililjlklklklklklklklklklklklklklklkkSlclplalalclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSlqlqlrlrliljlklklklklklklklklklklklklklklkkSlclslslslclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSlililililimklklklklklllklklklklklllmlllnlokSlclalalalclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSlililililimklklklklklklklklklklklklklklklkkSlclplalalclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlclckSnznzlrlrlimklklklklklklklklklklklklklklklkkSlclslslslclclclckSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSlclckSkSkSkSkSkSkSltltltltltltltltltltltltltltltkSkSkSkSkSkSlclclckSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSlulclckSkSlvlvlvlvkSlwlxlxlxlxlxlxlxlxlxlxlxlxlxlykSlvlvlvlvkSlclclclzkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSkSkSlulckSkSkSlAlAlAlAkSnsnmnnnmnnnmnplCnondnqndnqndnrkSlAlAlAlAkSkSkSlclzkSkSkSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -812,10 +813,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlElUlElVkSlulckSlWlHlIldldldlJlulClClClClKlClClClKlClClClClzlJldldldlIlHlYkSlclzkSlZlElUlEkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSlElElElVkSlulckSnhkSmbmbmbmbkSnfngnlngnlngnelCncnjnknjnknjnikSmbmbmbmbkSnhkSlclzkSlZlElElEkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSlEmclVkSlulclclckSmdmdmdmdkSlwlxlxlxlxlxlxlxlxlxlxlxlxlxlykSmdmdmdmdkSlclclclzkSlZlElEkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSkSlulclclckSkSkSkSkSkSmfmfmgmgmgmgmhmfmfmgmgmgmgmfmfkSkSkSkSkSkSlclclclzkSkSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSlclclclclclclckSmfmfmfmfmfmfmfmfmkmfmfmfmfmfmfkSlclclclclclclckSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSkSlulclclckSkSkSkSkSkSmfmfmgmgmgmgmflqmfmgmgmgmgmfmfkSkSkSkSkSkSlclclclzkSkSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSlclclclclclclckSmfmfmfmfmfmfmfljmfmfmfmfmfmfmfkSlclclclclclclckSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSlclclclclclcmXmfmfmfmWmfmfmfmfmfmfmfmfmfmfmfmXlclclclclclckSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSkSkSkSkSmmmnmomomVmfmfmfmfmfmpmqmnmrmskSkSkSkSkSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSkSkSkSkSmmmnmomomVmfmfmfmfmfmpmqmhmrmskSkSkSkSkSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSkSkSkSkSmtmumvkSkSkSkSkSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSmwkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakSkSkSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index c7b10c917cd..bc140f3db10 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -2542,7 +2542,7 @@ "aWT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/secondary/exit) "aWU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/secondary/exit) "aWV" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port) -"aWW" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/port) +"aWW" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aWX" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/port) "aWY" = (/obj/structure/rack{dir = 4},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/port) "aWZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2569,7 +2569,7 @@ "aXu" = (/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 28; pixel_y = 0},/turf/simulated/wall,/area/turret_protected/ai) "aXv" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/captain) "aXw" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"aXx" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"aXx" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aXy" = (/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "aXz" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/starboard) "aXA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2588,7 +2588,7 @@ "aXN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aXO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aXP" = (/turf/simulated/wall,/area/maintenance/disposal) -"aXQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) +"aXQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (NORTH)"; icon_state = "pipe-j2"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/port) "aXR" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aXS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aXT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2646,10 +2646,10 @@ "aYT" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) "aYU" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aYV" = (/obj/machinery/conveyor{dir = 5; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aYW" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"aYW" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aYX" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aYY" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aYZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/disposal) +"aYY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/port) +"aYZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aZa" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "aZb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/port) "aZc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2714,9 +2714,9 @@ "baj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bak" = (/turf/simulated/wall,/area/maintenance/asmaint2) "bal" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bam" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bam" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor/plating,/area/maintenance/disposal) "ban" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bao" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port) +"bao" = (/obj/machinery/mineral/stacking_unit_console{dir = 2; machinedir = 8},/turf/simulated/wall,/area/maintenance/disposal) "bap" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port) "baq" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bar" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -2794,11 +2794,11 @@ "bbL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bbM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bbN" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bbO" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bbO" = (/obj/structure/disposalpipe/trunk{dir = 2},/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; layer = 3},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) "bbP" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bbQ" = (/turf/simulated/floor/plating,/area/maintenance/disposal) -"bbR" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating,/area/maintenance/disposal) -"bbS" = (/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Disposal APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bbR" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/mineral/output,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bbS" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bbT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bbU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port) "bbV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2866,11 +2866,11 @@ "bdf" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/power/apc{dir = 4; name = "Research Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bdg" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bdh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bdi" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bdj" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdi" = (/obj/machinery/power/apc{dir = 8; name = "Disposal APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/port) "bdk" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/disposal) -"bdl" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bdm" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdl" = (/obj/machinery/conveyor{dir = 10; id = "garbage"; verted = -1},/obj/machinery/mineral/input,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bdm" = (/obj/machinery/conveyor{dir = 9; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) "bdn" = (/obj/structure/closet/crate,/obj/item/weapon/coin/twoheaded,/turf/simulated/floor/plating,/area/maintenance/port) "bdo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/port) "bdp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2956,7 +2956,7 @@ "beR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "beS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "beT" = (/obj/machinery/light/small{dir = 8},/obj/machinery/mass_driver{id = "trash"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) -"beU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"beU" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "beV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/port) "beW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "beX" = (/turf/simulated/wall/r_wall,/area/maintenance/port) @@ -3028,7 +3028,7 @@ "bgl" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bgm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bgn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bgo" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) +"bgo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bgp" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/disposal) "bgq" = (/turf/space,/area/supply/station) "bgr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -6328,9 +6328,9 @@ "crJ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "crK" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) "crL" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"crM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters/preopen{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"crN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters/preopen{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"crO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"crM" = (/obj/machinery/door/poddoor{auto_close = 300; id = "smindicate"; name = "outer blast door"},/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"crN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"crO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "crP" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) "crQ" = (/turf/unsimulated/wall,/area/tdome/tdomeobserve) "crR" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/tdome/tdomeobserve) @@ -6428,7 +6428,7 @@ "ctF" = (/obj/structure/toilet{pixel_y = 8},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/machinery/door/window{name = "Tactical Toilet"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "ctG" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ctH" = (/obj/structure/table,/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"ctI" = (/obj/machinery/door/poddoor/preopen{id = "smindicate"; name = "outer blast door"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"ctI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "ctJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "ctK" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) "ctL" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -6440,7 +6440,6 @@ "ctR" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) "ctS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "ctT" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"ctU" = (/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_y = 26; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ctV" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "ctW" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "ctX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -8237,6 +8236,24 @@ "dcu" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcv" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dcw" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) +"dcx" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) +"dcy" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcz" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcA" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler,/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcB" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/disposal) +"dcC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcD" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; layer = 3; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcE" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcF" = (/obj/effect/decal/cleanable/oil,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) +"dcH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) +"dcI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcJ" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) +"dcL" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"dcM" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"dcN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/flora/tree/festivus,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"}) +"dcO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8353,32 +8370,32 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxVaCQazkazlaxPazmaxPazmaxPazmaxPazmaxPaznazoaumaCRaCSaCTaCUaCUaCUaCUaCSaCVaCWaCXaCYaCZanpaDaaoZaoZavraDbaDcawHaDdaDeaDfaDgaDhaDiaDjavsaaaaDkaaaaDlaDmaDlaaaaafaaaasqaBEasvaDnaDoaDpaDqaDrasvamIalTaryaDsaDtayAayAayAaDuaDvaryaaaaaaaDwaDxaDyaDzaDAaDBaDCaDDaDwaaaaaaaDEaDFaDGaDHatUaDIauXauXauXaxlauXauXauXaDJavRaDKavRaDLaDMarcaDNaDOaDOaDPaDQaDRaDOaDSaDOaDTaDUaDTaDVaDTaDWaDXaDXaDYaDXaDXaDZaDXaDXaDXaDXaEaaEbaCDaEcaEdaEeaEfaEgazaaEhaEiaEjaEkaElaEmaCNaEnaCOaBfaBeaBfaEoaEpaEqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEsaEtawoaxOaxPaxPaxPaEuaxPaxPaEvaxPaxPaxVaEwasbathasdaExaEyaEyaEyaEyaEyaEyaEyaEzaEAaobaobaEBaobaobavraECaEDaEEaEFaEFaEFaEFaEGaEHaEIavsaEJaEKaELaEMaENaEOaELaELaEPasqaEQasvasvasvaERaESasvasvaETavqaryaryaryaEUaEVaEWaryaryaryaEXaEYaEZaFaaDAaDAaDAaDAaDAaFbaFcaEYaFdaDEaFeaDGaFfatUatUatUatUatUatUatUatUatUaDJaFgaFhaFiaFjaFkaFlaFmaFnaDOaFoaFpaFqaFraFsaDTaFtaFuaDTaFvaDTaFwaFxaFyaFzaFAaFBaFCaFDaFEaFFaDXaFGaFHaFIaEcaFJaEeaEfaFKazaaFLaFMaFNaFOaFPaCNaCNazdazhaFQaBeaBfaFRaFSaFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEsawoawpawoawoaFUawrawoawoawpaEtaFVanjaFWasdareaFXaFXaFYaFXaFZanYaGaaGbaEAaGcaGdaGeaGfaGgaGhaGhaGiaGhaGhaGhaGhaGhaGhaGhaGjaGkaGlaGmaGnaGnaGoaGpaGnaGnaGnaGqaGraGsaGtaGnaGuaGnaGvaGwaGxaDAaGyaGzaDBaDCaDCaDCaDzaDAaDAaGAaDAaGBaGCaGDaGEaGFaGGaGHaGIaDAaDAaGJaGKaGLaGMaGLaGNaGOaGPaGQaDAaGRaDAavRaGSaGTaFhaFhaFhaFhaFkaFlaFlaGUaDOaGVaGWaFsaGXaGYaDTaGZaHaaHbaHcaDTaDXaHdaHeaHfaHgaHhaHiaHjaHkaHlaDXaEaaHmaHnaHnaHoaHpaHnaHqazaaHraHsazdaCNaCNaCNaCNazdaHtaHuaHvaBfazhazhazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfaBeaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfdcOaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaukanjaumapyaumaIuaIvaIwaIxaumapyaIyaIzanjathasdaumaIAaIBaHBaHBaHCanYaICaGbaEAaHFaHGaIDaIEaIFaIFaIFaIGaIHaIIaIFaIJaIFaIFaIFaIKaILaIMaIFaIFaIFaINaIOaIPaIQaIQaIRaISaITaITaIUaIVaGhaHSaGwaDAaIWaDAaIXaIXaIXaIXaIXaIXaIXaIXaIYaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIZaIXaIXaIXaIXaIXaIXaIXaIXaDAaDAaDAavRaJaaJbaJaaJaaJaaJcaJdaFlaFlaJeaDOaDOaJfaDOaDOaJgaDTaJhaFuaJiaJjaJkaDTaDXaJlaJmaJnaJoaJnaJnaJpaJqaDXaEaaEbaJraJraJsaJtaJuaJuaJvazaaJwaJxaJyazhaJzaJAaJBaBfaBfaJCaJBazhaJDazhaJEaJEaJEaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYasbatgasbathasdasdatiasbatgasbaJFaJGaJHasdasbaJIaJIaFYaJIaFZanYaJJaGbaEAaJKaJKaJLaJMaJKaJNaJNaJNaJNaJNaJOaJPaJNaJQaJNaJNaJNaJRaJSaJTaJSaJUaJVaJWaGhaGhaJXaJYaJZaGhaGiaGhaGhaKaaKaaDAaDAaDBaKbaEYaEYaKcaKcaKcaKcaKdaKeaKfaKgaKhaKiaKjaKiaKkaKiaKlaKgaKmaKeaKnaKcaKcaKcaKcaEYaEYaKoaDzaDAaDAaDOaKpaKqaFlaFlaFlaFlaKraKsaKtaFlaDOaKuaKvaKwaDTaDTaDTaDTaKxaDTaKyaDTaDTaDXaJnaKzaKAaKAaKAaKAaKBaJnaDXaKCaEbaKDaCDaJsaJtaCDaCDaKEazaaKFaKGaKHazhaBfaKIaKJaKKaKKaKLaKJaKMaKNazhaKOaKPaJEaKQaKRaKSaafaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaLNaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaasbaMqaMraMqaMqaMqaMqaMqaMqaMraMqaMqaMsasdasdaMtasdasdaMuasdaMvasdaMwaMxaMyaJKaMzaJLaMAaJNaMBaLhaLhaLhaLhaLhaLiaMCaLhaLhaLhaLnaJRaMDaLqaLqaJUaLsaJWaMEaMFaMFaMGaKaaMHaMIaMJaMKaMLaMMaDAaDAaDBaLyaaaaaaaaaaaaaKeaKeaKeaKeaMNaMOaMPaMQaMRaMSaMTaMUaMVaMWaMXaKeaKeaKeaKeaaaaaaaaaaaaaLKaDzaDAaDAaMYaFlaMZaNaaNbaFlaNcaNdaNbaLOaGUaNeaFlaNfaFlaNgaNhaNhaNhaNiaNjaNkaNlaNhaNmaNnaNoaMbaNpaNqaMbaNraJnaDXaEaaEbaCDaCDaJsaJtaCDaCDaCDaNsaNtaCDaNuazhaFQaNvaNwaMjaMjaNxaNwaNyazhaNzaNAaNAaNAaNAaNBaNCaKRaKRaNDaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanjanjaNEaNFaNFaNFaNFaNFaNFaNGanjanjanYaNHaNIaNJaNJaNJaNKaNJaNJaNJaNLaNJaNLaJKaMzaNMaNNaJNaNOaLhaLhaNPaNQaNRaNSaNPaLhaLhaLhaNTaJRaNUaNVaNWaJUaNXaJWaNYaNZaOaaObaKaaOcaOdaOeaMJaOfaOgaDAaDAaDBaFcaKdaOhaOiaKeaKeaOjaOkaOlaOmaOnaOnaOoaOpaOnaOqaOnaOnaOnaOraOsaOtaOuaKeaKeaOiaOhaEXaOvaDzaDAaDAaDOaOwaKqaOxaFlaFlaFlaOxaFlaLOaGUaOyaOzaFlaOAaDTaNhaOBaOCaODaOEaOFaOGaNhaOHaOIaOJaMbaOKaOLaMbaOMaONaDXaEaaEbaOOaOOaJsaJtaOPaCDaCDaOQaCDaORaOSazhaOTaOUaOVaMjaMjaOWaOVaBfazhaOXaNAaNAaNAaNAaNAaOYaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaFlaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaasbaMqaMraMqaMqaMqaMqaMqaMqaMraMqaMqaMsasdasdaMtasdasdaMuasdaMvasdaMwaMxaMyaJKaMzaJLaMAaJNaMBaLhaLhaLhaLhaLhaLiaMCaLhaLhaLhaLnaJRaMDaLqaLqaJUaLsaJWaMEaMFaMFaMGaKaaMHaMIaMJaMKaMLaMMaDAaDAaDBaLyaaaaaaaaaaaaaKeaKeaKeaKeaMNaMOaMPaMQaMRaMSaMTaMUaMVaMWaMXaKeaKeaKeaKeaaaaaaaaaaaaaLKaDzaDAaDAaMYaFlaMZaNaaNbaFlaFlaXxaFlaLOaGUaNeaFlaNfaFlaNgaNhaNhaNhaNiaNjaNkaNlaNhaNmaNnaNoaMbaNpaNqaMbaNraJnaDXaEaaEbaCDaCDaJsaJtaCDaCDaCDaNsaNtaCDaNuazhaFQaNvaNwaMjaMjaNxaNwaNyazhaNzaNAaNAaNAaNAaNBaNCaKRaKRaNDaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanjanjaNEaNFaNFaNFaNFaNFaNFaNGanjanjanYaNHaNIaNJaNJaNJaNKaNJaNJaNJaNLaNJaNLaJKaMzaNMaNNaJNaNOaLhaLhaNPaNQaNRaNSaNPaLhaLhaLhaNTaJRaNUaNVaNWaJUaNXaJWaNYaNZaOaaObaKaaOcaOdaOeaMJaOfaOgaDAaDAaDBaFcaKdaOhaOiaKeaKeaOjaOkaOlaOmaOnaOnaOoaOpaOnaOqaOnaOnaOnaOraOsaOtaOuaKeaKeaOiaOhaEXaOvaDzaDAaDAaDOaOwaKqaOxaFlaFlaFlaFlaFlaLOaGUaOyaOzaFlaOAaDTaNhaOBaOCaODaOEaOFaOGaNhaOHaOIaOJaMbaOKaOLaMbaOMaONaDXaEaaEbaOOaOOaJsaJtaOPaCDaCDaOQaCDaORaOSazhaOTaOUaOVaMjaMjaOWaOVaBfazhaOXaNAaNAaNAaNAaNAaOYaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPcaunaseaPdaPeaPfaPgaPhaPiaPjaPkaPlaPjaPmaPnaPoaPpaPqaJNaPraLhaLhaNPaNRaPsaPtaNPaLhaLhaLhaLnaJRaJUaJUaPuaJUaPvaPwaPwaPwaPwaPxaPyaPzaMJaMJaMJaMJaOgaDAaDAaDBaDCaDCaPAaPBaPCaKeaPDaPEaPFaOnaOnaOnaPGaPHaPIaPJaPKaPLaPMaPKaPNaPOaPPaKeaPQaPBaPRaPSaDCaDzaDAaDAaMYaFlaKqaLNaFlaPTaFlaLNaFlaLOaGUaPUaFlaFlaFlaPVaNhaNhaPWaPXaPYaPZaOGaQaaDTaQbaOJaQcaMbaMbaMbaOMaQdaDXaQeaEbazaazaaJsaJtaQfaQgaCDaQhaQiaFJaQjaQkaHuaQlaQmaQnaQnaQoaQpaQqaQkaQraQsaNAaNAaNAaQtaQuaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaQwaQxaQyathaQzaQAaQBaQCaQDaQEaQFaQGaQHaQCaQIaQJaQKaQLaQMaJNaQNaLhaLhaQOaLhaLhaLiaLhaLhaLhaLhaQPaQQaMzaQRaQSaQTaQUaQVaQWaQXaJKaQYaKaaQZaRaaRbaRcaRcaRdaDAaDAaDAaDAaDAaReaRfaRgaRhaRiaRjaRkaRlaRmaRnaRoaRpaRqaRraRnaRsaRtaRuaRvaRwaRxaRyaRzaRAaRBaRCaRDaREaDAaDAaDOaLMaMZaNdaNbaFlaNcaNaaNbaLOaGUaOyaOyaRFaRGaDTaNhaNhaNhaRHaNhaRIaOGaRJaDTaJnaOJaMbaMbaMbaMbaOMaJnaDXaRKaRLaRMaRNaROaRPaJsaJsaJsaJsaJsaJsaRQaRRaMjaMjaMjaMjaMjaMjaMjaRSaRTaRUaNAaNAaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbatgapyatgasdasdaNLaRVaRWaRXaRXaRXaRXaRYaRZaNJaSaaSbaScaSdaSeaSeaSeaSfaSeaSgaShaSiaSjaSkaSkaSlaLnaSmaSnaSoaSpaSqaSraSsaSsaStaSuaSvaSwaSxaSyaSyaSyaSzaKaaDAaDAaSAaSBaSCaSDaSEaSFaKeaSGaSHaSIaSJaKeaSKaKeaKeaKeaKeaSLaSKaKeaSMaSNaSOaSGaKeaSPaSEaSQaSRaSBaSSaDAaDAaMYaFlaSTaOxaFlaFlaFlaOxaFlaLOaFlaGUaGUaFlaFlaSUaSVaSWaNhaNhaNhaSXaSYaSZaDTaTaaTbaMbaTcaTcaTdaTbaTeaDXaTfaTgaThaTiaJsaJsaJsaJsaTjaJsaJsaJsaRQaRRaMjaMjaMjaMjaMjaMjaMjaRSaRTaRUaNAaNAaTkaNAaTlaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaTmaTnaQyathasdaToaRWaTpaRXaRXaRXaRXaTpaRWaNJaTqaTraScaSdaTsaTtaTuaTvaSeaTwaTxaTyaJNaTzaTAaTBaLhaJNaTCaTDaTEaTEaTEaTEaTFaTEaTEaTGaTHaTHaTHaTIaTHaTJaTKaTLaTLaTMaTNaTOaTOaTOaTOaTOaTPaTQaTRaTSaSKaTTaSKaSKaTUaTVaSKaTTaSKaTWaTXaTYaTZaTZaTZaTZaTZaTZaUaaUbaTLaTLaDOaUcaUdaUeaUfaFlaFlaFlaUgaUhaUiaFlaUjaUkaUlaDTaDTaDTaUmaUnaUnaUnaDTaDTaDTaUoaMbaMbaUpaUqaUraUsaImaDXaUtaTgaUuazaaUvaUwaUxaQgaUyaUwaUzaQgaUAazhaUBaBfaUCaMjaMjaUCaBfaUDazhaUEaUFaUGaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbasbaUHaJHaUIaNLaUJaUJaUJaRWaUKaUJaULaUJaNJaUMaUNaUOaUPaUQaUQaURaUSaUQaUTaTxaUUaJNaTzaTAaTBaLhaJNaUVaTDaTEaUWaUXaUXaUXaUYaTEaUZaVaaVbaVcaTKaTKaTKaTKaDAaDAaVdaVeaVfaVgaVhaViaVjaVkaVlaVmaSKaVnaVoaVpaVpaVqaVpaVpaVoaVpaVraVsaVtaVuaVvaVwaVxaVyaVzaVAaSSaDAaDAaDOaDOaDOaDOaDOaVBaMYaVBaVCaVDaDOaDOaDOaDOaDOaVEaVFaVFaVFaVFaVFaVFaVGaVFaVEaImaVHaVHaVIaThaThaThaThaVEaUtaVJaUuazaazaazaazaazaaVKazaazaazaazaazhaVLaVMaVNaVNaVNaVNaVOazhazhaVPaNAaVQaNAaNAaQtaNCaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaukanjaVRavgaQyanYanYanYanjanjanYaVSaCSaVTaNJaNJaNJaNJaNJaNJaNJaNJaNJaVUaQVaVVaSdaTsaVWaTvaVXaSeaVYaVZaWaaJNaTzaTAaTBaLhaJNaUVaTDaTEaUXaWbaWbaUXaWbaTEaUZaWcaWdaWdaWeaWfaWgaTKaWhaDAaSAaWiaWjaWkaWlaWmaWmaWlaWnaWoaSKaWpaVoaWqaWraWsaWtaWuaVoaWvaVraWwaVzaVzaWxaWyaWzaVzaWAaVAaSSaWBaDAaWCaWDaThaThaThaThaThaThaThaThaWEaThaThaThaThaWFaThaThaThaThaThaThaThaThaWDaThaThaThaThaThaThaThaThaWGaWHaWIaWJaWJaWKaWLaWLaWMaWNaWOaWLaWPaWLaWLaWQaWLaWLaWLaWLaWLaWLaWRaWSaWTaWUaVQaNAaNAaNAaPaaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaMzaMzaMzaMzaMzaMzaWWaWXaJKaWYaMzaScaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxaXxaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPaXPaXPaXQaXPaXPaXPaMzaJKaJKaJKaJKaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYQaYRaYSaYTaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPaYVaYWaYXaYXaYYaYZaZaaZbaZcaZcaZcaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibajbakaKQaKRaKRaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPbalaXPbambanaXPaXPaXPbaoaJKaJKaJKbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaXPbbNaXPbbObbPbbQbbRaXPbbSaMzaJKaMzbbTaSeaSeaSeaSeaSeaSebbUbbVbbWaMzbbXaTEaTEaTEbbYaTEaTEaTEbbZaTEaTEaTEaTEbcabcbbccbcdaWdaWdaYbbceaZwaYdaDAbcfaZxbcgbaNbchbchbchaVjbcibcjaSKaVpbckaVpbclaYmaVpaVpbckaVpaSKbcmbcnbcobcpaVzaZJbcqaVzbcrbcsbctbcuaZNbcvbcwbcxbcybczbcAbblbcBbblbcCbblbblbcDbcEbcFbcGbcHaZTbcIbbrbcIbbrbcIbcJbbraZUbcKbcKbcLbcMaZYbcNbaabcObcPbcQbcRbcRbadbcSbcTbcUbcVbcWbcXbcYbadbcZbafbdabaibdbbdcbdbbddbdebdfbaibdgbdhaaaaafaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaaaafaaaaXPbdiaXPbdjbbQbdkbdlbdmaMzaMzaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObdPbdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbekbelbembembenbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRbaibdgbeSaafaafaaaaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPbeTbeUbbQbbQaXPaXPaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsaTPbftbfuaTSaaabfvbfwbfxbfybfxbfzbfxbfAbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgibgjbgkbglbaibdgbakbakbgmbgnbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbgobeUbbQbgpaXPaaaaaaaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgIbgIbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbfJbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJbgjbeObhKbaibhLbhMbhNbhMbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbikbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbitbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbjabeObjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbjGbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbkCbeObkDbaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxdcMaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPdcBaXPaXPaXPaXPaXPbbSaJKaJKaJKbbSaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYQaYRaYSaYTaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPdcxdcydczdcAbdmaXPbeUaZbaZcaZcbgoaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibajbakaKQaKRaKRaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPaYVaYXaYXaYXbdlaXPbdibdjaMzaMzbbSbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaXPbalaXPbbObbRbambaoaXPaMzaYWaYYaYZbbTaSeaSeaSeaSeaSeaSebbUbbVbbWaMzbbXaTEaTEaTEbbYaTEaTEaTEbbZaTEaTEaTEaTEbcabcbbccbcdaWdaWdaYbbceaZwaYdaDAbcfaZxbcgbaNbchbchbchaVjbcibcjaSKaVpbckaVpbclaYmaVpaVpbckaVpaSKbcmbcnbcobcpaVzaZJbcqaVzbcrbcsbctbcuaZNbcvbcwbcxbcybczbcAbblbcBbblbcCbblbblbcDbcEbcFbcGbcHaZTbcIbbrbcIbbrbcIbcJbbraZUbcKbcKbcLbcMaZYbcNbaabcObcPbcQbcRbcRbadbcSbcTbcUbcVbcWbcXbcYbadbcZbafbdabaibdbbdcbdbbddbdebdfbaibdgbdhaaaaafaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPbbNdcIdcGdcHdcHdcKdcJaZaaYZaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObdPbdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbekbelbembembenbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRbaibdgbeSaafaafaaaaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPdcDaXPdcEbbQbbQdcFaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsaTPbftbfuaTSaaabfvbfwbfxbfybfxbfzbfxbfAbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgibgjbgkbglbaibdgbakbakbgmbgnbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbeTdcCbbPbbQbdkbgpaXPaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgIbgIbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbfJbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJbgjbeObhKbaibhLbhMbhNbhMbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaXPaXPaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbikbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbitbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbjabeObjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbjGbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbkCbeObkDbaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbkGbkHbkGbkIbkJbdzbdzbdzbdzbdzbdzbdzbdzbkKaTEaTEbkLaWdaWdbkMbkNbkObkPaYbaWdaWdbkQbkRbiibkSbkTbkUbkVbkWbkXbkYbkZblabgMaaablbblbblcbldblebfxblfblbblbaaablgblhblhblhblhblhblhblibljblkbllbllaZNaZNblmblnbloblpaZNblqbcCbblbblbblbblblrbblblsbltbblbblbblbltbblbblbkeblublvblwblxblyblzblAbiPblBblCblDblDblEblFbcPbadblGbcUbcUblHblIbcUblJblKblLblLblMblNblNblObbHblPbbHbaibaiblQbkFblRblSblTbkFbdgbbMaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUblWbdzbdzbdzbjhbjhbjhbjhbdzbdzblXblYaTEblZaWdaWdbkMbmabicbkPaYbbmbaWdbkQbkRbmcaDAaLKbkUbmdbmebmfbmgbmgbmhbgMaafaafblbblbbmibmjbmiblbblbaafaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaDAaDAbmubmvbmwbmxbmybmzbmAbmBbmCbmBbmDbmBbmBbmEbmBbmFbmGbmBbmBbmBbmHbmIbmIbmJblubmKblwbmLbmLbmMbmNbiPbexbaabmObmPbmQbmRbmRbadbmSbmTbmUblKbmVbcUbmWblKbmXbmYbmZbnabnbbncbndbnebnfbngbnhbnibnjblRbnkbnlbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbnmbjebnnbnobdzbdzbdzbdzbdzbdzbdzbdzbdzblXbnpaTEbnqaXhaWdbkMaWdbnraWdaYbaWdbjobigbnsbmcaDAaLKbkUbgMbntbnubnvbnwbnxbgMaaaaaaaafblbblbbnyblbblbaafaaaaaabmkbnzbnAbnBbnCbnDbnDbnEbnFbnGaDAaDAbnHbnIbcCblsbnJbnKbnLbnKbnMbnKbnNbnKbnObnPbjZbnQbblbblbblbnRbnSbnSbnTbnUbnVbnWblwbnXbnYblzbmNbiPaZZbaabnZbnZboabnZbnZbadblKblKblKblKbobbocbbFblKbodboebofbngbngbogbgebgebohbgeboibojbojblRbnkblRbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUbhTbokbdzbdzbolbombonbombombomboobopaZnboqborbdHbosbdHbotbdIborboubovbjpbnsbmcaSAbowboxbgMboybozboAboBbmhbgMaaaaaaaafboCboDboEboFboCaafaaaaaaboGboHboIboIboJboKboLboMbljboNaDAaDAbiEbiEboOblsboPboQboRboSboTboUboVboWboRboSboXboXboSboRaZSaZSbnSboYbmLboZbpablublwbpbbpcbpdbpebiPbpfbpgbphbpibpjbngbngbpkbngbngbplbpmbpnbngbnfbngbpobppbpqbprbpsbptbpubpubpubpubpubpvbpwbpwbpwbpxbpybpzbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUbhTbokbdzbdzbolbombonbombombomboobopaZnboqborbdHbosbdHbotbdIborboubovbjpbnsbmcaSAbowboxbgMboybozboAboBbmhbgMaaaaaaaafboCboDboEboFboCaafaaaaaaboGboHboIboIboJboKboLboMbljboNaDAaDAbiEbiEboOblsboPboQboRboSboTboUboVboWboRboSboXboXboSboRaZSaZSbnSboYbmLboZbpablublwbpbbpcbpdbpebiPbpfbpgbphbpibpjbngbngbpkbngbngbplbpmbpnbngbnfbngbpobppbpqbprbpsbptbpubpubpubpubpubpvdcNbpwbpwbpxbpybpzbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbpAbpBbpAbpCbpDbpCbpCbpCbpCbpCbpEbpFbdzblXbpGaTEbpHbpIbpJbpKbfcbpLbpMbpNbpObpLbpLbpPbmcaFbbpQbkUbgMbpRbpSbpTbnubpUbgMaaaaaaaafboCbpVbpWbpXboCaafaaaaaabmkbpYbpZbqabqbboKboLboMbljbqcaDAaDAbqdbqebqfblsbqgbqhboRbqibqjbqkbqlbqmbqnbqobqpbqpbqqboRbblbblbnSbqrbmLbqsbqtbqubqvbqwbqxbqxbqybqzbqAbqBbqCbqDbqEbqFbqGbqFbqFbqHbqFbqIbqJbqFbqFbqFbqKbqLbqMbqNbqObqPbqQbqRbqSbqTbqUbqVbqWbojbojbqXbkFbqYbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbqZbrabjebrbaTEbrcbjebjebrbbrdbrdbrdbrebrfbrgbrdbrdbrhbrhbribrhbpLbrjbrkbrlbrmbpLbnsbmcaDBaOhaOhbgMbgMbgMbgMbgMbrnbgMaEXaEYaFdboCbrobrpbrqboCaEXaEYaFdblgblhblhblhblhblhblhblhbljbqcaDAbrrboRboRbrsbrtbruboRboRbrvbrwbrxbrybrybrzbrAbrBbrCbrAbrDbblbblbnSbrEbrFbrGbrHbrIbrJbrKbrHbrHbrLbrMbrNbrObrPbrPbrPbrPbrQbrPbrPbrPbrRbrSbrTbrUbrVbrWbrXbrYbrZbqNbsabsbbscbsdbsebsfbpubsgbshbsibsjbskbkFbqYbeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbsAbpLbsBbsCbsDbsDbsEbsDbsFbsGaWCbsHbsIbsJbsKbsKbsLbsMbsNbsObsPbsQbsRaDAaDAbsSaGQaDAaGAaDAaDAaDAbsTbsUbqcaDAbsVboRbsWbsXbsYbsZbtaboRbtbbrwbtcbrybrybrzbrAbrBbtdbtebrDbblbtfbnSbmLbtgbthbtibtjbtkbtlbtmbtnbiPbiPaZZbtobrPbtpbtqbtrbtsbttbtubrPbtvbtwbtxbtybtzbtAbrXbrYbrZbtBbtCbtDbtEbtFbtGbtHbtIbkFbkFbkFbkFbkFbkFbqYbakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaa @@ -8659,7 +8676,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqZcqYcqYcracrbcqYcqYcracqYcrbcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpHcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcqqcrvcqscqtcqucpHcqbcpZcpbcoTcoTcoTcpccpZcqbcpTcqxcqycqycqzcqAcqBcqAcqCcpycpycpycpycpycpycpUcpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqYcqZcqYcqYcqYcqYcqYcrbcqYcracrbcqYcracqYcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrwcrxcrwcrwcqbcqgcpbcoTcoTcoTcpccqgcqbcpTcqkcqmcrycqkcqlcqlcqmcpvcrzcrAcrzcrBcrCcpgcpicpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcrDcrDcrDcrDcrDcrDcrDcqYcqYcqYcqYcqYcqYcqYcracqYcqYcrpcrbcqYcqYcqYcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcqbcqLcpbcoTcoTcoTcpccqLcqbcpTcrEcrEcrEcrEcqAcqBcqAcrFcrGcrGcrHcpvcpVcrIcrJcqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrKcrLcrMcrNcrNcrNcrOcrLcrPcqYcqYcqYcqYcrpcqYcrDcqZcrDcqZcqYcracqYcracqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrRcrScrTcrUcrVcrQcrQcpTcrEcrEcrEcrEcqkcqlcqmcpvcrWcrGcrHcpvcrXcpVcpVcpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrKcrLcrOcrNcrNcrNctIcrLcrPcqYcqYcqYcqYcrpcqYcrDcqZcrDcqZcqYcracqYcracqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrRcrScrTcrUcrVcrQcrQcpTcrEcrEcrEcrEcqkcqlcqmcpvcrWcrGcrHcpvcrXcpVcpVcpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrLcrYcrZcsacsbcsccsdcsdcrLcsecqYcqYcrDcqNcqNcsfcsgcqNcqNcrDcshcsicrDcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcsjcskcslcsmcsncsocslcskcsjcpTcspcsqcsrcsscpTaaaaaacpvcrWcrGcrHcstcpVcrIcrJcqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrLcsucrZcrZcsvcrZcrZcrZcrLcsecqYcswcqNcqNcsxcsycsycsxcqNcqNcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcskcszcsAcsmcsncsocsAcsBcskcpTcrEcsCcsDcsEcpTaaaaaacsFcsGcsHcsHcsHcsHcsHcsGcsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcrLcsJcrZcrZcrZcsKcrZcsLcrLcsecrpcswcqNcsMcsMcsMcsMcsMcsMcsMcsMcqNcsNcsOcsPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcsQcskcsQcsmcsncsocsQcskcsQcpTcrEcrEcrEcrEcpTaaaaaaaaacsFcsRcsRcsRcsRcsRcsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8668,8 +8685,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcqYcqYcqYcqYcqYcrLcrZcrZcrZcrLctscttcttcsgcqNcqNcsMctuctvcsXcsMcsMctjctwcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrQcrQcrQcrQcsncrQcrQcrQcrQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrKcrLcrLcrLcrLcrLcrZcrZcrZcrLctxctyctyctyctzctAcsMcsMcsMcsMcsMcsMctjctwcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcsncrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZctBcrLcrZcrZcrZcrLctCctzcsfcsgcqNcqNcsMcsXcsXcsXcsMcsMctjctDcqNctEctFcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcrQcrQcrQcrQcrQcrQcrQcrTcrQcrQcrQcrQcrQcrQcrQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZctGctHcrLcrZcrZcrZcrLcrLctIctJcrPctKcqNctLctMctMctMctMcsMcsMcsMctNctOctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNctScqYcrLcsLcrZctGctTcrLcrZcrZcrZcrLctUcrZcrZcrLcsVcqNctVctWctXctWctYcsMcsMcsMcqNctZctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactQctQctQcubctQctQctQctQctQctQctQcubctQctQctQcuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZctGctHcrLcrZcrZcrZcrLcrLcrMctJcrPctKcqNctLctMdcLctMctMcsMcsMcsMctNctOctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNctScqYcrLcsLcrZctGctTcrLcrZcrZcrZcrLcrZcrZcrZcrLcsVcqNctVctWctXctWctYcsMcsMcsMcqNctZctOctPcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactQctQctQcubctQctQctQctQctQctQctQcubctQctQctQcuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZcrZcuccrZcrZcrZcudcrZcrZcrZcrLcswcqNcqNctkcuecufcugcqNcqNcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQctQctRctRctRctRctRctQctQctQctRctRctRctRctRctQcrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcqYcrLcsLcrZcrZcrZcuhcrZcrZcrZcuicrZcrZcujcrLcukctKcqNcqNcqNcqNcqNcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaculculculculculculculculculculculculaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrQcrUcumcumcumcumcumcumcumcumcumcumcumcumcumcrScrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqNcqYcrKcrLcrLcrLcrLcrLcrLcuncrZcrZcrLcrLcrLcrLcrLcrLcrPctKcqNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaculcuocupcuqcurcuscutculcuucuvcuwculaaaaaacuxcuxcuxcuxcuxcuxcuxcuxcuxcuycuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuzcuycuxcuxcuxcuxcuxcuxcuxcuxcuxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9785,3 +9802,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/nano/css/shared.css b/nano/css/shared.css index 6761674cd44..958e7d1c9bd 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -220,8 +220,7 @@ h4 .notice { - position: relative; - background: url(uiNoticeBackground.jpg) 50% 50% repeat; + background: url(uiNoticeBackground.jpg) 0 0 repeat; color: #15345A; font-size: 12px; font-style: italic; diff --git a/sound/items/cardshuffle.ogg b/sound/items/cardshuffle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1fe763af5bc4d60a2da3a89ce96150b4ced9d281 GIT binary patch literal 22053 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 literal 0 HcmV?d00001 diff --git a/sound/vox_fem/centcomm.ogg b/sound/vox_fem/centcom.ogg similarity index 96% rename from sound/vox_fem/centcomm.ogg rename to sound/vox_fem/centcom.ogg index 9c6404df836903b1b95c68bc6dd0903fb44f6921..886ebaa4a1d8d8f0d5499a17ee5cec565804d45d 100644 GIT binary patch delta 17 YcmZ4BH{Wl`0TK44ByprVn+>M)a)BsHR2mb&7 diff --git a/tgstation.dme b/tgstation.dme index a454b46ea68..83757386e4b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,48 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" +#define FILE_DIR "tools" +#define FILE_DIR "tools/AddToChangelog" +#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES @@ -174,6 +216,7 @@ #include "code\datums\helper_datums\teleport.dm" #include "code\datums\helper_datums\topic_input.dm" #include "code\datums\spells\area_teleport.dm" +#include "code\datums\spells\charge.dm" #include "code\datums\spells\conjure.dm" #include "code\datums\spells\construct_spells.dm" #include "code\datums\spells\dumbfire.dm" @@ -539,6 +582,7 @@ #include "code\game\objects\items\weapons\teleportation.dm" #include "code\game\objects\items\weapons\tools.dm" #include "code\game\objects\items\weapons\twohanded.dm" +#include "code\game\objects\items\weapons\vending_items.dm" #include "code\game\objects\items\weapons\weaponry.dm" #include "code\game\objects\items\weapons\grenades\chem_grenade.dm" #include "code\game\objects\items\weapons\grenades\emgrenade.dm" @@ -1079,6 +1123,7 @@ #include "code\modules\projectiles\ammunition\bullets.dm" #include "code\modules\projectiles\ammunition\magazines.dm" #include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\magic.dm" #include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" @@ -1086,15 +1131,16 @@ #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\magic\staff.dm" +#include "code\modules\projectiles\guns\magic\wand.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" -#include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\beams.dm" #include "code\modules\projectiles\projectile\bullets.dm" -#include "code\modules\projectiles\projectile\change.dm" #include "code\modules\projectiles\projectile\energy.dm" +#include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\special.dm" #include "code\modules\reagents\Chemistry-Colours.dm" #include "code\modules\reagents\Chemistry-Holder.dm" @@ -1169,12 +1215,14 @@ #include "code\modules\surgery\generic_steps.dm" #include "code\modules\surgery\helpers.dm" #include "code\modules\surgery\implant_removal.dm" +#include "code\modules\surgery\limb augmentation.dm" #include "code\modules\surgery\lipoplasty.dm" #include "code\modules\surgery\plastic_surgery.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\surgery_step.dm" #include "code\modules\surgery\tools.dm" #include "code\modules\surgery\xenomorph_removal.dm" +#include "code\modules\surgery\organs\augments.dm" #include "code\modules\surgery\organs\helpers.dm" #include "code\modules\surgery\organs\organ.dm" #include "code\modules\telesci\bscrystal.dm" diff --git a/tools/HitboxExpander/.gitignore b/tools/HitboxExpander/.gitignore new file mode 100644 index 00000000000..ec7f5fd7c18 --- /dev/null +++ b/tools/HitboxExpander/.gitignore @@ -0,0 +1,3 @@ +Imaging-1.1.7/ +zlib/ + diff --git a/tools/HitboxExpander/README b/tools/HitboxExpander/README new file mode 100644 index 00000000000..678d3da8864 --- /dev/null +++ b/tools/HitboxExpander/README @@ -0,0 +1,10 @@ +Setup: Unzip the zip files in third_party/ so that you have the directories +third_party/Imaging-1.1.7/ and third_party/zlib/. + +Usage: python hitbox_expander.py + +This tool expands the hitbox of the given image by 1 pixel. +Works by changing some of the fully-transparent pixels to alpha=1 black pixels. +Naked human eye usually cannot notice the difference. + +No space carps or corgis have been used or injured in the production of this tool. diff --git a/tools/HitboxExpander/hitbox_expander.py b/tools/HitboxExpander/hitbox_expander.py new file mode 100644 index 00000000000..0f1991bd353 --- /dev/null +++ b/tools/HitboxExpander/hitbox_expander.py @@ -0,0 +1,107 @@ +import os +import sys +import inspect +import shutil + +def AddToPath(path): + if path not in sys.path: + sys.path.insert(0, path) + delimeter = ':' if os.name == "posix" else ";" + os.environ['PATH'] = path + delimeter + os.environ['PATH'] + +current_dir = os.path.split(inspect.getfile(inspect.currentframe()))[0] + +AddToPath(os.path.abspath(os.path.join(current_dir, "third_party/Imaging-1.1.7/PIL"))) +AddToPath(os.path.abspath(os.path.join(current_dir, "third_party/zlib"))) + +import Image +import _imaging + +def PngSave(im, file): + # From http://blog.client9.com/2007/08/28/python-pil-and-png-metadata-take-2.html + + # these can be automatically added to Image.info dict + # they are not user-added metadata + reserved = ('interlace', 'gamma', 'dpi', 'transparency', 'aspect') + + # undocumented class + import PngImagePlugin + meta = PngImagePlugin.PngInfo() + + # copy metadata into new object + for k,v in im.info.iteritems(): + if k in reserved: continue + meta.add_text(k, v, 0) + + # and save + im.save(file, "PNG", pnginfo=meta) + +def ProcessFile(path): + name, ext = os.path.splitext(path) + ext = ext.lower() + if (ext != ".dmi" and ext != ".png") or os.path.splitext(name)[1] == ".new": + return + + try: + im = Image.open(path) + print name + ": " + im.format, im.size, im.mode + if im.mode != "RGBA": + return + width, height = im.size + pix = im.load() + + n_transparent = 0 + + make_opaque = [] + + def add(x, y): + if pix[x, y][3] == 0: + make_opaque.append((x, y)) + + for x in range(0, width): + for y in range(0, height): + if pix[x, y][3] > 0: + if x > 0: + add(x - 1, y) + if x < width - 1: + add(x + 1, y) + if y > 0: + add(x, y - 1) + if y < height - 1: + add(x, y + 1) + else: + n_transparent += 1 + + for coords in make_opaque: + pix[coords] = (0, 0, 0, 1) + + PngSave(im, path) + except: + print "Could not process " + name + +root_dir = os.path.abspath(os.path.join(current_dir, "../../")) +icons_dir = os.path.join(root_dir, "icons") + +def Main(): + if len(sys.argv) != 2: + print "Usage: hitbox_expander.py filename.dmi" + return 0 + + try: + with open(sys.argv[1]): + ProcessFile(os.path.abspath(sys.argv[1])) + return 0 + except IOError: + pass + + for root, subdirs, files in os.walk(icons_dir): + for file in files: + if file == sys.argv[1]: + path = os.path.join(root, file) + ProcessFile(path) + return 0 + + print "File not found: " + sys.argv[1] + +if __name__ == "__main__": + Main() diff --git a/tools/HitboxExpander/third_party/Imaging-1.1.7.zip b/tools/HitboxExpander/third_party/Imaging-1.1.7.zip new file mode 100644 index 0000000000000000000000000000000000000000..a9af836b11ab3576d5a2e810f47a1fd43ad0ceae GIT binary patch literal 952676 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%0D-d>Y-#L?P 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Ⓣ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%0DU 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�^`><*!RGVse?W+eO2WkhY`~sD#VFyhf+j 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

    >9O~wI*=_mjv_y*@r<@av3c> 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

    Pk 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≪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 Pb2u5^ioApmNksnvOiJ&= literal 0 HcmV?d00001 diff --git a/tools/HitboxExpander/third_party/zlib.zip b/tools/HitboxExpander/third_party/zlib.zip new file mode 100644 index 0000000000000000000000000000000000000000..af4a2fd4c5c572708cd852aec5e6b1bcef08169a GIT binary patch literal 141415 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⁢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

    n9g-L+3>ccXOmG` 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 literal 0 HcmV?d00001 From d66475a1e13ed4c6266f801861e07789318118a5 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Mon, 16 Dec 2013 13:02:03 -0300 Subject: [PATCH 181/315] Updated metastation v38N to v38Q, name change pending --- maps/MetaStation.v38N.dmm | 2561 ++++++++++++++++++++----------------- 1 file changed, 1360 insertions(+), 1201 deletions(-) diff --git a/maps/MetaStation.v38N.dmm b/maps/MetaStation.v38N.dmm index dd3c98214a3..569ae4c365c 100644 --- a/maps/MetaStation.v38N.dmm +++ b/maps/MetaStation.v38N.dmm @@ -77,7 +77,7 @@ "aby" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/crew_quarters) "abz" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/crew_quarters) "abA" = (/turf/simulated/floor/plating,/area/crew_quarters) -"abB" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"abB" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "abC" = (/turf/space,/area/solar/auxstarboard) "abD" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abE" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -119,7 +119,7 @@ "aco" = (/obj/structure/lattice,/turf/space,/area/maintenance/starboard) "acp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "acq" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "8;12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"acr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"acr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "acs" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "act" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 3"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "acu" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -169,7 +169,7 @@ "adm" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"},/area/security/main) "adn" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "ado" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"adp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"adp" = (/obj/structure/stool/bed/chair,/obj/machinery/computer/security/telescreen{desc = "Used for watching proceedings in the interrogation room."; dir = 1; layer = 4; name = "interrogation monitor"; network = list("interrogation"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "adq" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/pen/red,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/lawoffice) "adr" = (/turf/simulated/wall,/area/maintenance/fore) "ads" = (/turf/simulated/floor/plating,/area/maintenance/fore) @@ -186,7 +186,7 @@ "adD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) "adE" = (/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "adF" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera{c_tag = "Holodeck"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/holodeck) -"adG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation Monitoring"; req_access = null; req_access_txt = "1"},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"adG" = (/obj/structure/closet,/obj/item/weapon/stock_parts/matter_bin,/turf/simulated/floor/plating,/area/maintenance/starboard) "adH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "adI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/main) "adJ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"},/area/security/main) @@ -209,9 +209,9 @@ "aea" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) "aeb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aec" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"aed" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"aed" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aee" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/power/apc{dir = 4; name = "Garden APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aef" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aef" = (/obj/structure/grille,/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeg" = (/obj/machinery/vending/security,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeh" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "aei" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) @@ -251,14 +251,14 @@ "aeQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aeR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "aeS" = (/obj/structure/sign/poster{pixel_y = -32},/obj/item/weapon/vending_refill/cigarette,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aeT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) +"aeT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "aeW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fore) "aeX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "aeY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "aeZ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) -"afa" = (/obj/structure/rack,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/mask/gas,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"afa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation Monitoring"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "afb" = (/obj/machinery/disposal,/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "afc" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/turf/simulated/floor,/area/security/main) "afd" = (/obj/item/weapon/cigbutt,/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -285,7 +285,7 @@ "afy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "afz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "afA" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/security/brig) -"afB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"afB" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) "afC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/holodeck) "afD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/holodeck) "afE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) @@ -303,7 +303,7 @@ "afQ" = (/turf/simulated/wall/r_wall,/area/security/brig) "afR" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/reagent_dispensers/peppertank{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) -"afT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"afT" = (/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security Office - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "afU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afV" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/security/brig) @@ -363,11 +363,11 @@ "agY" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 28},/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{icon_state = "white"},/area/security/brig) "agZ" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "aha" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/laborcamp/station) -"ahb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ahb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ahc" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ahd" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ahd" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Disposals"},/obj/structure/plasticflaps{opacity = 0},/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/window/northright{dir = 2; name = "delivery door"; pixel_y = 0; req_access_txt = "31"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/disposal) "ahe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) -"ahf" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ahf" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Conveyor Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal) "ahg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/warden) "ahh" = (/obj/machinery/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "ahi" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/device/flash,/turf/simulated/floor,/area/security/main) @@ -414,7 +414,7 @@ "ahX" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/laborcamp/station) "ahY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ahZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) -"aia" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) +"aia" = (/obj/item/weapon/newspaper,/turf/simulated/floor/plating,/area/maintenance/starboard) "aib" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fore) "aic" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fore) "aid" = (/obj/structure/table,/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/taperecorder{pixel_x = -3; pixel_y = 2},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) @@ -428,7 +428,7 @@ "ail" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aim" = (/obj/structure/closet{name = "Evidence Closet 6"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 6"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) "ain" = (/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"aio" = (/obj/machinery/deployable/barrier,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) +"aio" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) "aip" = (/obj/machinery/deployable/barrier,/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "aiq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/warden) "air" = (/obj/structure/closet/l3closet/security,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bot"},/area/security/warden) @@ -441,14 +441,14 @@ "aiy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "aiz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "aiA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/turf/simulated/floor,/area/security/main) -"aiB" = (/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security Office Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) +"aiB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aiC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/warden) -"aiD" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"aiD" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) "aiE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/warden) -"aiF" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aiF" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aiG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) "aiH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aiI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aiI" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aiJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) "aiK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aiL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Secure Gear Storage"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) @@ -482,7 +482,7 @@ "ajn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) -"ajq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ajq" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler,/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) "ajr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "ajs" = (/obj/machinery/door/poddoor/shutters{id = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ajt" = (/obj/machinery/space_heater,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -526,7 +526,7 @@ "akf" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "akg" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod2/station) "akh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aki" = (/obj/structure/rack,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/weapon/storage/secure/briefcase{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aki" = (/obj/structure/rack,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/secure/briefcase{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "akj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/range) "akk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "akl" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -606,7 +606,7 @@ "alH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "alI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "alJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"alK" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 28},/turf/simulated/floor/plating,/area/maintenance/disposal) +"alK" = (/obj/machinery/door/window/eastright{dir = 4; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "alL" = (/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "SecJusticeChamber"; name = "Justice Vent"; opacity = 1},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/prison/solitary{name = "Prisoner Education Chamber"}) "alM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) "alN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/brig) @@ -634,7 +634,7 @@ "amj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) "amk" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aml" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) -"amm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"amm" = (/obj/machinery/power/apc{dir = 2; name = "Disposal APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) "amn" = (/turf/simulated/floor/plating,/area/maintenance/disposal) "amo" = (/obj/machinery/power/apc{dir = 8; name = "Fore Port Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "amp" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) @@ -666,11 +666,11 @@ "amP" = (/obj/machinery/atmospherics/pipe/simple/general/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "amQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "amR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters) -"amS" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) +"amS" = (/obj/machinery/mineral/input,/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 9; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "amT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "amU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engineering) -"amV" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Blast Door Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/item/stack/sheet/cardboard,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"amW" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c20{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"amV" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) +"amW" = (/obj/machinery/light/small{dir = 8},/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "amX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "amY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "amZ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -704,21 +704,21 @@ "anB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) "anC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) "anD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"anE" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) -"anF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"anG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) -"anH" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) -"anI" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) -"anJ" = (/obj/effect/decal/cleanable/oil,/obj/machinery/power/apc{dir = 4; name = "Disposal APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"anE" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c20{pixel_y = 6},/obj/structure/window/reinforced,/obj/item/weapon/cell/crap,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"anF" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c100,/obj/structure/window/reinforced,/obj/item/weapon/firealarm_electronics,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"anG" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera{c_tag = "Security - Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"anH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Security Office - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"anI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) +"anJ" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/disk/data,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/obj/item/weapon/grenade/flashbang,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anK" = (/obj/structure/table/reinforced,/obj/machinery/light_construct/small{dir = 8},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anL" = (/obj/machinery/door/poddoor/shutters{id = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anM" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "anN" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anO" = (/obj/machinery/door/airlock/maintenance{name = "Mining Dock Maintenance"; req_access_txt = "48"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"anQ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "Disposal Exit"; layer = 3.1; name = "disposal mass driver blast door"; opacity = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"anQ" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; layer = 3},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) "anR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"anS" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c100,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"anS" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/mineral/output,/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal) "anT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "anU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/engine/engineering) "anV" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/wrench,/obj/machinery/light{dir = 8},/obj/item/weapon/hand_labeler,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -762,11 +762,11 @@ "aoH" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aoI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) "aoJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/brig) -"aoK" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera{c_tag = "Security Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aoK" = (/obj/machinery/mineral/stacking_machine,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "aoL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 0; pixel_y = -26; req_access_txt = "1"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "aoM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "aoN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 2; name = "Brig APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"},/area/security/brig) -"aoO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Security Office Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"aoO" = (/obj/machinery/mineral/stacking_unit_console{dir = 2; machinedir = 8; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) "aoP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "aoQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/brig) "aoR" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/hand_labeler,/turf/simulated/floor/carpet,/area/security/detectives_office) @@ -782,7 +782,7 @@ "apb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) "apc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "apd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Brig"; req_access = null; req_access_txt = "63; 42"},/turf/simulated/floor,/area/crew_quarters/courtroom) -"ape" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/disk/data,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ape" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) "apf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/brig) "apg" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) "aph" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom) @@ -799,10 +799,10 @@ "aps" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/holodeck) "apt" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) "apu" = (/obj/machinery/power/solar_control{id = "forestarboard"; name = "Fore Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"apv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"apv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/item/weapon/bucket_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "apx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) -"apy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"apy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door_timer/cell_2,/turf/simulated/floor{icon_state = "red"},/area/security/brig) "apA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "apB" = (/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area) @@ -816,7 +816,7 @@ "apJ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "apK" = (/obj/machinery/door/airlock/maintenance{name = "Secure Storage Room"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"apM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) +"apM" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "apN" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "apO" = (/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/courtroom) "apP" = (/obj/effect/landmark/start{name = "Lawyer"},/turf/simulated/floor,/area/crew_quarters/courtroom) @@ -826,23 +826,23 @@ "apT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "apU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "apV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters) -"apW" = (/turf/space,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"apX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"apW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"apX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) "apY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/holodeck) "apZ" = (/obj/structure/lattice,/turf/space,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqa" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aqb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"aqc" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aqc" = (/obj/machinery/deployable/barrier,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security - Secure Gear Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"},/area/security/warden) "aqd" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "aqe" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "aqf" = (/obj/machinery/atmospherics/pipe/simple/general/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "aqg" = (/obj/machinery/atmospherics/pipe/simple/general/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "aqh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqi" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"aqj" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) +"aqj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) "aqk" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aql" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aqm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/disposal) +"aql" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) +"aqm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"; tag = "icon-warnplatecorner"},/area/maintenance/disposal) "aqn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aqo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor,/area/security/brig) "aqp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -879,7 +879,7 @@ "aqU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/brig) "aqV" = (/turf/simulated/floor,/area/security/brig) "aqW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/holodeck) -"aqX" = (/obj/structure/lattice,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/space,/area) +"aqX" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) "aqY" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/security/brig) "aqZ" = (/obj/machinery/power/apc{dir = 8; name = "Fore Starboard Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "ara" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) @@ -888,11 +888,11 @@ "ard" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "are" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "arf" = (/obj/structure/rack{pixel_y = 2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = 2; pixel_y = -2},/obj/item/weapon/gun/energy/laser/practice{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) -"arg" = (/obj/item/weapon/caution/cone,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"arg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) "arh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) "ari" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall,/area/holodeck) -"arj" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal) -"ark" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Disposals"},/obj/structure/plasticflaps{opacity = 0},/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/window/northright{dir = 2; name = "delivery door"; pixel_y = 0; req_access_txt = "31"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"arj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ark" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "arl" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arm" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) "arn" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -917,7 +917,7 @@ "arG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security E.V.A. Storage"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "arH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/auxsolarport) "arI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) -"arJ" = (/obj/structure/table,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/apron,/obj/item/clothing/head/pumpkinhead,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) +"arJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "arL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/holodeck) "arM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/item/weapon/paper,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -965,7 +965,7 @@ "asC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "asD" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor,/area/security/processing) "asE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) -"asF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/firealarm_electronics,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"asF" = (/obj/item/weapon/caution/cone,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asG" = (/obj/structure/rack,/obj/item/weapon/tank/oxygen/red{pixel_x = -4; pixel_y = -1},/obj/item/weapon/tank/oxygen/red{pixel_x = 4; pixel_y = -1},/obj/item/weapon/tank/anesthetic{pixel_x = 2},/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asH" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asI" = (/obj/machinery/atmospherics/binary/pump,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -1028,11 +1028,11 @@ "atN" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "atO" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "atP" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"atQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Security EVA Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) +"atQ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/firealarm_electronics,/obj/item/weapon/grenade/smokebomb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "atR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters) "atS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atT" = (/obj/structure/cable,/obj/machinery/power/emitter{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"atU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/yellow,/obj/item/weapon/mop,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"atU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Security - EVA Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/brig) "atV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "atX" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -1044,7 +1044,7 @@ "aud" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) "aue" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "auf" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aug" = (/obj/structure/closet,/obj/machinery/light_construct/small,/turf/simulated/floor/plating,/area/maintenance/starboard) +"aug" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; layer = 3; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal) "auh" = (/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/secondary/construction{name = "\improper Garden"}) "aui" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) "auj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -1094,7 +1094,7 @@ "avb" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/crew_quarters) "avc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "avd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 8; icon_state = "left"; name = "Tertiary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"ave" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters) +"ave" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/stool,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) "avf" = (/obj/machinery/door/airlock{id_tag = "Cabin6"; name = "Cabin 6"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters) "avg" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=0-SecurityHall"; location = "16-Court"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) "avh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -1139,7 +1139,7 @@ "avU" = (/turf/simulated/wall/r_wall,/area/security/nuke_storage) "avV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/freezer/money,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "avW" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/nuke_storage) -"avX" = (/obj/item/weapon/bucket_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "avY" = (/obj/machinery/power/apc{dir = 1; name = "Vault APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/nuke_storage) "avZ" = (/obj/machinery/computer/secure_data/detective_computer,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/nuke_storage) "awa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/crew_quarters) @@ -1195,7 +1195,7 @@ "awY" = (/obj/item/weapon/vending_refill/snack,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "awZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/prison) "axa" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"axb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"axb" = (/obj/effect/decal/cleanable/oil,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "axc" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor,/area/security/prison) "axd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "axe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/module/power_control,/obj/item/weapon/cell{maxcharge = 2000},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1223,7 +1223,7 @@ "axA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/processing) "axB" = (/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "axC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) -"axD" = (/obj/structure/table/woodentable,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"axD" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/yellow,/obj/item/weapon/mop,/obj/item/weapon/bikehorn/rubberducky,/obj/structure/sign/poster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axE" = (/obj/machinery/vending/cigarette,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "axF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/processing) "axG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/processing) @@ -1312,7 +1312,7 @@ "azl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "azm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "azn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/starboard) -"azo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"azo" = (/obj/item/weapon/vending_refill/cola,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "azp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/warden) "azq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "azr" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) @@ -1320,8 +1320,8 @@ "azt" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/safe{pixel_x = 32},/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) "azu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/main) "azv" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) -"azw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Offices"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) -"azx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Offices"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/security/main) +"azw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/nuke_storage) +"azx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/main) "azz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "azA" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) @@ -1343,7 +1343,7 @@ "azQ" = (/obj/structure/closet/crate,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "azR" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "azS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/security/nuke_storage) -"azT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/security/nuke_storage) +"azT" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "azU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/nuke_storage) "azV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/nuke_storage) "azW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/nuke_storage) @@ -1355,7 +1355,7 @@ "aAc" = (/obj/item/clothing/head/festive,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fore) "aAd" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/fore) "aAe" = (/obj/structure/table,/obj/item/weapon/paper,/turf/simulated/floor/plating,/area/maintenance/fore) -"aAf" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fore) +"aAf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aAg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/warden) "aAh" = (/obj/structure/stool/bed,/obj/machinery/door_control{id = "Cabin1"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters) "aAi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -1363,7 +1363,7 @@ "aAk" = (/obj/machinery/door/airlock/maintenance{name = "Prisoner Education Maintenance"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "aAl" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/processing) "aAm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/processing) -"aAn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) +"aAn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aAo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) "aAp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/fore) "aAq" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) @@ -1419,7 +1419,7 @@ "aBo" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/security/nuke_storage) "aBp" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/nuke_storage) "aBq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) -"aBr" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_x = -27},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"aBr" = (/obj/machinery/camera{c_tag = "Interrogation"; dir = 8; network = list("interrogation")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aBs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aBt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) @@ -1500,7 +1500,7 @@ "aCR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aCS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aCT" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aCU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/security/hos) +"aCU" = (/obj/structure/table,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/apron,/obj/item/clothing/head/pumpkinhead,/obj/item/weapon/corncob,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aCV" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/airless,/area) "aCW" = (/turf/simulated/wall,/area/hallway/secondary/construction{name = "\improper Garden"}) "aCX" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 0},/obj/item/device/radio/off{pixel_x = 0; pixel_y = 3},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -1526,7 +1526,7 @@ "aDr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/processing) "aDs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "aDt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/processing) -"aDu" = (/obj/structure/closet{name = "Contraband Locker"},/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom,/obj/item/weapon/gun/projectile/automatic/pistol,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aDu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDv" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aDw" = (/obj/structure/closet{name = "Contraband Locker"},/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aDx" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) @@ -1537,7 +1537,7 @@ "aDC" = (/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aDD" = (/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "aDE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) -"aDF" = (/obj/structure/table/woodentable,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/structure/reagent_dispensers/peppertank{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"aDF" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/hos) "aDH" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "aDI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/construction) @@ -1576,10 +1576,10 @@ "aEp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aEq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aEr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"aEs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"aEs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aEt" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 2"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aEu" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) -"aEv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters) +"aEv" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (NORTH)"; icon_state = "pipe-j2"; dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aEw" = (/obj/machinery/door/airlock{id_tag = "Cabin2"; name = "Cabin 2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters) "aEx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/crew_quarters) "aEy" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -1593,7 +1593,7 @@ "aEG" = (/obj/machinery/flasher{id = "processinghall"; pixel_x = -28},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/processing) "aEH" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Armoury External Camera"; desc = "A special camera with a long lasting battery."; dir = 1; invuln = 0; light = null; name = "security camera"; network = list("SS13"); use_power = 0},/turf/space,/area) "aEI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) -"aEJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters) +"aEJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aEK" = (/obj/machinery/door/airlock{id_tag = "Cabin3"; name = "Cabin 3"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/wood,/area/crew_quarters) "aEL" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "aEM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -1654,8 +1654,8 @@ "aFP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aFQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aFR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) -"aFS" = (/obj/item/hand_labeler_refill,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aFT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aFS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) +"aFT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor,/area/security/main) "aFU" = (/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aFV" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aFW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -1679,7 +1679,7 @@ "aGo" = (/obj/item/weapon/wirecutters,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "aGp" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area) "aGq" = (/obj/machinery/the_singularitygen{anchored = 1},/turf/simulated/floor/plating/airless,/area) -"aGr" = (/obj/machinery/camera{c_tag = "Interrogation"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"aGr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig Hallway Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aGt" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/construction) "aGu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -1690,7 +1690,7 @@ "aGz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aGB" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aGC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) "aGE" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -1709,7 +1709,7 @@ "aGS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "aGT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"aGV" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aGV" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/range) "aGX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aGY" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) @@ -1751,7 +1751,7 @@ "aHI" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aHJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engine/chiefs_office) "aHK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/chiefs_office) -"aHL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) +"aHL" = (/obj/structure/closet,/obj/machinery/light_construct/small,/obj/item/weapon/mop,/turf/simulated/floor/plating,/area/maintenance/starboard) "aHM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engine/chiefs_office) "aHN" = (/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aHO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) @@ -1771,7 +1771,7 @@ "aIc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "aId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/quartermaster/storage) "aIe" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage) -"aIf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aIf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/carpet,/area/crew_quarters) "aIg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{icon = 'icons/obj/doors/Dooreng.dmi'; name = "Tech Storage"; req_access_txt = "0"; req_one_access_txt = "23;30"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/storage/tech) "aIh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/storage/tech) "aIi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools) @@ -1788,7 +1788,7 @@ "aIt" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access_txt = "26"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) "aIu" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/hallway/primary/central) "aIv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/fore) -"aIw" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIw" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "aIx" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters) "aIy" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aIz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) @@ -1814,8 +1814,8 @@ "aIT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aIU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aIV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) -"aIW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Armoury"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) -"aIX" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 3; pixel_y = -30},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) +"aIW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Armory"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) +"aIX" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 8; network = list("SS13")},/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aIY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "aIZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aJa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/break_room) @@ -1898,11 +1898,11 @@ "aKz" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/paper,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aKA" = (/turf/simulated/wall,/area/quartermaster/qm) "aKB" = (/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aKC" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) "aKD" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office{name = "\improper Supply Offices"}) "aKE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "aKF" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aKG" = (/obj/structure/table,/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKG" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/turf/simulated/floor/plating,/area/maintenance/fore) "aKH" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aKI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aKJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -1938,7 +1938,7 @@ "aLn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Evidence Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aLo" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/quartermaster/storage) "aLp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/quartermaster/storage) -"aLq" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aLq" = (/obj/item/weapon/soap/deluxe,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/obj/structure/closet/crate,/obj/item/clothing/suit/xenos,/obj/item/clothing/suit/monkeysuit,/obj/item/clothing/head/xenos,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aLr" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aLs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aLt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -1952,7 +1952,7 @@ "aLB" = (/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "aLC" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aLD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{name = "Escape Pod 4"; req_access = null; req_access_txt = "32"},/turf/simulated/floor,/area/engine/break_room) -"aLE" = (/obj/item/stack/sheet/cardboard,/obj/machinery/light_construct/small{dir = 1},/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/obj/structure/sign/poster{pixel_y = 32},/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/watertank,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aLE" = (/obj/item/stack/sheet/cardboard,/obj/machinery/light_construct/small{dir = 1},/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/watertank,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aLF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aLG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -1962,7 +1962,7 @@ "aLL" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/space,/area) "aLM" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aLN" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aLO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/janitor) +"aLO" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/handcuffs/cable/pink,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aLP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/primary/central) "aLQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aLR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/range) @@ -1985,8 +1985,8 @@ "aMi" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{dir = 4},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) "aMj" = (/turf/simulated/floor,/area/engine/break_room) "aMk" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/engineering) -"aMl" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) -"aMm" = (/obj/structure/table,/obj/item/weapon/soap/deluxe,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aMl" = (/obj/structure/closet,/obj/item/weapon/table_parts,/turf/simulated/floor/plating,/area/maintenance/disposal) +"aMm" = (/obj/item/weapon/vending_refill/coffee,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/disposal) "aMn" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aMo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warning"},/area/engine/engineering) "aMp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -1994,12 +1994,12 @@ "aMr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) "aMs" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) "aMt" = (/obj/machinery/door/window/eastright{base_state = "left"; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) -"aMu" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/borgupload{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/aiupload{pixel_x = 2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/storage/tech) +"aMu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) "aMv" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aMw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aMx" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aMy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"aMz" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/wirecutters,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) +"aMz" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) "aMA" = (/obj/structure/table,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aMB" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/computer/ordercomp,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) "aMC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint2{name = "Customs"}) @@ -2027,9 +2027,9 @@ "aMY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aMZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aNa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aNb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"aNb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aNc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aNd" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"aNd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/hostile/retaliate/bat{desc = "A fierce companion for any person of power, this spider has been carefully trained by NanoTrasen specialists. Its beady, staring eyes send shivers down your spine"; emote_hear = list("chitters"); faction = "spiders"; harm_intent_damage = 3; health = 200; icon_dead = "guard_dead"; icon_gib = "guard_dead"; icon_living = "guard"; icon_state = "guard"; maxHealth = 250; melee_damage_lower = 15; melee_damage_upper = 20; name = "Araneus"; real_name = "Araneus"; response_help = "pets"; voice_name = "unidentifiable voice"},/turf/simulated/floor/carpet,/area/security/hos) "aNe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2053,7 +2053,7 @@ "aNy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aNz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNA" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4},/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/bridge) -"aNB" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) +"aNB" = (/obj/structure/closet{name = "Contraband Locker"},/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/silencer,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aNC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aND" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2071,7 +2071,7 @@ "aNQ" = (/obj/machinery/door/airlock/external{name = "South Containment Arm Access"},/turf/simulated/floor/plating,/area/engine/engineering) "aNR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "aNS" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) -"aNT" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering) +"aNT" = (/obj/structure/table/woodentable,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/structure/reagent_dispensers/peppertank{pixel_x = -30; pixel_y = 0},/obj/item/weapon/storage/secure/safe/HoS{pixel_x = -25; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aNU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "aNV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) "aNW" = (/obj/machinery/power/port_gen/pacman,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) @@ -2113,11 +2113,11 @@ "aOG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aOH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/central) "aOI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/primary/central) -"aOJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"aOJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aOK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central) "aOL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) "aOM" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aON" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "CE Office APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"aON" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/carpet,/area/crew_quarters) "aOO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central) "aOP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aOQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/hallway/primary/central) @@ -2126,7 +2126,7 @@ "aOT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/quartermaster/storage) "aOU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/quartermaster/storage) "aOV" = (/obj/structure/stool/bed/chair/office/dark{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) -"aOW" = (/obj/structure/table,/obj/structure/flora/kirbyplants{desc = "A living potted plant."; name = "Photosynthetic Potted Plant"; pixel_y = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aOW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/crew_quarters) "aOX" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/space,/area) "aOY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "aOZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -2192,7 +2192,7 @@ "aQh" = (/obj/machinery/computer/card,/obj/machinery/light{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "aQi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "aQj" = (/obj/machinery/computer/secure_data,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) -"aQk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) +"aQk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) "aQl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Tech Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aQm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard) "aQn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) @@ -2203,7 +2203,7 @@ "aQs" = (/turf/simulated/floor/plating,/area/maintenance/starboard) "aQt" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) "aQu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aQv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aQv" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Supply Offices"}) "aQw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/engine/chiefs_office) "aQx" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aQy" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 8; name = "Cargo Desk"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -2264,7 +2264,7 @@ "aRB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aRC" = (/obj/structure/lattice,/obj/structure/grille,/turf/simulated/wall/r_wall,/area) "aRD" = (/obj/structure/grille,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area) -"aRE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge) +"aRE" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aRF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRG" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2299,7 +2299,7 @@ "aSk" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "aSl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aSm" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSn" = (/obj/machinery/computer/arcade,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aSn" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) "aSo" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Maltese Falcon APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSp" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "aSq" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -2308,15 +2308,15 @@ "aSt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aSv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/effect/landmark/start{name = "Captain"},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aSw" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/bridge) +"aSw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/obj/machinery/light/small,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plating,/area/janitor) "aSx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSy" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/supply) "aSz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSA" = (/obj/structure/rack,/obj/machinery/cell_charger,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aSB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) -"aSC" = (/obj/structure/table,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) +"aSC" = (/obj/structure/table,/obj/structure/flora/kirbyplants{desc = "A simple, healthy looking potted plant. Likely the best friend any AI will ever have."; name = "Photosynthetic Potted Plant"; pixel_y = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aSD" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = -29; pixel_y = 0},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/camera{c_tag = "Custodial Closet"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) -"aSE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"aSE" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/computer/security/telescreen{dir = 4; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = -29; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) "aSF" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aSG" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2{name = "Customs"}) "aSH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Supply Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -2355,7 +2355,7 @@ "aTo" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aTp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aTq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/port) -"aTr" = (/obj/machinery/door/airlock/command{name = "Command Desk"; req_access = null; req_access_txt = "19"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) +"aTr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/borgupload{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/aiupload{pixel_x = 2; pixel_y = -2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/storage/tech) "aTs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Auxiliary Tool Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aTt" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Engineering"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aTu" = (/obj/machinery/autolathe,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) @@ -2365,7 +2365,7 @@ "aTy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "aTz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "aTA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) -"aTB" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge) +"aTB" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/wirecutters,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aTC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "aTD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "63"},/turf/simulated/floor,/area/security/checkpoint/supply) "aTE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply) @@ -2409,7 +2409,7 @@ "aUq" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "aUr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aUs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aUt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) +"aUt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aUu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aUv" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/maintenance/storage) "aUw" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -2420,27 +2420,27 @@ "aUB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aUC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aUD" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aUE" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 1; name = "MiniSat Teleporter APC"; pixel_x = 0; pixel_y = 29},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) -"aUF" = (/obj/item/device/radio/beacon,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"aUE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Courtroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aUF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Starboard Corner"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUG" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor,/area/crew_quarters/heads) -"aUH" = (/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"aUI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Courtroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aUH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Port Corner"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aUI" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering) "aUJ" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) "aUK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aUL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aUM" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aUN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore-Starboard Corner"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aUN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aUO" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "aUP" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aUQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"aUR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore-Port Corner"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aUR" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aUS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) "aUT" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "aUU" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) -"aUV" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"aUV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/obj/machinery/camera{c_tag = "MiniSat Exterior Port-Fore"; dir = 8; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aUW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/maintenance/storage) "aUX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Vacant Office"; opacity = 1; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/security/vacantoffice) -"aUY" = (/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) +"aUY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Exterior Starboard-Fore"; dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aUZ" = (/obj/machinery/door/morgue{name = "Study #2"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVa" = (/turf/simulated/wall,/area/hallway/primary/starboard) "aVb" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2497,7 +2497,7 @@ "aWa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aWb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "aWc" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply) -"aWd" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) +"aWd" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "aWe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/processing) "aWf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) "aWg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2526,7 +2526,7 @@ "aWD" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aWE" = (/obj/machinery/librarypubliccomp,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library) "aWF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"aWG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads) +"aWG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Bridge - Starboard Access"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "aWH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 9; icon_state = "intact-y"; level = 2; tag = "icon-intact-y (NORTHWEST)"},/turf/simulated/floor,/area/maintenance/storage) "aWI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "aWJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/heads) @@ -2547,7 +2547,7 @@ "aWY" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; layer = 2.9; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aXa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/light/small{dir = 4},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aXb" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aXc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/library) "aXd" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aXe" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) @@ -2573,7 +2573,7 @@ "aXy" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aXz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aXA" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"aXB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "hopflash"; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"aXB" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aXC" = (/obj/machinery/power/apc{dir = 1; name = "Theatre APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aXD" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "aXE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 8; network = list("SS13")},/obj/structure/rack,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) @@ -2589,9 +2589,9 @@ "aXO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aXP" = (/obj/structure/piano,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "aXQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aXR" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"aXS" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"aXT" = (/turf/simulated/wall,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"aXR" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{pixel_y = 3},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/wood,/area/bridge) +"aXS" = (/obj/machinery/hologram/holopad,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/bridge) +"aXT" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/obj/machinery/firealarm{pixel_y = 28},/turf/simulated/floor/wood,/area/bridge) "aXU" = (/obj/structure/stool/bed/chair/wood/wings{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "aXV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aXW" = (/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) @@ -2610,7 +2610,7 @@ "aYj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aYk" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) "aYl" = (/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) -"aYm" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table,/turf/simulated/floor{icon_state = "caution"; dir = 5},/area/maintenance/storage) +"aYm" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/wood,/area/bridge) "aYn" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "aYo" = (/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aYp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) @@ -2640,11 +2640,11 @@ "aYN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "aYO" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "aYP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aYQ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"aYQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/bridge) "aYR" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "aYS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aYT" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) -"aYU" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/bridge) +"aYU" = (/obj/machinery/camera{c_tag = "Council Chamber"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/wood,/area/bridge) "aYV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; name = "Unfiltered & Air to Mix"; on = 1},/turf/simulated/floor,/area/maintenance/storage) "aYW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) "aYX" = (/obj/structure/stool/bed/chair,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2663,19 +2663,19 @@ "aZk" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZl" = (/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "aZm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aZn" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/item/weapon/folder/yellow,/turf/simulated/floor/wood,/area/bridge) +"aZn" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) "aZo" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads) "aZp" = (/turf/simulated/wall,/area/quartermaster/storage) "aZq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aZr" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "aZs" = (/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aZt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"aZu" = (/obj/structure/table/woodentable,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/item/weapon/book/manual/security_space_law{pixel_y = 3},/turf/simulated/floor/wood,/area/bridge) +"aZu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "aZv" = (/obj/machinery/door/airlock/hatch{name = "Telecomms Control Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "aZw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aZx" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) +"aZx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "aZy" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecomms Control APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/server{network = "tcommsat"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"aZz" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 2; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"aZz" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aZA" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aZB" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/maintenance/storage) "aZC" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2686,13 +2686,13 @@ "aZH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aZI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "aZJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/storage) -"aZK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central) +"aZK" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 1; name = "MiniSat Teleporter APC"; pixel_x = 0; pixel_y = 29},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZL" = (/turf/simulated/wall,/area/hallway/primary/central) "aZM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "aZN" = (/turf/simulated/wall,/area/janitor) -"aZO" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Bridge - Starboard Access"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"aZO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZP" = (/turf/simulated/wall/r_wall,/area/bridge) -"aZQ" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Council Chamber"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/bridge) +"aZQ" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/storage) "aZS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "aZT" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -2711,9 +2711,9 @@ "bag" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bah" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/central) "bai" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"baj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"baj" = (/obj/machinery/door/airlock/command{name = "Command Desk"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) "bak" = (/turf/simulated/floor{icon_state = "warning"},/area/engine/break_room) -"bal" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"bal" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/crew_quarters/heads) "bam" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "ban" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{dir = 4; icon_state = "escape"},/area/maintenance/storage) "bao" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2750,7 +2750,7 @@ "baT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) "baU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "baV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) -"baW" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"baW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "baX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) "baY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "baZ" = (/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -2827,7 +2827,7 @@ "bcs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bct" = (/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) "bcu" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area) -"bcv" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) +"bcv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/bridge) "bcw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "bcx" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "bcy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2846,7 +2846,7 @@ "bcL" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) "bcM" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bcN" = (/obj/structure/table,/obj/item/trash/syndi_cakes{pixel_y = 4},/turf/simulated/floor,/area/engine/break_room) -"bcO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) +"bcO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "bcP" = (/obj/machinery/door/window/southright{dir = 4; name = "Bar Door"; pixel_x = -3; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "25;28"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bcQ" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/break_room) "bcR" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko,/turf/simulated/floor,/area/engine/break_room) @@ -2860,7 +2860,7 @@ "bcZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 6},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/hallway/primary/starboard) "bda" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Foyer"; req_access_txt = "0"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/break_room) "bdb" = (/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bdc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 2; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads) +"bdc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/bridge) "bdd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bde" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge) "bdf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge) @@ -2890,7 +2890,7 @@ "bdD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "19"},/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = -34; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge) "bdF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/hallway/primary/port) -"bdG" = (/obj/machinery/computer/security/telescreen{name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = 29},/obj/machinery/light{dir = 1},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bdG" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bdH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/engineering) "bdJ" = (/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) @@ -2921,7 +2921,7 @@ "bei" = (/obj/machinery/computer/ordercomp,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bej" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bek" = (/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) -"bel" = (/obj/machinery/recharge_station,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) +"bel" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/engine/break_room) "bem" = (/obj/item/weapon/paper,/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "ben" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "beo" = (/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) @@ -2951,11 +2951,11 @@ "beM" = (/obj/structure/table,/obj/item/device/camera_film,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor,/area/storage/art) "beN" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) "beO" = (/obj/structure/table,/obj/item/device/camera,/turf/simulated/floor,/area/storage/art) -"beP" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/hallway/primary/central) +"beP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/head/welding,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "beQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) "beR" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "beS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"beT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"beT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "beU" = (/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) "beV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge) "beW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads) @@ -2968,7 +2968,7 @@ "bfd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/carpet,/area/bridge) "bfe" = (/obj/structure/transit_tube{tag = "icon-N-SE"; icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bff" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) -"bfg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/bridge) +"bfg" = (/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bfh" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge) "bfi" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/photo_album{pixel_y = -4},/obj/item/device/camera{pixel_y = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bfj" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) @@ -2977,7 +2977,7 @@ "bfm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/bridge) "bfn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/break_room) "bfo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/break_room) -"bfp" = (/turf/simulated/floor{dir = 10; icon_state = "caution"},/area/engine/break_room) +"bfp" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bfq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "warning"},/area/engine/break_room) "bfr" = (/obj/structure/table/woodentable,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bfs" = (/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat West Wing"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) @@ -3029,7 +3029,7 @@ "bgm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "50"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "bgn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/construction/Storage{name = "Storage Wing"}) "bgo" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) -"bgp" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"bgp" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bgq" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) "bgr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bgs" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor,/area/bridge) @@ -3039,7 +3039,7 @@ "bgw" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor,/area/bridge) "bgx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bgy" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge) -"bgz" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 2; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bgz" = (/turf/simulated/wall,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bgA" = (/obj/machinery/door/window{dir = 1; name = "Captain's Bedroom"; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bgB" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/armor/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bgC" = (/obj/structure/closet/secure_closet/captains,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3075,7 +3075,7 @@ "bhg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "bhh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table,/obj/machinery/alarm{pixel_y = 26},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhi" = (/obj/machinery/light/small{dir = 8},/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"bhj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/engine/break_room) +"bhj" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bhk" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station) "bhl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bhm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3108,7 +3108,7 @@ "bhN" = (/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bhO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bhP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"bhQ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/hallway/primary/central) +"bhQ" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bhR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) "bhS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "bhT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) @@ -3177,12 +3177,12 @@ "bje" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/camera{c_tag = "Atmospherics Entrance"; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "bjf" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/weapon/table_parts,/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bjg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/primary) -"bjh" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/vending/coffee{pixel_x = 1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"bji" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/vending/cigarette{pixel_x = -1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) +"bjh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) +"bji" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "bjj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/primary) "bjk" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "bjl" = (/turf/simulated/wall/r_wall,/area/storage/primary) -"bjm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "caution"},/area/engine/break_room) +"bjm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/bridge) "bjn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "bjo" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock) "bjp" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/miningdock) @@ -3221,7 +3221,7 @@ "bjW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bjX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "bjY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Port Primary Hallway"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"bjZ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) +"bjZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/bridge) "bka" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r"; level = 2},/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bkb" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/engineering) "bkc" = (/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) @@ -3239,7 +3239,7 @@ "bko" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bkp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/fore) "bkq" = (/obj/machinery/washing_machine,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bkr" = (/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 7},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"bkr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = 24; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "bks" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "bkt" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "bku" = (/obj/machinery/space_heater,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) @@ -3266,7 +3266,7 @@ "bkP" = (/obj/machinery/vending/tool,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary) "bkQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central) "bkR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary) -"bkS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Research Break Room"; dir = 1; network = list("SS13","RD")},/obj/structure/noticeboard{pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"bkS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "hopflash"; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bkT" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary) "bkU" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 2; pixel_y = -2},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = 5},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary) "bkV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) @@ -3292,11 +3292,11 @@ "blp" = (/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "blq" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "blr" = (/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) -"bls" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/folder/blue,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"blt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Engineering Foyer APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/engine/break_room) -"blu" = (/obj/machinery/computer/communications,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"blv" = (/obj/structure/table/woodentable,/obj/machinery/computer/security/wooden_tv{pixel_x = 3; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) -"blw" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/handcuffs,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) +"bls" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"blt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"blu" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) +"blv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) +"blw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Council Chamber"; req_access_txt = "19"},/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/bridge) "blx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) "bly" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge) "blz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/bridge) @@ -3315,14 +3315,14 @@ "blM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fitness Area"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/fitness) "blN" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) "blO" = (/obj/machinery/power/emitter,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engine/engineering) -"blP" = (/obj/machinery/vending/engivend,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"blQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) +"blP" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"blQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "blR" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/courtroom) "blS" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "blT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "blU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "blV" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"blW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room) +"blW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "blX" = (/turf/simulated/floor,/area/maintenance/storage) "blY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) "blZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) @@ -3377,16 +3377,16 @@ "bmW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bmX" = (/obj/structure/closet/crate,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bmY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) -"bmZ" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) +"bmZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "bna" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) "bnb" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/crew_quarters/locker) -"bnc" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/machinery/cell_charger,/obj/item/weapon/cell/crap,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) +"bnc" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 5},/area/maintenance/storage) "bnd" = (/turf/simulated/floor/carpet,/area/bridge) "bne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) -"bnf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/device/flash,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/bridge) +"bnf" = (/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 7},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bng" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bnh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"bni" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) +"bni" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "bnj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bnk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bnl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3414,7 +3414,7 @@ "bnH" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/camera{c_tag = "Bridge - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) "bnI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bnJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Bridge - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) -"bnK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bnK" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "bnL" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bnM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/maintenance/fore) "bnN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) @@ -3466,14 +3466,14 @@ "boH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "boI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/engineering) "boJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) -"boK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) +"boK" = (/obj/item/device/radio/beacon,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "boL" = (/turf/simulated/wall,/area/bridge) "boM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/port) "boN" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "boO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "boP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/structure/rack,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/timer,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge) -"boQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) -"boR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) +"boQ" = (/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/bridge) +"boR" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/bridge) "boS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "boT" = (/obj/machinery/door/window{name = "Captain's Desk"; req_access_txt = "20"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boU" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3558,8 +3558,8 @@ "bqv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/bridge) "bqx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) -"bqy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) -"bqz" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bqy" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/folder/blue,/obj/item/weapon/folder/blue,/turf/simulated/floor/wood,/area/bridge) +"bqz" = (/obj/structure/table/woodentable,/obj/machinery/computer/security/wooden_tv{pixel_x = 3; pixel_y = 2},/turf/simulated/floor/wood,/area/bridge) "bqA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqC" = (/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) @@ -3577,7 +3577,7 @@ "bqO" = (/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bqQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"bqR" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 24; pixel_y = 5},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bqR" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/handcuffs,/turf/simulated/floor/wood,/area/bridge) "bqS" = (/obj/structure/window/reinforced,/obj/machinery/power/apc{aidisabled = 0; dir = 2; name = "MiniSat Exterior APC"; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/light,/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqT" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bqU" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/lattice,/turf/space,/area) @@ -3621,13 +3621,13 @@ "brG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "brI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"brJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" The station model number is MSv38-L:221111."},/area/hallway/primary/port) -"brK" = (/obj/machinery/hologram/holopad{pixel_y = -16},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/hallway/primary/port) +"brJ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior Starboard"; dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"brK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/obj/machinery/camera{c_tag = "MiniSat Exterior Access Fore"; dir = 2; network = list("MiniSat")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "brL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brM" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "brN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "brO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"brP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/chapel/main) +"brP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "brQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "brR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/storage/primary) "brS" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3637,7 +3637,7 @@ "brW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "brX" = (/turf/simulated/floor/carpet,/area/library) "brY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/carpet,/area/library) -"brZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"brZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "bsa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/engine/break_room) "bsb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bsc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood,/area/library) @@ -3654,7 +3654,7 @@ "bsn" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/item/weapon/pen/red,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/qm) "bso" = (/obj/effect/landmark/start{name = "Quartermaster"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) "bsp" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) -"bsq" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/bridge) +"bsq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "bsr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bss" = (/turf/simulated/floor/wood,/area/bridge) "bst" = (/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3662,8 +3662,8 @@ "bsv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Locker Room APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bsw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) "bsx" = (/obj/machinery/vending/cola,/obj/machinery/newscaster{pixel_x = -28; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port) -"bsy" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) -"bsz" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bsy" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/vending/cigarette{pixel_x = -1},/turf/simulated/floor/wood,/area/bridge) +"bsz" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/vending/coffee{pixel_x = 1},/turf/simulated/floor/wood,/area/bridge) "bsA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsB" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bsC" = (/obj/machinery/turretid{control_area = "\improper MiniSat East Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat East Wing turret control"; pixel_x = 24; pixel_y = -26},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) @@ -3717,7 +3717,7 @@ "bty" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "btz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "btA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) -"btB" = (/turf/simulated/floor/carpet,/area/chapel/main) +"btB" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 24; pixel_y = 5},/obj/machinery/camera{c_tag = "MiniSat Exterior Access Aft"; dir = 1; network = list("MiniSat")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "btC" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/machinery/power/apc{dir = 2; name = "Tool Storage APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/storage/primary) "btD" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "btE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/library) @@ -3729,16 +3729,16 @@ "btK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/qm) "btL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) "btM" = (/obj/machinery/power/apc{cell_type = 2500; dir = 2; name = "Courtroom APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) -"btN" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) -"btO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) -"btP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Council Chamber"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) +"btN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"btO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 10; icon_state = "caution"},/area/engine/break_room) +"btP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv38O:131214"},/area/hallway/primary/port) "btQ" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor/carpet,/area/bridge) "btR" = (/obj/structure/stool/bed/chair/comfy/brown,/turf/simulated/floor/carpet,/area/bridge) "btS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor/carpet,/area/bridge) "btT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/carpet,/area/bridge) "btU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "btV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Council Chamber"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) -"btW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) +"btW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 2; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/crew_quarters/heads) "btX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/lawoffice) "btY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "btZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3759,7 +3759,7 @@ "buo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bup" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) "buq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bur" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) +"bur" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/device/flash,/turf/simulated/floor/wood,/area/bridge) "bus" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) "but" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "buu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering{dir = 8}) @@ -3802,9 +3802,9 @@ "bvf" = (/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bvg" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/status_display{density = 0; pixel_x = -32; pixel_y = 0; supply_display = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/quartermaster/storage) "bvh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) -"bvi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) +"bvi" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/machinery/cell_charger,/obj/item/weapon/cell/crap,/turf/simulated/floor/wood,/area/bridge) "bvj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) -"bvk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/wood,/area/bridge) +"bvk" = (/obj/machinery/light_switch{pixel_x = 8; pixel_y = -26},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bvl" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bvm" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/bridge) "bvn" = (/obj/structure/stool/bed/chair{name = "Judge"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Courtroom"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/crew_quarters/courtroom) @@ -3813,11 +3813,11 @@ "bvq" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet,/area/bridge) "bvr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) "bvs" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"bvt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) -"bvu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) +"bvt" = (/obj/structure/table,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) +"bvu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/flora/tree/pine/xmas{pixel_y = -16},/turf/simulated/floor/carpet,/area/hallway/primary/port) "bvv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bvx" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/light,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bvx" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bvy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/qm) "bvA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) @@ -3847,7 +3847,7 @@ "bvY" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Pure to Port"; on = 0},/turf/simulated/floor,/area/maintenance/storage) "bvZ" = (/obj/structure/bookcase/manuals/engineering,/obj/machinery/keycard_auth{pixel_x = -25; pixel_y = 25},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) "bwa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/engine/engineering) -"bwb" = (/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bwb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Engineering Foyer APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engine/break_room) "bwc" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/engine/n20,/area/maintenance/storage) "bwd" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller{valve_open = 1},/turf/simulated/floor/engine/n20,/area/maintenance/storage) "bwe" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine/n20,/area/maintenance/storage) @@ -3859,7 +3859,7 @@ "bwk" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/construction) "bwl" = (/obj/machinery/conveyor{dir = 1; id = "QMLoad2"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage) "bwm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Locker Room Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"bwn" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bwn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/engine/break_room) "bwo" = (/obj/machinery/photocopier,/obj/machinery/camera{c_tag = "Law Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/lawoffice) "bwp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bwq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3894,7 +3894,7 @@ "bwT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bwU" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "bridge blast door"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge) "bwV" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"bwW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) +"bwW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/engine/break_room) "bwX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bwY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/central) "bwZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) @@ -3961,24 +3961,24 @@ "byi" = (/obj/machinery/computer/arcade,/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/crew_quarters/fitness) "byj" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/closet/crate/internals,/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "byk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) -"byl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bym" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"byn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"byo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"byp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"byl" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bym" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 23},/turf/simulated/floor/plating,/area/quartermaster/storage) +"byn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) +"byo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering) +"byp" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) "byq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/closet/secure_closet/medical1{pixel_x = -3},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"byr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bys" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Command Corridors APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"byt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"byr" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bys" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engineering) +"byt" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plating,/area/construction) "byu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "byv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "byw" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) -"byx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"byy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"byx" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"byy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) "byz" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/surgery) "byA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"}) "byB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper{name = "Sleepers"}) -"byC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) +"byC" = (/obj/structure/flora/tree/pine/xmas{pixel_x = -16; pixel_y = -4},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) "byD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "byE" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) "byF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig Desk"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) @@ -4010,9 +4010,9 @@ "bzf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/crew_quarters/locker) "bzg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bzh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) -"bzi" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) +"bzi" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/ai_status_display{pixel_x = 16; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "bzj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/locker) -"bzk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bzk" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bzl" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = 0; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bzm" = (/obj/machinery/computer/secure_data,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 32; pixel_y = 2},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science) "bzn" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4035,34 +4035,34 @@ "bzE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bzF" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/storage/primary) "bzG" = (/obj/machinery/sleep_console{density = 0; dir = 8; icon_state = "console"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bzH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzH" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"bzI" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "CE Office APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light_switch{pixel_x = 26; pixel_y = 26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bzJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Restrooms"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bzK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzK" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor,/area/construction) "bzL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bzM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/engineering) +"bzN" = (/obj/machinery/power/apc{cell_type = 10000; dir = 8; name = "Engine Room APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) +"bzO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) +"bzP" = (/obj/machinery/vending/engivend,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bzQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bzR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/brig) -"bzS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bzT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzS" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/light/small,/obj/machinery/camera{c_tag = "MiniSat Exterior Fore-Starboard"; dir = 1; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bzT" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/light/small,/obj/machinery/camera{c_tag = "MiniSat Exterior Fore-Port"; dir = 1; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bzU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"bzV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-Aft"; location = "7-Command-Starboard"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bzV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "bzW" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bzX" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bzY" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/lawoffice) "bzZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/brig) "bAa" = (/obj/machinery/door/airlock{id_tag = "Toilet1"; name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bAb" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) +"bAb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) "bAc" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/fyellow,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/storage/primary) "bAd" = (/obj/structure/table,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bAe" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bAf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Storage Access"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "bAg" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) "bAh" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) -"bAi" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Engine Room APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bAi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bAj" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bAk" = (/obj/machinery/computer/station_alert,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bAl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) @@ -4101,7 +4101,7 @@ "bAS" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bAT" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bAU" = (/obj/machinery/computer/crew,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/medbay{name = "Medbay Central"}) -"bAV" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bAV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/engineering) "bAW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bAX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bAY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Observation"; req_access_txt = "45"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/medical/surgery) @@ -4114,13 +4114,13 @@ "bBf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{aidisabled = 0; dir = 1; name = "AI Chamber APC"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai) "bBg" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/obj/machinery/door/window{dir = 1; name = "Primary AI Core Access"; pixel_y = 0; req_access_txt = "16"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai) "bBh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/lawoffice) -"bBi" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bBj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bBi" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; name = "Gas Pump"; on = 1},/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area) +"bBj" = (/obj/machinery/compressor{comp_id = "incineratorturbine"; dir = 1; luminosity = 2},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bBk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/southleft,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) -"bBl" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bBm" = (/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bBn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bBo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bBl" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 9},/obj/structure/disposalpipe/segment,/turf/space,/area) +"bBm" = (/obj/machinery/power/turbine{luminosity = 2},/obj/structure/cable,/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bBn" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bBo" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bBp" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) "bBq" = (/turf/simulated/wall/r_wall,/area/teleporter{name = "\improper Teleporter Room"}) "bBr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/quartermaster/qm) @@ -4142,7 +4142,7 @@ "bBH" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bBI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "bBJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/lab) -"bBK" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bBK" = (/obj/structure/rack,/obj/item/weapon/hatchet,/obj/item/weapon/butch,/turf/simulated/floor/plating,/area/maintenance/starboard) "bBL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer's Office"; req_access_txt = "56"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/chiefs_office) "bBM" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bBN" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm Close"; dir = 4; network = list("Singulo")},/turf/space,/area) @@ -4154,7 +4154,7 @@ "bBT" = (/obj/structure/table,/obj/item/device/paicard,/turf/simulated/floor,/area/crew_quarters/locker) "bBU" = (/obj/structure/closet/athletic_mixed,/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/crew_quarters/fitness) "bBV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bBW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) +"bBW" = (/obj/machinery/atmospherics/pipe/simple{dir = 2; icon_state = "intact"; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "bBX" = (/obj/structure/sign/nosmoking_2,/turf/simulated/wall,/area/maintenance/storage) "bBY" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) "bBZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/medical/medbay2{name = "Medbay Storage"}) @@ -4176,22 +4176,22 @@ "bCp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "bCq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bCr" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/light{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -31},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) -"bCs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) +"bCs" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Incinerator Exterior Airlock"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator) "bCt" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library) "bCu" = (/obj/machinery/door/morgue{name = "Private Study"; req_access_txt = "37"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bCv" = (/obj/machinery/chem_dispenser,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bCw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/central) "bCx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) -"bCy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) -"bCz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) +"bCy" = (/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/wall/r_wall,/area/maintenance/incinerator) +"bCz" = (/obj/machinery/atmospherics/pipe/vent{dir = 4},/turf/simulated/floor/plating/airless,/area) "bCA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "bCB" = (/obj/machinery/computer/med_data,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) "bCC" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bCD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bCD" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bCE" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - N2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) -"bCF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bCF" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bCG" = (/turf/simulated/wall/r_wall,/area/gateway) -"bCH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bCH" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bCI" = (/obj/structure/closet/lasertag/red,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) "bCJ" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bCK" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -4201,7 +4201,7 @@ "bCO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) "bCP" = (/obj/structure/closet/masks,/obj/machinery/light,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "bCQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) -"bCR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"bCR" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; luminosity = 2; on = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bCS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/crew_quarters/kitchen) "bCT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) "bCU" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -4243,7 +4243,7 @@ "bDE" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bDF" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) "bDG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) -"bDH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) +"bDH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bDI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bDJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "bDK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) @@ -4251,13 +4251,13 @@ "bDM" = (/obj/structure/rack,/obj/item/weapon/storage/briefcase,/obj/item/weapon/storage/briefcase{pixel_x = 4; pixel_y = -2},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bDN" = (/obj/structure/table,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/item/trash/raisins{pixel_y = 7},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bDO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/crew_quarters/locker) -"bDP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bDP" = (/obj/machinery/door/poddoor{id = "auxincineratorvent"; name = "Auxiliary Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bDQ" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bDR" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bDS" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) -"bDT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bDT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Research Break Room"; dir = 1; network = list("SS13","RD")},/obj/structure/noticeboard{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bDU" = (/turf/simulated/wall,/area/toxins/telesci) -"bDV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bDV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bDW" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bDX" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) "bDY" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) @@ -4273,7 +4273,7 @@ "bEi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bEj" = (/turf/simulated/wall,/area/crew_quarters/kitchen) "bEk" = (/obj/machinery/computer/telescience,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) -"bEl" = (/obj/structure/stool,/obj/machinery/light{dir = 1},/obj/machinery/newscaster{dir = 8; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"bEl" = (/obj/structure/rack,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bEm" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor,/area/construction) "bEn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office) "bEo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage) @@ -4281,9 +4281,9 @@ "bEq" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Starboard Maintenance APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bEr" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bEs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/quartermaster/storage) -"bEt" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"bEt" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "bEu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bEv" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bEv" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Toxins Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "bEw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bEx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) @@ -4357,17 +4357,17 @@ "bFO" = (/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "QMLoaddoor2"; name = "Supply Dock Loading Door"; opacity = 1},/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bFP" = (/obj/machinery/pipedispenser,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/maintenance/storage) "bFQ" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "warning"},/area/maintenance/storage) -"bFR" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/maintenance/storage) +"bFR" = (/obj/structure/sign/fire{pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "bFS" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/turf/simulated/floor,/area/maintenance/storage) "bFT" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/obj/item/weapon/cigbutt,/turf/simulated/floor,/area/maintenance/storage) "bFU" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor,/area/maintenance/storage) "bFV" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) "bFW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bFX" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) -"bFY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) -"bFZ" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bFY" = (/obj/machinery/door/poddoor{id = "turbinevent"; name = "Turbine Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bFZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGa" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) -"bGb" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bGb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "bGd" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals Fore Arm Far"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bGe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -4387,17 +4387,17 @@ "bGs" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bGt" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "bGu" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/item/weapon/cigbutt,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"bGv" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bGv" = (/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bGw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGx" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bGy" = (/obj/structure/showcase{desc = "A stand with the empty NanoTrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees."; icon = 'icons/mecha/mecha.dmi'; icon_state = "marauder"; name = "Combat Mech Exhibit"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bGy" = (/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bGz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bookcase{name = "bookcase"},/obj/machinery/newscaster{pixel_y = 31},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bGA" = (/obj/structure/table/woodentable,/obj/item/weapon/phone{desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bGB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bGC" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bGD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/turf/simulated/floor/plating,/area/toxins/telesci) "bGE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/toxins/telesci) -"bGF" = (/obj/structure/showcase{desc = "A stand with a model of the perfect Nanotrasen Employee bolted to it. Signs indicate it is robustly genetically engineered, as well as being ruthlessly loyal."; name = "'Perfect Man' Exhibit"},/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, explaining how recent developments in genetic modification and cloning technologies by the Nanotrasen Corporation have led to development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Man' Exhibit"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bGF" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = -24},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) "bGG" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bGH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) "bGI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/gateway) @@ -4427,7 +4427,7 @@ "bHg" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/wood,/area/library) "bHh" = (/obj/structure/rack,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bHi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/server) -"bHj" = (/obj/structure/rack,/obj/item/weapon/hatchet,/obj/item/weapon/butch,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bHj" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 1; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 0; pixel_y = -29},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -10},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) "bHk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) "bHl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/prison/solitary{name = "Prisoner Education Chamber"}) "bHm" = (/obj/structure/morgue{pixel_x = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/detectives_office) @@ -4477,7 +4477,7 @@ "bIe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bIg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bIh" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bIh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/hand_labeler_refill,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bIi" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bIj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) @@ -4503,7 +4503,7 @@ "bIE" = (/obj/machinery/icecream_vat,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bIF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/toxins/telesci) "bIG" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Telescience Lab"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bIH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bIH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bII" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) @@ -4521,7 +4521,7 @@ "bIW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/solar/port) "bIX" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bIY" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) -"bIZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light_switch{pixel_x = 26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"bIZ" = (/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJa" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "bJb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJc" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4551,8 +4551,8 @@ "bJA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/construction) "bJB" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bJC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Telescience Lab"; dir = 1; network = list("SS13","RD")},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bJD" = (/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bJE" = (/obj/structure/table/woodentable,/obj/machinery/cell_charger,/obj/item/weapon/cell/crap,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bJD" = (/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/trash/candy,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bJE" = (/obj/machinery/door/airlock{name = "Medbay Emergency Storage"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/construction) "bJG" = (/obj/structure/table,/obj/item/clothing/gloves/orange,/turf/simulated/floor,/area/construction) "bJH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -4574,7 +4574,7 @@ "bJX" = (/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD")},/turf/simulated/floor,/area/toxins/lab) "bJY" = (/obj/structure/stool/bed/chair/comfy/brown,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bJZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"bKa" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"bKa" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bKb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bKc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bKd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -4589,17 +4589,17 @@ "bKm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area) "bKn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bKo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bKp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 9},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bKp" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) "bKq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bKr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bKs" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bKu" = (/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bKu" = (/obj/machinery/mecha_part_fabricator{dir = 1; name = "counterfeit fabricator"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bKv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bKw" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "O2 to Airmix"; on = 1},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage) "bKx" = (/obj/structure/window/reinforced,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage) "bKy" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 1; icon_state = "intact_on"; name = "Gas filter (O2 tank)"; on = 1},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage) -"bKz" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bKz" = (/obj/structure/sign/poster{pixel_y = 32},/obj/structure/rack,/obj/item/stack/sheet/cardboard,/obj/item/device/radio/off,/obj/machinery/light_construct{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bKA" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "Nitrogen Outlet"; on = 1},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "redfull"},/area/maintenance/storage) "bKB" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) "bKC" = (/obj/structure/window/reinforced,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "redfull"},/area/maintenance/storage) @@ -4607,8 +4607,8 @@ "bKE" = (/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "bKF" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 5; icon_state = "intact-r"; level = 2},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "redfull"},/area/maintenance/storage) "bKG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bKH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/storage) -"bKI" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bKH" = (/obj/structure/closet,/obj/item/stack/sheet/metal{amount = 34},/obj/item/weapon/extinguisher/mini,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bKI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 9},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bKJ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 9; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) "bKK" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Break Room"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bKL" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Air to Pure"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) @@ -4624,17 +4624,17 @@ "bKV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bKW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) "bKX" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"bKY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "O2 to Pure"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bKY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bKZ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bLa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"bLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bLb" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bLc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "bLd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bLe" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/showcase{desc = "The famous NanoTrasen brand microwave, the multi-purpose cooking appliance every station needs! This one appears to be drawn onto a cardboard box."; dir = 1; icon = 'icons/obj/kitchen.dmi'; icon_state = "mw"; name = "NanoTrasen Microwave Exhibit"; pixel_x = 0; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bLe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bLf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/lab) -"bLg" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/woodentable,/obj/structure/reagent_dispensers/beerkeg{desc = "One of the more successful achievements of the NanoTrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devestatingly effective. Signs explain that though this is just a model, every NanoTrasen station is equipped with one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; icon = 'icons/obj/stationobjs.dmi'; icon_state = "nuclearbomb0"; name = "NanoTrasen Brand Nuclear Fission Explosive Exhibit"; pixel_x = 2; pixel_y = 6},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bLh" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/matches{pixel_x = -2; pixel_y = 3},/obj/item/clothing/mask/cigarette/cigar{pixel_x = 4; pixel_y = 1},/obj/item/clothing/mask/cigarette/cigar{pixel_x = -4; pixel_y = 1},/obj/item/clothing/mask/cigarette/cigar/cohiba,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bLi" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/showcase{desc = "A slightly battered looking TV. Vaious Nanotrasen infomercials play on a loop, accompanied by a jaunty tune."; dir = 1; icon = 'icons/obj/computer.dmi'; icon_state = "security_det"; name = "NanoTrasen Corporate News"; pixel_x = 2; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"bLg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bLh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bLi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/checkpoint/medical) "bLj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "bLk" = (/turf/simulated/wall,/area/crew_quarters/hor) "bLl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) @@ -4650,18 +4650,18 @@ "bLv" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bLw" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "bLx" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bLy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bLz" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bLA" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "O2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLA" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/pipe/tank/toxins{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bLB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) -"bLC" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLC" = (/obj/machinery/atmospherics/pipe/simple/insulated,/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area) "bLD" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway) "bLE" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bLF" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "N2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLF" = (/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bLG" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bLH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"bLI" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 1; name = "O2 Outlet Valve"},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) -"bLJ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bLI" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bLJ" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bLK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) "bLL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bLM" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -4674,23 +4674,23 @@ "bLT" = (/obj/machinery/atmospherics/trinary/filter{dir = 8},/turf/simulated/floor,/area/maintenance/storage) "bLU" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Research Lab Maintenance"; req_access_txt = "7"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bLV" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor,/area/maintenance/storage) -"bLW" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bLW" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bLX" = (/obj/machinery/atmospherics/trinary/mixer{dir = 2; icon_state = "intact_on"; name = "Gas mixer (N2/O2)"; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 0; target_pressure = 4500},/turf/simulated/floor,/area/maintenance/storage) "bLY" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) -"bLZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; interior_door_tag = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -26; pixel_y = 6; req_access_txt = "12"},/obj/machinery/ignition_switch{id = "Incinerator"; pixel_x = -24; pixel_y = -6},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bLZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bMa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bMb" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bMc" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/rxglasses,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bMc" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bMd" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Aft Hallway APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) "bMe" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bMf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bMg" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/turf/simulated/floor{dir = 4; icon_state = "caution"},/area/maintenance/storage) -"bMh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) +"bMh" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bMi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bMj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bMk" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) -"bMl" = (/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"bMm" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) +"bMk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "O2 to Pure"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bMl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bMm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bMo" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bMp" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) @@ -4701,12 +4701,12 @@ "bMu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMv" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/library) "bMw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) -"bMx" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) -"bMy" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bMx" = (/obj/item/trash/semki,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bMy" = (/obj/structure/closet,/obj/item/stack/sheet/glass{amount = 12},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) "bMA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/portsolar) "bMB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) -"bMC" = (/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/trash/candy,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bMC" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "bME" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) "bMF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -4727,23 +4727,23 @@ "bMU" = (/turf/simulated/wall/r_wall,/area/tcommsat/server) "bMV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) "bMW" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/solar/port) -"bMX" = (/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bMX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bMY" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 4; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bMZ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "caution"},/area/maintenance/storage) "bNa" = (/obj/structure/closet,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"bNb" = (/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bNc" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) +"bNb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"bNc" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bNd" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "bNe" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) -"bNf" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"bNg" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"bNf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bNh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) -"bNi" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 5; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) -"bNj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) +"bNi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNj" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) "bNk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bNl" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bNm" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bNn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"bNl" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNm" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNn" = (/obj/item/clothing/glasses/hud/health,/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bNo" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNp" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bNq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/turret_protected/ai_upload) @@ -4759,21 +4759,21 @@ "bNA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bNB" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bNC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating/airless,/area/maintenance/storage) -"bND" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) +"bND" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bNE" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bNF" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/maintenance/storage) "bNG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bNH" = (/obj/item/weapon/shovel/spade,/obj/structure/table,/obj/item/seeds/limeseed,/obj/item/nutrient/rh,/obj/item/seeds/cherryseed,/obj/item/seeds/lemonseed,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bNI" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bNJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) -"bNK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) +"bNJ" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bNK" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/engine,/area/toxins/telesci) "bNM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/engine,/area/toxins/telesci) -"bNN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central) +"bNN" = (/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bNO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bNP" = (/mob/living/simple_animal/pug{desc = "It's Pugley III, the loveable four-legged test subject."; dir = 8; name = "Pugley III"; real_name = "Pugley III"},/turf/simulated/floor/engine,/area/toxins/telesci) "bNQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bNR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bNR" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bNS" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bNT" = (/obj/machinery/telepad,/turf/simulated/floor/engine,/area/toxins/telesci) "bNU" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -4783,8 +4783,8 @@ "bNY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bNZ" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bOa" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) -"bOb" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bOc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bOb" = (/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bOd" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bOe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/engine,/area/toxins/telesci) "bOf" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -4798,7 +4798,7 @@ "bOn" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/starboard) "bOo" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "bOp" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bOq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOq" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bOr" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bOs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "bOt" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Research Division APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -4809,22 +4809,22 @@ "bOy" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage) "bOz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bOA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bOB" = (/obj/structure/rack,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bOC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOB" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOC" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "bOE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "bOF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "bOG" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) -"bOH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/storage) +"bOH" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "O2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "bOJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/research{name = "Research Division"}) "bOK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bOL" = (/obj/machinery/door/poddoor{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main) "bOM" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 16},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bON" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/storage) +"bON" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOO" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/central) "bOP" = (/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/screwdriver{pixel_x = -2; pixel_y = 6},/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/radio/headset/headset_med,/obj/structure/table,/turf/simulated/floor{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) -"bOQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboard) +"bOQ" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "N2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bOS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bOT" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) @@ -4834,7 +4834,7 @@ "bOX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/central) "bOY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central) "bOZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central) -"bPa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11-Command-Port"; location = "10-Aft-Central"},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) +"bPa" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics Starboard-Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bPb" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "L7"},/area/hallway/primary/central) "bPc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9-Escape"; location = "8-Central-Aft"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "L9"},/area/hallway/primary/central) "bPd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L11"},/area/hallway/primary/central) @@ -4842,7 +4842,7 @@ "bPf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central) "bPg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bPh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) -"bPi" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bPi" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bPj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/hallway/primary/central) "bPk" = (/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8},/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8},/obj/machinery/computer/supplycomp,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bPl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4906,7 +4906,7 @@ "bQr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bQs" = (/obj/structure/rack,/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQt" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) -"bQu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"bQu" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 1; name = "O2 Outlet Valve"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bQv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/lab) "bQw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/vending/cola,/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bQx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) @@ -4925,7 +4925,7 @@ "bQK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bQL" = (/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bQM" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bQN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) +"bQN" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bQO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research and Development Lab"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/lab) "bQP" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bQQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "gateshutter"; name = "Gateway Access Shutter"},/turf/simulated/floor{icon_state = "delivery"},/area/gateway) @@ -4937,7 +4937,7 @@ "bQW" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway) "bQX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Fore Primary Hallway Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bQY" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/space,/area) -"bQZ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bQZ" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/closet/secure_closet/security/cargo,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) "bRa" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bRb" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bRc" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/device/radio/intercom{pixel_y = -25},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) @@ -4946,14 +4946,14 @@ "bRf" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Kitchen APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bRg" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bRh" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) -"bRi" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/hallway/primary/central) +"bRi" = (/obj/item/weapon/pen,/obj/structure/table/reinforced,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/security_space_law{pixel_x = 3; pixel_y = 4},/obj/machinery/newscaster/security_unit{pixel_y = 32},/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/medical) "bRj" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 5},/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) -"bRk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/central) -"bRl" = (/obj/machinery/door/window/eastleft{dir = 2; name = "Medical Delivery"; req_access_txt = "5"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/medical/medbay2{name = "Medbay Storage"}) -"bRm" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bRn" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRk" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical) +"bRl" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRn" = (/obj/structure/closet/secure_closet/medical3,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bRo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bRp" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRp" = (/obj/structure/closet/l3closet/general,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bRq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central) "bRr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bRs" = (/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) @@ -4963,25 +4963,25 @@ "bRw" = (/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "bRx" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bRy" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/door_control{id = "kitchenhydro"; name = "Service Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bRz" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = -20; pixel_y = -5},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRz" = (/obj/machinery/vending/medical,/obj/machinery/light/small,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bRA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bRB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRD" = (/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) -"bRE" = (/obj/machinery/atmospherics/pipe/tank/toxins{volume = 3200},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bRE" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bRF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "purple"},/area/hallway/primary/aft) "bRG" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 10; icon_state = "whitepurple"},/area/toxins/lab) "bRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bRI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/construction) "bRJ" = (/turf/simulated/wall/r_wall,/area/toxins/server) -"bRK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bRK" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) "bRL" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "bRM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRN" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/machinery/door/window/eastright{dir = 4; name = "Research and Development Desk"; req_access_txt = "7"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor/shutters/preopen{id = "rndshutters"; name = "research and development lab shutters"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/toxins/lab) "bRO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bRP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bRQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central) -"bRR" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"bRR" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "bRS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/surgery) "bRU" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/primary) @@ -5000,13 +5000,13 @@ "bSh" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bSi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bSj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port) -"bSk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bSl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bSm" = (/obj/machinery/door/airlock{name = "Medbay Emergency Storage"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bSn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) -"bSo" = (/obj/machinery/light/small{dir = 1},/obj/item/clothing/tie/stethoscope,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bSp" = (/obj/machinery/atmospherics/pipe/tank/oxygen{volume = 3200},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bSq" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bSk" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bSl" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bSm" = (/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/mech_bay_recharge_floor,/area/maintenance/aft{name = "Aft Maintenance"}) +"bSn" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bSo" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bSp" = (/obj/machinery/light_construct,/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bSq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bSr" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bSs" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Engineering Power Monitoring"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) @@ -5017,12 +5017,12 @@ "bSy" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bSz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bSA" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bSB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bSC" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) +"bSB" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bSC" = (/turf/simulated/wall,/area/maintenance/incinerator) "bSD" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bSE" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bSF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bSG" = (/obj/structure/table,/obj/item/device/healthanalyzer,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bSG" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bSH" = (/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "bSI" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "bSJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5030,7 +5030,7 @@ "bSL" = (/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/power/apc{dir = 2; name = "Research Lab APC"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow,/obj/machinery/door_control{dir = 2; id = "rndshutters"; name = "Shutters Control Button"; pixel_x = -24; pixel_y = -25},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSM" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bSN" = (/obj/structure/sign/science,/turf/simulated/wall,/area/medical/research{name = "Research Division"}) -"bSO" = (/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"bSO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/medical) "bSP" = (/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/micro_laser,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bSR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central) @@ -5049,8 +5049,8 @@ "bTe" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bTf" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) "bTg" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/cryo) -"bTh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bTi" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bTh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bTi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bTj" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTk" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bTl" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -5061,22 +5061,22 @@ "bTq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "bTr" = (/obj/machinery/chem_master,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bTs" = (/turf/simulated/wall/r_wall,/area/maintenance/incinerator) -"bTt" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bTu" = (/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bTt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) +"bTu" = (/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) "bTv" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bTw" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bTx" = (/obj/machinery/power/apc{dir = 4; name = "Incinerator APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bTy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bTw" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bTx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"bTy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) "bTz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bTA" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bTB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bTC" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "bTD" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) -"bTE" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/misc_lab) +"bTE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Medbay Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/medical) "bTF" = (/obj/structure/rack,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bTG" = (/obj/structure/table,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bTH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"bTI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"bTI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bTJ" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bTK" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bTL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) @@ -5084,7 +5084,7 @@ "bTN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bTO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "kitchenwindow"; name = "kitchen shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "bTP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bTQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bTQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bTR" = (/obj/structure/rack,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bTS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/aft) "bTT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) @@ -5114,7 +5114,7 @@ "bUr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bUs" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) "bUt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/wall/r_wall,/area/tcommsat/server) -"bUu" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bUu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bUv" = (/obj/machinery/door/airlock/maintenance{name = "Vacant Office Maintenance"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bUw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bUx" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5124,15 +5124,15 @@ "bUB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bUC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/gateway) "bUD" = (/obj/item/stack/rods,/turf/space,/area) -"bUE" = (/obj/machinery/door/poddoor{id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bUF" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bUG" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) -"bUH" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/obj/machinery/access_button{command = "cycle_exterior"; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -22; pixel_y = -10},/obj/structure/sign/fire{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bUE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"bUF" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bUG" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/window/northleft{dir = 8; name = "MuleBot Access"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) +"bUH" = (/obj/item/weapon/cigbutt,/obj/item/clothing/gloves/fyellow,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bUI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay{name = "Medbay Central"}) -"bUJ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bUK" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bUL" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bUM" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bUJ" = (/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bUK" = (/obj/machinery/light/small{dir = 1},/obj/item/clothing/tie/stethoscope,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bUL" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"bUM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/incinerator) "bUN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "bUO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bUP" = (/obj/structure/closet/boxinggloves,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) @@ -5155,7 +5155,7 @@ "bVg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) -"bVj" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bVj" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 5; icon_state = "intact-r"; level = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bVk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bVm" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Backstage"; req_access_txt = "46"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5178,7 +5178,7 @@ "bVD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/construction) "bVE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/construction) "bVF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bVG" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bVG" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bVH" = (/obj/structure/table,/obj/structure/sign/greencross{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVI" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVJ" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5186,20 +5186,20 @@ "bVL" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) "bVM" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area) "bVN" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) -"bVO" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; on = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bVP" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "12"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bVO" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000; chargelevel = 50000; chargemode = 1; charging = 1; output = 50000},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bVP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) "bVQ" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bVR" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bVS" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bVR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bVS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bVT" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVU" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bVV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bVW" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) "bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/construction) -"bVY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bVY" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bVZ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/space,/area) "bWa" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bWb" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Toxins Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bWb" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated,/obj/structure/disposalpipe/segment,/turf/space,/area) "bWc" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) "bWd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bWe" = (/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/reagentgrinder{pixel_y = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5216,44 +5216,44 @@ "bWp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bWq" = (/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bWr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft) -"bWs" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bWs" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/incinerator) "bWt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWu" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Aft Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bWv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bWx" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) -"bWy" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bWy" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Incinerator Interior Airlock"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator) "bWz" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "bWA" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor,/area/security/checkpoint/science) "bWB" = (/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "bWC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/hallway/primary/central) "bWD" = (/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; pixel_x = 0; pixel_y = -30},/obj/item/weapon/folder/white,/obj/structure/table,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bWE" = (/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/structure/table,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) -"bWF" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"bWF" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bWG" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bWH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 6; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bWI" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bWJ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/maintenance/storage) +"bWJ" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/cane,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bWK" = (/obj/machinery/vending/cigarette,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "bWL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/maintenance/storage) "bWM" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/maintenance/storage) -"bWN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/central) +"bWN" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bWO" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) "bWP" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) -"bWQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bWQ" = (/obj/structure/flora/tree/festivus{pixel_x = -16},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bWR" = (/turf/simulated/floor/airless{icon_state = "solarpanel"},/area) "bWS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/starboard) "bWU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/carpet,/area/library) -"bWV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bWW" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) -"bWX" = (/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 24; pixel_y = 8},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bWY" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "12"},/obj/machinery/meter,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bWZ" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/obj/machinery/light,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bWV" = (/obj/structure/stool,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"bWW" = (/obj/machinery/door/airlock/external{req_access_txt = "24"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/storage) +"bWX" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 9},/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area) +"bWY" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; on = 1},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine,/area/maintenance/incinerator) +"bWZ" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; on = 1},/obj/machinery/access_button{command = "cycle_exterior"; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 8; pixel_y = -24},/obj/machinery/light/small{dir = 8},/obj/structure/sign/fire{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/engine,/area/maintenance/incinerator) "bXa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/medbay{name = "Medbay Central"}) -"bXb" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bXc" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bXd" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bXb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator) +"bXc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 30; pixel_y = 0; pixel_z = 0},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bXd" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bXe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Desk"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "bXf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bXg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) @@ -5278,7 +5278,7 @@ "bXz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "bXA" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) "bXB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bXC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bXC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) "bXD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "bXE" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bXF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) @@ -5295,19 +5295,19 @@ "bXQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bXR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bXS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) -"bXT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) +"bXT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bXU" = (/obj/structure/closet/secure_closet/scientist{pixel_x = -4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/lab) -"bXV" = (/obj/structure/closet/l3closet/general,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bXV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bXW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/central) "bXX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bXY" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) +"bXY" = (/obj/structure/rack,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bXZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/central) -"bYa" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"bYa" = (/obj/structure/rack,/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bYc" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYd" = (/obj/structure/closet,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/hemostat,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYe" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bYf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bYf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYg" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/item/trash/popcorn,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "bYh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/telesci) "bYi" = (/obj/structure/closet,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5315,12 +5315,12 @@ "bYk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/maintenance/storage) "bYl" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/storage) -"bYn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bYo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bYn" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bYo" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/storage) -"bYq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Gas Pump"; on = 1},/turf/simulated/floor/plating/airless,/area) -"bYr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor/plating/airless,/area) -"bYs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/simulated/floor/plating/airless,/area) +"bYq" = (/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bYr" = (/obj/structure/rack,/obj/item/stack/rods{amount = 23},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bYs" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYt" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area) "bYu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/storage) "bYv" = (/turf/simulated/wall/r_wall,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5332,26 +5332,26 @@ "bYB" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = -5; pixel_y = 2},/obj/item/weapon/storage/backpack/satchel_tox,/obj/item/weapon/storage/backpack/satchel_tox{pixel_x = 5; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bYC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bYD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"bYE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bYE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bYF" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bYG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/hydroponics) "bYH" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/hydroponics) "bYI" = (/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) "bYJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "bYK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/research{name = "Research Division"}) -"bYL" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bYL" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "bYN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "bYO" = (/obj/structure/sign/science,/turf/simulated/wall/r_wall,/area/toxins/lab) "bYP" = (/turf/simulated/wall/r_wall,/area/toxins/lab) "bYQ" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = 24},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bYR" = (/obj/machinery/firealarm{pixel_y = 32},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/structure/noticeboard{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bYS" = (/obj/item/clothing/glasses/hud/health,/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bYR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) +"bYS" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/storage) "bYT" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bYU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bYV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bYW" = (/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bYX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"bYX" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bYY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bYZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server) "bZa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) @@ -5363,46 +5363,46 @@ "bZg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bZh" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bZi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bZj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bZk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) +"bZj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bZk" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bZl" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bZn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/central) "bZo" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bZq" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/maintenance/storage) -"bZr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central) +"bZr" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bZs" = (/obj/machinery/computer/arcade,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bZt" = (/obj/structure/table,/obj/item/weapon/folder/blue,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bZu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) "bZv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/research{name = "Research Division"}) "bZw" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bZy" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=12-Central-Starboard"; location = "11-Command-Port"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"bZz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bZy" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bZz" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bZA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZB" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bZC" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bZC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "bZD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZF" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bZG" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "bZH" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bZI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bZJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bZJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "bZK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/science) "bZL" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 6},/obj/machinery/newscaster/security_unit{pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/science) "bZM" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bZN" = (/turf/simulated/wall,/area/medical/chemistry) -"bZO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bZO" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/incinerator) "bZP" = (/obj/structure/closet/secure_closet/chemical,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) -"bZQ" = (/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bZQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bZR" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bZS" = (/obj/machinery/power/apc{dir = 8; name = "Hydroponics APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 11},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bZT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "bZU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bZV" = (/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/hydroponics) -"bZW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"bZW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bZX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bZY" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics) "bZZ" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -5418,8 +5418,8 @@ "caj" = (/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cak" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cal" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"cam" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"can" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) +"cam" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"can" = (/obj/item/trash/pistachios,/obj/structure/closet,/obj/item/weapon/storage/belt,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cao" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) "cap" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 24; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "caq" = (/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5434,63 +5434,63 @@ "caz" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "caA" = (/turf/simulated/wall,/area/medical/surgery) "caB" = (/obj/structure/closet/wardrobe/pjs,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) -"caC" = (/obj/machinery/vending/medical,/obj/machinery/light/small,/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"caD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"caC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"caD" = (/obj/structure/closet/crate,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caE" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "caF" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"caG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"caH" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/machinery/power/apc{dir = 2; name = "Medbay Storage APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"caG" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"caH" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "caI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"caJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"caJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "caK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "caL" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "caM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 1; icon_state = "blackcorner"},/area/maintenance/storage) "caN" = (/obj/structure/closet/secure_closet/security/science,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/science) "caO" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage) -"caP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"caQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"caP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"caQ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/machinery/power/apc{dir = 2; name = "Medbay Storage APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "caR" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "caS" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) -"caT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"caT" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "caU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r"; level = 2},/obj/machinery/meter,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "caV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"caW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"caW" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/lattice,/turf/space,/area) "caX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/central) "caY" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"caZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cba" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"caZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 2; icon_state = "intact"; level = 2},/obj/machinery/meter,/obj/machinery/ignition_switch{id = "Incinerator"; pixel_x = -6; pixel_y = -24},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; interior_door_tag = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cba" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cbb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "cbc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cbd" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/wall,/area/medical/chemistry) "cbe" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warning"},/area/crew_quarters/kitchen) -"cbf" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Toxins Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "bot"},/area/toxins/misc_lab) -"cbg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cbf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cbg" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/hallway/primary/central) "cbi" = (/turf/simulated/wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cbj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "warning"},/area/crew_quarters/kitchen) -"cbk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) -"cbl" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) +"cbk" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cbl" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/space,/area) "cbm" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 23},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) -"cbn" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cbn" = (/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "12"},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door_control{id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cbo" = (/obj/structure/sign/botany{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hydroponics) "cbp" = (/obj/machinery/door/window/southleft{dir = 1; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) "cbq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/machinery/door/window/northleft{dir = 2; name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/machinery/door/firedoor,/obj/item/weapon/folder/white,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "cbr" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "cbs" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "cbt" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/nutrient/ez,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) -"cbu" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cbu" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cbv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cbw" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cbw" = (/obj/machinery/power/apc{dir = 8; name = "Incinerator APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbx" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cby" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "cbz" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cbA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cbA" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Atmospherics Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "cbB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbC" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "cbE" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cbF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/library) -"cbG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cbG" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "cbH" = (/obj/item/weapon/cigbutt,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "cbI" = (/obj/structure/stool/bed/chair,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "cbJ" = (/obj/machinery/vending/coffee,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/library) @@ -5510,13 +5510,13 @@ "cbX" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/teleporter{name = "\improper Teleporter Room"}) "cbY" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/telesci) "cbZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"cca" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"cca" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "ccc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cce" = (/obj/structure/table/woodentable,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/wood,/area/library) "ccf" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ccg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"ccg" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage) "cch" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cci" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "ccj" = (/obj/machinery/atmospherics/trinary/filter{dir = 1; filter_type = 3; icon_state = "intact_on"; name = "Gas filter (CO2 tank)"; on = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/storage) @@ -5538,17 +5538,17 @@ "ccz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/checkpoint/science) "ccA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science) "ccB" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science) -"ccC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) +"ccC" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "ccD" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "ccE" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "ccF" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ccG" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "ccH" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "ccI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"ccJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Central Hall APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"ccJ" = (/obj/item/trash/cheesie,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"ccL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"ccM" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"ccL" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/woodentable,/obj/structure/reagent_dispensers/beerkeg{desc = "One of the more successful achievements of the NanoTrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devestatingly effective. Signs explain that though this is just a model, every NanoTrasen station is equipped with one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; icon = 'icons/obj/stationobjs.dmi'; icon_state = "nuclearbomb0"; name = "NanoTrasen-brand nuclear fission explosive"; pixel_x = 2; pixel_y = 6},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"ccM" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/beach_ball{desc = "The simple beach ball is one of Nanotrasen's most popular products. 'Why do we make beach balls? Because we can! (TM)' - Nanotrasen"; item_state = "beachball"; name = "NanoTrasen brand beach ball"; pixel_y = 7},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ccN" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ccO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "ccP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5571,19 +5571,19 @@ "cdg" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "cdh" = (/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "QMLoaddoor"; name = "Supply Dock Loading Door"; opacity = 1},/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "cdi" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"cdj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cdj" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/showcase{desc = "The famous NanoTrasen-brand microwave, the multi-purpose cooking appliance every station needs! This one appears to be drawn onto a cardboard box."; dir = 1; icon = 'icons/obj/kitchen.dmi'; icon_state = "mw"; name = "NanoTrasen-brand microwave"; pixel_x = 0; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cdk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Gateway Atrium"; req_access_txt = "62"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/gateway) "cdl" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway) "cdm" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "cdn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cdp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cdq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cdq" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/item/weapon/folder/blue,/obj/item/weapon/disk/data,/obj/item/weapon/disk/tech_disk{name = "technology disk"; pixel_x = 3; pixel_y = -1},/obj/item/weapon/disk/design_disk{name = "component design disk"; pixel_x = 1; pixel_y = -2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cdr" = (/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) -"cds" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"cds" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/showcase{desc = "A slightly battered looking TV. Vaious Nanotrasen infomercials play on a loop, accompanied by a jaunty tune."; dir = 1; icon = 'icons/obj/computer.dmi'; icon_state = "security_det"; name = "NanoTrasen corporate newsfeed"; pixel_x = 2; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cdt" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/library) "cdu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"cdv" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area) +"cdv" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/matches{pixel_x = -2; pixel_y = 3},/obj/item/clothing/mask/cigarette/cigar{name = "premium cigar"; pixel_x = 4; pixel_y = 1},/obj/item/clothing/mask/cigarette/cigar{name = "premium cigar"; pixel_x = -4; pixel_y = 1},/obj/item/clothing/mask/cigarette/cigar/cohiba{name = "cohiba robusto cigar"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cdw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cdx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cdy" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) @@ -5591,7 +5591,7 @@ "cdA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdB" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "cdC" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor/shutters/preopen{id = "rndshuttersup"; name = "research and development lab shutters"},/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 2; name = "Research and Development Desk"; req_access_txt = "7"},/turf/simulated/floor/plating,/area/toxins/lab) -"cdD" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cdD" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/cable_coil,/obj/item/device/mmi{name = "man-machine interface"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cdE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdF" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/library) "cdG" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/power/apc{dir = 8; name = "E.V.A. Storage APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) @@ -5620,12 +5620,12 @@ "ced" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/surgery) "cee" = (/obj/machinery/door/window/northleft{dir = 8; name = "Magboot Storage"; pixel_x = -1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots{pixel_x = 2; pixel_y = -4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cef" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"ceg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"ceg" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/surgical_drapes,/obj/item/weapon/retractor{desc = "A handy surgical tool which allows the user to peel back their victim's flesh. The label warns users to 'Aim away from face.'"; name = "retractor"; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ceh" = (/turf/simulated/wall,/area/medical/cryo) -"cei" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cei" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{name = "space law"; pixel_y = 2},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/item/toy/gun{name = "cap gun"},/obj/item/weapon/handcuffs{name = "handcuffs"},/obj/item/clothing/head/helmet/HoS,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cej" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cek" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cel" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cek" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/library) +"cel" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) "cem" = (/turf/simulated/wall,/area/medical/cmo) "cen" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/cmo) "ceo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/medical/cmo) @@ -5685,10 +5685,10 @@ "cfq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cfr" = (/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/table/woodentable,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cft" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cfu" = (/obj/structure/stool,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfv" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"cfw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cfw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/item/trash/candy,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cfx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfy" = (/turf/simulated/floor{icon_state = "greenfull"},/area/hallway/primary/central) "cfz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hallway/primary/central) @@ -5696,14 +5696,14 @@ "cfB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/aft) "cfC" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfD" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cfE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfE" = (/obj/structure/table/woodentable,/obj/machinery/bot/cleanbot{desc = "A little cleaning robot, one of NanoTrasen's more successful products. The label states that, on average, this model requires 40% less psychiatric care than its biological counterpart."; name = "\improper NanoTrasen cleanbot"; on = 0; pixel_y = 4},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cfF" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "cfI" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "cfJ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "cfK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 1; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/maintenance/storage) -"cfL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cfL" = (/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cfM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/maintenance/storage) "cfN" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "cfO" = (/obj/structure/closet/secure_closet/bar{pixel_x = -3; pixel_y = -1; req_access_txt = "25"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5753,11 +5753,11 @@ "cgG" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "cgH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cgI" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cgJ" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cgJ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cgK" = (/obj/structure/closet,/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/maintenance/storage) "cgM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 2; icon_state = "blackcorner"},/area/maintenance/storage) -"cgN" = (/obj/machinery/atmospherics/pipe/vent{dir = 2},/turf/simulated/floor/plating/airless,/area) +"cgN" = (/obj/structure/table/woodentable,/obj/machinery/cell_charger,/obj/item/weapon/cell/crap{name = "\improper NanoTrasen-brand rechargable AA battery"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cgO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/maintenance/storage) "cgP" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/table/woodentable,/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -5811,7 +5811,7 @@ "chM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "chN" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "chO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "CMO Maintenance"; req_access_txt = "40"},/turf/simulated/floor/plating,/area/medical/cmo) -"chP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central) +"chP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "chQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/carpet,/area/security/vacantoffice) "chR" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) "chS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5835,7 +5835,7 @@ "cik" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cil" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/keycard_auth{pixel_x = 26; pixel_y = 0},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cim" = (/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"cin" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) +"cin" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/item/robot_parts/chest{name = "cyborg torso"; pixel_x = -2; pixel_y = 2},/obj/item/robot_parts/head{name = "cyborg head"; pixel_x = 3; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cio" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "cip" = (/obj/machinery/chem_master/condimaster{name = "BrewMaster 4000"; pixel_x = -4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "ciq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -5856,15 +5856,15 @@ "ciF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/medical/surgery) "ciG" = (/obj/structure/stool/bed/roller,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciH" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"ciI" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) -"ciJ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"ciI" = (/obj/machinery/atmospherics/trinary/filter,/turf/simulated/floor/plating,/area/maintenance/starboard) +"ciJ" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Toxins Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "ciK" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) "ciL" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/cryo) "ciM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "ciN" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/lattice,/turf/space,/area) "ciO" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ciP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"ciQ" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/hallway/secondary/exit) +"ciQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ciS" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "ciT" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) @@ -5882,21 +5882,21 @@ "cjf" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "cjg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/crew_quarters/hor) "cjh" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) -"cji" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"cjj" = (/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 29},/obj/structure/stool/bed,/obj/effect/landmark/start{name = "Virologist"},/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"cji" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"cjj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) "cjk" = (/turf/simulated/wall/r_wall,/area/toxins/storage) -"cjl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A flimsy model of NanoTrasen's revolutionary genetic modifier. Novel features include a locking system to protect scientists from test subjects, and a built-in suction system to remove vomit."; icon = 'icons/obj/Cryogenic2.dmi'; icon_state = "scanner"; name = "DNA Modifier Exhibit"; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cjm" = (/obj/machinery/newscaster{pixel_x = -30},/obj/structure/table,/obj/item/weapon/folder/white,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cjn" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cjl" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) +"cjm" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"cjn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cjo" = (/obj/structure/closet/secure_closet/medical1{pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "cjp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/maintenance/storage) "cjq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cjr" = (/obj/machinery/door/airlock/external{name = "Transport Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "cjs" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cjt" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cju" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cju" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjv" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cjw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/central) +"cjw" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjx" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cjy" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/device/t_scanner,/obj/item/device/t_scanner,/obj/item/device/t_scanner,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cjz" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor,/area/medical/surgery) @@ -5908,9 +5908,9 @@ "cjF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cjG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "cjH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; pixel_y = -2; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) -"cjI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cjI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cjJ" = (/obj/structure/sign/poster{pixel_y = -32},/obj/structure/table/woodentable,/obj/machinery/light_construct/small,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"cjK" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cjK" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) "cjM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cjN" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) @@ -5944,7 +5944,7 @@ "ckp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) "ckq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "ckr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cks" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) +"cks" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/storage) "ckt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "kitchenwindow"; name = "kitchen shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "cku" = (/obj/structure/rack,/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/packageWrap,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "ckv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5967,7 +5967,7 @@ "ckM" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "ckN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckO" = (/turf/simulated/wall,/area/medical/morgue) -"ckP" = (/obj/structure/sign/vacuum,/turf/simulated/wall,/area/hallway/secondary/exit) +"ckP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "ckQ" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "ckR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ckS" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/clothing/mask/pig,/obj/item/weapon/bikehorn,/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -6004,10 +6004,10 @@ "clx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology) "cly" = (/obj/machinery/light/small,/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "clz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"clA" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/autoname{dir = 8; network = list("MiniSat")},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"clA" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft - Starboard Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "clB" = (/obj/machinery/light/small,/obj/machinery/telecomms/broadcaster/preset_left,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "clC" = (/obj/machinery/light/small,/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"clD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/medical{name = "Break Room"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"clD" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (WEST)"; icon_state = "warnplatecorner"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "clE" = (/obj/structure/stool/bed/chair/wood/wings{dir = 8},/obj/effect/landmark/start{name = "Clown"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Mime"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bookcase{name = "bookcase"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -6024,9 +6024,9 @@ "clR" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) "clS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "clT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"clU" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/assembly/chargebay) +"clU" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "clV" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #6"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"clW" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"clW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft - Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "clX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) "clY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "clZ" = (/obj/machinery/light_switch{pixel_x = 6; pixel_y = 26},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -4; pixel_y = 26; req_access_txt = "28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -6056,7 +6056,7 @@ "cmx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmz" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cmA" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"cmA" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior Aft"; dir = 2; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "cmB" = (/obj/machinery/door/window{dir = 4; name = "Theatre Stage"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cmC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cmD" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -6067,7 +6067,7 @@ "cmI" = (/obj/structure/rack,/obj/effect/landmark/costume,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cmJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/wood,/area/security/vacantoffice) "cmK" = (/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "Serving Hatch"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"cmL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"cmL" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) "cmM" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science) "cmN" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cmO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) @@ -6088,7 +6088,7 @@ "cnd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cne" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 2; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "cnf" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) -"cng" = (/obj/item/weapon/storage/toolbox/emergency,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cng" = (/obj/structure/rack,/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/cable_coil,/obj/item/weapon/wirecutters,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cnh" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cni" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cnj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Auxiliary Restrooms APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) @@ -6099,8 +6099,8 @@ "cno" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/hallway/primary/starboard) "cnp" = (/turf/simulated/wall,/area/hallway/primary/aft) "cnq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) -"cnr" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing) -"cns" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_x = 24; pixel_y = -24},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing) +"cnr" = (/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cns" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cnt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/hallway/primary/starboard) "cnu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/hallway/primary/starboard) "cnv" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) @@ -6108,7 +6108,7 @@ "cnx" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area) "cny" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "cnz" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) -"cnA" = (/obj/machinery/atmospherics/pipe/vent{dir = 4},/turf/simulated/floor/plating/airless,/area) +"cnA" = (/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cnB" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "cnC" = (/obj/machinery/light_switch{pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cnD" = (/obj/structure/table/woodentable,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -6131,8 +6131,8 @@ "cnU" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cnV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "cnW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cnX" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cnY" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "N2O Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"cnX" = (/obj/structure/rack,/obj/item/weapon/weldingtool,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cnY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-Aft"; location = "7.5-Starboard-Aft-Corner"},/turf/simulated/floor,/area/hallway/primary/central) "cnZ" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "coa" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cob" = (/obj/structure/closet/secure_closet/RD,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) @@ -6143,39 +6143,39 @@ "cog" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/toxins/storage) "coh" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/weapon/wrench,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage) "coi" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"coj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) +"coj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10.1-Aft-Port-Corner"; location = "10-Aft-Central"},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) "cok" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/assembly/robotics) -"col" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/exit) +"col" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "com" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) -"con" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/medical/virology) +"con" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "coo" = (/obj/machinery/door_control{dir = 2; id = "robotics"; name = "Shutter Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/robotics) "cop" = (/obj/structure/rack,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/packageWrap,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) -"coq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit) -"cor" = (/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cos" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) +"coq" = (/obj/machinery/pipedispenser/disposal,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/maintenance/storage) +"cor" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11-Command-Port"; location = "10.1-Aft-Port-Corner"},/turf/simulated/floor,/area/hallway/primary/central) +"cos" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cot" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cou" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/weapon/cartridge/lawyer,/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/wood,/area/lawoffice) -"cov" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cow" = (/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cox" = (/turf/simulated/floor,/area/hallway/primary/aft) -"coy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/chapel/main) +"cov" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) +"cow" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) +"cox" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) +"coy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "coz" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "coA" = (/obj/machinery/door/morgue{name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "coB" = (/obj/machinery/power/smes{charge = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "coC" = (/turf/simulated/wall/r_wall,/area/medical/genetics) "coD" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"coE" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit) +"coE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Central Primary Hallway APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "coF" = (/obj/machinery/power/apc{dir = 2; lighting = 3; name = "Chapel Office APC"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "coG" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "coH" = (/obj/structure/closet/wardrobe/chaplain_black,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "coI" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "coJ" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "coK" = (/obj/structure/morgue,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"coL" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) -"coM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/secondary/exit) -"coN" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) -"coO" = (/obj/structure/stool,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"coP" = (/obj/structure/stool,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"coL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"coM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"coN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"coO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"coP" = (/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "coQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/office) "coR" = (/obj/machinery/door/airlock/centcom{name = "Chapel Office"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "coS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -6186,74 +6186,74 @@ "coX" = (/obj/structure/sign/atmosplaque{desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; icon_state = "kiddieplaque"; name = "Remembrance Plaque"; pixel_x = 0; pixel_y = 32},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/chapel/main) "coY" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "coZ" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #4"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cpa" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/turf/simulated/floor/carpet,/area/chapel/main) +"cpa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/assembly/chargebay) "cpc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cpd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/effect/decal/cleanable/cobweb2,/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cpe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cpf" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cpg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"cph" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing) +"cph" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Command Hallway - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/main) "cpj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/sortjunction{sortType = 21},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cpk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/turf/simulated/floor,/area/toxins/storage) "cpl" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgical_drapes,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/assembly/robotics) -"cpm" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/turf/simulated/floor/carpet,/area/chapel/main) -"cpn" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing) +"cpm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cpn" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/library) "cpo" = (/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"cpp" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) +"cpp" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "cpq" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cpr" = (/obj/machinery/computer/arcade,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit) -"cps" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit) +"cpr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cps" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cpu" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 6; req_access_txt = "47"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "ResearchFoyer"; name = "Research Door Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/science) "cpv" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/space,/area) "cpw" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cpx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/toxins/mixing) +"cpx" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpy" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/medical{name = "Medbay Break Room"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cpz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/cigbutt,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cpA" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/robotics) -"cpB" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/toxins/mixing) +"cpB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cpD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cpE" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit) +"cpE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7.5-Starboard-Aft-Corner"; location = "7-Command-Starboard"},/turf/simulated/floor,/area/hallway/primary/central) "cpF" = (/obj/item/seeds/berryseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpG" = (/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area) -"cpH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cpH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpI" = (/obj/item/seeds/moonflowerseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cpK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cpL" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) -"cpM" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cpN" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cpO" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit) +"cpM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"cpN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cpO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpP" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #3"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cpQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/exit) +"cpQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpR" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Xenobiology Airlock"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"cpS" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"cpS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpT" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/lawoffice) "cpU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"cpV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"cpV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpZ" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqa" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 20; pixel_x = -3; pixel_y = 6},/obj/item/stack/sheet/glass{amount = 20; pixel_x = -3; pixel_y = 6},/obj/item/stack/sheet/plasteel{amount = 10},/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cqb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Mortuary"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"cqc" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"cqd" = (/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/hallway/secondary/exit) +"cqc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cqe" = (/obj/machinery/power/solar_control{id = "aftport"; name = "Aft Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cqf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "cqi" = (/obj/machinery/door/airlock/maintenance{name = "Telescience Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cqj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/hallway/secondary/exit) -"cqk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/chapel/main) +"cqj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqk" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cql" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"cqm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cqn" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) -"cqo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cqp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/chapel/main) +"cqm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cqq" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cqr" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cqs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) @@ -6273,78 +6273,78 @@ "cqG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cqH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cqI" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cqJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cqK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cqL" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cqM" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/obj/machinery/meter,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cqN" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cqO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"cqJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Command Hallway - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cqO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cqP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cqQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cqR" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) +"cqR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cqS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cqT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/assembly/robotics) "cqU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cqV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) +"cqV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11.1-Command-Starboard"; location = "11-Command-Port"},/turf/simulated/floor,/area/hallway/primary/central) "cqW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "cqX" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cqY" = (/obj/structure/closet/coffin,/turf/simulated/floor/plating,/area/chapel/main) -"cqZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit) +"cqZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "cra" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "crb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/portsolar) "crc" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #3"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "crd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 2; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cre" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit) -"crf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) -"crg" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit) +"cre" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crh" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/assembly/robotics) -"cri" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) -"crj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit) -"crk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) +"cri" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crk" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "crl" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #2"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "crm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "crn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft) "cro" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "crp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"crq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) +"crq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crr" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "crs" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "crt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"cru" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) +"cru" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crv" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "crw" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "crx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/robotics) "cry" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/genetics_cloning) "crz" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/robotics) -"crA" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-Central"; location = "9.5-Escape2"},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/exit) +"crA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"crC" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/starboard) +"crC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crD" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/medbay3{name = "Medbay Aft"}) "crE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "crF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "crG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) -"crH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"crI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"crJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"crK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"crL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"crM" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"crN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"crH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"crI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "crP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "crQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "crR" = (/obj/machinery/door/window/eastleft{dir = 4; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor/plating,/area/chapel/main) -"crS" = (/turf/simulated/wall/r_wall,/area/toxins/mixing) -"crT" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"crU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/medical/virology) -"crV" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/toxins/mixing) -"crW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/toxins/mixing) +"crS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crW" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crX" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "crY" = (/obj/machinery/computer/rdconsole/robotics,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "crZ" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"csa" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/toxins/mixing) +"csa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"csc" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"csc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csd" = (/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "cse" = (/turf/simulated/wall/r_wall,/area/assembly/robotics) "csf" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/machinery/door/window/eastright{dir = 4; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor/shutters/preopen{id = "robotics"; name = "robotics lab shutters"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/assembly/robotics) @@ -6354,96 +6354,96 @@ "csj" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "csk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "csl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"csm" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Virology APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"csm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "csn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cso" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"cso" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"csq" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) -"csr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"csq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "css" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics RC"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) -"cst" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cst" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/assembly/robotics) "csv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/assembly/robotics) "csw" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "csx" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/genetics) "csy" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/robotics) -"csz" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) +"csz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csA" = (/obj/structure/table,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/assembly/robotics) "csB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/hallway/primary/aft) "csC" = (/obj/machinery/mecha_part_fabricator,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "csD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Mortuary"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "csE" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = -32; pixel_y = 32},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/genetics) -"csF" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) -"csG" = (/obj/item/device/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/device/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/device/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/device/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) -"csH" = (/obj/item/device/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/device/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table,/obj/machinery/light,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) +"csF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Command Hallway APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csI" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/derelict/ship) "csJ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) -"csK" = (/obj/structure/dispenser,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) +"csK" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"csM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"csN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"csO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/hallway/secondary/exit) -"csP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"csQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/mixing) -"csR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) -"csS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) -"csT" = (/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing) +"csM" = (/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csQ" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet1"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"csR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=12-Central-Starboard"; location = "11.1-Command-Starboard"},/turf/simulated/floor,/area/hallway/primary/central) +"csS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"csT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "csV" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"csW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) -"csX" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) +"csW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"csX" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/storage) "csY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "csZ" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Lab APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cta" = (/obj/structure/largecrate,/obj/item/weapon/paper,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cta" = (/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern mech appliances, as well as the development of the uncorruptable cyborg servants of tomorrow, available today."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Machine' sign"; pixel_x = 0; pixel_y = 32},/obj/structure/showcase{desc = "This cyborg looks frighteningly robust, with cold unseeing eyes. Signs praise the incorruptible nature of synthetics."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "Security"; name = "'Perfect Machine' cyborg exhibit"; pixel_y = 3},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ctb" = (/obj/structure/table,/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"ctc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"ctd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"ctc" = (/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A stand with an retired construction mech bolted to it. The clamps are rated at 9300PSI. It seems to be falling apart."; icon = 'icons/mecha/mecha.dmi'; icon_state = "firefighter"; name = "construction mech exhibit"},/obj/machinery/light/small{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"ctd" = (/obj/structure/showcase{desc = "A stand with an empty old NanoTrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees."; icon = 'icons/mecha/mecha.dmi'; icon_state = "marauder"; name = "combat mech exhibit"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cte" = (/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "CMO's Office"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ctf" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "ctg" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cth" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) -"cti" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cth" = (/obj/structure/showcase{desc = "A stand with a model of the perfect Nanotrasen Employee bolted to it. Signs indicate it is robustly genetically engineered, as well as being ruthlessly loyal."; name = "'Perfect Man' employee exhibit"},/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, explaining how recent developments in genetic modification and cloning technologies by the Nanotrasen Corporation have led to development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Man' sign"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cti" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A flimsy model of NanoTrasen's revolutionary genetic modifier. Novel features include a locking system to protect scientists from test subjects, and a built-in suction system to remove vomit."; icon = 'icons/obj/Cryogenic2.dmi'; icon_state = "scanner"; name = "DNA modifier exhibit"; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ctj" = (/turf/simulated/wall,/area/medical/genetics_cloning) "ctk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"ctl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing) -"ctm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/toxins/mixing) -"ctn" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"ctl" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death. Hopefully they aren't all made of cardboard, like this one."; icon = 'icons/obj/cloning.dmi'; icon_state = "pod_0"; name = "cloning pod exhibit"},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"ctm" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/rack_parts,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"ctn" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/wood,/area/library) "cto" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/genetics) "ctp" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{icon_state = "bluefull"},/area/medical/genetics) "ctq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/aft) -"ctr" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"ctr" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cts" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "ctt" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "ctu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "ctv" = (/turf/simulated/wall,/area/medical/medbay3{name = "Medbay Aft"}) -"ctw" = (/obj/structure/table/woodentable,/obj/item/candle,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"ctw" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Exterior Aft-Starboard"; dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "ctx" = (/obj/structure/closet/coffin,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/chapel/main) "cty" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/assembly/robotics) "ctz" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "ctA" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) -"ctB" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/toxins/mixing) -"ctC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/toxins/mixing) +"ctB" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "MiniSat Exterior Aft-Port"; dir = 8; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"ctC" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/starboard) "ctD" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "ctE" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor,/area/assembly/chargebay) "ctF" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor,/area/assembly/chargebay) "ctG" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"ctH" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/mixing) -"ctI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) -"ctJ" = (/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing) -"ctK" = (/turf/simulated/wall,/area/toxins/mixing) -"ctL" = (/obj/machinery/door/window/southleft{name = "Mass Driver Door"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/toxins/mixing) -"ctM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/mixing) -"ctN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/mixing) +"ctH" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/library) +"ctI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"ctJ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"ctK" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"ctL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"ctM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"ctN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "ctO" = (/obj/machinery/door/airlock/maintenance{name = "Genetics Maintenance"; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ctP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) -"ctQ" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/camera/autoname{dir = 2; network = list("MiniSat")},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"ctQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "neutral"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "ctR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/assembly/robotics) "ctS" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/port) "ctT" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "ctU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"ctV" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"ctW" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) -"ctX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/structure/sign/vacuum{pixel_x = -30},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit) +"ctV" = (/obj/machinery/light/small,/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"ctW" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"ctX" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "ctY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ctZ" = (/obj/machinery/light/small,/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cua" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -6451,8 +6451,8 @@ "cuc" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cud" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cue" = (/obj/structure/stool,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"cuf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) -"cug" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) +"cuf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cug" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cuh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cui" = (/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cuj" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) @@ -6462,19 +6462,19 @@ "cun" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cuo" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cup" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) -"cuq" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing) +"cuq" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cur" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cus" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) -"cut" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) -"cuu" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing) -"cuv" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing) +"cus" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cut" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"cuu" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "N2O Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"cuv" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cux" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cuy" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) -"cuz" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing) +"cux" = (/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cuy" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cuz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cuB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) -"cuC" = (/obj/machinery/door/poddoor{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating,/area/toxins/mixing) +"cuC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuD" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "cuE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) "cuF" = (/obj/machinery/dna_scannernew,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) @@ -6491,60 +6491,60 @@ "cuQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Server Room"; req_access_txt = "30"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cuR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cuS" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cuT" = (/obj/structure/closet/crate/medical,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cuT" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuU" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cuV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) -"cuW" = (/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit) -"cuX" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) +"cuV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cuW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cuX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuY" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -27},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) -"cuZ" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cuZ" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cva" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cvb" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cvc" = (/obj/structure/optable{name = "Robotics Operating Table"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) "cvd" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cve" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/chapel/main) -"cvf" = (/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) -"cvg" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing) -"cvh" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1449; id = "tox_airlock_pump"},/turf/simulated/floor/engine,/area/toxins/mixing) -"cvi" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing) +"cvf" = (/obj/structure/table,/obj/item/candle,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cvg" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cvh" = (/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cvi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "cvj" = (/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cvk" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cvl" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing) +"cvk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cvl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvm" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cvn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cvn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvp" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvq" = (/obj/structure/stool,/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cvr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cvr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) -"cvt" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"cvu" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"cvv" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) -"cvw" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cvt" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cvu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"cvv" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"cvw" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cvx" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/gateway) -"cvy" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/item/weapon/folder/blue,/obj/item/weapon/disk/data,/obj/item/weapon/disk/tech_disk{pixel_x = 3; pixel_y = -1},/obj/item/weapon/disk/design_disk{pixel_x = 1; pixel_y = -2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cvy" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cvz" = (/obj/structure/table,/obj/machinery/power/apc{dir = 1; name = "Robotics Lab APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 23},/obj/item/weapon/crowbar,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) -"cvA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cvA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area) "cvB" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/computer/cloning,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cvC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) +"cvC" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "cvD" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/derelict/ship) "cvE" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) -"cvF" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/beach_ball{desc = "The simple beach ball is one of Nanotrasen's most popular products. 'Why do we make beach balls? Because we can! (TM)' - Nanotrasen"; item_state = "beachball"; name = "Beach Ball Exhibit"; pixel_y = 7},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cvF" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "cvG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/aft) "cvH" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor,/area/assembly/chargebay) -"cvI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cvI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "cvJ" = (/turf/simulated/wall,/area/assembly/robotics) "cvK" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "cvL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/assembly/robotics) -"cvM" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"cvN" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics Starboard-Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/maintenance/storage) +"cvM" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) +"cvN" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/bible,/turf/simulated/floor/carpet,/area/chapel/main) "cvO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) -"cvP" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual inlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"cvQ" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing) +"cvP" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/chapel/main) +"cvQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvR" = (/obj/machinery/light/small,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"cvS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cvS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) -"cvU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cvU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cvW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/maintenance{name = "Morgue Maintenance"; req_access_txt = "6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) @@ -6559,11 +6559,11 @@ "cwg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "cwh" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isolb"; name = "Privacy Shutters"; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/patients_rooms{name = "Patient Room A"}) "cwi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) -"cwj" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cwl" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{name = "Space Law Exhibit"; pixel_y = 2},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/item/toy/gun{name = "Gun Exhibit"},/obj/item/weapon/handcuffs{name = "Handcuffs Exhibit"},/obj/item/clothing/head/helmet/HoS,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cwj" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cwk" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cwl" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Port Aft"; dir = 4; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cwm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cwn" = (/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cwo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwp" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwq" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) @@ -6572,22 +6572,22 @@ "cwt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwu" = (/turf/simulated/wall/r_wall,/area/medical/virology) "cwv" = (/turf/simulated/floor,/area/security/checkpoint/medical) -"cww" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/assembly/chargebay) -"cwx" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) +"cww" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cwx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cwy" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cwz" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) "cwA" = (/obj/machinery/alarm{pixel_y = 32},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cwB" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cwC" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwD" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"cwD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cwE" = (/obj/structure/sign/biohazard{pixel_x = -32},/turf/space,/area) "cwF" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/cable_coil,/turf/simulated/floor,/area/assembly/chargebay) "cwG" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) "cwH" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) "cwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwJ" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/aft) -"cwK" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/surgical_drapes,/obj/item/weapon/retractor{desc = "A handy surgical tool which allows the user to peel back their victim's flesh. The label warns users to 'Aim away from face.'"; name = "Retractor Exhibit"; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cwL" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/cable_coil,/obj/item/device/mmi{name = "Man-Machine Interface Exhibit"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cwJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"cwK" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"cwL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "cwM" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/aft{name = "Aft Maintenance"}) "cwN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) @@ -6595,25 +6595,25 @@ "cwQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "cwR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cwS" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"cwT" = (/turf/simulated/wall,/area/hallway/secondary/exit) -"cwU" = (/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/medical) -"cwV" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) +"cwT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area) +"cwU" = (/obj/structure/closet/l3closet/scientist,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) +"cwV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cwW" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cwX" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "cwY" = (/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/genetics) "cwZ" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "cxa" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/lawoffice) -"cxb" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cxb" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cxc" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxd" = (/turf/simulated/wall,/area) -"cxe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) +"cxe" = (/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cxf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cxg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cxi" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) "cxj" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cxk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"cxl" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera{c_tag = "Xenobiology Entrance"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) +"cxl" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cxm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/robotics) "cxn" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) "cxo" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) @@ -6631,17 +6631,17 @@ "cxA" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 8; name = "Genetics Desk"; req_access_txt = "5;9"},/obj/machinery/door/window/southleft{dir = 4; name = "Outer Window"},/obj/machinery/door/poddoor/shutters/preopen{id = "genetics"; name = "genetics desk shutters"},/turf/simulated/floor/plating,/area/medical/genetics) "cxB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/stool,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "cxC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cxD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cxD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cxE" = (/turf/simulated/floor{icon_state = "bluefull"},/area/medical/genetics) "cxF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Robotics Lab"; req_access_txt = "29"; req_one_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/assembly/robotics) -"cxG" = (/turf/simulated/floor,/area/hallway/secondary/exit) -"cxH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cxG" = (/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cxH" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cxI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor,/area/assembly/chargebay) "cxJ" = (/turf/simulated/wall,/area/medical/genetics) "cxK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/hologram/holopad,/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "cxL" = (/turf/simulated/wall,/area/security/checkpoint/medical) "cxM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/xenobiology) -"cxN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"cxN" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "cxO" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxP" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cxQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6654,7 +6654,7 @@ "cxX" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cxY" = (/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) "cxZ" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cya" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) +"cya" = (/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/toxins/xenobiology) "cyd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) @@ -6669,7 +6669,7 @@ "cym" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) "cyn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics_cloning) "cyo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyp" = (/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) +"cyp" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "cyr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/sign/science{name = "\improper ROBOTICS!"; pixel_x = 32},/turf/simulated/floor{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) "cys" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass_medical{id_tag = "CloningDoor"; name = "Cloning Lab"; req_access_txt = "0"; req_one_access_txt = "5"},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics_cloning) @@ -6680,68 +6680,68 @@ "cyx" = (/obj/machinery/door/airlock/maintenance{name = "Robotics Maintenance"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) "cyy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/maintenance/aft{name = "Aft Maintenance"}) "cyz" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) -"cyA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"cyB" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) +"cyA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cyB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cyD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cyD" = (/obj/structure/stool/bed/chair{pixel_y = -2},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cyE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyF" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology) "cyG" = (/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/tank/oxygen,/obj/item/clothing/suit/space/rig/medical{name = "emergency medical hardsuit"},/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/medical{desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra mobility."; name = "emergency medical hardsuit helmet"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cyH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cyI" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cyJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) -"cyK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cyL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cyK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) +"cyL" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bible,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cyM" = (/obj/structure/closet/l3closet,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"cyN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cyN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "cyO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyP" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"cyQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor,/area/hallway/primary/aft) +"cyQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/medical/genetics) "cyS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "cyT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyV" = (/obj/machinery/power/solar_control{id = "starboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cyW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port-Aft"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) -"cyX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cyX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cyZ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cza" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"czb" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) +"cyZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cza" = (/obj/machinery/door/airlock/external{name = "Departure Lounge Airlock"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"czb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "czc" = (/turf/simulated/wall,/area/medical/virology) -"czd" = (/mob/living/carbon/monkey,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cze" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"czf" = (/obj/machinery/light/small{dir = 1},/mob/living/carbon/monkey,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"czd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cze" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"czf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "czg" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"czh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/medical/virology) -"czi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/medical/virology) -"czj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"czk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"czh" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"czi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"czj" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern{pixel_y = 7},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"czk" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "czl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czm" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics_cloning) "czn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "0"},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) "czo" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"czp" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) +"czp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area) "czq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"czr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"czr" = (/mob/living/simple_animal/hostile/retaliate/bat,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "czs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"czt" = (/obj/machinery/smartfridge/chemistry/virology,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"czt" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "czu" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) -"czv" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"czv" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "czw" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"czx" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"czx" = (/obj/structure/bookcase{name = "Holy Bookcase"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "czy" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"czz" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) -"czA" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"czB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"czC" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"czD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"czz" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) +"czA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"czB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"czC" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"czD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) "czE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"czF" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security in red at the top, you see engineering in yellow, science in purple, escape in checkered red-and-white, medbay in green, arrivals in checkered red-and-blue, and then cargo in brown."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"czF" = (/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "czG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czH" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"czJ" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"czJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) "czK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/assembly/chargebay) "czL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "czM" = (/obj/machinery/power/apc{dir = 8; name = "Xenobiology APC"; pixel_x = -25},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) @@ -6757,19 +6757,19 @@ "czW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "czX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "czY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) -"czZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology) +"czZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) "cAa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cAb" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cAc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cAb" = (/obj/item/weapon/cigbutt/cigarbutt,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cAc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/checkpoint/medical) "cAd" = (/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/virology) -"cAf" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Monkey Pen"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cAe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/contraband/poster,/obj/item/weapon/retractor,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cAf" = (/obj/structure/closet/l3closet/virology,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cAg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/toxins/server) "cAh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "cAi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) "cAj" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cAk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) -"cAl" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"cAl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cAm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAo" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -6780,24 +6780,24 @@ "cAt" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/toxins/xenobiology) "cAu" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cAw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/virology) +"cAw" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cAx" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) -"cAy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cAz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/virology) +"cAy" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) +"cAz" = (/obj/structure/closet/wardrobe/virology_white,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cAA" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/Doormaint.dmi'; layer = 2.7; name = "Crematorium Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAB" = (/obj/structure/closet,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cAD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"cAC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) +"cAD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/medical/virology) "cAE" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Chapel Office Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/aft) -"cAG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/primary/aft) -"cAH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft) +"cAF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation A"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cAG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation B"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cAH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cAI" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 0; pixel_y = -30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) "cAJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cAK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) -"cAL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/aft) -"cAM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cAN" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/assembly/chargebay) +"cAL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cAM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cAN" = (/obj/machinery/vending/snack,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security in red at the top, you see engineering in yellow, science in purple, escape in checkered red-and-white, medbay in green, arrivals in checkered red-and-blue, and then cargo in brown."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cAO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAQ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;47;29"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6807,24 +6807,24 @@ "cAU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cAX" = (/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cAY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/aft) -"cAZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cBa" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cBb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/medical/virology) -"cBc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cAX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cAY" = (/obj/machinery/vending/coffee,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cAZ" = (/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cBa" = (/obj/machinery/computer/arcade,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cBb" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cBc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Break Room"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) "cBd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "cBe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cBf" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cBg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cBh" = (/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cBi" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/hallway/primary/aft) +"cBh" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cBi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/medical/virology) "cBj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cBl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cBm" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit) -"cBn" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"cBo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cBm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cBn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cBo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/security/checkpoint/medical) "cBp" = (/obj/machinery/space_heater,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/weapon/extinguisher,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) @@ -6838,22 +6838,22 @@ "cBz" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBA" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher{pixel_x = 4; pixel_y = 3},/obj/item/weapon/extinguisher,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBB" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/port) -"cBC" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cBD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cBC" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/bodybag,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cBD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) -"cBF" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Lab"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cBF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/medical) "cBG" = (/obj/machinery/biogenerator,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cBH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cBI" = (/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cBJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cBH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cBI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cBJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBK" = (/turf/simulated/wall,/area/gateway) -"cBL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cBM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/aft) -"cBN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) +"cBL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/ore/slag,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cBM" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) +"cBN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cBO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cBP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cBP" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cBQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) -"cBR" = (/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/hallway/secondary/exit) +"cBR" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cBS" = (/turf/simulated/wall,/area/toxins/xenobiology) "cBT" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/toxins/xenobiology) "cBU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology) @@ -6862,18 +6862,18 @@ "cBX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cBY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cBZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cCa" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = -32},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cCb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCc" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCd" = (/obj/machinery/computer/pandemic,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cCe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/virology) -"cCf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation A"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) -"cCh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/virology) -"cCi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) -"cCj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation B"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cCa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cCb" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cCc" = (/obj/structure/table,/obj/machinery/newscaster{pixel_x = -30},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/paper,/obj/item/weapon/pen/red,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) +"cCd" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/light{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"cCe" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cCf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCi" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCj" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cCk" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area) -"cCl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cCl" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cCm" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area) "cCn" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCo" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) @@ -6886,19 +6886,19 @@ "cCv" = (/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCx" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cCy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCz" = (/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCA" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cCB" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCC" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cCy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCz" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Departure Lounge APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCA" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cCC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCD" = (/turf/space,/area/shuttle/escape/station) "cCE" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/derelict/ship) "cCF" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/derelict/ship) "cCG" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/derelict/ship) "cCH" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/derelict/ship) "cCI" = (/turf/space,/area/syndicate_station/southeast) -"cCJ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,/obj/item/weapon/reagent_containers/glass/bottle/cold{pixel_x = 3; pixel_y = 3},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cCK" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cCJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cCK" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cCL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cCM" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/packageWrap,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cCN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) @@ -6910,12 +6910,12 @@ "cCT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCU" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCV" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cCW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; frequency = 1439; icon_state = "off"; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cCX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCY" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cCZ" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cDa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) -"cDb" = (/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cCW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/beaker,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cCX" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cCY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/medical/virology) +"cCZ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) +"cDa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cDb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cDc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cDd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology) "cDe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -6924,8 +6924,8 @@ "cDh" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/starboard) "cDi" = (/turf/simulated/floor/plating/airless,/area/solar/starboard) "cDj" = (/turf/space,/area/syndicate_station/southwest) -"cDk" = (/obj/structure/closet/l3closet/virology,/obj/item/weapon/tank/air,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cDl" = (/obj/structure/closet/secure_closet/medical1,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cDk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cDl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cDm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cDn" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/toxins/xenobiology) "cDo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) @@ -6936,7 +6936,7 @@ "cDt" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cDu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cDv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cDw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/virology) +"cDw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cDx" = (/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cDy" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/derelict/ship) "cDz" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/derelict/ship) @@ -6946,13 +6946,13 @@ "cDD" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) "cDE" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cDF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cDG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/hallway/primary/aft) +"cDG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cDH" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"cDI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) +"cDI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cDJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cDK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"cDL" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) -"cDM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) +"cDL" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cDM" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDN" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/derelict/ship) "cDO" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/derelict/ship) "cDP" = (/obj/structure/morgue,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -7072,7 +7072,7 @@ "cFZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) "cGa" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "cGb" = (/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; pixel_y = 30},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"cGc" = (/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) +"cGc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cGd" = (/obj/machinery/mineral/stacking_machine/laborstacker,/turf/simulated/floor{icon_state = "dark"},/area/shuttle/laborcamp/station) "cGe" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew13,/area) "cGf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) @@ -7081,7 +7081,7 @@ "cGi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew2,/area) "cGj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "cGk" = (/obj/structure/crematorium,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"cGl" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance Access "; req_access_txt = "0"; req_one_access_txt = "12;27"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cGl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cGm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew7,/area) "cGn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) "cGo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew12,/area) @@ -7270,7 +7270,7 @@ "cJP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/genetics) "cJQ" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/genetics) "cJR" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"cJS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) +"cJS" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cJT" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cJU" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cJV" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) @@ -7281,9 +7281,9 @@ "cKa" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area) "cKb" = (/turf/simulated/shuttle/plating,/area/centcom/evac) "cKc" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/carrotseed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cKd" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing) +"cKd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKe" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) -"cKf" = (/obj/machinery/portable_atmospherics/canister,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing) +"cKf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera{c_tag = "Xenobiology Entrance"; dir = 8; network = list("SS13","RD")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cKg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) "cKh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKi" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) @@ -7294,12 +7294,12 @@ "cKn" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cKo" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/centcom/evac) "cKp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) -"cKq" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/item/robot_parts/chest{name = "Cyborg Torso Exhibit"; pixel_x = -2; pixel_y = 2},/obj/item/robot_parts/head{name = "Cyborg Head Exhibit"; pixel_x = 3; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cKq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKr" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKt" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKu" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"cKv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"cKv" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Gateway - Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "cKx" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKy" = (/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/grapeseed,/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7323,8 +7323,8 @@ "cKQ" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/shuttle/floor,/area/centcom/evac) "cKR" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/shuttle/floor,/area/centcom/evac) "cKS" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/obj/item/seeds/cornseed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cKT" = (/obj/structure/closet/wardrobe/genetics_white,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cKU" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing) +"cKT" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cKU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Departure Lounge - Port Fore"; dir = 4; network = list("SS13")},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKV" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_boxingcourt) "cKW" = (/obj/structure/stool/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKX" = (/obj/structure/filingcabinet,/turf/simulated/shuttle/floor,/area/centcom/evac) @@ -7349,18 +7349,18 @@ "cLq" = (/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; name = "Loading Doors"; pixel_x = 24; pixel_y = 8},/obj/machinery/door_control{id = "QMLoaddoor"; name = "Loading Doors"; pixel_x = 24; pixel_y = -8},/turf/simulated/shuttle/floor,/area/supply/dock) "cLr" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cLs" = (/obj/machinery/vending/coffee,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cLt" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cLt" = (/obj/machinery/light{dir = 4},/obj/structure/sign/vacuum{pixel_x = 32},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLu" = (/obj/machinery/door/airlock/hatch{name = "Telecomms Server Room"},/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "cLv" = (/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) -"cLw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit) -"cLx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor,/area/hallway/secondary/exit) +"cLw" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cLx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/supply/dock) "cLz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/dna_scannernew,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cLA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit) +"cLA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLB" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/supply/dock) "cLC" = (/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) "cLD" = (/turf/unsimulated/wall,/area/centcom/control) -"cLE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cLE" = (/obj/item/device/soulstone,/obj/item/organ/heart,/obj/structure/table/woodentable,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) "cLF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cLG" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) "cLH" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) @@ -7384,7 +7384,7 @@ "cLZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) "cMa" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"cMc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) +"cMc" = (/obj/machinery/door/morgue{name = "Relic Closet"; req_access_txt = "22"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) "cMd" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cMe" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) "cMf" = (/turf/simulated/shuttle/plating{dir = 1; icon_state = "delivery"},/area/shuttle/escape/centcom) @@ -7396,8 +7396,8 @@ "cMl" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) "cMm" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "cMn" = (/turf/unsimulated/wall/fakeglass,/area/centcom/control) -"cMo" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/light,/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) -"cMp" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/assembly/chargebay) +"cMo" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) +"cMp" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance Access "; req_access_txt = "0"; req_one_access_txt = "12;27"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cMq" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cMr" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) "cMs" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) @@ -7431,17 +7431,17 @@ "cMU" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Nanotrasen Corporate Showroom APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/cigbutt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cMV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/storage/primary) "cMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) -"cMX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) +"cMX" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/virology) "cMY" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "cMZ" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) "cNa" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) -"cNb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/chapel/main) +"cNb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "cNc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cNd" = (/obj/structure/rack,/obj/item/weapon/cable_coil,/turf/simulated/shuttle/plating{dir = 1; icon_state = "warning"},/area/shuttle/escape/centcom) "cNe" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) -"cNf" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/chapel/main) +"cNf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/medical/virology) "cNg" = (/turf/unsimulated/wall,/area/syndicate_mothership) -"cNh" = (/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/alien,/obj/item/target/syndicate,/obj/structure/closet/crate/secure{desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; req_access_txt = "8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing) +"cNh" = (/obj/structure/stool,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) "cNi" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics_cloning) "cNk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) @@ -7462,15 +7462,15 @@ "cNz" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNA" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cNC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"cND" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/assembly/chargebay) +"cNC" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) +"cND" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "cNE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) "cNF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "cNG" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cNH" = (/obj/machinery/sleep_console{density = 0; dir = 4; icon_state = "console"; pixel_x = 3; pixel_y = 2},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cNI" = (/obj/machinery/sleeper,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"cNJ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"cNK" = (/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"cNJ" = (/obj/machinery/atmospherics/pipe/vent{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area) +"cNK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/medical/virology) "cNL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/gateway) "cNM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "cNN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -7505,7 +7505,7 @@ "cOq" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOr" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOs" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"cOt" = (/obj/machinery/door/airlock/glass_security{name = "Centcom Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"cOt" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cOu" = (/obj/machinery/door/airlock/medical{name = "Patient Room B"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) "cOv" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape/centcom) "cOw" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) @@ -7518,7 +7518,7 @@ "cOD" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cOE" = (/obj/item/device/camera,/turf/unsimulated/beach/sand,/area/centcom/holding) "cOF" = (/turf/unsimulated/wall,/area/tdome/tdomeobserve) -"cOG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) +"cOG" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cOH" = (/turf/simulated/floor/plating,/area/toxins/xenobiology) "cOI" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cOJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) @@ -7557,7 +7557,7 @@ "cPq" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cPr" = (/obj/machinery/camera{c_tag = "Xenobiology Test Chamber"; dir = 1; network = list("Xeno","RD"); pixel_x = 0},/obj/machinery/light{dir = 2},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cPs" = (/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cPt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"cPt" = (/obj/structure/table,/obj/item/trash/popcorn,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cPu" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cPv" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand,/area/centcom/holding) "cPw" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape/transit) @@ -7569,7 +7569,7 @@ "cPC" = (/obj/machinery/gateway{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway) "cPD" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Toxins"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage) "cPE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/gateway) -"cPF" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cPF" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/sosjerky,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cPG" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cPH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cPI" = (/obj/structure/closet/syndicate/personal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -7581,7 +7581,7 @@ "cPO" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cPP" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology) "cPQ" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"cPR" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"cPR" = (/obj/structure/table,/obj/item/trash/cheesie{pixel_y = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cPS" = (/obj/machinery/door/morgue{name = "Confession Booth"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cPT" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/cable_coil,/obj/item/device/flash,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cPU" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/plating{icon_state = "floorgrime"},/area/shuttle/escape/centcom) @@ -7612,7 +7612,7 @@ "cQt" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cQu" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; icon_state = "on"; name = "Acid-Proof Air Injector"; on = 1; unacidable = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cQv" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -2; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"cQw" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = -25},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"cQw" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cQx" = (/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cQy" = (/obj/structure/table/woodentable,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "cQz" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) @@ -7627,7 +7627,7 @@ "cQI" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom) "cQJ" = (/obj/item/device/radio/beacon,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cQK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/toxins/xenobiology) -"cQL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) +"cQL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cQM" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 3},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "cQN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "cQO" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding) @@ -7639,7 +7639,7 @@ "cQU" = (/obj/structure/disposaloutlet{dir = 2},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cQV" = (/turf/unsimulated/floor,/area/syndicate_mothership) "cQW" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor,/area/syndicate_mothership) -"cQX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/chapel/main) +"cQX" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_y = 36},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cQY" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) "cQZ" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape/centcom) "cRa" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/toxins/xenobiology) @@ -7652,7 +7652,7 @@ "cRh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cRi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "cRj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cRk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/chapel/main) +"cRk" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cRl" = (/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "cRm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cRn" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area) @@ -7662,8 +7662,8 @@ "cRr" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/toxins/xenobiology) "cRs" = (/obj/machinery/door/window{dir = 4; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cRt" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cRu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) -"cRv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/aft) +"cRu" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_x = -27},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) +"cRv" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cRw" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cRx" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "cRy" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -7680,15 +7680,15 @@ "cRJ" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cRK" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) "cRL" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"cRM" = (/obj/machinery/power/apc{dir = 1; name = "Escape Shuttle Bay APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit) +"cRM" = (/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cRN" = (/turf/unsimulated/wall,/area/tdome) "cRO" = (/obj/machinery/igniter,/turf/simulated/floor,/area/tdome) "cRP" = (/turf/simulated/floor,/area/tdome) "cRQ" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cRR" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cRS" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cRT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) -"cRU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) +"cRT" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = -25},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"cRU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/carpet,/area/chapel/main) "cRV" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor,/area/security/processing) "cRW" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor,/area/shuttle/laborcamp/station) "cRX" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/laborcamp/station) @@ -7703,7 +7703,7 @@ "cSg" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome) "cSh" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "cSi" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/derelict/ship) -"cSj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) +"cSj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/chapel/main) "cSk" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/ignition_switch{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/door_control{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) "cSl" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cSm" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -7738,7 +7738,7 @@ "cSP" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome) "cSQ" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cSR" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cSS" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) +"cSS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) "cST" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cSU" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "cSV" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) @@ -8701,12 +8701,12 @@ "dlq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dlr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dls" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dlt" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) +"dlt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/chapel/main) "dlu" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "dlv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/chapel/main) "dlw" = (/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned) "dlx" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/turf/simulated/floor/carpet,/area/chapel/main) -"dly" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/chapel/main) +"dly" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/chapel/main) "dlz" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dlA" = (/turf/simulated/mineral/random,/area/mine/explored) "dlB" = (/turf/simulated/mineral,/area/mine/explored) @@ -8733,9 +8733,9 @@ "dlW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dlX" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dlY" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dlZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) +"dlZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "dma" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost) -"dmb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) +"dmb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dmc" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dmd" = (/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/suit/space/syndicate,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dme" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) @@ -8743,7 +8743,7 @@ "dmg" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dmh" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dmi" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless,/area/mine/abandoned) -"dmj" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/chapel/main) +"dmj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dmk" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dml" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area) "dmm" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -8755,7 +8755,7 @@ "dms" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/space,/area/mine/abandoned) "dmt" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned) "dmu" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"dmv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dmv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dmw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless,/area/mine/abandoned) "dmx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) "dmy" = (/turf/simulated/wall,/area/mine/north_outpost) @@ -8767,8 +8767,8 @@ "dmE" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dmF" = (/turf/simulated/floor/airless,/area/mine/abandoned) "dmG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"dmH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"dmI" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Starboard Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"dmH" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"dmI" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dmJ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dmK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dmL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) @@ -8788,10 +8788,10 @@ "dmZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/north_outpost) "dna" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dnb" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned) -"dnc" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/mine/north_outpost) +"dnc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dnd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dne" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/mine/north_outpost) -"dnf" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/north_outpost) +"dne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/chapel/main) +"dnf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) "dng" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dnh" = (/obj/machinery/door/airlock,/turf/simulated/floor/airless,/area/mine/abandoned) "dni" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless,/area/mine/abandoned) @@ -8799,16 +8799,16 @@ "dnk" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dnl" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dnm" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless,/area/mine/abandoned) -"dnn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dnn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dno" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dnp" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dnq" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/mine/north_outpost) "dnr" = (/turf/simulated/floor,/area/mine/north_outpost) "dns" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor,/area/mine/north_outpost) "dnt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/north_outpost) -"dnu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/mine/north_outpost) -"dnv" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/alarm{pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/mine/north_outpost) -"dnw" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/north_outpost) +"dnu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"dnv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"dnw" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dnx" = (/obj/machinery/mineral/input,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/mine/north_outpost) "dny" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "dnz" = (/obj/machinery/conveyor{dir = 4; id = "mining_north"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) @@ -8838,7 +8838,7 @@ "dnX" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/north_outpost) "dnY" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/north_outpost) "dnZ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor,/area/mine/north_outpost) -"doa" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/north_outpost) +"doa" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-Central"; location = "9.5-Escape2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dob" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/explored) "doc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "dod" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) @@ -8856,16 +8856,16 @@ "dop" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doq" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dor" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"dos" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dos" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dot" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/mine/north_outpost) "dou" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/mine/north_outpost) -"dov" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/north_outpost) -"dow" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/storage/box/lights/bulbs,/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dov" = (/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dow" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dox" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned) "doy" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/airless,/area/mine/abandoned) "doz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/morgue) -"doB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"doB" = (/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "doC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "doD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/north_outpost) "doE" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/north_outpost) @@ -8879,20 +8879,20 @@ "doM" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doO" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless,/area/mine/abandoned) -"doP" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/mine/north_outpost) +"doP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "doQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/north_outpost) "doR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doS" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "doT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/mine/explored) "doU" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless,/area/mine/abandoned) -"doV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) +"doV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "doW" = (/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) "doX" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) "doY" = (/turf/space,/area/mine/unexplored) "doZ" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/explored) "dpa" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) "dpb" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dpc" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/explored) +"dpc" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dpd" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dpe" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) "dpf" = (/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) @@ -8909,12 +8909,12 @@ "dpq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dpr" = (/turf/simulated/mineral/random/high_chance,/area/mine/unexplored) "dps" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/mine/west_outpost) -"dpt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/simulated/floor,/area/mine/west_outpost) +"dpt" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dpu" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"dpv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/mine/production) -"dpw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/mine/production) -"dpx" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/mine/eva) -"dpy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/eva) +"dpv" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dpw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dpx" = (/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dpy" = (/obj/machinery/door/window/southleft{name = "Mass Driver Door"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dpz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/medical/medbay3{name = "Medbay Aft"}) "dpA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters) "dpB" = (/turf/simulated/mineral/random/high_chance,/area/mine/explored) @@ -8974,7 +8974,7 @@ "dqD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) "dqE" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dqF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"dqG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/simulated/floor/plating,/area/mine/west_outpost) +"dqG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dqH" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) "dqI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters) "dqJ" = (/turf/simulated/wall,/area/mine/west_outpost) @@ -8995,7 +8995,7 @@ "dqY" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/mine/west_outpost) "dqZ" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/west_outpost) "dra" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/mine/west_outpost) -"drb" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/west_outpost) +"drb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "drc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost) "drd" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/west_outpost) "dre" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/mine/west_outpost) @@ -9017,7 +9017,7 @@ "dru" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost) "drv" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/west_outpost) "drw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) -"drx" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters) +"drx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dry" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "drz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "drA" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) @@ -9044,16 +9044,16 @@ "drV" = (/turf/simulated/wall,/area/mine/production) "drW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/production) "drX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/production) -"drY" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/eva) +"drY" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "drZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/eva) "dsa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/mine/eva) "dsb" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/mine/west_outpost) "dsc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/west_outpost) "dsd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) -"dse" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor,/area/mine/west_outpost) -"dsf" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/west_outpost) -"dsg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/west_outpost) -"dsh" = (/obj/machinery/conveyor_switch{id = "mining_west"},/turf/simulated/floor,/area/mine/west_outpost) +"dse" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsf" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsg" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsh" = (/obj/structure/dispenser,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) "dsj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/living_quarters) "dsk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) @@ -9061,11 +9061,11 @@ "dsm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters) "dsn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) "dso" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/production) -"dsp" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/mine/production) +"dsp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsq" = (/turf/simulated/floor,/area/mine/production) -"dsr" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor,/area/mine/production) -"dss" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva) -"dst" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor,/area/mine/eva) +"dsr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dss" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dst" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsu" = (/turf/simulated/floor,/area/mine/eva) "dsv" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/eva) "dsw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/eva) @@ -9074,9 +9074,9 @@ "dsz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/eva) "dsA" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/mine/west_outpost) "dsB" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/mine/west_outpost) -"dsC" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/mine/west_outpost) +"dsC" = (/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsD" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters) -"dsE" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/wall,/area/mine/production) +"dsE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsF" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/mine/west_outpost) "dsG" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/mine/production) "dsH" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost) @@ -9106,9 +9106,9 @@ "dtf" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) "dtg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) "dth" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/west_outpost) -"dti" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) +"dti" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dtj" = (/obj/machinery/mineral/input,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/mine/production) -"dtk" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/mine/west_outpost) +"dtk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dtl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/living_quarters) "dtm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/mine/production) "dtn" = (/obj/machinery/sleep_console{icon_state = "console"; dir = 8},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters) @@ -9118,7 +9118,7 @@ "dtr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dts" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dtt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"dtu" = (/obj/structure/closet/crate,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor,/area/mine/production) +"dtu" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dtv" = (/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "loadingarea"},/area/mine/production) "dtw" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "dtx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) @@ -9126,14 +9126,14 @@ "dtz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance) "dtA" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance) "dtB" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/mine/production) -"dtC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva) +"dtC" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_x = 24; pixel_y = -24},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dtD" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/turf/simulated/floor,/area/mine/eva) "dtE" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/mine/eva) "dtF" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/eva) "dtG" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor,/area/mine/eva) "dtH" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/eva) "dtI" = (/obj/structure/ore_box,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) -"dtJ" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/west_outpost) +"dtJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dtK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) "dtL" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/mine/maintenance) "dtM" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) @@ -9155,11 +9155,11 @@ "duc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/production) "dud" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/production) "due" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/production) -"duf" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production) +"duf" = (/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dug" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) "duh" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"dui" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor,/area/mine/production) -"duj" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) +"dui" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"duj" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "duk" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "dul" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/mine/living_quarters) "dum" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) @@ -9175,7 +9175,7 @@ "duw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) "dux" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/production) "duy" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) -"duz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/mine/production) +"duz" = (/obj/item/device/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/device/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/device/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/device/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "duA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "duB" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "duC" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) @@ -9195,7 +9195,7 @@ "duQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) "duR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "duS" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/mine/living_quarters) -"duT" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/mine/production) +"duT" = (/obj/item/device/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/device/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table,/obj/machinery/light,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "duU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/medical/medbay3{name = "Medbay Aft"}) "duV" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "duW" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/machinery/mineral/output,/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) @@ -9222,28 +9222,28 @@ "dvr" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters) "dvs" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters) "dvt" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"dvu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/production) +"dvu" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dvv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) "dvw" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Airlock"; dir = 8; network = list("MINE")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/production) "dvx" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) "dvy" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dvz" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 3; pixel_y = -5},/obj/item/weapon/storage/toolbox/emergency{pixel_x = -2},/turf/simulated/shuttle/plating{dir = 1; icon_state = "warning"},/area/shuttle/escape/centcom) -"dvA" = (/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"dvB" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) +"dvA" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dvB" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1449; id = "tox_airlock_pump"},/turf/simulated/floor/engine,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dvC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/production) "dvD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/mine/production) -"dvE" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production) +"dvE" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dvF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production) "dvG" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) -"dvH" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/mine/production) -"dvI" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/production) +"dvH" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dvI" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dvJ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dvK" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/production) "dvL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) "dvM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dvN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/gateway) "dvO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway) -"dvP" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) +"dvP" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dvQ" = (/obj/machinery/door/window/westright{name = "Production Area"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) "dvR" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/camera{c_tag = "Production Room"; dir = 8; network = list("MINE")},/turf/simulated/floor,/area/mine/production) "dvS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) @@ -9259,7 +9259,7 @@ "dwc" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) "dwd" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dwe" = (/turf/simulated/wall/r_wall,/area/mine/explored) -"dwf" = (/turf/simulated/wall/r_wall,/area/mine/production) +"dwf" = (/turf/simulated/floor/engine/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dwg" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/production) "dwh" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/turf/simulated/floor,/area/mine/production) "dwi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/production) @@ -9272,7 +9272,7 @@ "dwp" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area) "dwq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/production) "dwr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) -"dws" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/mine/production) +"dws" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1449; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dwt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/assembly/robotics) "dwu" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dwv" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) @@ -9451,17 +9451,17 @@ "dzM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/portsolar) "dzN" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/plating{dir = 1; icon_state = "warning"},/area/shuttle/escape/centcom) "dzO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dzP" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 8; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) +"dzP" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dzQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/portsolar) -"dzR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"dzS" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "whiteredcorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dzR" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) +"dzS" = (/obj/machinery/smartfridge/chemistry/virology,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) "dzT" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) -"dzU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"dzU" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "dzV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "dzW" = (/obj/structure/lattice,/turf/space,/area/shuttle/transport1/station) -"dzX" = (/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A stand with an empty construction mech bolted to it. The clamps are rated at 9300PSI."; icon = 'icons/mecha/mecha.dmi'; icon_state = "firefighter"; name = "Construction Mech Exhibit"},/obj/machinery/light/small{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"dzY" = (/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern mech appliances, as well as the development of the uncorruptable cyborg servants of tomorrow, available today."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Machine' Exhibit"; pixel_x = 0; pixel_y = 32},/obj/structure/showcase{desc = "This cyborg looks frighteningly robust, with cold unseeing eyes. Signs praise the incorruptible nature of synthetics."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "Security"; name = "Cyborg Exhibit"; pixel_y = 3},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"dzZ" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death."; icon = 'icons/obj/cloning.dmi'; icon_state = "pod_0"; name = "Cloning Pod Exhibit"},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dzX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"dzY" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"dzZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "dAa" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "dAb" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry{name = "Arrivals"}) "dAc" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -9469,15 +9469,15 @@ "dAe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "dAf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology) "dAg" = (/obj/machinery/door/airlock/maintenance{name = "Mech Bay Maintenance"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dAh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) -"dAi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/closet/secure_closet/medical1,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"dAh" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"dAi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/virology) "dAj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "dAk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dAl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dAm" = (/obj/structure/table,/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "dAn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "dAo" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/laborcamp/station) -"dAp" = (/obj/structure/closet/wardrobe/virology_white,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) +"dAp" = (/obj/structure/table,/obj/item/weapon/book/manual/infections{pixel_y = 7},/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "dAq" = (/turf/unsimulated/wall/fakedoor{name = "Centcom Security"},/area/centcom/evac) "dAr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboardsolar) "dAs" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) @@ -9488,17 +9488,17 @@ "dAx" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -28},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "dAy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/robotics) "dAz" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/assembly/robotics) -"dAA" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/light/small,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"dAB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) +"dAA" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Virology APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) +"dAB" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dAC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dAD" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"dAE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area) +"dAE" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dAF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dAG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/aft) "dAH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAI" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAJ" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"dAK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing) +"dAK" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dAL" = (/obj/effect/decal/cleanable/robot_debris,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAM" = (/obj/machinery/door/airlock/maintenance{name = "Toxins Lab Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dAN" = (/obj/structure/showcase/fakesec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) @@ -9514,29 +9514,29 @@ "dAX" = (/turf/unsimulated/wall/fakedoor{name = "Shuttle Bay B"},/area/centcom/holding) "dAY" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Robotics"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/robotics) "dAZ" = (/obj/machinery/telecomms/bus/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dBa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBa" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) "dBc" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) -"dBd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dBd" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBe" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dBf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/laborcamp/station) -"dBg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dBg" = (/obj/machinery/door/poddoor{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBh" = (/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dBi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"dBj" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"dBk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"dBj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Toxins Launch Control"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dBk" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBl" = (/obj/machinery/power/apc{dir = 1; name = "Mech Bay APC"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/assembly/chargebay) "dBm" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/laborcamp/station) "dBn" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/laborcamp/station) "dBo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"dBp" = (/obj/machinery/camera{c_tag = "Virology Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"dBp" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBq" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/sign/biohazard{pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dBr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "dBs" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod4/station) "dBt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) "dBu" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) "dBv" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod4/station) -"dBw" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dBw" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBx" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dBy" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod4/station) "dBz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) @@ -9545,10 +9545,10 @@ "dBC" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) "dBD" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) "dBE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) -"dBF" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/effect/landmark{name = "blobstart"},/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing) +"dBF" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) "dBG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) "dBH" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"dBI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing) +"dBI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "dBJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod4/station) "dBK" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod4/station) "dBL" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/escape_pod4/station) @@ -9581,31 +9581,31 @@ "dCm" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "dCn" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "dCo" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light{dir = 8},/obj/machinery/computer/shuttle/mining,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock) -"dCp" = (/obj/structure/table,/obj/item/clothing/mask/gas,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"dCq" = (/obj/machinery/portable_atmospherics/canister,/obj/structure/window/reinforced{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing) -"dCr" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 30; pixel_y = 0},/obj/structure/table,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"dCp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dCq" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dCr" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "dCs" = (/obj/structure/sign/biohazard{pixel_x = -32},/obj/structure/table,/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dCt" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod4/transit) -"dCu" = (/obj/machinery/doppler_array{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing) -"dCv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing) +"dCu" = (/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"dCv" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "dCw" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/escape_pod4/transit) "dCx" = (/obj/machinery/vending/wallmed1{pixel_y = -28},/obj/structure/table,/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dCy" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dCz" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dCz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dCA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/wood,/area/security/vacantoffice) "dCB" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod4/transit) -"dCC" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/medical) +"dCC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dCD" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dCE" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod4/transit) -"dCF" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing) +"dCF" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/stool/bed/chair{dir = 1},/mob/living/carbon/human{dir = 1; name = "Artifical Test Subject Beta"; real_name = "Artifical Test Subject Beta"; voice_name = "Artifical Test Subject Beta"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area) "dCG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) "dCH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dCI" = (/obj/item/weapon/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) -"dCJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) +"dCJ" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dCK" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod4/transit) "dCL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) "dCM" = (/obj/structure/closet/crate,/obj/item/weapon/cable_coil,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dCN" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing) +"dCN" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) "dCO" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod4/transit) "dCP" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod4/transit) "dCQ" = (/turf/space,/area/shuttle/escape_pod4/centcom) @@ -9642,27 +9642,27 @@ "dDv" = (/turf/simulated/floor{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored) "dDw" = (/turf/simulated/wall,/area/mine/laborcamp) "dDx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"dDy" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/reagentgrinder,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"dDy" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dDz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area) "dDA" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area) -"dDB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dDB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "dDC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dDD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dDE" = (/obj/structure/lattice,/turf/space,/area/mine/unexplored) -"dDF" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 0; pixel_y = 24; req_access_txt = "39"},/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dDF" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/item/weapon/wrench,/obj/item/weapon/handcuffs,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "dDG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) "dDH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dDI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area) "dDJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDK" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"dDM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Command Hallway - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dDM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dDN" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) "dDO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dDP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/crew_quarters/locker) -"dDQ" = (/obj/structure/table,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/obj/item/device/radio/intercom{pixel_y = 25},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/medical) +"dDQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/filingcabinet/chestdrawer{pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "dDR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/storage/primary) -"dDS" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{dir = 1; icon_state = "red"},/area/security/checkpoint/medical) +"dDS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "dDT" = (/turf/space,/area/shuttle/laborcamp/outpost) "dDU" = (/obj/machinery/space_heater,/obj/item/weapon/storage/toolbox/emergency,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dDV" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored) @@ -9693,10 +9693,10 @@ "dEu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) "dEv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Lab"; req_access_txt = "5;9"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/genetics) "dEw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Access"; req_access_txt = "5;9"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/genetics) -"dEx" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"dEy" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"dEx" = (/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/camera{c_tag = "Virology Cells"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) +"dEy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "dEz" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/exam_room{name = "Patient Room B"}) -"dEA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing) +"dEA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "dEB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "dEC" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dED" = (/turf/simulated/floor/plating/asteroid/airless,/area/mine/unexplored) @@ -9704,7 +9704,7 @@ "dEF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEG" = (/obj/machinery/power/apc{dir = 4; name = "Medbay Aft APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/junction,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEH" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp) -"dEI" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; dir = 8; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing) +"dEI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dEJ" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp) "dEK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/genetics) "dEL" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 10; icon_state = "blue"},/area/medical/genetics) @@ -9891,7 +9891,7 @@ "dIk" = (/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/explored) "dIl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/explored) "dIm" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production) -"dIn" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/floor,/area/mine/production) +"dIn" = (/obj/machinery/computer/pandemic{pixel_x = -4},/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dIo" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/explored) "dIp" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) "dIq" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) @@ -9905,14 +9905,14 @@ "dIy" = (/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "dIz" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIA" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dIB" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"dIB" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dIC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/tcommsat/server) "dID" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dIE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/lattice,/turf/space,/area) "dIF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dIG" = (/obj/structure/stool/bed/chair/wood/wings,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Mime"},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"dIH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing) -"dII" = (/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing) +"dIH" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual inlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dII" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dIJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dIK" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area) "dIL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area) @@ -9946,74 +9946,74 @@ "dJn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dJp" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dJq" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dJq" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dJs" = (/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dJs" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/virology) "dJt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJu" = (/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/telesci) "dJv" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "dJw" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dJz" = (/obj/item/weapon/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"dJz" = (/obj/structure/table,/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "dJA" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) -"dJB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) +"dJB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) "dJC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) "dJD" = (/obj/structure/table,/obj/machinery/recharger,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "dJE" = (/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "dJF" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "dJG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/horsehead,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dJH" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/lockbox/clusterbang{desc = "An inpenetrable lockbox, designed for transporting the most dangerous of items. You have a bad feeling about opening this."; name = "Lockbox Exhibit"; pixel_y = 3},/obj/item/device/paicard{desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; name = "Nanotrasen Personal AI Device Exhibit"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"dJI" = (/obj/structure/table/woodentable,/obj/machinery/bot/cleanbot{desc = "A little cleaning robot, one of NanoTrasen's more successful products. The label states that, on average, this model requires 40% less psychiatric care than its biological counterpart."; name = "\improper NanoTrasen Cleanbot Exhibit"; on = 0; pixel_y = 4},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"dJI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Test Subject Cell"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "dJJ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/fridge,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "dJK" = (/obj/structure/table,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dJL" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) +"dJL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology) "dJM" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "dJN" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJO" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door_control{id = "AuxShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJP" = (/obj/machinery/door/airlock{id_tag = "AuxShower"; name = "Shower"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJQ" = (/obj/machinery/door/airlock{id_tag = "AuxToilet2"; name = "Unit 2"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJR" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"dJS" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "blobstart"},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJS" = (/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/structure/table,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dJT" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJU" = (/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"},/area) "dJV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJW" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; dir = 8; invuln = 1; light = null; name = "Hardened Bomb-Test Camera"; network = list("Toxins"); use_power = 0},/obj/item/target/alien{anchored = 1},/turf/simulated/shuttle/plating{dir = 4; icon_state = "warnplate"; luminosity = 2},/area) "dJX" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/wood,/area/library) "dJY" = (/obj/machinery/door/airlock{id_tag = "AuxToilet1"; name = "Unit 1"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"dJZ" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet1"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJZ" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/virology) "dKa" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plating/airless,/area) -"dKb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dKb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "dKc" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dKd" = (/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade{pixel_x = 2; pixel_y = 2},/obj/item/weapon/lipstick/purple{pixel_x = -2; pixel_y = -2},/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dKe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/landmark/costume,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dKf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dKf" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dKg" = (/obj/structure/table,/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "dKh" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/landmark/costume,/obj/effect/landmark/costume,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dKi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Command Hallway - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dKi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "dKj" = (/obj/machinery/door/airlock{id_tag = "AuxToilet3"; name = "Unit 3"},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dKk" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"dKl" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKm" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"dKn" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dKn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "dKo" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/chapel/main) -"dKp" = (/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor,/area/hallway/secondary/exit) -"dKq" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) +"dKp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKq" = (/obj/structure/closet/emcloset,/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "dKr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "24"},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/maintenance/storage) -"dKs" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) +"dKs" = (/obj/machinery/camera{c_tag = "Virology Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKu" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/crema_switch{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"dKw" = (/obj/structure/table/woodentable,/obj/item/candle,/obj/machinery/light_switch{pixel_y = 36},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"dKw" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dKx" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"dKy" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) +"dKy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar/red,/turf/simulated/floor/plating,/area/security/checkpoint/medical) "dKz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "dKB" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dKC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/medbay3{name = "Medbay Aft"}) -"dKD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Medbay Security Post"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/medical) -"dKE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dKF" = (/obj/machinery/power/apc{dir = 1; name = "Medical Security Checkpoint APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) +"dKC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dKD" = (/obj/item/weapon/broken_bottle,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dKE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) +"dKF" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/virology) "dKG" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKH" = (/obj/structure/rack,/obj/item/hand_labeler_refill,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKI" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -10029,10 +10029,10 @@ "dKS" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area) "dKT" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "dKU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) -"dKV" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dKV" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 26; pixel_y = 26; req_access_txt = "39"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dKX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -26; pixel_y = 28; req_access_txt = "39"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) -"dKY" = (/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay3{name = "Medbay Aft"}) +"dKY" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dKZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dLb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -10042,17 +10042,17 @@ "dLf" = (/obj/machinery/door/airlock/research{name = "Toxins Space Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dLg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dLh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dLi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing) -"dLj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing) -"dLk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) -"dLl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"dLi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor/plating,/area/medical/virology) +"dLj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) +"dLk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) +"dLl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/virology) "dLm" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"dLn" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing) +"dLn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dLo" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "dLp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/ore_box,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dLq" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/folder/red,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) -"dLr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) -"dLs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"}) +"dLr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) +"dLs" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/camera{c_tag = "Virology Lab"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) "dLt" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) "dLu" = (/obj/structure/table/woodentable,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/clipboard,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/security/vacantoffice) "dLv" = (/obj/structure/table/woodentable,/obj/item/device/camera_film{pixel_y = 9},/obj/item/device/camera_film{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -10086,31 +10086,31 @@ "dLX" = (/obj/structure/closet/secure_closet/exile,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "dLY" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/device/flashlight,/obj/structure/closet/crate,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "dLZ" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) -"dMa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dMb" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) -"dMc" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = -30},/obj/machinery/camera{c_tag = "Virology Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"dMd" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"dMe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Corner"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dMc" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dMd" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) +"dMe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dMf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "dMg" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) -"dMh" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing) +"dMh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "dMi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "dMj" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "dMk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dMl" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/toxins/mixing) -"dMm" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) +"dMl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Containment Cells"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dMm" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dMn" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/weapon/folder/white,/obj/item/clothing/gloves/latex,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) -"dMo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Virology Break Room"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"dMp" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing) +"dMo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dMp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dMq" = (/obj/machinery/camera{c_tag = "Medbay Hallway Aft"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"dMr" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/stool/bed/chair{dir = 1},/mob/living/carbon/human{dir = 1; name = "Artifical Test Subject Beta"; voice_name = "Artifical Test Subject Beta"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area) -"dMs" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing) -"dMt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing) -"dMu" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing) -"dMv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dMw" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Medbay Security Post"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) -"dMx" = (/obj/structure/table,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/obj/item/weapon/book/manual/security_space_law,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) -"dMy" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Virology Testing Area"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"dMr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dMs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dMt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dMu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dMv" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 0; pixel_y = 24; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) +"dMw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay3{name = "Medbay Aft"}) +"dMx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"dMy" = (/obj/structure/stool,/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/item/weapon/handcuffs,/turf/simulated/floor/plating,/area/security/checkpoint/medical) "dMz" = (/obj/structure/table,/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "dMA" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/gloves/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "dMB" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -10129,8 +10129,8 @@ "dMO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) "dMP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) "dMQ" = (/obj/machinery/light,/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) -"dMR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) -"dMS" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dMR" = (/obj/item/weapon/dnainjector/stuttmut,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/wirerod,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dMS" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/security/checkpoint/medical) "dMT" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) "dMU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Middle"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "dMV" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair,/mob/living/carbon/human{name = "Artificial Test Subject Alpha"; real_name = "Artificial Test Subject Alpha"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area) @@ -10142,6 +10142,165 @@ "dNb" = (/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) "dNc" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/production) "dNd" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/production) +"dNe" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/weapon/pestspray,/obj/item/weapon/paper,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dNf" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/chargebay) +"dNg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) +"dNh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/assembly/chargebay) +"dNi" = (/obj/machinery/computer/mech_bay_power_console,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"dNj" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD")},/turf/simulated/floor,/area/assembly/chargebay) +"dNk" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dNl" = (/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dNm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/assembly/chargebay) +"dNn" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/assembly/chargebay) +"dNo" = (/obj/machinery/portable_atmospherics/canister,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNp" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNq" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNr" = (/obj/machinery/portable_atmospherics/canister,/obj/structure/window/reinforced{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNs" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNt" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNu" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNv" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNw" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNy" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNz" = (/obj/item/trash/chips,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dNA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) +"dNB" = (/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dNC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dND" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/closet/wardrobe/genetics_white,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"dNE" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/assembly/chargebay) +"dNF" = (/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) +"dNG" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"dNH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNN" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNO" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNP" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; dir = 8; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNR" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNV" = (/obj/structure/table,/obj/item/clothing/mask/gas,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNW" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/effect/landmark{name = "blobstart"},/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/assembly/chargebay) +"dOg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOh" = (/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/alien,/obj/item/target/syndicate,/obj/structure/closet/crate/secure{desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; req_access_txt = "8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOi" = (/obj/machinery/doppler_array{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOj" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOl" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 30; pixel_y = 0},/obj/structure/table,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOm" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/obj/machinery/meter,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOn" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOo" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOp" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area) +"dOq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/storage) +"dOr" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"dOs" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) +"dOt" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) +"dOu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) +"dOv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"dOw" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) +"dOx" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/north_outpost) +"dOy" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/north_outpost) +"dOz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/mine/explored) +"dOA" = (/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/mine/explored) +"dOB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dOC" = (/obj/structure/disposaloutlet{dir = 1; name = "mining dock outlet"; pixel_y = 4},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/wall,/area/mine/north_outpost) +"dOD" = (/obj/machinery/light/small{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/north_outpost) +"dOE" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/mine/north_outpost) +"dOF" = (/obj/structure/rack,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/mine/north_outpost) +"dOG" = (/obj/structure/rack,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/mine/north_outpost) +"dOH" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/north_outpost) +"dOI" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/mine/north_outpost) +"dOJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) +"dOK" = (/obj/machinery/disposal/deliveryChute{dir = 8; name = "mining dock chute"; pixel_x = 12; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door/window/westright{dir = 8; name = "mining dock chute access"; pixel_x = -2; req_access_txt = "48"; req_one_access_txt = "0"},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/north_outpost) +"dOL" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dOM" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/mine/north_outpost) +"dON" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/north_outpost) +"dOO" = (/obj/structure/dispenser/oxygen,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor,/area/mine/north_outpost) +"dOP" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"dOQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored) +"dOR" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored) +"dOS" = (/turf/simulated/floor/plating,/area/mine/north_outpost) +"dOT" = (/obj/item/weapon/storage/box/lights/bulbs,/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dOU" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area) +"dOV" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/space,/area) +"dOW" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/space,/area) +"dOX" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area) +"dOY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/production) +"dOZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/disposal/deliveryChute{dir = 4; name = "west outpost chute"; pixel_x = -5; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production) +"dPa" = (/obj/machinery/door/window/westright{dir = 8; name = "west outpost chute access"; pixel_x = -3; req_access_txt = "48"; req_one_access_txt = "0"},/turf/simulated/floor,/area/mine/production) +"dPb" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) +"dPc" = (/obj/machinery/light_construct/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"dPd" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"dPe" = (/obj/structure/rack,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/mine/west_outpost) +"dPf" = (/obj/structure/rack,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/mine/west_outpost) +"dPg" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/mining,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/eva) +"dPh" = (/obj/structure/disposaloutlet{dir = 2; name = "north outpost outlet"; pixel_y = -5},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/wall,/area/mine/production) +"dPi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/mine/production) +"dPj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/mine/production) +"dPk" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/eva) +"dPl" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/mine/west_outpost) +"dPm" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/mine/west_outpost) +"dPn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/mine/west_outpost) +"dPo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/mine/west_outpost) +"dPp" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/mine/west_outpost) +"dPq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/west_outpost) +"dPr" = (/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production) +"dPs" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/eva) +"dPt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/mine/eva) +"dPu" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/disposal/deliveryChute{dir = 8; name = "north outpost chute"; pixel_x = 5; pixel_y = 5},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production) +"dPv" = (/obj/machinery/door/window/westright{dir = 4; name = "north outpost chute access"; pixel_x = 3; req_access_txt = "48"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production) +"dPw" = (/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/turf/simulated/floor,/area/mine/west_outpost) +"dPx" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/disposal/deliveryChute{dir = 1; name = "mining dock chute"; pixel_x = 0; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/westright{dir = 1; name = "mining dock chute access"; pixel_x = 0; pixel_y = 2; req_access_txt = "48"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/west_outpost) +"dPy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/mine/production) +"dPz" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/mine/production) +"dPA" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/mine/eva) +"dPB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/mine/eva) +"dPC" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/mine/production) +"dPD" = (/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/mine/living_quarters) +"dPE" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/mine/west_outpost) +"dPF" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet{dir = 1; name = "west outpost outlet"; pixel_y = 0},/turf/simulated/wall,/area/mine/west_outpost) +"dPG" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production) +"dPH" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plating,/area/mine/west_outpost) +"dPI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/item/weapon/storage/box/lights/bulbs,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32},/turf/simulated/floor/plating,/area/mine/west_outpost) +"dPJ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) +"dPK" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) +"dPL" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) +"dPM" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/mine/living_quarters) +"dPN" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production) +"dPO" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/mine/production) +"dPP" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/mine/production) +"dPQ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/production) +"dPR" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/mine/production) +"dPS" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/mine/production) +"dPT" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/mine/production) +"dPU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/mine/production) +"dPV" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/production) +"dPW" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/production) +"dPX" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) +"dPY" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 24},/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) +"dPZ" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/floor,/area/mine/production) +"dQa" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/mine/production) +"dQb" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/mine/production) +"dQc" = (/obj/machinery/computer/shuttle/mining{req_access = null},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/mine/production) +"dQd" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 4; name = "west outpost outlet"; pixel_y = -2},/turf/simulated/wall/r_wall,/area/mine/production) +"dQe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"dQf" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area) +"dQg" = (/obj/machinery/door/airlock/glass_security{name = "Centcom Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10209,135 +10368,135 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaapaapaapaapaapaadadAaadaapaapaapaapaapaadaakaaaaadaadaadaaaaaaaaaaaaaadaadaaiabeaaoabfaaoabgaaiaadaadaaaahqabmabnabkablabiabjabhdAodAodAoabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaacaaaaaaaaaanuabcabdabdaaYaaZanyanyaaVanyanyajCaDZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadadwaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadabaaaaaaTaaTaaOaaTaaTaaaaAwaaaaaTaaTaaOaaTaaTaaaaakaaaaaaaaaaadaaaaaaaadaadaadaaaabbayNayPaaRayQayRaxKaaaaadaadawyayUayTawsaySawscRVcRWcRXcRXcRXcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaayJabcabdanyaIVaIIanyabAayFaIxanyanyanyaadaadaadaadaadaakaakaakaakaakaakaakaaaaelaaaabaaakaakaakabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadacNacNacNacNacNaaOadAaaOacNacNacNacNacNaadabaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaiayZazaaaCazdazbaaiaaaaaaaadahqazfazeazhaAmabiabjabhcRXcRXaziahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaopabcayVanyawKameaaVayYabAayXayWayXayWaaaaadaaaaaaaaaaaEaaaabCaupaupaupabCaaaaelaadaupabCaupaupabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaaEaadaadaadaadaadaadaaaaaaaaiaajaaiaaiaxRaxOaxQaaiaaiaxKaaiaadahqaxIaxHaxGaxFaaaaadaxNaxMaxLcGdahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyaxDaxEanyaxCaxBanyanyanyanyanyanyanyaadaadaaaaaaaaaaakaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaaEaadaadaadaadaadaadaaaaaaaaiaajaaiaaiaxRaxOaxQaaiaaiaxKaaiaadahqaxIaxHaxGaxFaaaaadaxNaxMaxLcGdahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyaIwaxEanyaxCaxBanyanyanyanyanyanyanyaadaadaaaaaaaaaaakaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaapaapaapaapaapaadadAaadaapaapaapaapaapaaaaakaaaaaaaadauWauWauNauWaaiaaiayCaxkaytayvaaRaysaBMaygayeaaiaadahqaybaxXawCaAlabiabjabharEarEayfahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadanyanyanyaxJapmaIoaxTapVaxSavbaxWanuaaaaaaaaaaadaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaaaaOaaTaaOaaOaaTaaaajdaaaaaTaaOaaTaaTaaOaaaaaaaaaaaaaadauWauWauNauWaaiaxaaaBaayaayawrawxawuaaJawwawAaaiaadawyawEawDawCawBawsasDauxarEarEarEcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaakaaaaaaaaaaaaaadaaaanuawcauuawdawhavTavhawbawaavSavNaopaaaaadaadaadaadaadaadaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaxnawZaayaaxawXaxcaxmaaoaaWazRaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaOaaOaaTaaTaaOaaaabYaaaaaTaaOaaTaaOaaTaaaaaaaaaaaaaadauWaaiauUauVaaRaaRauRaaRauSauTaaUauPauQaayaayauOauNauMauDauCauzahqaaaaadahTahRahRahRahTaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaadaadaaaanyanyanyapmauvaurauqapVausauuautanuaaaaadaaaaaaaacaaaaaaaakaadafgafgafgafgafgaupafMaupafgafgafgafgafgaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadavuavtavtavtdehaadaadaadaadaadaadaakauNaaiavGavMaayaayavCavDavzavBadbavyavwaaRaaRavrauNavsavoavnavqavpaadaadahaahmahmahmahpaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaanuauYavbauXaxJavjavhavfaveaqOavkaopaaaaadaaaaaaaaaaaaaaaaakaaaafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaEHaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaEJaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadavuavtavtavtdehaadaadaadaadaadaadaakauNaaiavGavMaayaayavCavDavzavBadbavyavwaaRaaRavrauNavsavoavnavqavpaadaadahaahmahmahmahpaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaanuauYavbauXaxJavjavhavfaIfaqOavkaopaaaaadaaaaaaaaaaaaaaaaakaaaafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaEHaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaOWaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaadaaaaadaadabYaadaadaaaaaaaaaaaaaaaauWabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiauNawyavoavnavqavpaaaaadaaaabvabvabvabvabvaaaaadaaaaaaabwabwaWyaWMaYuabwabwaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadanyanyanyapmamRaurauqapVaFdavbauYanuaaaaadaaaaaaaaaaaaaaaaaEaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaDuabvabvaadaadabwabwaDFaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaadaaaakhaQJakhaadaadaadaadaadaadauNaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiaajayOaWfaWeaWkayOaadabvabvaEsaEqaEpaEpaErabvabvaadabwaDYaEaaEbaEeaUCaVuaEmabwaadahwaSNaSPaWxahwaaaaaaaaaaadaaaaaaaaaaadaaaaopaseaExaEvaEwaDoaEuanyanyanyanyanyaaaaaaaadaaaaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaNBabvabvaadaadabwabwaNTaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaadaaaakhaQJakhaadaadaadaadaadaadauNaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiaajayOaWfaWeaWkayOaadabvabvaOJaEqaEpaEpaErabvabvaadabwaDYaEaaEbaEeaUCaVuaEmabwaadahwaSNaSPaWxahwaaaaaaaaaaadaaaaaaaaaaadaaaaopaseaExaONaEwaDoaEuanyanyanyanyanyaaaaaaaadaaaaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaadaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaCYaBtaBLaFVaBJaBIaBWaBRaBOaBNaadabvaDiaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaadaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaCHaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaOiaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaCUaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaOpavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapMalGapXalGalHaoFakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaAyazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaAfadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaNBaNdammanHamnafaakTamoarHamqakTaMmaLEaLqaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFaoFanQammamnamnalKalDakTaleanbakTatUavXawYatCajeaadaadaadaaaaadaaaaaaaaaaaaaaaakBakAakCatQarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHatBajJatzajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZanGanHanIanJalDaoYapvbGxaWoarTamuargasFasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaioaipaiqairaiJakbacBakiakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadraiaahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFamSaoFamVaoHanEahdanFahfarXapKarXahbapRapeaWoapZaKBagVaKBaKBaKBaaaadradradrafQagXagZagYahjahGahDahEaiIahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHaiDahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsahsadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaoFamZaoFapyalHaoFaoFbHMacpbrTaWoanKamHamWanSaWoaKBaKBarnaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaoyabQaenaidaoKaexaoOafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaoFamZaqjaqkaqkaqlaqmajqacpbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBahLafxagOaviahMafyafyafAafvaeraiRalvabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftafsafjagpagoagmafeaeYaeYaeYaeZaeVaeTaeXaeWakWamiamiamiamiamiaoAadZabXajKaCWaeQaJOaJOaJObmQaJOakSaCWaQsbnBaQsaQsbWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFaoFarjaoFarkaoFaoFagraiFarXaeJajnagqaiWbrTajAaKBbHMagSagvafVaKBadYahsagPagAafQaeLaeKaeKahVaeraiRaesacIaeDaeEaeFahlafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjaiBacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWaedbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBaaIajtaKBbMeaDnadpbrTaspaKBafBafTbrTaKBardafdafuaeSaeOaKBaeubrTaqhbrTaKBaetahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaeIadOaeyaevaewaenaaXaghaexaezadRadPadNadMadLadJadKadJadIadHadGadEadEaepadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadlbyOavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaeCaeUafrafRbrTbrTbrTbrTbrTahcagnaeqacracqagvbrTbrTbrTbMbaKBaefaZmadradradradradradradradradradracAadradradrackaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFadoacGacHabPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNabNabNabRaaQabOabUabTabSadFabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIaciarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBarVarXarXarXarXarXaIfaZmadraInatDatEatFawpatGatIasaasaatKasaasaascaApaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatraAgazpabvabvabvaAnaAoaexaexaaQazuazxazwazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaugavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadapZapZapWaKBasLaUDbHMarlbrTbHMaGPaGCaGJaGVagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslaGsasCazsasbarZashasgasjasiaslaskaskasgaskasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaapWapZapWaKBaKBaKBbHMbrTbrTbHMaFSbrTaKBaqcaFubJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUazoaqSajgajhajiaGraeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFarJarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaadaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaNbaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaOiaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaNdaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaOpavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFaoFaKCalGalGalGalHakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaAyazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaKGadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaMzaMuaoHamnaMmaMlakTamoarHamqakTaLOaLEaLqaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaoFaugaoFaveamnavXaxbalDakTaleanbakTaxDazoawYatCajeaadaadaadaaaaadaaaaaaaaaaaaaaaakBakAakCatUarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHatBajJatzajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaqjamZaqjaqXargaqlaqmarkarJarjbGxaWoarTamuasFatQasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaqcaipaiqairaiJakbacBakiakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadrapXahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapeaoFanQanSaoKaoOaoFbHMapyarXapKarXapvapRanJaWoapZaKBagVaKBaKBaKBaaaadradradrafQagXagZagYahjahGahDahEapWahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHapMahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsanIadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaoFamWaqkaqkaqkamSamVaoFaoYaiBbrTaWoanKamHanEanFaWoaKBaKBarnaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaoyabQaenaidanGaexanHafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaoFaiDaiFaiIajqalKammaoFbrTaiBbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBahLafxagOaviahMafyafyafAafvaeraiRalvabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftafsafjagpagoagmafeaeYaeYaeYaeZaeVaioaeXaeWakWamiamiamiamiamiaoAadZabXajKaCWaeQaJOaJOaJObmQaJOakSaCWaQsbnBaQsaiabWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFahdahfaoFaoFaoFaoFbrTahbarXaeJajnagqaiWbrTajAaKBbHMagSagvafVaKBadYahsagPagAafQaeLaeKaeKahVaeraiRaesacIaeDaeEaeFahlafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjafTacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWafBbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBaaIajtaKBaeTaDnaefbMeaspaKBbwqaedbMbaKBardafdafuaeSaeOaKBaeubrTaqhbrTaKBaetahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaeIadOaeyaevaewaenaaXaghaexaezadRadPadNadMadLadJadKadJadIadHafaadEadEaepadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadladGavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaeCaeUafrafRbrTbrTbrTbrTbrTahcagnaeqbKoacqacrbrTbrTbrTbrTbrTaqhbQSadradradradradradradradradradracAadradradrackaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFadoacGacHabPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNadpabNabRaaQabOabUabTabSadFabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIaciarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBaGraGCaGCaGCaGCaGCaGVbQSadraInatDatEatFawpatGatIasaasaatKasaasaascaApaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatraAgazpabvabvabvaEJaAoaexaexaaQazuaFTaFSazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaHLavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadaadaadaaaaKBasLaUDbHMarlbrTbHMaEsaDuaDFaEvagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslaGsasCazsasbarZashasgasjasiaslaskaskasgaskasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBbHMbrTavabHMaGPaAfaGJazTaFubJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFaCUarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGaFmapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaFcapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWaBTavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMaxbaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMazxaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkayaanZayIaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyaxVawVazNazOazPazQahZadrakYadraaaazSazTazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwaxZaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyaxVawVazNazOazPazQahZadrakYadraaaazSazwazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwaxZaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywbyFafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCybDdadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObAnbANbAPbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbAjallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbBMaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubaWbsebaVbaybtqbbUboubaTbaUbaRbitbisbiqbtjbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLakZbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbhxaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubymbsebaVbaybtqbbUboubaTbaUbaRbitbisbiqbtjbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbvBasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbwJbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaBSbyWaBUbwoaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbwmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbjZaHLbjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkaCkaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbwOaEDacjarNaKhblOaHDaGaasPblPblQaDBaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQaaEXaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtblQaDBaAObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKubAbaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbSsbAmbRRbAiblQaDBaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbCzbCybCsbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbBKbBHbBHbBHbBHbZMbBHbBHbBHbBHbBKbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebViaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbDHbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbwJbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaBSbyWaBUbwoaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbwmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbypbyobjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkbytaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbwOaEDacjarNaKhblOaHDaGaasPbyraAJbysaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQabzKaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtbzNbzMbzObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbSsbAmbzPbhxaAJbysaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbAibAbbzVbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbzTbBHbBHbBHbBHbZMbBHbBHbBHbBHbzSbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebViaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbAVbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaQVaQVaQVaQVaQVaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbEzaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbEPbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbFFaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbFYaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbAVaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbGdbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbNcbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbKZaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsburaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbwKaVDaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbxpbxpbxpbOdbxpbIZaNLbxubuVbNmaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbxSaxxayMbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaWjaOmaOlaQVaQVaQVaQVaWzaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaONaNLaNUaNSaNRaHoaNTaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaURaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUIaNiaTjaSYaNjaSXaSYaSYaLdaYGaUNaJzaMAaMHaMFaMyaMwaMzaHUaMvaMuaHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaNbbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaMlaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaPAawqatXawlawkawjatXawiaOWaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaXIaHgaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaXbaFUaFUaFUatXaTKawfavmatXatXatXauZavdaTJaGvaFUaFUaFUaQvaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCbdGbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbFFaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbyyaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbyxaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbGdbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbyCbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbKZaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsbziaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbwKaVDaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbzHbxpbxpbOdbxpbzIaNLbxubuVbzkaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbxSaxxayMbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaWjaOmaOlaQVaQVaQVaQVaWzaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaUNaNLaNUaNSaNRaHoaUIaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaUHaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUEaNiaTjaSYaNjaSXaSYaSYaLdaYGaUFaJzaMAaMHaMFaMyaMwaTBaHUaMvaTraHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaUtbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaSEaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaPAawqatXawlawkawjatXawiaSCaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaXIaHgaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaUVaFUaFUaFUatXaTKawfavmatXatXatXauZavdaTJaGvaFUaFUaFUaUYaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCaURbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaIrbckbcqbcraTpaZjaSeaROaRJaRFaRKbcxaRAbczbcAbaeaTlaISaIbaIbaIaaHuaHqaHgaHgaHgaHgaSHaHsaHraGNaGOaGHaGQaGRaFhaIRaIQaIOaIHaYpbRAaZNaSDaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdraSvaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaQlbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaLOaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaTwaTvaIwaHgaGFaHtaNNaPgaTuaHgaKGaKIaKHaKCaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaTsaIUaFOaGjaOGbiwbiwbiyaTtaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbnKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbmtbkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIaYQcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbsfbdKbrKbdKbspaSWbsxbjxbfubmCbrJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbdcbcBblebdLbeibpHbtIbfBblqbmYbmZbskbsYbncbndblGbeJbnfboPboybnibnjbnkaSCaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbgpbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbltbhjblWbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpaadaaaaadaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbpxbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbohbkVbdvbosbosbnDboAboBbkQblebbubbVbbfboNbbfbbvbbfbtIbtIboJboKboLboLboLbjhbppbndbdEbjiboLboLboLboQboRaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbeTbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqbfpbjmbjrbsaaTmaTmbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbqRaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBaWGaQkaUtbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDaJqaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaYSaZvbPOaMQaMQbelaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaOJbajboLbsqaZuaSwbssbssaREaZQaZnaYUboLaZObsyaZTbszbsAbsBaZzaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaSnavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaUEaUFbcvclMaTVaTWaUuaUKaUAaXdaXkbcwaLIaLIaSQaFUaFUaFTcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMbfXaUcaUeaUeaUeaUebiebhybiobcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbalaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbcHbtVbtWbcObtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlbiIaYeaYmbgXbkrbjebdHbkuaVRbkabtubjCbjBbjEbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWclMbixbdRbiaaZVbkJckwbeqclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAaXTaXSaUHaSEaXRaSEaUHaUHaXBbBibviaZxbqtbvkaTBbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbfbaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGaWdaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUclMbfJbfKbfNaZkaZtaZSaZyclMaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYdJZaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpaZKaXTcbabZQbZWbYobYobYobYEbYnbBibwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPbHnbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaaaFUclMcumctZcunbkJcwscvRcAIclMaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpcngcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcbkcbAcaPcdqcaPcbgcaPcdqcaPcaTcdDcdjbylcjIbynbyobypbypdLrcegbypbymbyrbysbytceicekbyobyodLsbyobyxbyybyocelcfLbyCbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQdJSaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAbWNcblbXCbzPbZzbZJcbGbZydKidKfdKbbVYcaWcaZbzHcaQbZObzIbzIdJqbzKbzIbZObzMbzNbzObzPcaDcaWcfwbzSbzTccMccLbzPbzVcftccCcjwcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHdIBcCmaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVbrVckVaXcbqgbWCbZkbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqbBjbBibVjbBlbBmbBnbBobBldDMbBibBjbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKbZrbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDscAlajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmdKnaUxdKkdKjdKlaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcnYbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpbrVbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlcmAcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbKIbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNdLOaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnbHMdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYaQsaQsaSRbgXbxqcfKcfJcfNdLRbxvbxwbxxbxychHbbmcfibQZbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtclAaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIbwncXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMdLJdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpasdbqacjUbxXckacjZbrVccDckdckcbrVcdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPccqbBqdzXdzYbGybGzbGAbGBdLDclGcjlbGFdzZbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQscxnaQsbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCdJCaQsaQsbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZbWbbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUybUubuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcKqcLEcxwbJDbJEcbndJIcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHabKabKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQsaThbgXbArbZqbZpbUebBXbAvbBYblXbxwbAwbbmcaObKIbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnbrTbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPbHgbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAaQsckFaQsaQsaOhaQsckEaQsbgXbgXcJTaSkbAubiJbAvbDhblXbDibOybbmchBbQZbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtbKtbKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJczJblXbEDbEEbbmbIHbKIbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBaKBbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgaYpbYeccrccnccicciccicclcdoccrdBiccidASbYLccrbNDbNJbNKbNKbNKbXTbNKbXYbNNcccccKccJbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQbFRbnIbFSbFTbFUbOzchXccabHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTdAcaKBaadaadaadaadaadaadaadaKBbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZbPabPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjchPcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjdvYdAacatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcancaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbKIbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfdvMbBHbBHbBHbBHbBHbBHbBHctQbBHbBHbBHbBHbBHbBHbBHdvJcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTdJybrTbrTaKBaaaaaaaaaaaaaaaaadaqXaKBavabrTbZAbKtbKtbKtbKtbKtbKtbZDbZEbZEbZEbOMbOSdokcQabTPdoBbQdbQcbQebQdbZXbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZcgZcdUchachachachidmIbRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMbZjcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXblXblXbbmccjbQZbHWbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBaKBaadaadcgNaadaadaadaKBaKBaKBaKBaKBaKBaKBaKBbMbbMbbHMbYfbYcbYdbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLdJMbRwbRwcezceDbRwcNWbRwbYacbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDdJLaZLbSXbNpbNpciTaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMibWQbMibMibiNbRhbWLbWMblXbWHbevbWJbevbevbevbWGblXbbmbIHbWybUiaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBaadaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqaKBaKBaKBaKBbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjaUnbMkcrCavAbgXcyWbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbKIbUiaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaadaadaadaadaaaaaaaadcZYbTsbTsbTsbTsbTsbTtbTubTvbTwbTwbTxaKBaUDaUDaKBbTybGxaKBbMbbSobWqdJzbSmbSnbXxbXxbXxbXxbSCbSBaZLbePbYIbWsbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobNgcsgbNabNfavAavAavAbvSavAavAbgXbNibMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbKIbUiaadaaaaaaaadaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaaabKmbKjbKjbKeaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMaKBbwqbKoaeJbKpbzkcvrbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAavAavAaQsaQsbKvaQscasbgXbKubKFbKDbKCbKAbKzbKybKxbKwbKYbKWbKUbKLbKJbKIbKHaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbVObVPbVQbVRbTvbVSbNRbOqbOCbTQaKBdJybrTaKBbTybrTaKBbMebtwbNSbObaKBbOcbQNbQubXxbXxcvMbYIbYIbAUbYIbLabDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJaQsavAcfRchjavAaUnaQsaQsaQsaOhaQsaThbgXbwbbwbbLybwbbLFbwbbLybLCbLAbLIbKIbwbbLJbWFcvNbgXaadaaaaaaaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdaKBbrTbOBaKBcsrbZwaKBbxzbxzbxzbxzbxzbxzczzbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbLWbCRbOWctcckvarwbNrarwdJCavAaQsaQsaQsdJBbOQaQsaQsbgXbgXbONbOIbOEbOFbOEbOIbOEbOFbOFbODbOEbODbOHbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadbYtcWRcWRcdvbTsbTsbTsbTsbTsbYwbYwbPibYwbYwbYwbYwbYwbYwbYwczGbYwbYwcazcaBcafcagcbmbxzcaHcaGcaJcaIcaCbYIcaFcaEcaLbStcdsbZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbZhbYwaQsaQsaQsavAaQsaQsavAaQsaQsaQsaQsaQsbOoavAavAaadaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqaadaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadcZYaaeaaeaaebPlczjbPlckAckBckBbTibThbZxbZxbZxbZxbZxbZxcpHbNncslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbBWbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgczlbYwbWBbJfbDNbElbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgcbubYwbWIbZibUsavAciVcjQavAbNobWIbEvaQsavAcgaavAaadaadbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadbZZcxdbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBccEccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgcizbYwbYwbYwbYwavAavAavAavAavAavAavAbYwbYwaadaaaaaaaadbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaaaaadaadbYwcfdceZcfncfrcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbQLbYwceRbFZbGbavAbVGbVHbVIbVKbVTbWebYwaaaaadaadaadaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaaaaadcfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbrZbkSceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQdttcbxcakcfEbGvavAcbwaQsbQLbQLcpqbENbYwaaaaadaaaaaaaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbQLbYwbErbEtbEubYwbTFcpqbZbbQLbZlbQLbYwaaaaadaaaaaaaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbZhbYwbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaaaaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFcrtcqSckQcjXcmrclQcqicmubQLdJwbYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadaadaaaaRCaaaaRCaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgcotcgJbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaacacciScalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgcizcjubYwbYwbYwbYwcbEcbKbHjbQLbQLbHhbYwaaaaadaaaaadaWuaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaaaaaacaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpcaScbfbTEbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwaaabYwbYwbYwbYwclrbYwbYwbYwaaaaadaadaadaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaaaaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaaaaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLcpZcuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaadaadaaebYwdJsbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizbQLbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPcvCclUcwzcwDdBtcwFcvHcwwckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvbQLdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLbQLbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRcJScmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcrSbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjccANcmTcmTcmTdBtcmTczKczLczXcBOcKNcKJcrfcpMcpNdCqcKfcKddCNcpSdBwdExcpVdEycrScdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbcNDcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKdLncNhdCudCvaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdMScKTdMRdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjccMpclUcMoclWdBtdBAcLvcLYckUbTXcrEcrFdAKcrHcrIcrJcrKcrLdzRcrNcNCdLldLkdCpcrSdBFcOGcrVcrWdLjdLicKUcKUdEIcMXaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqlcrfcsFcsFcsGcsHdCFcqncsKcqmcsMcxNcqocsPcsQcsRcsScsTdEAdIHdIIcnrcnscsWaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaaacwucyJcwucwucyJcwucyJcwucwucwucyJcwuaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDctBcrScrScrScrScrSctCcrScPtcphcpndMhcrSctHctIctJctKctLctMctNctKcrfctKaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacwucjmcjjcnXczbczcczdczeczfczgczdcwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPcmLclIclKclIduAduNcDRckOcszbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswcrScuqdMmcuscutcuucuvcuudMpcuxcuycrScrSctKcqQcsactKcuzcpxcpBcuCcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadaaEcyJczxcjndMoczcczcczAczBczCczDczAcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQcrfcuqdMmcvfcvfcvgcvhcvidMlcvkcvlcrScvmbQLdACcvpctKctKctKctKctKcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcnAczZcrMcAbcAcdApczcczccAecAfconcAhczicwEaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdABctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacudcrScuqdMmcvfdMucuudMtcuudMscvPcvQcrScuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadcwucAwcrUclDcAzcAzcsmdzUcACcADdAiczhdAedzVdAhdAfdwbdwFdxxcwudvAdvBctvdvVcrXdzOdzScxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZctldAMctmcrSbZhbZhcwnbQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddMrcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcztdDycAZcBacBbcBccticBectdcsNcBhdDCdDBdKWdKVdKXdDHdDDdDFdDKdDLdKYdDJdDOdKEdKCdKDdKFdDSdDQbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcAScwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwucBCcBDcuZcBecBFcvncBHcBIcvIdMycwudDpdDodDqcwudBjdBpcyMcwudBqdBUctvdCsdCxdCydCzcxLdMwdCCdMxbYwdAWbZxbZxbZxbZxdBacARdMvbCRdBgdBdcwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdCJcmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucCacCbcCccCdcCecCfcCgcChcCicCjcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcwxcwvdzPbYwcwocnpcnpcnpcnpcwmbNGcwjcdYcwTcwkbTSdMacsedMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacwudMccCycCzcCAcxecBDcCBcxecamcBDcwuaadaadaadbYwcmzbQLbQLbQLcxgcxbclpclpclpdKtdKucxLcwUdKscwWcwVcwMcnpcwJcwJcnpcnpcnpcnpcnpcnpcwkbTSbYNcsecokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaacwucCJcCycCKdMdcxecCzcjncxecCXcCzcwuaaaaadaaabYwcdYcxRcxQcxQcybcxWbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocnpcyZczadMeczrczvczFcyDcyKcyLcyQcyXcsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaacyJcCWcCXcCYcCZcDacDbdAAcDadAAcDbcwuaaaaaaaaabYwbYwcAAbYwbYwbYwcAEbYwbYwbQLcwmcAncAmcAmcAycAmcAmcBfcBicAXcAYcoxcoxcoxcoxcAHcALcAFcAGcAMcAQclpclpclpclpcBkcBjclpcBlcBScoVcoWcxlcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadcwucwucDkcDlcwucwucyJcwucwucwucyJcwuaadaadaadbGhcGkcGjbGhcGccGbcGacDTbGhcJZbYwbYwbYwbYwcGlbYwbYwbYwcnpcCCcAYcBJcBLcBMcBNcBNcDIcDLcDMcDGbYwbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadcwucAwcDwcwuaaaaadaaaaaaaaaaadaaaaaaaaaaaabGhdKvcMQbGhcMYcMDcMhcMLbGhbpYbpYaBrcNKcNfcNbcNJdKwdKocLtcAXcAYcLkcwTcwTcxDcLxcLAcLwcxDcwTcwTaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaacZYaaaaaaaadaaaaaaaaaaadaadaaaaaaaaabGhcoKbMpbGhcOMcOZcONbJZbGhcQwcPSbtBbtBbrPcQXcQLcQLcRkcyKcRucRvbYNcwTcRMcRTcRTcRUcSjcSSdKycyAaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaadwIaaaaaaaaEaaaaaaaaaaadaaaaaaaaaaaabGhcTMdKAdiLdcndkOdkGdkRbGhdlobpYdlxdlvdlCdlydlGdlGdmjdmvdlZdmbdmHcxDcyBcxGcxGcolcoqcxGcyaczkaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaakaaaaaaaaaaadaaaaaaaaaaaabGhcoKcoJbGhcoHcoGcoFcoDcoAcozbpYbwzbwAbrPcoybwzbKEdKocovcowcoxcorcwTcoscxGcxGcolcoqcxGcojcwTaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaaaaaEaakaaEaadaaEaaEaaEaaaaaEbpYbGhbGhbGhbGhbGhbGhcoQcoRbGhbGhbpYcoPbxVbrPcoybxUcoObpYbpYcwTcxDcwTcwTcoNcxGcxGcoMcoqcxGcoLcwTaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaabMhcoTbKBbpYcpacoXcpmcpicpgcpdbpYbKEbzibwAbrPcoybwzbwAbMmbpYcprcpscpEcwTdKqcxGcxGdKpcoqcxGcppcwTaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcpRcyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaaaaacqVcqYbKBcqrcqscqscqscqxcqPcqBcqbcpUcqhcqccqpcqkbxUbMlaUVdKocrgcricrkcrqcrjcrecrecrecqZcxGciIcyAaaaaadaaacwZcwZcwZcwZcwZcwZcznclzczpcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaadaadaaaaaaaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaacqVcqYcrRcpgccsccsccscrPbDtcrOcsDcstcspcsocsccrTduHbKEcrubpYcincqjcoEcqjcqjcqjcqdcrAcpQcpOciIczkaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaaaabNjctxbKBcpgccsccsccsbJabpYbpYbpYbMlaUVctwbxTctnctrccgaUVdKocinciQcsOciQciQciQciIcthctacincsXcwTaaaaadaaacxpcAocApcApcAqcApcArcAscAtcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbpYbpYbpYctzbxTbxTbxTbxTctTdJmbpYbpYctVbKEduMbKEduMctWbpYbpYctXckscufckscksckscugcuTcuVcuWcuXckPaaaaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbpYcuYbIYbIYcvdcvacvscvebpYcvtcvubMlaUVbMlaUVcvvcvtbpYcvwcypcvAcypcypcsqcypcypcvScvUcypcxDaaaaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbpYbpYbQJbPUbPUbQIbpYbOLbpYbpYbpYbQJbPUbPUbQIbpYbpYbpYcyAcBmcBPcBmcKvcClcBncBmcBmcxHcBocwTaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadcyNcypcyNcypcyNaaacMccBRcBRcMcaaaaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadczkcBmdBkcBmczkaaadAEcBmcBmdAEaadaadaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaQlbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaSwaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaQkaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaTwaTvaQvaHgaGFaHtaNNaPgaTuaHgaSnaKIaKHaREaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaTsaIUaFOaGjaOGbiwbiwbiyaTtaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbrKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbmtbkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeobqyboQboRbqzbqRblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIbrJcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbsfbdKbvubdKbspaSWbsxbjxbfubmCbtPbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBblebdLbeibpHbtIbfBblqbmYbeobskbsYbvibndblGbeJburboPboybvkbnjbnkbvtaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbwbbwWbwnbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpaadaaaaadaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbpxbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbohbkVbdvbosbosbnDboAboBbkQblebbubbVbbfboNbbfbbvbbfbtIbtIboJbsqboLboLboLbszbppbndbdEbsyboLboLboLbrZbrPaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbtNbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqaJqbtObjrbsaaTmaTmbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbtBaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaYSaZvbPOaMQaMQbePaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaZuaZxboLaZnaXRaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaZzavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaZKaZOaZQclMaTVaTWaUuaUKaUAaXdaXkbcwaLIaLIaSQaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMbfXaUcaUeaUeaUeaUebiebhybiobcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuablPbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlbiIaYebncbgXbnfbjebdHbkuaVRbkabtubjCbjBbjEbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUbnKboKbniclMbixbdRbiaaZVbkJckwbeqclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbfbaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWclMbfJbfKbfNaZkaZtaZSaZyclMaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYcsQaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpcaVbgzcsPcsMcsNcsOcsOcsOcsWcsTblsbwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtcsScsRbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPcsXbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUclMcumctZcunbkJcwscvRcAIclMaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpbWqcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcrHcrCcrucrAcrucrqcrucrAcrucsacrWcrTcrScrVcrUcrMcrIcrIcrNcrJcrIcrLcrKcsGcsHcrTcsKcstcszcsFcrMcsocsqcrMcsrcsccsmbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQcrkaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAcqVcqZcrecpNcrfcrgcricrjcqNcqMcqLcqKcqdcqRcqncqOcqncqmcqmcqkcqJcqmcqpcqocpQcpScpNcpOcqdcqjcpVcqccpxcpBcprcpscpHcpMcpEcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVcpnckVaXcbqgbWCbnUbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqcpmblscoNcoMcoPcoOcpacoMcphblscpmbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKcmYbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHcppajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmctXaUxdKkdKjctWaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadcufcutcoMcoMcuscoMcoMcuqcugaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcuubHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDsaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadctIctNctKctJctQctKctJctMctLaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlctVcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNdLOaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnctrdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYctCaQsaSRbgXbxqcfKcfJcfNdLRbxvbxwbxxbxychHbbmcficcCbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtctBaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIctwcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMdLJdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpctmbqacjUbxXckacjZbrVccDckdckcctncdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPccqbBqctcctactdbGzbGAbGBdLDclGcticthctlbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQsaQsckFbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfciQcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCdJCckCciIbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZciJbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUycfwbuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcinchPcxwcfLcgNcgJcfEcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHacftbKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQscelbgXbArbZqbZpbUebBXbAvbBYbnTbxwbAwbbmcaObMhbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnccJbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPcekbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcegcdDbLdcdjccMccLcdvcdscuhcdqceibCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAcxnckFaQsaQsaOhaThckEaQsbgXbgXcJTaSkbAubiJccgbDhblXbDibOybbmchBccCbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtccabKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJcbAblXbEDbEEbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBcoLbYwbYwbYwbYwbYwbYwbYwbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgcorbYeccrccnccicciccicclcdoccrdBiccidAScosccrccrcoycowcowcowcoxcowcovccccccccKcoEbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQcoqbnIbFSbFTbFUbOzchXconbHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTdAcaKBcolbYwcnXcnAcnscnrcngbYwbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZcojbPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjcnYcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjdvYdAacatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcmLcaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbMhbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfdvMbBHbBHbBHbBHbBHbBHbBHcmAbBHbBHbBHbBHbBHbBHbBHdvJcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTdJybrTaKBaKBdACbYwcjBclDctGclUbQLbYwavabrTbZAbKtbKtbKtbKtbKtbZDbZEbZEbZEbZEbOMbOSdokcQabTPclWbQdbQcbQebZXbQdbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZchacdUchachachachiclAbRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMckPcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXbnTblXbbmccjccCcksbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBcjKcvobYwcjwcpqcjucjncuSbYwbYwbYwbYwbYwbYwdJpbYwbYwcjIbYcbYdbHMbMebrTbMbaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLaZLaZLdJMbRwbRwcezceDbRwcNWbRwcjmcbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDcjlaZLbSXbNpbNpciTaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMicjjbMibMibiNbRhbWLbWMblXbWHbevbevbevbevbevbWGblXbbmcbGcjibgXaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqbSkbYwbSlbSmbRKbYwbRRbQLbREbYwczGbYwbYwbYwbYwbYwbYwbYwbRzbRpbRxbRlbRnbRmcxLbQZbRkbRicxLbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjavAbSBbSCbSCbgXcyWbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaaaaadaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbUKbUJbUHbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobULbNaavAavAavAavAavAbUMbVGbVObgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaadbKmbKjbKjbKeaadaadaadaadaadbYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbJDbIZbKabJEbKpbXxbZabYYbGybGvcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAbLAbLIbLJbLWbLZbVQbNRbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaadaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaadaadaadaaaaaaaaaaaaaaaaadaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzdDYdEcbYwbNnbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAbNJbOqbOBbObbOcbTvdQebgXbNNbNNbOCbNNbOQbNNbOCbONbOHbQubMhbNNbQNbPibPabgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYRaaaaaaaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwbMmbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbXcbYIbXdbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAbZObYXbZjbZkbZrbZybZzbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadaadbYwcaTbPlcaCbYwbYwbYwcanbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBcafcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfcbgcaZcbacbncbucbkcblaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqcaWaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadaaabYwbVYbYwbGbbFZbFZbFZbFZbFZbVRbZxbZxbZxbZxbZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgczlbYwbWBbJfbDNbWQbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAbVdbWsbTsbBWbWybCybTsbTsbWbbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAarNbWZbXbbWYbTsdQfbWXbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaadaadaaabYwcfdceZcfncfrcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbBnbYwbBobVHbVIbBKbVKbVTbWearNbBWbCsbCybTsbLCaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQsbQLcpqbENbYvbCHbCRbDHbDPbLCaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaadaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwbYvbTsbFYbTsbTsbBiaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaadaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraadbTsbBjbTsbCzbBlaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaadaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadbTsbBmbTsbYtdOUaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraadbFRbFYbFRbZZaadaadaaEaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaadaadaaacacciScalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKbQLbQLbQLbHhbYwaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaadaadcaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpcaSbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaadaaaaaaaaaaadaadaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaadaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaadaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLdNecuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaadaadaadaadaadaadaadaaebYwdNlbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizdNkbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPdNgdNfcwzdNidNhcwFcvHdNjckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvdJwdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLdNzbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRdNAcmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcjkbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLczXcBOcKNcKJdrxdNsdNqdNrdNodNpdNtdNudNvdNwdNxdNydoBcdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbdOfcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdOcdOddOedOedOedOedOedOodOmdOndOkdOldoBdovcqQdBwdovdovdovdOjdOhdOidOgaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdNDdNCdNBdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjcdNEdNfdNFdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNLdNMdNJdNKdNXdNYdNZdOadNUdNVdoBdNWdNQdNRdNSdNTdNNdNOdNOdNPdObaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqldrxdujdujduzduTdvudsgdshdsedsfdssdstdspdsrdtidtkdsCdsEdtJdufdtudtCduiaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcwucwucwucyJcwucwucwuaaaaadaaaaaaaaaaadaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDdrYdoBdoBdoBdoBdoBdowdoBdoPdoVdpcdptdoBdpvdpwdpxdovdpydqGdrbdovdrxdovaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwudCudCvdCudCrdCucwucwucyJcwucyJcwucwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPdBIclIclKclIduAduNcDRckOdBFbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswdoBdvPdzPdCpdCqdBddBadBddAEdAKdABdoBdoBdovcqQdBwdovdBpdBjdBkdBgcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadcwudzYdzXdAhdzZdzYdAidAAdApdzSdzRdzUcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQdrxdvPdzPdwfdwfdwsdvBdvEdvHdvIdvAdoBcvmbQLdACcvpdovdovdovdovdovcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwuczcdJLdJIdJBczcczcdJzdJsczgdJZdJScwuaaaaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdKbctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacuddoBdvPdzPdwfdKfdBddIIdBddIBdIHdJqdoBcuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcwudExdDSdEAdEydDFdDBdDQdDMdEIcBedIndAfdAedzVcAhdAfdwbdwFdxxcwudCJdCNctvdvVcrXdzOdDycxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZdCzdAMdCCdoBbZhbZhcvobQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddCFcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacyJdMddMcdDHdMadMmdMldMhdMedMsdMrdMpdModDCdMudKWdMtdKXdDHdDDdMvdDKdDLdMwdDJdDOdMxcrXcxLdMRdMSdMybYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcAScwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwudKFdKEdKYdKVdLjdLidLldLkdLrdLndLscwudDpdDodDqcwudKqdKscyMcwudBqdBUctvdCsdCxdCydKwcxLdKydKCdKDbYwdAWbZxbZxbZxbZxdKlcARclpcsldKpdKncwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdKicmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucACcAGczccAFcACcADcAycAzcAlcAwcAfcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcAecAccAbbYwcwocuxcuxcuxcuxcuxcuxcuxcuxcnpczJczZczDczFdMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaadaadaadbYwcmzcdYbQLcxgcBJcBIclpcBLcBHdKtdKucxLcBCcBocBFcBDcwMcuxcBacBbcAZcuxcAXcAYcANcuxcALcAMcAHczFcokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwucCacCbczccBRcCecBicCccCdcBNcBPcBMcwuaaaaadaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJcCKcyJaaaaaacxdbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbcAmcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcDlcDIcAQcDGclpclpclpcBkcBjclpcBlcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaadaadcxdcGkcGjbGhcMocGbcGacDTcMccLEbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaadaadbYtcWRcNJcNKcOtcOGcPtcPFcPRcwuaaaaaacxddKvcMQbGhcMYcMDcMhcMLbGhbGhbpYcRucRMcRvcQLcQwcRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaaadwIaadaadcwucwucwucwucwucwucwuaaaaaacxdcoKbMpbGhcOMcOZcONbJZbGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaaaaaaadaadaadaaaaaaaaaaadaaaaaaaaacxdcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxcLAcuvcvlaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaacxdcoKcoJbGhcoHcoGcoFcoDcoAcozbGhbKEbwzcvkbxTcvibwAduMdKocvfcvgcvhcuVcuWcuXcuZcuycuzcuCcuTcuvcuxaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaadaaEaakaaEaadaaEaaEaaEaadcxdbpYbGhbGhbGhbGhbGhcoQcoRbGhbGhbGhcvwbxUcvybxTcvubxVcvvbpYbpYcvgcvhcvhcvhcuvcvtcvgcvhcvncvrcuvcvlaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacvAcoTbKBbpYcvPcoXcvNcpicpgcpdbpYcvMcvIcvFcvCbxTcvibwAduMcwkbpYcwlcwncwwcvScwxcwDcvQcvScvUcvhcwjcuxaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcpRcyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaacwTcqYbKBcqrcqscqscqscqxcqPcqBcqbcqhcwJcqhcpUcqscwKcpUcwLcxldKocxecwWcwVcwWcwWcwWcwWcwWcwVcwWcxbcvlaaaaadaaacwZcwZcwZcwZcwZcwZcznclzcwUcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaadaadaaaaaaaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacwTcqYcrRcpgccscyDccscrPbDtcrOcsDcspcyNduHduHcyLduHduHcyKcxNbpYcyacxGcxDcxGcxGcxHcxGcxGcyAcyBcypcuxaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaczpctxbKBcpgccsccsccsbJabpYbpYbpYbpYczkczjbxTczhbxTczjczibpYbpYczbczacyZczacyQcyXczfczaczaczeczdcuxaaaaadaaacxpcAocApcApcAqcApcArcAscAtcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdbpYbpYctzbxTbxTczrbxTctTdJmbpYczxczvcztcztcvacztcztczzbpYaaaczAcxGczAcxGczAaaaczAcxGcxGczAaaaaaaaaaaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdcuYbIYbIYcvdcvacvscvebpYbpYbpYbQJbPUbPUbPUbQIbpYbpYaadczBczaczCczaczBaadczBczaczaczBaadaadaadaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcxdbpYbQJbPUbPUbQIbpYbOLbpYaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcCvcCvcCNcCOcCPcCQcCRcCScCTcCocCocCUcwZaadaaaaaaaaaaadaadaAXaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfcDgcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocDmcCqcCrcDfcAucDncDocCvcCvcCvcwZaadaadaaaaaaaaaaadaAXaadcDAcDAcDAcDAcDAaaacDiaadcDAcDAcDAcDAcDAaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10355,11 +10514,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaacaaaaaacwZcPPcwZcQxcCvcQucCvcQJcCvdERcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadcwZcPPcwZcCwcCvcCvcPrcCvcPsdEPcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcwZcwZcwZcwZcwZcwZcwZcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadaadaaaaadaadaaaaaacZYaaaaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaEaaaaadaaaaaaaaaaaaaaadaiaaaaaaaadaaaaadaaaaadaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaakaakaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaakaaEaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaadaadaaaaaacZYaaaaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaaaaaaaaaaaadaiaaaaaaaadaaaaadaaaaadaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaakaaEaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaakaakaadaaaaaaaaaaaaaaaaadaakaaEaakaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaEaakaaaaaaaadaakaakaakaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10563,7 +10722,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcNvcNvcNQcNvcNvcNvcNvcNvcNwcNvcNvcNycNxcNvcNvcNxcNvcNvcNxcNycNvcNxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMxcMHdzldzndzodzldzndzndzncMWdzndzndzrdzpdzqdyedyddzscMxdzgcMxcMZcLIcLIcLIcNacLDdyXcMicNTcMMcMMcMNdyadzydxZcMacNUcMdcMtcMEcMjcMdcMtcMSdItcNVcNHdIscMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNwcNvcNvcNxcNycNvcNvcNxcNvcNycNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMxcMHcMHcMHcMHcMHcMHcMHcMHcMHcMHcMHcMHcMHdyfdyedyddyccMxcMAdybcNXcLIcLIcLIcNYdybcMAcMidBbcMMcMMcMNcMOcMPcMOcLUcMdcMdcMtcMRcMjcMdcNccNrcLScLScOacLScNuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNvcNwcNvcNvcNvcNvcNvcNycNvcNxcNycNvcNxcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcObcObcObcObcObcObcObcObcObcObcObcObcObcObcObdAXcObcObcMAdxXcNXcLIcLIcLIcNYdxXcMAcMidyadxZcOddyadzydzydxZcLTcMjcMdcMtcMucMjcMdcMtdBOdBSdBSdBSdBScMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcNvcOfcOfcOfcOfcOfcOfcOfcNvcNvcNvcNvcNvcNvcNvcNxcNvcNvcNQcNycNvcNvcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcMAcMncNXcLIcLIcLIcNYcMncMAcMicOscOscOscOscMOcMPcMOcOtcMdcMdcMtcMEcMjcMdcMddBQdBRdBRdBRdBRcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcNvcOfcOfcOfcOfcOfcOfcOfcNvcNvcNvcNvcNvcNvcNvcNxcNvcNvcNQcNycNvcNvcNvcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcMAcMncNXcLIcLIcLIcNYcMncMAcMicOscOscOscOscMOcMPcMOdQgcMdcMdcMtcMEcMjcMdcMddBQdBRdBRdBRdBRcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcOwcOxdxTdxSdxSdxSdxUcOxcOBcNvcNvcNvcNvcNQcNvcOfcNwcOfcNwcNvcNxcNvcNxcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcOFcOFdxVdxndxAdxrdxWcOFcOFcMicOscOscOscOsdyadzydxZcMadvpcMdcMdcMdcMdcMdcOLdBOdBNdBNdBNdBPcMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcOxcOOcOPcOQcORcOScOTcOTcOxdxPcNvcNvcOfcNgcNgdxDdxBcNgcNgcOfcOVcOWcOfcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcPdcPecPfcPgdxFcPicPfcPecPdcMicPjcPkcPlcPmcMiaaaaaacNrcLScOacLScPncLScOacLScPocLScLVcLScLScNuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcOxcPpcOPcOPcPqcOPcOPcOPcOxdxPcNvdxucNgcNgdDgdDhdDhdDgcNgcNgcNgcNgcNgcNgcNgcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcPedAJcPxcPgdxFcPicPxdAQcPecMicOscPzdAOdANcMiaaaaaacMudIrcMdcMdcMdcMdcMdcMdcMadvlcMaduZdvkcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10573,7 +10732,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcNvcNvcNvcNvcNvcOxcOPcOPcOPcOxdxIdxCdxCdxBcNgcNgcPJdDecQMcQdcPJcPJcQcdDdcNgcNgcNgcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcOFcOFcOFcOFdxFcOFcOFcOFcOFcOFaaaaaaaaaaaaaaaaaaaaaaaacQQcQRcQRcQRcQScQRcQRcQScQRcQRcQRcQTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcOwcOxcOxcOxcOxcOxcOPcOPcOPcOxdxGcQVcQVcQVcQWdEYcPJcPJcPJcPJcPJcPJcQcdDdcNgcNgcNgcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOFdxFcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacQZcQZcQZcQScQZcQZcQScQZcQZcQZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcOxcPIcOPcOPdxEcOxcOPcOPcOPcOxcRbcQWdxDdxBcNgcNgcPJcQdcQdcQdcPJcPJcQcdDacNgdDcdDbcNgcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOFcOFcOFcOFcOFcOFcOFcOFdxAcOFcOFcOFcOFcOFcOFcOFcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcOxcPIcOPcRfcRgcOxcOPcOPcOPcOxcOxdxzcRicOBdxpcNgdCZdCYdCYdCYdCYcPJcPJcPJcRccRdcRdcRecNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOFdxtdxsdxsdxsdxsdxsdxtdxtdxtdxsdxsdxsdxsdxsdxtcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcOxcPIcOPcRfcRgcOxcOPcOPcOPcOxcOxdxzcRicOBdxpcNgdCZdCYdOpdCYdCYcPJcPJcPJcRccRdcRdcRecNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOFdxtdxsdxsdxsdxsdxsdxtdxtdxtdxsdxsdxsdxsdxsdxtcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcRocNvcOxcPIcOPcRfcRpcOxcOPcOPcOPcOxdxwcOPcOPcOxdxycNgdEXdCWdCXdCWdCVcPJcPJcPJcNgcRlcRdcRecNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzLdxtdxtdxtdxvdxtdxtdxtdxtdxtdxtdxtdxvdxtdxtdxtdzLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcOxcPIcOPcOPcOPcRscOPcOPcOPcRtcOPcOPcOPcOxdxucNgcNgdCSdCRdCUdCTcNgcNgcNgcNgcNgcNgcNgcNgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOFdxtdxsdxsdxsdxsdxsdxtdxtdxtdxsdxsdxsdxsdxsdxtcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNgcNvcNvcOxcPIcOPcOPcOPcRwcOPcOPcOPcRxcOPcOPcRycOxdxqdxpcNgcNgcNgcNgcNgcNgaaaaaaaaaaaaaaaaaaaaaaaaaaacRAcRAcRAcRAcRAcRAcRAcRAcRAcRAcRAcRAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOFdxrdxodxodxodxodxodxodxodxodxodxodxodxodxodxncOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11238,138 +11397,138 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmldmcdmmdmcdlVdlVdlRdmndmfdlFdlLdordlFdmDdoqdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddmqdmrdlVdmsdmtdIgdlIdmudmgdnhdlRdmidlFdlFdlFdlFdlFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddmydmydmzdmydmydmydlddlddlddlddlddlddlddlddlddlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddmAdmBdmCdlVdmtdmDdmedmEdmfdmFdlFdmudoxdlFdmUdlHdmfdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddmydmLdmMdmNdmOdmydlddlddlddlddlddlddlddlddlddlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaddlfdlfdlFdlYdmPdmQdmRdmCdmSdmTdmgdmUdopdmgdnSdlFdmUdlLdlHdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaddmydmWdosdowdmZdmydlddlddlBdlBdlBdlBdlddlddlddlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdlFdlFdlFdlFdlFdlXdmfdnadmPdmfdmudnbdmUdmUdnodlHdlLdlFdmUdmedlLdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaddmydmydmydmydmydnndnfdmydmydmydmydmydmydmydmydmydDtdlBdlddlddlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdFtdIfdIedIddlFdmAdnIdmBdlFdnhdlFdnQdnRdnPdlFdmfdmidmFdlHdmFdmpdmfdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaadaadaaddmydnqdnBdnsdntdnudnvdnwdnrdnrdnrdnxdnydnzdnAdmydDtdDtdlddlddlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlFdFtdIbdIadIbdIcdmidlLdnidlLdmidmfdmedlSdlHdmfdmedlIdlFdmFdngdmFdmFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaaaaaddmydnFdnrdnGdnHdnedncdnKdmydmydnLdnMdnNdnNdnOdmydDtdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlFdFtdIbdFudFudIcdmgdlLdnmdmedmodmidlLdlHdnidmFdlHdlLdlFdlLdmfdmidmFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdnTdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFldlBdlBdlBdlBdlBaaaaaaaaaaaaaaaaaaaaddmydnVdnWdnXdnYdnXdnZdnrdoadmydobdnldnkdnjdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlFdFtdFvdFudFsdlFdogdlFdmxdmGdlFdmgdlFdmxdmGdlFdmFdmidlFdmwdmpdmFdmudlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdFwdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFqdnTdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaddmydomdnrdondntdnrdoodnrdoadmydobdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdogdlFdmidlHdmFdlLdlLdmFdmYdmfdmidmfdlFdmXdmKdHZdlrdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdFldDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBaaaaaaaaaaaaaaaaaaaaaaadaaddmydotdnrdoudnHdovdnrdnrdoadmydobdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlHdmudlNdmPdnCdmfdlHdlFdmFdlLdlFdlMdHEdHEdHPdlFdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaadaadaaddmydmydHUdHVdmydmydoDdoEdoDdmydobdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlLdmfdmidlHdmCdlLdmhdlFdogdlFdlFdmUdmFdHEdHYdmkdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoJdoKdoKdoKdoKdoKdoKdoLdoHdoIdDtdDtdHXdmadHWdmydoPdnrdoQdmydobdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdDsdDsdDsdDsdDsdDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlFdlFdlFdlFdlFdlFdlFdlFdogdlFdmUdmFdlwdmFdHPdlzdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdHQdoTdoTdoTdoTdoTdoTdoTdoTdHQdDtdDtdDtdlDdlDdlDdmydoVdoWdoXdmydobdDtdDtdDtdDtdDtdDtdFqdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdHRdHRdHRdHSdEJdDsdDsdDsdDudDudDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYaaaaaaaaaaaaaaadoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdogdogdogdFrdogdogdogdogdogdogdlFdmUdlwdlwdlwdlEdlFdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoZdpadpadpadpadpadpadpadoHdoIdDtdDtdDtdDtdDtdmydoDdHTdoDdmydpcdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdHAdHBdHCdHDdDwdHydGBdGBdGBdEJdnTdnTdnTdnTdGndDudDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlrdHzdlsdlFdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdkIdludkMdltdkYdkXdDtdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaadEJdHIdHJdHGdHHdDwdHOdGBdHNdHLdHMdHKdGvdGvdnTdGndHFdDudDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdHEdHEdlwdlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdkIdkNdkMdDtdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdHrdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdLpdGBdHydHvdGAdGBdGCdDwdLodGEdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHgdHhdHddHedGXdHfdGBdGAdHcdGBdHbdGhdGhdGvdGvdGvdGvdGndDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlldljdlkdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdnTdlBdDtdDtdFldFldlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdDtdkHdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodKMdEsdHndGXdHmdGBdHldDwdHkdDwdHjdGhdGhdHidGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdDtdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdDwdDwdDwdGUdGBdGVdGXdGWdGZdGYdDwdHadGhdGvdGhdGvdGndGndGTdDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdlidEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaadlfdlfaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdlcdlhdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGOdGPdGOdGQdGBdGBdGAdGBdGSdDwdGRdDwdGhdGhdGhdGvdGvdGndGndGNdDudDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdlidEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfaaaaaaaaaaaadlddlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdEJdEJdGJdGBdGBdGAdGLdGKdDwdGMdDwdGEdGhdGhdGndGndGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdEJdGCdGBdGAdGIdGHdGGdGFdDwdLodGDdGndGndGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFcdFcdFcdFcdGzdGydFUdFUdFUdGwdFedFedGxdGndGvdGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGsdFLdFLdFLdGudGtdGpdGqdGpdGpdGodFLdGrdGhdGhdGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedGmdFedFedGidGkdGjdFedFedGEdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdGfdGedGddGcdGbdGadFZdFYdFXdFWdFVdFUdFTdFSdGgdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdlcdlgdlhdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFKdFMdFLdFNdFLdFOdFedFQdFPdFPdFRdFJdFedDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdkHdDtdDVdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaddFkdFjdFidFodFndFmdFedFIdFHdFGdFFdFJdFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadFfdFhdFgdFddFcdFcdFedFedFedFedFedFedFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkQdkYdkXdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDudDudDudDudDudDudDudDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkIdkNdkMdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaadlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaadpraaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdprdpraaaaaadlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaadlfdlfdpraaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlBdDtdDtdkHdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdDtdkHdDtdDtdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlAdlAaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaadlAdlAdpBaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdDtdlcdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaadpBaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaadaadaadaadaadaadaadaaddlAdlAdlfdlfdlddlddlBdnTdFBdDtdkHdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaaeaaeaaeaaeaaeaaeaaeaaedlAdlAdlAdlfdlddlddlBdlBdDtdDtdkHdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAaadaadaadaadaadaadaadaaddlAdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlddlBdDtdDtdkQdkYdkXdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlfdlfdlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlddlBdDtdDtdkIdkNdkMdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlddlBdlBdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlddlddlBdDtdofdoedDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdFxdFxdFxdFxdFxdFxdFxdFxdFxdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlBdlBdDtdkHdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlBdDtdDtdkHdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlddlddlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlBdlBdDtdDtdkHdFqdnTdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlBdDtdDtdofdoedDtdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDvdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdkHdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdFAdFzdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdDtdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdkHdDtdDtdDtdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaadpFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdlBdlBdlBdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdkHdDtdkQdkXdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdDsdDsdDsdDsdDsdFxdFxdFxdFxdFxdFxdFxdFxdFxdFxdFxdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdlcdlgdocdoddlgdlgdlgdlhdDtdDtdlBdlBdlBdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdkHdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdDtdFydDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdlhdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlBdlBdnTdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdlBdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdkHdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaadaadaadaadaadaadaadaadaadaadaaddlBdlBdlBdlBdlddlddlddlddlddlBdlBdDtdDtdlcdlgdlgdlhdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAdlAaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaedlAdlAdlAdlAdlfdlddlddlddlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaddlAdlAdlfdlfdlfdlddlddlBdlBdDtdDtdDtdDtdlcdlgdlgdlhdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlBdlBdlBdlBdDtdFpdDtdDtdkHdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaadlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdnTdDtdDtdkHdDtdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdlfdlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdlcdlgdlhdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdEDdlfdlfdlfdEDdEDdEDaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdEDdlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdEDdlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdDtdkQdkYdkXdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdDtdkIdkNdkMdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdlBdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdoYdprdprdprdprdoYdoYdprdprdprdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdDtdDtdDtdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdofdlgdlgdlgdlgdoedDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdDtdDtdDtdDtdFydDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdDtdDtdDtdDtdnTdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdDtdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdprdprdprdprdoYdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdlBdDtdofdoedDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddnTdFBdkQdkYdkXdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlBdDtdkIdkNdkMdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlBdlBdlBdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlBdDtdDtdlBdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAaadaadaadaadaadaadaadaadaadaaddlAdlAdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaaeaaeaaeaaeaaeaaeaaeaaeaaedlAdlAdlAdlfdlfdlfdlfdlfdlddlddlBdlBdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAaadaadaadaadaaddpBdpBaadaadaaddlAdlAdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdDtdDtdDtdDtdlBdlBdlBdlBdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadpBdpBdpBdpBaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdDtdDtdDtdDtdDtdlBdlBdlBdoYdoYdoYdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadpBdpBdpBdpBaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdDtdlBdlBdoYdoYdoYdoYdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaadpBdpBaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdkHdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpJdDtdpJdDtdlBdlBdlBdoYdoYdoYdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpKdHQdpKdDtdlBdoYdoYdoYdoYdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpLdpMdpNdoYdoYdoYdoYdoYdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpLdpMdpOdoYdoYdoYdoYdoYdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdkHdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdoHdoIdpPdoKdoKdoKdoKdoKdoKdpQdpMdpOdoYdoYdoYdoYdoYdoYdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdpRdpRdpRdpRdpRdpRdpRdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdkHdFqdnTdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdHQdpSdpSdpSdpSdpSdpSdpSdpTdpUdpOdoYdoYdoYdoYdoYdoYdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdpRdpVdpWdtLdpYdpVdpRdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdkHdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlBdDtdDtdDtdoHdpZdpadpadpadpadpadpadqadpMdqbdqcdoYdoYdoYdoYdoYdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdpRdpVdtzdtAdqfdqgdpRdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdprdprdprdoYdoYdoYdoYdoYdoYdlBdlBdlBdDtdDtdDtdDtdoYdoYdoYdoYdoYdoYdpLdpMdpOdoYdoYdoYdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqBduhdtMdlfdqkdpRdpRdpRdtUdpRdpRdpRdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdDtdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlddlddlBdlBdDtdDtdDtdoYdoYdoYdoYdoYdoYdoYdpLdpMdpOdoYdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdtRdtMdIodlfdqkdqodqpdqkdpidqkdlBdlBdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdlddlddlBdlBdlBdDtdDtdoYdoYdoYdoYdoYdoYdoYdqrdpMdpOdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqBdnTdlddqkdqsdqtdqudpidqkdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdDtdkHdDtdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdlddlddoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpJdHQdpJdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdukdlfdlddqkdqkdqkdqkduldqkdDtdDtdlBdlBdnTdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdkHdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdlddlddoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdpKdDtdpKdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqxdlfdlfdqkdqodqydqkdpidqzdDtdDtdDtdDtdFDdDtdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdkHdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdDtdDtdDtdDtdutdutdutdDtdDtdDtdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqxdlfdlfdqkdqsdqtdqCdpidqDdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlBdlBdnTdlBdlBdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdEDdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdDtdDtdDtdDtdIqduydIpdDtdDtdDtdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqkdqHdqkdqkdqkdqkdqkdqkdpidqIdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlBdlBdDtdFDdDtdDtdDtdkQdkYdkXdDtdDtdDtdDtdDtdDtdDtdEDdEDdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdDtdDtdqJdqJdqJdqJdqJdqJdqKdqLdqLdqMdqJdqJdqJdqJdFBdDtdDtdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdqkdqkdqkdqkdqNdqOdqPdqkdqodqQdqkduldqkdqkdqkdqRdqSdqTdqkdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdkIdkNdkMdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdlBdDtdDtdDtdqJdqUdpgdqWdqXdqYdqZdradrbdrbdrcdqVdrddredkXdDtdDtdlBdlBdlBdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlfdlfdlfdqkdrfdphdrhdridrgdrjdqkdqsdqtdrkdpidqkdrldrmdrndrndrndqzdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdrodrpdrqdrrdrpdrpdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdlddlBdDtdDtdDtdqJdrsdqVdrtdrudqVdqVdqVdqVdqVdrvdqVdrddIhdpkdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdnTdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlddlddlddqkdrydrgdrzdrAdrBdrCdqkdqkdqkdqkdpidqkdrldrDdrDdrDdrEdqDdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdrodrFdrFdrFdrGdrpdDtdFCdDtdDtdDtdFqdnTdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlddlBdDtdDtdDtdqJdrIdqVdqVdrJdqVdqVdqVdqVdqVdrcdrKdrLdrcdkMdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdFDdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlddlddlddqkdrMdrgdrNdrgdrOdrgdrPdrEdpndpmdpldqkdrldrDdrTdrDdrUdqIdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdrVdrVdrWdrXdrodrYdrZdrZdsadrpdrpdrpdrpdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlBdlBdDtdDtdqJdsbdqVdscdsddsedsfdsgdqVdshdqJdqJdqJdqJdqJdkQdkXdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkQdkXdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddqkdqkdqkdqkdqkdqkdqkdsidsjdpodsidsjdqkdqkdqkdqkdqkdsldqkdqkdsmdsndDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdsodrXdspdsqdsrdssdstdsudsudsvdswdsxdsydszdkXdDtdDtdDtdFldlBdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlddlBdDtdDtdqJdsAdqVdsBdrudsCdptdpsdqVdsFdppdsHdsIdsJdsKdocdoddlgdlgdlgdlgdlgdlhdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlddlddlddlddlBdlBdDtdDtdofdlgdlgdlgdlgdlgdlgdlgdlgdocdoddlgdlgdlgdlgdlhdDtdDtdDtdDtdDtdlBdlddlddlddlddlddqkdsLdsMdsNdrDdrUdpAdrEdrUdrPdsPdsQdrDdrEdrUdrDdrDdsRdsSdqSdqTdsTdsUdsUdsUdsUdsUdsUdsUdsVdsVdsVdsVdsVdsVdsVdrWdsWdsXdsYdsqdpwdpvdpydpxdsudsudsudtddtedtfdIidpkdDtdDtdDtdFldlBdlddlddlfdlfdlfdlfdlfdlfdlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdlfdlfdlddlBdDtdDtdqJdqJdqJdqJdqJdthdtidpDdqJdqJdtkdqJdqJdqJdqJdkIdkMdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdlBdDtdlBdlBdlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdlBdlBdnTdlBdlBdlddqkdqkdqkdqkdtldrUdqldqndqmdpmdqjdqhdqhdqedqedqidqhdqvdqwdqhdqwdqqdqqdqqdqqdqqdqqdqqdqqdqddqddqddqddqddqddqddpXdpGdpXdpHdpGdpEdtBdtCdtDdtEdtFdtGdswdtHdtIdszdkMdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdqJdtJdtKdqFdqGdqJdnldqEdqBdDtdDtdDtdDtdDtdFpdDtdDtdDtdlcdlgdlgdlhdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlddlddlddlBdDtdDtdofdlgdoedDtdDtdDtdDtdlBdDtdDtdFpdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdFDdDtdlBdlBdlBdlBdlBdqkdrDdtOdtPdtQdtQdtPdrwdtSdtTdtQdtQdrxdtPdtVdtWdtXdtYdtZdtZdtZdtZdtZdtZdtZdtZduaduaduaduaduaduadubducdudduedufdugdrSduidujdrVdrVdrVdrVdrVdrVdrVdrVdrQdludrRdludqBdFldlBdlddlddlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlddlBdlBdDtdDtdDtdDtdqJdumdunduodupdqJdDtdDtdDtdDtdDtdDtdlBdlBdnTdlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdlBdlddlddlddlddlddlBdlBdlBdlBdlBdDtdofdoedDtdDtdDtdlBdlBdlBdlBdlBdlBdnTdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdqkdqkduqdurduqdqkdqkdusdskduudqkdqkduqdsDduqdqkduwdDtdDtdDtaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaduxdrXdsqdsGduzdsEduBduCduCduDdrVduEduFduGdsOdsOdsOdsOdqBdDtdlBdlddlddlfdlfdlfdlfdlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdlBdDtdDtdDtdqJdqJdqJdqJdqJdqJdDtdDtdlBdlBdlBdlBdlBdlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdlBdlBdlBdlddlddlddlddlddlBdDtdDtdDtdDtdDtdDtdkHdDtdDtdDtdkQdkXdDtdDtdDtdDtdDtdDtdDtdlBdqkduIduJduKduJdqkduLdtgdtcduOduPdqkduQdtbduSdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaadaadaadaadaadaadaadaadaaddrVduTdsZdtBdrVdrVdrVdrVduVdrVduWdrVdrVdtadqBdqBdqBdqBdDtdlBdlddlddlfdlfdlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdlcdlgdlgdlgdlhdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdDtdlBdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdlcdlgdlgdlgdocdoddlgdlgdlgdlhdDtdDtdDtdDtdqkdtodtndvadvbdqkdvcduPduPdvddvedqkdvfdtpdvhdqkdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaaddvidvidvidvidviaadaaaaaadrVdvjdtmdtBdtjdvmdvnduCduCdvoduCduDdrVdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdlcdlhdDtdDtdkQdkXdDtdDtdofdlgdlgdlgdlgdlgdoedDtdlBdlddlddlddlddlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdkHdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdtqdvqdvrdvsdvedqkduqdIjduqdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaaddvidvidvidvidviaadaaadsodrXdvudvvdvwdrVdrVdrVdrVdrVdrVdvxdvydrVdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlBdlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdlBdDtdFpdDtdDtdlcdlgdlgdocdoddlgdlgdoedDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdlgdlhdDtdDtdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdqkdIkdIldpkdFEdDtdDtdDtdDtdDtaaaaaaaaaaadaaaaaaaaaaaddvidvidvidvidvidvCdsWdvDdvEdsqdvFdtBdtudvGdvHdvIdNcdvKdvLdvydrVdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlddlddlddlddlddlBdlBdnTdlBdDtdDtdDtdDtdkIdkMdDtdDtdDtdDtdFpdDtdlBdlBdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdkIdtydtxdtxdtxdtxdtwdkMdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaadaaddvidvidvidvidvidvPdsqdvPdsqdsqdvFdtBdsqdsqdvQdsqdsqdvRdvSdtvdrVdDtdDtdDtdDtdlBdlddlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdnTdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdkHdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaddvidvidvidvidvidrWdsWdvUdImdsqdvFdvWdugdugdvXdugdugdNddvZdwadrVdDtdDtdDtdDVdnTdlddlddlddlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdDtdDtdDtdDtdlcdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlhdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaddvidvidvidvidviaadaaaduxdrXdIndvFdtBdsqdsqdwcdvGdsqdsqdvxdwddrVdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdDtdkQdkXdDtdDtdDtdwedweaaaaaaaaaaaddvidvidvidvidviaadaaaaaadwfdwfdwgdwhdugdwidwjdwkdwldwmdvSdvydrVdDtdDtdDtdDtdlBdlddlddlddlddlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlcdlgdocdoddlgdlgdlgdwndwodwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdwqdwrdwsdsqdsqdsqdpfdwudwvdwwdwxdpedrVdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdwedweaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwfdwfdrVdrWdrXdrVdrVdrVdrVdrVdrVdrVdrVdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlBdlBdlBdlBdlBdlBdlBdlBdlBdlBdnTdFBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaddlfdlfdlFdlYdmPdmQdmRdmCdmSdmTdmgdmUdopdmgdnSdlFdmUdlLdlHdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaddmydmWdOSdOTdmZdmydlddlddlBdlBdlBdlBdlddlddlddlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdlFdlFdlFdlFdlFdlXdmfdnadmPdmfdmudnbdmUdmUdnodlHdlLdlFdmUdmedlLdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaddmydmydmydmydmydmydOLdmydmydmydmydmydmydmydmydmydDtdlBdlddlddlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdFtdIfdIedIddlFdmAdnIdmBdlFdnhdlFdnQdnRdnPdlFdmfdmidmFdlHdmFdmpdmfdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaadaadaaddmydnqdnBdnsdntdOOdONdOMdnrdnrdnrdnxdnydnzdnAdmydDtdDtdlddlddlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlFdFtdIbdIadIbdIcdmidlLdnidlLdmidmfdmedlSdlHdmfdmedlIdlFdmFdngdmFdmFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaaaaaddmydnFdnrdnGdnHdnrdOIdnKdmydmydnLdnMdnNdnNdnOdmydDtdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlFdFtdIbdFudFudIcdmgdlLdnmdmedmodmidlLdlHdnidmFdlHdlLdlFdlLdmfdmidmFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdnTdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFldlBdlBdlBdlBdlBaaaaaaaaaaaaaaaaaaaaddmydnVdnWdnXdnYdnXdnZdnrdOKdOJdobdnldnkdnjdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlFdFtdFvdFudFsdlFdogdlFdmxdmGdlFdmgdlFdmxdmGdlFdmFdmidlFdmwdmpdmFdmudlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdFwdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFqdnTdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaddmydomdnrdondntdOEdoodnrdOFdOxdobdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdogdlFdmidlHdmFdlLdlLdmFdmYdmfdmidmfdlFdmXdmKdHZdlrdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdFldDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBaaaaaaaaaaaaaaaaaaaaaaadaaddmydotdnrdoudnHdOHdoWdoWdOGdOxdobdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlHdmudlNdmPdnCdmfdlHdlFdmFdlLdlFdlMdHEdHEdHPdlFdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaadaadaaddmydmydHUdHVdmydOCdOBdoEdoDdOxdobdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlLdmfdmidlHdmCdlLdmhdlFdogdlFdlFdmUdmFdHEdHYdmkdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoJdoKdoKdoKdoKdoKdoKdoLdoHdoIdDtdDtdHXdmadHWdmydODdnrdoQdOxdobdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdDsdDsdDsdDsdDsdDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlFdlFdlFdlFdlFdlFdlFdlFdogdlFdmUdmFdlwdmFdHPdlzdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdHQdoTdoTdoTdoTdoTdoTdoTdoTdHQdDtdDtdDtdlDdlDdlDdmydOwdoWdoXdOxdobdDtdDtdDtdDtdDtdDtdFqdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdHRdHRdHRdHSdEJdDsdDsdDsdDudDudDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYaaaaaaaaaaaaaaadoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdogdogdogdFrdogdogdogdogdogdogdlFdmUdlwdlwdlwdlEdlFdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoZdpadpadpadpadpadpadpadoHdoIdDtdDtdDtdDtdDtdmydOydHTdoDdOxdOAdOzdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdHAdHBdHCdHDdDwdHydGBdGBdGBdEJdnTdnTdnTdnTdGndDudDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlrdHzdlsdlFdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdOtdOvdOudOsdOrdkYdkXdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaadEJdHIdHJdHGdHHdDwdHOdGBdHNdHLdHMdHKdGvdGvdnTdGndHFdDudDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdHEdHEdlwdlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkIdkNdkNdkNdkMdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdHrdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdLpdGBdHydHvdGAdGBdGCdDwdLodGEdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdkHdkHdkHdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHgdHhdHddHedGXdHfdGBdGAdHcdGBdHbdGhdGhdGvdGvdGvdGvdGndDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlldljdlkdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdnTdlBdDtdDtdFldFldlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdkHdkHdkHdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodKMdEsdHndGXdHmdGBdHldDwdHkdDwdHjdGhdGhdHidGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdkHdkHdlcdlhdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdDwdDwdDwdGUdGBdGVdGXdGWdGZdGYdDwdHadGhdGvdGhdGvdGndGndGTdDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdlidEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaadlfdlfaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdlcdlhdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGOdGPdGOdGQdGBdGBdGAdGBdGSdDwdGRdDwdGhdGhdGhdGvdGvdGndGndGNdDudDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdlidEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfaaaaaaaaaaaadlddlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdlcdlhdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdEJdEJdGJdGBdGBdGAdGLdGKdDwdGMdDwdGEdGhdGhdGndGndGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdEJdGCdGBdGAdGIdGHdGGdGFdDwdLodGDdGndGndGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFcdFcdFcdFcdGzdGydFUdFUdFUdGwdFedFedGxdGndGvdGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGsdFLdFLdFLdGudGtdGpdGqdGpdGpdGodFLdGrdGhdGhdGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedGmdFedFedGidGkdGjdFedFedGEdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdkHdlcdlgdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdGfdGedGddGcdGbdGadFZdFYdFXdFWdFVdFUdFTdFSdGgdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdkHdlcdlgdlhdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFKdFMdFLdFNdFLdFOdFedFQdFPdFPdFRdFJdFedDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdlcdlgdlhdkHdkHdDVdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaddFkdFjdFidFodFndFmdFedFIdFHdFGdFFdFJdFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadFfdFhdFgdFddFcdFcdFedFedFedFedFedFedFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkQdkYdkYdkYdkXdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDudDudDudDudDudDudDudDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkIdkNdkNdkNdkMdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaadlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaadpraaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdprdpraaaaaadlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaadlfdlfdpraaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdlBdDtdkHdkHdkHdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlBdDtdkHdkHdkHdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdkHdkHdkHdDtdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlAdlAaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdkHdkHdlcdlhdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaadlAdlAdpBaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdkHdlcdlhdkHdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaadpBaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlBdDtdlcdlhdkHdkHdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaadaadaadaadaadaadaadaaddlAdlAdlfdlfdlddlddlBdnTdFBdkHdkHdkHdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaaeaaeaaeaaeaaeaaeaaeaaedlAdlAdlAdlfdlddlddlBdlBdDtdkHdkHdkHdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAaadaadaadaadaadaadaadaaddlAdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlddlBdDtdkQdkYdkYdkYdkXdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlfdlfdlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlddlBdDtdkIdkNdkNdkNdkMdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlddlddlBdlBdOQdoedkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlddlddlddlBdkHdofdoedkHdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdFxdFxdFxdFxdFxdFxdFxdFxdFxdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlBdlBdkHdkHdofdoedlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlBdDtdkHdkHdkHdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlddlddlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlBdlBdOQdoedkHdOPdnTdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlBdDtdkHdofdoedkHdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDvdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdkHdkHdofdORdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdFAdFzdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdDtdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaadpFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdkHdkHdkHdDtdDtdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdkHdkHdkHdDtdDtdDtdlBdlBdlBdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdkHdkHdkHdkQdkXdDtdDtdDtdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdkHdkHdlcdocdoddlgdlgdlgdlgdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdDsdDsdDsdDsdDsdFxdFxdFxdFxdFxdFxdFxdFxdFxdFxdFxdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdkHdlcdlgdocdoddlgdlgdlgdlhdkHdDtdlBdlBdlBdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdlcdlgdlgdocdoddlgdlgdlhdkHdlcdlgdlhdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdDtdFydDtdDtdDtdkIdkMdDtdDtdkHdlcdlgdlhdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlBdlBdnTdlBdlBdDtdDtdDtdDtdDtdlcdlgdlhdkHdkHdDtdDtdlBdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdDtdDtdkHdkHdlcdlgdlgdlhdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaadaadaadaadaadaadaadaadaadaadaaddlBdlBdlBdlBdlddlddlddlddlddlBdlBdDtdkHdlcdlgdlgdlhdkHdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAdlAaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaedlAdlAdlAdlAdlfdlddlddlddlBdDtdlcdlgdlgdlhdkHdlcdlgdlgdlhdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaddlAdlAdlfdlfdlfdlddlddlBdlBdDtdDtdDtdkHdlcdlgdlgdlhdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlBdlBdlBdlBdlcdPcdlgdlhdkHdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaadlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdnTdDtdkHdkHdlcdlgdlhdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdlfdlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdkHdlcdlgdlhdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdEDdlfdlfdlfdEDdEDdEDaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlcdlgdlhdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdEDdlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadEDdEDdlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdkQdkYdkYdkYdkXdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaadlfdlfdlfdEDdEDaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddEDdDtdkIdkNdkNdkNdkMdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdDtdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdoYdprdprdprdprdoYdoYdprdprdprdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdDtdDtdDtdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdofdlgdlgdlgdlgdoedkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdkHdofdlgdlgdlgdlgdoedkHdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdkHdkHdofdlgdlgdlgdPddoedlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdkHdkHdkHdDtdDtdDtdnTdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdkHdkHdkHdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddDtdkHdkHdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdprdprdprdprdoYdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddDtdofdoedkHdkHdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdkHdofdoedkHdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdkHdkHdofdoedDtdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddnTdPbdkYdkYdkYdkXdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlBdkIdkNdkNdkNdkMdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlBdlBdlBdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlBdDtdDtdlBdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAaadaadaadaadaadaadaadaadaadaaddlAdlAdlfdlfdlfdlfdlfdlddlddDtdDtdkHdkHdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAdlAdlAaaeaaeaaeaaeaaeaaeaaeaaeaaedlAdlAdlAdlfdlfdlfdlfdlfdlddlddlBdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlAaadaadaadaadaaddpBdpBaadaadaaddlAdlAdlfdlfdlfdlfdlfdlfdlddlddlddlBdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdDtdDtdDtdDtdlBdlBdlBdlBdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadpBdpBdpBdpBaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdkHdkHdDtdDtdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdDtdDtdDtdDtdDtdlBdlBdlBdoYdoYdoYdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadpBdpBdpBdpBaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdDtdlBdlBdoYdoYdoYdoYdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaadpBdpBaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpJdDtdpJdDtdlBdlBdlBdoYdoYdoYdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdkHdkHdkHdDtdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpKdHQdpKdDtdlBdoYdoYdoYdoYdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpLdpMdpNdoYdoYdoYdoYdoYdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpLdpMdpOdoYdoYdoYdoYdoYdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdkHdkHdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdoHdoIdpPdoKdoKdoKdoKdoKdoKdpQdpMdpOdoYdoYdoYdoYdoYdoYdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdpRdpRdpRdpRdpRdpRdpRdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdkHdkHdOPdnTdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdHQdpSdpSdpSdpSdpSdpSdpSdpTdpUdpOdoYdoYdoYdoYdoYdoYdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdpRdpVdpWdtLdpYdpVdpRdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdkHdkHdkHdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdlBdDtdDtdDtdoHdpZdpadpadpadpadpadpadqadpMdqbdqcdoYdoYdoYdoYdoYdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdpRdpVdtzdtAdqfdqgdpRdlfdlfdlfdlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdprdprdprdoYdoYdoYdoYdoYdoYdlBdlBdlBdDtdDtdDtdDtdoYdoYdoYdoYdoYdoYdpLdpMdpOdoYdoYdoYdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqBduhdtMdlfdqkdpRdpRdpRdtUdpRdpRdpRdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlddlddlBdlBdDtdDtdDtdoYdoYdoYdoYdoYdoYdoYdpLdpMdpOdoYdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdtRdtMdIodlfdqkdqodqpdqkdpidqkdlBdlBdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdkHdkHdkHdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdlddlddlBdlBdlBdDtdDtdoYdoYdoYdoYdoYdoYdoYdqrdpMdpOdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqBdnTdlddqkdqsdqtdqudpidqkdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdkHdkHdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdlddlddoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdpJdHQdpJdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdukdlfdlddqkdqkdqkdqkduldqkdDtdDtdlBdlBdnTdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdkHdkHdkHdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdlddlddoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdpKdDtdpKdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqxdlfdlfdqkdqodqydqkdpidqzdDtdDtdDtdDtdFDdDtdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlddlddlddlddlBdDtdkHdkHdkHdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdDtdDtdDtdDtdutdutdutdDtdDtdDtdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqxdlfdlfdqkdqsdqtdqCdpidqDdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlBdlBdnTdlBdDtdDtdkHdkHdkHdDtdDtdDtdDtdDtdDtdDtdEDdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdprdprdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdDtdDtdDtdDtdDtdDtdDtdDtdIqduydIpdDtdDtdDtdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdqkdqHdqkdqkdqkdqkdqkdqkdpidqIdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlBdlBdDtdFDdDtdDtdkQdkYdkYdkYdkXdDtdDtdDtdDtdDtdDtdEDdEDdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdDtdDtdqJdqJdqJdqJdqJdqJdqKdqLdqLdqMdqJdqJdqJdqJdFBdDtdDtdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdqkdqkdqkdqkdqNdqOdqPdqkdqodqQdqkduldqkdqkdqkdqRdqSdqTdqkdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlBdlBdDtdDtdDtdDtdDtdkIdkNdkNdkNdkMdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdprdprdprdoYdoYdoYdoYdoYdoYdoYdprdprdprdprdprdoYdoYdlBdDtdDtdDtdqJdqUdpgdqWdqXdqYdqZdradPfdPedrcdqVdrddredkXdDtdDtdlBdlBdlBdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlfdlfdlfdqkdrfdphdrhdridrgdrjdqkdqsdqtdrkdpidqkdrldrmdrndrndrndqzdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdkHdrodrodrqdrrdrpdrpdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdprdprdprdoYdoYdlddlBdDtdDtdDtdqJdrsdqVdrtdrudqVdqVdqVdqVdrddrvdqVdrddIhdpkdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdnTdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddlddlddlddqkdrydrgdrzdrAdrBdrCdqkdqkdqkdqkdpidqkdrldrDdrDdrDdrEdqDdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdrodPgdrFdrFdrGdrpdDtdFCdDtdDtdDtdFqdnTdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdprdprdprdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlddlBdDtdDtdDtdqJdrIdqVdqVdrJdqVdqVdqVdqVdrddrcdrKdrLdrcdkMdkQdkXdDtdDtdDtdDtdDtdlBdlBdlBdlBdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdFDdDtdDtdDtdDtdDtdDtdDtdDtdkQdkXdDtdDtdDtdDtdDtdDtdlBdlBdlBdlBdlddlddlddqkdrMdrgdrNdrgdrOdrgdrPdrEdpndpmdpldqkdrldrDdrTdrDdrUdqIdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdrVdPhdPjdPidrodPkdrZdrZdsadrpdrpdrpdrpdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlBdlBdDtdDtdqJdsbdqVdscdsddPldPpdPodPndPmdPqdPqdPqdPqdPqdocdoddlgdlgdlgdlgdlgdlgdlhdDtdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdofdlgdlgdlgdlgdlgdlgdlgdlgdlgdocdoddlgdlgdlgdlgdlgdlhdDtdDtdDtdlBdlBdlddlddqkdqkdqkdqkdqkdqkdqkdsidsjdpodsidsjdqkdqkdqkdqkdqkdsldqkdqkdsmdsndDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdsodrXdPrdPvdPudPtdPsdsudsudsvdswdsxdsydszdkXdDtdDtdDtdFldlBdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlddlBdDtdDtdqJdsAdqVdsBdrudPxdPwdpsdqVdsFdppdsHdsIdsJdsKdocdoddlgdlgdlgdlgdlgdlhdkHdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlddlddlddlddlBdlBdDtdkHdofdlgdlgdlgdlgdlgdlgdlgdlgdocdoddlgdlgdlgdlgdlhdkHdDtdDtdDtdDtdlBdlddlddlddlddlddqkdsLdsMdsNdrDdrUdpAdrEdrUdrPdsPdsQdrDdrEdrUdrDdPDdsRdsSdqSdqTdsTdsUdsUdsUdsUdsUdsUdsUdsVdsVdsVdsVdsVdsVdsVdrWdsWdsXdsYdPCdPzdPydPBdPAdsudsudsudtddtedtfdIidpkdDtdDtdDtdFldlBdlddlddlfdlfdlfdlfdlfdlfdlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdoYdoYdlfdlfdlddlBdDtdDtdqJdqJdqJdqJdqJdthdqJdpDdPFdPqdPEdPqdPqdPqdPqdocdoddlgdlgdlgdlgdlhdkHdlcdlgdlgdlhdlBdDtdlBdlBdlddlddlddlddlddlddlddlddlddlddlBdlBdofdlgdoedkHdofdlgdlgdlgdlgdlgdlgdlgdocdoddlgdlgdlgdlhdkHdkHdDtdDtdDtdDtdlBdlBdnTdlBdlBdlddqkdqkdqkdqkdtldrUdqldqndqmdpmdqjdqhdqhdqedqedqidqhdqvdqwdqvdqwdqqdqqdqqdqqdqqdqqdqqdqqdqddqddqddqddqddqddqddpXdpHdpXdpHdpGdpEdPGdswdtDdtEdtFdtGdswdtHdtIdszdkMdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoYdoYdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdqJdPHdtKdqFdPIdqJdnldqEdqBdDtdDtdkIdkMdDtdFpdDtdDtdkHdlcdlgdlgdlhdkHdDtdDtdDtdlBdlddlddlddlddlddlddlddlddlddlddlBdofdoedofdlgdoedkHdDtdDtdDtdlBdDtdDtdFpdkIdkMdDtdDtdDtdkHdkHdkHdDtdDtdDtdDtdDtdDtdFDdDtdlBdlBdlBdlBdlBdqkdrDdtOdtPdtQdtQdtPdrwdtSdtTdPMdPLdPKdPJdtVdtWdtXdtYdtZdtZdtZdtZdtZdtZdtZdtZduaduaduaduaduaduadubducdudduedPPdPOdrSdPNdrVdrVdrVdrVdrVdrVdrVdrVdrVdrQdludrRdludqBdFldlBdlddlddlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlddlBdlBdDtdDtdDtdDtdqJdumdunduodupdqJdDtdDtdDtdDtdDtdDtdlBdlBdnTdlBdDtdlcdlgdlgdlhdkHdkHdDtdDtdDtdDtdlBdlddlddlddlddlddlBdlBdlBdlBdlBdkHdofdoedofdlgdoedlBdlBdlBdlBdlBdlBdnTdDtdDtdDtdDtdDtdkHdkHdkHdDtdDtdkQdkXdDtdDtdDtdDtdDtdDtdlBdlBdqkdqkduqdurduqdqkdqkdusdskduudqkdqkduqdsDduqdqkduwdDtdDtdDtaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaduxdrXdPSdsGdPRdPQduBduCduCduDdrVduEduFduGdsOdsOdsOdsOdqBdDtdlBdlddlddlfdlfdlfdlfdlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdlBdDtdDtdDtdqJdqJdqJdqJdqJdqJdDtdDtdlBdlBdlBdlBdlBdlddlddlBdlBdDtdDtdDtdkHdkHdlcdlgdlgdlgdlhdDtdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdkHdkHdofdoedlBdlBdlBdlddlddlddlddlddlBdDtdDtdDtdDtdDtdkHdkHdlcdlgdlgdocdoddlgdlgdlgdlgdlhdDtdDtdlBdqkduIduJduKduJdqkduLdtgdtcduOduPdqkduQdtbduSdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaadaadaadaadaadaadaadaadaaddrVdsqdsZdPTdrVdrVdrVdrVduVdrVduWdrVdrVdtadqBdqBdqBdqBdDtdlBdlddlddlfdlfdlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdkHdlcdlgdlgdlgdlhdlcdlhdDtdkQdkXdDtdofdlgdlgdlgdlgdlgdoedkHdkHdlBdlBdlddlddlddlddlddlddlddlBdlBdDtdDtdDtdDtdkHdlcdlgdlgdlgdocdoddlgdlgdlgdlhdkHdDtdDtdDtdqkdtodtndvadvbdqkdvcduPduPdvddvedqkdvfdtpdvhdqkdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaaddvidvidvidvidviaadaaaaaadrVdvjdtmdtBdtjdvmdvnduCduCdvoduCduDdrVdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlBdlBdlBdlcdlgdlgdlgdlhdlcdlhdlcdlgdocdoddlgdoedofdlgdlgdlgdlgdlgdoedkHdlBdlddlddlddlddlfdlfdlfdlddlddlBdlBdlBdDtdDtdlcdlgdlgdlgdlgdocdoddlgdlgdlhdkHdlcdlgdlgdlhdqkdqkdqkdqkdqkdqkdtqdvqdvrdvsdvedqkduqdIjduqdqkdDtdDtdDtdDtdDtdDtaaaaaaaadaaaaaaaaaaaddvidvidvidvidviaadaaadsodrXdPUdvvdvwdrVdrVdrVdrVdrVdrVdvxdvydrVdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlBdlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdlBdDtdFpdlcdlhdlcdlgdlgdocdoddlgdlgdoedofdlgdlgdlgdlgdlgdoedlBdlddlddlddlfdlfdlfdlfdlfdlddlddlddlBdlBdlBdlBdDtdDtdDtdDtdkIdkMdDtdDtdkHdlcdlgdlgdlhdkHdDtdDtdDtdDtdDtdqkdqkdqkdqkdqkdqkdqkdIkdIldpkdFEdDtdDtdDtdDtdDtaaaaaaaaaaadaaaaaaaaaaaddvidvidvidvidvidvCdsWdvDdsYdPSdvFdtBdPWdPVdPYdPXdNcdvKdvLdvydrVdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlddlddlddlddlddlBdlBdnTdlBdlcdlgdlgdlgdocdoddlgdlgdlgdoedFpdDtdlBdlBdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlBdlBdDtdlcdlgdlgdlhdkHdkHdDtdDtdDtdDtdDtdDtdDtdkIdtydtxdtxdtxdtxdtwdkMdDtdDtdDtdDtdDtdDtaadaadaadaadaadaadaadaaddvidvidvidvidvidPZdQadPZdQadsqdvFdtBdsqdsqdvQdsqdsqdvRdvSdtvdrVdDtdDtdDtdDtdlBdlddlddlddlfdlfdlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdDtdDtdDtdkIdkMdDtdDtdDtdDtdnTdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdlBdDtdDtdDtdkHdkHdlcdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlhdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaddvidvidvidvidvidrWdsWdvUdImdQbdvFdvWdugdugdvXdugdugdNddvZdwadrVdDtdDtdDtdDVdnTdlddlddlddlfdlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdlBdlBdlBdlBdlBdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdDtdDtdDtdkHdlcdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlhdkHdkQdkXdDtdDtdDtaaaaaaaaaaaaaaaaaddvidvidvidvidviaadaaaduxdrXdQcdvFdtBdsqdsqdwcdvGdsqdsqdvxdwddrVdDtdDtdDtdDtdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdlBdlBdlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdDtdlcdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlgdlhdkHdlcdocdoddlgdlgdlgdwodwodwpdwpdOWaaddvidvidvidvidvidOXdwpdwpdwqdQddwgdwhdugdwidwjdwkdwldwmdvSdvydrVdDtdDtdDtdDtdlBdlddlddlddlddlfdlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdkHdlcdlgdocdoddlgdlgdlgdwndwodwpdOWdOVdwpdwpdwpdwpdwpdwpdOUdOXdwpdwqdwrdOZdPadsqdsqdpfdwudwvdwwdwxdpedrVdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdlBdlBdDtdDtdDtdDtdDtdDtdDtdlBdlBdDtdDtdDtdDtdDtdDtdlcdlgdlgdocdoddlgdlgdlgdwodwodOWdOVdwpdwpdwpdwpdwpdwpdwpdwpdOUdOXdwqdwqdOYdrWdrXdrVdrVdrVdrVdrVdrVdrVdrVdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlBdlBdlBdlBdlBdlBdlBdlBdlBdlBdnTdFBdDtdDtdDtdDtdDtdDtdDtdkIdkMdDtdDtdDtdDtdDtdOVdwpdwpdwpdwpdwpdwpdwpdwpdwpdwpdOUaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFpdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdnTdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFqdnTdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 4abe021b694aab3d33c51c3a348c3ea2da14e2a9 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Mon, 16 Dec 2013 13:18:33 -0300 Subject: [PATCH 182/315] Changes the name of metastation from v38N to v38Q, the latest revision --- maps/{MetaStation.v38N.dmm => MetaStation.v38Q.dmm} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename maps/{MetaStation.v38N.dmm => MetaStation.v38Q.dmm} (100%) diff --git a/maps/MetaStation.v38N.dmm b/maps/MetaStation.v38Q.dmm similarity index 100% rename from maps/MetaStation.v38N.dmm rename to maps/MetaStation.v38Q.dmm From e136fd6cb54f7271c0289cbf5e722a713b8a009b Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Mon, 16 Dec 2013 18:08:14 -0300 Subject: [PATCH 183/315] If it's not human it doesn't mean that it's a silicon! Fixed a runtime regarding the ninja mask on scout mode. --- code/modules/events/ninja.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index 86aca6e8ace..f2c22c3ab76 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -2544,7 +2544,7 @@ ________________________________________________________________________________ U.client.images += image(tempHud,target,"hudninja") else//If we don't know what role they have but they have one. U.client.images += image(tempHud,target,"hudunknown1") - else//If the silicon mob has no law datum, no inherent laws, or a law zero, add them to the hud. + else if(issilicon(target))//If the silicon mob has no law datum, no inherent laws, or a law zero, add them to the hud. var/mob/living/silicon/silicon_target = target if(!silicon_target.laws||(silicon_target.laws&&(silicon_target.laws.zeroth||!silicon_target.laws.inherent.len))) if(isrobot(silicon_target))//Different icons for robutts and AI. From ae5e6d591fd7422e7e5f2bf60d689c67fa876c7e Mon Sep 17 00:00:00 2001 From: Incoming Date: Mon, 16 Dec 2013 19:19:45 -0500 Subject: [PATCH 184/315] Bugfix: Wrote a work around for reviving dead simple animals, who were simply becoming pristine corpses before this. Not the prettiest thing in the world, but blame how simple animals die. --- code/modules/projectiles/projectile/magic.dm | 22 ++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index bec53531f8b..fa7160a8a3d 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -38,8 +38,26 @@ if(istype(target,/mob)) var/old_stat = target.stat - target.revive() - target.suiciding = 0 + if(isanimal(target) && target.stat == DEAD) + var/mob/living/simple_animal/O = target + var/mob/living/simple_animal/A = new O.type(O.loc) + A.real_name = O.real_name + A.name = O.name + if(iscorgi(O)) + var/mob/living/simple_animal/corgi/C = O + if(C.inventory_head) + C.inventory_head.loc = C.loc + if(C.inventory_back) + C.inventory_back.loc = C.loc + if(O.mind) + O.mind.transfer_to(A) + else + A.key = O.key + del(O) + target = A + else + target.revive() + target.suiciding = 0 if(!target.ckey) for(var/mob/dead/observer/ghost in player_list) if(target.real_name == ghost.real_name) From fd87128f576b97d28442b1965d726c1801be52fe Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Mon, 16 Dec 2013 22:08:10 -0300 Subject: [PATCH 185/315] Added some checks on the photocopier after the sleeps to avoid runtimes and made a new var "busy" to avoid exploits that ignored the wait times. --- code/modules/paperwork/photocopier.dm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index eac2ced42e1..ef929633873 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -24,7 +24,7 @@ var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier! var/greytoggle = "Greyscale" var/mob/living/ass = null - + var/busy = 0 /obj/machinery/photocopier/attack_ai(mob/user) return attack_hand(user) @@ -63,7 +63,7 @@ if(href_list["copy"]) if(copy) for(var/i = 0, i < copies, i++) - if(toner > 0) + if(toner > 0 && !busy && copy) var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc) if(toner > 10) //lots of toner, make it dark c.info = "" @@ -78,13 +78,15 @@ c.fields = copy.fields c.updateinfolinks() toner-- + busy = 1 sleep(15) + busy = 0 else break updateUsrDialog() else if(photocopy) for(var/i = 0, i < copies, i++) - if(toner >= 5) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink + if(toner >= 5 && !busy && photocopy) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc) var/icon/I = icon(photocopy.icon, photocopy.icon_state) var/icon/img = icon(photocopy.img) @@ -109,8 +111,9 @@ p.pixel_x = rand(-10, 10) p.pixel_y = rand(-10, 10) p.blueprints = photocopy.blueprints //a copy of a picture is still good enough for the syndicate - + busy = 1 sleep(15) + busy = 0 else break else if(ass) //ASS COPY. By Miauw @@ -118,7 +121,7 @@ var/icon/temp_img if(ishuman(ass) && (ass.get_item_by_slot(slot_w_uniform) || ass.get_item_by_slot(slot_wear_suit))) usr << "You feel kind of silly copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "their"] clothes on." - else if(toner >= 5 && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on. + else if(toner >= 5 && !busy && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on. if(isalien(ass) || istype(ass,/mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. temp_img = icon("icons/ass/assalien.png") else if(ishuman(ass)) //Suit checks are in check_ass @@ -141,7 +144,9 @@ ic.Blend(small_img,ICON_OVERLAY, 10, 13) p.icon = ic toner -= 5 + busy = 1 sleep(15) + busy = 0 else break updateUsrDialog() @@ -176,7 +181,7 @@ updateUsrDialog() else if(href_list["aipic"]) if(!istype(usr,/mob/living/silicon/ai)) return - if(toner >= 5) + if(toner >= 5 && !busy) var/list/nametemp = list() var/find var/datum/picture/selection @@ -201,7 +206,9 @@ p.pixel_x = rand(-10, 10) p.pixel_y = rand(-10, 10) toner -= 5 //AI prints color pictures only, thus they can do it more efficiently + busy = 1 sleep(15) + busy = 0 updateUsrDialog() else if(href_list["colortoggle"]) if(greytoggle == "Greyscale") From 6d5396a045780ecb2278cebd6151e5aadd7cdfb4 Mon Sep 17 00:00:00 2001 From: Incoming Date: Mon, 16 Dec 2013 20:17:53 -0500 Subject: [PATCH 186/315] Removes the staff of animation from summon magic. I never intended for it to be there and it's OP as hell. --- code/game/gamemodes/wizard/rightandwrong.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index 891a2dbff7c..41e57b8cf83 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -20,7 +20,7 @@ H << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ var/randomizeguns = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") - var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffanimation", "staffhealing", "armor", "scrying") + var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying") if(!summon_type) switch (randomizeguns) if("taser") @@ -96,8 +96,6 @@ new /obj/item/weapon/gun/magic/wand/door(get_turf(H)) if("staffchange") new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) - if("staffanimation") - new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) if("staffhealing") new /obj/item/weapon/gun/magic/staff/healing(get_turf(H)) if("armor") From 1e4ef796fd8a15b2d9890819d1b244a49a882b3d Mon Sep 17 00:00:00 2001 From: Incoming Date: Mon, 16 Dec 2013 23:29:58 -0500 Subject: [PATCH 187/315] Feature: Adds summon guns and summon magic as fun secrets for badmins Bugfix: Prevents people from becoming the survivor multiple times --- code/game/gamemodes/wizard/rightandwrong.dm | 2 +- code/modules/admin/admin.dm | 2 ++ code/modules/admin/topic.dm | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index 41e57b8cf83..749be160e85 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -7,7 +7,7 @@ if(H.stat == 2 || !(H.client)) continue if(H.mind) if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice") continue - if(prob(25)) + if(prob(25) && !(H.mind in ticker.mode.traitors)) ticker.mode.traitors += H.mind H.mind.special_role = "traitor" var/datum/objective/survive/survive = new diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 1f26ad0e918..0e571da6bbd 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -464,6 +464,8 @@ var/global/floorIsLava = 0
    Power all SMES
    Triple AI mode (needs to be used in the lobby)
    Everyone is the traitor
    + Summon Guns
    + Summon Magic
    There can only be one!
    Make all players retarded
    Egalitarian Station Mode
    diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index ffba4b4b691..4da07ab731c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1853,6 +1853,14 @@ message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") command_alert("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.") world << sound('sound/AI/commandreport.ogg') + if("guns") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SG") + usr.rightandwrong(0) + if("magic") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SM") + usr.rightandwrong(1) if("dorf") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","DF") From b68eadfb1474056558a24f4dff1c5f27cba6e475 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 16 Dec 2013 23:56:49 -0600 Subject: [PATCH 188/315] Nuke Op Tweaks In response to feedback: Dark Gygax no longer has the scattershot. Instead, it has a modestly powerful carbine loaded with incendiary rounds, solidifying its role as a hit-and-run and squad-support platform. The Mauler now has the scattershot in addition to its existing arsenal, to give it that edge against crowds that you'll need at those higher populations. Included with the new mecha weapon is a minor code refactoring of mech guns... There shouldn't be any noticable changes to the user. mech code is awful, guys New sound effect for mecha launchers (Having the same sound effect for projectile launching and exploding drove me nuts.). Nuke op flamethrowers now start with a full tank. --- code/game/mecha/combat/gygax.dm | 3 +- code/game/mecha/combat/marauder.dm | 10 +- code/game/mecha/equipment/weapons/weapons.dm | 201 ++++++++++-------- .../objects/items/weapons/flamethrower.dm | 2 +- .../objects/items/weapons/tanks/tank_types.dm | 11 +- .../modules/projectiles/projectile/bullets.dm | 14 +- icons/mecha/mecha_equipment.dmi | Bin 19089 -> 15634 bytes sound/weapons/grenadelaunch.ogg | Bin 0 -> 9251 bytes 8 files changed, 138 insertions(+), 103 deletions(-) create mode 100644 sound/weapons/grenadelaunch.ogg diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 3d546e565bc..a508c8ae542 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -24,13 +24,14 @@ damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8) max_temperature = 35000 overload_coeff = 1 + operation_req_access = list(access_syndicate) wreckage = /obj/structure/mecha_wreckage/gygax/dark max_equip = 4 step_energy_drain = 5 /obj/mecha/combat/gygax/dark/loaded/New() ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang ME.attach(src) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index b5a98f711ac..5518155bb44 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -42,9 +42,11 @@ /obj/mecha/combat/marauder/mauler/loaded/New() ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src) ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) ME.attach(src) @@ -56,9 +58,9 @@ /obj/mecha/combat/marauder/loaded/New() ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse(src) ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) ME.attach(src) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9e925a7c83c..12dd7f62baa 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -5,38 +5,40 @@ var/projectile var/fire_sound - /obj/item/mecha_parts/mecha_equipment/weapon/can_attach(var/obj/mecha/combat/M as obj) if(..()) if(istype(M)) return 1 return 0 +/obj/item/mecha_parts/mecha_equipment/weapon/action(atom/target) + if(!action_checks(target)) return 0 + set_ready_state(0) + var/turf/curloc = chassis.loc + var/atom/targloc = get_turf(target) + if (!targloc || !istype(targloc, /turf) || !curloc) + return + if (targloc == curloc) + return + playsound(chassis, fire_sound, 50, 1) + var/obj/item/projectile/A = new projectile(curloc) + A.firer = chassis.occupant + A.original = target + A.current = curloc + A.yo = targloc.y - curloc.y + A.xo = targloc.x - curloc.x + A.process() + chassis.log_message("Fired from [src.name], targeting [target].") + do_after_cooldown() + return 1 +//Base energy weapon type /obj/item/mecha_parts/mecha_equipment/weapon/energy name = "general energy weapon" - action(target) - if(!action_checks(target)) return - var/turf/curloc = chassis.loc - var/atom/targloc = get_turf(target) - if (!targloc || !istype(targloc, /turf) || !curloc) - return - if (targloc == curloc) - return - set_ready_state(0) - playsound(chassis, fire_sound, 50, 1) - var/obj/item/projectile/A = new projectile(curloc) - A.firer = chassis.occupant - A.original = target - A.current = curloc - A.yo = targloc.y - curloc.y - A.xo = targloc.x - curloc.x - chassis.use_power(energy_drain) - A.process() - chassis.log_message("Fired from [src.name], targeting [target].") - do_after_cooldown() - return +/obj/item/mecha_parts/mecha_equipment/weapon/energy/action(atom/target) + ..() + chassis.use_power(energy_drain) /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser @@ -113,86 +115,101 @@ construction_time = 500 construction_cost = list("metal"=20000,"bananium"=10000) - can_attach(obj/mecha/combat/honker/M as obj) - if(..()) - if(istype(M)) - return 1 - return 0 +/obj/item/mecha_parts/mecha_equipment/weapon/honker/can_attach(obj/mecha/combat/honker/M as obj) + if(..()) + if(istype(M)) + return 1 + return 0 - action(target) - if(!chassis) - return 0 - if(energy_drain && chassis.get_charge() < energy_drain) - return 0 - if(!equip_ready) - return 0 +/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(target) + if(!action_checks(target)) return 0 + set_ready_state(0) + playsound(chassis, 'sound/items/AirHorn.ogg', 100, 1) + chassis.occupant_message("HONK") + for(var/mob/living/carbon/M in ohearers(6, chassis)) + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) + continue + M << "HONK" + M.sleeping = 0 + M.stuttering += 20 + M.ear_deaf += 30 + M.Weaken(3) + if(prob(30)) + M.Stun(10) + M.Paralyse(4) + else + M.make_jittery(500) + /* //else the mousetraps are useless + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(isobj(H.shoes)) + var/thingy = H.shoes + H.drop_from_inventory(H.shoes) + walk_away(thingy,chassis,15,2) + spawn(20) + if(thingy) + walk(thingy,0) + */ + chassis.use_power(energy_drain) + log_message("Honked from [src.name]. HONK!") + var/turf/T = get_turf(src) + message_admins("[key_name(chassis.occupant, chassis.occupant.client)](?) used a Mecha Honker in ([T.x],[T.y],[T.z] - JMP)",0,1) + log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in ([T.x],[T.y],[T.z])") + do_after_cooldown() + return - playsound(chassis, 'sound/items/AirHorn.ogg', 100, 1) - chassis.occupant_message("HONK") - for(var/mob/living/carbon/M in ohearers(6, chassis)) - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) - continue - M << "HONK" - M.sleeping = 0 - M.stuttering += 20 - M.ear_deaf += 30 - M.Weaken(3) - if(prob(30)) - M.Stun(10) - M.Paralyse(4) - else - M.make_jittery(500) - /* //else the mousetraps are useless - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(isobj(H.shoes)) - var/thingy = H.shoes - H.drop_from_inventory(H.shoes) - walk_away(thingy,chassis,15,2) - spawn(20) - if(thingy) - walk(thingy,0) - */ - chassis.use_power(energy_drain) - log_message("Honked from [src.name]. HONK!") - var/turf/T = get_turf(src) - message_admins("[key_name(chassis.occupant, chassis.occupant.client)](?) used a Mecha Honker in ([T.x],[T.y],[T.z] - JMP)",0,1) - log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in ([T.x],[T.y],[T.z])") - do_after_cooldown() - return +//Base ballistic weapon type /obj/item/mecha_parts/mecha_equipment/weapon/ballistic name = "general ballisic weapon" + fire_sound = 'sound/weapons/Gunshot.ogg' var/projectiles var/projectile_energy_cost - action_checks(atom/target) - if(..()) - if(projectiles > 0) - return 1 +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action_checks(target) + if(!..()) return 0 + if(projectiles <= 0) + return 0 + if(!equip_ready) + return 0 + return 1 - get_equip_info() - return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() + return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" - proc/rearm() - if(projectiles < initial(projectiles)) - var/projectiles_to_add = initial(projectiles) - projectiles - while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add) - projectiles++ - projectiles_to_add-- - chassis.use_power(projectile_energy_cost) +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/proc/rearm() + if(projectiles < initial(projectiles)) + var/projectiles_to_add = initial(projectiles) - projectiles + while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add) + projectiles++ + projectiles_to_add-- + chassis.use_power(projectile_energy_cost) + send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + log_message("Rearmed [src.name].") + return + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/Topic(href, href_list) + ..() + if (href_list["rearm"]) + src.rearm() + return + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(atom/target) + if(..()) + src.projectiles-- send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) - log_message("Rearmed [src.name].") - return - Topic(href, href_list) - ..() - if (href_list["rearm"]) - src.rearm() - return + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine + name = "\improper FNX-66 Carbine" + icon_state = "mecha_carbine" + equip_cooldown = 5 + projectile = /obj/item/projectile/bullet/incendiary + projectiles = 24 + projectile_energy_cost = 15 /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot @@ -200,7 +217,6 @@ icon_state = "mecha_scatter" equip_cooldown = 20 projectile = /obj/item/projectile/bullet/midbullet - fire_sound = 'sound/weapons/Gunshot.ogg' projectiles = 40 projectile_energy_cost = 25 var/projectiles_per_shot = 4 @@ -242,7 +258,6 @@ icon_state = "mecha_uac2" equip_cooldown = 10 projectile = /obj/item/projectile/bullet/weakbullet - fire_sound = 'sound/weapons/Gunshot.ogg' projectiles = 300 projectile_energy_cost = 20 var/projectiles_per_shot = 3 @@ -285,7 +300,7 @@ name = "\improper SRM-8 missile rack" icon_state = "mecha_missilerack" projectile = /obj/item/missile - fire_sound = 'sound/effects/bang.ogg' + fire_sound = 'sound/weapons/grenadelaunch.ogg' projectiles = 8 projectile_energy_cost = 1000 equip_cooldown = 60 @@ -326,7 +341,7 @@ name = "\improper SGL-6 grenade launcher" icon_state = "mecha_grenadelnchr" projectile = /obj/item/weapon/grenade/flashbang - fire_sound = 'sound/effects/bang.ogg' + fire_sound = 'sound/weapons/grenadelaunch.ogg' projectiles = 6 missile_speed = 1.5 projectile_energy_cost = 800 diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 8834e72d5e2..b992c01a7d3 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -206,5 +206,5 @@ /obj/item/weapon/flamethrower/full/tank/New(var/loc) ..() - ptank = new /obj/item/weapon/tank/plasma(src) + ptank = new /obj/item/weapon/tank/plasma/full(src) update_icon() \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index be71eee671e..f84e6c8ab3b 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -52,10 +52,10 @@ /obj/item/weapon/tank/anesthetic/New() ..() - src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD + src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD var/datum/gas/sleeping_agent/trace_gas = new() - trace_gas.moles = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD + trace_gas.moles = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD src.air_contents.trace_gases += trace_gas return @@ -98,7 +98,7 @@ /obj/item/weapon/tank/plasma/New() ..() - src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) + src.air_contents.toxins = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) return /obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -113,6 +113,11 @@ src.loc = F return +/obj/item/weapon/tank/plasma/full/New() + ..() + src.air_contents.toxins = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + /* * Emergency Oxygen */ diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 154802a6e2d..6f77ab21716 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -18,6 +18,7 @@ stun = 5 weaken = 5 + /obj/item/projectile/bullet/midbullet2 damage = 25 @@ -26,7 +27,6 @@ damage = 30 - /obj/item/projectile/bullet/suffocationbullet//How does this even work? name = "co bullet" damage = 20 @@ -51,10 +51,22 @@ weaken = 10 stutter = 10 + /obj/item/projectile/bullet/a762 damage = 25 +/obj/item/projectile/bullet/incendiary + name = "incendiary bullet" + damage = 20 + +/obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0) + if(istype(target, /mob/living/carbon)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(1) + M.IgniteMob() + + /obj/item/projectile/bullet/dart name = "dart" icon_state = "cbbolt" diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 23e826159eb5b6ec49009977a5fc819b1d660beb..eff4e89d33153774dd07b78074088c633a5a0320 100644 GIT binary patch literal 15634 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 literal 19089 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Π&0vsla;e65bTq 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 D-qJy( literal 0 HcmV?d00001 From 627b5d046d5e8211a18cc8ac7eca8cccf66ac706 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Tue, 17 Dec 2013 13:31:23 -0300 Subject: [PATCH 189/315] Fixed some runtimes regarding the datum of the objecting being built being deleted while being constructed. --- code/modules/research/rdconsole.dm | 119 +++++++++++++++-------------- 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index cb1bd68ca44..66ac3c35299 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -342,49 +342,52 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_lathe.busy = 1 flick("protolathe_n",linked_lathe) var/key = usr.key //so we don't lose the info during the spawn delay - spawn(16) - use_power(power) - spawn(16) - for(var/M in being_built.materials) - if(!check_mat(being_built, M)) - src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") - g2g = 0 - break - switch(M) - if("$metal") - linked_lathe.m_amount = max(0, (linked_lathe.m_amount-being_built.materials[M])) - if("$glass") - linked_lathe.g_amount = max(0, (linked_lathe.g_amount-being_built.materials[M])) - if("$gold") - linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-being_built.materials[M])) - if("$silver") - linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-being_built.materials[M])) - if("$plasma") - linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-being_built.materials[M])) - if("$uranium") - linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M])) - if("$diamond") - linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M])) - if("$clown") - linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M])) - else - linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) + use_power(power) - if(being_built.build_path && g2g) - var/obj/new_item = new being_built.build_path(src) - if( new_item.type == /obj/item/weapon/storage/backpack/holding ) - new_item.investigate_log("built by [key]","singulo") - new_item.reliability = being_built.reliability - if(linked_lathe.hacked) being_built.reliability = max((reliability / 2), 0) - if(being_built.locked) - var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) - new_item.loc = L - L.name += " ([new_item.name])" - else - new_item.loc = linked_lathe.loc - linked_lathe.busy = 0 - screen = 3.1 - updateUsrDialog() + for(var/M in being_built.materials) + if(!check_mat(being_built, M)) + src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") + g2g = 0 + break + switch(M) + if("$metal") + linked_lathe.m_amount = max(0, (linked_lathe.m_amount-being_built.materials[M])) + if("$glass") + linked_lathe.g_amount = max(0, (linked_lathe.g_amount-being_built.materials[M])) + if("$gold") + linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-being_built.materials[M])) + if("$silver") + linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-being_built.materials[M])) + if("$plasma") + linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-being_built.materials[M])) + if("$uranium") + linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M])) + if("$diamond") + linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M])) + if("$clown") + linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M])) + else + linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) + + var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. + var/R = being_built.reliability + var/O = being_built.locked + spawn(32) + if(g2g) + var/obj/new_item = new P(src) + if( new_item.type == /obj/item/weapon/storage/backpack/holding ) + new_item.investigate_log("built by [key]","singulo") + new_item.reliability = R + if(linked_lathe.hacked) R = max((reliability / 2), 0) + if(O) + var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) + new_item.loc = L + L.name += " ([new_item.name])" + else + new_item.loc = linked_lathe.loc + linked_lathe.busy = 0 + screen = 3.1 + updateUsrDialog() else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something. if(linked_imprinter) @@ -401,21 +404,25 @@ won't update every console in existence) but it's more of a hassle to do. Also, screen = 0.4 linked_imprinter.busy = 1 flick("circuit_imprinter_ani",linked_imprinter) + use_power(power) + + for(var/M in being_built.materials) + switch(M) + if("$glass") + linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M])) + if("$gold") + linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M])) + if("$diamond") + linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M])) + else + linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]) + + var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. + var/R = being_built.reliability spawn(16) - use_power(power) - for(var/M in being_built.materials) - switch(M) - if("$glass") - linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M])) - if("$gold") - linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M])) - if("$diamond") - linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M])) - else - linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]) - var/obj/new_item = new being_built.build_path(src) - new_item.reliability = being_built.reliability - if(linked_imprinter.hacked) being_built.reliability = max((reliability / 2), 0) + var/obj/new_item = new P(src) + new_item.reliability = R + if(linked_imprinter.hacked) R = max((reliability / 2), 0) new_item.loc = linked_imprinter.loc linked_imprinter.busy = 0 screen = 4.1 From a5c4e99392cade88907ca7d8906bd003eb89f1c4 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Tue, 17 Dec 2013 15:42:59 -0300 Subject: [PATCH 190/315] Fixed some runtimes and bugs regarding mob transformations and changelings. Now only monkeys and humans will have the changeling verbs when they change bodies. Brains, slimes and aliens won't. --- code/game/gamemodes/changeling/changeling_powers.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index c909f9ec6bc..db8c3e0c16c 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -2,7 +2,7 @@ /mob/proc/make_changeling() if(!mind) return if(!mind.changeling) mind.changeling = new /datum/changeling(gender) - if(!iscarbon(src)) return + if(!ishuman(src) && !ismonkey(src)) return verbs += /datum/changeling/proc/EvolutionMenu @@ -29,7 +29,8 @@ //removes our changeling verbs /mob/proc/remove_changeling_powers() var/mob/living/carbon/C = src - C.unset_sting() + if(ishuman(C) || ismonkey(C)) + C.unset_sting() for(var/datum/power/changeling/P in powerinstances) if(P.isVerb) verbs -= P.verbpath From 358a85eb3db8a71f7bd4d553b43cbdac23d5de80 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 17 Dec 2013 22:56:04 +0400 Subject: [PATCH 191/315] Completed the transition to a new proc All the logging i have found in the code was changed to use the proc(maybe i missed something) Killed all runtimes found so far Proc now handles all the checks, no need to add checks in the body of object --- code/__HELPERS/mobs.dm | 18 ++++++++++-------- code/datums/wires/airlock.dm | 4 ++-- code/game/gamemodes/cult/ritual.dm | 7 +------ code/game/gamemodes/wizard/soulstone.dm | 6 +----- code/game/machinery/bots/bots.dm | 2 +- code/game/machinery/doors/airlock.dm | 4 ++-- code/game/machinery/kitchen/gibber.dm | 4 +--- code/game/machinery/turrets.dm | 2 +- code/game/mecha/combat/combat.dm | 4 +--- .../mecha/equipment/tools/medical_tools.dm | 11 ++--------- code/game/mecha/equipment/tools/tools.dm | 12 +++--------- code/game/mecha/equipment/weapons/weapons.dm | 8 +------- code/game/mecha/mecha.dm | 4 ++-- code/game/objects/items.dm | 7 ++----- code/game/objects/items/devices/aicard.dm | 6 +----- code/game/objects/items/devices/flash.dm | 5 +---- code/game/objects/items/devices/flashlight.dm | 4 +--- .../game/objects/items/devices/laserpointer.dm | 13 +++---------- .../objects/items/devices/traitordevices.dm | 2 +- code/game/objects/items/robot/robot_items.dm | 4 ---- .../game/objects/items/weapons/dna_injector.dm | 9 ++------- code/game/objects/items/weapons/explosives.dm | 5 ++--- code/game/objects/items/weapons/handcuffs.dm | 5 +---- .../items/weapons/implants/implanter.dm | 5 +---- code/game/objects/items/weapons/kitchen.dm | 10 ++-------- code/game/objects/items/weapons/melee/misc.dm | 5 +---- .../objects/items/weapons/storage/bible.dm | 6 +----- .../objects/items/weapons/storage/briefcase.dm | 6 +----- code/game/objects/items/weapons/stunbaton.dm | 4 +--- code/modules/hydroponics/hydroitemcode.dm | 5 +---- .../mob/living/carbon/alien/larva/larva.dm | 3 +-- code/modules/mob/living/carbon/carbon.dm | 3 +-- code/modules/mob/living/carbon/human/human.dm | 3 +-- .../mob/living/carbon/metroid/metroid.dm | 3 +-- .../modules/mob/living/carbon/monkey/monkey.dm | 3 +-- code/modules/mob/living/living_defense.dm | 4 +--- code/modules/mob/living/silicon/ai/ai.dm | 3 +-- code/modules/mob/living/silicon/robot/robot.dm | 3 +-- .../mob/living/simple_animal/constructs.dm | 3 +-- .../mob/living/simple_animal/simple_animal.dm | 3 +-- code/modules/mob/mob_grab.dm | 8 ++------ code/modules/paperwork/pen.dm | 5 +---- code/modules/projectiles/projectile.dm | 9 +-------- .../reagents/reagent_containers/dropper.dm | 4 +--- .../reagent_containers/food/condiment.dm | 7 +------ .../reagents/reagent_containers/food/drinks.dm | 12 +++--------- .../reagent_containers/food/drinks/bottle.dm | 4 +--- .../reagents/reagent_containers/food/snacks.dm | 9 ++------- .../reagents/reagent_containers/glass.dm | 4 +--- .../reagents/reagent_containers/hypospray.dm | 5 +---- .../reagents/reagent_containers/pill.dm | 7 +------ .../reagents/reagent_containers/syringes.dm | 5 +---- code/modules/recycling/sortingmachinery.dm | 1 - code/modules/surgery/brain_removal.dm | 4 +--- code/modules/surgery/helpers.dm | 4 +--- code/modules/surgery/limb augmentation.dm | 4 +--- 56 files changed, 79 insertions(+), 231 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index d684c524397..b5fab892896 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -74,13 +74,15 @@ Proc for attack log creation, because really why not 1 argument is the actor 2 argument is the target of action 3 is the description of action(like punched, throwed, or any other verb) -4 is the tool with which the action was made(usually item) -5 is additional information, anything that needs to be added +4 should it make adminlog note or not +5 is the tool with which the action was made(usually item) 5 and 6 are very similar(5 have "by " before it, that it) and are separated just to keep things in a bit more in order +6 is additional information, anything that needs to be added */ -proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=null) - if(ismob(user)) - user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target.name][ismob(target) ? "([target.ckey])" : ""][object ? " with [object]" : " "][addition]") - if(ismob(target)) - target.attack_log += text("\[[time_stamp()]\] Has been [what_done] by [user.name][ismob(user) ? "([user.ckey])" : ""][object ? " with [object]" : " "][addition]") - log_attack("[user.name][ismob(user) ? "([user.ckey])" : ""] [what_done] [target.name][ismob(target) ? "([target.ckey])" : ""][object ? " with [object]" : " "][addition]") \ No newline at end of file +proc/add_logs(mob/user, mob/target, what_done, var/admin=1, var/object=null, var/addition=null) + if(user && ismob(user)) + user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target ? "[target.name][target.ckey ? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") + if(target && ismob(target)) + target.attack_log += text("\[[time_stamp()]\] Has been [what_done] by [user ? "[user.name][user.ckey ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") + if(admin) + log_attack("[user ? "[user.name][(ismob(user) && user.ckey) ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"] [what_done] [target ? "[target.name][(ismob(target) && target.ckey)? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") \ No newline at end of file diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index bfb29aaa342..f8863b0569b 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -97,7 +97,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 //Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. if(A.secondsElectrified != -1) A.shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - usr.attack_log += text("\[[time_stamp()]\] Electrified the [A.name] at [A.x] [A.y] [A.z]") + add_logs(usr, A, "electrified", admin=0, addition="at [A.x],[A.y],[A.z]") A.secondsElectrified = -1 else if(A.secondsElectrified == -1) @@ -163,7 +163,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 //one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. if(A.secondsElectrified==0) A.shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - usr.attack_log += text("\[[time_stamp()]\] Electrified the [A.name] at [A.x] [A.y] [A.z]") + add_logs(usr, A, "electrified", admin=0, addition="at [A.x],[A.y],[A.z]") A.secondsElectrified = 30 spawn(10) if(A) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 12df5237a1f..31b7ea0c884 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -460,12 +460,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", // usr << browse(null, "window=tank") attack(mob/living/M as mob, mob/living/user as mob) - M.attack_log += text("\[[time_stamp()]\] Has had the [name] used on him by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used [name] on [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used [name] on [M.name] ([M.ckey])") - - + add_logs(user, M, "smacked", object=src) if(istype(M,/mob/dead)) M.invisibility = 0 user.visible_message( \ diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index c91452b7992..5db247ee458 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -18,11 +18,7 @@ return ..() if(istype(M, /mob/living/carbon/human/dummy)) return..() - M.attack_log += text("\[[time_stamp()]\] Has had their soul captured with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to capture the soul of [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to capture the soul of [M.name] ([M.ckey])") - + add_logs(user, M, "captured [M.name]'s soul", object=src) transfer_soul("VICTIM", M, user) return diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 8ef8c76f62c..1d752a03258 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -64,7 +64,7 @@ if(M.melee_damage_upper == 0) return src.health -= M.melee_damage_upper src.visible_message("\red [M] has [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + add_logs(M, src, "attacked", admin=0) if(prob(10)) new /obj/effect/decal/cleanable/oil(src.loc) healthcheck() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 28bd134663f..65565f86b73 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -764,7 +764,7 @@ About the new airlock wires panel: usr << text("The door is already electrified. You can't re-electrify it while it's already electrified.
    \n") else shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - usr.attack_log += text("\[[time_stamp()]\] Electrified the [name] at [x] [y] [z]") + add_logs(usr, src, "electrified", admin=0, addition="at [x],[y],[z]") src.secondsElectrified = 30 spawn(10) while (src.secondsElectrified>0) @@ -783,7 +783,7 @@ About the new airlock wires panel: usr << text("The door is already electrified. You can't re-electrify it while it's already electrified.
    \n") else shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - usr.attack_log += text("\[[time_stamp()]\] Electrified the [name] at [x] [y] [z]") + add_logs(usr, src, "electrified", admin=0, addition="at [x],[y],[z]") src.secondsElectrified = -1 if (8) // Not in order >.> diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 0e6306bc13a..da354f5261e 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -153,9 +153,7 @@ src.occupant.reagents.trans_to (newmeat, round (sourcetotalreagents / totalslabs, 1)) // Transfer all the reagents from the allmeat[i] = newmeat - src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed! - user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [src.occupant]/[src.occupant.ckey]") + add_logs(user, occupant, "gibbed") src.occupant.death(1) src.occupant.ghostize() del(src.occupant) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 39da02b0e1d..0ebb0332c89 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -408,7 +408,7 @@ if(M.melee_damage_upper == 0) return if(!(stat & BROKEN)) visible_message("\red [M] [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + add_logs(M, src, "attacked", admin=0) //src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") src.health -= M.melee_damage_upper if (src.health <= 0) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 47a9dceb58f..8bc32a61042 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -79,9 +79,7 @@ M.updatehealth() src.occupant_message("You hit [target].") src.visible_message("[src.name] hits [target].") - occupant.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - M.attack_log += "\[[time_stamp()]\] Attacked by [occupant.name] ([occupant.ckey]) with [name] (INTENT: [uppertext(occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - log_attack("[occupant.name] ([occupant.ckey]) attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(occupant.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" ) + add_logs(occupant, M, "attacked", object=src, addition="(INTENT: [uppertext(occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") else step_away(M,src) src.occupant_message("You push [target] out of the way.") diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 596286850fc..26b63577644 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -195,9 +195,7 @@ if(to_inject && occupant.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2) occupant_message("Injecting [occupant] with [to_inject] units of [R.name].") log_message("Injecting [occupant] with [to_inject] units of [R.name].") - occupant.attack_log += "\[[time_stamp()]\] Has been injected with [name] ([R] - [to_inject] units) by [chassis.occupant.name] ([chassis.occupant.ckey])" - chassis.occupant.attack_log += "\[[time_stamp()]\] Used the [name] ([R] - [to_inject] units) to inject [occupant.name] ([occupant.ckey])" - log_attack("[chassis.occupant.name] ([chassis.occupant.ckey]) used the [name] ([R] - [to_inject] units) to inject [occupant.name] ([occupant.ckey])") + add_logs(chassis.occupant, occupant, "injected", object="[name] ([R] - [to_inject] units)") SG.reagents.trans_id_to(occupant,R.id,to_inject) update_equip_info() return @@ -468,8 +466,6 @@ S.icon_state = "syringeproj" playsound(chassis, 'sound/items/syringeproj.ogg', 50, 1) log_message("Launched [S] from [src], targeting [target].") - var/O = "[chassis.occupant]" - var/C = "[chassis.occupant.ckey]" var/mob/originaloccupant = chassis.occupant spawn(-1) src = null //if src is deleted, still process the syringe @@ -492,10 +488,7 @@ S.reagents.trans_to(M, S.reagents.total_volume) M.take_organ_damage(2) S.visible_message(" [M] was hit by the syringe!") - M.attack_log += "\[[time_stamp()]\] [O]/[C] shot [M]/[M.ckey] with a syringegun ([R])" - if(originaloccupant) - originaloccupant.attack_log += "\[[time_stamp()]\] [originaloccupant]/[originaloccupant.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("[O] ([C]) shot [M] ([M.ckey]) with a syringegun ([R])") + add_logs(originaloccupant, M, "shot", object="syringegun") break else if(S.loc == trg) S.icon_state = initial(S.icon_state) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 2e473dfbc92..45af1887d34 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -54,9 +54,7 @@ M.updatehealth() occupant_message("\red You squeeze [target] with [src.name]. Something cracks.") chassis.visible_message("\red [chassis] squeezes [target].") - chassis.occupant.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - M.attack_log += "\[[time_stamp()]\] Attacked by [chassis.occupant.name] ([chassis.occupant.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - log_attack("[chassis.occupant.name] ([chassis.occupant.ckey]) attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" ) + add_logs(chassis.occupant, M, "attacked", object="[name]", addition="(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") else step_away(M,chassis) occupant_message("You push [target] out of the way.") @@ -115,9 +113,7 @@ log_message("Drilled through [target]") if(ismob(target)) var/mob/M = target - chassis.occupant.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - M.attack_log += "\[[time_stamp()]\] Attacked by [chassis.occupant.name] ([chassis.occupant.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - log_attack("[chassis.occupant.name] ([chassis.occupant.ckey]) attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" ) + add_logs(chassis.occupant, M, "attacked", object="[name]", addition="(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") target.ex_act(2) return 1 @@ -177,9 +173,7 @@ log_message("Drilled through [target]") if(ismob(target)) var/mob/M = target - chassis.occupant.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - M.attack_log += "\[[time_stamp()]\] Attacked by [chassis.occupant.name] ([chassis.occupant.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])" - log_attack("[chassis.occupant.name] ([chassis.occupant.ckey]) attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" ) + add_logs(chassis.occupant, M, "attacked", object="[name]", addition="(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") target.ex_act(2) return 1 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9e925a7c83c..7f11042aff4 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -84,13 +84,7 @@ src.life -= 10 if(ismob(A)) var/mob/M = A - if(istype(firer, /mob)) - M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") + add_logs(firer, M, "shot", object="[src]") if(life <= 0) del(src) return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 384b5731552..770d34972c6 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -458,13 +458,13 @@ src.take_damage(damage) src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) visible_message("\red [user] [user.attacktext] [src]!") - user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + add_logs(user, src, "attacked", admin=0) else src.log_append_to_last("Armor saved.") playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1) src.occupant_message("\blue The [user]'s attack is stopped by the armor.") visible_message("\blue The [user] rebounds off [src.name]'s armor!") - user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + add_logs(user, src, "attacked", admin=0) return /obj/mecha/attack_tk() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index cbc47d65df8..0d161121de8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -195,7 +195,7 @@ rejections += I.type // therefore full bags are still a little spammy failure = 1 continue - + success = 1 S.handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. if(success && !failure) @@ -488,10 +488,7 @@ user << "\red You cannot locate any eyes on this creature!" return - user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - - log_attack(" [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + add_logs(user, M, "attacked", object="[src.name]", addition="(INTENT: [uppertext(user.a_intent)])") src.add_fingerprint(user) //if((CLUMSY in user.mutations) && prob(50)) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 9da2de88f06..abc5d6b2fdd 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -14,11 +14,7 @@ if(!istype(M, /mob/living/silicon/ai))//If target is not an AI. return ..() - M.attack_log += text("\[[time_stamp()]\] Has been carded with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to card [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to card [M.name] ([M.ckey])") - + add_logs(user, M, "carded", object="[src.name]") transfer_ai("AICORE", "AICARD", M, user) return diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 6fe599cdc4c..5fa3f153db6 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -40,11 +40,8 @@ /obj/item/device/flash/attack(mob/living/M, mob/user) if(!user || !M) return //sanity - M.attack_log += text("\[[time_stamp()]\] Has been flashed (attempt) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to flash [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) Used the [src.name] to flash [M.name] ([M.ckey])") + add_logs(user, M, "flashed", object="[src.name]") if(!clown_check(user)) return if(broken) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 732541f6d3d..9bb8d49df9e 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -235,9 +235,7 @@ "[user] blinks \the [src] at \the [A].") if(ismob(A)) var/mob/M = A - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] attacked [M]/[M.ckey] with an EMP-light" - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] attacked [M]/[M.ckey] with an EMP-light" - log_attack("[user] ([user.ckey]) attacked [M] ([M.ckey]) with an EMP-light") + add_logs(user, M, "attacked", object="EMP-light") emp_charges -= 1 else user << "The [src] is out of charges!" diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index bb327ce0160..061feddbdce 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -73,9 +73,7 @@ //20% chance to actually hit the eyes if(prob(20)) - C.attack_log += text("\[[time_stamp()]\] Has had a laser pointer shone in their eyes by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Shone a laser pointer in the eyes of [C.name] ([C.ckey])") - log_attack("[user.name] ([user.ckey]) Shone a laser pointer in the eyes of [C.name] ([C.ckey])") + add_logs(user, C, "shone in the eyes", object="laser pointer") //eye target check outmsg = "You blind [C] by shining [src] in their eyes." @@ -127,10 +125,7 @@ S.Weaken(rand(5,10)) S << "Your sensors were overloaded by a laser!" outmsg = "You overload [S] by shining [src] at their sensors." - - S.attack_log += text("\[[time_stamp()]\] Has had a laser pointer shone in their eyes by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Shone a laser pointer in the eyes of [S.name] ([S.ckey])") - log_attack("[user.name] ([user.ckey]) Shone a laser pointer in the eyes of [S.name] ([S.ckey])") + add_logs(user, S, "shone in the sensors", object="laser pointer") else outmsg = "You fail to overload [S] by shining [src] at their sensors." @@ -140,9 +135,7 @@ if(prob(20)) C.emp_act(1) outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!" - - log_admin("\[[time_stamp()]\] [user.name] ([user.ckey]) EMPd a camera with a laser pointer") - user.attack_log += text("\[[time_stamp()]\] [user.name] ([user.ckey]) EMPd a camera with a laser pointer") + add_logs(user, C, "EMPed", object="laser pointer") else outmsg = "You missed the lens of [C] with [src]." diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 9cb58f01c7e..62eb994bfd4 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -36,7 +36,7 @@ effective or pretty fucking useless. user << "\red The mind batterer has been burnt out!" return - user.attack_log += text("\[[time_stamp()]\] Used [src] to knock down people in the area.") + add_logs(user, null, "knocked down people in the area", admin=0, object="[src]") for(var/mob/living/carbon/human/M in orange(10, user)) spawn() diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index cb3f99fa4c3..bb3bac188bd 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -10,10 +10,6 @@ icon_state = "shock" attack(mob/M as mob, mob/living/silicon/robot/user as mob) - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack(" [user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])") user.cell.charge -= 30 diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index c0a891ff786..55b4b82d0c0 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -44,10 +44,7 @@ if(!ishuman(user)) user << "You don't have the dexterity to do this!" return - - target.attack_log += "\[[time_stamp()]\] [user.name] ([user.ckey]) attempted to inject with [name]" - user.attack_log += "\[[time_stamp()]\] Used the [name] to attempt to inject [target.name] ([target.ckey])" - log_attack("[user.name] ([user.ckey]) used the [name] to attempt to inject [target.name] ([target.ckey])") + add_logs(user, target, "attempted to inject", object="[name]") if(target != user) target.visible_message("[user] is trying to inject [target] with [src]!", "[user] is trying to inject [target] with [src]!") @@ -58,9 +55,7 @@ else user << "You inject yourself with [src]." - target.attack_log += "\[[time_stamp()]\] Has been injected with [name] by [user.name] ([user.ckey])" - user.attack_log += "\[[time_stamp()]\] Used the [name] to inject [target.name] ([target.ckey])" - log_attack("[user.name] ([user.ckey]) used the [name] to inject [target.name] ([target.ckey])") + add_logs(user, target, "injected", object="[name]") user.drop_item() inject(target, user) //Now we actually do the heavy lifting. diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index bc10c25778e..5531dda9ca1 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -60,8 +60,7 @@ return user << "Planting explosives..." if(ismob(target)) - user.attack_log += "\[[time_stamp()]\] [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])" - log_attack(" [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])") + add_logs(user, target, "tried to plant explosives on", object="[name]") user.visible_message("\red [user.name] is trying to plant some kind of explosive on [target.name]!") @@ -71,7 +70,7 @@ loc = null if (ismob(target)) - target:attack_log += "\[[time_stamp()]\] Had the [name] planted on them by [user.real_name] ([user.ckey])" + add_logs(user, target, "planted [name] on") user.visible_message("\red [user.name] finished planting an explosive on [target.name]!") target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2") diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 82bb759e4dc..bb3761a00e9 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -53,10 +53,7 @@ else feedback_add_details("handcuffs","H") - C.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [C.name] ([C.ckey])") - log_attack("[user.name] ([user.ckey]) Attempted to handcuff [C.name] ([C.ckey])") - + add_logs(user, C, "handcuffed") /obj/item/weapon/handcuffs/cable name = "cable restraints" diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index c625b4c087d..8aba8b023fa 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -26,10 +26,7 @@ if(T && (M == user || do_after(user, 50))) if(user && M && (get_turf(M) == T) && src && imp) M.visible_message("[M] has been implanted by [user].") - M.attack_log += text("\[[time_stamp()]\] Implanted with [name] ([imp.name]) by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [name] ([imp.name]) to implant [M.name] ([M.ckey])") - log_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)])") - + add_logs(user, M, "implanted", object="[name]") user << "You implanted the implant into [M]." if(imp.implanted(M)) imp.loc = M diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 53bec2de81f..0e976b8038c 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -165,10 +165,8 @@ user.take_organ_damage(10) user.Paralyse(2) return - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - log_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])") + add_logs(user, M, "attacked", object="[src.name]") var/t = user:zone_sel.selecting if (t == "head") @@ -249,11 +247,7 @@ if (istype(location, /turf/simulated)) location.add_blood(H) ///Plik plik, the sound of blood - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])") - + add_logs(user, M, "attacked", object="[src.name]") if(prob(15)) M.Weaken(3) diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index a5b8b6dcf55..379e1f319a5 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -39,10 +39,7 @@ else user.take_organ_damage(2 * force) return - - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + add_logs(user, M, "attacked", object="[src.name]") if(user.a_intent == "harm") if(!..()) return diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 944c33382af..b9d760bdf11 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -38,11 +38,7 @@ if(user.mind && (user.mind.assigned_role == "Chaplain")) chaplain = 1 - - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + add_logs(user, M, "attacked", object="[src.name]") if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") user << "\red You don't have the dexterity to do this!" diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index f5dcc2135f0..23b73d51474 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -29,11 +29,7 @@ user.Paralyse(2) return - - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + add_logs(user, M, "attacked", object="[src.name]") if (M.stat < 2 && M.health < 50 && prob(90)) var/mob/H = M diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 65eefe00a51..6e5ee52781b 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -137,9 +137,7 @@ var/mob/living/carbon/human/H = L H.forcesay(hit_appends) - user.attack_log += "\[[time_stamp()]\] Stunned [L.name] ([L.ckey]) with [name]" - L.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [name]" - log_attack("[user.name] ([user.ckey]) stunned [L.name] ([L.ckey]) with [name]" ) + add_logs(user, L, "stunned") /obj/item/weapon/melee/baton/emp_act(severity) if(bcell) diff --git a/code/modules/hydroponics/hydroitemcode.dm b/code/modules/hydroponics/hydroitemcode.dm index 5923ee8af38..8d2093dd126 100644 --- a/code/modules/hydroponics/hydroitemcode.dm +++ b/code/modules/hydroponics/hydroitemcode.dm @@ -70,10 +70,7 @@ if(!..()) return if(istype(M, /mob/living)) M << "\red You are stunned by the powerful acid of the Deathnettle!" - M.attack_log += text("\[[time_stamp()]\] Had the [src.name] used on them by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] on [M.name] ([M.ckey])") - - log_attack(" [user.name] ([user.ckey]) used the [src.name] on [M.name] ([M.ckey])") + add_logs(user, M, "attacked", object="[src.name]") playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 69537b98bbf..f7ca9723844 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -143,8 +143,7 @@ O.show_message("\red [M] [M.attacktext] [src]!", 1) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) updatehealth() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 871f9a7712a..d9e5925f20e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -365,8 +365,7 @@ var/start_T_descriptor = "tile at [start_T.x], [start_T.y], [start_T.z] in area [get_area(start_T)]" var/end_T_descriptor = "tile at [end_T.x], [end_T.y], [end_T.z] in area [get_area(end_T)]" - M.attack_log += text("\[[time_stamp()]\] Has been thrown by [usr.name] ([usr.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]") - usr.attack_log += text("\[[time_stamp()]\] Has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]") + add_logs(usr, M, "thrown", admin=0, addition="from [start_T_descriptor] with the target [end_T_descriptor]") if(!item) return //Grab processing has a chance of returning null diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0125ca4ff44..65d636566f6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -237,8 +237,7 @@ playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone)) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 62c6efc75df..7e967fbf1f9 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -318,8 +318,7 @@ playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) updatehealth() diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index d85711f414d..a37cc7af9a5 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -254,8 +254,7 @@ playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) updatehealth() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 7daac632502..b43fddb1a83 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -71,9 +71,7 @@ var/client/assailant = directory[ckey(O.fingerprintslast)] if(assailant && assailant.mob && istype(assailant.mob,/mob)) var/mob/M = assailant.mob - src.attack_log += text("\[[time_stamp()]\] Has been hit with [O], last touched by [M.name] ([assailant.ckey])") - M.attack_log += text("\[[time_stamp()]\] Hit [src.name] ([src.ckey]) with [O]") - log_attack("[src.name] ([src.ckey]) was hit by [O], last touched by [M.name] ([assailant.ckey])") + add_logs(M, src, "hit", object="[O]") //Mobs on Fire /mob/living/proc/IgniteMob() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 746eeb0b287..eb6292fa4a5 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -438,8 +438,7 @@ var/list/ai_list = list() playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) updatehealth() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index d304938bd40..79d8a321b66 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -719,8 +719,7 @@ playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) updatehealth() diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index af9d801b5a0..47078644b3a 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -99,8 +99,7 @@ playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\The [M] [M.attacktext] \the [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 64d25530f96..9f12a4b03bd 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -246,8 +246,7 @@ playsound(loc, M.attack_sound, 50, 1, 1) for(var/mob/O in viewers(src, null)) O.show_message("\red \The [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") + add_logs(M, src, "attacked", admin=0) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) adjustBruteLoss(damage) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 5ce7ec26399..9107fcd7577 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -134,9 +134,7 @@ icon_state = "grabbed+1" if(!affecting.buckled) affecting.loc = assailant.loc - affecting.attack_log += "\[[time_stamp()]\] Has had their neck grabbed by [assailant.name] ([assailant.ckey])" - assailant.attack_log += "\[[time_stamp()]\] Grabbed the neck of [affecting.name] ([affecting.ckey])" - log_attack("[assailant.name] ([assailant.ckey]) grabbed the neck of [affecting.name] ([affecting.ckey])") + add_logs(assailant, affecting, "neck-grabbed") hud.icon_state = "disarm/kill" hud.name = "disarm/kill" else @@ -155,9 +153,7 @@ return state = GRAB_KILL assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!") - affecting.attack_log += "\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])" - assailant.attack_log += "\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])" - log_attack("[assailant.name] ([assailant.ckey]) Strangled (kill intent) [affecting.name] ([affecting.ckey])") + add_logs(assailant, affecting, "strangled") assailant.next_move = world.time + 10 affecting.losebreath += 1 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 2ab3c71d57a..ec082b6d205 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -49,10 +49,7 @@ user << "You stab [M] with the pen." M << "\red You feel a tiny prick!" - M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [name] to stab [M.name] ([M.ckey])") - log_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey])") - + add_logs(user, M, "stabbed", object="[name]") /* * Sleepy Pens diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0c642252bc4..7bf4f1f059f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -85,14 +85,7 @@ else M.visible_message("[M] is hit by [src] in the [parse_zone(def_zone)]!", \ "[M] is hit by [src] in the [parse_zone(def_zone)]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter - - if(istype(firer, /mob)) - M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") + add_logs(firer, M, "shot", object="[src]") spawn(0) if(A) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 465b51d966a..84c7982c123 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -63,9 +63,7 @@ for(var/datum/reagent/A in src.reagents.reagent_list) R += A.id + " (" R += num2text(A.volume) + ")," - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])") + add_logs(user, M, "squirted", object="[R]") trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "You transfer [trans] unit\s of the solution." diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 06fd2b45319..cb072c3f6ae 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -42,12 +42,7 @@ if(!do_mob(user, M)) return for(var/mob/O in viewers(world.view, user)) O.show_message("\red [user] feeds [M] [src].", 1) - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + add_logs(user, M, "fed", object="[reagentlist(src)]") if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 8929907d7d9..c4fe671ebec 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -42,13 +42,7 @@ if(!do_mob(user, M)) return for(var/mob/O in viewers(world.view, user)) O.show_message("\red [user] feeds [M] [src].", 1) - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") - - + add_logs(user, M, "fed", object="[reagentlist(src)]") if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) @@ -327,7 +321,7 @@ icon_state = "lemon-lime" New() ..() - name = "Lemon-Lime" + name = "Lemon-Lime" reagents.add_reagent("lemon_lime", 30) src.pixel_x = rand(-10.0, 10) src.pixel_y = rand(-10.0, 10) @@ -381,4 +375,4 @@ ..() reagents.add_reagent("dr_gibb", 30) src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 3216877d305..cadaecc6918 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -97,9 +97,7 @@ else O.show_message(text("\red [target] has attacked himself with a bottle of [src.name]!"), 1) //Attack logs - user.attack_log += text("\[[time_stamp()]\] Has attacked [target.name] ([target.ckey]) with a bottle!") - target.attack_log += text("\[[time_stamp()]\] Has been smashed with a bottle by [user.name] ([user.ckey])") - log_attack("[user.name] ([user.ckey]) attacked [target.name] with a bottle. ([target.ckey])") + add_logs(user, target, "attacked", object="bottle") //The reagents in the bottle splash all over the target, thanks for the idea Nodrak if(src.reagents) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index a837fab76fe..e6a36f1cf5e 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -71,12 +71,7 @@ return 0 if(!do_mob(user, M)) return - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") - + add_logs(user, M, "fed", object="[reagentlist(src)]") M.visible_message("[user] forces [M] to eat [src].", \ "[user] feeds [M] to eat [src].") @@ -2427,4 +2422,4 @@ ..() reagents.add_reagent("nutriment", 2) reagents.add_reagent("sugar", 5) - bitesize = 2 + bitesize = 2 diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 392f5e7444d..4a86e0a7ba4 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -55,9 +55,7 @@ for(var/datum/reagent/A in reagents.reagent_list) R += A.id + " (" R += num2text(A.volume) + ")," - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])" - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])") + add_logs(user, M, "splashed", object="[R]") reagents.reaction(target, TOUCH) spawn(5) reagents.clear_reagents() return diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index d9024c461d3..d4046ae4e23 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -40,10 +40,7 @@ var/contained = english_list(injected) - log_attack("[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") - M.attack_log += text("\[[time_stamp()]\] Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.ckey]) with [contained]") - + add_logs(user, M, "injected", object="[src.name]", addition="([contained])") /obj/item/weapon/reagent_containers/hypospray/combat name = "combat stimulant injector" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index f83fa490191..7a4ae30f964 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -41,12 +41,7 @@ M.visible_message("[user] forces [M] to swallow [src].", \ "[user] forces [M] to swallow [src].") - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [src.name] to [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + add_logs(user, M, "fed", object="[reagentlist(src)]") if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index be3311fa5b8..f7c107f682f 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -141,10 +141,7 @@ rinject += R.name var/contained = english_list(rinject) var/mob/M = target - log_attack("[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") - M.attack_log += text("\[[time_stamp()]\] Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.ckey]) with [contained]") - + add_logs(user, M, "injected", object="[src.name]", addition="which had [contained]") reagents.reaction(target, INGEST) if(ismob(target) && target == user) //Attack log entries are produced here due to failure to produce elsewhere. Remove them here if you have doubles from normal syringes. diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 5fcf44a777f..39b581abdb7 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -117,7 +117,6 @@ user.attack_log += text("\[[time_stamp()]\] Has used [name] on \ref[target]") - if(istype(target, /obj/item) && !(istype(target, /obj/item/weapon/storage) && !istype(target,/obj/item/weapon/storage/box))) var/obj/item/O = target if(amount > 1) diff --git a/code/modules/surgery/brain_removal.dm b/code/modules/surgery/brain_removal.dm index a04864fb6ba..41c3b4ee68c 100644 --- a/code/modules/surgery/brain_removal.dm +++ b/code/modules/surgery/brain_removal.dm @@ -28,9 +28,7 @@ var/mob/living/carbon/human/H = target H.update_hair(0) H.apply_damage(25,"brute","head") - user.attack_log += "\[[time_stamp()]\] Debrained [target.name] ([target.ckey]) INTENT: [uppertext(user.a_intent)])" - target.attack_log += "\[[time_stamp()]\] Debrained by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])" - log_attack("[user.name] ([user.ckey]) debrained [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)])") + add_logs(user, target, "debrained", addition="INTENT: [uppertext(user.a_intent)]") else user.visible_message("[user] can't find a brain in [target]!") return 1 diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 23866878825..01b164c3ce5 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -38,9 +38,7 @@ M.surgeries += procedure user.visible_message("[user] drapes [I] over [M]'s [parse_zone(procedure.location)] to prepare for \an [procedure.name].") - user.attack_log += "\[[time_stamp()]\]Initiated a [procedure.name] on [M.name] ([M.ckey])" - M.attack_log += "\[[time_stamp()]\][user.name] ([user.ckey]) initiated a [procedure.name]" - log_attack("[user.name] ([user.ckey]) initiated a [procedure.name] on [M.name] ([M.ckey])") + add_logs(user, M, "operated", addition="Operation type: [procedure.name]") return 1 else user << "You need to expose [M]'s [procedure.location] first." diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm index 79ee6030520..80a308dad21 100644 --- a/code/modules/surgery/limb augmentation.dm +++ b/code/modules/surgery/limb augmentation.dm @@ -70,9 +70,7 @@ del(tool) H.update_damage_overlays(0) H.update_augments() //Gives them the Cyber limb overlay - user.attack_log += "\[[time_stamp()]\] Augmented [target.name]'s [parse_zone(user.zone_sel.selecting)] ([target.ckey]) INTENT: [uppertext(user.a_intent)])" - target.attack_log += "\[[time_stamp()]\] Augmented by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])" - log_attack("[user.name] ([user.ckey]) augmented [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)])") + add_logs(user, target, "augmented", addition="by giving him new [parse_zone(user.zone_sel.selecting)] INTENT: [uppertext(user.a_intent)]") else user.visible_message("[user] [target] has no organic [parse_zone(user.zone_sel.selecting)] there!") return 1 From 8bf9e6396660608171997192c8cab2db1a862392 Mon Sep 17 00:00:00 2001 From: Nienhaus Date: Tue, 17 Dec 2013 23:36:56 -0600 Subject: [PATCH 192/315] Posters Hey look, Posters! http://puu.sh/5QlUx.dmi Image --- .../game/objects/effects/decals/contraband.dm | 32 +++++++++++++++++- icons/obj/contraband.dmi | Bin 18295 -> 31010 bytes 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index f448da8fd79..a9c942e5162 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -1,7 +1,7 @@ //########################## CONTRABAND ;3333333333333333333 -Agouri ################################################### -#define NUM_OF_POSTER_DESIGNS 11 +#define NUM_OF_POSTER_DESIGNS 21 /obj/item/weapon/contraband name = "contraband item" @@ -116,6 +116,36 @@ obj/structure/sign/poster/New(serial) if(11) name += " - RIP Badger" desc += " This poster commemorates the day hundreds of badgers worldwide were sacrificed for the greater good." + if(12) + name += " - Ambrosia Vulgaris" + desc += " This poster is lookin' pretty trippy man." + if(13) + name += " - DONUT CORP" + desc += " This poster is an advertisement for Donut Corp." + if(14) + name += " - EAR" + desc += " This poster is advising that you eat." + if(15) + name += " - Tools" + desc += " This poster is an advertisement for tools." + if(16) + name += " - Power" + desc += " A poster all about power." + if(17) + name += " - Power to the People" + desc += " Screw those EDF guys!" + if(18) + name += " - Communist state" + desc += " All hail the Communist party!" + if(19) + name += " - Lamarr" + desc += " This poster depicts Lamarr. Probably made by the research director." + if(20) + name += " - Borg Facy" + desc += " Being fancy can be for any borg, Just need a suit." + if(21) + name += " - Borg Facy v2" + desc += " Borg Fancy, Now only taking the most fancy." else name = "This shit just bugged. Report it to Agouri - polyxenitopalidou@gmail.com" desc = "Why are you still here?" diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi index 1f48b7dd42271fe9f2229555e5086cb9dda33fa8..c5914bb5876d3063f5d2e6877843ee5e826015fe 100644 GIT binary patch literal 31010 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

    &wVrQ@5NSqD71ZOFAY!9dD`5U?NiZu1IdH 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 Date: Wed, 18 Dec 2013 00:00:15 -0600 Subject: [PATCH 193/315] Very English! I suck at spelling and grammar. --- code/game/objects/effects/decals/contraband.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index a9c942e5162..bcd270c8dee 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -141,10 +141,10 @@ obj/structure/sign/poster/New(serial) name += " - Lamarr" desc += " This poster depicts Lamarr. Probably made by the research director." if(20) - name += " - Borg Facy" + name += " - Borg Fancy" desc += " Being fancy can be for any borg, Just need a suit." if(21) - name += " - Borg Facy v2" + name += " - Borg Fancy v2" desc += " Borg Fancy, Now only taking the most fancy." else name = "This shit just bugged. Report it to Agouri - polyxenitopalidou@gmail.com" From 70b025279714331162a7cd243331b0f9885fd936 Mon Sep 17 00:00:00 2001 From: Nienhaus Date: Wed, 18 Dec 2013 00:10:30 -0600 Subject: [PATCH 194/315] Holy fuck English I hate what I speak. --- code/game/objects/effects/decals/contraband.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index bcd270c8dee..5afbbdcefd8 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -120,10 +120,10 @@ obj/structure/sign/poster/New(serial) name += " - Ambrosia Vulgaris" desc += " This poster is lookin' pretty trippy man." if(13) - name += " - DONUT CORP" + name += " - Donut Corp" desc += " This poster is an advertisement for Donut Corp." if(14) - name += " - EAR" + name += " - EAT" desc += " This poster is advising that you eat." if(15) name += " - Tools" From ab76fe339daa3d183cef9473551c1c7e02524da1 Mon Sep 17 00:00:00 2001 From: Nienhaus Date: Wed, 18 Dec 2013 00:11:26 -0600 Subject: [PATCH 195/315] Forgot a . ... --- code/game/objects/effects/decals/contraband.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index 5afbbdcefd8..860156ba3e6 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -120,7 +120,7 @@ obj/structure/sign/poster/New(serial) name += " - Ambrosia Vulgaris" desc += " This poster is lookin' pretty trippy man." if(13) - name += " - Donut Corp" + name += " - Donut Corp." desc += " This poster is an advertisement for Donut Corp." if(14) name += " - EAT" From b54cab665a154a756213e054874b08e702300003 Mon Sep 17 00:00:00 2001 From: Perakp Date: Wed, 18 Dec 2013 15:03:03 +0200 Subject: [PATCH 196/315] No slipping when lying down MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - No slipping when lying down - Doesn’t change slipping mechanics otherwise. --- code/game/objects/effects/effect_system.dm | 11 +---- code/game/objects/items/devices/PDA/PDA.dm | 21 ++++------ .../game/objects/items/weapons/clown_items.dm | 21 ++-------- code/game/turfs/simulated.dm | 42 ++++--------------- code/modules/mob/living/carbon/carbon.dm | 29 +++++++++++++ .../mob/living/carbon/human/human_movement.dm | 8 +++- .../mob/living/carbon/metroid/metroid.dm | 6 +++ code/modules/mob/mob_movement.dm | 5 ++- 8 files changed, 66 insertions(+), 77 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 128fe3850a1..5ccb8c7951d 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -845,15 +845,8 @@ steam.start() -- spawns the effect return if (istype(AM, /mob/living/carbon)) - var/mob/M = AM - if (istype(M, /mob/living/carbon/human) && (istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) - return - - M.stop_pulling() - M << "\blue You slipped on the foam!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(5) - M.Weaken(2) + var/mob/living/carbon/M = AM + M.slip(5, 2, src, 1) /datum/effect/effect/system/foam_spread diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 8ba2e3f6d59..b8dd3495559 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -960,20 +960,13 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. if (istype(AM, /mob/living/carbon)) - var/mob/M = AM - if ((istype(M, /mob/living/carbon/human) && (istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) || M.m_intent == "walk") - return - - if ((istype(M, /mob/living/carbon/human) && (M.real_name != src.owner) && (istype(src.cartridge, /obj/item/weapon/cartridge/clown)))) - if (src.cartridge:honk_charges < 5) - src.cartridge:honk_charges++ - - M.stop_pulling() - M << "\blue You slipped on the PDA!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(8) - M.Weaken(5) - + var/mob/living/carbon/M = AM + if(M.slip(8, 5, src)) + if (ishuman(M) && (M.real_name != src.owner)) + if (istype(src.cartridge, /obj/item/weapon/cartridge/clown)) + var/obj/item/weapon/cartridge/clown/cart = src.cartridge + if(cart.honk_charges < 5) + cart.honk_charges++ //AI verb and proc for sending PDA messages. diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 47d1846e6ad..3e3e2a8cfb1 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -10,30 +10,17 @@ */ /obj/item/weapon/bananapeel/Crossed(AM as mob|obj) if (istype(AM, /mob/living/carbon)) - var/mob/M = AM - if (istype(M, /mob/living/carbon/human) && (isobj(M:shoes) && M:shoes.flags&NOSLIP)) - return + var/mob/living/carbon/M = AM + M.slip(4, 2, src, 1) - M.stop_pulling() - M << "\blue You slipped on the [name]!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(4) - M.Weaken(2) /* * Soap */ /obj/item/weapon/soap/Crossed(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist if (istype(AM, /mob/living/carbon)) - var/mob/M = AM - if (istype(M, /mob/living/carbon/human) && (isobj(M:shoes) && M:shoes.flags&NOSLIP)) - return - - M.stop_pulling() - M << "\blue You slipped on the [name]!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(3) - M.Weaken(2) + var/mob/living/carbon/M = AM + M.slip(3, 2, src, 1) /obj/item/weapon/soap/afterattack(atom/target, mob/user as mob, proximity) if(!proximity) return diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 7bd7b596a96..2c34cecf6c1 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -54,41 +54,13 @@ playsound(src, "clownstep", 20, 1) switch (src.wet) - if(1) - if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes - if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) - M.stop_pulling() - step(M, M.dir) - M << "\blue You slipped on the wet floor!" - playsound(src, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(8) - M.Weaken(5) - else - M.inertia_dir = 0 - return - else if(!istype(M, /mob/living/carbon/slime)) - if (M.m_intent == "run") - M.stop_pulling() - step(M, M.dir) - M << "\blue You slipped on the wet floor!" - playsound(src, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(8) - M.Weaken(5) - else - M.inertia_dir = 0 - return + if(1) //wet floor + if(!M.slip(8, 5, null, 2)) + M.inertia_dir = 0 + return + + if(2) //lube + M.slip(0, 10, null, 3) - if(2) //lube //can cause infinite loops - needs work - if(!istype(M, /mob/living/carbon/slime)) - M.stop_pulling() - step(M, M.dir) - spawn(1) step(M, M.dir) - spawn(2) step(M, M.dir) - spawn(3) step(M, M.dir) - spawn(4) step(M, M.dir) - M.take_organ_damage(2) // Was 5 -- TLE - M << "\blue You slipped on the floor!" - playsound(src, 'sound/misc/slip.ogg', 50, 1, -3) - M.Weaken(10) ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index d9e5925f20e..70edd1bdbc5 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -547,3 +547,32 @@ else if(prob(50)) return "trails_1" return "trails_2" + +/* + * 0)clown pda == no slip when walking, lube=0 + * 1)banana peels, soap and foam == slip when walking, lube=1 + * 2)Wet floor == no slip when walking, take a step, lube=2 + * 3)Lube == always slips, sliding effect, lube=3 + */ +/mob/living/carbon/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) + if (m_intent=="walk" && (lube==0 || lube==2)) + return 0 + if(!lying) + stop_pulling() + if(lube==2 || lube==3) + step(src, src.dir) + if(lube==3) + for(var/i=1, i<5, i++) + spawn (i) + if(src) + step(src, src.dir) + take_organ_damage(2) + if(O) + src << "You slipped on the [O.name]!" + else + src << "You slipped!" + playsound(loc, 'sound/misc/slip.ogg', 50, 1, -3) + Stun(s_amount) + Weaken(w_amount) + return 1 + return 0 // no success. Used in clown pda and wet floors \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index ce3f80398ad..844ae402ae7 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -18,7 +18,7 @@ if(shoes) tally += shoes.slowdown - + if(back) tally += back.slowdown @@ -64,3 +64,9 @@ prob_slip = round(prob_slip) return(prob_slip) + + +/mob/living/carbon/human/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) + if(isobj(src.shoes) && src.shoes.flags&NOSLIP && lube!=3) + return 0 + .=..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 7e967fbf1f9..58028dea45c 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -966,6 +966,12 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 /mob/living/carbon/slime/getTrail() return null +/mob/living/carbon/slimes/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) + if(lube>=2) + return 0 + .=..() + + //////////////////////////////Old shit from metroids/RoRos, and the old cores, would not take much work to re-add them//////////////////////// /* diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 9f107361df7..b947beb1267 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -442,4 +442,7 @@ M.start_pulling(t) else step(pulling, get_dir(pulling.loc, A)) - return \ No newline at end of file + return + +/mob/proc/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) + return From b4c8f4ccf374246422453a55dfd6ce656725274f Mon Sep 17 00:00:00 2001 From: Perakp Date: Wed, 18 Dec 2013 15:10:28 +0200 Subject: [PATCH 197/315] I spend four hours merging my commits and I find this MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - if it was any other programming language it wouldn’t have even compiled. --- code/modules/mob/living/carbon/metroid/metroid.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 58028dea45c..74d86eeb28e 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -966,7 +966,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 /mob/living/carbon/slime/getTrail() return null -/mob/living/carbon/slimes/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) +/mob/living/carbon/slime/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) if(lube>=2) return 0 .=..() From 0dceffbd0f848c7cf73cbbb43dbde77246c4f7c0 Mon Sep 17 00:00:00 2001 From: Deantwo Date: Wed, 18 Dec 2013 15:13:43 +0100 Subject: [PATCH 198/315] Shuttle launch timer cannot be shortened when less than 11 seconds are left. Added a check to see if the timer is less than 11 seconds before attempting to change the timer. No message is give to the player, but since this is such a rare thing it shouldn't matter. Using your ID on the console doesn't give you any feedback while in flight either so whatever. Also removed an unused pair of "()". Fixes issue [#2064](https://github.com/tgstation/-tg-station/issues/2064). --- code/game/machinery/computer/shuttle.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index 97c557f0e7f..d43833b955f 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -8,7 +8,7 @@ attackby(var/obj/item/weapon/card/W as obj, var/mob/user as mob) if(stat & (BROKEN|NOPOWER)) return - if ((!( istype(W, /obj/item/weapon/card) ) || !( ticker ) || emergency_shuttle.location != DOCKED || !( user ))) return + if (!( istype(W, /obj/item/weapon/card) ) || !( ticker ) || emergency_shuttle.location != DOCKED || !( user ) || emergency_shuttle.timeleft() < 11) return if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (istype(W, /obj/item/device/pda)) var/obj/item/device/pda/pda = W From 7bb4cf6a7971cfe3ec60c421bf64b1dfca64defd Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Wed, 18 Dec 2013 12:25:39 -0300 Subject: [PATCH 199/315] Makes the attackby() of storage objects return 0 if the can_be_insterted() fails. This will fix hand labelers on pill bottles. --- code/game/objects/items/weapons/storage/storage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 7b37c0e9c56..a2eed50be22 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -300,10 +300,10 @@ if(isrobot(user)) user << "You're a robot. No." - return 1 //Robots can't interact with storage items. + return 0 //Robots can't interact with storage items. if(!can_be_inserted(W)) - return 1 + return 0 if(istype(W, /obj/item/weapon/tray)) //THIS ISN'T HOW OOP WORKS var/obj/item/weapon/tray/T = W From 0a18229abd07e3ebde76f4a78c3dda2a496ce801 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Wed, 18 Dec 2013 13:12:59 -0300 Subject: [PATCH 200/315] pAIs won't runtime anymore if they try running a bioscan while lying on the floor --- code/modules/mob/living/silicon/pai/software.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 9c8179282bd..cd797cb9ab3 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -486,11 +486,11 @@ var/mob/living/M = card.loc if(!istype(M, /mob/living)) while (!istype(M, /mob/living)) - M = M.loc if(istype(M, /turf)) src.temp = "Error: No biological host found.
    " src.subscreen = 0 return dat + M = M.loc dat += {"Bioscan Results for [M]:
    " Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"]
    Scan Breakdown:
    From 68652294a85f570ceac5c3485474a7940167ec16 Mon Sep 17 00:00:00 2001 From: Miauw Date: Wed, 18 Dec 2013 17:31:26 +0100 Subject: [PATCH 201/315] Digital valves can now be made and unwrenched. Fixes pipe fitting names. Weird pipe fitting names like "uvent fitting" have just been changed to "vent fitting". --- code/ATMOSPHERICS/components/valve.dm | 8 ---- code/game/machinery/pipe/construction.dm | 48 +++++++++++++++------ code/game/machinery/pipe/pipe_dispenser.dm | 3 +- icons/obj/pipe-item.dmi | Bin 17235 -> 18034 bytes 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 671edcf9914..13fa5eb7e74 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -312,11 +312,3 @@ obj/machinery/atmospherics/valve close() else open() - - attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - if (istype(src, /obj/machinery/atmospherics/valve/digital)) - user << "\red You cannot unwrench this [src], it's too complicated." - return 1 - return ..() \ No newline at end of file diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index b3c99880fe5..c104200abb9 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -20,6 +20,7 @@ Buildable meters #define PIPE_PASSIVE_GATE 15 #define PIPE_VOLUME_PUMP 16 #define PIPE_HEAT_EXCHANGE 17 +#define PIPE_DVALVE 18 /obj/item/pipe name = "pipe" @@ -59,6 +60,8 @@ Buildable meters src.pipe_type = PIPE_MANIFOLD else if(istype(make_from, /obj/machinery/atmospherics/unary/vent_pump)) src.pipe_type = PIPE_UVENT + else if(istype(make_from, /obj/machinery/atmospherics/valve/digital)) + src.pipe_type = PIPE_DVALVE else if(istype(make_from, /obj/machinery/atmospherics/valve)) src.pipe_type = PIPE_MVALVE else if(istype(make_from, /obj/machinery/atmospherics/binary/pump)) @@ -94,8 +97,8 @@ Buildable meters "connector", \ "manifold", \ "junction", \ - "uvent", \ - "mvalve", \ + "vent", \ + "manual valve", \ "pump", \ "scrubber", \ "insulated pipe", \ @@ -105,6 +108,7 @@ Buildable meters "passive gate", \ "volume pump", \ "heat exchanger", \ + "digital valve", \ ) name = nlist[pipe_type+1] + " fitting" var/list/islist = list( \ @@ -126,6 +130,7 @@ Buildable meters "passivegate", \ "volumepump", \ "heunary", \ + "dvalve", \ ) icon_state = islist[pipe_type + 1] @@ -144,7 +149,7 @@ Buildable meters src.dir = turn(src.dir, -90) - if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE)) + if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE, PIPE_DVALVE)) if(dir==2) dir = 1 else if(dir==8) @@ -157,7 +162,7 @@ Buildable meters if ((pipe_type in list (PIPE_SIMPLE_BENT, PIPE_HE_BENT, PIPE_INSULATED_BENT)) \ && (src.dir in cardinal)) src.dir = src.dir|turn(src.dir, 90) - else if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE)) + else if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE, PIPE_DVALVE)) if(dir==2) dir = 1 else if(dir==8) @@ -177,11 +182,12 @@ Buildable meters if( PIPE_SIMPLE_STRAIGHT, \ PIPE_INSULATED_STRAIGHT, \ PIPE_HE_STRAIGHT, \ - PIPE_JUNCTION ,\ - PIPE_PUMP ,\ - PIPE_VOLUME_PUMP ,\ - PIPE_PASSIVE_GATE ,\ - PIPE_MVALVE \ + PIPE_JUNCTION, \ + PIPE_PUMP, \ + PIPE_VOLUME_PUMP, \ + PIPE_PASSIVE_GATE, \ + PIPE_MVALVE, \ + PIPE_DVALVE \ ) return dir|flip if(PIPE_SIMPLE_BENT, PIPE_INSULATED_BENT, PIPE_HE_BENT) @@ -236,7 +242,7 @@ Buildable meters return ..() if (!isturf(src.loc)) return 1 - if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE)) + if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE, PIPE_DVALVE)) if(dir==2) dir = 1 else if(dir==8) @@ -361,7 +367,7 @@ Buildable meters if(PIPE_MVALVE) //manual valve - var/obj/machinery/atmospherics/valve/V = new( src.loc) + var/obj/machinery/atmospherics/valve/V = new(src.loc) V.dir = dir V.initialize_directions = pipe_dir if (pipename) @@ -379,6 +385,23 @@ Buildable meters V.node2.initialize() V.node2.build_network() + if(PIPE_DVALVE) //Digital valves. Shameless copypaste from manual valves because I don't into atmos code. + var/obj/machinery/atmospherics/valve/digital/V = new(src.loc) + V.dir = dir + V.initialize_directions = pipe_dir + if (pipename) + V.name = pipename + var/turf/T = V.loc + V.level = T.intact ? 2 : 1 + V.initialize() + V.build_network() + if (V.node1) + V.node1.initialize() + V.node1.build_network() + if (V.node2) + V.node2.initialize() + V.node2.build_network() + if(PIPE_PUMP) //gas pump var/obj/machinery/atmospherics/binary/pump/P = new(src.loc) P.dir = dir @@ -569,4 +592,5 @@ Buildable meters #undef PIPE_GAS_MIXER #undef PIPE_PASSIVE_GATE #undef PIPE_VOLUME_PUMP -#undef PIPE_OUTLET_INJECT \ No newline at end of file +#undef PIPE_OUTLET_INJECT +#undef PIPE_DVALVE \ No newline at end of file diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 2e64c41414e..588da237c0f 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -18,9 +18,10 @@
    Bent Pipe
    Manifold
    Manual Valve
    +Digital Valve
    Devices:
    Connector
    -Unary Vent
    +Vent
    Gas Pump
    Passive Gate
    Volume Pump
    diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index 00c5760e016fa4d65f9fe69464704480315e3553..f8b28475799ddf0b40041e77d46f0fd021b9f277 100644 GIT binary patch literal 18034 zcma)kbzD?k*Y+St4ke9rinMeijg$g{gp`1klynY_(v5TqNQVd_4bsvr-3>#IjPPyl z`+45){r>y-!7#sb=InFMK5MUat!rItK0H@f#Koq>hCm>=%1UyY5C{t0-5(}81Og!r zs(^uiTVC3)T;wd?zj3y9bg_1@hd?|sqDGt5QF)HW;ugL^F3evZh z6fHV2DFu^OA2{ZtD;5TZ>Iw{Y%a!Gry1zAI5iAN$e&0CI`G!I*PXvRtBPN+cOP#@v znrOhg35#03zOEs>cy6phH!-GA+khuh9ZDW|`)gi8hwuJR=V}qBK2zqD@sVlluc`Va zYeQ9r)mtMB6*fE7%vvq-TQ`4OIjM#jBa4*(Li|csUOP|H^FbhV5M{Zi+8!APncgni zFSCwXiypu9jI%;}4d>_V4`wQ04pi%O)Vh?hQe=_~Dj?GAt1~BE=6A2D&^4cpP)HZ> zeP=!0|67$^IGE-E-A_U_*|kR|>8j{II0<;f2hj={xxGtLr=;mhw153&oDI_|`c)!& z#Gx4vE895gp>Zdz{Ve*PS)@$A_>NSR?{{CHA0iq*i|Nc%6P zrHI5tV#wKI>)f0^4aCdK>-o!<7N77Wvtu0W?KjVEqJvdpWGpN!eoXIm6KRMC?C;xY zYil2Sjg8{GLqv|MDJx@Tr=@)y8`D(HmZWB8X0C7b2d~Jpo$(j?`X47IvUIw&Xz z5-LtWi4LpxL4U&!-%S=Z8gLLGhr_~MMi=j42B9a#rv+< z9v>gy=HzlO*7~0zOp38C4!$jQ?475TXbkp(QGbqFz=WfNde)w5YCcF3rUF+VIT}vl zB<-X?yz2Q~t7asnRzO}wSxw5Q`SiD3jbI$&o*t!o7xty7qSvVOf6g>oCz20yJ zwggY_ky!GLCsw+%xP!TGbvw|P_=c^mt9uGD;m?eZe~^_-NGayV0Y5zragIxlBX$yb z$maiTKC1dnPg(-j$A2dl%nXDyv;AZd>ADH-dCn}Gup51r;<%x-j z#|Q*MNkv80%j^5$)=eL4HYQ?PMOT*$Tv7>nZbb!GK~d40{zNtzPqd(?$Ko;T>*nCK zrA2bZv&oPvH!`T5PE9$N0cX+maY(d^HC z#Q_^31Y~4k0RaKAw)X;Hjz(TlXHU=zxXhMv#xc7;0XI% zRaIPjdwBt8g^T1FH{!2fmIrp%5VJA)w|U%{o}hFghmH;B_6_HdX1Z0Fl5;k{!UrGv z?&-tdjR~lbIe3)g`R+@@A0C9%)YNH50%I77ad82qx|L>N9?~|_0%kA?S65fjD*5Q? zQ39l;AEB-`6W~v5IOn#sEGEKZUap~%^GG{6IcbaK4kcy zJ<7w`+ihv9)gN+6niV>eaR9UI-Z#z-XT14wMV%##$klg`(ku$QFAH%_o zP9)0}f^pXhwvL<|!6WYJ;58#&@RdeIMWs(z+Yhcsjz()`NquS);o(`vbg(N}OBJTu zQMGHz{r4yh7ZWv}JttMF*ny1)EOVn*@R4MxIj8;n`AGZDsRD1B<&o=Uiu)ElC>N`BX_%FTC9k1@eEhQ- zUtP&PK4~brED`W<#~$L2O$(u&Jp2@N?5hxR=+_ayTdM(gY|BtdD}9AuAAJM<-L{`> ztgUS>TrS~#kvc^oY1$E7z^+?y7O&*NHx*>I_v#5bUO{njc;%NbPnfA|BS(_hb-f}! ze!RN6@_<62!5sIBbn(DhLxV)z4>JzEk6Lg2WNVVdtH83`UuvbjzC4QY^5xI(f)WI+ zIG&L|U<}2n8b*B|jFLyf_cXBEYCtHEa3N}Q$-3QbRoz6OTG$5OYB&32_Uyp&Vt@8a zrG(d6v9)vgMO*Phx(5yNDuM)m;%7OH9he1W-Se$uuQScUr^>jtz#rLSi4{UK{Z?qn zN2`}{=qaf{sC-1OW<(MVxhv|#@85%?7t&S((}9MCo~J`XxP8+J{!aIcEW+2tv+kb6 zfmos7?dsnCS@`bW9`D;wcR!iTiwJ;F?wM^Hqr*!Yi(D zKK;IRhTtP^T#|y)A3tRYnrggmDZeLno|qB{)+gNx&-xgj%+rB2%`YIZ0^b-&gG#@D z&vye)X>B{Y%>Vvt?nG#j5uQ z`kFD!4@=x4dYUn+T-;vprK>+~v-bCPFiZ=&+hzU>3X@v) zqbeO@ii6^im3psfEFt-xETizE`^-T_pO3;!m~O{f=nC-z_3G;D&3fdHO&pt?zmy#@xOwLLbUi~abo%J> zAvPMnD7Ix7hQb2mZhne)yr0jL6)@k%{qZZK`5V8RJAqXpz}bA6CV;u@vVYw6iYgX$ zy;L6QlO)a{-N>!vKowbcr0A19bEQX-N>l3FqS%3lAK8r}BHf~2 zFnl@5>FTq#H{TiAQAIVrYNE6h(=dkck!-o@(NLHewo6Pi^comeLMUQme!a)HH%5fn;+`H#*h4tV&*HoNq-)m zcYeR5uhpYKW%p#HE3$?!EtJ~VNMZVn7pGL5=k6IvrKi>V)INuY=MnCR&e3S_4?YrO zO}@>N@D?t--~Pjh8-Sybr8hq#+rQdQ6OZ$L0gEG*5iHGiOvPUw#3UpqR6V9AtKE;d zxD*Tw9@f8`|LoEHqU@qA6~&ClEEtQ3h3R0nHth8JuaBW2m0^WJ`dsQepMChh`yn-q z_aPwk0>1!T6YjirmhZrhd4@et#u1wH7YU#b^y$SK!}a^wb}&+WnUZb-N<6x?{PhqI z+1zk8aJ;m<(B>LhJc?x6vt>zluZ7{&BZ9+B$-B!vO4sI=v!N#ULRe z5$|#GfcLSUjL71*A6>?L|1}Npjo+WMokyIU@-{Y)pFMkK=Zo&wnw>59j`CwfL>vI3 z;OB)dIwOiDOx4811Xhook2i*(BNHlwhFK^;#w)gYKym~UoKKloR_f299$cx&w- zO|ijgO`)Z%EK>LS_Eo?n73xTMj|udtcusr!)5maN*x4y5VLyI|+a!Eayf+A;fRWR% z=f9wUSG|>b^4w0EeF$|lkRtcD`lu`({5B)Fm0@*a5{3~(mZ6$$^7|ES(}z&dczKA^K)(H1A+J`R;8m3% znfZ7>G9xc6H8?mpwiS9!#~3?ZXPj+D?Oa4{_fh$ zJdA)J$bu)4EWniN?H4HF^Y#dH`ijxs0_6m&QWNYi`3)1=R$}$IPJuKapjug5KUGn| zfn2j^6Q%N7KbWd`9Wig;g!}H@JCChQce|9^UdEW^b_`lMcXy#1ME32h4#MrU1BcrY zqzT!gt~OnJd70nRq8rb&4VgsNT@hot_$~TV?aj^!Mod-tV2Lc8bW1)7-v0%dQZtZ6%vbC@%I6664B>zv4E(%; zg5XxL#c5}Zd2&%2oDD;IQchhHF`O+$dmp?_ccRSU?B0@s8A>YkXMeh-!o zGEKl%d#A~DPX~EcB-Q=rd@n9LI|d;AFW-l4Hiy!~?hxkQRJq4`oZ|7EZ6(%GCNZ4m z*;4x}nO~TnEPNv6T))-T1)r(0so}hsMB|J2{o4?X?nuSz^Wt9=9%2iiI7sBMAsw!6 zAv4ocQ=xkHBKrFJ!Tmy>aPwSv6tx&>0;|SP#OYQw$VJ3K+SxlitjpO{RHQh0&dJFs zvk^b8>tn>$+|VFwx@t#9AnocZkR2Z%NPBY}1_>1%?;c({a0}Yk6MM1O_E zdotMboM>=6CF-~T_DC+lG%alTCc##>T)(^gRdpZ+!5D_=XPRfK>4Lbxe`+O>miVmh zwch-(UAYCz(R6FlakUHU<+Shh!MBd{0{Fno7NwmJ>2wf~ws)7j3&ev$G4o$z;M2(Y z`L!&2j;tTAbT)XLFhDR-?}4qve<~mwERO^VslzFnh!a?53RO}f1={ru4DOKB5DH8( z8-MFprmU?kJ0z#FQe)Dv>~)h{h@q@P`{0=D2k?;Jv+I;CZ-^Q%*b9l%#EhV*JYHh2 z{K1f}Q+KLacY!iFF_F{SDpdeCZuWY)4Pi;rc;^G%37#CMFnIBzeLNENUMO4{KDV^Q zEv``-S6aYmL80I587sIn5gjZ~b)WBnvZ_Kh0F<2{F8MWaX32**Bw!=WNnJ`&*$YZ3s{WBnSo$}|1_&jvF@h#Y>Lpq~rVm2NlyPpr%LmtLRv zSgEM7@zeMdZnY$onm0yClo@##??5!aTbCOHDQjIHh_tulfB~bD`w}^K$Mr@&uk(Pt zz>S^c>z`aDmdJpV>=(etgI#7Y?xFOj&2-{$|7at02uB+GWYqgrE6AamZ|IBaJAR~5 z4}fxtnUeY$8`DDSA2Z3))}V(+O7~@+dNtE);r3>57P>?}+5#hfBqCjN4#bO`ksn2M zepcuT4h_`yV)dY2ZM1}j>daJ-^M(W0XlR(hc)|F-(J(wB;!Tqlk4vr>xse7>?yT@r z3|0atIxi0ooho-u$ov6%j}tjLxnr=9U>bo&dich&VtwU1=xPBj;Rig%W-JyOeVtQ( zv2cq{+2;qHV(q7nfq3cwE@0XI9XS&ZM@rKzhi}p`UM#1jr(5r}jiBfaU_h)mzq~Xs z7(kWQ(7^xl<%`{Pz#R?%aHfk%KtR9;uq_Z#^wfG}+`ZFuSIyV2hkz%7ud@$U#njY1 zS=>8c{lJa6$g7X;5A)cXqI zvG&nobw#2$Klq<4jN>MR!JM#h^szq^0Uvs=GNVbp#rAATEG~|fF9c-9%EF>}z1F8~ zN_0#gV4+o>mMt{;`ULJ#_q~u+g zr8mI%#HN_>d6YkLcO8wo;8+|#rsvK4l$v^iRJ>yu3ImmtpW#fxGn~G@z79bFuNPl@ ze0_aqTK%Oij+SW8y_%CWqEK|w)j9TZL2EzyhAYF?|DcENfo!w+w^YPxrw0v zq+a4<&Q2#mF3_ev_7wYI+cph8gd7=7rX@nR>X+E@*htcK{QKuTmirfo7ssm++*qw( zF$1JP!)|DkW;d5~G{D{3l_wv;zvK>ISMIFo7C&x7O*;~CT!xj15-9al4s7JD28<-* zLlRijyISkNtvS4RcHDt)q$YuLU_w5tW(7ALe#gQ8yG(C*g}gU6Kku}1it`G-Z3g_S zNxy{F@uaTq$rg7-Dp$JYhKjoS&ye9J$IU?s5Ry4wH9+2~XQL3zVI(JIhVT^)FN2Ki z)meU+S{&y_oA;5~YS)KA4iV}_sWZvDg_V?Ku^V4KR(Xg)>jT4=ypq27L9z%NUpM~l zLxIy1eLs}lzpNjhSNhq!6~SlqOq=US;|_$B>&iYW^;IXvP)D_5ia6ya3NsUviFNyf z@s05>J_WaX5+%o z5e>(P`-8W8o~h!VPd@+VyH6(BYBIZeUiX-m*ZfkgnJj@tts^pnqQR}4Y{~Gi{xKxL zfM!J3*q0-+`z4*lvW8(=i_@{Fsv}r>46tJ*Apc&*-{wzj-ZO z@Ap@9-`?Z(l^PUA5-~Gg;gjv>MpHDLfjiJT0a*mm^7!xNEur&KD({<)&k;)Qnn_tH z5#_t$mu%5AVii`wD8b~WrLS6j#f*I5$_?Kf6pvY@2>pn{PwKwBnX*IZ7s2HcDg`Cr zcq56GC0OXv#U@@t)zh{OcZO3}$3J+z=SlA?J*)TWYVooqtZbjd=d33t@8|uU5S7vI`U{aJ63MRp%9sy_s-4?Ua+L3q(Hy65mCvzq~cTeYv50Gb#y{AFzD>8 z)l$8VE*)?GUgFd!QQS>C1m@{4fse5$23uTQBv=?SZ$BP5w6^V}gJ>8$yt{6WnHK8o z+f_0EQIyJeQw0oK#%fb!`emYgtUV+0zxGk88&&GQ`W5`yXGo1FKfQYAJgdUzK6Pv~B&VX11CV$%MLk-YS(wN=C^1lBs#N2u^NgUfiRmNi}SOH%8b9=u!{kN|<-*(k>A z>uW+NdP%?TBw7>54tiT=3a~ztHLLNIqqpr7k^@%-R&j&pspZV0oC(zU(;s-$qG;dd zIemNq;s^9lh;#9mFRMsDDUBALb$vE6E~C8NkbAP+t=`veXjwiFggrGq5J4J}SWsOE z`aJ`~x3fsy#iFIX&+lCHbjb#-+! zEp!)k*GJ?$|9hsohY?Zl+p=hqL%!9xm`Q8owus3_U@CMc?jDfI;gqRFlsZllUX<(qdWuuWzSONUr|4Q1E}K`53P_2zwUg)b6v-ek2fx9MHDoPbbcy`@ zv=%P^q|HVrn2Jp_oPKBo@SX-6qViyzYIMw4AsTb#i4YvJJBk*-?3wy^4=Y|bSt^Sq z>1;%p!wOI93T(|)#;av8^!J=2a+}#8Ao8LpKBQwa_n0}lJOzX`{Zlo|)^+t_pE@y` z%)B6C%@b=*bOk^ZGkk^;P|)C^2LaFo>2XT7k67*M7fOped}ekTUks>kIWss`Ja=qn zCQNO=<24igP@` zI;xa8AiX{W%h1ZsPVVj7qK&5}uv$0Es8EvcW4~HoNk-ulfXgKTEX=2RJZPvTAgDcS zZUppRz2onrW!n~%1`rDg3SH4RH-0wUZ8OzxO8VaNDDVwO=*amlwjrOtR;&6KW|{4b z754u6HTC0j*$c3&vQtyTduY6&fYq*jEg2*^IXUU0riQDLOky$9b1F&OO4x=05oDMk zx9)yU8#{lX1BLNDbn4j!btZ8dd=O9{hLDHE;*V(f!HF(VK01LiU`=4!LhL98=?76S z6WW}(4_v5nq#WN)?-Ss2CrIySM9*8Rkt{%7xI!E#bl|)_w#o)Io6U< zy&7{Yha?V>Cr96LjG-EGholEQ4Bf@*aV|u&_TIxI7FCe!GC?NsywZ zwe(?>cEH3o-CxCDh0HA2w-bhyiuIZ|w7zFAAZhtWQ zMUqC^ZFDpq{Vgk(A%q~!KQHXHD8Z~8S*c6agCSq(`}gnrn3~cIb-tw6wI5i3#&CVJ&(_&$=z0lBa)GQQJPP9Qbs{zR{bV?En*5-l@Xf zOzc)py8f7Ur7HxdL5vgE|L_nmjy>5IO!x}8`$^7hw;QnblD28?i)rbGWlv6`Kx+C2 z)U+N^nxVcjG>nXqx*-SmP){k{ENrdNsNcoyr|B+a8PQTq=It%(m*4cT+1i@^XB#E} z(W}U%%w$q$b);C|I+CcsB1b1|a8On2yz1Tp`lHex;$5gU>3puPSB+8VRXI7*uEv4! z^!zqHgCkFI3gD=+Nyx)GenSGizvWZ^)dED-t2XX&Q627LBmQm;q{JmpSp3W$R@@_iU*VkhurutT2I$zh8etI^tuu!fS#^0Bs`K-=DwP1*bGu0F=!vr$a ze;d!NawT@yAbZ8>d$H;+O=V_M2hBLVPXUMNl)VbTmqHS3z57j>Y?6$jt)iIhaB<;*Tn7@WK-d?L z2OwETZZ2b*W#98qgxG#A_%rUqs&&Lx^$}w01$@sq zf5rdSArbj!+RDbJ12AWh;AqNt0XvYP*x1^77AB$HEzvEhKbS_pch`y6&OL~;cRr05 z@xJdT&bZyqkM*E02UGgVeIdlZqy)vWv{sjs={9W1pVs=rhwT<8RQKObVb5vWO?cL4 z@3P2McN1V;SDWb$vB|07oky)PCv0pr76fWxP2*$7+yVlj{cSc-PwC+oXRsD<%Xc9x znnuFLN(vASt<-l&d;WlQv%c}4VmNkIKbWECK>7fz56fQ{Oz76`Zj}$h+2@C^7$B)n zPQQzSWHi5|1Pf45ZO5l^z*ObKtnGzjuIOsY!~GTUkF2X~(;(*r;bAUc_>a15Xo7@aNo;k{2LA(8sc z1O*Qi`jlupf1I7g?y*Gp8SfvERFEuHVrU{DzUa%qM5(~-FsUoCk0HUnZenE%(p%Ck zV;?DcAtBvI-Y1sn&CSj9M= zNv{~)ShH_vM1edf;{f9R+syR@?-$A-Cf4A+@HiQBH+t&aB$H3 zn49b-OUj=HSiZ3PArN)z53em>oyfN0 z(?I)#5Mn$$1aJc+83d13k^`CTqu1S@FXn!zy^p#J3^GRY&m&P$Q69Hdx!F-xW+hrx zut@xFua`<&G$Mt6h4D*up^xmH^j=`aeSDS%^I~6`1sVEx*S+H@1BbrNR^y*JL^UxI+7^{yMY(ZuFcHK{6$3qg^*J7k3p8zSrKH5~! zCpBpS+h+zM_n7@Ctas=zcG@PiS|}(edItw5-obwPAuPK3i+)1Ld11joyrKoCeMhYN z2QT&oPrk*n3-laiRs_n`eaHi8GK*yB#-63#IvZ2r#u}#qR}?p~Ks~h{C-~v#$I$L5 zKTm5)X%nSe;LNcU2tXR~mviifeAP4d8pSu^>E*$E52s#Da7uCjDfJURKI((N5Z*(S zQ79_U!y*Nxh$v|Xef@A&XLtRyktIm5U~{C7AFKt1iGaIU2t)$XjTAXE6${0F{{sBT zF%fHu;z@ea5j)t$;le=NXPC$1;05Eia{;lIYy6$4P_8wj>iVS4Fm!Wv|feZhUhzJGHvOHpAYrivFwcLbB>u*hPsltAJ9hd~PHx9lhA;;G}m%rZ(92S@% z0G|sAX;!wjom1ro?~uKucj0!tK3D5_lGoE2wJzZ2CY356nG7f(2= zjvuJ;Cu=9h86n6iuVDrAt0RICJ6)(KV2bFtx$zCY*>{5wKqsgG4JFk!AaIJjH%l7E z!D}kibsYC;0lG)%096t472wQl(AS)THObw z@4Fz>yW~G5%B7o&Z`=F(=8Un>g>A}E3>Z*?`0dYBZyz0njpga+XoA4EoEc)Q6=(6DsIi`vd0rcZYj+`9sZP0JPl zbEH;gTz4bzc1)CLy)?d_eVeV9C(G}kTH4bMC3quu{A0Lho|iS^qAo({$b)bH)y|MS zee1Qi7H8Z6P^ZX8kgkA3?n98fx~=zMu}h#}H*FS7WeT$*dF*LwJuvNBi6xqzJo(*NxzNK=c&E*G=UXmTRF=Dm?i_XY4>Z)Ue?@l0zZ;{n};GLE*;wIA^eW z!SyJ&4yicv`jRG@)4Rhh^K2Cpbwa#t-64)4=7Nyg_d>560Kx3=vs09a6jqkK^vBH6!`s8@lYMJB_FuI|!H2Tu?kt6n@fFE}Dv>3OJd&J_bklVwfPxOa zb4A!!p^0$D>;K2N{$q6lLPC4rUx?E_nqoPPLbH_EqJHx#P>T!T|v-_x?lpe z9PcOpDYQ3MENpC8A3l8ehs{(=59NLHbLO%CU@C7aD9y8IWJLlBo{5=x7L0J0D-SR2 zosa1#3jxzMdjJ%4|BC3^+uN&7iC9$0t97g$9SLY+6g|-0v~+ZSk^#j-Tda`&ix;`x zo}^$x(sK1sdLw9|==VE2Pk%UOnBoI-k^vlitNntg>`t$`LX=LbQ6<^mzu$D|Dfld* zAe$$B5t}S1nxLWU$G@<;wuSeNvQ#`jz1F~gtu zFx1r4YI>3m8*gu}1=u&W5nkbiNCOMVS1+YFxIbXxGXPV(-$0EJlBs)}qfl>zYL^_Q z|NME|H@{12BQ9=5AO{6h`{+kA*q!+Y~T}y=);h6S%FDg2Wx> zfAVimEv%hH7p4^G{JFLBT@<<5g@ycEqUF)}gG#{F_4`=Fce+_%1|-80$m32cd;6b5 z=|UF6v=Uz0DVjDLia~usEK+GGGgYRjg74;td2#be^w@5JIuIy*JuVmANshigzSSQ+ zg);QjpCZ^#(kb{HdrGvfh9W6K$6kD8Fe?b$zgj2qIX|B^?TON+5`Z633E`Dam%ZSC zlx`??;vpUi+O;L?8h<@QD5|`@K_ZgEMa&RaCKk%l!W|)-Aokesuz1r@>|D^ev;XHi3yy)9Bge%?QY7wZfv!*UVx19 za$w*Epp@VAM4Pt1A2xkw^Y~&{Nkf;4fX$^X3!6>>dGDDk1!uUiuqNR_uqDF(?go?I z)%n8efBgA!jO^=K;<^JQSf+M)+v;HG+(o_&6jaln8$BgR|jyH@IEi67=Fc5{R}G>UjXf7F!KYGFn@|oYtzW z$3OGP%4Xp z$6vcXAUkkHu&&UdbSqb|qQ@DFBnlTd3s$-*kkCoK>PsI#v#J#pl-C{ znSdM+=;`k1J73j92i~H=?SK+gKhg9uGc&h$cAf%03Gifh)xTuca*Ho6z97dUR537=O-n>BZNNnI@mb=<0`sDyZG zx0?`@*y495UCJW(av%9`<&rh^N)ea>f`a!jFWc6iKlX+j z7%r|N9X!up<{}FbtXW)rx1eERgSHMk9Ajc)A{b}MH;k>MByBuaKpNE&U%|v4_H*aJ7k&Hmr z%_A)Q$OA(&Nd7t~pY-H3);7>#;k&@PJ9wIR70kp$rgdX`C+^y`ryyj7;ZXx302F7o z4-Nos>+wfoz;czFSKn4@U#vRE-WYS;0#Q6Uh-pCfN18Vb6oOUG8_y;Y@iO8$9UU^N zai6mC(e+T*FRwXqRs=tek;O_!zWH<6!b%17fb;`Ga-I9ghe@>7U9vvvJKvSyg({w; zV5MlHmhsPRbiLr&IVmgSFeSDE@)N>zjMcbD);Al^9}_jk05w;0RUqtl!E*+KKl_YH z&A*+h!{p4r)z@Q}lB9~T--r!M(c=!|w4Qg}+rgGgtdBaN!HrXpnU6BODQD4?*Zsq= zD}PYcOr+Sp{yd#lQ)JRmWAW)%1grI93Ybz&Qor`WiB-+{F=A+%*B-vKdYWGO@L8C= z%%1ezipU&;leO$MDpPW0H)a&mq4E`PeABp-Mn?>8VZOKW)T@ud^)eXMC{*u8&S06x zC=Z1GZYZ=Wpn7_G-W9y7Y$hMe?i8m*e&MfU{@R2y`2*fN zd2eeSIUi!kOm|{xF7c>TQf3sc(S-ckuWRdZR`8At)bfEI>Mk~erVvuW@1H}$(Uq*3 zlm)#urIL``j-oi0j-pVmEdF zh_CaUBK9l__CKxwB?J=bBYx6FBtyiZADQ&v#bszVkEu+2vfG|gklT%QZ_ztg{*IvK zAi1`V4ug;oSyWV%u*)_9SipAk*QI%RfyQ5LNI>=RPAf$P@L!Yr5e@Hkw0wSDU7~S= zBRz0cF-6&alpt-JdxDL9+}M2SRqg5viJz{S?r3+57y;h|Q& z9j2)OL%TOEbaXw7UMsc}-%iB6cMz(Yu~7RKUr`d%>w^tUq4pAWWVjV|JuI^F=s((4 zP!oAfCt_b@1e_H31$`4da{0=VYHkN}%!yw|o!`} z(5?f7S=di)6*dET>SU+578~EQ0&Mp#<;bmx5cIobin*_XGEMye?T5Q=EKt>z2bMn5 zI9aNTbF2GZ;lLGK=8uHPST0oJf22EiZa3D|jp9Pa_9`W@)rHVK)MidK4Z}UB<>2orcI#J2&g4{)^aT&uMh@3poU-(6A|@cOhCUv3x}7(ndT)R@SUBV zW&Q+$YdYy?uPnZ(gLb2QKpiE&cz}u4=9IxkbnpDGKvG=VDFc~5Yz+H|#~8(^7@g`I zmAp409XY%^SxQfHE(&PQ-mZ0^!LysKxvwE{PHg14LGsdi?};?fWhrWDY4rxmLA`S+ z0tUosZNn!p_-&^+AOtu4PWv;wgJ}Xd^Y!l{Qj?9sP5TB0aKxs^#sUGFwo%urMPW!E zN0oh;>5Dw++1}nB`N~EiOAE&A0pzUXavREHIM6qOQU@7n!M%sUJh;}aQ8UYS^Yxs& zu$ZeqO4by)g@xUTE)Z0;DsXjA2}L4$tI$s{{%-}Nshk$Fi8B5MH246bEK%a^v{jwq zQuN{#e%lj!g%I!3V9pw)j*+W0*IeS z92{L%-Z%NUU)6-l)x;NQMkKJLer}Ov_ei|S!Z2yU&;}@9>U_by<49LiOO~{YRJJ}O zDT{BOaYVB(yu#U&M-q|@S<(7O8F+}-ofn~siaiiygp7o4v#c)yF-We|E{FqbS;4e8*Ca0i_BMQI9bsOLrzz;L7@1)@ zD;N3zjMyFcU3C9;gZt#{{VP6k|WV7cIhNPknBI3MdZrYLOZH z@P5IQx(iA5jgb?82z?|!H9a{g->fj;iZ(INP!ipXGA2R?#uYh^p+SIDAm(#Ka!9jgYYci5L)jbu1l;-v&D+ zY(W;zg_S&x%9tL3I!J{7F$7Z*>|+zI1aJxHVQ&Z9erOd{z28#jfK-840+BVshqOajn3(~9SUcr@5}N@5N8Ib&A?QU4 z6q4nD)+XccE+vkY#Lmb)?wcjYCEW%*2-<6)%bNEK~ zm7u}D7XSgjFoO-6@;+8B_ZnliMj;?uNtI*wJzW2L{muVc$TWc0S;{j^X>Qbo4t^&; z2ec+VHzY5)sm?!4dmA{^{F)lg@RPVamrUViD__OYGcsr=X>c0m5(4 zI2l@Y$sT=06Yr~{kRWqAK8NY4^wp8O{1r1VFChS)9cK?3A9-{7@&N5_7cGk#rHv+T ztFHaGhrkYICbj!>Wy6APLE~oo$y%5neygm$>s@=}v44$yo#t_|hZDC52t*A0)eJ9> zt)}I7y%}gC$BwL~_mqd9v$_FnhQw*2gMjidV+5NZCwUuD$G2x$;$kD8d0LiPaj zt)Tbi;YJr{Z*$(-XB@2$+HSy&NHGh%yr2?cNx`Vi5kS*GWhJ*~-OfR;oG!fvk!_2C zl~s|4va2C>l+&d6z1{#KBZErbLAe&?LC-gSeE)@Xg`Jd4%Pbrm9NEtuBPRS5ZLb*S zSfca+w!)%VcnoM_C(*pjnBa;=6Q-8JvN9-uuCjX|KbK6$vBX)mEWTs^hg+(uMl|tL zSH!y*4ZVI1i_}*(;La1_9CV%fpyd$=cDYs2zrL4$Rz%)5 zimeAVI&An9Ynj?$ZL#SYc-UyNdPN%A3~F@$<@05#GBTN1S>KH2$$J1!yV~!smlg&i zIXqTG=hLT8GLD>jm}NCJ55Rj6FZk*)tA$d~k445);*JH_o&6vlLRX?%($v%pytr`V z@VL+`Q&SW0O$^H&EZx`uS#$SjzG6vP&)SJc+o`xg#vn@Tb9_oJ=@ZRDbB;k# zZiUN7Ga)O?BL0}9OJ+h$#Zk$uT~5D?e-mY*GfBU&O{|$B&#?-Kb$)V|A!H%w1G;Xe zIE*5JyQus6l|HIG{4Kk=0o5EjOrU-LslN3Prl>Y!4<59+ePd%IG%$<&58eD~Vp7rz z>wAQqK#aE;e)C9SKd*`C52z#4i{(Gr4_Xrj{fF7Rr*Aigc~Ji&Q9+kQH9x5WcmXrt zM1Af+8z+<{{|Px%G#2l5b40t?{ns?HleXMFfi!@95ZC)?4nTVS)}0bJaCj@fyrWp* zJuCk#i75b8Gc^`Cln)=4?1$4$-hr(89l+oG^lmn~L&0}SmS$$wggd%Isd9Bf-w zft16Cq>8$Jam*m^dYk3>Q;<_IB%D*xv&pi&3H3Tk3Su&x2VBjG;R-S+~pp_gFD zMFzemc#UaLZ`Tg+P&Lr84X`T4L&U$$t93(0l7~%FLu^nd78Y<!Vhw^^8}FrMc7}R6$R>De-F>0)oSU)M_Y9Kb+&li@!kGDh#9RRD5!F zxo(4x+%k6nRdW}$X5ch@3d1~%1_0(6he-5)cD4P1xyX163co`@Ln%@hF$#zy@?Etb zYpUWONYag+>^V0Ud(hQw5YZUa$UVycc6m@MK^}jn(RR5+VWZ!|0*F+7d_)-QNg^c~ zofqG5#fz$f0w&YfG@v1umi!A+q_J^kYAmq-hq!n>5ZV+G=5S`4;-!h_fMzjJ4o4+_ z@_4ls?PPJHySp36n4nDxoLxhUo))$Mf3$;_J=te)GYFxq=nH|%yHKIQNG@^*3rC2E4vz)X5= z8$}0sP_D9&0TqIton4|h{Yn4LXsk*KY0vGs1*C00k7eYl=?ERNzP_n%A3T_7{I6&g zn|eM@^ea$r3f^Yl61~LG%wke=s&fPU(Ldh+Aph(S_eH>>54^y(ozTLw^pX!kli1w=u) z4HaZ(kkI<06Ay9ll?0|W{}p_`9qD#KB`*0;FyTpEqGh1=-Hm8xZ+>yg(o^;0Cpc)R z69z5SL>lb}Zj7KMYAcN9+x$Uj&ssa6sb%lcGVc6S{w8N$Z4Muw0jU!Pgnt7hjfw~P zX0Kq@=vL>ulcv5B=H!_keEO>}n86T_^>?>lVhQm;k%P?salA(BM-F619!Ht(972*h zy_J=fy1v7AwlnH7)9n3?g&KUv#7HMUYQcoD)~i>={he_P_MysR-^-)VU#uSZUJE;& zm6MA_;=e+yXZIZ&l+W$5+%m!7i-dsnNc4%Pq30Y+C*qX@S6@33HA1ALGDEjcJ_NLkB zKaPS0U&$`GK#Oj$;%s!RRs~-K5U&K7Xt5a?c3&SU{^Q}^)5d17%Dpk5N%M*|HGQJ_ zM(AIsP)d|GC268*wevJh0$@=7F0B;cdhQ#H_CxqnIvoS=+}I#w2d3?#Pu=#M5WCL9?B3bbbvt*_|KJ<3TMz9Yf0#z?T2#GhmQ^+eR^M z2O@~Eg*FkHX>vr;eHes#mUU0`IsI0&5iXOKe=+Ud=Itz4QyX4cRiznqh7d!(l)p zconex)W)DT$_@#mIOls=hFGUjB!u|*sXM1%ugcrAVGO+aNVGi*o^_pO8B_^uf~Bi?s&)dHo<#~FOaUbGKQ{3- z(YcrN<2Y5FF0X~E16FE+z^EwuD8~7gtG}E!>Mf=+pBKwIlU1}O-6@BEY%nb& zzKiogl-}56RZf(ro)(f$OirQ+d{9w2?C$P{AU>zK297x5LI>jph-N;hsven|nnE@kyvN4I z_#r1JCutcOtuM*zwb>RXC%d-h!u@3;MCs`0JUl%3Q@pNB`+mH}H8L`)Pr2RPb@Ft9qR30y@YMW@s?d{#Y+0V$(u7z zHF{q2GIULZ3>`{1Iy(MHJWqe8sv7r;pX=NG$B!R1*f{#G9J94XCIF7$P*Spm8s{+T>`Pju z4s=>imWT{wKZ=cw<%bY8L=0@Km=dSku5?hdvB`H4no>yNY?MdcIM>Y)@mT$M{Ut4! z70SiM^AocuOipFMkqSmB+mb;Ka+e9VT< z;nj|@;z~i*nO*l;~LKgSrD zS+jfWN(P4w&Cfp(*13!J*x%eN;q1=IoPi#>@GtT{@$~dG-ZrSaNlBp~j z2?>K*T3RCQANe3`wA{i^h^GGS?ctxCxbXY7;Bm6EBXrp%RT^=?aE7L)zTh&*ZPqsC z=AuFr)YNi!t^zO!X~1|WJq~<+?VKv9sdYw~WfDvcd(iG%Rop~$lp1vAsfnHH=b^(8 zZrGD~H($S^_wSz{w<}Xwv0k= z^Ha@Z914G8B{VZPm+ih+=N3dDK|wf4aHCn~cpT9Tg0N|b%>T328;^?v8d*qIs_ zCgK!!avUQ?_0bP`)TOg{7p}x?u!YC6Lk$JO6S0DkCzX_xPPD9urjI)LzI^!tSq$Eg zcc9|q(8u@$3+6fzbMtJ{al0yHoF!8c5x2 z&R;J5l1|(p-lhN#^!jmdlbi+>6RMSHgPt_bK_s{SwgK^meph(sSmmIQ1rC*ML!%ShU?XoDlaW9s;G#QBcEzzqKIOQAc6L~Yj13pl%$&}>v@FW>RYF;z}Pzh%W*JPvx9adpe6Qx8rSxXeHL`Dkb-{&0Ac3oaFfx!0Q zrANER&18BAlhZ`18_lHW?CU6J6SZ!dp=``(C3#ou$w;6o!7MKXZ zOrOO5XzHJ}A3wT+v!ig5$*ngcwkahP#rR4|nj&fn*1dn8nVya`@$1uwA%ujK^f12Z z2F0t15~S9gErS5m^1e1>W)t7kc#yBDxrm)D1 z+i%fyr(LVV84S0l#rv_CxROF>nMIU8$SH_UUl4^LnKBhF7qiu%rmPv4w?TVw#N_?K&FSFFrma79W-mXH=JE1JK?ZGYpntvJ$sCcFnd!HE>a>UkeftJ{-0N9}r)f5uJE%{z+q%zg zL5&S0ZZ=7gsyHzf>0bQ#53}hoxMHh`ao)N4e{*G>GE*4jER-iD-}wn zG%JKUT=Elj*je^iG(pjXq=8Tr7=&VN@jSRk>pP}DzFi#U@ZyDio>81Z6Q%?(J&w?J zec@>ZTz3UhjNxy0lBJXdnoU`5&rw<`=VkUQjkzE3lE2|+AIIuKIvS(#YLuqHNh8A; zp1~3)xyI39c;%())EDw$jV3TyRp`0zSdpIUiCwrqIPnhZD&*2EN^l{$&g|l9;yjQz z0OxhisULMIrEU7LTZ6|?#Q59M0gIS?Ew|$V$vcT{Y%>(&@O`_dqXoLmu&n!Rd_ori zB*n@tHM6aZp+h;=bt4Dn@AEr*?EHwss6Au7095fgNGVaItE51NNhuZg7Gbr6lmJCi zLX@-kzMe#1@8%CdW4+jicOjifD38Qh6G&4ia?vD9%&dF~BzE0szY%iS#LnfSRtGo> z27~$UjgEept#?&E6cl$X9fsQbBk8jfEp-t`fT&Jc;bqpWg1>wB&cxKTB}Kp;Z-D3P z7zGihFkC#8-FCTsRV?Ul>;6=KDB@VIl!d`tXSgEK1gEo z;v$tLeh1mJ3lhRkw{Pt)`yj-NXL~ac>|yFqJ*=$zkYw2*C4h3RCwNvQ#I2vc zH$YLfg9~R0!3>C&kuWha6{Ge~-7f!x5E>jV{~3jGM!*t~UP3tdRnNqYy4q51H-$?d z6>&Xzi(%}r=Jb`qF0$CV&>0qDlyFWw(?ya7o>e1&(+7VsFfd$c0~Q$Fo-g_HwyOv5 zU;Fzb_aw20VwXN{>Efp{ezM~Hl|m_DDLtrj1<8itNoTNZMwQ++W3%de-Bmn+_Gk3; zfj2LA{VIg#YaK(%=+DX=cT_1LwY9bW_kXSpFjbPDSM;HnudPnW4fzRcdnplhJO#LQ zvccWCt7`73`>mEiRChGPh-wSohx276<+MHZSM878;7^`p{QUV?R#q0W%jO}cd$ig; zS)vF1SG&VnQBkpY-gMuvca-X~{Fwi!i+1zhzmBGx-loYH3s%~0TXg+9r$-|>vLP;iP=GkhQ`L>KjU@6 zd*j&*z{gvwTmt#uY;JG2nin@17rdX2L?I(!(+>Uhi?wAk^8R~LQeMBctiy;tGCpSH z!oGx<81&btx}5Gz6AO!Wox3AKJ;gE*D^s?7!;HvT8nJ``U=g3n4VA)=uS+;j}8i0ERR~1!NB{(`dVs}5Y7#$m1nk+S_+U5tK@pGyt zf&E7RyHB6Ue`z;-Eh~HJ_3(ksO$F|^ZQ-WOed4D0#JNP29Bd6IN*_F#DJ7M)wVzN` zw5hWby>)ctzVG84uz?KD&h{05s(ZD{3mL%-dTNIH@>}cqq8}D|zsRb_31nR%a z)xY@$QlZOk`4ZP-cU^!tCj24TI(D|e9r^AoA4uEy8^KQe#+CW81M?{4dZ z{)F7PX3fOR>?!&}45PAtE05JI@B74;DDiAM9f6pnC8i_vU<^Ow=0-*`w{LQC=+kYw zx0nQfIW+zL&8xR)L4_@BWJH%57Z*r*vxo`_^xInA*mtUHIp%+giyMG&2TcP+_iT3x zf(Q?PqGDS475oCLMSpwrCj=ou;fmZ`;>F0wD4OKkqTA*E+!K}fNIP^)-3qb2vm>VM zp?k5mzq5l|g^G%*sHWyD!PtGNx^jGJh@mYi`iM8Y4TSmN=;$*%!PEg%s*^QqGqcuD z&U5&7{3NJY6mK;&lJbwijIe+1C;NE0%FF0cpjspofsTr43kkL7jz zeId_FmD2MB2eJqrB5170KyPu_f=Zd!IB)U4HiMK0up6~?bx08F`a|)_8YL*R7b@|( zK_0sCNw4@XA+H;k;2kVsoBQq>^NC+;s>RxWp=e)35`G3f9m$pN+#1PMnG3-aJiOHL zJdHi@mXVQ}wB`Qs+FpFjb;08}%tny$#x8(u__kdI8YXQ0&Y8C{Fgyz_(Sh^ zz;9x=-2Par!3`hc5Ay*>AD1!-*Pu(wnxg7=y!exaK0Y>PRER!4I~xi*H}ijx%~Lnq ztzkMY9v&#<>iSwG><^#KqHx#iEc`xZff)4)6P#+dQ!{PWi*2X6r9&5g2s5L{8>ijK z2DOS6rHT$jetteXJ3F@0h4t)jYGj1elJbmDAhO;mvO#Z8k4w@m0OtBjy5o2 zwu-)Gk{GCJO_DXnQ^}%-quCOA@{GPnKIjSga=SUn&j997<2VZ8&1q@>#yP*he+2ym=@dW`RO) zcTo7J9{_4asEo1^VwXrQ8O{4*WqIvieLdlI_42tw(^GJ&o%g) z^I%=uIBRCMUn%4ecuq-!F91&)mWys|YHFYRF0nN#p*h3KAL?L_k0Q ztmTqVsDO~^(1QizME{?x)h3bd^pONcpY^yD$RH0)NpvxLo1nC`^u@)63;*rONWyFT zoNY!&iIAJ2w|zuupwFit8TVNPH6SbN8Ndg6S0`J$C|Uk9dsUv?PZ+u>G226t?4F8= zi55k^oId(kPfpkZe(iRW_mdA>a&cnKPVrFKq!$&@ z9ZkQqprLu_TvM}I>%?Nb*6EM*2=P;y-k{b0vCGMIM8>f+gNCN&kZU$>Z>m;cMFrP; zPu&-dH%G9$n@h(LqY-8g5DuI5!#)^S5D*PA$>Q5<+cg@z3 zDZb#-`>T`k-rt_rujG;&SE9ZMG*^2&BZH-H=#hZ0b*GFfXeAH?4l$h3<%;R+)7aVB zIsExYb2uw>XE187eY@fPN`*e!y66TQnq?g4tr1eZW;oF7{}`8@$(ew!*kO5ltN`5d zmv`O`*vdKYTSifHz&zy|MNf>p@Mw<|;Mx;;pTbXEZufa<{jau%=L%B`6#1Wvu#VTI z(WJmhd;043tLLJ;7s}p5jF$A4<%(~J8H)50jNPAntLxu{?W|+c)kIG zU=44(qr4}A94Hv)Y#k+dm_JMi-M%>gj8G9i)qU>mQ;q%~f1(!db4#p`*TZ<#&udF$ z;RyWb$q`nMR4*su4K^*fOw%Z2-f`m7!QK8n!|L?t=xE6j&2a38?9R0-)k>W!yj(f& zEE9huePGDb&5Mfn7HH?Tj0ad9$`E?o9IM{;taQr;c5<=y(8h!z~+h`lm8diIQg z!C(t3e!1N{6#}8Yt*NQO5okU-vJ(-~b)iVz-Zo1KUH%0ci(bG&hC{LAD(K(4AG~q7 zSPDY<_za8S_EZ$o+}flaoVic&&f3~K_@D97WLNJ$&`4oJSBY(mf`Zx!{r))~e^uBsLrS+!Q+|2hefAhW6EdM- z^k}w$Z|ctN@Om%lOX7E-V+A`c)lEBMR$DKK_a?q6(rkzFdoR&I&?p8CzL{_IB|_tS zQNmaJ=V$iz_NX`dQUo*;^kX+%r{tVcKi%PiXM^b~B}D-dKK4$ zA`+bN5oB`RPOo>Wyje1Y@+ZZOrumKyf=hh0SHQh`1~X+NDl!rhzM}B)<4=t{Ula`g zYrydWrWb%>@CP*!9Q`)FKUGNnQ{(yzB9;mgNO}6Fi?Yv#)GRER5nlI-TD;y!-d7{3 zt^8@Y_nwdD=H~P!#wR9d0a>Zu`WhQ8t+-g8cYb8V4~qJvdF2oy+*PAbKkrRxSN2)q zShQHXF;pDV62*3~RQ~yJ`@Auz8DPx)xsZZ*HYntdl}F7a*|ye$dmx4RDo^zeu;%`D z50u!Uiy>h+84(evJXtSvRPYN63NQ>mSty~5gv`H4P=)F`VZirVok0u(;`L1-zQQ(A zx2tw%1ZB|79zmnve=)MC;D-+%Y(Nvtpu=SME2h8T(}xBH01=(R^_!Epo2SZKdnvWb zVML4&)w2)|&Boz!258EhRkbeJXwL&aQ>UbRX`?agYIlEkOUBOM0B5<(&(~eP1!+V~ zSvh(SS6|-yf?8HY_kVL1;DWF#LTqRZEQPQ&qSaM3H3^vsf3S#zT&k8dCEc-)#YsM5 zM4s_^!`6gW;EwX0MdxaF4SPd^>k`1vP~yv^0$r|9EJ($zd|eJz$rJ_le{Qjg9ZO*v zebcTcG9e+jGj26N%N=lla=qWgA4tGB&DgWnKk^5Py~JiLQ4nMvO6~pRWW!WU_RIC2 ziO~m;_s)_r616FscpOJz8Y|EN8MzPZ5s2&gKld2tb3!=h^KYIctMLtujNlSLuMQ$8 zd)$N(RhKa_{hkMJ5=Y%Kp~Ag2_HncE-MI`p%1lH*IfsS$>#07kGf&xr_N(gNG+sc0 ztpa0#a^4!xHxRi-m7OW6@o^RjNfA%&)XE`Z&@2oz?#D+*C1ztU0D^_NpY1;0nJ|1M z_e~yJuv(DsJ0w2P-18WhJ|Q3aw-r_REae%Dps}gV;S!ANV6}|l!;UT;;GO~D5J#fP z&BIJp_BzFa%rd4a?qW<%qN2_6|iBBE7ztKH^@j_Ha1_QJoe&2blHI(GDRW4|V zb+>p~w#cT2uhr9`MXoh}2DR}JRX0P3Ow35UVg6kJFMj|29VsVk+_Wn9+@k^-AvYv~ z&UjHl56xup=E6}1BsmtUp9tu)eOGv8;@{coFOl|2s?n9YOMd`}hL+v4$|3u8ZK>IM9&7-5T(UxB{WyfX>-FWmA=PweTDPU-WO zrB@}D0eGqwQ$a-q-}`*d*+5qpF^$0v8alHh;?UB*kPKo)9WHjk4{G>@Sy}!O5fPnV z@tN4|*WdrO?;-gE1Q01Hsf(GWTg~^Wf^$xn@T&*jTSY~MKT$PCkCM%;;YJm*51ss~ zV336`#z9p*Q#6UxZ_(~E1_UGUlz?tBj?Mw2rc9%}zv$eB;;j(96gGr$*HIT?6*6p3 z`gkJ58EWC!i6yiBgu=7+@A-VA9*+}eQra@%T|>es;HUmobqskGvZ5}%YEu{YTY$m6c z@h!v8p^uFoudQR5UzahwZ{DDVM%BGz3YFx@SAItR^4m8EUe(ei?iA?g>C2j~_+Fv~L9$}RF612a+q zTj3b!6r`6;@|PF7{lNZ`kWIT?)4Bl#!h1OH4nb7UyJ3Jsc>R|rBk~-k!_UO*l9evn zx4e(K8Eg-i-&IsrBK?lOtEzgXRqvuW*cN*7Mi#YT&`88;t~MZ3B0?W<_%4@g@kWGg z<=+4)n4Fz`(d&K35N+V2o zHZ{)p<5F}^6Ogqe?-TpwAn98SZj;&2C|QS6X;h{mGHB1hzy=07um$}2^M}{_jvv6m zsMOQ}N$$%sh(5t~9 zk;)ooNuop8q|F%_G#)pHohIhyDB)TxK49gCZDN2hg^Fo5oPM!&eQ>966S+dzk;H7a#$FOHNKbT6Z!7G_JHG!w&CL3fbjNTp_{__`f_K!`u$Lv)tI7z+M`LIlgp_oxR#M3w-L}>})xhW{LUY|k0{PR%3e;BoumqcpNaF+P64sDF zFdv2xu%OTEAG%aN_lz3h{85$Wa4PvmR9S}A(rxR)mw^Ui0OqQYa>UiK- zH(k(pG+p6u-woXR?5j120-A69*C!0Bim}K(JzPr42!QOgP3e7hALH6wwqfB!yb+P( zIHZVJ=4`OJ<2RO1{@P3FMKr7<$;5@Jd*=W6Vj}+q#M!sOjCxB5gi4pBw5YQV<-eK@ z3TmMT`l!4ZV8lQB&Hv`=4o@d^XlWTAGt9eVfk^LO7vUoR*W1^*E(xC{sdFODi;Wd=#w-$h{pH z-2eHE;Cvk+VCyeF%3^-~`W38r2%w-s`BMRv4a9Q*#%#zK;MA89_ZL`@X232iIn@Oi zfYy{++~D7AO`GZ6KWAIXlQ-7${9KTW7A!ABHBukhu9cQ+7{*2)jX@@k=qY5j=A;llRI~g)q#|%9FEX_ zxGBp0IgI86B!JbL8B#rbeSCaMN-g!RS8pWKqHnwoT2LVfp!8$z93OU4H|5Hwc6^I6 z?|uytGeM4yr2{Fv$<90hu&ZF1_Qz%_XGQmK}XegV+hy+m^u)( z*H;It(el6(fVo01`_0l*$+um%tgP&yZsAt$)KS0v)zVF z>1G+jV)i$Vb;D_##TBX{oR9kR`g=Gi9-En>S50?U=43)%{LFW#5TFJBxFFxe!91jL zjpVe?(WmIz5fr@j|I;>)MuChF#!?{9UJr#+Eee zrrTH5ATentp=vmE_4hkfoI~4xqrNRCMNIKl231U=J!EDVnsXyVv_lwG#kNt!0rUiu z%Ev{d0ThDr=M7m5RUe$PP9(0HpOZ(g`)H8sBmISK9xSzy{X`EA5}mwt%$dU(w)kP} zf>;tsZpVPwbm9t|L>L~brQ!*428u!)Fw^k2B4P&YI)6l>s%G>;rKO}qw6!S!JujCk z7$$%&qRM3R6^RT(tImm~5CUln&^-gJbfDj#XY-G!R{u27zkK4B_UR%c`~EnEB7N-d z*As~mpRN=E$9yAKUG7@(wz@g1!s4GTbKb{1AJ$g@QfL8c>EZf!YyIQ(zro`x@#&Pd zNEdVaUO`~?L8c7oLw$C}Tlm5Q6dsrDpSk{`;^?W95dPCqGhTrfCgMc)p(4)` z<6{XQJi4pQm)_hsJ|}$z`Hg#wL)ZxPJ2AfJmeja^~ks8ep^pO_sPDr z{NQtxE=>)IeL&d-cA@yI+FD9ftLVvzY<#9DkFb@(Xv72I_%%W-EXWXti%vT zuIG~(VA@jR1HuuWXE>0mhdc)B`ocz)I1#AF_Mn^S=ukfJ_h}6c$(6z{9Wo1uDIhPH zm@a{1N>5i8A|0*qQR;t)SUGw?H`GY`#4TVuVxHcm8G-at1_>sHRk0xSKtB{wC4!?+V3#M)6^Sa6H3f*&yzkW(-pJRkq>7sSpzgn`wK zq8@fd%*|IH{p>-$g+B;UeY4UVI2JwT`yT5x?Z;8AZ>aAOwl(Q;*wH~2|MCPilx54rztGM^c7!4i_V&e-(db}h4Z6ri7N1ju z{a*1LOv7obb$8UZ7QZq*2<~h2V-gy9iLhxx6;z6 zOme?;mIbsh+9o%2-zXwU+D+H+)npEh3j=N#Jt=hB8CuZWvDDm1>T+ee1IPa9m5A~% zS}gtHIBPs5?9&{vUdOD(ktgj*iJwd3?#npR%515dRFCBEPvkFl%Lmvkrz;{C8r;v# z8sll<*loN{_%ulrOn$6D3jYCYLl2aSIKM=%Kq6Qu`oXa}#qb#(-As@2ASZUXD()?iEvH2mGF^6U$`2Vw<{y)~)BCxSIetJ%Ug=g+}DGvRwyg%e) z1#Ks)dvFT@bk~aIeIfRP-}PzJ{q4RjU>0UV74-C|@7rqeuM&w{Xqu=%9VtfS$@%xva&J|6h!?62rG7e0D7*8&q^G&lpgK{R2D7=%BhyTp_iP1NQOe4 zjj5$%W&Z${n-+aoN#gU-R!>BZCQt$qdSZBRSir4uPq34mkx}-6&`;mDwN_kzf?d3L z6Uiiaq`0}cfw6+aA)`#L|-G#>=~_5onS?BMaIiR0gElHl0naM?<^x z)t4tx;hLt9u`KVQjCWmqeefA;wX4&NSNEpfsxn?)g7>>!{wI(US^@GPEXr|5?>}3- zz=`#&&KnTnCMG74bHxsS+pvTRKXT;uOo%aOFT8-}jfs7YxhwxXuncg9-u0ej6HbNz zl)LPdM7NxO6rldb%NgrKGgC%TqaH~1dQ)72wT)x9P=)qOM9fP$nLrZ8F1gs^0CicR zJuKm@9g`d#HsdXeN~Cb{vEW13UpcTQL3`M}%|9}27M6D^vSGij-z7&{%-6eq?WFL& zvE_R8Y8hB2$~xtf`LbmgD~~c;R!O5N|3WOL%1~yiEJIwdGEqJ<-U4psz^%b$BiR|R zxbnrV#?UdGrn~C+lId{gW4X;hjs3-G;m5##nP%eclEhPI-3%8;1;wprq>Q{~s|#GR_OJ`cLeLg6Iydrvd7eEkt6L+S2|7 zw{s`Tvhz6JV5!EQm&2TZAmvTax$(fbC*>#QGHDj;EMHxeWkQ9&YPwuyM!f`(=GxO8 z7VooR!jCt7Gr*Cmipq&uLiFvt&gmbXps;Ea)D5F7?z7G9mE#mVCYnXg+TOn0;;P8) zj&yiLQAOGBTv|p^Ny!&1@Rd?R?dHG}2eNTnp-;C6$sFhz9)ts2E5BD=NVVJ0#q{JuB`7Qy=I>*p_rLsRJV<_O@M$<%(% z3UO-iKr|96$hu`Dd+%QymfcJ64ZOe9FO+K{FT#5Uoy83(ciGv<55cso99w)uQBpT8}x)b+Qv-0P+DZi#8|`ZV8Z5Co`RG*s;cxiNJ}t7o@6&eFMh3B2ng`nbbXnY<9vEq-q1 zk7dYUF%Wh*G+b>LP5lzG%+zz zROowq``abg=#yTR&Og`Pm&=MUaQL_DG5w1dFOWY10bp}$OGHWODWI*w$zDH=qc3vJ zcerbAhQzUG62y7YMpC~P4>m*0yKazA<;dj{Q*Nn={&ZDk+OIzjAACyvSIf2~rV9OQ zF=y*agb?ejGP9bQf4hj(q3e)(i7ryk`@~1pGvu$TB(L88DUx6IM0l2>*<$3WOO$Hs zH&D8+;w;^Ro>Y%a1!%s24?q%@Y;yR}pmimc5^|1&HiOmW?Z5sX!6E>VMTfL7^PU*S zMPAlE2;*AAHy-BmC&42+A3h+*_u|KSH2_O@(EEUI#hE-6g-F|*n`l#UuN?XQUO>=H zA5-b1uCE(ImbShG&R$CE5F9OkNew&Ur#&JiC0#mo6B|BXQ`33O0in^niG?8wi8()H z-_JQO;5RngnF4y20(9Z{-!|;_eddaEhn^}Yze0H*{J@1^Vm_Yt8Py%STg-cR!@rupSm(U|WQqbb%iw{2i;fOB>6QIw zq{{sq6fB@#pmy2<1J35&9tz}U!uysGv?>kDpNnJ8mpvly*y8U%<;lv)(Fcxw>MLLk z#2w&24&8Q;qNY#)2_UBjKA`AVh;(#)8|S$6>gzCJq;ROgx^pA#?(y|4^$5?~w%rrb zSjwM~?_)k_{_E4vbaNKt|oj!v(&tFmw1{rEwaj&B0)2B!dZIqtdX)tW*NZcT)O zrDYMjA7VC5fkyLcmv*gT)~ht=tsxH&4@NnD!s{1zngc?#P&V`#x2s26+riI^NN46q zX!agk^4M)vCrP4w+6u`dto(Z>XMqweX6Yum^ub=x6?H5pbym3>^7dO%Os?6vM08OQ zQ?*X#1*7-FZypEAaa;}5VZ?^|&KDWdX-cY64;FC~u0!GFh{)mOFQ`ww4L1dAa}C3? zQwCKxsa_!rFq0@sa0P{z^P9AGCe(Ew8i-N@RM0?}ZwltaGGAa?(E702*8f3YU5yU+ zQpKzdp{GQcdWN0!Zmbe#qLiZLIAq7C8gK zk|lPMO(Znk3ssii*REc_zICEjLzBE`e@PjmLYZ!|m79F8u~xv%@Al7<5a`-ny}f<| z8*RYL)21;|fjtCatVHe(Q|{^R9x6hPE|zUfetQiu+0#!8Fd4XylAyq8Y~?yykiL}b zx;9DRU~J4lQc8-F-T%?7p?CE6ySOqN7p6_tM)7AkL(VnLc)f0Tfe*-1^SYq0FjNP$y&&@a{7|u$FAi6D zT@DuWJ~}g#09Nc{zn+dcha^ zN-l-pwCA-(zcQ3VaA&;8@AueFYXAl{G#Z%gO3Wu%`LB1&L97PlyYIXduC|&3)UQ~V z|690w`V=(YRd5`e5ys{GPYZ(WwZ`jt#kJm_93tR;_O?D=J6P{yy^HN+DR3GxtCt8L z3viQCmGKI&*AGs0QhJ91)#FphH;xnAopBa20XIB}2#RbPP>l6IoBm{{##g8HH^noNzNWE2pNBTx}b#+5Gd(|!~cyG;r{cNF8 zJQeF34TMdJMuLleHuT@g9pxwL4%_|rZ~Vg`K$ouBT-eE0^Yv0j6r|3!o512wjLqoKXk?%;vYO2c0e#Ma0_4Vb4TTQXwH~#vSaigdh&j2RdU5 z*k}X}BJ}vcwWxS_2vZ}v2y)X8+!xwXkwE%p$Y(XcJlZ|qU-;h+Js>aeyMNmUdWAxL zr?vO>Or!@x-*+DQuFh}Yo=$DB#tCt8;puaAHFPy(ZV5Xizj0;-eR%V6eIz~Ir5(rw z99gy5mH4~Me?q<@nbQGZ7-^L?NQ%6!M_Ge?tj=Hp+D%>wE02sQDkva8I4TP~c;CII z%8c@gi#rV<+uPd*lmB1nVAgaOg z3Dr?{Lqf;ExWs2tMVpYOzHYj@xu^W%8L$Hp9&`kz3~Ezeknl@V;q*r0CJ7JM+ZxVp zB^+Hjq{2o6Uy$F?`$PF2%N`6nvER(Wt}=g-is22p`6loCb8kX=BHD>)=iu2lNl)I+ z1M4{q>>kZR5gzr3?{Jp%(XO^4@9FIg5EN93>Bn7Q)7X8kaoYb?E;0!o$%ST-gBlYP z;}2Z5J}bOjS-F|{Ik5e(QR;>70;CaRqq<^leCXIkQ{D{iB8T8jNJJ@}<9kjLTuI<@ zKbXEB1SpTDWr~Hivi&X-gBU%=`1-|@0x=vt{_kW?9 z^@w7xUb2*7x#hW~#2cM~TR2KOEy`3ynfLu&Bx*E>b?2|!(aN+HzKrRWbTrdFu&*pO zFK_jNf7zK1W{jwdB;6|&TKOoge9 zQr|kD+kgCqxvEzzIOx5I>gflaYHm($F9q%O>aZ?BMbe__B68avGWjUz$%?P1Q7{O= z+ErsGY5yHL&Z5ivyKv3L%Ia4}b=DN*%XKwZxW^o6$7X!8aS}+GqJgc0y3EAQ>NL|d zVH(|k|6-cXy#OX9TfPkP2>)NDx>?>bQc{l}xcYU_pwqk}=p$$!Q#e#Wt4sA15%I~U zU~h8`*8F`!7B5zgluyDTI50N4IPtlE@gV~hWM}6+{U{t*3A~q7z&%X_H`@q}k>fxZ z;J+lUpY`IT9%Hv1>*-rTo-=4^zttoBS8(#dB>(sDzr@6yBn3D3CyPQ%sEL1pb>1*H^C-WrHy)vP9E+F*m~g4 z&HLaJyu`%FX#1A`D^A_!6H!V5H!ee?4}qRGWI?nN;R>F2%=g5`&D^hE4UhY@=$atj zQ#c*1N~PoXNfjiUwG8Th0Q5QP)4{Pf#P!O9Ye*jj&dZYB9{TYUJ$9n$!3Nez(CR+X zb&-BTV(u$-N_DO741v))4Xz^LM1T@2>?HfV4!vo%o*96xr)~(dAwK{QVFDlAg+YzJ zIUW#-*qf;aTmPuD%rC&M5BeVll{hqRkmd^05&zrv3;z3?<33zK(*iBwIk272R9mC6 z?;=Tce#g$#C45Wx=nzq5z0ePncuBQ{g0Q@8xWfy>DRXBVZSN$m|lU726?Z?44NDfsJ?Z>Tk*!q@}V>{ff zV5WuG9OGX{;vg#ZqsPhv85PLSkif977x7fu-)r;o&;Y{M+sF%WQInRT>)oOrk8087 zC6yK9==xS{*O2zukbDoAGL)A^2ZZkVfo5$O-yS>Sw+YbjkBDDG2Ph~g2bUhLRg)`` zoalzBaoLunBqXASU2|$$vfqJRQS=E3Y;m=9kna@X$Fz;b_>F5pKuSs{FUeo-&9(Zk zSC?I%RC66V-RSAAPWE}O*0J@O^uvD@aF~iRDW!z@;apGZBf9w3mwEd^%?aqP1SS{e z_He|~cAQpUP>XIT>w6yIsC-H3mK{kEOYU Date: Wed, 18 Dec 2013 12:28:38 -0500 Subject: [PATCH 202/315] Bugfix: Adds a var to simple animals "player_controlled" to surpress behaviors in simple_animals that have players assigned. Bugfix: Dead player mice won't be converted to items so they can still be revived. Bugfix: Players playing chicks won't die by developing into chickens anymore Bugfix: Fixes an edge case where a poor soul struck by multiple polymorphing shots at once ends up in a state where they can't move. Feature: Renames the wand of resurrection to the wand of healing to drive home the fact that it does the same things the staff of healing can do Balancing: Gives the wand of healing more shots. 10, 5, 5, 4 up from 3, 2, 2, 1 --- .../mob/living/simple_animal/friendly/farm_animals.dm | 2 +- code/modules/mob/living/simple_animal/friendly/mouse.dm | 7 ++++--- code/modules/mob/living/simple_animal/simple_animal.dm | 6 ++++++ code/modules/projectiles/guns/magic/wand.dm | 4 ++-- code/modules/projectiles/projectile/magic.dm | 2 ++ 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 6b52786b5e0..04e3f4abab0 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -177,7 +177,7 @@ . =..() if(!.) return - if(!stat) + if(!stat && !player_controlled) amount_grown += rand(1,2) if(amount_grown >= 100) new /mob/living/simple_animal/chicken(src.loc) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index b55d2fe889a..4dee403e796 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -36,9 +36,10 @@ /mob/living/simple_animal/mouse/Die() ..() - var/obj/item/trash/deadmouse/M = new(src.loc) - M.icon_state = src.icon_dead - del (src) + if(!player_controlled) + var/obj/item/trash/deadmouse/M = new(src.loc) + M.icon_state = src.icon_dead + del (src) /mob/living/simple_animal/mouse/Crossed(AM as mob|obj) if( ishuman(AM) ) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 64d25530f96..18d27972238 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -57,6 +57,8 @@ var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster + var/player_controlled = 0 //Set to true if the simple animal ever had someone behind the steering wheel, even if they aren't currently + /mob/living/simple_animal/New() ..() verbs -= /mob/verb/observe @@ -195,6 +197,10 @@ adjustBruteLoss(unsuitable_atoms_damage) return 1 + //Player check + if(!player_controlled && mind) + player_controlled = 1 + /mob/living/simple_animal/Bumped(AM as mob|obj) if(!AM) return diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 3ec8880b6cd..bc9dd552202 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -60,11 +60,11 @@ ..() /obj/item/weapon/gun/magic/wand/resurrection - name = "wand of resurrection" + name = "wand of healing" desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." projectile_type = "/obj/item/projectile/magic/resurrection" icon_state = "revivewand" - max_charges = 3 //3, 2, 2, 1 + max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) user.revive() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index fa7160a8a3d..78ab4db6cd2 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -220,6 +220,8 @@ proc/wabbajack(mob/living/M) new_mob << "Your form morphs into that of a [randomize]." del(M) + if(!new_mob.canmove) //edge case of someone getting hit with two bolts at the same time + new_mob.canmove = 1 return new_mob /obj/item/projectile/magic/animate From 8e9c5c19c8ab960e9cf005748cbd2d63c3199dd9 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 18 Dec 2013 17:33:03 +0000 Subject: [PATCH 203/315] * Set the cooldown, for creating virus culture bottles, from 100 to 5 seconds. * Bottles spawned through the Pandemic will have a random pixel_x/y. * The recipe to remove a symptom from a virus (synaptizine + blood) will now only require 1 unit of synaptizine. --- code/modules/reagents/Chemistry-Machinery.dm | 7 +++++-- code/modules/reagents/Chemistry-Recipes.dm | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 1ca5e5ccfdb..22bd853e340 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -519,7 +519,8 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime) if(!src.wait) var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc) if(B) - + B.pixel_x = rand(-3, 3) + B.pixel_y = rand(-3, 3) var/path = GetResistancesByIndex(text2num(href_list["create_vaccine"])) var/vaccine_type = path var/vaccine_name = "Unknown" @@ -548,6 +549,8 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime) if(!wait) var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc) B.icon_state = "bottle3" + B.pixel_x = rand(-3, 3) + B.pixel_y = rand(-3, 3) var/type = GetVirusTypeByIndex(text2num(href_list["create_virus_culture"]))//the path is received as string - converting var/datum/disease/D = null if(!ispath(type)) @@ -567,7 +570,7 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime) B.desc = "A small bottle. Contains [D.agent] culture in synthblood medium." B.reagents.add_reagent("blood",20,data) src.updateUsrDialog() - replicator_cooldown(1000) + replicator_cooldown(50) else src.temp_html = "The replicator is not ready yet." src.updateUsrDialog() diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index d6d8bff0470..4e55436b7fc 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -468,7 +468,7 @@ datum id = "mixvirus" result = "blood" required_reagents = list("virusfood" = 5) - required_catalysts = list("blood") + required_catalysts = list("blood" = 5) var/level_min = 0 var/level_max = 2 @@ -501,7 +501,8 @@ datum name = "Devolve Virus" id = "remvirus" - required_reagents = list("synaptizine" = 5) + required_reagents = list("synaptizine" = 1) + required_catalysts = list("blood" = 1) on_reaction(var/datum/reagents/holder, var/created_volume) From 737ff9001c2d51b2d34b814021400cdd570e0cf4 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 18 Dec 2013 18:06:17 +0000 Subject: [PATCH 204/315] Changelog for the passed couple of days. Please insta-merge. --- html/changelog.html | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index c04d7d583f6..3133ef5389c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -54,6 +54,51 @@ should be listed in the changelog upon commit tho. Thanks. --> +

    +

    18 December 2013

    +

    JJRcop updated:

    +
      +
    • Transit tube tweaks. You can now put someone into a transit tube pod using grabs and you can empty a transit tube pod by clicking on it.
    • +
    +
    + + +
    +

    18 December 2013

    +

    Giacom updated:

    +
      +
    • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Woah. This brand new technology will help keep out those snoopy crew members.
    • +
    +
    + + +
    +

    18 December 2013

    +

    Adrinus updated:

    +
      +
    • Playing cards, just like the real thing! Play poker, blackjack, go fish, the limits are limitless! Recommended to use space cash as the poker chips for now
    • +
    +
    + + +
    +

    18 December 2013

    +

    Incoming updated:

    +
      +
    • Rounds will no longer end when the wizard dies and there are still apprentices or traitors/survivors..
    • +
    +
    + + +
    +

    18 December 2013

    +

    Jordie0608 updated:

    +
      +
    • Replaced the digital valves in atmospherics with pumps.
    • +
    +
    + +

    14 December 2013

    Incoming updated:

    From 8da1ab86419147e81b2585fd622d8d31f0ec3e79 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Thu, 19 Dec 2013 05:31:15 +1100 Subject: [PATCH 205/315] Gibbing borgs explode violently. --- code/modules/mob/living/silicon/robot/robot.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 79d8a321b66..d627f3f9200 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -972,6 +972,10 @@ /mob/living/silicon/robot/proc/self_destruct() gib() + if(emagged) + explosion(src.loc,1,2,4,flame_range = 2) + else + explosion(src.loc,-1,0,2) return /mob/living/silicon/robot/proc/UnlinkSelf() From 68ff764463b9cb47cdfa9fe5ba55850442e02308 Mon Sep 17 00:00:00 2001 From: Perakp Date: Wed, 18 Dec 2013 20:44:24 +0200 Subject: [PATCH 206/315] Subtypes of janiborg tools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The other way of fixing it. I’m not sure why this is better. - Removed condescending messages to cyborgs. --- .../objects/items/devices/lightreplacer.dm | 8 +++++ code/game/objects/items/weapons/mop.dm | 13 ++++++- .../objects/items/weapons/storage/bags.dm | 8 +++++ .../objects/items/weapons/storage/storage.dm | 11 +++--- code/game/objects/structures/janicart.dm | 34 +++++++------------ .../mob/living/silicon/robot/robot_modules.dm | 6 ++-- 6 files changed, 50 insertions(+), 30 deletions(-) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 83923a5c9dd..cfc9120d301 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -196,6 +196,14 @@ else return 0 +/obj/item/device/lightreplacer/cyborg + +/obj/item/device/lightreplacer/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) + J.myreplacer=J.put_in_cart(src, user) + +/obj/item/device/lightreplacer/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) + return + #undef LIGHT_OK #undef LIGHT_EMPTY #undef LIGHT_BROKEN diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 27935c4f874..5126249f9d5 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -46,4 +46,15 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A) /obj/effect/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap)) return - ..() \ No newline at end of file + ..() + + +/obj/item/weapon/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) + J.mymop=J.put_in_cart(src, user) + +/obj/item/weapon/mop/cyborg + +/obj/item/weapon/mop/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) + return + + diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 019fa38f005..13acbb258a0 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -48,6 +48,14 @@ icon_state = "trashbag2" else icon_state = "trashbag3" +/obj/item/weapon/storage/bag/trash/cyborg + +/obj/item/weapon/storage/bag/trash/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) + J.mybag=J.put_in_cart(src, user) + +/obj/item/weapon/storage/bag/trash/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) + return + // ----------------------------- // Mining Satchel // ----------------------------- diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 4a3d973d609..eca53cb030b 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -20,7 +20,7 @@ var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. - var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile + var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type /obj/item/weapon/storage/MouseDrop(obj/over_object) @@ -208,7 +208,7 @@ if(W.w_class > max_w_class) if(!stop_messages) - usr << "[W] is too big for [src]." + usr << "[W] is too big for this [src]." return 0 var/sum_w_class = W.w_class @@ -246,7 +246,7 @@ if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) for(var/mob/M in viewers(usr, null)) if(M == usr) - usr << "You put \the [W] into [src]." + usr << "You put [W] into [src]." else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... M.show_message("[usr] puts [W] into [src].") else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... @@ -299,7 +299,6 @@ ..() if(isrobot(user)) - user << "You're a robot. No." return 1 //Robots can't interact with storage items. if(!can_be_inserted(W)) @@ -351,8 +350,10 @@ set name = "Switch Gathering Method" set category = "Object" - collection_mode = !collection_mode + collection_mode = (collection_mode+1)%3 switch (collection_mode) + if(2) + usr << "[src] now picks up all items of a single type at once." if(1) usr << "[src] now picks up all items in a tile at once." if(0) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index b38c5be4ad6..a82a01a63e6 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -10,9 +10,10 @@ var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite var/obj/item/weapon/storage/bag/trash/mybag = null var/obj/item/weapon/mop/mymop = null - var/obj/item/weapon/reagent_containers/spray/myspray = null + var/obj/item/weapon/reagent_containers/spray/cleaner/myspray = null var/obj/item/device/lightreplacer/myreplacer = null - var/signs = 0 //maximum capacity hardcoded below + var/signs = 0 + var/const/max_signs = 4 /obj/structure/janitorialcart/New() @@ -46,47 +47,38 @@ var/fail_msg = "There is already one of those in [src]." if(istype(I, /obj/item/weapon/mop)) - if(I.reagents.total_volume < I.reagents.maximum_volume) //if it's not completely soaked we assume they want to wet it, otherwise store it - wet_mop(I, user) - return - if(isrobot(user)) // robots can wet their mop, but not put it in the cart. - user << "You are a robot. No." + var/obj/item/weapon/mop/m=I + if(m.reagents.total_volume < m.reagents.maximum_volume) + wet_mop(m, user) return if(!mymop) - mymop=put_in_cart(I,user) + m.janicart_insert(user, src) else user << fail_msg - return - - else if(isrobot(user)) - user << "You are a robot. No." - return else if(istype(I, /obj/item/weapon/storage/bag/trash)) if(!mybag) - mybag=put_in_cart(I, user) + var/obj/item/weapon/storage/bag/trash/t=I + t.janicart_insert(user, src) else user << fail_msg - return - else if(istype(I, /obj/item/weapon/reagent_containers/spray)) + else if(istype(I, /obj/item/weapon/reagent_containers/spray/cleaner)) if(!myspray) myspray=put_in_cart(I, user) else user << fail_msg - return else if(istype(I, /obj/item/device/lightreplacer)) if(!myreplacer) - myreplacer = put_in_cart(I,user) + var/obj/item/device/lightreplacer/l=I + l.janicart_insert(user,src) else user << fail_msg - return else if(istype(I, /obj/item/weapon/caution)) - if(signs < 4) + if(signs < max_signs) put_in_cart(I, user) signs++ else user << "[src] can't hold any more signs." - return else if(mybag) mybag.attackby(I, user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 74b363ff8c2..a27c794711e 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -147,9 +147,9 @@ New() ..() modules += new /obj/item/weapon/soap/nanotrasen(src) - modules += new /obj/item/weapon/storage/bag/trash(src) - modules += new /obj/item/weapon/mop(src) - modules += new /obj/item/device/lightreplacer(src) + modules += new /obj/item/weapon/storage/bag/trash/cyborg(src) + modules += new /obj/item/weapon/mop/cyborg(src) + modules += new /obj/item/device/lightreplacer/cyborg(src) emag = new /obj/item/weapon/reagent_containers/spray(src) emag.reagents.add_reagent("lube", 250) From 51081d5e40fef7b80e5ab27152ae1f00beb8fef1 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 18 Dec 2013 18:56:27 +0000 Subject: [PATCH 207/315] * Changelog for #2028 --- html/changelog.html | 1 + 1 file changed, 1 insertion(+) diff --git a/html/changelog.html b/html/changelog.html index 3133ef5389c..8c0c4d6bea2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -67,6 +67,7 @@ should be listed in the changelog upon commit tho. Thanks. -->

    18 December 2013

    Giacom updated:

      +
    • THE REALISM: Injectors such as syringes, parapens and hypos will not penetrate coveralls with thick material, this includes space suits, biosuits, bombsuits, and their head slot equivalent. Injectors now also consider where you aim, if you aim for the head it will try to use it through the head slot, otherwise it will aim for the body. To clarify, if you are wearing a space helmet and a doctor tries to inject you while aiming at your head, it will protect you until they aim for the unprotected body; same story for wearing a space suit and not a helmet.
    • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Woah. This brand new technology will help keep out those snoopy crew members.
    From 76e32f1e1f001ae3c27c3e78d0b12316835e36e6 Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 18 Dec 2013 23:37:09 +0400 Subject: [PATCH 208/315] Fixes facial hair styles not working properly --- code/game/dna.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index b8b346cc6fd..04c6a091e5a 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -35,7 +35,7 @@ var/mob/living/carbon/human/H = character L[DNA_HAIR_STYLE_BLOCK] = construct_block(hair_styles_list.Find(H.hair_style), hair_styles_list.len) L[DNA_HAIR_COLOR_BLOCK] = sanitize_hexcolor(H.hair_color) - L[DNA_FACIAL_HAIR_STYLE_BLOCK] = construct_block(hair_styles_list.Find(H.facial_hair_style), facial_hair_styles_list.len) + L[DNA_FACIAL_HAIR_STYLE_BLOCK] = construct_block(facial_hair_styles_list.Find(H.facial_hair_style), facial_hair_styles_list.len) L[DNA_FACIAL_HAIR_COLOR_BLOCK] = sanitize_hexcolor(H.facial_hair_color) L[DNA_SKIN_TONE_BLOCK] = construct_block(skin_tones.Find(H.skin_tone), skin_tones.len) L[DNA_EYE_COLOR_BLOCK] = sanitize_hexcolor(H.eye_color) From bce9e5d826c4bee86f872a19881ba6b2ef0b517b Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 00:01:59 +0400 Subject: [PATCH 209/315] Fixes chameleon projector --- code/game/objects/items/devices/chameleonproj.dm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 1053bf4024f..b97ef5746c1 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -12,6 +12,9 @@ var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null var/saved_item = /obj/item/weapon/cigbutt + var/saved_icon = 'icons/obj/clothing/masks.dmi' + var/saved_icon_state = "cigbutt" + var/saved_overlays /obj/item/device/chameleon/dropped() disrupt() @@ -29,6 +32,9 @@ playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6) user << "\blue Scanned [target]." saved_item = target.type + saved_icon = target.icon + saved_icon_state = target.icon_state + saved_overlays = target.overlays /obj/item/device/chameleon/proc/toggle() if(!can_use || !saved_item) return @@ -47,7 +53,7 @@ var/obj/O = new saved_item(src) if(!O) return var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) - C.activate(O, usr, src) + C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, src) del(O) usr << "\blue You activate the [src]." var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) @@ -83,11 +89,12 @@ var/can_move = 1 var/obj/item/device/chameleon/master = null -/obj/effect/dummy/chameleon/proc/activate(var/obj/item/O, var/mob/M, var/obj/item/device/chameleon/C) +/obj/effect/dummy/chameleon/proc/activate(var/obj/O, var/mob/M, new_icon, new_iconstate, new_overlays, var/obj/item/device/chameleon/C) name = O.name desc = O.desc - icon = O.icon - icon_state = O.icon_state + icon = new_icon + icon_state = new_iconstate + overlays = new_overlays dir = O.dir M.loc = src master = C From 5dffd2cfe9100c9f61ffe4cef5c3edf447c42354 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 00:04:19 +0400 Subject: [PATCH 210/315] Fixes beepsky stunning people in things --- code/game/machinery/bots/secbot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index f2c6ceb5446..0df896f7a48 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -219,7 +219,7 @@ Auto Patrol: []"}, walk_to(src,0) if(target) // make sure target exists - if(get_dist(src, src.target) <= 1) // if right next to perp + if(get_dist(src, src.target) <= 1 && isturf(src.target.loc)) // if right next to perp playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) src.icon_state = "secbot-c" spawn(2) From 5f459cd8349036d7d515d371bba17d9c44835121 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 00:08:48 +0400 Subject: [PATCH 211/315] Fixes soil being wrenchable --- code/modules/hydroponics/hydroponics.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index c0a9a814980..158398d6d34 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -20,6 +20,7 @@ var/planted = 0 //Is it occupied? var/harvest = 0 //Ready to harvest? var/obj/item/seeds/myseed = null //The currently planted seed + var/unwrenchable = 1 /obj/machinery/hydroponics/bullet_act(var/obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables. if(!planted) @@ -360,7 +361,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) // Beakers, bottles, buckets, etc. Can't use is_open_container though. if(istype(reagent_source, /obj/item/weapon/reagent_containers/glass/)) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - + // Requires 5 mutagen to possibly change species. if(S.has_reagent("mutagen", 5)) switch(rand(100)) @@ -494,7 +495,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) hardmutate() else if(S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) mutate() - + // After handling the mutating, we now handle the damage from adding crude radioactives... if(S.has_reagent("uranium", 1)) adjustHealth(-round(S.get_reagent_amount("uranium")*1)) @@ -602,7 +603,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) del(O) update_icon() - else if(istype(O, /obj/item/weapon/wrench)) + else if(istype(O, /obj/item/weapon/wrench) && unwrenchable) if(!anchored && !isinspace()) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) anchored = 1 @@ -921,6 +922,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) icon_state = "soil" density = 0 use_power = 0 + unwrenchable = 0 update_icon() // Same as normal but with the overlays removed - Cheridan. overlays.Cut() From 1ce0b11b0d9897ac12dde50db70e661e85812f75 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 00:23:36 +0400 Subject: [PATCH 212/315] Fixes morgue trays used by ghosts and what not --- code/game/objects/structures/morgue.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 5d9ddd4cdca..80c8b0e7334 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -155,6 +155,8 @@ return if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) return + if (!ismob(user) || user.stat || user.lying || user.stunned) + return O.loc = src.loc if (user != O) for(var/mob/B in viewers(user, 3)) @@ -367,6 +369,8 @@ return if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) return + if (!ismob(user) || user.stat || user.lying || user.stunned) + return O.loc = src.loc if (user != O) for(var/mob/B in viewers(user, 3)) From 2f70aaadb3a47938cb36c895e45174637d68cb35 Mon Sep 17 00:00:00 2001 From: Perakp Date: Wed, 18 Dec 2013 22:31:07 +0200 Subject: [PATCH 213/315] Removes magic numbers and an useless check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - it shouldn’t runtime. --- code/game/objects/effects/effect_system.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 2 +- .../game/objects/items/weapons/clown_items.dm | 4 ++-- code/game/turfs/simulated.dm | 4 ++-- code/modules/mob/living/carbon/carbon.dm | 19 ++++++++----------- .../mob/living/carbon/human/human_movement.dm | 2 +- 6 files changed, 15 insertions(+), 18 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 5ccb8c7951d..2fef944acf8 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -846,7 +846,7 @@ steam.start() -- spawns the effect if (istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM - M.slip(5, 2, src, 1) + M.slip(5, 2, src) /datum/effect/effect/system/foam_spread diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index b8dd3495559..792bfa55b74 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -961,7 +961,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. if (istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM - if(M.slip(8, 5, src)) + if(M.slip(8, 5, src, NO_SLIP_WHEN_WALKING)) if (ishuman(M) && (M.real_name != src.owner)) if (istype(src.cartridge, /obj/item/weapon/cartridge/clown)) var/obj/item/weapon/cartridge/clown/cart = src.cartridge diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 3e3e2a8cfb1..4ca4d3160c1 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -11,7 +11,7 @@ /obj/item/weapon/bananapeel/Crossed(AM as mob|obj) if (istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM - M.slip(4, 2, src, 1) + M.slip(4, 2, src) /* @@ -20,7 +20,7 @@ /obj/item/weapon/soap/Crossed(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist if (istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM - M.slip(3, 2, src, 1) + M.slip(3, 2, src) /obj/item/weapon/soap/afterattack(atom/target, mob/user as mob, proximity) if(!proximity) return diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 2c34cecf6c1..fab95d2400e 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -55,12 +55,12 @@ switch (src.wet) if(1) //wet floor - if(!M.slip(8, 5, null, 2)) + if(!M.slip(8, 5, null, (NO_SLIP_WHEN_WALKING|STEP))) M.inertia_dir = 0 return if(2) //lube - M.slip(0, 10, null, 3) + M.slip(0, 10, null, (STEP|SLIDE|GALOSHES_DONT_HELP)) ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 70edd1bdbc5..4f829ca40be 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -548,24 +548,21 @@ return "trails_1" return "trails_2" -/* - * 0)clown pda == no slip when walking, lube=0 - * 1)banana peels, soap and foam == slip when walking, lube=1 - * 2)Wet floor == no slip when walking, take a step, lube=2 - * 3)Lube == always slips, sliding effect, lube=3 - */ +var/const/NO_SLIP_WHEN_WALKING = 1 +var/const/STEP = 2 +var/const/SLIDE = 4 +var/const/GALOSHES_DONT_HELP = 8 /mob/living/carbon/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) - if (m_intent=="walk" && (lube==0 || lube==2)) + if (m_intent=="walk" && (lube&NO_SLIP_WHEN_WALKING)) return 0 if(!lying) stop_pulling() - if(lube==2 || lube==3) + if(lube&STEP) step(src, src.dir) - if(lube==3) + if(lube&SLIDE) for(var/i=1, i<5, i++) spawn (i) - if(src) - step(src, src.dir) + step(src, src.dir) take_organ_damage(2) if(O) src << "You slipped on the [O.name]!" diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 844ae402ae7..edb6e5b37ab 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -67,6 +67,6 @@ /mob/living/carbon/human/slip(var/s_amount, var/w_amount, var/obj/O, var/lube) - if(isobj(src.shoes) && src.shoes.flags&NOSLIP && lube!=3) + if(isobj(shoes) && (shoes.flags&NOSLIP) && !(lube&GALOSHES_DONT_HELP)) return 0 .=..() \ No newline at end of file From 691ea75b45d9448164dc203948457828cbae1986 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 00:38:14 +0400 Subject: [PATCH 214/315] Fixes trunks being unwelded while under machinery --- code/modules/recycling/disposal.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 547c308003a..45bba956548 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1154,6 +1154,10 @@ if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I + if(linked) + user << "You need to deconstruct disposal machinery above this pipe." + return + if(W.remove_fuel(0,user)) playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) // check if anything changed over 2 seconds @@ -1167,7 +1171,7 @@ else user << "You must stay still while welding the pipe." else - user << "You need more welding fuel to cut the pipe." + return // would transfer to next pipe segment, but we are in a trunk From 1a2553dc33af3658452bdd387ce507982babbe1c Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 00:46:10 +0400 Subject: [PATCH 215/315] This wasnt supposed to be deleted --- code/modules/recycling/disposal.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 45bba956548..be4a7d4fa0d 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1171,6 +1171,7 @@ else user << "You must stay still while welding the pipe." else + user << "You need more welding fuel to cut the pipe." return From 33a315a111e2cccf88e1ceaaf4b366123ccfba62 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Thu, 19 Dec 2013 12:48:14 +1100 Subject: [PATCH 216/315] Switched position with gib --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index d627f3f9200..7e0a6aba6fc 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -971,11 +971,11 @@ return /mob/living/silicon/robot/proc/self_destruct() - gib() if(emagged) explosion(src.loc,1,2,4,flame_range = 2) else explosion(src.loc,-1,0,2) + gib() return /mob/living/silicon/robot/proc/UnlinkSelf() From f7293d8fa1cec64ba9e6b5efe2497144b4e8b678 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 06:31:42 +0400 Subject: [PATCH 217/315] Fixes add_log being used in an obsolete way >Contributors checking before commiting >Maintainers checking before merging Ahahahaha --- code/_onclick/item_attack.dm | 2 +- code/game/gamemodes/changeling/changeling_powers.dm | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 3bc540be44d..063a1eb6f40 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -35,7 +35,7 @@ user.lastattacked = M M.lastattacker = user - add_logs(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])") + add_logs(user, M, "attacked", object=src.name, addition="(INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])") //spawn(1800) // this wont work right // M.lastattacker = null diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index fefaabe3b0c..0b38a126046 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -557,6 +557,7 @@ var/list/datum/dna/hivemind_bank = list() src << "We stealthly sting [C.name]." if(C.mind && C.mind.changeling) C << "You feel a tiny prick." + add_logs(src, C, "unsuccessfully stinged") return 0 else return 1 @@ -580,9 +581,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_trasnform, "sting_transform", D) /mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T) - add_logs(src, T, "stung", "transformation sting", "new identity is [src.mind.changeling.chosen_dna.real_name]") if(!sting_can_reach(T, 40)) return 0 + add_logs(src, T, "stung", object="transformation sting", addition="new identity is [src.mind.changeling.chosen_dna.real_name]") if((HUSK in T.mutations) || !check_dna_integrity(T)) src << "Our sting appears ineffective against its DNA." return 0 @@ -602,9 +603,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_extract, "sting_extract") /mob/living/carbon/proc/sting_effect_extract(mob/living/carbon/T) - add_logs(src, T, "stung", "extraction sting") if(!sting_can_reach(T, 25)) return 0 + add_logs(src, T, "stung", object="extraction sting") if(src.mind.changeling.can_absorb_dna(T, usr)) src.mind.changeling.absorb_dna(T, usr) else//If the sting fails, give the guy most of his chems back. @@ -621,9 +622,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_mute, "sting_mute") /mob/living/carbon/proc/sting_effect_mute(mob/living/carbon/T) - add_logs(src, T, "stung", "mute sting") if(!sting_can_reach(T, 20)) return 0 + add_logs(src, T, "stung", object="mute sting") T.silent += 30 feedback_add_details("changeling_powers","MS") return 1 @@ -636,9 +637,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_blind, "sting_blind") /mob/living/carbon/proc/sting_effect_blind(mob/living/carbon/T) - add_logs(src, T, "stung", "blind sting") if(!sting_can_reach(T, 25)) return 0 + add_logs(src, T, "stung", object="blind sting") T << "Your eyes burn horrifically!" T.disabilities |= NEARSIGHTED T.eye_blind = 20 @@ -654,9 +655,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_lsd, "sting_lsd") /mob/living/carbon/proc/sting_effect_lsd(mob/living/carbon/T) - add_logs(src, T, "stung", "LSD sting") if(!sting_can_reach(T, 5)) return 0 + add_logs(src, T, "stung", object="LSD sting") spawn(rand(300,600)) if(T) T.hallucination += 400 feedback_add_details("changeling_powers","HS") @@ -670,9 +671,9 @@ var/list/datum/dna/hivemind_bank = list() set_sting(/mob/living/carbon/proc/sting_effect_cryo, "sting_cryo") /mob/living/carbon/proc/sting_effect_cryo(mob/living/carbon/T) - add_logs(src, T, "stung", "cryo sting") if(!sting_can_reach(T, 15)) return 0 + add_logs(src, T, "stung", object="cryo sting") if(T.reagents) T.reagents.add_reagent("frostoil", 30) T.reagents.add_reagent("ice", 30) From c03d7128c4ec0b99cab5ab77770aee627e3817fb Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 17:42:29 +0400 Subject: [PATCH 218/315] Yeah I suck cocks --- code/game/gamemodes/changeling/changeling_powers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 0b38a126046..029ee100bbf 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -557,7 +557,7 @@ var/list/datum/dna/hivemind_bank = list() src << "We stealthly sting [C.name]." if(C.mind && C.mind.changeling) C << "You feel a tiny prick." - add_logs(src, C, "unsuccessfully stinged") + add_logs(src, C, "unsuccessfully stung") return 0 else return 1 From 55063ef171799f36104ea02b5be1213f7df25cd5 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Dec 2013 20:28:31 +0400 Subject: [PATCH 219/315] Woopsy daisy Thats what horrible abominations of intext checks do to you Fixed #2088 --- code/__HELPERS/mobs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index b5fab892896..6ea75059a5a 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -81,8 +81,8 @@ Proc for attack log creation, because really why not proc/add_logs(mob/user, mob/target, what_done, var/admin=1, var/object=null, var/addition=null) if(user && ismob(user)) - user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target ? "[target.name][target.ckey ? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") + user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target ? "[target.name][(ismob(target) && target.ckey) ? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") if(target && ismob(target)) - target.attack_log += text("\[[time_stamp()]\] Has been [what_done] by [user ? "[user.name][user.ckey ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") + target.attack_log += text("\[[time_stamp()]\] Has been [what_done] by [user ? "[user.name][(ismob(user) && user.ckey) ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") if(admin) log_attack("[user ? "[user.name][(ismob(user) && user.ckey) ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"] [what_done] [target ? "[target.name][(ismob(target) && target.ckey)? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition]") \ No newline at end of file From ac1a96fd432f1047d1bfef6d0e04eb75f9692c15 Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 19 Dec 2013 11:50:33 -0500 Subject: [PATCH 220/315] feature: renames the monkeyizing var to "notransform" since that's how it was being used in the code, as a flag to tell code to ignore transformation (initially because they were already turning into a monkey). bugfix: gives notransform to etheral jaunting based on an observed edge case where a wizard was staff of changed while starting a jaunt and got stuck in bluespace for the rest of the round meta: modified revive() so I could remove all that horrible snowflake I introduced to let reviving simple mobs come back --- code/datums/diseases/transformation.dm | 4 +-- code/datums/mind.dm | 2 +- code/datums/spells/ethereal_jaunt.dm | 3 ++ code/modules/mob/death.dm | 4 +-- code/modules/mob/living/carbon/alien/death.dm | 4 +-- .../mob/living/carbon/alien/humanoid/life.dm | 2 +- .../carbon/alien/humanoid/update_icons.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- code/modules/mob/living/carbon/brain/death.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 4 +-- code/modules/mob/living/carbon/human/life.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 2 +- .../modules/mob/living/carbon/metroid/life.dm | 2 +- .../modules/mob/living/carbon/monkey/death.dm | 4 +-- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/living/living.dm | 10 ++++-- code/modules/mob/living/silicon/death.dm | 4 +-- .../modules/mob/living/silicon/robot/death.dm | 4 +-- code/modules/mob/living/silicon/robot/life.dm | 2 +- code/modules/mob/mob.dm | 2 +- code/modules/mob/mob_defines.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/mob/transform_procs.dm | 34 +++++++++---------- code/modules/projectiles/projectile/change.dm | 4 +-- code/modules/projectiles/projectile/magic.dm | 26 +++----------- code/unused/hivebot/life.dm | 2 +- 26 files changed, 61 insertions(+), 72 deletions(-) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index b80a7383e12..40413e626af 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -39,8 +39,8 @@ if(jobban_isbanned(affected_mob, new_form)) affected_mob.death(1) return - if(affected_mob.monkeyizing) return - affected_mob.monkeyizing = 1 + if(affected_mob.notransform) return + affected_mob.notransform = 1 affected_mob.canmove = 0 affected_mob.icon = null affected_mob.overlays.Cut() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 9f058a3e9a6..7f78d7013dd 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -783,7 +783,7 @@ datum/mind else if (href_list["monkey"]) var/mob/living/L = current - if (L.monkeyizing) + if (L.notransform) return switch(href_list["monkey"]) if("healthy") diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index 4cb8a1ad6ea..347361cc8ea 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -17,6 +17,7 @@ /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded for(var/mob/living/target in targets) + target.notransform = 1 //protects the mob from being transformed (replaced) midjaunt and getting stuck in bluespace spawn(0) var/mobloc = get_turf(target.loc) var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc ) @@ -51,6 +52,7 @@ if(target.Move(T)) break target.canmove = 1 + target.notransform = 0 target.client.eye = target del(animation) del(holder) @@ -77,6 +79,7 @@ if(target.Move(T)) break target.canmove = 1 + target.notransform = 0 target.client.eye = target del(animation) del(holder) diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index d0c60fb4609..0955e14b9a5 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -3,7 +3,7 @@ /mob/proc/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -27,7 +27,7 @@ /mob/proc/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 0f9607f16b7..5fa28c8af99 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -1,7 +1,7 @@ /mob/living/carbon/alien/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -22,7 +22,7 @@ /mob/living/carbon/alien/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 1cb0dc30104..c64fc278ff9 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -12,7 +12,7 @@ set invisibility = 0 set background = 1 - if (monkeyizing) + if (notransform) return ..() diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 465a85b9c44..bfbfebf21e5 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -38,7 +38,7 @@ /mob/living/carbon/alien/humanoid/regenerate_icons() ..() - if (monkeyizing) return + if (notransform) return update_inv_r_hand(0) update_inv_l_hand(0) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 34810129f39..51544135ef7 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -9,7 +9,7 @@ set invisibility = 0 set background = 1 - if (monkeyizing) + if (notransform) return ..() diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 7f5c308efaa..ca825f69d04 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -22,7 +22,7 @@ /mob/living/carbon/brain/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index b11fa29d273..a019dfa1806 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,7 +1,7 @@ /mob/living/carbon/human/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -21,7 +21,7 @@ /mob/living/carbon/human/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 94e0f6a5b81..d5bdc8cbd69 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -38,7 +38,7 @@ set invisibility = 0 set background = 1 - if (monkeyizing) return + if (notransform) return if(!loc) return // Fixing a null error that occurs when the mob isn't found in the world -- TLE ..() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 1266d9f21bd..302a2f442fa 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -339,7 +339,7 @@ Please contact me on #coderbus IRC. ~Carnie x //For legacy support. /mob/living/carbon/human/regenerate_icons() ..() - if(monkeyizing) return + if(notransform) return update_body() update_hair() update_mutations() diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 642ec17de74..b3cb4436812 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -11,7 +11,7 @@ set invisibility = 0 set background = 1 - if (src.monkeyizing) + if (src.notransform) return ..() diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index a13342620cb..c7cd5d4a92b 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,7 +1,7 @@ /mob/living/carbon/monkey/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -21,7 +21,7 @@ /mob/living/carbon/monkey/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 002d7f3fde6..1e98c6e52a2 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -12,7 +12,7 @@ /mob/living/carbon/monkey/Life() set invisibility = 0 set background = 1 - if (monkeyizing) return + if (notransform) return ..() var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index aefe2d0f814..8b915b7a000 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -245,6 +245,13 @@ src.updatehealth() /mob/living/proc/revive() + if(stat == 2) + dead_mob_list -= src + living_mob_list += src + if(isanimal(src)) + var/mob/living/simple_animal/A = src + A.health = A.maxHealth + return setToxLoss(0) setOxyLoss(0) setCloneLoss(0) @@ -274,9 +281,6 @@ C.reagents.clear_reagents() for(var/datum/disease/D in viruses) D.cure(0) - if(stat == 2) - dead_mob_list -= src - living_mob_list += src stat = CONSCIOUS update_fire() regenerate_icons() diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 8e1f035ce67..838d96ba034 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,7 +1,7 @@ /mob/living/silicon/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -22,7 +22,7 @@ /mob/living/silicon/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 41be911e75e..65d586ed447 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/gib() //robots don't die when gibbed. instead they drop their MMI'd brain var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -23,7 +23,7 @@ /mob/living/silicon/robot/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 24b7c72241a..f4212146a5c 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -2,7 +2,7 @@ set invisibility = 0 set background = 1 - if (src.monkeyizing) + if (src.notransform) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d9941e57a35..953f829a247 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -688,7 +688,7 @@ note dizziness decrements automatically in the mob's Life() proc. if(world.time < client.move_delay) return 0 if(stat==2) return 0 if(anchored) return 0 - if(monkeyizing) return 0 + if(notransform) return 0 if(restrained()) return 0 return 1 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index cf558c2fe0d..f5c8e414940 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -43,7 +43,7 @@ var/disabilities = 0 //Carbon var/atom/movable/pulling = null var/next_move = null - var/monkeyizing = null //Carbon + var/notransform = null //Carbon var/hand = null var/eye_blind = null //Carbon var/eye_blurry = null //Carbon diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 9f107361df7..263fb744721 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -143,7 +143,7 @@ /client/Move(n, direct) if(!mob) return 0 - if(mob.monkeyizing) + if(mob.notransform) return 0 //This is sota the goto stop mobs from moving var if(mob.control_object) return Move_object(direct) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index bca7be9241e..5edc7dcad0c 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -1,5 +1,5 @@ /mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null) - if (monkeyizing) + if (notransform) return //Handle items on mob @@ -15,7 +15,7 @@ //Make mob invisible and spawn animation regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 stunned = 1 icon = null @@ -86,7 +86,7 @@ //Could probably be merged with monkeyize but other transformations got their own procs, too /mob/living/carbon/proc/humanize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null) - if (monkeyizing) + if (notransform) return //Handle items on mob @@ -112,7 +112,7 @@ //Make mob invisible and spawn animation regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 stunned = 1 icon = null @@ -184,7 +184,7 @@ return ..() /mob/living/carbon/human/AIize() - if (monkeyizing) + if (notransform) return for(var/t in organs) del(t) @@ -192,12 +192,12 @@ return ..() /mob/living/carbon/AIize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) drop_from_inventory(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -265,7 +265,7 @@ //human -> robot /mob/living/carbon/human/proc/Robotize(var/delete_items = 0) - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) if(delete_items) @@ -273,7 +273,7 @@ else drop_from_inventory(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -310,12 +310,12 @@ //human -> alien /mob/living/carbon/human/proc/Alienize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) drop_from_inventory(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -340,12 +340,12 @@ del(src) /mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num) - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) drop_from_inventory(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -375,12 +375,12 @@ del(src) /mob/living/carbon/human/proc/corgize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) drop_from_inventory(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -404,13 +404,13 @@ usr << "\red Sorry but this mob type is currently unavailable." return - if(monkeyizing) + if(notransform) return for(var/obj/item/W in src) drop_from_inventory(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 5c623b5bfea..34c03d25919 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -12,8 +12,8 @@ /obj/item/projectile/change/proc/wabbajack (mob/M as mob in living_mob_list) if(istype(M, /mob/living) && M.stat != DEAD) - if(M.monkeyizing) return - M.monkeyizing = 1 + if(M.notransform) return + M.notransform = 1 M.canmove = 0 M.icon = null M.overlays.Cut() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 78ab4db6cd2..d87ade304a7 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -38,26 +38,8 @@ if(istype(target,/mob)) var/old_stat = target.stat - if(isanimal(target) && target.stat == DEAD) - var/mob/living/simple_animal/O = target - var/mob/living/simple_animal/A = new O.type(O.loc) - A.real_name = O.real_name - A.name = O.name - if(iscorgi(O)) - var/mob/living/simple_animal/corgi/C = O - if(C.inventory_head) - C.inventory_head.loc = C.loc - if(C.inventory_back) - C.inventory_back.loc = C.loc - if(O.mind) - O.mind.transfer_to(A) - else - A.key = O.key - del(O) - target = A - else - target.revive() - target.suiciding = 0 + target.revive() + target.suiciding = 0 if(!target.ckey) for(var/mob/dead/observer/ghost in player_list) if(target.real_name == ghost.real_name) @@ -124,8 +106,8 @@ proc/wabbajack(mob/living/M) if(istype(M)) if(istype(M, /mob/living) && M.stat != DEAD) - if(M.monkeyizing) return - M.monkeyizing = 1 + if(M.notransform) return + M.notransform = 1 M.canmove = 0 M.icon = null M.overlays.Cut() diff --git a/code/unused/hivebot/life.dm b/code/unused/hivebot/life.dm index 119efcaaa01..33198a5f310 100644 --- a/code/unused/hivebot/life.dm +++ b/code/unused/hivebot/life.dm @@ -2,7 +2,7 @@ set invisibility = 0 set background = 1 - if (src.monkeyizing) + if (src.notransform) return if (src.stat != 2) From 7fd14af418b02621fedb5aae481376d6830443a7 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Thu, 19 Dec 2013 18:58:27 +0000 Subject: [PATCH 221/315] Changelog for #2071. Insta-merge please. --- html/changelog.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 8c0c4d6bea2..06485211c17 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -67,8 +67,9 @@ should be listed in the changelog upon commit tho. Thanks. -->

    18 December 2013

    Giacom updated:

      -
    • THE REALISM: Injectors such as syringes, parapens and hypos will not penetrate coveralls with thick material, this includes space suits, biosuits, bombsuits, and their head slot equivalent. Injectors now also consider where you aim, if you aim for the head it will try to use it through the head slot, otherwise it will aim for the body. To clarify, if you are wearing a space helmet and a doctor tries to inject you while aiming at your head, it will protect you until they aim for the unprotected body; same story for wearing a space suit and not a helmet.
    • -
    • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Woah. This brand new technology will help keep out those snoopy crew members.
    • +
    • THE REALISM: Injectors such as syringes, parapens and hypos will not penetrate coveralls with thick material, this includes space suits, biosuits, bombsuits, and their head slot equivalent. Injectors now also consider where you aim, if you aim for the head it will try to use it through the head slot, otherwise it will aim for the body. To clarify, if you are wearing a space helmet and a doctor tries to inject you while aiming at your head, it will protect you until they aim for the unprotected body; same story for wearing a space suit and not a helmet.
    • +
    • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Whoa. This brand new technology will help keep out those snoopy crew members.
    • +
    • Lowered the cooldown of creating virus cultures to 5 seconds. You now only need to mix one unit of synaptizine, in a blood full of an advance virus, to get it to remove a random symptom.
    From 78d1c8c112ced3f1fed989b847f55e8bbd105b51 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Thu, 19 Dec 2013 19:49:10 +0000 Subject: [PATCH 222/315] Changes the heal proc to use get_damage twice instead of using the proc twice. - for Gia. --- code/datums/diseases/advance/symptoms/damage_converter.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 6d7be3439b1..8d34148ee7c 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -42,8 +42,7 @@ Bonus for(var/obj/item/organ/limb/affecting in H.organs) //Find limb if(affecting.status == ORGAN_ORGANIC) //is it organic? if(affecting.burn_dam > 0 || affecting.brute_dam > 0)// is it damaged? - affecting.heal_robotic_damage(0, get_damage) // 0 brute, get_damage burn - affecting.heal_robotic_damage(get_damage, 0) // get_damage brute, 0 burn + affecting.heal_robotic_damage(get_damage, get_damage) // get_damage brute, get_damage burn M.adjustToxLoss(get_damage) return 1 From 5e3997e0e2c388762701d76b9b0090a0f21294b1 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 20 Dec 2013 00:30:35 +0400 Subject: [PATCH 223/315] Fixes chem dispenser properly Fixed #2051 --- code/modules/reagents/Chemistry-Machinery.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 22bd853e340..a158a5e7468 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -8,7 +8,7 @@ anchored = 1 icon = 'icons/obj/chemical.dmi' icon_state = "dispenser" - use_power = 0 + use_power = 1 idle_power_usage = 40 var/energy = 50 var/max_energy = 50 @@ -78,7 +78,7 @@ * @return nothing */ /obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main") - if(stat & (BROKEN|NOPOWER)) return + if(stat & (BROKEN)) return if(user.stat || user.restrained()) return // this is the data which will be sent to the ui @@ -123,7 +123,7 @@ return /obj/machinery/chem_dispenser/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN)) + if(stat & (BROKEN)) return 0 // don't update UIs attached to this object if(href_list["amount"]) From c917999f2f562ff25d724cac6692bb7d4b4f4780 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Thu, 19 Dec 2013 20:41:19 +0000 Subject: [PATCH 224/315] * Monkeys no longer wonder off when being pulled or grabbed. * Fixed the grabbed_by list not being emptied when the grab is deleted. * Removed duplicated use of grabbed_by. * Undef'd defines which are only used in a single file. --- .../mob/living/carbon/alien/humanoid/humanoid.dm | 1 - code/modules/mob/living/carbon/alien/larva/larva.dm | 1 - .../mob/living/carbon/human/human_attackalien.dm | 1 - .../mob/living/carbon/human/human_attackhand.dm | 1 - code/modules/mob/living/carbon/metroid/metroid.dm | 2 -- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/living/carbon/monkey/monkey.dm | 2 -- code/modules/mob/living/silicon/robot/robot.dm | 1 - .../mob/living/simple_animal/simple_animal.dm | 2 -- code/modules/mob/mob_grab.dm | 13 ++++++++++--- 10 files changed, 11 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 35055b1a056..0ea869a2aec 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -257,7 +257,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index f7ca9723844..272ed81d3b8 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -227,7 +227,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index 8bd5f4783c2..17db1f5023d 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -15,7 +15,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 940ce1091c4..6a46b12a8e4 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -51,7 +51,6 @@ if(!G) //the grab will delete itself in New if affecting is anchored return M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 7e967fbf1f9..5341c64b2c8 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -437,7 +437,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M @@ -528,7 +527,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 002d7f3fde6..99edbe45da1 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -67,7 +67,7 @@ G.process() if(!client && stat == CONSCIOUS) - if(prob(33) && canmove && isturf(loc)) + if(prob(33) && canmove && isturf(loc) && !pulledby && !grabbed_by.len) step(src, pick(cardinal)) if(prob(1)) emote(pick("scratch","jump","roll","tail")) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index a37cc7af9a5..5562cae73a1 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -151,7 +151,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M @@ -220,7 +219,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 79d8a321b66..00a31ed6338 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -603,7 +603,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) for(var/mob/O in viewers(src, null)) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 9f12a4b03bd..0b5b38906a4 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -277,7 +277,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M @@ -313,7 +312,6 @@ M.put_in_active_hand(G) - grabbed_by += G G.synch() LAssailant = M diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 9107fcd7577..c5a9c364919 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -32,6 +32,14 @@ hud.name = "reinforce grab" hud.master = src + affecting.grabbed_by += src + + +/obj/item/weapon/grab/Del() + if(affecting) + affecting.grabbed_by -= src + del(hud) + ..() //Used by throw code to hand over the mob, instead of throwing the grab. The grab is then deleted by the throw code. /obj/item/weapon/grab/proc/throw() @@ -202,6 +210,5 @@ /obj/item/weapon/grab/dropped() del(src) -/obj/item/weapon/grab/Del() - del(hud) - ..() \ No newline at end of file +#undef UPGRADE_COOLDOWN +#undef UPGRADE_KILL_TIMER \ No newline at end of file From 80f2076bccc6b93bde1ad2d816dd802e0479dd59 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Thu, 19 Dec 2013 22:07:52 +0000 Subject: [PATCH 225/315] * Fixed the party alarm from only working in areas with a certain light level. * Reduced a lot of duplicated code in the party alarm. * Added a shield range variable for the anti-breach shield generators. * Changed the shield range to 4, making them more useful. * Fixed a bug with the deployed_shields list not being cleared after the shields are down. * Fixed a runtime with shake_camera() --- code/game/gamemodes/meteor/meteors.dm | 3 +- code/game/machinery/alarm.dm | 99 +++++++-------------------- code/game/machinery/shieldgen.dm | 4 +- code/modules/mob/mob_helpers.dm | 11 +-- 4 files changed, 37 insertions(+), 80 deletions(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 75b7be1afff..e68da194442 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -133,7 +133,8 @@ var/turf/T = get_turf(M) if(!T || T.z != src.z) continue - shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3) + var/dist = get_dist(M.loc, src.loc) + shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3) M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10) explosion(src.loc, 0, 1, 2, 3, 0) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 2bd09e00f38..307be170319 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -1211,25 +1211,6 @@ Code shamelessly copied from apc_frame flags = FPRINT | TABLEPASS| CONDUCT -/* - * Party button - */ - -/obj/machinery/partyalarm - name = "\improper PARTY BUTTON" - desc = "Cuban Pete is in the house!" - icon = 'icons/obj/monitors.dmi' - icon_state = "fire0" - var/detecting = 1.0 - var/working = 1.0 - var/time = 10.0 - var/timing = 0.0 - var/lockdownbyai = 0 - anchored = 1.0 - use_power = 1 - idle_power_usage = 2 - active_power_usage = 6 - /obj/item/firealarm_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 ) @@ -1262,16 +1243,22 @@ Code shamelessly copied from apc_frame del(src) -/obj/machinery/partyalarm/attack_paw(mob/user as mob) - return src.attack_hand(user) -/obj/machinery/partyalarm/attack_hand(mob/user as mob) +/* + * Party button + */ + +/obj/machinery/firealarm/partyalarm + name = "\improper PARTY BUTTON" + desc = "Cuban Pete is in the house!" + +/obj/machinery/firealarm/partyalarm/attack_hand(mob/user as mob) if(user.stat || stat & (NOPOWER|BROKEN)) return user.set_machine(src) var/area/A = src.loc var/d1 - var/d2 + var/dat if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) A = A.loc @@ -1279,76 +1266,40 @@ Code shamelessly copied from apc_frame d1 = text("No Party :(", src) else d1 = text("PARTY!!!", src) - if (src.timing) - d2 = text("Stop Time Lock", src) - else - d2 = text("Initiate Time Lock", src) - var/second = src.time % 60 - var/minute = (src.time - second) / 60 - var/dat = text("Party Button []\n
    \nTimer System: []
    \nTime Left: [][] - - + +\n
    ", d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src) - user << browse(dat, "window=partyalarm") - onclose(user, "partyalarm") + dat = text("Party Button []", d1) + else A = A.loc if (A.fire) d1 = text("[]", src, stars("No Party :(")) else d1 = text("[]", src, stars("PARTY!!!")) - if (src.timing) - d2 = text("[]", src, stars("Stop Time Lock")) - else - d2 = text("[]", src, stars("Initiate Time Lock")) - var/second = src.time % 60 - var/minute = (src.time - second) / 60 - var/dat = text("[] []\n
    \nTimer System: []
    \nTime Left: [][] - - + +\n
    ", stars("Party Button"), d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src) - user << browse(dat, "window=partyalarm") - onclose(user, "partyalarm") + dat = text("[] []", stars("Party Button"), d1) + + var/datum/browser/popup = new(user, "firealarm", "Party Alarm") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() return -/obj/machinery/partyalarm/proc/reset() +/obj/machinery/firealarm/partyalarm/reset() if (!( src.working )) return var/area/A = src.loc A = A.loc if (!( istype(A, /area) )) return - A.partyreset() + for(var/area/RA in A.related) + RA.partyreset() return -/obj/machinery/partyalarm/proc/alarm() +/obj/machinery/firealarm/partyalarm/alarm() if (!( src.working )) return var/area/A = src.loc A = A.loc if (!( istype(A, /area) )) return - A.partyalert() - return - -/obj/machinery/partyalarm/Topic(href, href_list) - if(..()) - return - if (usr.stat || stat & (BROKEN|NOPOWER)) - return - if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) - usr.set_machine(src) - if (href_list["reset"]) - src.reset() - else - if (href_list["alarm"]) - src.alarm() - else - if (href_list["time"]) - src.timing = text2num(href_list["time"]) - else - if (href_list["tp"]) - var/tp = text2num(href_list["tp"]) - src.time += tp - src.time = min(max(round(src.time), 0), 120) - src.updateUsrDialog() - - src.add_fingerprint(usr) - else - usr << browse(null, "window=partyalarm") - return - return + for(var/area/RA in A.related) + RA.partyalert() + return \ No newline at end of file diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 989e897721d..7c2e4f5f39e 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -150,6 +150,7 @@ var/list/deployed_shields = list() var/is_open = 0 //Whether or not the wires are exposed var/locked = 0 + var/shield_range = 4 /obj/machinery/shieldgen/Del() for(var/obj/machinery/shield/shield_tile in deployed_shields) @@ -163,7 +164,7 @@ src.active = 1 update_icon() - for(var/turf/target_tile in range(2, src)) + for(var/turf/target_tile in range(shield_range, src)) if (istype(target_tile,/turf/space) && !(locate(/obj/machinery/shield) in target_tile)) if (malfunction && prob(33) || !malfunction) deployed_shields += new /obj/machinery/shield(target_tile) @@ -176,6 +177,7 @@ for(var/obj/machinery/shield/shield_tile in deployed_shields) del(shield_tile) + deployed_shields.Cut() /obj/machinery/shieldgen/process() if(malfunction && active) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 9310e32b968..1d109b80f5b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -271,10 +271,13 @@ It's fairly easy to fix if dealing with single letters but not so much with comp var/x M.shakecamera = 1 for(x=0; x Date: Thu, 19 Dec 2013 23:14:51 +0000 Subject: [PATCH 226/315] Security Sprite updates. Replaces all instances of the old Swat and riot sprites with Validsalad's new ones Replaces Sechailer's with Officer, Warden and HoS versions code and Sprites wise (Sptires by Validsalad again) The officer gas mask is gas/sechailer, the warden's is gas/sechailer/warden and the HoS's is gas/sechailer/hos --- .../crates_lockers/closets/secure/security.dm | 6 +++--- code/modules/clothing/masks/gasmask.dm | 13 +++++-------- icons/mob/mask.dmi | Bin 27052 -> 28510 bytes icons/mob/suit.dmi | Bin 229450 -> 233480 bytes icons/obj/clothing/masks.dmi | Bin 13229 -> 13019 bytes icons/obj/clothing/suits.dmi | Bin 61083 -> 61408 bytes 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index a01a9ce7cdb..8fb33cd4256 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -82,8 +82,8 @@ new /obj/item/device/radio/headset/heads/hos(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) new /obj/item/weapon/shield/riot(src) - new /obj/item/clothing/mask/gas/sechailer/red(src) - new /obj/item/clothing/mask/gas/sechailer/blue(src) + new /obj/item/clothing/mask/gas/sechailer(src) + new /obj/item/clothing/mask/gas/sechailer/hos(src) new /obj/item/weapon/storage/lockbox/loyalty(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/device/flash(src) @@ -119,7 +119,7 @@ new /obj/item/weapon/clipboard(src) new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) - new /obj/item/clothing/mask/gas/sechailer/red(src) + new /obj/item/clothing/mask/gas/sechailer/warden(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/reagent_containers/spray/pepper(src) new /obj/item/weapon/melee/baton/loaded(src) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index db354b79e4e..d36c1da37a7 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -44,18 +44,15 @@ name = "security gas mask" desc = "A standard issue Security gas mask with integrated 'Compli-o-nator 3000' device, plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you taze them. Do not tamper with the device." action_button_name = "HALT!" - icon_state = "hailer_white" + icon_state = "officermask" var/cooldown = 0 var/aggressiveness = 2 -/obj/item/clothing/mask/gas/sechailer/blue - icon_state = "hailer_blue" +/obj/item/clothing/mask/gas/sechailer/warden + icon_state = "wardenmask" -/obj/item/clothing/mask/gas/sechailer/black - icon_state = "hailer_black" - -/obj/item/clothing/mask/gas/sechailer/red - icon_state = "hailer_red" +/obj/item/clothing/mask/gas/sechailer/hos + icon_state = "hosmask" /obj/item/clothing/mask/gas/sechailer/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/screwdriver)) diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index ee94f54395b5e5aa605baa8582c6fbdd9911153d..6772746015324ee0919a53180303f6dd534d9003 100644 GIT binary patch literal 28510 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 diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index c7d9191da74b802c931bbc53efce868c641f8d82..ce3b7c6404692bb3862cb0bd73b2fcfa851cbf9a 100644 GIT binary patch literal 233480 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%0DTJ0(4pxgiS* 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

    $`AP>eHH#!V!wy-8yk$( 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 literal 229450 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

    K&7P)&>oF(2}keuf1PnPWuJf6EvTo%k=!;gOL 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�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 literal 61083 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 E12$Kj&Hw-a From 213f3fff310f2554868856835787d213289a4dbe Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 19 Dec 2013 22:13:21 -0300 Subject: [PATCH 227/315] Some fixes for Linda, now the Move() proc of objects that block air is different. Example below. object/Move() var/turf/T = loc ..() move_update_air(T) --- code/LINDA/LINDA_system.dm | 19 +++++++++++++------ code/game/machinery/doors/door.dm | 4 ++-- code/game/machinery/shieldgen.dm | 4 ++-- code/game/objects/effects/aliens.dm | 5 ++--- code/game/objects/effects/effect_system.dm | 4 ++-- code/game/objects/structures/mineral_doors.dm | 4 ++-- .../objects/structures/windoor_assembly.dm | 4 ++-- code/game/objects/structures/window.dm | 4 ++-- code/modules/assembly/bomb.dm | 4 +++- 9 files changed, 30 insertions(+), 22 deletions(-) diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index 2e8fe1e4888..daf76585557 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -200,14 +200,21 @@ turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) T.atmos_adjacent_turfs &= ~counterdir /atom/movable/proc/air_update_turf(var/command = 0) - if(istype(loc,/turf)) - for(var/turf/T in locs) // used by double wide doors and other nonexistant multitile structures - if(command) - T.CalculateAdjacentTurfs() - if(air_master) - air_master.add_to_active(T,command) + if(!istype(loc,/turf) && command) + return + for(var/turf/T in locs) // used by double wide doors and other nonexistant multitile structures + T.air_update_turf(command) +/turf/proc/air_update_turf(var/command = 0) + if(command) + CalculateAdjacentTurfs() + if(air_master) + air_master.add_to_active(src,command) +/atom/movable/proc/move_update_air(var/turf/T) + if(istype(T,/turf)) + T.air_update_turf(1) + air_update_turf(1) /atom/movable/proc/atmos_spawn_air(var/text, var/amount) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires var/turf/simulated/T = get_turf(src) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a0ef58902f2..e4d26278b14 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -67,9 +67,9 @@ return /obj/machinery/door/Move() - air_update_turf(1) + var/turf/T = loc ..() - air_update_turf(1) + move_update_air(T) /obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group) return 0 diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 989e897721d..bacb62e3d7d 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -22,9 +22,9 @@ ..() /obj/machinery/shield/Move() - air_update_turf(1) + var/turf/T = loc ..() - air_update_turf(1) + move_update_air(T) /obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height, air_group) if(!height || air_group) return 0 diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 88d728ed76c..c4c30e7b3ff 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -35,10 +35,9 @@ return /obj/structure/alien/resin/Move() - air_update_turf(1) + var/turf/T = loc ..() - air_update_turf(1) - return + move_update_air(T) /obj/structure/alien/resin/CanAtmosPass() return !density diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 128fe3850a1..c6415f85040 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -930,9 +930,9 @@ steam.start() -- spawns the effect ..() Move() - air_update_turf(1) + var/turf/T = loc ..() - air_update_turf(1) + move_update_air(T) proc/updateicon() if(metal == 1) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index e5d9fae0fb1..db6a61e58ce 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -30,9 +30,9 @@ return Move() - air_update_turf(1) + var/turf/T = loc ..() - air_update_turf(1) + move_update_air(T) Bumped(atom/user) ..() diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 983e808ab85..b43eb6352a2 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -37,9 +37,9 @@ obj/structure/windoor_assembly/Del() ..() /obj/structure/windoor_assembly/Move() - air_update_turf(1) + var/turf/T = loc ..() - air_update_turf(1) + move_update_air(T) /obj/structure/windoor_assembly/update_icon() icon_state = "[facing]_[secure]windoor_assembly[state]" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index b3dd2863767..7813bc255e5 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -301,10 +301,10 @@ /obj/structure/window/Move() - air_update_turf(1) + var/turf/T = loc ..() dir = ini_dir - air_update_turf(1) + move_update_air(T) /obj/structure/window/CanAtmosPass(turf/T) if(get_dir(loc, T) == dir) diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 678ecce2aa0..0b21b2aa101 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -156,6 +156,7 @@ ground_zero.assume_air(air_contents) ground_zero.hotspot_expose(1000, 125) + air_update_turf() if(master) del(master) del(src) @@ -165,4 +166,5 @@ var/turf/simulated/T = get_turf(src) if(!T) return - T.assume_air(removed) \ No newline at end of file + T.assume_air(removed) + air_update_turf() \ No newline at end of file From a73721f7a1d9c7380abbe6e1fba91f2ddf346661 Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 19 Dec 2013 21:49:15 -0500 Subject: [PATCH 228/315] Fixes for Gia: Fixes the mysteries of reviving simple animals in the least intrusive manner I could think of Removes player_controlled because ckeys did much the same thing Uses update_canmove() instead of hardseting it One last Bugfix: Simple animals generated with no real_name will use their initial name as their real name so that transformed antags will not get a "(survived as )" because the thing they turned into didn't have a real_name set. --- code/modules/mob/living/living.dm | 2 +- .../living/simple_animal/friendly/farm_animals.dm | 2 +- .../mob/living/simple_animal/friendly/mouse.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 14 ++++---------- code/modules/projectiles/projectile/magic.dm | 2 +- 5 files changed, 8 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 41a4882f910..e2c03e0f831 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -280,7 +280,7 @@ if(stat == 2) dead_mob_list -= src living_mob_list += src - stat = CONSCIOUS + if(!isanimal(src)) stat = CONSCIOUS update_fire() regenerate_icons() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 04e3f4abab0..f902233373d 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -177,7 +177,7 @@ . =..() if(!.) return - if(!stat && !player_controlled) + if(!stat && !ckey) amount_grown += rand(1,2) if(amount_grown >= 100) new /mob/living/simple_animal/chicken(src.loc) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4dee403e796..e1b266d7edf 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -36,7 +36,7 @@ /mob/living/simple_animal/mouse/Die() ..() - if(!player_controlled) + if(!ckey) var/obj/item/trash/deadmouse/M = new(src.loc) M.icon_state = src.icon_dead del (src) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index d30968fe145..d7db23b7ea2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -57,11 +57,11 @@ var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster - var/player_controlled = 0 //Set to true if the simple animal ever had someone behind the steering wheel, even if they aren't currently - /mob/living/simple_animal/New() ..() verbs -= /mob/verb/observe + if(!real_name) + real_name = name /mob/living/simple_animal/Login() if(src && src.client) @@ -81,6 +81,7 @@ living_mob_list += src stat = CONSCIOUS density = 1 + update_canmove() return 0 @@ -197,10 +198,6 @@ adjustBruteLoss(unsuitable_atoms_damage) return 1 - //Player check - if(!player_controlled && mind) - player_controlled = 1 - /mob/living/simple_animal/Bumped(AM as mob|obj) if(!AM) return @@ -438,7 +435,6 @@ stat(null, "Health: [round((health / maxHealth) * 100)]%") /mob/living/simple_animal/proc/Die() - living_mob_list -= src dead_mob_list += src icon_state = icon_dead stat = DEAD @@ -489,6 +485,4 @@ /mob/living/simple_animal/revive() health = maxHealth - if(stat == 2) - dead_mob_list -= src - living_mob_list += src \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index d87ade304a7..ffe04022c3f 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -203,7 +203,7 @@ proc/wabbajack(mob/living/M) del(M) if(!new_mob.canmove) //edge case of someone getting hit with two bolts at the same time - new_mob.canmove = 1 + new_mob.update_canmove() return new_mob /obj/item/projectile/magic/animate From 18eab517944233303cd587162966f773841909c4 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 20 Dec 2013 18:05:06 +0400 Subject: [PATCH 229/315] Fixes mechs click through windows and what not I ded plz fix --- code/game/mecha/mecha.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 770d34972c6..671fb31afad 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -236,7 +236,7 @@ target = safepick(view(3,target)) if(!target) return - if(get_dist(src, target)>1) + if(!target.Adjacent(src)) if(selected && selected.is_ranged()) selected.action(target) else if(selected && selected.is_melee()) From ae6a4d9b187a0a9968ecdae29cb567c5020b01b2 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 20 Dec 2013 22:57:41 +0400 Subject: [PATCH 230/315] Fixes flamethrowers shooting through stuff Fixed #2059 They need to be fixed more, but thats a theme for another PR --- code/game/objects/items/weapons/flamethrower.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index b992c01a7d3..c2df5d93659 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -16,7 +16,6 @@ var/throw_amount = 100 var/lit = 0 //on or off var/operating = 0//cooldown - var/turf/previousturf = null var/obj/item/weapon/weldingtool/weldtool = null var/obj/item/device/assembly/igniter/igniter = null var/obj/item/weapon/tank/plasma/ptank = null @@ -164,17 +163,17 @@ /obj/item/weapon/flamethrower/proc/flame_turf(turflist) if(!lit || operating) return operating = 1 + var/turf/previousturf = get_turf(src) for(var/turf/simulated/T in turflist) if(!T.air) break - if(!previousturf && length(turflist)>1) - previousturf = get_turf(src) + if(T == previousturf) continue //so we don't burn the tile we be standin on - if(previousturf && LinkBlocked(previousturf, T)) + if(!T.CanAtmosPass(previousturf)) break ignite_turf(T) sleep(1) - previousturf = null + previousturf = T operating = 0 for(var/mob/M in viewers(1, loc)) if((M.client && M.machine == src)) From 47545f439efc320ae83831e919f3e68eb5d835c5 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 20 Dec 2013 22:09:06 +0000 Subject: [PATCH 231/315] * Added ore boxes to the gulag, and added a conveyor belt which goes outside and has a loading machine, which will take the ore from the orebox. * Added sprites for the stacking machine going in the reverse direction, just set the dir to 1 instead of 2. * Added prison intercoms which will not broadcast until someone hacks it. Added these intercoms in the gulag, the perma brig and the brig cells. * When a prisoner has received enough points for freedom, if they try to move the shuttle, or open the middle door, while someone is on it they will get an error message. This way there is no way for a free'd prisoner to release their fellow prisoners once they have reached their point target. The shuttle will depart right away when you call the shuttle from the stacking console, to stop prisoners from getting on while it departs. --- code/__HELPERS/game.dm | 11 ++- .../game/objects/items/devices/radio/radio.dm | 3 + code/modules/mining/laborcamp/laborstacker.dm | 16 +++- code/modules/shuttle/shuttle.dm | 4 +- icons/obj/machines/mining_machines.dmi | Bin 2858 -> 2996 bytes maps/tgstation.2.1.2.dmm | 87 ++++++++++-------- 6 files changed, 75 insertions(+), 46 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index f2a2b9140d9..ddbced1ff8d 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -42,7 +42,16 @@ return heard - +/proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon) + var/area/our_area = get_area_master(the_area) + for(var/C in living_mob_list) + if(!istype(C, check_type)) + continue + if(C == must_be_alone) + continue + if(our_area == get_area_master(C)) + return 0 + return 1 //Magic constants obtained by using linear regression on right-angled triangles of sides 0#a6^4$pzF;jh*K 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 LpZ&G_f^Ym6rx~A4 delta 2551 zcmV=qK7$Z_$1Jh5WK4k@0KNoPs z0RR)Sc=ZV>eIoz>36)7iK~#90?VO8xn>Y}Ktr|PsUfhjCo2|D|HjZ%o{!h5Ng6;!I z#3G+g8@uU`(44`>gj031sroQNwr*WeW}#1}wvFX*A^m2hK?-V*~EyG+^p@V}8DY=$|sc z$`5gW0|tKQZGbu6ZGbi2F)(rb-Y&3zg(w5aD!T#DcyoTsAlm`5c2HUaobl25EeBM{p5W#U0LI7XcYjiezJ_nn0BC%Ce!9ip zf0SeJ)(rp*0P~M9c-sbm2B7)V4KCXNcsww_cY}B39s@b|@7v%*anA-Hi@O_qFz&ty zJ{qs8s;XLE_L=CTor;?{F~vVI7j~IRqw{!o5c@ z<${- za|Emo#klVzqVdDz@nHNUI&?VbdvH4l@$pB{&-?vP=3xAE>(8-N4&{G0zYM-lPs6W= z)o?g|+B~us_2cG28~^)ZJsgamHoQZRoA&y; zd8B^!V-LiKBLo->x4a2-zC>Ij9#Xy2(DS{RU?7 zrg{F))-yMNrNJnd2IgPMe`p1&_d7cJ4b0=rK&$Bmx5@y!cjRzva%o_G{w51N(*mDV zeP`Fed`=B8SD2RGvImS`T48|S{1d!wHI8-O?`UrRCJH>CSb^f*jn1!*f%9=TX9iwa z+4OMv^3^0F3gTKiw0$gIjnE`ICSJw#xNWDZ2-kH2N zFgJgr1s<&eW&5c^fBNGJR0g!KlR35w=q0W*JPZetVtM|UZ*VpaqYjeE{18LmJ zP3#O4;^_wETShN%yM5g@S8<|F^b1V_2tgOLwv z`5Ma(c?9Ll-&)0SjAO#LayT2r>*Fz=%>`BUd$?ABkN2%%AryPo^FbqD!y;d6-TbZX z^Ecw-+F<(Sa4}M3U)UYbhsoZx9!_MsDf{P+7rk%AfBeeeaBKg0sGW!!{P`R1x*+ew zaPj2fV)s1cig1Fx2!?CJFUX8|4=;O0*`^0{bz`S~P&e_8T5d%pgr$i=C@?%bYPQFn27Mu%IDtAApc8q@u4z^S-!>dIre1cYtjGODfN^?PW` zSGEKT%*wUJhhqJqzWz?dcTWCBh-5@;f8gYEJeuqGVdiribmpr8!v&uCa={4a>j`7y zhyAOyhyD7+|cWFJ4AIH~in9UGo3;wDP&#N!vj1(go#fVE$IPpnMI^-wGF$ufh3S z;ezrtIDac#P`(D|Z-ooW*WmoEa6$PRoWB(=C|?_qzm=^TUsaW@{{baF1O7Z}Esp>I N002ovPDHLkV1gw-LNWjV diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index 6613054d2e2..04d816f5cbc 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -49,11 +49,11 @@ "aaW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/hos) "aaX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/hos) "aaY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/hos) -"aaZ" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"aaZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "aba" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"abb" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 2"; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"abb" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = -25; pixel_y = -2; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "abc" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt2"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"abd" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 1"; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"abd" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = -25; pixel_y = -2; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "abe" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt1"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abf" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "abg" = (/obj/machinery/deployable/barrier,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) @@ -467,13 +467,13 @@ "aiY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor,/area/security/processing) "aiZ" = (/obj/machinery/door_control{id = "prison release"; name = "Prison Release Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "PRelease"; pixel_x = 26; pixel_y = -3},/turf/simulated/floor,/area/security/processing) "aja" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"ajb" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"ajb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 25; pixel_y = -2; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "ajc" = (/obj/structure/closet/secure_closet/brig{id = "Cell 1"; name = "Cell 1 Locker"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) -"ajd" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"ajd" = (/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aje" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "ajf" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "ajg" = (/obj/structure/closet/secure_closet/brig{id = "Cell 4"; name = "Cell 4 Locker"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) -"ajh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"ajh" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 2"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aji" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "ajj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "ajk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) @@ -5400,8 +5400,10 @@ "bZR" = (/obj/machinery/light,/turf/simulated/floor,/area/atmos) "bZS" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/atmos) "bZT" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/atmos) +"bZU" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "bZV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "arrival"; dir = 10},/area/atmos) "bZW" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/turf/simulated/floor{icon_state = "arrival"},/area/atmos) +"bZX" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 1"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "bZY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bZZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating/airless,/area) "caa" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area) @@ -6438,6 +6440,7 @@ "ctR" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) "ctS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "ctT" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"ctU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "ctV" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "ctW" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "ctX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -7702,8 +7705,8 @@ "cSi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) "cSj" = (/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) "cSk" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) -"cSl" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cSm" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cSl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=NMine"; location = "SMine"},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) +"cSm" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security) "cSn" = (/turf/simulated/mineral/random/labormineral,/area/mine/explored) "cSo" = (/turf/space,/area/mine/unexplored) "cSp" = (/obj/structure/alien/resin,/turf/simulated/floor/airless,/area/mine/abandoned) @@ -7731,7 +7734,7 @@ "cSL" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) "cSM" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Storage"; location = "Sleeper"},/turf/simulated/floor{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) "cSN" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp) -"cSO" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cSO" = (/obj/structure/ore_box,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "cSP" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cSQ" = (/obj/machinery/bot/secbot/beepsky{desc = "Ofitser Beyepsky. Powered by tears and swet of laborer."; name = "Ofitser Beyepsky"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=SMine"; location = "Storage"},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) "cSR" = (/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) @@ -7753,7 +7756,7 @@ "cTh" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTi" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTj" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cTk" = (/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cTk" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "cTl" = (/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "cTm" = (/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "cTn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) @@ -7766,7 +7769,7 @@ "cTu" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTv" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTw" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cTx" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cTx" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTy" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp) "cTz" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored) "cTA" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored) @@ -7776,35 +7779,35 @@ "cTE" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) "cTF" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTG" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) -"cTH" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cTH" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTI" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cTJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) -"cTK" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) +"cTJ" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) +"cTK" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor,/area/mine/laborcamp) "cTL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) "cTM" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTN" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTO" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTP" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp) "cTQ" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cTR" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"cTR" = (/turf/simulated/floor,/area/mine/laborcamp) "cTS" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "cTT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "cTU" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "cTV" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cTX" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cTY" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cTY" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored) "cTZ" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cUa" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "cUb" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cUc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp) "cUd" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp) -"cUe" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cUf" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps,/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"cUe" = (/turf/simulated/floor{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored) +"cUf" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored) "cUg" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "cUh" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cUi" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"cUj" = (/obj/item/stack/sheet/metal,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"cUi" = (/obj/structure/ore_box,/obj/machinery/mineral/input,/turf/simulated/floor{tag = "icon-asteroidwarning (WEST)"; icon_state = "asteroidwarning"; dir = 8; temperature = 273.15},/area/mine/explored) +"cUj" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) "cUk" = (/obj/structure/lattice,/turf/space,/area/mine/unexplored) "cUl" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) "cUm" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp/security) @@ -7836,9 +7839,9 @@ "cUM" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "cUN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "cUO" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"cUP" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"cUQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=NMine"; location = "SMine"},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) -"cUR" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"cUP" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp) +"cUQ" = (/obj/machinery/mineral/unloading_machine{dir = 1},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) +"cUR" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) "cUS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "cUT" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "cUU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security) @@ -8252,6 +8255,14 @@ "dcM" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "dcN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/flora/tree/festivus,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"}) "dcO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"dcP" = (/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/explored) +"dcQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp) +"dcR" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dcS" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dcT" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dcU" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dcV" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dcW" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8321,13 +8332,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaaaaaaafaaaaaaaaaaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaafaafaafaafaaaaaaaafaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaiaaiaajaakaalaakaalaakaamaaiaaiaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaiaaiaanaaoaapaaqaaraaqaaqaasaataaiaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaiaaiaanaaoaapaaqaaraaqajdaasaataaiaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaauaavaaqaaqaawaaxaavaaqaasaayaaiaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaagaaiaazaaqaaqaaqaavaaAaaAaaqaaqaaBaaCaaiaaiaaiaafaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaiaaDaaqaaEaaqaaqaaqaaqaaqaaqaaFaaqaaGaaHaaiaafaaaaaaaaaaaaaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaiaaIaaqaaqaaJaaqaaqaaqaaKaaqaaFaaqaaLaaMaaiaafaafaafaaaaafaafaafaafaafaafaafaafaafaafaahaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaiaaNaaOaaNaaPaaNaaQaaNaaRaaNaaSaaNaaNaaTaaUaaUaaUaaUaaUaaUaaUaaUaaUaaUaaVaaWaaXaaYaaVaaVaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaiaaZaaqabaaaPabbaaqabcaaRabdaaFabeaaNabfaaUabgabgabhabiabjabkablabmaaUabnaboabpabqabraaVaafaaaaafabsabtabsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaibZUaaqabaaaPajhaaqabcaaRbZXaaFabeaaNabfaaUabgabgabhabiabjabkablabmaaUabnaboabpabqabraaVaafaaaaafabsabtabsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabuaaqabvabwabxaaqabyaaRabzaaFabyaaNabAaaUabgabBabCabCabCabCabCabCaaUabDabEabFabFabGaaVaafaafaafabsabHabsaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaRabIaaNaaPaaRabJaaPaaRaaRabKaaPaaNaaNaaUabLabMabNabOabPabQabRabSaaUabTabUabVabFabWaaVabXabYabsabZabtabsabsabZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbaccacdaceacfacgachaciacfacjackaclacmaaUacnacoacpacpacqabRabRacraaUacsactacuabFacvaaVacwacxacyabsaczacAacBacBacCaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8343,9 +8354,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafahbaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcahdaheahdahcaagaafahfahgahgahhahgahgahiaebahjagCahkahlagCahmahnahoahpahqahrahsahpahtahrahoahpahuahvahwahxahyahzahAahBadXahCagSahDagSagSagSahEagSagSafNafOafPafAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRafRafRafRafRaaaaaaaaaahFaaaaaaaaaafRafRafSafSafSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafSafRafRaaaaaaaaaahGaaaaaaaaaafRafRafSafSafSaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcahHahHahHahcahIahJahKahLahMahNahOahPahQaebagCahRahSahTagCaebahUahVahWahXahYahZahWahXaiaaibaicahXaidaieaifahXaiaaigaihadXagSaiiaijagSaikagSailaimagSafNafOafPafQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagxaaaaaaaafaafaafaaaaaaahFaafaafaaaaafaafaaaaaaafSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaafaafaaaaaaaaaahGaafaafaaaaafaafaaaaaaafSaaaaaaaaaaaaaaaaaaaaaaacaaaaafahcainainainaioaipaiqairaisaitaiuaivaiwaixagFaiyahRaizahTaiAaebaiBaiCaiDaebaiEaiCaiDaebaiFaiCaiDaebaiGagdaiHaebaiIaiCaiJadXagSaiKaiLaiMaiNaiMaiOaiPaiQafNafOafPagwaafaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaafRaafaiRaiRaiRaiRaiRaafaiSaafaiRaiRaiRaiRaiRaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafaiTaiTaiTaiTaiTaafaiUaafaiTaiTaiTaiTaiTaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcaiVainainahcahIahJaiWaiXaiqaiqaiqaiYaiZaebajaagCagCagCagCaebajbaiCajcaebajdaiCajeaebajdaiCajfaebaiGagdaffaebajgaiCajhadXajiajjajjajkajlajiajjajjajmafNafOafPaezaezaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafajnajoajoajoajoajpajqajrajsajsajsajsajtaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafaiTaiTaiTaiTaiTaafaiUaafaiTaiTaiTaiTaiTaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcaiVainainahcahIahJaiWaiXaiqaiqaiqaiYaiZaebajaagCagCagCagCaebabdaiCajcaebabbaiCajeaebabbaiCajfaebaiGagdaffaebajgaiCajbadXajiajjajjajkajlajiajjajjajmafNafOafPaezaezaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafajnajoajoajoajoajpajqajrajsajsajsajsajtaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaafRaafajuajvajvajvajvajwajxajyajzajzajzajzajAaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcajBajCajDajEaaaaaaajFajGajHajIajJajKajLajMadXadXadXadXadXadXajNajOajPajQajRajOajPajQajRajOajPajQajSaieaifajQajRajOajTadXajUajVajVajVajUajVajVajVajWafNajXajYajZaezaezaezaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafakaakaakaakaakaaafajqaafakaakaakaakaakaaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafakbakbakbakbakbaafajxaafakbakbakbakbakbaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcakcakdakdahcahIahJakeakfakfakfakfakgakfakhahgakiakjakkaklakmaknaknaknaknaknaknaknakmaknaknaknakoaknakpakqakrakqakqakqaksajUajVajVajVajUajVajVajVajWaezaktakuaeYakvakwakvaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaaaaafaaaaaaaafajqaaaaaaaaaaafaaaaaaaaaafSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafakbakbakbakbakbaafajxaafakbakbakbakbakbaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcakcakdakdahcahIahJakeakfakfakfakfakgakfakhahgakiakjakkaklakmaknaknaknaaZaknaknaknakmaknaknaknakoaknakpakqakrakqakqakqaksajUajVajVajVajUajVajVajVajWaezaktakuaeYakvakwakvaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaaaaafaaaaaaaafajqaaaaaaaaaaafaaaaaaaaaafSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaaaaafaaaaaaaafajxaaaaaaaaaaafaaaaaaaaaagxaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcakdakdakdakxakyaiqakzaiqakAaiqaiqahQakBakhakCakpakpakpakpakpakpakDakpakpakpakpakpakpakpakEakpakpakpakFakpakpakpakpakpakGajUajUajUajUakHakIakJakKakLakMakNakOakPakPakQaezaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafaiRaiRaiRaiRaiRaafajqaafaiRaiRaiRaiRaiRaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafaiTaiTaiTaiTaiTaafajxaafaiTaiTaiTaiTaiTaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcakRakRakRahcahIahJakSakTakUakVakWakXakYakhahgakZakZakZakZalaakZalbakZakZakZakZakZakZakZalcaldaldaldalealfaldalgaldaldaksalhalialjafNafNafNalkafNallaezalmalnaezaloalpaezaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafajnajoajoajoajoajpajqajrajsajsajsajsajtaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafajuajvajvajvajvajwajxajyajzajzajzajzajAaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafahcalqalqalqahcaaaaaaahfalrahhahgahgalsaltahgalualualvalwalvalualualxalyalyalyalzalyalyalAalBalCaezaezalDaezaezaezaezaezafNafNafNafNafNalEalFalGalHalIalJalKalLalMalNalOaezaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafakaakaakaakaakaaafajqaafakaakaakaakaakaaafafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9358,21 +9369,21 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOWcRocOWcPVcPLcRFcPdcRGcPtcPVcOWcOIcPCcOWcRHcRIcRIcRJcOWcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlaaaaaaaaaaaaaaaaaaaaaaafaafaafcPNcPNcRLcRMcPNcPNcRNcROcRNcPNcRicQlcQlcQlcQlcQlcQlcOUcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOWcRocOWcPCcPtcOPcPVcPRcPCcPvcOWcRocOWcOWcPUcOIcRIcRQcRRcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcRScRTcRUcRVcRVcRVcRVcRVcRVcRWcRScRTcQlcQlcRXcRYcRZcPNcSacQDcSbcPNcRicQlcQlcQlcQlcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSccSccSccSccSccSccRPcRPcRPcRPcRPcRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOWcRocOWcOWcOWcOWcOWcOWcOWcOWcOWcRocOWcPUcOIcSdcOIcRJcSecRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcSfcSgcSgcSgcSgcSgcSgcSgcSgcSfcQlcQlcQlcShcShcShcPNcSicSjcSkcPNcRicQlcQlcQlcQlcQlcQlcRtcRacOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSccSccSccSccSccSccSlcSlcSlcSmcSccRPcRPcRPcSncSncRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSoaaaaaaaaaaaaaaacSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOWcRocRocRocRocSpcRocRocRocRocRocRocOWcPUcSdcSdcSdcPWcOWcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcRScRTcSqcSrcSrcSrcSrcSrcSrcSrcRScRTcQlcQlcQlcQlcQlcPNcRNcSscRNcPNcStcQlcQlcQlcQlcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSccSccSccSccSccScdcVdcVdcVdcWcSccRPcRPcRPcSncSncRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSoaaaaaaaaaaaaaaacSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOWcRocRocRocRocSpcRocRocRocRocRocRocOWcPUcSdcSdcSdcPWcOWcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcRScRTcSqcSrcSrcSrcSrcSrcSrcSrcRScRTcQlcQlcQlcQlcQlcPNcRNcSscRNcPNcStcQlcQlcQlcQlcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSccSucSvcSwcSxcSycSzcSAcSAcSAcSccRacRacRacRacSBcSncRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOWcOWcOWcOWcOWcOWcOWcOWcOWcOWcOWcOWcOWcOWcRBcSCcSDcOWcOWcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcQlcQlcQlcQlcQlcQlcSEcSFcSGcSHcSIcSJcQlcQlcQlcQlcOUcOUcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaacSccSKcSLcSMcSNcSycSOcSAcSPcSQcSRcSScSTcSTcRacSBcSUcSncRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcOWcRIcRIcSdcOWcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOUcOUcOUcOUcOUcQlcQlcQlcQlcQlcQlcSEcSVcSGcQlcQlcQlcOUcOUcOCcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaacSccSKcSLcSMcSNcSydcUcSAcSPcSQcSRcSScSTcSTcRacSBcSUcSncRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcOWcRIcRIcSdcOWcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOUcOUcOUcOUcOUcQlcQlcQlcQlcQlcQlcSEcSVcSGcQlcQlcQlcOUcOUcOCcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacSccSccSccSycSWcSXcSWcSycSYcSZcSycSycSccSccSccTacTbcTccSncSncRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcOWcTdcTecTdcOWcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlcQlaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOCcOCcOCcOCcOUcOUcOUcQlcQlcQlcQlcQlcTfcQlcQlcQlcQlcOUcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOCcOCcOCcOCcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOZaafaafaafaafaafcSccTgcThcSycTicSAcSzcTjcTicSAcTkcSycTlcTmcTmcSBcSTcSTcSncSncRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcOWcTncSCcTocOWcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcOUcQlcQlcTpcQlcQlcQlcQlcQlcOUcOUcOUaaaaaaaaaaaaaaaaaaaaaaaaaaacOCcOCcOCcOCcOCcOCcOCcOCcOUcOUcOUcQlcQlcQlcTfcQlcQlcOUcOUcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOCcOCcOCcOCcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccTrcTscTtcTucTvcTwcSAcTicTxcSAcTycTmcTmcSTcSTcSTcSTcSBcSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcTzcTAcTBcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcOUcOUcRacOUcQlcQlcRbcRbcOUcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOUcOUcQlcQlcTfcQlcQlcOUcOUcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOCcOCcOCcOCcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccTCcTDcTEcTFcTvcTGcSAcTHcSycTIcSycTJcTmcTmcTKcSTcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcTLcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOUcOUcOUcOUcOUcOUcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOUcQlcQlcTfcQlcQlcQlcOUcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSycSycSycTMcSAcTNcTvcTOcTPcTQcSycTRcTmcSTcTmcSTcSBcSBcTScSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcTLcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOCcOCcOCcOCcOCaaaaaaaaaaaacOEcOEaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcTTcTUcQlcQlcOUcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcTVcTWcTVcTXcSAcSAcTicSAcTYcSycTZcSycTmcTmcTmcSTcSTcSBcSBcUacSncRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcTLcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOEcOEaaaaaaaaaaaacOCcOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSccSccUbcSAcSAcTicUccUdcSycUecSycTlcTmcTmcSBcSBcSBcSBcSBcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaacOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqaaaaaacSccSccTkcSAcTicUfcUgcUhcUicSycTlcUjcSBcSBcSBcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcUkcUkcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUlcUlcUlcUlcUmcUncUocUocUocUpcUqcUqcUrcSBcSTcSBcSBcSBcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOUcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOEcOEcOCcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOZaafaafaafaafaafcSccTgcThcSycTicSAcSzcTjdcTcSAdcScSycTmcTmcTmcSBcSTcSTcSncSncRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcOWcTncSCcTocOWcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcOUcQlcQlcTpcQlcQlcQlcQlcQlcOUcOUcOUaaaaaaaaaaaaaaaaaaaaaaaaaaacOCcOCcOCcOCcOCcOCcOCcOCcOUcOUcOUcQlcQlcQlcTfcQlcQlcOUcOUcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOCcOCcOCcOCcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccTrcTscTtcTucTvcTwcSAcTicSAcSAcTycTmcTmcSTcSTcSTcSTcSOcSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcTzcTAcTBcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcOUcOUcRacOUcQlcQlcRbcRbcOUcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOUcOUcQlcQlcTfcQlcQlcOUcOUcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOCcOCcOCcOCcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccTCcTDcTEcTFcTvcTGcSAcTidcRcSAcSydcQdcPdcPcSTcSTcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcTLcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOUcOUcOUcOUcOUcOUcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOUcQlcQlcTfcQlcQlcQlcOUcOCcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSycSycSycTMcSAcTNcTvcTOcUccTIcUPcUjcURcUQcUicSTcSBcSBcTScSncRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcTLcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOCcOCcOCcOCcOCaaaaaaaaaaaacOEcOEaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcTTcTUcQlcQlcOUcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcTKcTWcTVcTXcTRcSAcTicSAcSAcTPcTQcSycUfcUecTYcSTcSTcSBcSBcUacSncRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcTLcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCcOCcOEcOEaaaaaaaaaaaacOCcOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSccSccSccSAcSAcTicUccUdcSycTZcSycTmcTmcTmcSBcSBcSBcSBcTJcRacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaacOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqaaaaaacSccUbcSAcSAcTicTHcUgcUhcTxcSycTlcTkcSBcSBcSBcSBcSOcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcUkcUkcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUlcUlcUlcUlcUmcUncUocUocUocUpcUqcUqcUrcSBcSTcSBcSBcSOcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcQlcTfcQlcQlcQlcOUcOUcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOEcOEcOCcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUscUtcUtcUtcUucUvcUwcUxcUwcUwcUycUtcUzcTmcTmcSBcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcOUcQlcQlcTfcQlcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUqcUqcUAcUqcUBcUqcUqcUCcUDcUEcUqcUqcTmcTmcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOCaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOUcQlcQlcTfcQlcQlcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOEcOEcOEcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUFcUGcUHcUIcUJcUKcULcUMcUNcUOcUPcUocUQcURcUScSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcOEcOEaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcTTcUTcTUcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUFcUGcUHcUIcUJcUKcULcUMcUNcUOcSmcUocSlctUcUScSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcOEcOEaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcTTcUTcTUcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOEcOEcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUUcUVcUtcUWcUtcUXcUqcUYcUZcUZcVacVbcUqcSncSncSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcQlcQlcQlcQlcTfcQlcVccRacOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafcVdcVecVfcVgcVhcVicUqcVjcVkcVlcVmcVbcUqcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOCcOUcOUcQlcQlcQlcTfcQlcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacVncVocVpcVqcUlcUlcUqcUqcUqcUqcUqcUqcUqcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOCcOCcOUcQlcQlcVrcSIcSJcQlcOUcOCcOCcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOCcOCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 65efc13beb0171fb60a5e9f78ba36486a107375d Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 20 Dec 2013 22:21:55 +0000 Subject: [PATCH 232/315] * Added cards to the perma brig and to the dorms. --- maps/tgstation.2.1.2.dmm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index 04d816f5cbc..7e39bdef95b 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -8263,6 +8263,8 @@ "dcU" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dcV" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dcW" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dcX" = (/obj/structure/table,/obj/item/toy/cards,/turf/simulated/floor,/area/security/prison) +"dcY" = (/obj/structure/table/woodentable,/obj/item/toy/cards,/turf/simulated/floor,/area/crew_quarters/sleep) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8334,7 +8336,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaiaaiaajaakaalaakaalaakaamaaiaaiaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaiaaiaanaaoaapaaqaaraaqajdaasaataaiaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaauaavaaqaaqaawaaxaavaaqaasaayaaiaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaagaaiaazaaqaaqaaqaavaaAaaAaaqaaqaaBaaCaaiaaiaaiaafaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaagaaiaazaaqaaqaaqaavdcXaaAaaqaaqaaBaaCaaiaaiaaiaafaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaiaaDaaqaaEaaqaaqaaqaaqaaqaaqaaFaaqaaGaaHaaiaafaaaaaaaaaaaaaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaiaaIaaqaaqaaJaaqaaqaaqaaKaaqaaFaaqaaLaaMaaiaafaafaafaaaaafaafaafaafaafaafaafaafaafaafaahaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaiaaNaaOaaNaaPaaNaaQaaNaaRaaNaaSaaNaaNaaTaaUaaUaaUaaUaaUaaUaaUaaUaaUaaUaaVaaWaaXaaYaaVaaVaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8367,7 +8369,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYaoPaoQaoRanYaoSaoTaoUanYanpanpanpaoVaoWaoXaoYaoZaobaaaaaaagxaaaakbakbakbakbakbaafajxaafakbakbakbakbakbaaaafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaalSalTalTalSalTalSapaalTalSamIapbapcapdambambapeapfaluamdalyalyapgaphapialyapjakpakqaezafOanDanHanHanHanHaozaoAanHanHapkanHanHanHaplanHangapmaoGapnapoappapqaoJaprapsanianianianianiaptapuapvapwaaaaaaafSaaaaafaaaaafaafaaaaaaajqaaaaaaaafaaaaaaaafaaaafRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYapxapyapzanYapAapyapzanYapBapCapDapEapEapEapFapGamGaaaaaaafRaaaaafaaaaafaafaaaaaaapHaaaaaaaafaaaaaaaafaaaafRaafaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaalSapIalTalTalTalSalSalSalSapJapKapLapMapMapNapMapMapMapOapPapQapQapRalyalyapSakpapTaezapUamVapVapWapXanHapYapZaqaaqbaqcaqcaqdaqeaqcaqfaqgaoFaoGaqhaqiaqjaqkaqlaqmaqnanianianianianiaqnaqoaqpaqqaaaaaaafSafSafRaaaaaaaafaaaaaaajqaaaaafaafaafaafafRafRafRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaanjanYaqraqsanjanYaqtaqsanjaobaquaobaobaobaobaobaqvanqaaaaaaafRafRafRaaaaaaaafaaaaqwaqxaqwaafaafaafaafafRafRafRaafalSalSalSalSaqyaqzaqzaqzaqzaqzaqzaqzaqAalSalSalSalSalTalSaqBalTaqCaqDaqEaqFaqFaqFaqGaqFaqFaqFaqHaqIaqFaqFaqJaqJaqKaqLaqMaqMaqNaqOaouaovaoxaoxaqPaozaqQaqQaqRaqSaqTaqUaqRaqQaqQaqVaqWaqXaqhaqiaqjaqkaqlaqYaqZanianianianianiaqZaraaqpaqqaaaaaaaaaaaaaafaafaaaaafaaaaaaarbaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaarcardarcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarearfarfarfargarfarfarfarhariarjarharharharkaobarlanqaaaaafaafaaaaaaaaaaaaaafaaaarmarnarmaafaaaaafaaaaaaaaaaaaaaaalSalTalTaroalTalTalTalTalTalTalTalTarparqarrarsarsarsarsarsarsartaruarvarwarwarwarxarwarwarwarwarwaryaryaryaryaryarzakparAarBarCarDanHanHanHanHaozarEaqQaqRarFarGaqTarHarIarJarKarLarMarNarOarParQarRarSarTanianianianianiarUarVarWarXaaaaaaaaaaaaaaaaafaaaaafaaaarYarZarYaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaarcasaarcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarearfarfarfargarfarfarfarhariarjarharharharkaobarlanqaaaaafaafaaaaaaaaaaaaaafaaaarmarnarmaafaaaaafaaaaaaaaaaaaaaaalSalTalTaroalTalTalTalTalTalTalTalTarparqarrarsarsarsarsarsarsartaruarvarwarwarwarxarwarwarwarwarwaryaryaryaryaryarzakparAarBarCarDanHanHanHanHaozarEaqQaqRarFarGdcYarHarIarJarKarLarMarNarOarParQarRarSarTanianianianianiarUarVarWarXaaaaaaaaaaaaaaaaafaaaaafaaaarYarZarYaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaarcasaarcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasbascasdascaseasdasdasfascasdasgashasiasiasjaobarlaskaafaafaaaaaaaaaaaaaaaaafaslasmasnasoaspaaaaafaaaaaaaaaaaaaaaalSalTalSasqasrassassassassassassassastasqasuasvasvasvasvasvasvasvamdaswarwasxasyaszasAasBasCasDasEasFasGasHasIaryasJakpasKaezasLamVapVapWasManHaozasNarJarJarJasOasPasQasRasSaqgasTasUasVasWasXasYasZataatbanianianianianiatcangangangarcarcarcaafaafaafaafaafaaaatdateatdaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaarcatfarcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYareatgareathasdasdatiareatgareatjatkaseatlaobarlaobaobatmaoeaoeaoeaoeaofaobatnatoatpatqatnalSalSatratsattalSalSalSalTatuasqaaaaafaaaaafaaaaafaaaaafaaaasqasuasvatvatwatxatyatzasvamdatAatBatCatDatEatFatGatGatHatIatJatKatKatLaryasJakpatMaezatNaouaovaoxaoxatOaozatPasRatQatRatSatTatUatUatVatUangatWatXatYatZauaaubangaucanianianianianiaucangaudatfaueaufarcaafaafaafaaaaafaugauharZauiaujaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaarcatfarcaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaukanjaulapyaumaunauoaupauqaumapyaurausanjautauuaobauvauwauwauwauwauwauwapGauxauyatnauzauAauBatnauCalTalTalTalTalTalTalTalTauDasqaafauEauEauEauEauEauEauEaafasqasuasvauFauGauHauIauFasvauJauKarwauLauMauNauOatKauPauQauRauSatKatKatKauTasJakpauUaezatNanDanHanHanHanHapYauVatUatUatUatUatUatUauWauXauYatUangangangangauZarcangaucanianianianianiaucangarcatfavaaufarcaaaaaaaaaaaaaafavbavcavdaveavbaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaarcatfarcaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From fe0e9959596a501b2e92724be10e34387a9edfa6 Mon Sep 17 00:00:00 2001 From: Bobylein Date: Sat, 21 Dec 2013 07:47:47 +0100 Subject: [PATCH 233/315] Allows Labcoats to store Bottles, Beakers, Pills, Pill Bottles and Papers in their suit slot. --- code/modules/clothing/suits/labcoat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 05c791dd95c..b3cd5c5c433 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,7 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS - allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen) + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) verb/toggle() From 2b827e35926aeb632bd305e2baacf75bc08326ad Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 21 Dec 2013 02:08:21 -0500 Subject: [PATCH 234/315] Bugfix: Slimes that reproduce will now properly inherit magic spells --- code/modules/mob/living/carbon/metroid/powers.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index c16039c5baf..40b18333adc 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -230,6 +230,8 @@ src.mind.transfer_to(new_slime) else new_slime.key = src.key + for (var/obj/effect/proc_holder/spell/S in src.spell_list) + new_slime.spell_list += new S.type new_slime << "You are now a slime!" del(src) From c40af6ae40f59639e00b1ec7f317bf5156ebb6fd Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 21 Dec 2013 09:50:15 +0200 Subject: [PATCH 235/315] Update icons after item is placed in cart. --- code/game/objects/items/devices/lightreplacer.dm | 4 +++- code/game/objects/items/weapons/mop.dm | 4 +++- code/game/objects/items/weapons/storage/bags.dm | 4 +++- code/game/objects/structures/janicart.dm | 8 +++++--- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index cfc9120d301..08cd98d04ea 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -199,7 +199,9 @@ /obj/item/device/lightreplacer/cyborg /obj/item/device/lightreplacer/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) - J.myreplacer=J.put_in_cart(src, user) + J.put_in_cart(src, user) + J.myreplacer = src + J.update_icon() /obj/item/device/lightreplacer/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) return diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 5126249f9d5..1dec414ff71 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -50,7 +50,9 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A) /obj/item/weapon/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) - J.mymop=J.put_in_cart(src, user) + J.put_in_cart(src, user) + J.mymop=src + J.update_icon() /obj/item/weapon/mop/cyborg diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 13acbb258a0..59fde425b6c 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -51,7 +51,9 @@ /obj/item/weapon/storage/bag/trash/cyborg /obj/item/weapon/storage/bag/trash/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) - J.mybag=J.put_in_cart(src, user) + J.put_in_cart(src, user) + J.mybag=src + J.update_icon() /obj/item/weapon/storage/bag/trash/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) return diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index a82a01a63e6..3417b1eae10 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -37,10 +37,9 @@ /obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user) user.drop_item() I.loc = src - update_icon() updateUsrDialog() user << "You put [I] into [src]." - return I + return /obj/structure/janitorialcart/attackby(obj/item/I, mob/user) @@ -64,7 +63,9 @@ user << fail_msg else if(istype(I, /obj/item/weapon/reagent_containers/spray/cleaner)) if(!myspray) - myspray=put_in_cart(I, user) + put_in_cart(I, user) + myspray=I + update_icon() else user << fail_msg else if(istype(I, /obj/item/device/lightreplacer)) @@ -77,6 +78,7 @@ if(signs < max_signs) put_in_cart(I, user) signs++ + update_icon() else user << "[src] can't hold any more signs." else if(mybag) From 542d1f9b9f98d7b760643adafcd9b1e779879a4e Mon Sep 17 00:00:00 2001 From: Metacide Date: Sat, 21 Dec 2013 13:36:40 +0000 Subject: [PATCH 236/315] Updated MetaStation.v38Q.dmm to MetaStation.v38R.dmm *Minor alterations to the layout of the incinerator turbine. The turbine vent is now easier to see. *Added a space-access airlock to the bottom-right of the main atmos room. *Added monkeysuit mask to the black-market shop. *Added a camera to the AI Upload Foyer. *Added missing APC to telecoms storage. *Added packs of cards to the library, bar, prison, spare office, and maint. bar. *Replaced combat gloves in security gear room with normal black "security" gloves. *Removed duplicated intercom in the chapel. *Removed manual outlet values from atmospherics. *Moved toxins launch camera so AI can see launch control. *Moved the tube light from the HoP queue glass panels to the wall. *Fixed some broken pipes in the labour camp. *Fixed some broken cabling on the turbine. *Fixed some broken cabling at the mining north outpost. *Named more cameras in various locations. *Standardised naming of telecoms areas. *Standardised camera name format. *Works with recent updates. --- ...aStation.v38Q.dmm => MetaStation.v38R.dmm} | 794 +++++++++--------- 1 file changed, 399 insertions(+), 395 deletions(-) rename maps/{MetaStation.v38Q.dmm => MetaStation.v38R.dmm} (98%) diff --git a/maps/MetaStation.v38Q.dmm b/maps/MetaStation.v38R.dmm similarity index 98% rename from maps/MetaStation.v38Q.dmm rename to maps/MetaStation.v38R.dmm index 569ae4c365c..bd6ddc7f813 100644 --- a/maps/MetaStation.v38Q.dmm +++ b/maps/MetaStation.v38R.dmm @@ -303,7 +303,7 @@ "afQ" = (/turf/simulated/wall/r_wall,/area/security/brig) "afR" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/reagent_dispensers/peppertank{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) -"afT" = (/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security Office - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) +"afT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer{pixel_y = -2},/obj/machinery/camera{c_tag = "Brig - Infirmary"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) "afU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afV" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "afW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/security/brig) @@ -409,7 +409,7 @@ "ahS" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) "ahT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/laborcamp/station) "ahU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) -"ahV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer{pixel_y = -2},/obj/machinery/camera{c_tag = "Brig Infirmary"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/security/brig) +"ahV" = (/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Security - Office - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "ahW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "ahX" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/laborcamp/station) "ahY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters) @@ -526,7 +526,7 @@ "akf" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "akg" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod2/station) "akh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aki" = (/obj/structure/rack,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/secure/briefcase{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) +"aki" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Security - Office - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "akj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/range) "akk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "akl" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -707,7 +707,7 @@ "anE" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c20{pixel_y = 6},/obj/structure/window/reinforced,/obj/item/weapon/cell/crap,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anF" = (/obj/structure/table/reinforced,/obj/item/weapon/spacecash/c100,/obj/structure/window/reinforced,/obj/item/weapon/firealarm_electronics,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anG" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/camera{c_tag = "Security - Gear Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"anH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Security Office - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) +"anH" = (/obj/structure/rack,/obj/item/clothing/gloves/black{name = "security gloves"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/clothing/gloves/black{name = "security gloves"},/obj/item/clothing/gloves/black{name = "security gloves"},/obj/item/clothing/gloves/black{name = "security gloves"},/obj/item/clothing/gloves/black{name = "security gloves"},/obj/item/weapon/storage/secure/briefcase{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "anI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) "anJ" = (/obj/machinery/light_construct/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/disk/data,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 0},/obj/item/weapon/grenade/flashbang,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anK" = (/obj/structure/table/reinforced,/obj/machinery/light_construct/small{dir = 8},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1207,7 +1207,7 @@ "axk" = (/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "axl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/monitor{name = "Bridge Power Monitoring Console"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "axm" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/security/prison) -"axn" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"axn" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig - Hallway - Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) "axo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/processing) "axp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/security/processing) "axq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -1284,7 +1284,7 @@ "ayJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters) "ayK" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "ayL" = (/obj/machinery/turret{dir = 8},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) -"ayM" = (/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"ayM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/door_timer/cell_1,/obj/machinery/camera{c_tag = "Brig - Hallway - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "ayN" = (/obj/machinery/hydroponics,/obj/item/seeds/ambrosiavulgarisseed,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "ayO" = (/turf/simulated/wall/r_wall,/area/security/processing) "ayP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -1374,7 +1374,7 @@ "aAv" = (/obj/structure/closet{name = "Evidence Closet 4"},/obj/item/weapon/storage/backpack{name = "Evidence Bag 4"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) "aAw" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless,/area/solar/auxport) "aAx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aAy" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump{desc = "Useful for keeping the riff-raff down."; item_state = "shotgun"; name = "riot shotgun"},/obj/item/weapon/shield/riot,/obj/item/weapon/gun/projectile/shotgun/pump{desc = "Useful for keeping the riff-raff down."; item_state = "shotgun"; name = "riot shotgun"; pixel_x = 4; pixel_y = -2},/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aAy" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig - Hallway - Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aAz" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor,/area/security/prison) "aAA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/prison) "aAB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor,/area/security/prison) @@ -1518,7 +1518,7 @@ "aDj" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Shooting Range"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "warning"},/area/security/range) "aDk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/prison) "aDl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aDm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aDm" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/item/toy/cards,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aDn" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "aDp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters) @@ -1565,7 +1565,7 @@ "aEe" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aEf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/hos) "aEg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/hos) -"aEh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aEh" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/item/weapon/gun/projectile/shotgun/sc_pump{name = "riot shotgun"; pixel_x = 4; pixel_y = -3},/obj/item/weapon/gun/projectile/shotgun/sc_pump{name = "riot shotgun"; pixel_x = -2; pixel_y = 3},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aEi" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aEj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aEk" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -1591,7 +1591,7 @@ "aEE" = (/obj/machinery/computer/med_data,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/bridge) "aEF" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/hallway/primary/central) "aEG" = (/obj/machinery/flasher{id = "processinghall"; pixel_x = -28},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/processing) -"aEH" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Armoury External Camera"; desc = "A special camera with a long lasting battery."; dir = 1; invuln = 0; light = null; name = "security camera"; network = list("SS13"); use_power = 0},/turf/space,/area) +"aEH" = (/obj/item/weapon/soap/deluxe,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/obj/structure/closet/crate,/obj/item/clothing/suit/xenos,/obj/item/clothing/suit/monkeysuit,/obj/item/clothing/head/xenos,/obj/item/clothing/mask/gas/monkeymask,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aEI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "aEJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aEK" = (/obj/machinery/door/airlock{id_tag = "Cabin3"; name = "Cabin 3"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/wood,/area/crew_quarters) @@ -1612,21 +1612,21 @@ "aEZ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor,/area/construction) "aFa" = (/turf/space,/area/supply/station) "aFb" = (/obj/structure/target_stake,/obj/item/target/syndicate,/turf/simulated/floor,/area/security/range) -"aFc" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig Hallway Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) +"aFc" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Armory - External Camera"; desc = "A special camera with a long lasting battery."; dir = 1; invuln = 0; light = null; name = "security camera"; network = list("SS13"); use_power = 0},/turf/space,/area) "aFd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Cabin7"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "aFe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) "aFf" = (/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) "aFg" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/engine/break_room) -"aFh" = (/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aFi" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aFh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Starboard Primary Hallway - Tech Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) +"aFi" = (/obj/machinery/camera{c_tag = "AI Chamber - Aft"; dir = 1; network = list("SS13","MiniSat","RD")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aFj" = (/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/engine/break_room) "aFk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"aFm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/door_timer/cell_1,/obj/machinery/camera{c_tag = "Brig Hallway Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"},/area/security/brig) +"aFm" = (/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aFn" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"aFp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aFq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aFp" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aFq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mailroom"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aFr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/hallway/primary/starboard) "aFs" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "aFt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) @@ -1640,37 +1640,37 @@ "aFB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aFC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aFD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aFE" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aFE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aFF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aFG" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/wardrobe/red,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2{name = "Customs"}) "aFH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/crowbar,/obj/item/device/flash,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint2{name = "Customs"}) "aFI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aFJ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/engine/break_room) -"aFK" = (/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aFK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aFL" = (/obj/structure/table,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/engineering_construction{pixel_y = 3},/obj/item/weapon/book/manual/engineering_guide{pixel_x = -4; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aFM" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"aFN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aFN" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aFO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aFP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aFQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aFP" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aFQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aFR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) "aFS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) "aFT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4"},/turf/simulated/floor,/area/security/main) "aFU" = (/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aFV" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) -"aFW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aFX" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aFW" = (/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aFX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aFY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aFZ" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engine/engineering) "aGa" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating,/area/engine/engineering) "aGb" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aGc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aGd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGd" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aGe" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "aGf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "aGg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "aGh" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) -"aGi" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13","MiniSat","RD")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aGi" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aGj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aGk" = (/obj/structure/particle_accelerator/end_cap{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "aGl" = (/obj/structure/particle_accelerator/fuel_chamber{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) @@ -1680,61 +1680,61 @@ "aGp" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area) "aGq" = (/obj/machinery/the_singularitygen{anchored = 1},/turf/simulated/floor/plating/airless,/area) "aGr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aGs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig Hallway Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"aGs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aGt" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/construction) "aGu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) "aGv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "aGw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/central) "aGx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=15-Central-Fore"; location = "14-Starboard-Central"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central) -"aGy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGB" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aGz" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aGA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/hallway/primary/port) +"aGB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aGC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/storage) -"aGE" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) +"aGF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) "aGG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aGH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGI" = (/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGH" = (/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/hallway/primary/port) +"aGI" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 2},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/port) "aGJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGK" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/table,/obj/item/clothing/gloves/orange,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aGL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) -"aGN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGO" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGN" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/hallway/primary/port) +"aGO" = (/obj/machinery/camera{c_tag = "Arrivals Shuttle"; dir = 2; network = list("SS13")},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aGP" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aGQ" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aGR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGQ" = (/turf/simulated/floor,/area/hallway/primary/port) +"aGR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/port) "aGS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "aGT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aGU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "aGV" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aGW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "closed"; id = "hosprivacy"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/range) -"aGX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGX" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) "aGY" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"aGZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Supply Office"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aGZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aHa" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/port) +"aHb" = (/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/port) "aHc" = (/obj/item/device/radio/off,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/hallway/primary/central) -"aHd" = (/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aHd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/port) "aHe" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aHf" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 2},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHg" = (/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aHf" = (/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aHg" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Cargo - Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aHh" = (/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/hallway/primary/central) "aHi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central) -"aHj" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aHj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aHk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/checkpoint/engineering) "aHl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Engineering Security Post"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/checkpoint/engineering) "aHm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/central) "aHn" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/break_room) "aHo" = (/turf/simulated/wall,/area/security/checkpoint/engineering) "aHp" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) -"aHq" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"; pixel_x = -2; pixel_y = 12},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHt" = (/obj/machinery/photocopier,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aHu" = (/obj/structure/stool,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aHq" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aHr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aHs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aHt" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aHu" = (/obj/machinery/door/airlock/maintenance{name = "Mailroom Maintenance"; req_access_txt = "50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aHv" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "aHw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/checkpoint/engineering) "aHx" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/engine/break_room) @@ -1748,7 +1748,7 @@ "aHF" = (/turf/simulated/floor/plating,/area/engine/engineering) "aHG" = (/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage"},/turf/simulated/floor/plating,/area/engine/engineering) "aHH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/storage/tools) -"aHI" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aHI" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"; pixel_x = -2; pixel_y = 12},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aHJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engine/chiefs_office) "aHK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/chiefs_office) "aHL" = (/obj/structure/closet,/obj/machinery/light_construct/small,/obj/item/weapon/mop,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -1766,8 +1766,8 @@ "aHX" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/quartermaster/storage) "aHY" = (/obj/machinery/conveyor{dir = 1; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) "aHZ" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad2"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) -"aIa" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIb" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIa" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aIb" = (/obj/structure/stool,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aIc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "aId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/quartermaster/storage) "aIe" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage) @@ -1783,7 +1783,7 @@ "aIo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Dorms Fore"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters) "aIp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aIq" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"aIr" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) +"aIr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Starboard Primary Hallway - Auxiliary Tool Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aIs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/hos) "aIt" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access_txt = "26"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) "aIu" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -1801,16 +1801,16 @@ "aIG" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "aIH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/central) "aII" = (/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) -"aIJ" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps{opacity = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIK" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIL" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIJ" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway - Engineering"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"aIK" = (/obj/machinery/photocopier,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aIL" = (/obj/machinery/power/apc{dir = 2; name = "Cargo Office APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aIM" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/maintenance/storage) "aIN" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) -"aIO" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIO" = (/obj/structure/disposalpipe/segment,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aIP" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) -"aIQ" = (/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIR" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aIS" = (/obj/machinery/door/airlock/maintenance{name = "Supply Maintenance"; req_access_txt = "50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aIQ" = (/obj/machinery/autolathe,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aIR" = (/obj/structure/table,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aIS" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Cargo Office"}) "aIT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aIU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aIV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) @@ -1824,7 +1824,7 @@ "aJd" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/break_room) "aJe" = (/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/engineering) "aJf" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/break_room) -"aJg" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aJg" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aJh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/break_room) "aJi" = (/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/plating,/area/construction) "aJj" = (/obj/item/weapon/crowbar/red,/turf/simulated/floor/plating,/area/construction) @@ -1840,9 +1840,9 @@ "aJt" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "aJu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/storage) "aJv" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/space,/area) -"aJw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aJw" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aJx" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/bridge) -"aJy" = (/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table/reinforced,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aJy" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aJz" = (/turf/simulated/wall,/area/storage/tech) "aJA" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/space,/area) "aJB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -1857,7 +1857,7 @@ "aJK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{dir = 8; name = "MiniSat Airlock Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aJL" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aJM" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"aJN" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/pen/red,/obj/structure/table/reinforced,/turf/simulated/floor{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aJN" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aJO" = (/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aJP" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aJQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai) @@ -1882,7 +1882,7 @@ "aKj" = (/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aKk" = (/obj/structure/extinguisher_cabinet{pixel_x = 30; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/port) "aKl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aKm" = (/obj/structure/table,/obj/item/device/toner,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKm" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/camera{c_tag = "Cargo - Mailroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aKn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/central) "aKo" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central) "aKp" = (/obj/structure/lattice,/obj/item/clothing/head/hardhat,/turf/space,/area) @@ -1894,30 +1894,30 @@ "aKv" = (/turf/simulated/floor,/area/quartermaster/storage) "aKw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/quartermaster/storage) "aKx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/card,/turf/simulated/floor{dir = 9; icon_state = "green"},/area/bridge) -"aKy" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKy" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps{opacity = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aKz" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/paper,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aKA" = (/turf/simulated/wall,/area/quartermaster/qm) "aKB" = (/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aKC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aKD" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKD" = (/obj/structure/table,/obj/item/device/toner,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/hallway/primary/port) "aKE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aKF" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKF" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/hallway/primary/port) "aKG" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/turf/simulated/floor/plating,/area/maintenance/fore) -"aKH" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aKI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKH" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/hallway/primary/port) +"aKI" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/hallway/primary/port) "aKJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/starboard) "aKK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/starboard) "aKL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/hallway/primary/starboard) "aKM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/starboard) -"aKN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/port) "aKO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard) "aKP" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aKQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/starboard) "aKR" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor,/area/crew_quarters/locker) "aKS" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aKT" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aKU" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "packageExternal"; pixel_y = 18},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aKV" = (/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; name = "Deliveries"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aKT" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/hallway/primary/port) +"aKU" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port) +"aKV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/break_room) "aKX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aKY" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; dir = 1; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) @@ -1938,7 +1938,7 @@ "aLn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Evidence Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aLo" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/quartermaster/storage) "aLp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/quartermaster/storage) -"aLq" = (/obj/item/weapon/soap/deluxe,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/kitchen/rollingpin,/obj/structure/closet/crate,/obj/item/clothing/suit/xenos,/obj/item/clothing/suit/monkeysuit,/obj/item/clothing/head/xenos,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aLq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/port) "aLr" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aLs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aLt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -1967,10 +1967,10 @@ "aLQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aLR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/range) "aLS" = (/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) -"aLT" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aLT" = (/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/hallway/primary/port) "aLU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"aLV" = (/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aLW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aLV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aLW" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aLX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) "aLY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "aLZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central) @@ -1987,7 +1987,7 @@ "aMk" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/checkpoint/engineering) "aMl" = (/obj/structure/closet,/obj/item/weapon/table_parts,/turf/simulated/floor/plating,/area/maintenance/disposal) "aMm" = (/obj/item/weapon/vending_refill/coffee,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/disposal) -"aMn" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aMn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aMo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warning"},/area/engine/engineering) "aMp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "aMq" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -1997,7 +1997,7 @@ "aMu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) "aMv" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aMw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) -"aMx" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aMx" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aMy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aMz" = (/obj/machinery/mass_driver{dir = 8; id = "trash"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) "aMA" = (/obj/structure/table,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) @@ -2010,10 +2010,10 @@ "aMH" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/arcade,/obj/item/weapon/circuitboard/message_monitor{pixel_y = -5},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aMI" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod1/station) "aMJ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) -"aMK" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aMK" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aML" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry{name = "Arrivals"}) "aMM" = (/obj/structure/table,/obj/item/weapon/cable_coil{amount = 5},/obj/item/device/flashlight,/obj/machinery/light_construct{dir = 4},/turf/simulated/floor,/area/construction) -"aMN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aMN" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office{name = "\improper Cargo Office"}) "aMO" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) "aMP" = (/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/pill/kelotane{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/engine/chiefs_office) "aMQ" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) @@ -2023,15 +2023,15 @@ "aMU" = (/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/structure/table/reinforced,/obj/item/weapon/cartridge/atmos,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/engine/chiefs_office) "aMV" = (/obj/effect/landmark/start{name = "Chief Engineer"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "aMW" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"aMX" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aMX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aMY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aMZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aMZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aNa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "aNc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/hostile/retaliate/bat{desc = "A fierce companion for any person of power, this spider has been carefully trained by NanoTrasen specialists. Its beady, staring eyes send shivers down your spine"; emote_hear = list("chitters"); faction = "spiders"; harm_intent_damage = 3; health = 200; icon_dead = "guard_dead"; icon_gib = "guard_dead"; icon_living = "guard"; icon_state = "guard"; maxHealth = 250; melee_damage_lower = 15; melee_damage_upper = 20; name = "Araneus"; real_name = "Araneus"; response_help = "pets"; voice_name = "unidentifiable voice"},/turf/simulated/floor/carpet,/area/security/hos) "aNe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aNf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aNf" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "packageExternal"; pixel_y = 18},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aNg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = 3},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "greencorner"},/area/bridge) "aNi" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2045,18 +2045,18 @@ "aNq" = (/obj/structure/closet/secure_closet/cargotech,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) "aNr" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNs" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/quartermaster/storage) -"aNt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aNu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aNv" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aNt" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aNu" = (/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; name = "Deliveries"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aNv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aNw" = (/obj/machinery/computer/card,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aNx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aNy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aNx" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aNy" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen,/obj/machinery/camera{c_tag = "AI Chamber - Port"; dir = 4; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aNz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNA" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4},/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/bridge) "aNB" = (/obj/structure/closet{name = "Contraband Locker"},/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/silencer,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aNC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aND" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aNE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"aND" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aNE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aNF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/crew_quarters/fitness) "aNG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aNH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2065,9 +2065,9 @@ "aNK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "aNL" = (/turf/simulated/wall/r_wall,/area/engine/chiefs_office) "aNM" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 5},/obj/item/weapon/pen,/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering) -"aNN" = (/obj/machinery/power/apc{dir = 2; name = "Supply Offices APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aNN" = (/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table/reinforced,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aNO" = (/obj/machinery/door/poddoor{id = "trash"; name = "disposal bay door"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aNP" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aNP" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/pen/red,/obj/structure/table/reinforced,/turf/simulated/floor{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aNQ" = (/obj/machinery/door/airlock/external{name = "South Containment Arm Access"},/turf/simulated/floor/plating,/area/engine/engineering) "aNR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "aNS" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) @@ -2099,11 +2099,11 @@ "aOs" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aOt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aOu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) -"aOv" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aOw" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aOx" = (/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aOv" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/port) +"aOw" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/port) +"aOx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/port) "aOy" = (/obj/machinery/power/apc{dir = 8; name = "Tech Storage APC"; pixel_x = -27; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) -"aOz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aOz" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor{dir = 5; icon_state = "brown"},/area/hallway/primary/port) "aOA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/central) "aOB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/central) "aOC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2115,8 +2115,8 @@ "aOI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/primary/central) "aOJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "aOK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central) -"aOL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aOM" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aOL" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/hallway/primary/port) +"aOM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aON" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/carpet,/area/crew_quarters) "aOO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central) "aOP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) @@ -2136,7 +2136,7 @@ "aPd" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/emergency,/obj/machinery/light_switch{pixel_x = -26},/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/storage/tools) "aPe" = (/obj/machinery/vending/assist,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aPf" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = -29},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aPg" = (/obj/structure/disposalpipe/segment,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aPg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutral"},/area/hallway/primary/central) "aPh" = (/obj/structure/table,/obj/item/device/analyzer,/obj/item/device/healthanalyzer,/obj/machinery/camera/autoname{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aPi" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aPj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) @@ -2153,10 +2153,10 @@ "aPu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/quartermaster/storage) "aPv" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "aPw" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"aPx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aPy" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aPz" = (/obj/machinery/computer/supplycomp,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aPA" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aPx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) +"aPy" = (/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) +"aPz" = (/obj/machinery/camera{c_tag = "Cargo Bay - Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aPA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/camera{c_tag = "AI Chamber - Starboard"; dir = 8; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aPB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/entry{name = "Arrivals"}) "aPC" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aPD" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2165,20 +2165,20 @@ "aPG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/storage/tools) "aPH" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Bridge APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge) "aPI" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/storage/tools) -"aPJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aPJ" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aPK" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/storage/tools) "aPL" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) "aPM" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -6; req_access_txt = "1"},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/engineering) "aPN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Engine Room"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aPO" = (/obj/structure/closet/secure_closet/security/engine,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/engineering) "aPP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/engineering) -"aPQ" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aPQ" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aPR" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = 28},/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aPS" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aPS" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aPT" = (/obj/structure/table,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge) "aPU" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Mix"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage) -"aPV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aPW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aPV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aPW" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aPX" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/westright{dir = 4},/obj/item/weapon/soap/deluxe,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aPY" = (/obj/machinery/light/small,/obj/structure/janitorialcart,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aPZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2193,24 +2193,24 @@ "aQi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "aQj" = (/obj/machinery/computer/secure_data,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "aQk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) -"aQl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Tech Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) +"aQl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aQm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard) "aQn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aQo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aQp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aQq" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aQq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aQr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aQs" = (/turf/simulated/floor/plating,/area/maintenance/starboard) "aQt" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/lattice,/turf/space,/area) "aQu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aQv" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aQv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aQw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/engine/chiefs_office) "aQx" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"aQy" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 8; name = "Cargo Desk"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aQy" = (/obj/machinery/computer/supplycomp,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aQz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/engine/chiefs_office) "aQA" = (/obj/structure/closet/toolcloset,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aQB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/engine/chiefs_office) -"aQC" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aQC" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/quartermaster/office{name = "\improper Cargo Office"}) "aQD" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aQE" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "aQF" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor{icon_state = "neutral"},/area/engine/chiefs_office) @@ -2229,16 +2229,16 @@ "aQS" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aQT" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "aQU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aQV" = (/turf/simulated/wall,/area/security/checkpoint/supply) +"aQV" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aQW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aQX" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aQY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aQZ" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aRa" = (/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access_txt = "19;23"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "aRb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) -"aRc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aRc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/port) "aRd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) -"aRe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aRe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) "aRf" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engineering) "aRg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aRh" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Security APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) @@ -2264,7 +2264,7 @@ "aRB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aRC" = (/obj/structure/lattice,/obj/structure/grille,/turf/simulated/wall/r_wall,/area) "aRD" = (/obj/structure/grille,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area) -"aRE" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aRE" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aRF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "aRG" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2299,7 +2299,7 @@ "aSk" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "aSl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aSm" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSn" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aSn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/port) "aSo" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Maltese Falcon APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSp" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "aSq" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -2310,7 +2310,7 @@ "aSv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/effect/landmark/start{name = "Captain"},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aSw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/obj/machinery/light/small,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plating,/area/janitor) "aSx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aSy" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/supply) +"aSy" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/port) "aSz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aSA" = (/obj/structure/rack,/obj/machinery/cell_charger,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) "aSB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/tools) @@ -2319,7 +2319,7 @@ "aSE" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/computer/security/telescreen{dir = 4; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = -29; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) "aSF" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aSG" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2{name = "Customs"}) -"aSH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Supply Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aSH" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "aSI" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)"; icon_state = "comfychair_brown"; dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aSJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/hos) "aSK" = (/obj/machinery/hologram/holopad,/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/carpet,/area/security/hos) @@ -2356,25 +2356,25 @@ "aTp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aTq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/port) "aTr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/borgupload{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/aiupload{pixel_x = 2; pixel_y = -2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/storage/tech) -"aTs" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Auxiliary Tool Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aTt" = (/obj/structure/cable/yellow,/obj/machinery/power/apc{dir = 2; name = "Starboard Hallway APC"; pixel_x = -1; pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Engineering"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"aTu" = (/obj/machinery/autolathe,/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aTv" = (/obj/structure/table,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/packageWrap{pixel_x = 2; pixel_y = -3},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) -"aTw" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/camera{c_tag = "Mailroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aTs" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aTt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Cargo - Foyer"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/hallway/primary/port) +"aTu" = (/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/port) +"aTv" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 8; name = "Cargo Desk"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) +"aTw" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "aTx" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aTy" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "aTz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "aTA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aTB" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/wirecutters,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aTC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) -"aTD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "63"},/turf/simulated/floor,/area/security/checkpoint/supply) -"aTE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply) -"aTF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/checkpoint/supply) -"aTG" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/security/checkpoint/supply) -"aTH" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/computer/security/mining,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/supply) +"aTD" = (/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aTE" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aTF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aTG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"aTH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aTI" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"aTJ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/hologram/holopad,/obj/machinery/camera/autoname{c_tag = "Engineering SMES Room"; dir = 8; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) -"aTK" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/hologram/holopad,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) +"aTJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) +"aTK" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/off{pixel_y = 4},/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aTL" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central) "aTM" = (/obj/structure/rack,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/engineering_construction{pixel_x = 0; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/starboard) "aTN" = (/obj/structure/rack,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -2385,8 +2385,8 @@ "aTS" = (/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aTT" = (/obj/machinery/vending/boozeomat,/turf/simulated/wall,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aTU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aTV" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/off{pixel_y = 4},/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"aTW" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/obj/item/weapon/folder/blue,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aTV" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/obj/item/weapon/folder/blue,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) +"aTW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aTX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "aTY" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "aTZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -2410,13 +2410,13 @@ "aUr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aUs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aUu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aUu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aUv" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/maintenance/storage) "aUw" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plating,/area/maintenance/starboard) "aUx" = (/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "aUy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "aUz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aUA" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 28},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aUA" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 28},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aUB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aUC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aUD" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2426,7 +2426,7 @@ "aUH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Port Corner"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "aUI" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering) "aUJ" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) -"aUK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aUK" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aUL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aUM" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aUN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -2444,7 +2444,7 @@ "aUZ" = (/obj/machinery/door/morgue{name = "Study #2"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVa" = (/turf/simulated/wall,/area/hallway/primary/starboard) "aVb" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aVc" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/supply) +"aVc" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aVd" = (/obj/machinery/door/morgue{name = "Study #1"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aVe" = (/obj/machinery/photocopier{pixel_y = 3},/turf/simulated/floor/wood,/area/library) "aVf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -2496,14 +2496,14 @@ "aVZ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) "aWa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aWb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"aWc" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply) +"aWc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aWd" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "aWe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/processing) "aWf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) "aWg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aWh" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aWi" = (/obj/structure/closet/toolcloset,/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/storage/tools) -"aWj" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"aWj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aWk" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_security{name = "Security Dock"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/processing) "aWl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2519,7 +2519,7 @@ "aWw" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aWx" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/security/range) "aWy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/hos) -"aWz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/checkpoint/supply) +"aWz" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "aWA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aWB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aWC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2549,14 +2549,14 @@ "aXa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aXb" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aXc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/library) -"aXd" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aXd" = (/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aXe" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/hallway/primary/port) "aXf" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aXg" = (/turf/simulated/floor{icon_state = "neutral"; dir = 10},/area/hallway/primary/port) "aXh" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/port) "aXi" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) "aXj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXk" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aXk" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway - Atmospherics"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) "aXl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aXm" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/port) "aXn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/port) @@ -2580,7 +2580,7 @@ "aXF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aXG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/item/clothing/gloves/fyellow,/obj/item/clothing/suit/hazardvest,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/storage/tools) "aXH" = (/obj/machinery/computer/secure_data,/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) -"aXI" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Supply Foyer"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aXI" = (/obj/structure/table/reinforced,/obj/item/toy/cards,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aXJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "aXK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aXL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2642,7 +2642,7 @@ "aYP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "aYQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/bridge) "aYR" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) -"aYS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aYS" = (/obj/machinery/computer/message_monitor,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aYT" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "aYU" = (/obj/machinery/camera{c_tag = "Council Chamber"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/wood,/area/bridge) "aYV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; name = "Unfiltered & Air to Mix"; on = 1},/turf/simulated/floor,/area/maintenance/storage) @@ -2656,25 +2656,25 @@ "aZd" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/port) "aZe" = (/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "aZf" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aZg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"}) +"aZg" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aZh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aZk" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aZk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aZl" = (/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "aZm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aZn" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge) "aZo" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads) "aZp" = (/turf/simulated/wall,/area/quartermaster/storage) -"aZq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) -"aZr" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"aZq" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) +"aZr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aZs" = (/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aZt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aZt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aZu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) -"aZv" = (/obj/machinery/door/airlock/hatch{name = "Telecomms Control Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) +"aZv" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecoms Control Room APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/server{network = "tcommsat"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aZw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aZx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) -"aZy" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecomms Control APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/server{network = "tcommsat"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aZy" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aZz" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aZA" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aZB" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/maintenance/storage) @@ -2694,16 +2694,16 @@ "aZP" = (/turf/simulated/wall/r_wall,/area/bridge) "aZQ" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/turretid{control_area = "\improper MiniSat West Wing"; enabled = 0; icon_state = "motion0"; name = "MiniSat West Wing turret control"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/storage) -"aZS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aZS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aZT" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aZU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aZV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"aZV" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Atmospherics - Control Room"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "aZW" = (/obj/machinery/teleport/hub,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZX" = (/obj/machinery/computer/teleporter,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "aZY" = (/obj/machinery/atmospherics/pipe/manifold{tag = "icon-manifold-r (EAST)"; icon_state = "manifold-r"; dir = 4; level = 2; pipe_color = "red"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "aZZ" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "baa" = (/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bab" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"bab" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/camera{c_tag = "Atmospherics - Entrance"; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "bac" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bad" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bae" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2828,7 +2828,7 @@ "bct" = (/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) "bcu" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area) "bcv" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/bridge) -"bcw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bcw" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 101},/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Atmospherics - Distro Loop"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bcx" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) "bcy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bcz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2{name = "Customs"}) @@ -2901,7 +2901,7 @@ "bdO" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Research Division"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/aft{name = "Aft Maintenance"}) "bdP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "bdQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/heads) -"bdR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bdR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bdS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bdT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bdU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) @@ -2926,7 +2926,7 @@ "ben" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "beo" = (/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) "bep" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 1; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor,/area/maintenance/storage) -"beq" = (/obj/machinery/computer/security/telescreen{dir = 8; name = "Telecoms Camera Monitor"; network = list("tcomm"); pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"beq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "ber" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bes" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bet" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) @@ -2963,7 +2963,7 @@ "beY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "beZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 4; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/storage) "bfa" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) -"bfb" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway Atmospherics"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard) +"bfb" = (/obj/machinery/computer/telecomms/traffic{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bfc" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge) "bfd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/carpet,/area/bridge) "bfe" = (/obj/structure/transit_tube{tag = "icon-N-SE"; icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) @@ -2997,11 +2997,11 @@ "bfG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfH" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfI" = (/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) -"bfJ" = (/obj/machinery/computer/message_monitor,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"bfK" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bfJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) +"bfK" = (/obj/machinery/computer/security/telescreen{dir = 8; name = "Telecoms Camera Monitor"; network = list("tcomm"); pixel_x = 26; pixel_y = 0},/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bfL" = (/obj/structure/transit_tube/station{tag = "icon-closed (EAST)"; icon_state = "closed"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bfM" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "N2O to Pure"; on = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 5; icon_state = "escape"},/area/maintenance/storage) -"bfN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bfN" = (/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bfO" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "bfP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) "bfQ" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) @@ -3011,7 +3011,7 @@ "bfU" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2{name = "Customs"}) "bfW" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bfX" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals Middle Arm Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bfX" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bfY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bfZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 1; icon_state = "manifold-y"; level = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/maintenance/storage) "bga" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "transittube"; name = "Transit Tube Blast Door"; opacity = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) @@ -3118,7 +3118,7 @@ "bhX" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 1; network = list("MiniSat")},/obj/structure/rack,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bhY" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bhZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"bia" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bia" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Arrivals - Station Entrance"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bib" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bic" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bid" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) @@ -3132,7 +3132,7 @@ "bil" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=13-Engineering"; location = "12-Central-Starboard"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "bim" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bin" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"bio" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Arrivals Middle Arm"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bio" = (/obj/machinery/conveyor{dir = 1; id = "packageExternal"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "bip" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "biq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "bir" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -3141,7 +3141,7 @@ "biu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "biv" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/crew_quarters/courtroom) "biw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"bix" = (/obj/machinery/computer/telecomms/traffic{network = "tcommsat"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bix" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "biy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "biz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "biA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3152,7 +3152,7 @@ "biF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "biG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "biH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"biI" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Atmospherics Control Room"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"biI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "biJ" = (/turf/simulated/wall,/area/maintenance/storage) "biK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/maintenance/storage) "biL" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) @@ -3174,7 +3174,7 @@ "bjb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness) "bjc" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/engine/engineering) "bjd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/engineering) -"bje" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/camera{c_tag = "Atmospherics Entrance"; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"bje" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Cargo Office"}) "bjf" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/weapon/table_parts,/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bjg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/primary) "bjh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) @@ -3200,7 +3200,7 @@ "bjB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b"; level = 2; tag = "icon-manifold-b (NORTH)"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b"; level = 2; tag = "icon-manifold-b"},/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "bjD" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/transit_tube_pod,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) -"bjE" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 101},/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Atmospherics Distro Loop"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"bjE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "bjF" = (/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/crew_quarters/courtroom) "bjG" = (/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bjH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) @@ -3241,11 +3241,11 @@ "bkq" = (/obj/machinery/washing_machine,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bkr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = 24; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "bks" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) -"bkt" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"bkt" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera{c_tag = "Arrivals - Lounge"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) "bku" = (/obj/machinery/space_heater,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) "bkv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/courtroom) "bkw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/hallway/primary/fore) -"bkx" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/quartermaster/office{name = "\improper Supply Offices"}) +"bkx" = (/obj/machinery/camera{c_tag = "Cargo Bay - Storage Wing Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) "bky" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room) "bkz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bkA" = (/obj/machinery/power/apc{dir = 1; name = "Port Hallway APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) @@ -3257,7 +3257,7 @@ "bkG" = (/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bkH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bkI" = (/obj/machinery/turret{dir = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bkJ" = (/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bkJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Cargo Bay - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) "bkK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bkL" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/multitool,/obj/item/device/multitool{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 5; icon_state = "brown"},/area/storage/primary) "bkM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/storage/primary) @@ -3297,7 +3297,7 @@ "blu" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "blv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "blw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Council Chamber"; req_access_txt = "19"},/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/bridge) -"blx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"}) +"blx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig - Desk"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) "bly" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge) "blz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/bridge) "blA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge) @@ -3331,7 +3331,7 @@ "bmc" = (/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bmd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/maintenance/storage) "bme" = (/obj/machinery/space_heater,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) -"bmf" = (/obj/machinery/power/apc{dir = 1; name = "Cargo Security APC"; pixel_x = 1; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply) +"bmf" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Courtroom - Gallery"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bmg" = (/obj/machinery/atmospherics/pipe/manifold{tag = "icon-manifold-y (EAST)"; icon_state = "manifold-y"; dir = 4; level = 2; pipe_color = "yellow"},/turf/simulated/floor,/area/maintenance/storage) "bmh" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/maintenance/storage) "bmi" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_off"; name = "Mix to Distro"; on = 0},/turf/simulated/floor,/area/maintenance/storage) @@ -3345,7 +3345,7 @@ "bmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bmr" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bms" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bmt" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/camera{c_tag = "Arrivals Station Entrance"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bmt" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bmu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Law Office"; req_access_txt = "38"},/turf/simulated/floor/wood,/area/crew_quarters/courtroom) "bmv" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "bmw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/storage/primary) @@ -3366,7 +3366,7 @@ "bmL" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/engine/engineering) "bmM" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bmN" = (/turf/simulated/wall,/area/construction) -"bmO" = (/obj/structure/closet/secure_closet/security/cargo,/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/supply) +"bmO" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bmP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "neutral"; dir = 10},/area/hallway/primary/port) "bmQ" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/hallway/secondary/construction{name = "\improper Garden"}) "bmR" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/crew_quarters/sleep_female{name = "\improper Crew Quarters Hallway"}) @@ -3537,20 +3537,20 @@ "bqa" = (/turf/simulated/wall,/area/library) "bqb" = (/obj/machinery/door/airlock{id_tag = "Toilet2"; name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bqc" = (/obj/item/device/radio/beacon,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bqd" = (/obj/item/weapon/book/manual/security_space_law,/obj/machinery/newscaster{hitstaken = 1; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply) +"bqd" = (/obj/machinery/power/apc{dir = 1; name = "Security Post - Cargo APC"; pixel_x = 1; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bqe" = (/obj/machinery/light/small,/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bqf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bqh" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) "bqi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) -"bqj" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply) +"bqj" = (/obj/structure/closet/secure_closet/security/cargo,/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bqk" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"bql" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/supply) +"bql" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/quartermaster/storage) "bqm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bqn" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/power/apc{dir = 1; name = "Quartermaster's Office APC"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bqo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bqp" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/turret{dir = 1; enabled = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) -"bqq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply) +"bqq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 29; pixel_y = 0},/obj/machinery/camera{c_tag = "AI Upload Foyer"; dir = 2; network = list("SS13","RD","AIUpload")},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) "bqr" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/qm) "bqs" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "bqt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/bridge) @@ -3643,7 +3643,7 @@ "bsc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood,/area/library) "bsd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/primary) "bse" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bsf" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera{c_tag = "Arrivals Lounge"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/primary/port) +"bsf" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals - Fore Arm - Far"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bsg" = (/obj/machinery/door/airlock/maintenance{name = "Tool Storage Maintenance"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/primary) "bsh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/storage/primary) "bsi" = (/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -3699,14 +3699,14 @@ "btg" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/vending/coffee,/obj/machinery/camera{c_tag = "Engineering Foyer Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "bth" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) "bti" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing - Security Access Door"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"btj" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage Wing Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) +"btj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "btk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "btl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "btm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "btn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) "bto" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area) "btp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) -"btq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Cargo Bay Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) +"btq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "btr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "bts" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) "btt" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/fyellow,/obj/machinery/light/small,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) @@ -3882,7 +3882,7 @@ "bwH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bwJ" = (/obj/machinery/hologram/holopad,/obj/structure/sign/kiddieplaque{pixel_y = 32},/obj/machinery/camera{c_tag = "AI Upload Chamber - Fore"; dir = 2; network = list("SS13","RD","AIUpload")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bwK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bwK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Post - Cargo"; req_access_txt = "63"},/turf/simulated/floor,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bwL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/locker) "bwM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) "bwN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) @@ -3942,7 +3942,7 @@ "bxP" = (/obj/structure/table,/obj/item/device/aicard,/obj/item/weapon/aiModule/reset,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bxQ" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/starboard) "bxR" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/storage/tools) -"bxS" = (/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","MiniSat","RD")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bxS" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bxT" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "bxU" = (/obj/structure/stool,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "bxV" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) @@ -3974,14 +3974,14 @@ "byv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "byw" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "byx" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) -"byy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 29; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai_upload_foyer) +"byy" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/computer/security/mining,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "byz" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/surgery) "byA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"}) "byB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper{name = "Sleepers"}) "byC" = (/obj/structure/flora/tree/pine/xmas{pixel_x = -16; pixel_y = -4},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) "byD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "byE" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) -"byF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; pixel_x = 26; pixel_y = 0; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig Desk"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) +"byF" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals - Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "byG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Fore Primary Hallway Cells"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "byH" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "byI" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/device/assembly/igniter,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) @@ -4014,7 +4014,7 @@ "bzj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/locker) "bzk" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bzl" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = 0; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) -"bzm" = (/obj/machinery/computer/secure_data,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 32; pixel_y = 2},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science) +"bzm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bzn" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bzo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/library) "bzp" = (/obj/machinery/light_switch{pixel_y = -23},/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4115,7 +4115,7 @@ "bBg" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/obj/machinery/door/window{dir = 1; name = "Primary AI Core Access"; pixel_y = 0; req_access_txt = "16"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai) "bBh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/lawoffice) "bBi" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; name = "Gas Pump"; on = 1},/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area) -"bBj" = (/obj/machinery/compressor{comp_id = "incineratorturbine"; dir = 1; luminosity = 2},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bBj" = (/obj/item/weapon/book/manual/security_space_law,/obj/machinery/newscaster{hitstaken = 1; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bBk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/southleft,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) "bBl" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 9},/obj/structure/disposalpipe/segment,/turf/space,/area) "bBm" = (/obj/machinery/power/turbine{luminosity = 2},/obj/structure/cable,/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) @@ -4131,7 +4131,7 @@ "bBw" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "bBx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bBy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) -"bBz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bBz" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bBA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) "bBB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bBC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4287,7 +4287,7 @@ "bEw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bEx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) -"bEz" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Courtroom Gallery"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"bEz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bEA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) "bEB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/fore) "bEC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) @@ -4345,7 +4345,7 @@ "bFC" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bFD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "bFE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"bFF" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bFF" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/camera{c_tag = "Security Post - Cargo"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bFG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bFH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bFI" = (/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4369,7 +4369,7 @@ "bGa" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) "bGb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) -"bGd" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals Fore Arm Far"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bGd" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bGe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) "bGf" = (/obj/item/weapon/cigbutt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -4522,7 +4522,7 @@ "bIX" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bIY" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "bIZ" = (/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bJa" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"bJa" = (/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bJb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJc" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJd" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4550,7 +4550,7 @@ "bJz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bJA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/construction) "bJB" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bJC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Telescience Lab"; dir = 1; network = list("SS13","RD")},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bJC" = (/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "AI Chamber - Fore"; dir = 2; network = list("SS13","MiniSat","RD")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bJD" = (/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/trash/candy,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJE" = (/obj/machinery/door/airlock{name = "Medbay Emergency Storage"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/construction) @@ -4625,7 +4625,7 @@ "bKW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) "bKX" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bKY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bKZ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bKZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bLb" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bLc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) @@ -4693,7 +4693,7 @@ "bMm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bMo" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"bMp" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"bMp" = (/obj/machinery/door/poddoor{id = "turbinevent"; name = "Turbine Vent"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bMq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/port) "bMr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/solar/port) "bMs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) @@ -4749,7 +4749,7 @@ "bNq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/turret_protected/ai_upload) "bNr" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bNs" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/engine,/area/toxins/telesci) -"bNt" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Telescience Test Chamber"; dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/telesci) +"bNt" = (/obj/machinery/compressor{comp_id = "incineratorturbine"; dir = 1; luminosity = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bNu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) "bNv" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) "bNw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4815,7 +4815,7 @@ "bOE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "bOF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "bOG" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) -"bOH" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "O2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bOH" = (/obj/structure/table/woodentable,/obj/item/toy/cards,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "bOI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "bOJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/research{name = "Research Division"}) "bOK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) @@ -4824,7 +4824,7 @@ "bON" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOO" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/central) "bOP" = (/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/screwdriver{pixel_x = -2; pixel_y = 6},/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/radio/headset/headset_med,/obj/structure/table,/turf/simulated/floor{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) -"bOQ" = (/obj/machinery/atmospherics/valve/digital{dir = 1; icon_state = "valve1"; name = "N2 Outlet Valve"; open = 1; pipe_color = "yellow"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bOQ" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Toxins - Storage"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bOR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bOS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bOT" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) @@ -4834,7 +4834,7 @@ "bOX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/central) "bOY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central) "bOZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central) -"bPa" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics Starboard-Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bPa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Telescience - Lab"; dir = 1; network = list("SS13","RD")},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bPb" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "L7"},/area/hallway/primary/central) "bPc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9-Escape"; location = "8-Central-Aft"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "L9"},/area/hallway/primary/central) "bPd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L11"},/area/hallway/primary/central) @@ -4874,7 +4874,7 @@ "bPL" = (/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor,/area/maintenance/storage) "bPM" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bPN" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port) -"bPO" = (/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"bPO" = (/turf/simulated/wall,/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bPP" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "bPQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bPR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) @@ -4906,7 +4906,7 @@ "bQr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bQs" = (/obj/structure/rack,/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQt" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) -"bQu" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 1; name = "O2 Outlet Valve"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bQu" = (/obj/machinery/computer/secure_data,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 32; pixel_y = 2},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bQv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/lab) "bQw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/vending/cola,/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bQx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) @@ -4973,7 +4973,7 @@ "bRG" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 10; icon_state = "whitepurple"},/area/toxins/lab) "bRH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bRI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/construction) -"bRJ" = (/turf/simulated/wall/r_wall,/area/toxins/server) +"bRJ" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor,/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bRK" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) "bRL" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "bRM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -4996,7 +4996,7 @@ "bSd" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "o2_sensor"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bSe" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bSf" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bSg" = (/turf/simulated/wall,/area/security/checkpoint/science) +"bSg" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bSh" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bSi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bSj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port) @@ -5052,7 +5052,7 @@ "bTh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bTi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bTj" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bTk" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"bTk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bTl" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bTm" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTn" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/machinery/light,/turf/simulated/floor/wood,/area/library) @@ -5154,7 +5154,7 @@ "bVf" = (/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bVi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"bVi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bVj" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 5; icon_state = "intact-r"; level = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bVk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -5209,7 +5209,7 @@ "bWi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bWj" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bWk" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/security/vacantoffice) -"bWl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/science) +"bWl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bWm" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/security/vacantoffice) "bWn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bWo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/library) @@ -5224,7 +5224,7 @@ "bWx" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bWy" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Incinerator Interior Airlock"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator) "bWz" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) -"bWA" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor,/area/security/checkpoint/science) +"bWA" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/camera{c_tag = "Security Post - Research Division"; dir = 8; network = list("SS13","RD"); pixel_x = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bWB" = (/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "bWC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/hallway/primary/central) "bWD" = (/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; pixel_x = 0; pixel_y = -30},/obj/item/weapon/folder/white,/obj/structure/table,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -5284,12 +5284,12 @@ "bXF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bXG" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bXH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bXI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science) +"bXI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bXJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bXK" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "ResearchFoyer"; name = "Research Door Button"; normaldoorcontrol = 1; pixel_x = 26; pixel_y = -4},/obj/machinery/door_control{dir = 2; id = "rndshuttersup"; name = "Shutters Control Button"; pixel_x = 26; pixel_y = 6},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/lab) -"bXL" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science) -"bXM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science) -"bXN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/security/checkpoint/science) +"bXL" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bXM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics - Starboard Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"bXN" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics - Port-Aft"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "bXO" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) "bXP" = (/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/toxins/lab) "bXQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) @@ -5353,7 +5353,7 @@ "bYW" = (/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bYX" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bYY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"bYZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server) +"bYZ" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 6; req_access_txt = "47"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "ResearchFoyer"; name = "Research Door Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bZa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bZb" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZc" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) @@ -5390,8 +5390,8 @@ "bZH" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bZI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"bZK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/science) -"bZL" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 6},/obj/machinery/newscaster/security_unit{pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/science) +"bZK" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 6},/obj/machinery/newscaster/security_unit{pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/science{name = "Security Post - Research Division"}) +"bZL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bZM" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bZN" = (/turf/simulated/wall,/area/medical/chemistry) "bZO" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -5409,7 +5409,7 @@ "caa" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "cab" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/port) "cac" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cad" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science) +"cad" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cae" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caf" = (/obj/machinery/computer/med_data,/obj/machinery/light{dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "cag" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/power/apc{dir = 1; name = "Sleeper Room APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) @@ -5445,12 +5445,12 @@ "caK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "caL" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "caM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 1; icon_state = "blackcorner"},/area/maintenance/storage) -"caN" = (/obj/structure/closet/secure_closet/security/science,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/science) +"caN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Post - Research Division"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "caO" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage) "caP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "caQ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/machinery/power/apc{dir = 2; name = "Medbay Storage APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "caR" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"caS" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"caS" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Telescience - Test Chamber"; dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/telesci) "caT" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "caU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r"; level = 2},/obj/machinery/meter,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage) "caV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5484,7 +5484,7 @@ "cbx" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cby" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "cbz" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cbA" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Atmospherics Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"cbA" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/light{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cbB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbC" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) @@ -5526,7 +5526,7 @@ "ccn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "cco" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "ccp" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #5"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"ccq" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_tele,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) +"ccq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/checkpoint/science{name = "Security Post - Research Division"}) "ccr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "ccs" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cct" = (/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) @@ -5534,10 +5534,10 @@ "ccv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "ccw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "ccx" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics) -"ccy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science) -"ccz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/checkpoint/science) -"ccA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science) -"ccB" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science) +"ccy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science{name = "Security Post - Research Division"}) +"ccz" = (/obj/structure/closet/secure_closet/security/science,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) +"ccA" = (/obj/machinery/power/apc{dir = 8; name = "Security Post - Research Division APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/science{name = "Security Post - Research Division"}) +"ccB" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "ccC" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "ccD" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "ccE" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -5599,8 +5599,8 @@ "cdI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cdJ" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/aft{name = "Aft Maintenance"}) "cdK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cdL" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/science) -"cdM" = (/obj/machinery/power/apc{dir = 8; name = "Research Wing Security APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/science) +"cdL" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Atmospherics - Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"cdM" = (/obj/structure/table/woodentable,/obj/item/toy/cards,/turf/simulated/floor/wood,/area/library) "cdN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cdO" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cdP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) @@ -5681,7 +5681,7 @@ "cfm" = (/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/wood,/area/security/vacantoffice) "cfn" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cfp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"cfp" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cfq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cfr" = (/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -5; pixel_y = 2},/obj/structure/table/woodentable,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cfs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -5697,7 +5697,7 @@ "cfC" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfD" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfE" = (/obj/structure/table/woodentable,/obj/machinery/bot/cleanbot{desc = "A little cleaning robot, one of NanoTrasen's more successful products. The label states that, on average, this model requires 40% less psychiatric care than its biological counterpart."; name = "\improper NanoTrasen cleanbot"; on = 0; pixel_y = 4},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cfF" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cfF" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/camera{c_tag = "Theatre - Backstage"; dir = 1; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "cfI" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) @@ -5836,7 +5836,7 @@ "cil" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/keycard_auth{pixel_x = 26; pixel_y = 0},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cim" = (/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cin" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/item/robot_parts/chest{name = "cyborg torso"; pixel_x = -2; pixel_y = 2},/obj/item/robot_parts/head{name = "cyborg head"; pixel_x = 3; pixel_y = 2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"cio" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"cio" = (/turf/simulated/wall/r_wall,/area/maintenance/atmos_control{name = "Telecoms Storage"}) "cip" = (/obj/machinery/chem_master/condimaster{name = "BrewMaster 4000"; pixel_x = -4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "ciq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/starboard) "cir" = (/obj/structure/dispenser{pixel_x = -1},/turf/simulated/floor{dir = 1; icon_state = "blackcorner"},/area/maintenance/storage) @@ -5857,7 +5857,7 @@ "ciG" = (/obj/structure/stool/bed/roller,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciH" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciI" = (/obj/machinery/atmospherics/trinary/filter,/turf/simulated/floor/plating,/area/maintenance/starboard) -"ciJ" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Toxins Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"ciJ" = (/obj/machinery/light/small,/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft"; dir = 1; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "ciK" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) "ciL" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/cryo) "ciM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -5866,7 +5866,7 @@ "ciP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ciQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"ciS" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) +"ciS" = (/obj/structure/table,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "ciT" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "ciU" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/wirecutters,/obj/item/weapon/weldingtool,/turf/simulated/floor/plating,/area/maintenance/starboard) "ciV" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) @@ -5915,7 +5915,7 @@ "cjM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cjN" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) "cjO" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = -32},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cjP" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "Gas Mix Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/maintenance/storage) +"cjP" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "cjQ" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "cjR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "cjS" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/robotics) @@ -5948,7 +5948,7 @@ "ckt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "kitchenwindow"; name = "kitchen shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "cku" = (/obj/structure/rack,/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/packageWrap,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "ckv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"ckw" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"ckw" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "ckx" = (/obj/structure/table/reinforced,/obj/item/seeds/carrotseed,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "cky" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboard) "ckz" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5997,26 +5997,26 @@ "clq" = (/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "clr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cls" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/storage/primary) -"clt" = (/turf/simulated/wall/r_wall,/area/maintenance/atmos_control{name = "Telecomms Storage"}) +"clt" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "clu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/starboard) "clv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "clw" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology) -"cly" = (/obj/machinery/light/small,/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"cly" = (/obj/structure/table/woodentable,/obj/item/toy/cards,/turf/simulated/floor/wood,/area/security/vacantoffice) "clz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) -"clA" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft - Starboard Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) +"clA" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Starboard Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "clB" = (/obj/machinery/light/small,/obj/machinery/telecomms/broadcaster/preset_left,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "clC" = (/obj/machinery/light/small,/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "clD" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (WEST)"; icon_state = "warnplatecorner"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "clE" = (/obj/structure/stool/bed/chair/wood/wings{dir = 8},/obj/effect/landmark/start{name = "Clown"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Mime"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bookcase{name = "bookcase"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"clH" = (/obj/structure/table,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) +"clH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "clI" = (/obj/structure/morgue,/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) -"clJ" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) +"clJ" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera{c_tag = "Aft Port Solar Maintenance"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/portsolar) "clK" = (/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) -"clL" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) -"clM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"clL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) +"clM" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Server Room"},/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "clN" = (/obj/structure/dresser,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "clP" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) @@ -6026,7 +6026,7 @@ "clT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "clU" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "clV" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #6"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) -"clW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft - Port Corner"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"clW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central) "clX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) "clY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "clZ" = (/obj/machinery/light_switch{pixel_x = 6; pixel_y = 26},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -4; pixel_y = 26; req_access_txt = "28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -6039,7 +6039,7 @@ "cmg" = (/obj/machinery/computer/mecha,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cmh" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/door_control{id = "kitchenwindow"; name = "Window Shutter Control"; pixel_x = -26; pixel_y = 0; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmi" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"cmj" = (/turf/simulated/wall,/area/toxins/server) +"cmj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cmk" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/light/small{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "cml" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) "cmm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor,/area/toxins/storage) @@ -6068,7 +6068,7 @@ "cmJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/wood,/area/security/vacantoffice) "cmK" = (/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "Serving Hatch"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cmL" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) -"cmM" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science) +"cmM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central) "cmN" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cmO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cmP" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) @@ -6116,20 +6116,20 @@ "cnF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cnG" = (/obj/structure/morgue,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cnH" = (/obj/structure/table/woodentable,/obj/item/device/violin,/turf/simulated/floor/wood,/area/crew_quarters/theatre) -"cnI" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"cnI" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Port"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cnJ" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cnK" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cnL" = (/obj/machinery/door/window/eastleft{dir = 1; name = "Robotics Deliveries"; req_access_txt = "29"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/robotics) "cnM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cnN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) -"cnO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/toxins/server) -"cnP" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"cnO" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Starboard"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"cnP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central) "cnQ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cnR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/genetics) "cnS" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cnT" = (/obj/machinery/computer/rdservercontrol,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cnU" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cnV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"cnT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central) +"cnU" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"cnV" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/maintenance/storage) "cnW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cnX" = (/obj/structure/rack,/obj/item/weapon/weldingtool,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cnY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-Aft"; location = "7.5-Starboard-Aft-Corner"},/turf/simulated/floor,/area/hallway/primary/central) @@ -6147,7 +6147,7 @@ "cok" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/assembly/robotics) "col" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "com" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) -"con" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"con" = (/obj/machinery/light/small,/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "coo" = (/obj/machinery/door_control{dir = 2; id = "robotics"; name = "Shutter Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/robotics) "cop" = (/obj/structure/rack,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/packageWrap,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "coq" = (/obj/machinery/pipedispenser/disposal,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/maintenance/storage) @@ -6168,7 +6168,7 @@ "coF" = (/obj/machinery/power/apc{dir = 2; lighting = 3; name = "Chapel Office APC"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "coG" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "coH" = (/obj/structure/closet/wardrobe/chaplain_black,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"coI" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"coI" = (/obj/structure/table/woodentable,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "coJ" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "coK" = (/obj/structure/morgue,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "coL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -6206,7 +6206,7 @@ "cpr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cps" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cpu" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 6; req_access_txt = "47"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "ResearchFoyer"; name = "Research Door Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/science) +"cpu" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "cpv" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/space,/area) "cpw" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpx" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -6229,7 +6229,7 @@ "cpO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpP" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #3"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cpQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"cpR" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Xenobiology Airlock"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) +"cpR" = (/obj/machinery/light/small,/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/camera{c_tag = "Telecoms - Control Room"; dir = 1; network = list("SS13","tcomm")},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "cpS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpT" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/lawoffice) "cpU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) @@ -6299,14 +6299,14 @@ "crg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crh" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/assembly/robotics) "cri" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"crj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crj" = (/obj/structure/filingcabinet{pixel_x = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "crk" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "crl" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #2"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "crm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "crn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft) "cro" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "crp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"crq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"crq" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 0; pixel_y = -30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "crr" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "crs" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "crt" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) @@ -6445,7 +6445,7 @@ "ctW" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "ctX" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "ctY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"ctZ" = (/obj/machinery/light/small,/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"ctZ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_tele,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Teleporter Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) "cua" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cub" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuc" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6458,15 +6458,15 @@ "cuj" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cuk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cul" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"cum" = (/obj/structure/table/woodentable,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) -"cun" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"cum" = (/obj/machinery/camera{c_tag = "Arrivals - Aft Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cun" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecoms Server Room APC"; pixel_x = 25; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft-Starboard"; dir = 8; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cuo" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cup" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cuq" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cur" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cus" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cut" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"cuu" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "yellow"; dir = 4; name = "N2O Outlet Valve"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) +"cuu" = (/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft-Port"; dir = 4; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cuv" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cux" = (/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6484,15 +6484,15 @@ "cuJ" = (/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cuK" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cuL" = (/turf/simulated/floor/plating/airless,/area/solar/port) -"cuM" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/server{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"cuN" = (/obj/machinery/atmospherics/pipe/simple{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cuO" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cuP" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"cuQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Server Room"; req_access_txt = "30"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"cuM" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"cuN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"cuO" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Telecoms Storage APC"; pixel_x = -28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"cuP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Arrivals - Aft Arm"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"cuQ" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Atmospherics - Central"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) "cuR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cuS" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuT" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cuU" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"cuU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "cuV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cuX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6541,22 +6541,22 @@ "cvO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cvP" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet,/area/chapel/main) "cvQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cvR" = (/obj/machinery/light/small,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"cvR" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Telecoms - Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "cvS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/port) "cvU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cvV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cvW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/maintenance{name = "Morgue Maintenance"; req_access_txt = "6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cvX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"cvY" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"cvZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/plating,/area/toxins/server) -"cwa" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"cvX" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"cvY" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/engineering{name = "Telecoms Storage"; req_access_txt = "61"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"cvZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"cwa" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Xenobiology - Airlock"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) "cwb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"cwc" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = list("SS13","RD"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"cwd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"cwc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/camera{c_tag = "Chapel - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cwd" = (/obj/machinery/camera{c_tag = "Xenobiology Lab - Fore"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/toxins/xenobiology) "cwe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) "cwf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "isolb"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/patients_rooms{name = "Patient Room A"}) -"cwg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"cwg" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cwh" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isolb"; name = "Privacy Shutters"; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/patients_rooms{name = "Patient Room A"}) "cwi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) "cwj" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6568,7 +6568,7 @@ "cwp" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwq" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) "cwr" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room A APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cws" = (/obj/structure/filingcabinet{pixel_x = 3},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"cws" = (/obj/machinery/light_switch{pixel_x = -27},/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cwt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwu" = (/turf/simulated/wall/r_wall,/area/medical/virology) "cwv" = (/turf/simulated/floor,/area/security/checkpoint/medical) @@ -6641,7 +6641,7 @@ "cxK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/hologram/holopad,/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "cxL" = (/turf/simulated/wall,/area/security/checkpoint/medical) "cxM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/xenobiology) -"cxN" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) +"cxN" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "cxO" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxP" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cxQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6702,7 +6702,7 @@ "cyT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyV" = (/obj/machinery/power/solar_control{id = "starboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cyW" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port-Aft"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"cyW" = (/obj/machinery/computer/rdservercontrol,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "cyX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6716,7 +6716,7 @@ "czh" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "czi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "czj" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern{pixel_y = 7},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"czk" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"czk" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "czl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czm" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics_cloning) "czn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "0"},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) @@ -6764,7 +6764,7 @@ "cAd" = (/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/contraband/poster,/obj/item/weapon/retractor,/turf/simulated/floor/plating,/area/security/checkpoint/medical) "cAf" = (/obj/structure/closet/l3closet/virology,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) -"cAg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/toxins/server) +"cAg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/toxins/server{name = "\improper Research Division Server Room"}) "cAh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "cAi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) "cAj" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6777,7 +6777,7 @@ "cAq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAr" = (/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "xeno_airlock_exterior"; id_tag = "xeno_airlock_control"; interior_door_tag = "xeno_airlock_interior"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/toxins/xenobiology) "cAs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) -"cAt" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/toxins/xenobiology) +"cAt" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "cAu" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cAw" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) @@ -6792,7 +6792,7 @@ "cAF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation A"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cAG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation B"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cAH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cAI" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 0; pixel_y = -30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecommunications Control Room"}) +"cAI" = (/turf/simulated/wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "cAJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cAK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) "cAL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6851,7 +6851,7 @@ "cBM" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "cBN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cBO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cBP" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"cBP" = (/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "cBQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) "cBR" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cBS" = (/turf/simulated/wall,/area/toxins/xenobiology) @@ -6920,7 +6920,7 @@ "cDd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology) "cDe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cDf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"cDg" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) +"cDg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cDh" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/starboard) "cDi" = (/turf/simulated/floor/plating/airless,/area/solar/starboard) "cDj" = (/turf/space,/area/syndicate_station/southwest) @@ -7271,7 +7271,7 @@ "cJQ" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/genetics) "cJR" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cJS" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cJT" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) +"cJT" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology - Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cJU" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cJV" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) "cJW" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/teleporter{name = "\improper Teleporter Room"}) @@ -7283,7 +7283,7 @@ "cKc" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/carrotseed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cKd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKe" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) -"cKf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera{c_tag = "Xenobiology Entrance"; dir = 8; network = list("SS13","RD")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) +"cKf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera{c_tag = "Xenobiology - Entrance"; dir = 8; network = list("SS13","RD")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cKg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) "cKh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKi" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) @@ -7350,7 +7350,7 @@ "cLr" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cLs" = (/obj/machinery/vending/coffee,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cLt" = (/obj/machinery/light{dir = 4},/obj/structure/sign/vacuum{pixel_x = 32},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cLu" = (/obj/machinery/door/airlock/hatch{name = "Telecomms Server Room"},/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) +"cLu" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera{c_tag = "Aft Starboard Solar Maintenance"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cLv" = (/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) "cLw" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7424,7 +7424,7 @@ "cMN" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) "cMO" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "cMP" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"cMQ" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"cMQ" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "cMR" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "cMT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -7555,7 +7555,7 @@ "cPo" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"; dir = 2},/area/shuttle/escape/centcom) "cPp" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cPq" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"cPr" = (/obj/machinery/camera{c_tag = "Xenobiology Test Chamber"; dir = 1; network = list("Xeno","RD"); pixel_x = 0},/obj/machinery/light{dir = 2},/turf/simulated/floor/engine,/area/toxins/xenobiology) +"cPr" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Chapel - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cPs" = (/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cPt" = (/obj/structure/table,/obj/item/trash/popcorn,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cPu" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) @@ -7680,7 +7680,7 @@ "cRJ" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cRK" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) "cRL" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"cRM" = (/obj/structure/table/woodentable,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/item/weapon/storage/bible,/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) +"cRM" = (/obj/machinery/camera{c_tag = "Chapel Office - Backroom"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "cRN" = (/turf/unsimulated/wall,/area/tdome) "cRO" = (/obj/machinery/igniter,/turf/simulated/floor,/area/tdome) "cRP" = (/turf/simulated/floor,/area/tdome) @@ -8673,7 +8673,7 @@ "dkO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "dkP" = (/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) "dkQ" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) -"dkR" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) +"dkR" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "dkS" = (/obj/effect/landmark/corpse/clown{name = "Clown Pilot"},/turf/simulated/floor/airless,/area) "dkT" = (/obj/item/weapon/paper{info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!"},/turf/simulated/floor/airless,/area) "dkU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area) @@ -9523,7 +9523,7 @@ "dBg" = (/obj/machinery/door/poddoor{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBh" = (/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dBi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"dBj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Toxins Launch Control"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dBj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBk" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBl" = (/obj/machinery/power/apc{dir = 1; name = "Mech Bay APC"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/assembly/chargebay) "dBm" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/laborcamp/station) @@ -9560,7 +9560,7 @@ "dBR" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "dBS" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "dBT" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome Admin"},/area/tdome/tdomeadmin) -"dBU" = (/obj/machinery/camera{c_tag = "Virology Entrance"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) +"dBU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "dBV" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "dBW" = (/turf/unsimulated/wall/fakedoor,/area/centcom/control) "dBX" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control) @@ -9693,7 +9693,7 @@ "dEu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) "dEv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Lab"; req_access_txt = "5;9"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/genetics) "dEw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Access"; req_access_txt = "5;9"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/genetics) -"dEx" = (/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/camera{c_tag = "Virology Cells"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) +"dEx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "dEy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "dEz" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/exam_room{name = "Patient Room B"}) "dEA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) @@ -9716,7 +9716,7 @@ "dER" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/weapon/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dES" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) "dET" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) -"dEU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) +"dEU" = (/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/camera{c_tag = "Virology - Cells"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) "dEV" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/xenobiology) "dEW" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) "dEX" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -9786,7 +9786,7 @@ "dGj" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall,/area/mine/laborcamp/security) "dGk" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "dGl" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/simulated/floor,/area/mine/laborcamp/security) -"dGm" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/wall,/area/mine/laborcamp/security) +"dGm" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm/server{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "dGn" = (/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "dGo" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor,/area/mine/laborcamp) "dGp" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/mine/laborcamp/security) @@ -9901,7 +9901,7 @@ "dIu" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "dIv" = (/obj/machinery/telecomms/processor/preset_one,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIw" = (/obj/machinery/telecomms/receiver/preset_left,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dIx" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","tcomm")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"dIx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dIy" = (/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "dIz" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIA" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) @@ -9916,12 +9916,12 @@ "dIJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dIK" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area) "dIL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area) -"dIM" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecoms Server Room APC"; pixel_x = 25; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"dIM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Server Access"; req_access_txt = "30"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dIN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dIO" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13","tcomm")},/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dIP" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) -"dIQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) -"dIR" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) +"dIO" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) +"dIP" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) +"dIQ" = (/obj/machinery/atmospherics/pipe/simple{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) +"dIR" = (/obj/machinery/camera{c_tag = "Virology - Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dIS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/telecomms/server/presets/science,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIT" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIU" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -9929,16 +9929,16 @@ "dIW" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIX" = (/obj/machinery/telecomms/hub/preset,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIY" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/starboard) -"dIZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) -"dJa" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) -"dJb" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) +"dIZ" = (/obj/machinery/camera{c_tag = "Virology - Entrance"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) +"dJa" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/camera{c_tag = "Virology - Lab"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) +"dJb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "dJc" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/telecomms/bus/preset_four,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJd" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/telecomms/processor/preset_four,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJe" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJf" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJg" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dJh" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/engineering{name = "Telecommunications Storage"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/atmos_control{name = "Telecomms Storage"}) -"dJi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/maintenance/atmos_control{name = "Telecomms Storage"}) +"dJh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Research Division Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) +"dJi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dJj" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJl" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) @@ -10000,7 +10000,7 @@ "dKp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKq" = (/obj/structure/closet/emcloset,/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "dKr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "24"},/turf/simulated/floor{dir = 6; icon_state = "caution"},/area/maintenance/storage) -"dKs" = (/obj/machinery/camera{c_tag = "Virology Airlock"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/light,/obj/structure/closet/l3closet,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"dKs" = (/obj/machinery/camera{c_tag = "Research Division - Server Room"; dir = 2; network = list("SS13","RD"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "Research Division Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKu" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/crema_switch{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) @@ -10052,7 +10052,7 @@ "dLp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/ore_box,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dLq" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/folder/red,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) "dLr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) -"dLs" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/camera{c_tag = "Virology Lab"; dir = 8; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) +"dLs" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dLt" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/security/vacantoffice) "dLu" = (/obj/structure/table/woodentable,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/clipboard,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/security/vacantoffice) "dLv" = (/obj/structure/table/woodentable,/obj/item/device/camera_film{pixel_y = 9},/obj/item/device/camera_film{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -10069,15 +10069,15 @@ "dLG" = (/obj/structure/dispenser/oxygen{layer = 2.9; pixel_x = -1; pixel_y = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "dLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "dLI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dLJ" = (/obj/machinery/camera{c_tag = "Arrivals Aft Arm Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/plating,/area/toxins/server{name = "\improper Research Division Server Room"}) "dLK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = -32},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) "dLL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dLM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/gateway) "dLN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Kitchen"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"dLO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Arrivals Aft Arm"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"dLO" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "dLP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "dLQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dLR" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage) +"dLR" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins - Lab"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dLS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) "dLT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "dLU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/gateway) @@ -10157,7 +10157,7 @@ "dNq" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNr" = (/obj/machinery/portable_atmospherics/canister,/obj/structure/window/reinforced{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNs" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNt" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNt" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Toxins - Launch Area"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNu" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNv" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNw" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -10177,7 +10177,7 @@ "dNK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNN" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNN" = (/obj/machinery/light{dir = 2},/obj/machinery/camera{c_tag = "Xenobiology Lab - Test Chamber"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dNO" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNP" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; dir = 8; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -10227,7 +10227,7 @@ "dOI" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/mine/north_outpost) "dOJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) "dOK" = (/obj/machinery/disposal/deliveryChute{dir = 8; name = "mining dock chute"; pixel_x = 12; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door/window/westright{dir = 8; name = "mining dock chute access"; pixel_x = -2; req_access_txt = "48"; req_one_access_txt = "0"},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/north_outpost) -"dOL" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dOL" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Xenobiology Lab - Aft"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "dOM" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/mine/north_outpost) "dON" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/north_outpost) "dOO" = (/obj/structure/dispenser/oxygen,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor,/area/mine/north_outpost) @@ -10301,6 +10301,10 @@ "dQe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/incinerator) "dQf" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area) "dQg" = (/obj/machinery/door/airlock/glass_security{name = "Centcom Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"dQh" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Xenobiology Lab - Central"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) +"dQi" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp/security) +"dQj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/laborcamp) +"dQk" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/mine/north_outpost) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10371,134 +10375,134 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadadxadyadyadyadyaaAadAaazadCadCadCadCadDaadaaEaadaadaadaadaadaadaaaaaaaaiaajaaiaaiaxRaxOaxQaaiaaiaxKaaiaadahqaxIaxHaxGaxFaaaaadaxNaxMaxLcGdahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaEaadaaaaaaaaaaaaanyaIwaxEanyaxCaxBanyanyanyanyanyanyanyaadaadaaaaaaaaaaakaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaapaapaapaapaapaadadAaadaapaapaapaapaapaaaaakaaaaaaaadauWauWauNauWaaiaaiayCaxkaytayvaaRaysaBMaygayeaaiaadahqaybaxXawCaAlabiabjabharEarEayfahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadanyanyanyaxJapmaIoaxTapVaxSavbaxWanuaaaaaaaaaaadaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaaaaOaaTaaOaaOaaTaaaajdaaaaaTaaOaaTaaTaaOaaaaaaaaaaaaaadauWauWauNauWaaiaxaaaBaayaayawrawxawuaaJawwawAaaiaadawyawEawDawCawBawsasDauxarEarEarEcRWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaakaaaaaaaaaaaaaadaaaanuawcauuawdawhavTavhawbawaavSavNaopaaaaadaadaadaadaadaadaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaxnawZaayaaxawXaxcaxmaaoaaWazRaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaDmawZaayaaxawXaxcaxmaaoaaWazRaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaOaaOaaTaaTaaOaaaabYaaaaaTaaOaaTaaOaaTaaaaaaaaaaaaaadauWaaiauUauVaaRaaRauRaaRauSauTaaUauPauQaayaayauOauNauMauDauCauzahqaaaaadahTahRahRahRahTaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaadaadaaaanyanyanyapmauvaurauqapVausauuautanuaaaaadaaaaaaaacaaaaaaaakaadafgafgafgafgafgaupafMaupafgafgafgafgafgaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadavuavtavtavtdehaadaadaadaadaadaadaakauNaaiavGavMaayaayavCavDavzavBadbavyavwaaRaaRavrauNavsavoavnavqavpaadaadahaahmahmahmahpaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaanuauYavbauXaxJavjavhavfaIfaqOavkaopaaaaadaaaaaaaaaaaaaaaaakaaaafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaEHaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaOWaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaFcaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaOWaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaadaaaaadaadabYaadaadaaaaaaaaaaaaaaaauWabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiauNawyavoavnavqavpaaaaadaaaabvabvabvabvabvaaaaadaaaaaaabwabwaWyaWMaYuabwabwaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadanyanyanyapmamRaurauqapVaFdavbauYanuaaaaadaaaaaaaaaaaaaaaaaEaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaNBabvabvaadaadabwabwaNTaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaadaaaakhaQJakhaadaadaadaadaadaadauNaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiaajayOaWfaWeaWkayOaadabvabvaOJaEqaEpaEpaErabvabvaadabwaDYaEaaEbaEeaUCaVuaEmabwaadahwaSNaSPaWxahwaaaaaaaaaaadaaaaaaaaaaadaaaaopaseaExaONaEwaDoaEuanyanyanyanyanyaaaaaaaadaaaaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaadaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaCYaBtaBLaFVaBJaBIaBWaBRaBOaBNaadabvaDiaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaadaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaNbaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaOiaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaNdaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaOpavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFaoFaKCalGalGalGalHakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaAyazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaKGadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaMzaMuaoHamnaMmaMlakTamoarHamqakTaLOaLEaLqaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFaoFaKCalGalGalGalHakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaEhazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaKGadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaMzaMuaoHamnaMmaMlakTamoarHamqakTaLOaLEaEHaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaoFaugaoFaveamnavXaxbalDakTaleanbakTaxDazoawYatCajeaadaadaadaaaaadaaaaaaaaaaaaaaaakBakAakCatUarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHatBajJatzajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaqjamZaqjaqXargaqlaqmarkarJarjbGxaWoarTamuasFatQasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaqcaipaiqairaiJakbacBakiakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadrapXahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaqjamZaqjaqXargaqlaqmarkarJarjbGxaWoarTamuasFatQasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaqcaipaiqairaiJakbacBanHakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadrapXahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaoFapeaoFanQanSaoKaoOaoFbHMapyarXapKarXapvapRanJaWoapZaKBagVaKBaKBaKBaaaadradradrafQagXagZagYahjahGahDahEapWahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHapMahJahIahHaguahzahyaiAaizaiyaixaiwaisaijaiiahxahwagQadsadsanIadrafGanyagIagKagJagMagLanyagNagEagFaCWagGagHaHeaHeaHeaHeagzaCWagBahragCagDavAavAaaaaadaaaagUanDaqRanDagUaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaoFamWaqkaqkaqkamSamVaoFaoYaiBbrTaWoanKamHanEanFaWoaKBaKBarnaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaoyabQaenaidanGaexanHafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaoFamWaqkaqkaqkamSamVaoFaoYaiBbrTaWoanKamHanEanFaWoaKBaKBarnaKBafNaKBafZadraklaicafQafYafXafWagdageagfaggaexagaagbagcabvagjagkaglaoyabQaenaidanGaexakiafzahiaguahkaffahuahtahvafjahoahnahnagtadradradradradrafHadrafGakWafDafCafCafCafFakWafEabXabZaCWafLaIyaIyaIyaIyaIyafIaCWadlbnBaQsaQsaSRcgaaadaadaadaoBaoCamYaoDaoEaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaoFaiDaiFaiIajqalKammaoFbrTaiBbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBahLafxagOaviahMafyafyafAafvaeraiRalvabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftafsafjagpagoagmafeaeYaeYaeYaeZaeVaioaeXaeWakWamiamiamiamiamiaoAadZabXajKaCWaeQaJOaJOaJObmQaJOakSaCWaQsbnBaQsaiabWIavAaaaaadaaaaptapuaoIandaptaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFahdahfaoFaoFaoFaoFbrTahbarXaeJajnagqaiWbrTajAaKBbHMagSagvafVaKBadYahsagPagAafQaeLaeKaeKahVaeraiRaesacIaeDaeEaeFahlafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjafTacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWafBbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKBaKBafUaKBaadaaaaadaadaadaadaadaKBafUaKBaoFahdahfaoFaoFaoFaoFbrTahbarXaeJajnagqaiWbrTajAaKBbHMagSagvafVaKBadYahsagPagAafQaeLaeKaeKafTaeraiRaesacIaeDaeEaeFahlafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGafcafjahVacTacTaaQaaQaaQaaQaxUakKamJaeNadXakWamiamiamiamiamiapsadZabXaecaeaaebaIyaIybsGaIyaIyaeeaCWafBbkeaUoaUoaUoavAacnacoacnaptanoaqbafmaptaaaaadaaaaaaaaaaadaaaaaaaadaadacoacoacoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtaiSaKBanLamsamsamsamsamsajsaKBaaIajtaKBaeTaDnaefbMeaspaKBbwqaedbMbaKBardafdafuaeSaeOaKBaeubrTaqhbrTaKBaetahsaczaczaczacKacKacKacKadWaiRadVadTadUaeAaeBadQaeIadOaeyaevaewaenaaXaghaexaezadRadPadNadMadLadJadKadJadIadHafaadEadEaepadBaaQaxUakKakWakWakWakWamiamiamiamiamiaqWadnaddadeadfadgadhadiadjadiadiadkaCWaQsacjadladGavAavAavAcgaavAaptaqZakVarbaptacnacoacoacoacoacoacoacoacoacnacoacnacoaaaaadaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaadaadafUaeCaeUafrafRbrTbrTbrTbrTbrTahcagnaeqbKoacqacrbrTbrTbrTbrTbrTaqhbQSadradradradradradradradradradracAadradradrackaczacyacxacwacuacsacKacLaiRacPacIacJacQacSacFadoacGacHabPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNadpabNabRaaQabOabUabTabSadFabVamiamiamiamiamiabVabWabXabZbswbuPaIyaIyacaaIyaIyacfaCWacbacjaQsaQsavAaeParObWIaciarNarNacmaclarNacnacoacnacnacnacnacnacoacnacnarNacMarNaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaadaadaaeaadaaaaadaadaadaKBaKBasVaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBaGraGCaGCaGCaGCaGCaGVbQSadraInatDatEatFawpatGatIasaasaatKasaasaascaApaAkatSatWatVauaatYacKatoatmatnabvabQatpabQatraAgazpabvabvabvaEJaAoaexaexaaQazuaFTaFSazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaxUakKakWatlaucappamiamiamiamiamiaoAaubaulaumaCWauoauiauiaujaukaQfauhaCWbbNaudaufaHLavAaQsaQsaQsaQsaUoaQsahraQsarNarNarNarNarNcgaarNarNarNarNarNarNcsgarNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadaadaadaaaaKBasLaUDbHMarlbrTbHMaEsaDuaDFaEvagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslaGsasCazsasbarZashasgasjasiaslaskaskasgaskasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaCVaaeaadaadaKBaKBaKBatHaBPaKBaadaaaaaaaaaaaaaaaaaaaadaadaadaaaaKBasLaUDbHMarlbrTbHMaEsaDuaDFaEvagrasNamJadradrataatbatbatbatbatbatcadraczasGasKasJasIasHasqasraiRassasgaskaszasAasCazsaslasEaslaAyasCazsasbarZashasgasjasiaslaskaskasgaskasmafQasoainainainainaeMaxUakKakWatlatkapYamiamiamiamiamiaqWatjabXatiaCWathatgatgateatfatdaCWaCWavAasZavAavAavAasUbvHbvHbvHasTasSasOaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaQsaeRacMasRacMaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBbHMbrTavabHMaGPaAfaGJazTaFubJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFaCUarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGaFmapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaFcapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGayMapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaxnapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWaBTavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMazxaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkayaanZayIaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyaxVawVazNazOazPazQahZadrakYadraaaazSazwazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwaxZaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywbyFafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywblxafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCybDdadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObAnbANbAPbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbAjallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbBMaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubymbsebaVbaybtqbbUboubaTbaUbaRbitbisbiqbtjbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubymbsebaVbaybkJbbUboubaTbaUbaRbitbisbiqbkxbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbvBasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbwJbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaBSbyWaBUbwoaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbwmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbypbyobjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkbytaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbwOaEDacjarNaKhblOaHDaGaasPbyraAJbysaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQabzKaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtbzNbzMbzObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbSsbAmbzPbhxaAJbysaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbAibAbbzVbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbzTbBHbBHbBHbBHbZMbBHbBHbBHbBHbzSbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebViaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbAVbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaQVaQVaQVaQVaQVaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbEzaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbEPbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbFFaJnaKvaKvaKwaKvaIeaJuaIebuKaQVbmObmfaWcaSyaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbyyaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbyxaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbGdbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbyCbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbKZaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbqqbqlbqjbqdaVcaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsbziaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbwKaVDaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbzHbxpbxpbOdbxpbzIaNLbxubuVbzkaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbxSaxxayMbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaWjaOmaOlaQVaQVaQVaQVaWzaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaUNaNLaNUaNSaNRaHoaUIaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHgaNtaNuaHgaJyaJNaHgaMnaNxaNvaNyaMKaHgaUHaYpaNzaNCaNCaNEaNDaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUEaNiaTjaSYaNjaSXaSYaSYaLdaYGaUFaJzaMAaMHaMFaMyaMwaTBaHUaMvaTraHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaUtbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaSEaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaPAawqatXawlawkawjatXawiaSCaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHgaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaFhaIRaXIaHgaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaUVaFUaFUaFUatXaTKawfavmatXatXatXauZavdaTJaGvaFUaFUaFUaUYaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPSbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaMZaPyaPzaMXaPxaOzaPWaPVaFiaZqaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCaURbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaFqaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaIrbckbcqbcraTpaZjaSeaROaRJaRFaRKbcxaRAbczbcAbaeaTlaISaIbaIbaIaaHuaHqaHgaHgaHgaHgaSHaHsaHraGNaGOaGHaGQaGRaFhaIRaIQaIOaIHaYpbRAaZNaSDaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdraSvaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaGIaFQaFPaFXaFWaGdaDmaFKaFEaGyaEhaGzaGAaGBaGEaGZaGXaHbaHaaHfaHdaHjaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaQlbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaweaJMaGiaEkaJLatXaGvaFUaFUaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaLWaPQaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLVaFpaFNaLTaFiaZqaIHaYpbRAaZNaLSaPYaSwaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaQkaKgaKfaKebcCaKiaKkaHgaIJaILaIKaNPaTwaTvaQvaHgaGFaHtaNNaPgaTuaHgaSnaKIaKHaREaKmaHgaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaTsaIUaFOaGjaOGbiwbiwbiyaTtaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbrKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbmtbkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeobqyboQboRbqzbqRblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIbrJcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbsfbdKbvubdKbspaSWbsxbjxbfubmCbtPbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBblebdLbeibpHbtIbfBblqbmYbeobskbsYbvibndblGbeJburboPboybvkbnjbnkbvtaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbwbbwWbwnbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebKZaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbAVbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaPyaPyaPyaPyaPyaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbmfaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbEPbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbqlaJnaKvaKvaKwaKvaIeaJuaIebuKaPybqjbqdbmtbmOaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbqqaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbyxaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbsfbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujbwKbtqbtjbxSbyyaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbyCbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbyFaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbEzbGdbFFbBjbBzaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsbziaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbzmaVkaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbzHbxpbxpbOdbxpbzIaNLbxubuVbzkaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbJaaxxbJCbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaPzaOmaOlaPyaPyaPyaPyaPxaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaUNaNLaNUaNSaNRaHoaUIaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHfaNDaNEaHfaNNaNPaHfaOvaOxaOwaOLaOzaSWaUHaYpaNzaNCaNCaPgaOMaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUEaNiaTjaSYaNjaSXaSYaSYaLdaYGaUFaJzaMAaMHaMFaMyaMwaTBaHUaMvaTraHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaUtbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaSEaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaNyawqatXawlawkawjatXawiaSCaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHfaHfaHfaTwaTwaTwaHfaHfaNxaHfaTHaTFaTGaTDaTEaTvaTuaGRaGQaHdaTtaSWaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaUVaFUaFUaFUatXaTsawfavmatXatXatXauZavdaSHaGvaFUaFUaFUaUYaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPVaPWaPQaPJaPQaPQaPSaPQaQCaHfaQVaQlaQqaQvaQyaREaReaSyaSnaRcaKTbbcaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCaURbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaPAaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaGObckbcqbcraTpaZjaSeaROaRJaRFaRKbcxaRAbczbcAbaeaTlaHuaHtaHtaIaaIbaHIaHfaHfaHfaHfaHgaHraHsaHjaHqaGZaGXaGRaGQaHdaHbaHaaIHaYpbRAaZNaSDaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdraSvaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaFWaFXaGdaGiaGsaGyaGzaFmaFpaFqaFEaFKaFNaFPaFQaGBaGAaGFaGEaGIaGHaGNaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaFhbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaFiaJMaweaEkaJLatXaGvaFUaFUaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaNvaNxaHfaNuaNfaNtaMXaMZaMKaMNaHfaMxaLWaMnaHjaLVaHfaLTaLqaKVaKUaKTbbcaIHaYpbRAaZNaLSaPYaSwaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaQkaKgaKfaKebcCaKiaKkaHfaKyaJwaJyaJNaKmaIRaISaHfaJgaIKaILaIOaIQaHfaKHaKNaKIaKFaKDaSWaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIraIUaFOaGjaOGbiwbiwbiyaIJaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHfbiobiIbjebixaHfaHfaHfaHfaHfaHfaHfbjEaHfaHfbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbrKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbiabkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeobqyboQboRbqzbqRblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIbrJcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbktbdKbvubdKbspaSWbsxbjxbfubmCbtPbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBblebdLbeibpHbtIbfBblqbmYbeobskbsYbvibndblGbeJburboPboybvkbnjbnkbvtaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbwbbwWbwnbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpaadaaaaadaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbpxbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbohbkVbdvbosbosbnDboAboBbkQblebbubbVbbfboNbbfbbvbbfbtIbtIboJbsqboLboLboLbszbppbndbdEbsyboLboLboLbrZbrPaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbtNbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqaJqbtObjrbsaaTmaTmbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbtBaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaYSaZvbPOaMQaMQbePaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaZuaZxboLaZnaXRaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaZzavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaZKaZOaZQclMaTVaTWaUuaUKaUAaXdaXkbcwaLIaLIaSQaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMbfXaUcaUeaUeaUeaUebiebhybiobcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuablPbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlbiIaYebncbgXbnfbjebdHbkuaVRbkabtubjCbjBbjEbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUbnKboKbniclMbixbdRbiaaZVbkJckwbeqclMaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaVOaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAbfbaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWclMbfJbfKbfNaZkaZtaZSaZyclMaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYcsQaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpcaVbgzcsPcsMcsNcsOcsOcsOcsWcsTblsbwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtcsScsRbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcjPcsXbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUclMcumctZcunbkJcwscvRcAIclMaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpbWqcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcrHcrCcrucrAcrucrqcrucrAcrucsacrWcrTcrScrVcrUcrMcrIcrIcrNcrJcrIcrLcrKcsGcsHcrTcsKcstcszcsFcrMcsocsqcrMcsrcsccsmbyDbnschWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcioavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaadIDbUtbMUbMUdICcLudICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQcrkaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYboAcqVcqZcrecpNcrfcrgcricrjcqNcqMcqLcqKcqdcqRcqncqOcqncqmcqmcqkcqJcqmcqpcqocpQcpScpNcpOcqdcqjcpVcqccpxcpBcprcpscpHcpMcpEcfpchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaaaJUdIvdIxdIwbHidIybHidIzdIxdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVcpnckVaXcbqgbWCbnUbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqcpmblscoNcoMcoPcoOcpacoMcphblscpmbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKcmYbBybBzcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHcppajeajeaJUcDBcdOcdVcLMcLucLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmctXaUxdKkdKjctWaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadcufcutcoMcoMcuscoMcoMcuqcugaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcuubHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDsaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadctIctNctKctJctQctKctJctMctLaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlctVcmBbnAbjScmVbjSbjSavAbxhcltdJidJhcltbgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNdLOaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnctrdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhcltdJadIZdJbcltdIYctCaQsaSRbgXbxqcfKcfJcfNdLRbxvbxwbxxbxychHbbmcficcCbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtctBaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIctwcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMdLJdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpctmbqacjUbxXckacjZbrVccDckdckcctncdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPccqbBqctcctactdbGzbGAbGBdLDclGcticthctlbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhcltdIRdIQdIPcltaQsaQsaQsckFbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUdIOcdOcdOcisdINciwdIMaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzbWmbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfciQcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtcltclJclHclLcltapCdJCckCciIbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZciJbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUycfwbuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcinchPcxwcfLcgNcgJcfEcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHacftbKbbIEbEjbfTbTkcQmbTlavAbxhcltcltcltcltcltcluaQsaQscelbgXbArbZqbZpbUebBXbAvbBYbnTbxwbAwbbmcaObMhbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtclybZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnccJbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPcekbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcegcdDbLdcdjccMccLcdvcdscuhcdqceibCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAcxnckFaQsaQsaOhaThckEaQsbgXbgXcJTaSkbAubiJccgbDhblXbDibOybbmchBccCbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtccabKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqbwFbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJcbAblXbEDbEEbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBcoLbYwbYwbYwbYwbYwbYwbYwbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgcorbYeccrccnccicciccicclcdoccrdBiccidAScosccrccrcoycowcowcowcoxcowcovccccccccKcoEbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQcoqbnIbFSbFTbFUbOzchXconbHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaWjaWzaXdaMQaMQbePaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaZuaZxboLaZnaXRaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaZzavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaZKaZOaZQaTJaTKaTVaTWaUuaUAaUKaVcaWcaLIaLIaSQaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaZyaUcaUeaUeaUeaUebiebhyaZSbcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuablPbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlaZVaYebncbgXbnfbabbdHbkuaVRbkabtubjCbjBbcwbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUbnKboKbniaTJbfbbfJbdRbeqbfNbfXbfKaTJaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaXIaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAaXkaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWaTJaYSaZgaZkaZqaZraZtaZvaTJaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYcsQaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpcaVbgzcsPcsMcsNcsOcsOcsOcsWcsTblsbwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtcsScsRbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcnVcsXbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUaTJcoIconcpubfNcrjcpRcrqaTJaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpbWqcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcnPcbhcrHcrCcrucrAcrucrucrucrAcrucsacrWcrTcrScrVcrUcrMcrIcrIcrNcrJcrIcrLcrKcsGcsHcrTcsKcstcszcsFcrMcsocsqcrMcsrcsccsmbyDcnTchWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcnUavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaadIDbUtbMUbMUdICclMdICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQcrkaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYcmMcqVcqZcrecpNcrfcrgcricmjcqNcqMcqLcqKcqdcqRcqncqOcqncqmcqmcqkcqJcqmcqpcqocpQcpScpNcpOcqdcqjcpVcqccpxcpBcprcpscpHcpMcpEclWchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaaaJUdIvcnIdIwbHidIybHidIzcnOdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVcpnckVaXcaWCbWCbnUbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqcpmblscoNcoMcoPcoOcpacoMcphblscpmbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKcmYbByclLcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHcppajeajeaJUcDBcdOcdVcLMclMcLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmctXaUxdKkdKjctWaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadcufcutcoMcoMcuscoMcoMcuqcugaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcltbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDsaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadctIctNctKctJctQctKctJctMctLaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlctVcmBbnAbjScmVbjSbjSavAbxhciocvZcvYciobgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNcuPaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnctrdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhciocvRcuUcvXciodIYctCaQsaSRbgXbxqcfKcfJcfNcuQbxvbxwbxxbxychHbbmcficcCbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtctBaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIctwcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMcumdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpctmbqacjUbxXckacjZbrVccDckdckcctncdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPctZbBqctcctactdbGzbGAbGBdLDclGcticthctlbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhciocuOcuNcuMcioaQsaQsaQsckFbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUcuucdOcdOcisdINciwcunaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzclybuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfciQcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtciocjPciSckwcioapCdJCckCciIbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZcltbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUycfwbuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcinchPcxwcfLcgNcgJcfEcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHacftbKbbIEbEjbfTcfFcQmbTlavAbxhciociociociociocluaQsaQscelbgXbArbZqbZpbUebBXbAvbBYbnTbxwbAwbbmcaObMhbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtciJbZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnccJbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPcekbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcegcdDbLdcdjccMccLcdvcdscuhcdqceibCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAcxnckFaQsaQsaOhaThckEaQsbgXbgXcfpaSkbAubiJccgbDhblXbDibOybbmchBccCbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtccabKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqcdMbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJcdLblXbEDbEEbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBcoLbYwbYwbYwbYwbYwbYwbYwbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgcorbYeccrccnccicciccicclcdoccrdBiccidAScosccrccrcoycowcowcowcoxcowcovccccccccKcoEbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQcoqbnIbFSbFTbFUbOzchXcltbHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaacnwcixdzQcoBcnwbrTcaYbrTdAcaKBcolbYwcnXcnAcnscnrcngbYwbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZcojbPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjcnYcfzcfycawbPmbPobPnbPnbPnbPpbPrbPnbPnbPsbPvbEjdvYdAacatcarcaoaUobWIbOnbQMaUobOocasbZiavAbvSavAbgXcmLcaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbMhbUiaadbNCbHsbHtbHubgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfdvMbBHbBHbBHbBHbBHbBHbBHcmAbBHbBHbBHbBHbBHbBHbBHdvJcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwcfFcptcifcnwbrTdJybrTaKBaKBdACbYwcjBclDctGclUbQLbYwavabrTbZAbKtbKtbKtbKtbKtbZDbZEbZEbZEbZEbOMbOSdokcQabTPclWbQdbQcbQebZXbQdbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZchacdUchachachachiclAbRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMckPcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXbnTblXbbmccjccCcksbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacnwclJcptcifcnwbrTdJybrTaKBaKBdACbYwcjBclDctGclUbQLbYwavabrTbZAbKtbKtbKtbKtbKtbZDbZEbZEbZEbZEbOMbOSdokcQabTPclHbQdbQcbQebZXbQdbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQbQmbQnbQobQpbQqaVCbZnchccgZcgZchacdUchachachachiclAbRXckbchhbSaceVceUbOhbOgbQDbQDbQEbQDbQFbQDbQDbQGbNHbMNbMNbMNbMNatJbasaUoaUoaUoaUoaUobZeasMasMckPcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXbnTblXbbmccjccCcksbQYbRbbIPbFXbUSbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabDrbDrbDrbDrbDrbDrbDrbDrcpvbDrbDrbDrbDrbDrbDrbDrbDraaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaadaaEaAXaadcnwcqedzMceBcnwbVBbrTbrTaKBcjKcvobYwcjwcpqcjucjncuSbYwbYwbYwbYwbYwbYwdJpbYwbYwcjIbYcbYdbHMbMebrTbMbaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLaZLaZLdJMbRwbRwcezceDbRwcNWbRwcjmcbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDcjlaZLbSXbNpbNpciTaZLcaebMNcevcfTcevbMNbNAbNybQDbQDbVubQDbQFbQDbQDbVrbRObMNbOjbOkbQjbXmbXlasMasMasMasMasMbXfbWTbMicjjbMibMibiNbRhbWLbWMblXbWHbevbevbevbevbevbWGblXbbmcbGcjibgXaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqbSkbYwbSlbSmbRKbYwbRRbQLbREbYwczGbYwbYwbYwbYwbYwbYwbYwbRzbRpbRxbRlbRnbRmcxLbQZbRkbRicxLbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjavAbSBbSCbSCbgXcyWbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaaaaadaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbUKbUJbUHbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobULbNaavAavAavAavAavAbUMbVGbVObgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaadbKmbKjbKjbKeaadaadaadaadaadbYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbJDbIZbKabJEbKpbXxbZabYYbGybGvcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFyccAcmMbWAbzmbSgbWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAbLAbLIbLJbLWbLZbVQbNRbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaadaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaadaadaadaaaaaaaaaaaaaaaaadaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzdDYdEcbYwbNnbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAbNJbOqbOBbObbOcbTvdQebgXbNNbNNbOCbNNbOQbNNbOCbONbOHbQubMhbNNbQNbPibPabgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYRaaaaaaaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwbMmbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbXcbYIbXdbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAbZObYXbZjbZkbZrbZybZzbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadaadbYwcaTbPlcaCbYwbYwbYwcanbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBcafcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgbGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfcbgcaZcbacbncbucbkcblaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqcaWaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadaaabYwbVYbYwbGbbFZbFZbFZbFZbFZbVRbZxbZxbZxbZxbZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadbWlcadbSgbSgczlbYwbWBbJfbDNbWQbNzbFdbEbbFIbFIbFIbNtbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAbVdbWsbTsbBWbWybCybTsbTsbWbbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqbSkbYwbSlbSmbRKbYwbRRbQLbREbYwczGbYwbYwbYwbYwbYwbYwbYwbRzbRpbRxbRlbRnbRmcxLbQZbRkbRicxLbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbPObPObPObPObPOcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjavAbSBbSCbSCbgXbXNbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaaaaadaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbUKbUJbUHbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbPObZKbYZbZLbPObWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobULbNaavAavAavAavAavAbUMbVGbVObgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaadbKmbKjbKjbKeaadaadaadaadaadbYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbJDbIZbKabJEbKpbXxbZabYYbGybGvcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFybTkbSgbRJbQubPObWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAbLAbLIbLJbLWbLZbVQbNRbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaadaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaadaadaadaaaaaaaaaaaaaaaaadaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzdDYdEcbYwbNnbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAbNJbOqbOBbObbOcbTvdQebgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYRaaaaaaaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwbMmbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbXcbYIbXdbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbPOccyccqcbAbPObOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAbZObYXbZjbZkbZrbZybZzbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadaadbYwcaTbPlcaCbYwbYwbYwcanbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBcafcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbPOccAcczccBbPObGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfcbgcaZcbacbncbucbkcblaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqcaWaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadaaabYwbVYbYwbGbbFZbFZbFZbFZbFZbVRbZxbZxbZxbZxbZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbJfbDNbWQbNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAbVdbWsbTsbBWbWybCybTsbTsbWbbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAarNbWZbXbbWYbTsdQfbWXbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaadaadaaabYwcfdceZcfncfrcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbBnbYwbBobVHbVIbBKbVKbVTbWearNbBWbCsbCybTsbLCaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQsbQLcpqbENbYvbCHbCRbDHbDPbLCaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaadaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwbYvbTsbFYbTsbTsbBiaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaadaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraadbTsbBjbTsbCzbBlaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaadaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwbYvbTsbMpbTsbTsbBiaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaadaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraadbTsbNtbTsbCzbBlaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaadaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadbTsbBmbTsbYtdOUaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbJCbJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraadbFRbFYbFRbZZaadaadaaEaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaadaadaaacacciScalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKbQLbQLbQLbHhbYwaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaadaadcaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpcaSbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaadaaaaaaaaaaadaadaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraadbFRbFYbFRbZZaadaadaaEaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaadaadaaacacbOHcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKbQLbQLbQLbHhbYwaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaadaadcaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpbOQbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaadaaaaaaaaaaadaadaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaadaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaadaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLdNecuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaadaadaadaadaadaadaadaaebYwdNlbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizdNkbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPdNgdNfcwzdNidNhcwFcvHdNjckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvdJwdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLdNzbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRdNAcmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcjkbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLczXcBOcKNcKJdrxdNsdNqdNrdNodNpdNtdNudNvdNwdNxdNydoBcdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLczXcBOcKNcKJdrxdNsdNqdNrdNodNpdLRdNudNvdNwdNxdNydoBcdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbdOfcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdOcdOddOedOedOedOedOedOodOmdOndOkdOldoBdovcqQdBwdovdovdovdOjdOhdOidOgaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdNDdNCdNBdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjcdNEdNfdNFdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNLdNMdNJdNKdNXdNYdNZdOadNUdNVdoBdNWdNQdNRdNSdNTdNNdNOdNOdNPdObaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdNDdNCdNBdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjcdNEdNfdNFdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNLdNMdNJdNKdNXdNYdNZdOadNUdNVdoBdNWdNQdNRdNSdNTdNtdNOdNOdNPdObaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqldrxdujdujduzduTdvudsgdshdsedsfdssdstdspdsrdtidtkdsCdsEdtJdufdtudtCduiaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcwucwucwucyJcwucwucwuaaaaadaaaaaaaaaaadaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDdrYdoBdoBdoBdoBdoBdowdoBdoPdoVdpcdptdoBdpvdpwdpxdovdpydqGdrbdovdrxdovaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwudCudCvdCudCrdCucwucwucyJcwucyJcwucwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPdBIclIclKclIduAduNcDRckOdBFbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswdoBdvPdzPdCpdCqdBddBadBddAEdAKdABdoBdoBdovcqQdBwdovdBpdBjdBkdBgcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadcwudzYdzXdAhdzZdzYdAidAAdApdzSdzRdzUcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQdrxdvPdzPdwfdwfdwsdvBdvEdvHdvIdvAdoBcvmbQLdACcvpdovdovdovdovdovcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwuczcdJLdJIdJBczcczcdJzdJsczgdJZdJScwuaaaaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdKbctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacuddoBdvPdzPdwfdKfdBddIIdBddIBdIHdJqdoBcuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcwudExdDSdEAdEydDFdDBdDQdDMdEIcBedIndAfdAedzVcAhdAfdwbdwFdxxcwudCJdCNctvdvVcrXdzOdDycxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxbYZbYZbYZbYZbYZbYZcAgbYZdCzdAMdCCdoBbZhbZhcvobQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddCFcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacyJdMddMcdDHdMadMmdMldMhdMedMsdMrdMpdModDCdMudKWdMtdKXdDHdDDdMvdDKdDLdMwdDJdDOdMxcrXcxLdMRdMSdMybYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcAScwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwudKFdKEdKYdKVdLjdLidLldLkdLrdLndLscwudDpdDodDqcwudKqdKscyMcwudBqdBUctvdCsdCxdCydKwcxLdKydKCdKDbYwdAWbZxbZxbZxbZxdKlcARclpcsldKpdKncwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdKicmjcuUcuOcuNcuQcuPcuMbRJdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucACcAGczccAFcACcADcAycAzcAlcAwcAfcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcAecAccAbbYwcwocuxcuxcuxcuxcuxcuxcuxcuxcnpczJczZczDczFdMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcmjcnIcnTcnUcnOcnPcnVbRJcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaadaadaadbYwcmzcdYbQLcxgcBJcBIclpcBLcBHdKtdKucxLcBCcBocBFcBDcwMcuxcBacBbcAZcuxcAXcAYcANcuxcALcAMcAHczFcokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBbRJbRJbRJbRJbRJbRJbRJbRJcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwucCacCbczccBRcCecBicCccCdcBNcBPcBMcwuaaaaadaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcwudEUdDSdEAdEydDFdDBdDQdDMdEIcBedIndAfdAedzVcAhdAfdwbdwFdxxcwudCJdCNctvdvVcrXdzOdDycxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxdExdExdExdExdExdExdBUdExdCzdAMdCCdoBbZhbZhcvobQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddCFcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacyJdMddMcdDHdMadMmdMldMhdMedMsdMrdMpdModDCdMudKWdMtdKXdDHdDDdMvdDKdDLdMwdDJdDOdMxcrXcxLdMRdMSdMybYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcASdJhdJidKsdLsdLJdLOdJbcBPbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwudKFdKEdKYdKVdLjdLidLldLkdLrdLndJacwudDpdDodDqcwudKqdIRcyMcwudBqdIZctvdCsdCxdCydKwcxLdKydKCdKDbYwdAWbZxbZxbZxbZxdKlcARclpcsldKpdKncwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdKicAIdIxdIPdIQdIMdIOdGmcBPdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucACcAGczccAFcACcADcAycAzcAlcAwcAfcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcAecAccAbbYwcwocuxcuxcuxcuxcuxcuxcuxcuxcnpczJczZczDczFdMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcAIcAtcyWcxNcAgczkcDgcBPcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaadaadaadbYwcmzcdYbQLcxgcBJcBIclpcBLcBHdKtdKucxLcBCcBocBFcBDcwMcuxcBacBbcAZcuxcAXcAYcANcuxcALcAMcAHczFcokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBcBPcBPcBPcBPcBPcBPcBPcBPcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwucCacCbczccBRcCecBicCccCdcBNcJTcBMcwuaaaaadaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJcCKcyJaaaaaacxdbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbcAmcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcDlcDIcAQcDGclpclpclpcBkcBjclpcBlcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaadaadcxdcGkcGjbGhcMocGbcGacDTcMccLEbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcoIcyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaadaadbYtcWRcNJcNKcOtcOGcPtcPFcPRcwuaaaaaacxddKvcMQbGhcMYcMDcMhcMLbGhbGhbpYcRucRMcRvcQLcQwcRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaaadwIaadaadcwucwucwucwucwucwucwuaaaaaacxdcoKbMpbGhcOMcOZcONbJZbGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaadaadcxdcGkcGjbGhcMocGbcGacDTcMccLEbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcLucyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaadaadbYtcWRcNJcNKcOtcOGcPtcPFcPRcwuaaaaaacxddKvcMQbGhcMYcMDcMhcMLbGhbGhbpYcRucPrcRvcQLcQwcRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaaadwIaadaadcwucwucwucwucwucwucwuaaaaaacxdcoKcRMbGhcOMcOZcONbJZbGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaaaaaaadaadaadaaaaaaaaaaadaaaaaaaaacxdcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxcLAcuvcvlaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaacxdcoKcoJbGhcoHcoGcoFcoDcoAcozbGhbKEbwzcvkbxTcvibwAduMdKocvfcvgcvhcuVcuWcuXcuZcuycuzcuCcuTcuvcuxaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaadaaEaakaaEaadaaEaaEaaEaadcxdbpYbGhbGhbGhbGhbGhcoQcoRbGhbGhbGhcvwbxUcvybxTcvubxVcvvbpYbpYcvgcvhcvhcvhcuvcvtcvgcvhcvncvrcuvcvlaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacvAcoTbKBbpYcvPcoXcvNcpicpgcpdbpYcvMcvIcvFcvCbxTcvibwAduMcwkbpYcwlcwncwwcvScwxcwDcvQcvScvUcvhcwjcuxaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcpRcyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacvAcoTbKBbpYcvPcoXcvNcpicpgcpdbpYcvMcvIcvFcvCbxTcvibwAduMcwkbpYcwlcwncwwcvScwxcwDcvQcvScvUcvhcwjcuxaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcwacyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaacwTcqYbKBcqrcqscqscqscqxcqPcqBcqbcqhcwJcqhcpUcqscwKcpUcwLcxldKocxecwWcwVcwWcwWcwWcwWcwWcwVcwWcxbcvlaaaaadaaacwZcwZcwZcwZcwZcwZcznclzcwUcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaadaadaaaaaaaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacwTcqYcrRcpgccscyDccscrPbDtcrOcsDcspcyNduHduHcyLduHduHcyKcxNbpYcyacxGcxDcxGcxGcxHcxGcxGcyAcyBcypcuxaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaczpctxbKBcpgccsccsccsbJabpYbpYbpYbpYczkczjbxTczhbxTczjczibpYbpYczbczacyZczacyQcyXczfczaczaczeczdcuxaaaaadaaacxpcAocApcApcAqcApcArcAscAtcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacwTcqYcrRcpgccscyDccscrPbDtcrOcsDcspcyNduHduHcyLduHduHcyKcwcbpYcyacxGcxDcxGcxGcxHcxGcxGcyAcyBcypcuxaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaczpctxbKBcpgccsccsccscwgbpYbpYbpYbpYcwsczjbxTczhbxTczjczibpYbpYczbczacyZczacyQcyXczfczaczaczeczdcuxaaaaadaaacxpcAocApcApcAqcApcArcAscwdcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdbpYbpYctzbxTbxTczrbxTctTdJmbpYczxczvcztcztcvacztcztczzbpYaaaczAcxGczAcxGczAaaaczAcxGcxGczAaaaaaaaaaaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdcuYbIYbIYcvdcvacvscvebpYbpYbpYbQJbPUbPUbPUbQIbpYbpYaadczBczaczCczaczBaadczBczaczaczBaadaadaadaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcxdbpYbQJbPUbPUbQIbpYbOLbpYaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcCvcCvcCNcCOcCPcCQcCRcCScCTcCocCocCUcwZaadaaaaaaaaaaadaadaAXaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfcDgcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfdQhcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocDmcCqcCrcDfcAucDncDocCvcCvcCvcwZaadaadaaaaaaaaaaadaAXaadcDAcDAcDAcDAcDAaaacDiaadcDAcDAcDAcDAcDAaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcDxcCvcpPcrccCrcDfcAucpLcoZcCvcCvcCvcwZaadaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaacDUaaaaadaaaaadaadaadaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcDCcDDcCPcDEcApcCScDFcCocCocCUcwZaadaaaaaaaaaaaaaadaAXaaacDhcDhcDhcDhcDhaadcDXaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10506,13 +10510,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCncCocCocDJcCqdwHcDKcDfcAucAudwGcTPcTOcCvcCvcwZaaaaaaaaaaaaaaaaadaadcDAcDAcDAcDAcDAaaacAWaaacDAcDAcDAcDAcDAaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvccpcibcAucAudBHcAucAucjfclVcTNcCvcCvcwZaaaaaaaaaaaaaaaaaEaaaaaaaadaadaadaaaaaacAWaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvcDQdEWcTEcTHcTycTxcTrdEVcTDcTzcCocCUcwZaadaadaaaaadaadaAXaaEaAXaAXaAXaaaaaaaaacAWaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcwZcwZcwZdETcSYcTccTfcTecThdEUcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaAXaadcEcaadaAXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcwZcwZcwZdETcSYcTccTfcTecThdOLcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaAXaadcEcaadaAXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcSDcSIdKKcSqdEScSkcbpcSbcRCcRBdKLcOHcRrcwZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcwZcPPcwZcRacRhcRjcaRcRmcRqcRacwZcOHcwZcwZaadaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadaadcwZcPPcwZcwZcQKcQtcCvcQUcQKcwZcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcCvcCvcQtcCvcCvcCvdEQcwZcOHcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaacaaaaaacwZcPPcwZcQxcCvcQucCvcQJcCvdERcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadcwZcPPcwZcCwcCvcCvcPrcCvcPsdEPcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadcwZcPPcwZcCwcCvcCvdNNcCvcPsdEPcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcwZcwZcwZcwZcwZcwZcwZcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11398,7 +11402,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddmqdmrdlVdmsdmtdIgdlIdmudmgdnhdlRdmidlFdlFdlFdlFdlFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddmydmydmzdmydmydmydlddlddlddlddlddlddlddlddlddlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddmAdmBdmCdlVdmtdmDdmedmEdmfdmFdlFdmudoxdlFdmUdlHdmfdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddmydmLdmMdmNdmOdmydlddlddlddlddlddlddlddlddlddlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaddlfdlfdlFdlYdmPdmQdmRdmCdmSdmTdmgdmUdopdmgdnSdlFdmUdlLdlHdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlBdlBdlBdlBdlBdlBdlddlddlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaddmydmWdOSdOTdmZdmydlddlddlBdlBdlBdlBdlddlddlddlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdlFdlFdlFdlFdlFdlXdmfdnadmPdmfdmudnbdmUdmUdnodlHdlLdlFdmUdmedlLdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaddmydmydmydmydmydmydOLdmydmydmydmydmydmydmydmydmydDtdlBdlddlddlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdlFdlFdlFdlFdlFdlXdmfdnadmPdmfdmudnbdmUdmUdnodlHdlLdlFdmUdmedlLdlEdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdDtdDtdDtdDtdlBdlBdlBdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaddmydmydmydmydmydmydQkdmydmydmydmydmydmydmydmydmydDtdlBdlddlddlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlFdFtdIfdIedIddlFdmAdnIdmBdlFdnhdlFdnQdnRdnPdlFdmfdmidmFdlHdmFdmpdmfdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaadaadaaddmydnqdnBdnsdntdOOdONdOMdnrdnrdnrdnxdnydnzdnAdmydDtdDtdlddlddlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlFdFtdIbdIadIbdIcdmidlLdnidlLdmidmfdmedlSdlHdmfdmedlIdlFdmFdngdmFdmFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlddldaaaaaaaaaaaaaaaaaaaaddmydnFdnrdnGdnHdnrdOIdnKdmydmydnLdnMdnNdnNdnOdmydDtdDtdlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlfdlddlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlFdFtdIbdFudFudIcdmgdlLdnmdmedmodmidlLdlHdnidmFdlHdlLdlFdlLdmfdmidmFdlFdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdnTdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdFldlBdlBdlBdlBdlBaaaaaaaaaaaaaaaaaaaaddmydnVdnWdnXdnYdnXdnZdnrdOKdOJdobdnldnkdnjdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11410,7 +11414,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdHRdHRdHRdHSdEJdDsdDsdDsdDudDudDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYaaaaaaaaaaaaaaadoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdogdogdogdFrdogdogdogdogdogdogdlFdmUdlwdlwdlwdlEdlFdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoZdpadpadpadpadpadpadpadoHdoIdDtdDtdDtdDtdDtdmydOydHTdoDdOxdOAdOzdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdHAdHBdHCdHDdDwdHydGBdGBdGBdEJdnTdnTdnTdnTdGndDudDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlrdHzdlsdlFdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdOtdOvdOudOsdOrdkYdkXdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaadEJdHIdHJdHGdHHdDwdHOdGBdHNdHLdHMdHKdGvdGvdnTdGndHFdDudDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdHEdHEdlwdlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkIdkNdkNdkNdkMdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdHrdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdQjdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdLpdGBdHydHvdGAdGBdGCdDwdLodGEdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdkHdkHdkHdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHgdHhdHddHedGXdHfdGBdGAdHcdGBdHbdGhdGhdGvdGvdGvdGvdGndDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlldljdlkdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdnTdlBdDtdDtdFldFldlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdkHdkHdkHdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodKMdEsdHndGXdHmdGBdHldDwdHkdDwdHjdGhdGhdHidGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdkHdkHdlcdlhdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11420,7 +11424,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdEJdEJdGJdGBdGBdGAdGLdGKdDwdG aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdEJdGCdGBdGAdGIdGHdGGdGFdDwdLodGDdGndGndGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFcdFcdFcdFcdGzdGydFUdFUdFUdGwdFedFedGxdGndGvdGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGsdFLdFLdFLdGudGtdGpdGqdGpdGpdGodFLdGrdGhdGhdGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedGmdFedFedGidGkdGjdFedFedGEdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdkHdlcdlgdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedQidFedFedGidGkdGjdFedFedGEdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdkHdlcdlgdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdGfdGedGddGcdGbdGadFZdFYdFXdFWdFVdFUdFTdFSdGgdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdkHdlcdlgdlhdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFKdFMdFLdFNdFLdFOdFedFQdFPdFPdFRdFJdFedDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdlcdlgdlhdkHdkHdDVdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaddFkdFjdFidFodFndFmdFedFIdFHdFGdFFdFJdFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a27ec365ef2189649385076bacff660c2994dce3 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 21 Dec 2013 12:23:50 -0500 Subject: [PATCH 237/315] Feature: Changed how used books of mindswap punish people. Now if you use a used mindswap book it marks you to be used in a mindswap with the next unfortunate soul who reads its. Some Limitations: You can escape the impending mindswap by changing forms or being dead when the next time someone tries to read the book. You can of course also just keep the book safe or destroy it if you accidentally read one. Only works with things that have hands. Consider intentionally reading one as a monkey then giving it to the captain. Feature: After some serious testing (and because it was already being done on live servers thanks to wabbajack() preserving spells) I've removed the compatible_mobs list for mind_transfer, meaning you can now mind transfer to any player controled living mob. Flowery fluff that no one would ever care about: changes the mindswap message for trying to swap into a dead guy, since a spell holder isn't nessisarily a space wizard --- code/datums/spells/mind_transfer.dm | 7 +---- code/game/gamemodes/wizard/spellbook.dm | 42 +++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm index 7284ec29e09..e04ceda8ad3 100644 --- a/code/datums/spells/mind_transfer.dm +++ b/code/datums/spells/mind_transfer.dm @@ -10,7 +10,6 @@ range = 1 cooldown_min = 200 //100 deciseconds reduction per rank var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell - var/list/compatible_mobs = list(/mob/living/carbon/human,/mob/living/carbon/monkey) //which types of mobs are affected by the spell. NOTE: change at your own risk var/base_spell_loss_chance = 20 //base probability of the wizard losing a spell in the process var/spell_loss_chance_modifier = 7 //amount of probability of losing a spell added per spell (mind_transfer included) var/spell_loss_amount = 1 //the maximum amount of spells possible to lose during a single transfer @@ -38,12 +37,8 @@ Also, you never added distance checking after target is selected. I've went ahea user << "They are too far away!" return - if(!(target.type in compatible_mobs)) - user << "Their mind isn't compatible with yours." - return - if(target.stat == DEAD) - user << "You didn't study necromancy back at the Space Wizard Federation academy." + user << "You don't particularly want to be dead." return if(!target.key || !target.mind) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 36417f0bd36..3627da60f5b 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -387,6 +387,7 @@ spellname = "mindswap" icon_state ="bookmindswap" desc = "This book's cover is pristine, though its pages look ragged and torn." + var/mob/stored_swap = null //Used in used book recoils to store an identity for mindswaps /obj/item/weapon/spellbook/oneuse/mindswap/onlearned() spellname = pick("fireball","smoke","blind","forcewall","knock","horses","charge") @@ -396,8 +397,45 @@ /obj/item/weapon/spellbook/oneuse/mindswap/recoil(mob/user as mob) ..() - user <<"You suddenly don't feel like yourself!" - wabbajack(user) + if(stored_swap in dead_mob_list) + stored_swap = null + if(!stored_swap) + stored_swap = user + user <<"For a moment you feel like you don't even know who you are anymore." + return + if(stored_swap == user) + user <<"You stare at the book some more, but there doesn't seem to be anything else to learn..." + return + + if(user.mind.special_verbs.len) + for(var/V in user.mind.special_verbs) + user.verbs -= V + + if(stored_swap.mind.special_verbs.len) + for(var/V in stored_swap.mind.special_verbs) + stored_swap.verbs -= V + + var/mob/dead/observer/ghost = stored_swap.ghostize(0) + ghost.spell_list = stored_swap.spell_list + + user.mind.transfer_to(stored_swap) + stored_swap.spell_list = user.spell_list + + if(stored_swap.mind.special_verbs.len) + for(var/V in user.mind.special_verbs) + user.verbs += V + + ghost.mind.transfer_to(user) + user.key = ghost.key + user.spell_list = ghost.spell_list + + if(user.mind.special_verbs.len) + for(var/V in user.mind.special_verbs) + user.verbs += V + + stored_swap <<"You're suddenly somewhere else... and someone else?!" + user <<"Suddenly you're staring at [src] again... where are you, who are you?!" + stored_swap = null /obj/item/weapon/spellbook/oneuse/forcewall spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall From 0d1ba1eccf589cbd37dfa119febf982da6cbb8e0 Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 21 Dec 2013 20:54:07 +0200 Subject: [PATCH 238/315] Changes mime abilities into spells. Admins can now give these from the 'give spell' menu. Unlike previous mime abilities, these are not transferred when a mime is cloned. --- code/datums/spell.dm | 13 +++++++-- code/datums/spells/conjure.dm | 5 +++- code/datums/spells/mime.dm | 51 ++++++++++++++++++++++++++++++++++ code/game/jobs/job/civilian.dm | 6 ++-- code/modules/mob/mob.dm | 6 ++-- 5 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 code/datums/spells/mime.dm diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 8e733d4df39..3578a8f2828 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -6,6 +6,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin /obj/effect/proc_holder/spell name = "Spell" desc = "A wizard spell" + panel = "Spells" density = 0 opacity = 0 @@ -15,14 +16,17 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin var/charge_max = 100 //recharge time in deciseconds if charge_type = "recharge" or starting charges if charge_type = "charges" var/charge_counter = 0 //can only cast spells if it equals recharge, ++ each decisecond if charge_type = "recharge" or -- each cast if charge_type = "charges" + var/still_recharging_msg = "The spell is still recharging." var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var" var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used var/clothes_req = 1 //see if it requires clothes + var/human_req = 0 //spell can only be cast by humans var/stat_allowed = 0 //see if it requires being conscious/alive, need to set to 1 for ghostpells var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell - var/invocation_type = "none" //can be none, whisper and shout + var/invocation_emote_self = null + var/invocation_type = "none" //can be none, whisper, emote and shout var/range = 7 //the range of the spell; outer radius for aoe spells var/message = "" //whatever it says to the guy affected by it var/selection_type = "view" //can be "range" or "view" @@ -56,7 +60,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin switch(charge_type) if("recharge") if(charge_counter < charge_max) - user << "[name] is still recharging." + user << still_recharging_msg return 0 if("charges") if(!charge_counter) @@ -86,7 +90,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin H << "I don't feel strong enough without my hat." return 0 else - if(clothes_req) + if(clothes_req || human_req) user << "This spell can only be casted by humans!" return 0 @@ -113,10 +117,13 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin user.whisper(invocation) else user.whisper(replacetext(invocation," ","`")) + if("emote") + user.visible_message(invocation, invocation_emote_self) //same style as in mob/living/emote.dm /obj/effect/proc_holder/spell/New() ..() + still_recharging_msg = "[name] is still recharging." charge_counter = charge_max /obj/effect/proc_holder/spell/Click() diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm index 5bccf70dc50..368b7d0913a 100644 --- a/code/datums/spells/conjure.dm +++ b/code/datums/spells/conjure.dm @@ -14,12 +14,15 @@ //should have format of list("emagged" = 1,"name" = "Wizard's Justicebot"), for example var/delay = 1//Go Go Gadget Inheritance + var/cast_sound = 'sound/items/welder.ogg' + /obj/effect/proc_holder/spell/aoe_turf/conjure/cast(list/targets) for(var/turf/T in targets) if(T.density && !summon_ignore_density) targets -= T - playsound(src.loc, 'sound/items/welder.ogg', 50, 1) + + playsound(src.loc, cast_sound, 50, 1) if(do_after(usr,delay)) for(var/i=0,iYou make a vow of silence." + else + H << "You break your vow of silence." \ No newline at end of file diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 17b5afcb6af..64e399197e9 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -242,10 +242,8 @@ H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/toy/crayon/mime(H), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_in_backpack) - H.verbs += /client/proc/mimespeak - H.verbs += /client/proc/mimewall - H.mind.special_verbs += /client/proc/mimespeak - H.mind.special_verbs += /client/proc/mimewall + H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(H) + H.spell_list += new /obj/effect/proc_holder/spell/targeted/mime/speak(H) H.miming = 1 H.rename_self("mime") return 1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a930f07f26f..b5b7bcd008a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -674,11 +674,11 @@ note dizziness decrements automatically in the mob's Life() proc. for(var/obj/effect/proc_holder/spell/S in spell_list) switch(S.charge_type) if("recharge") - statpanel("Spells","[S.charge_counter/10.0]/[S.charge_max/10]",S) + statpanel("[S.panel]","[S.charge_counter/10.0]/[S.charge_max/10]",S) if("charges") - statpanel("Spells","[S.charge_counter]/[S.charge_max]",S) + statpanel("[S.panel]","[S.charge_counter]/[S.charge_max]",S) if("holdervar") - statpanel("Spells","[S.holder_var_type] [S.holder_var_amount]",S) + statpanel("[S.panel]","[S.holder_var_type] [S.holder_var_amount]",S) From b1996a77e1a49c26875de129e5e1ea1290f96ce0 Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 21 Dec 2013 23:01:52 +0200 Subject: [PATCH 239/315] Fixes AI seeing the name of the person who speaks over radio using a voice changer. --- code/game/machinery/camera/tracking.dm | 2 +- code/modules/mob/living/carbon/human/human_helpers.dm | 2 +- code/modules/mob/living/living.dm | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 9e1a8552b9d..6461837c7a7 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -125,7 +125,7 @@ //U << text("Now tracking [] on camera.", target.name) //if (U.machine == null) // U.machine = U - U << "Now tracking [target.name] on camera." + U << "Now tracking [target.get_visible_name()] on camera." spawn (0) while (U.cameraFollow == target) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 774d1fee51c..f721c364c9d 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -33,7 +33,7 @@ return if_no_id //repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere -/mob/living/carbon/human/proc/get_visible_name() +/mob/living/carbon/human/get_visible_name() var/face_name = get_face_name("") var/id_name = get_id_name("") if(face_name) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 41a4882f910..7c71c2fa3c9 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -553,3 +553,7 @@ CM.legcuffed.loc = usr.loc CM.legcuffed = null CM.update_inv_legcuffed(0) + + +/mob/living/proc/get_visible_name() + return name \ No newline at end of file From 881620ec398af3efbeda882cea20d7a6fd651980 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sat, 21 Dec 2013 23:43:11 +0000 Subject: [PATCH 240/315] Changelog for the last couple of merged pull requests. --- html/changelog.html | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 06485211c17..6e840a28bb1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -54,6 +54,63 @@ should be listed in the changelog upon commit tho. Thanks. --> +

    + + +
    +

    21 December 2013

    +

    Giacom updated:

    +
      +
    • The Labor Camp has been changed based on feedback. Ore boxes added, internals added, safety pickaxes/shovels (might revert if unliked).
    • +
    • Labor Camp prisoners, who have earned enough points for freedom, will now have to be alone in the shuttle to move it and to open the middle door; this is in order to prevent free'd prisoners from releasing their comrades.
    • +
    • Monkeys no longer walk away when being pulled or grabbed.
    • +
    • Anti-breach shield generators have a greater range, and will cover more exposed space tiles.
    • +
    +
    + + +
    +

    21 December 2013

    +

    Bobylein updated:

    +
      +
    • Labcoats can now store bottles, beakers, pills, pill bottles and paper.
    • +
    +
    + + +
    +

    21 December 2013

    +

    Perakp updated:

    +
      +
    • You can no longer slip while laying down.
    • +
    +
    + + +
    +

    21 December 2013

    +

    Jordie updated:

    +
      +
    • Blowing up borgs from the Robotics Console will now actually make them explode. Emagged Cyborgs will explode even more.
    • +
    +
    + + +
    +

    21 December 2013

    +

    Nienhaus updated:

    +
      +
    • Added more poster.
    • +
    +
    + +

    18 December 2013

    JJRcop updated:

    From 25129039c095f963b60b8ddd8dc6a6b65d6fc6b0 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Sat, 21 Dec 2013 22:42:35 -0300 Subject: [PATCH 241/315] The speed variable of Linda now is a lot prettier --- code/LINDA/LINDA_system.dm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index daf76585557..b70cddbc149 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -32,16 +32,22 @@ datum/controller/air_system if(kill_air) return 1 - for(var/i=0,i 1) + for(var/i=0,i Date: Sun, 22 Dec 2013 01:43:03 +0000 Subject: [PATCH 242/315] * Syringe gun projectiles will now display a message when the shots are deflected by the THICKMATERIAL flag. * Fixes the space helmet not having the flag. * Fixes various coverall armour not having the THICKMATERIAL flag. --- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/spacesuits/miscellaneous.dm | 1 + code/modules/clothing/suits/armor.dm | 5 ++++- code/modules/projectiles/projectile/bullets.dm | 3 +++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index efd13e599e0..ab501d7dd1c 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -104,7 +104,7 @@ BLIND // can't see anything name = "space helmet" icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL item_state = "space" permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 500909e8675..8de11cefadc 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -17,6 +17,7 @@ w_class = 4 gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 + flags = FPRINT | TABLEPASS | THICKMATERIAL allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) slowdown = 1.5 armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index b1c4e84b4ce..c1440bbe0b0 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -92,7 +92,7 @@ item_state = "swat_suit" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS + flags = FPRINT | TABLEPASS | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 @@ -169,6 +169,7 @@ w_class = 4//bulky item body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + flags = FPRINT | TABLEPASS | THICKMATERIAL flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT @@ -182,6 +183,7 @@ item_state = "swat_suit" w_class = 4//bulky item gas_transfer_coefficient = 0.90 + flags = FPRINT | TABLEPASS | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 3 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -189,6 +191,7 @@ /obj/item/clothing/suit/armor/tdome body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + flags = FPRINT | TABLEPASS | THICKMATERIAL cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 187b969952b..b319ea8ab8d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -83,6 +83,9 @@ if(M.can_inject(target_zone = hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. reagents.trans_to(M, reagents.total_volume) return 1 + else + target.visible_message("The [name] was deflected!", \ + "You were protected against the [name]!") flags &= ~NOREACT reagents.handle_reactions() return 1 From df626a1f06d24f66e4de6dcc96821e4902c2c9c3 Mon Sep 17 00:00:00 2001 From: Kyrah Abattoir Date: Sun, 22 Dec 2013 11:28:10 +0100 Subject: [PATCH 243/315] correct paint can names and plural status, corrected pill box names, corrected lockbox names. --- code/game/objects/items/weapons/paint.dm | 10 ++-------- code/game/objects/items/weapons/storage/firstaid.dm | 6 +++--- code/game/objects/items/weapons/storage/lockbox.dm | 4 ++-- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 46770713eed..e335729519a 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -3,7 +3,8 @@ var/global/list/cached_icons = list() /obj/item/weapon/paint - name = "paint can" + gender= PLURAL + name = "paint" desc = "Used to recolor floors and walls. Can not be removed by the janitor." icon = 'icons/obj/items.dmi' icon_state = "paint_neutral" @@ -13,43 +14,36 @@ var/global/list/cached_icons = list() var/paintleft = 10 /obj/item/weapon/paint/red - gender= PLURAL name = "red paint" item_color = "C73232" //"FF0000" icon_state = "paint_red" /obj/item/weapon/paint/green - gender= PLURAL name = "green paint" item_color = "2A9C3B" //"00FF00" icon_state = "paint_green" /obj/item/weapon/paint/blue - gender= PLURAL name = "blue paint" item_color = "5998FF" //"0000FF" icon_state = "paint_blue" /obj/item/weapon/paint/yellow - gender= PLURAL name = "yellow paint" item_color = "CFB52B" //"FFFF00" icon_state = "paint_yellow" /obj/item/weapon/paint/violet - gender= PLURAL name = "violet paint" item_color = "AE4CCD" //"FF00FF" icon_state = "paint_violet" /obj/item/weapon/paint/black - gender= PLURAL name = "black paint" item_color = "333333" icon_state = "paint_black" /obj/item/weapon/paint/white - gender= PLURAL name = "white paint" item_color = "FFFFFF" icon_state = "paint_white" diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 890042b9b27..a6db233494b 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -150,7 +150,7 @@ return /obj/item/weapon/storage/pill_bottle/kelotane - name = "pill bottle (kelotane)" + name = "bottle of kelotane pills" desc = "Contains pills used to treat burns." New() @@ -164,7 +164,7 @@ new /obj/item/weapon/reagent_containers/pill/kelotane( src ) /obj/item/weapon/storage/pill_bottle/antitox - name = "pill bottle (Anti-toxin)" + name = "bottle of anti-toxin pills" desc = "Contains pills used to counter toxins." New() @@ -178,7 +178,7 @@ new /obj/item/weapon/reagent_containers/pill/antitox( src ) /obj/item/weapon/storage/pill_bottle/inaprovaline - name = "pill bottle (inaprovaline)" + name = "bottle of inaprovaline pills" desc = "Contains pills used to stabilize patients." New() diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index e0584437f39..b1f2a0abc9f 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -70,7 +70,7 @@ /obj/item/weapon/storage/lockbox/loyalty - name = "lockbox (Loyalty Implants)" + name = "lockbox of loyalty implants" req_access = list(access_security) New() @@ -82,7 +82,7 @@ /obj/item/weapon/storage/lockbox/clusterbang - name = "lockbox (clusterbang)" + name = "lockbox of clusterbangs" desc = "You have a bad feeling about opening this." req_access = list(access_security) From 97482fb5e9003b8e574d2ed980894f590597abd1 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 22 Dec 2013 12:33:59 +0000 Subject: [PATCH 244/315] * You can now move out of sleepers by moving. * Made the sleeper Del() eject it's contents. --- code/game/machinery/Sleeper.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 04ed801f6b9..396050ca1c2 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -303,6 +303,14 @@ /obj/machinery/sleeper/container_resist() eject() +/obj/machinery/sleeper/relaymove(var/mob/user) + ..() + eject() + +/obj/machinery/sleeper/Del() + go_out() + ..() + /obj/machinery/sleeper/proc/eject() go_out() add_fingerprint(usr) From 2b6046feb8baa2b92fb6828efabf41ffc2f89a90 Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 22 Dec 2013 16:36:26 +0100 Subject: [PATCH 245/315] Fixed #1830 Monkeys now have a resist button on their HUD. --- code/_onclick/hud/monkey.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 5624617ece2..532d09ee51a 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -168,5 +168,13 @@ mymob.client.screen = null + using = new /obj/screen() + using.name = "resist" + using.icon = ui_style + using.icon_state = "act_resist" + using.screen_loc = ui_pull_resist + using.layer = 19 + adding += using + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) - mymob.client.screen += adding + other \ No newline at end of file + mymob.client.screen += adding + other From 255bb90996c0b70e4cd5debfe725e05ded6ae4bd Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 22 Dec 2013 17:08:02 +0100 Subject: [PATCH 246/315] Fixed #1572 You can no longer farm infinite fire alarm electronics. --- code/game/machinery/alarm.dm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 307be170319..cd34e0f4ff5 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -986,9 +986,9 @@ FIRE ALARM if (istype(W, /obj/item/device/multitool)) src.detecting = !( src.detecting ) if (src.detecting) - user.visible_message("\red [user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.") + user.visible_message("[user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.") else - user.visible_message("\red [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.") + user.visible_message("[user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.") else if (istype(W, /obj/item/weapon/wirecutters)) buildstage = 1 @@ -996,13 +996,13 @@ FIRE ALARM var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil() coil.amount = 5 coil.loc = user.loc - user << "You cut the wires from \the [src]" + user << "You cut the wires from \the [src]" update_icon() if(1) if(istype(W, /obj/item/weapon/cable_coil)) var/obj/item/weapon/cable_coil/coil = W if(coil.amount < 5) - user << "You need more cable for this!" + user << "You need more cable for this!" return coil.amount -= 5 @@ -1010,26 +1010,26 @@ FIRE ALARM del(coil) buildstage = 2 - user << "You wire \the [src]!" + user << "You wire \the [src]!" update_icon() else if(istype(W, /obj/item/weapon/crowbar)) - user << "You pry out the circuit!" playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) spawn(20) - var/obj/item/weapon/firealarm_electronics/circuit = new /obj/item/weapon/firealarm_electronics() - circuit.loc = user.loc - buildstage = 0 - update_icon() + if(buildstage == 1) + user << "You pry out the circuit!" + new /obj/item/weapon/firealarm_electronics(user.loc) + buildstage = 0 + update_icon() if(0) if(istype(W, /obj/item/weapon/firealarm_electronics)) - user << "You insert the circuit!" + user << "You insert the circuit!" del(W) buildstage = 1 update_icon() else if(istype(W, /obj/item/weapon/wrench)) - user << "You remove the fire alarm assembly from the wall!" + user.visible_message("[user] removes the fire alarm assembly from the wall!", "You remove the fire alarm assembly from the wall!") var/obj/item/firealarm_frame/frame = new /obj/item/firealarm_frame() frame.loc = user.loc playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) From 773372fc1c9172d2fee765817de1a22b5d77a39d Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 22 Dec 2013 17:16:27 +0100 Subject: [PATCH 247/315] Fixed #1101 Disposals will no longer create invisible floor tiles. --- code/modules/recycling/disposal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index be4a7d4fa0d..a124370f6d5 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -726,7 +726,7 @@ F.burnt = 1 F.intact = 0 F.levelupdate() - new /obj/item/stack/tile(H) // add to holder so it will be thrown with other stuff + new /obj/item/stack/tile/plasteel(H) // add to holder so it will be thrown with other stuff F.icon_state = "Floor[F.burnt ? "1" : ""]" if(direction) // direction is specified From 90e7fb4bffb16dd68a4a4941d0b5f1dab0868e70 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Mon, 23 Dec 2013 04:32:41 +1100 Subject: [PATCH 248/315] Squashed recent changelog.html --- html/changelog.html | 114 ++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 77 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 6e840a28bb1..f2f50876a35 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,21 +50,17 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit tho. Thanks. --> - - - + + + +

    21 December 2013

    RobRichards, Validsalad updated:

    • Added new sprites for the sec-hailer, SWAT gear and riot armour.
    • -
    -
    - - -
    -

    21 December 2013

    +

    Giacom updated:

    • The Labor Camp has been changed based on feedback. Ore boxes added, internals added, safety pickaxes/shovels (might revert if unliked).
    • @@ -72,44 +68,24 @@ should be listed in the changelog upon commit tho. Thanks. -->
    • Monkeys no longer walk away when being pulled or grabbed.
    • Anti-breach shield generators have a greater range, and will cover more exposed space tiles.
    -
    - - -
    -

    21 December 2013

    Bobylein updated:

    • Labcoats can now store bottles, beakers, pills, pill bottles and paper.
    -
    - - -
    -

    21 December 2013

    Perakp updated:

    • You can no longer slip while laying down.
    -
    - - -
    -

    21 December 2013

    Jordie updated:

    • Blowing up borgs from the Robotics Console will now actually make them explode. Emagged Cyborgs will explode even more.
    -
    - - -
    -

    21 December 2013

    Nienhaus updated:

    • Added more poster.
    - +

    18 December 2013

    @@ -117,46 +93,26 @@ should be listed in the changelog upon commit tho. Thanks. -->
    • Transit tube tweaks. You can now put someone into a transit tube pod using grabs and you can empty a transit tube pod by clicking on it.
    -
    - - -
    -

    18 December 2013

    Giacom updated:

    • THE REALISM: Injectors such as syringes, parapens and hypos will not penetrate coveralls with thick material, this includes space suits, biosuits, bombsuits, and their head slot equivalent. Injectors now also consider where you aim, if you aim for the head it will try to use it through the head slot, otherwise it will aim for the body. To clarify, if you are wearing a space helmet and a doctor tries to inject you while aiming at your head, it will protect you until they aim for the unprotected body; same story for wearing a space suit and not a helmet.
    • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Whoa. This brand new technology will help keep out those snoopy crew members.
    • Lowered the cooldown of creating virus cultures to 5 seconds. You now only need to mix one unit of synaptizine, in a blood full of an advance virus, to get it to remove a random symptom.
    -
    - - -
    -

    18 December 2013

    Adrinus updated:

    • Playing cards, just like the real thing! Play poker, blackjack, go fish, the limits are limitless! Recommended to use space cash as the poker chips for now
    -
    - - -
    -

    18 December 2013

    Incoming updated:

    • Rounds will no longer end when the wizard dies and there are still apprentices or traitors/survivors..
    -
    - - -
    -

    18 December 2013

    Jordie0608 updated:

    • Replaced the digital valves in atmospherics with pumps.
    - +

    14 December 2013

    @@ -171,7 +127,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Be on the lookout for a new apprentice! This noble mage is a different beast from most wizards, trained in the arts of defending and healing. Too bad he still works for the wizard!
  • - +

    9 December 2013

    @@ -180,7 +136,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • New colourful ghost sprites for BYOND members. Sprites by anonus.
  • - +

    8 December 2013

    @@ -202,7 +158,8 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Monkeys have ling chem counter and active sting icons in their UI.
  • Going monkey -> human will try to equip the human with everything on the ground below it.
  • -
    +
    +

    2 December 2013

    @@ -232,7 +189,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Made the suit storage on the Captain's Tunic more useful than just a place to store your e-o2 tank. You can now store the nuke disk, stamps, medal box, flashes and melee weapons (mainly intended for the Chain of Command), and of course - smoking paraphernalia
  • - +

    30 November 2013

    @@ -252,7 +209,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
    - +

    17 November 2013

    Laharl Montgommery updated:

    @@ -260,18 +217,18 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • AI can now anchor and unanchor itself. In short, it means the AI can be dragged, if it wants to.
  • - -
    -

    16 November 2013

    -

    Kyrahabattoir updated:

    -
      -
    • Added restocking units for the snack, softdrinks, cigarettes, booze and hot drinks vending machines, can be ordered in cargo.
    • -
    • Vending machines need their service screwed on in order to dispense products.
    • -
    -
    - - + +
    +

    16 November 2013

    +

    Kyrahabattoir updated:

    +
      +
    • Added restocking units for the snack, softdrinks, cigarettes, booze and hot drinks vending machines, can be ordered in cargo.
    • +
    • Vending machines need their service screwed on in order to dispense products.
    • +
    +
    + +

    15 November 2013

    Giacom updated:

    @@ -281,7 +238,9 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • The telepad is now more random, along with power, bearing and angle will be randomly offset a bit.
  • -
    + + +

    11 November 2013

    Fleure updated:

      @@ -294,7 +253,8 @@ should be listed in the changelog upon commit tho. Thanks. -->
      • Added Telescience! I would explain how it works but then it wouldn't be very sciencey! Have fun figuring it out. The room is near Xenobiology.
      -
    +
    +

    9 November 2013

    @@ -312,7 +272,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Nuke Ops will now get an amount of telecrystals that scales with the round populaton. Their staging area has been equipped with telecrystal management consoles, which allow to transfer their TC among themselves. Try out the new items available in your uplink!
  • - +
    @@ -324,7 +284,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
    -
    +

    27 October 2013

    Giacom updated:

      @@ -335,25 +295,25 @@ should be listed in the changelog upon commit tho. Thanks. -->
    -
    +

    26 October 2013

    Giacom updated:

    • Service Cyborgs now have a violin module.
    • -
    • You can now examine Cyborgs to see their active module.
    • +
    • You can now examine Cyborgs to see their active module.
    - -
    + +

    14 October 2013

    Giacom updated:

    • AIs can now use alt click to get a list of items on the tile, allowing the AI to interact with objects under it. They can also use this to bookmark tiles with valuable equipment, such as APCs, allowing them easy access to the tile, to interact with or to jump to.
    • -
    • New Malf Power: Malf AIs can override a single machine's programming to cause it to rise up and attack everyone in sight.
    • +
    • New Malf Power: Malf AIs can override a single machine's programming to cause it to rise up and attack everyone in sight.
    - +
    From 0338a66c2a2017c34c7a6f9a0f6d63837508ba7a Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 22 Dec 2013 18:57:33 +0100 Subject: [PATCH 249/315] Adds fingerprints to a bunch of stuff. De-texts computer build paths. --- .../game/machinery/computer/buildandrepair.dm | 189 +++++++++--------- code/game/machinery/pipe/pipe_dispenser.dm | 2 +- .../game/objects/items/stacks/sheets/glass.dm | 26 ++- .../game/objects/items/stacks/sheets/light.dm | 9 +- code/game/objects/structures/girders.dm | 102 +++++----- .../objects/structures/windoor_assembly.dm | 13 +- code/game/objects/structures/window.dm | 29 ++- code/modules/detectivework/detective_work.dm | 2 +- 8 files changed, 207 insertions(+), 165 deletions(-) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index fc2605949b2..0d809d40a24 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -31,195 +31,195 @@ /obj/item/weapon/circuitboard/message_monitor name = "circuit board (Message Monitor)" - build_path = "/obj/machinery/computer/message_monitor" + build_path = /obj/machinery/computer/message_monitor origin_tech = "programming=3" /obj/item/weapon/circuitboard/security name = "circuit board (Security)" - build_path = "/obj/machinery/computer/security" + build_path = /obj/machinery/computer/security /obj/item/weapon/circuitboard/aicore name = "circuit board (AI core)" origin_tech = "programming=4;biotech=2" board_type = "other" /obj/item/weapon/circuitboard/aiupload name = "circuit board (AI Upload)" - build_path = "/obj/machinery/computer/upload/ai" + build_path = /obj/machinery/computer/upload/ai origin_tech = "programming=4" /obj/item/weapon/circuitboard/borgupload name = "circuit board (Cyborg Upload)" - build_path = "/obj/machinery/computer/upload/borg" + build_path = /obj/machinery/computer/upload/borg origin_tech = "programming=4" /obj/item/weapon/circuitboard/med_data name = "circuit board (Medical Records Console)" - build_path = "/obj/machinery/computer/med_data" + build_path = /obj/machinery/computer/med_data /obj/item/weapon/circuitboard/pandemic name = "circuit board (PanD.E.M.I.C. 2200)" - build_path = "/obj/machinery/computer/pandemic" + build_path = /obj/machinery/computer/pandemic origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/scan_consolenew name = "circuit board (DNA Machine)" - build_path = "/obj/machinery/computer/scan_consolenew" + build_path = /obj/machinery/computer/scan_consolenew origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/communications name = "circuit board (Communications)" - build_path = "/obj/machinery/computer/communications" + build_path = /obj/machinery/computer/communications origin_tech = "programming=2;magnets=2" /obj/item/weapon/circuitboard/card name = "circuit board (ID Console)" - build_path = "/obj/machinery/computer/card" + build_path = /obj/machinery/computer/card /obj/item/weapon/circuitboard/card/centcom name = "circuit board (Centcom ID Console)" - build_path = "/obj/machinery/computer/card/centcom" + build_path = /obj/machinery/computer/card/centcom //obj/item/weapon/circuitboard/shield // name = "Circuit board (Shield Control)" -// build_path = "/obj/machinery/computer/stationshield" +// build_path = /obj/machinery/computer/stationshield /obj/item/weapon/circuitboard/teleporter name = "circuit board (Teleporter)" - build_path = "/obj/machinery/computer/teleporter" + build_path = /obj/machinery/computer/teleporter origin_tech = "programming=2;bluespace=2" /obj/item/weapon/circuitboard/secure_data name = "circuit board (Security Records Console)" - build_path = "/obj/machinery/computer/secure_data" + build_path = /obj/machinery/computer/secure_data /obj/item/weapon/circuitboard/stationalert name = "circuit board (Station Alerts)" - build_path = "/obj/machinery/computer/station_alert" -/obj/item/weapon/circuitboard/atmospheresiphonswitch + build_path = /obj/machinery/computer/station_alert +/*/obj/item/weapon/circuitboard/atmospheresiphonswitch name = "circuit board (Atmosphere siphon control)" - build_path = "/obj/machinery/computer/atmosphere/siphonswitch" + build_path = /obj/machinery/computer/atmosphere/siphonswitch*/ /obj/item/weapon/circuitboard/air_management name = "circuit board (Atmospheric monitor)" - build_path = "/obj/machinery/computer/general_air_control" + build_path = /obj/machinery/computer/general_air_control /obj/item/weapon/circuitboard/injector_control name = "circuit board (Injector control)" - build_path = "/obj/machinery/computer/general_air_control/fuel_injection" + build_path = /obj/machinery/computer/general_air_control/fuel_injection /obj/item/weapon/circuitboard/atmos_alert name = "circuit board (Atmospheric Alert)" - build_path = "/obj/machinery/computer/atmos_alert" + build_path = /obj/machinery/computer/atmos_alert /obj/item/weapon/circuitboard/pod name = "circuit board (Massdriver control)" - build_path = "/obj/machinery/computer/pod" + build_path = /obj/machinery/computer/pod /obj/item/weapon/circuitboard/robotics name = "circuit board (Robotics Control)" - build_path = "/obj/machinery/computer/robotics" + build_path = /obj/machinery/computer/robotics origin_tech = "programming=3" /obj/item/weapon/circuitboard/cloning name = "circuit board (Cloning)" - build_path = "/obj/machinery/computer/cloning" + build_path = /obj/machinery/computer/cloning origin_tech = "programming=3;biotech=3" /obj/item/weapon/circuitboard/arcade/battle name = "circuit board (Arcade Battle)" - build_path = "/obj/machinery/computer/arcade/battle" + build_path = /obj/machinery/computer/arcade/battle origin_tech = "programming=1" /obj/item/weapon/circuitboard/arcade/orion_trail name = "circuit board (Orion_Trail)" - build_path = "/obj/machinery/computer/arcade/orion_trail" + build_path = /obj/machinery/computer/arcade/orion_trail origin_tech = "programming=2" /obj/item/weapon/circuitboard/turbine_control name = "circuit board (Turbine control)" - build_path = "/obj/machinery/computer/turbine_computer" + build_path = /obj/machinery/computer/turbine_computer /obj/item/weapon/circuitboard/solar_control name = "circuit board (Solar Control)" //name fixed 250810 - build_path = "/obj/machinery/power/solar_control" + build_path = /obj/machinery/power/solar_control origin_tech = "programming=2;powerstorage=2" /obj/item/weapon/circuitboard/powermonitor name = "circuit board (Power Monitor)" //name fixed 250810 - build_path = "/obj/machinery/computer/monitor" + build_path = /obj/machinery/computer/monitor /obj/item/weapon/circuitboard/olddoor name = "circuit board (DoorMex)" - build_path = "/obj/machinery/computer/pod/old" + build_path = /obj/machinery/computer/pod/old /obj/item/weapon/circuitboard/syndicatedoor name = "circuit board (ProComp Executive)" - build_path = "/obj/machinery/computer/pod/old/syndicate" + build_path = /obj/machinery/computer/pod/old/syndicate /obj/item/weapon/circuitboard/swfdoor name = "circuit board (Magix)" - build_path = "/obj/machinery/computer/pod/old/swf" + build_path = /obj/machinery/computer/pod/old/swf /obj/item/weapon/circuitboard/prisoner name = "circuit board (Prisoner Management Console)" - build_path = "/obj/machinery/computer/prisoner" + build_path = /obj/machinery/computer/prisoner /obj/item/weapon/circuitboard/rdconsole name = "circuit Board (RD Console)" - build_path = "/obj/machinery/computer/rdconsole/core" + build_path = /obj/machinery/computer/rdconsole/core /obj/item/weapon/circuitboard/mecha_control name = "circuit Board (Exosuit Control Console)" - build_path = "/obj/machinery/computer/mecha" + build_path = /obj/machinery/computer/mecha /obj/item/weapon/circuitboard/rdservercontrol name = "circuit Board (R&D Server Control)" - build_path = "/obj/machinery/computer/rdservercontrol" + build_path = /obj/machinery/computer/rdservercontrol /obj/item/weapon/circuitboard/crew name = "circuit board (Crew Monitoring Console)" - build_path = "/obj/machinery/computer/crew" + build_path = /obj/machinery/computer/crew origin_tech = "programming=3;biotech=2;magnets=2" /obj/item/weapon/circuitboard/mech_bay_power_console name = "circuit board (Mech Bay Power Control Console)" - build_path = "/obj/machinery/computer/mech_bay_power_console" + build_path = /obj/machinery/computer/mech_bay_power_console origin_tech = "programming=2;powerstorage=3" /obj/item/weapon/circuitboard/ordercomp name = "circuit board (Supply Ordering Console)" - build_path = "/obj/machinery/computer/ordercomp" + build_path = /obj/machinery/computer/ordercomp origin_tech = "programming=2" /obj/item/weapon/circuitboard/supplycomp name = "circuit board (Supply shuttle console)" - build_path = "/obj/machinery/computer/supplycomp" + build_path = /obj/machinery/computer/supplycomp origin_tech = "programming=3" var/contraband_enabled = 0 /obj/item/weapon/circuitboard/operating name = "circuit board (Operating Computer)" - build_path = "/obj/machinery/computer/operating" + build_path = /obj/machinery/computer/operating origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/mining name = "circuit board (Outpost Status Display)" - build_path = "/obj/machinery/computer/security/mining" + build_path = /obj/machinery/computer/security/mining origin_tech = "programming=2" /obj/item/weapon/circuitboard/comm_monitor name = "circuit board (Telecommunications Monitor)" - build_path = "/obj/machinery/computer/telecomms/monitor" + build_path = /obj/machinery/computer/telecomms/monitor origin_tech = "programming=3" /obj/item/weapon/circuitboard/comm_server name = "circuit board (Telecommunications Server Monitor)" - build_path = "/obj/machinery/computer/telecomms/server" + build_path = /obj/machinery/computer/telecomms/server origin_tech = "programming=3" /obj/item/weapon/circuitboard/comm_traffic name = "circuitboard (Telecommunications Traffic Control)" - build_path = "/obj/machinery/computer/telecomms/traffic" + build_path = /obj/machinery/computer/telecomms/traffic origin_tech = "programming=3" -/obj/item/weapon/circuitboard/curefab +/*/obj/item/weapon/circuitboard/curefab name = "circuit board (Cure fab)" - build_path = "/obj/machinery/computer/curer" + build_path = /obj/machinery/computer/curer /obj/item/weapon/circuitboard/splicer name = "circuit board (Disease Splicer)" - build_path = "/obj/machinery/computer/diseasesplicer" + build_path = /obj/machinery/computer/diseasesplicer*/ /obj/item/weapon/circuitboard/shuttle name = "circuit board (Shuttle)" - build_path = "/obj/machinery/computer/shuttle" + build_path = /obj/machinery/computer/shuttle origin_tech = "programming=2" id = "1" /obj/item/weapon/circuitboard/labor_shuttle name = "circuit Board (Labor Shuttle)" - build_path = "/obj/machinery/computer/shuttle/labor" + build_path = /obj/machinery/computer/shuttle/labor origin_tech = "programming 2" /obj/item/weapon/circuitboard/labor_shuttle/one_way name = "circuit Board (Prisoner Shuttle Console)" - build_path = "/obj/machinery/computer/shuttle/labor/one_way" + build_path = /obj/machinery/computer/shuttle/labor/one_way origin_tech = "programming 2" /obj/item/weapon/circuitboard/mining_shuttle name = "circuit Board (Mining Shuttle)" - build_path = "/obj/machinery/computer/shuttle/mining" + build_path = /obj/machinery/computer/shuttle/mining origin_tech = "programming 2" /obj/item/weapon/circuitboard/HolodeckControl // Not going to let people get this, but it's just here for future name = "circuit board (Holodeck Control)" - build_path = "/obj/machinery/computer/HolodeckControl" + build_path = /obj/machinery/computer/HolodeckControl origin_tech = "programming=4" /obj/item/weapon/circuitboard/aifixer name = "circuit board (AI Integrity Restorer)" - build_path = "/obj/machinery/computer/aifixer" + build_path = /obj/machinery/computer/aifixer origin_tech = "programming=3;biotech=2" /obj/item/weapon/circuitboard/area_atmos name = "circuit board (Area Air Control)" - build_path = "/obj/machinery/computer/area_atmos" + build_path = /obj/machinery/computer/area_atmos origin_tech = "programming=2" -/obj/item/weapon/circuitboard/prison_shuttle +/*/obj/item/weapon/circuitboard/prison_shuttle name = "circuit board (Prison Shuttle)" - build_path = "/obj/machinery/computer/prison_shuttle" - origin_tech = "programming=2" + build_path = /obj/machinery/computer/prison_shuttle + origin_tech = "programming=2"*/ /obj/item/weapon/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob) @@ -247,13 +247,13 @@ /obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob) if(istype(I,/obj/item/weapon/screwdriver)) if(src.build_path == "/obj/machinery/computer/rdconsole/core") - src.name = "circuit board (RD Console - Robotics)" - src.build_path = "/obj/machinery/computer/rdconsole/robotics" - user << "\blue Access protocols successfully updated." + name = "circuit board (RD Console - Robotics)" + build_path = /obj/machinery/computer/rdconsole/robotics + user << "Access protocols successfully updated." else - src.name = "circuit board (RD Console)" - src.build_path = "/obj/machinery/computer/rdconsole/core" - user << "\blue Defaulting access protocols." + name = "circuit board (RD Console)" + build_path = /obj/machinery/computer/rdconsole/core + user << "Defaulting access protocols." return /obj/item/weapon/circuitboard/shuttle/attackby(obj/item/I as obj, mob/user as mob) @@ -264,59 +264,63 @@ return /obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob) + add_fingerprint(user) switch(state) if(0) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20)) - user << "\blue You wrench the frame into place." - src.anchored = 1 - src.state = 1 + user << "You wrench the frame into place." + anchored = 1 + state = 1 if(istype(P, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = P if(!WT.remove_fuel(0, user)) - user << "The welding tool must be on to complete this task." + user << "The welding tool must be on to complete this task." return playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) if(do_after(user, 20)) if(!src || !WT.isOn()) return - user << "\blue You deconstruct the frame." - new /obj/item/stack/sheet/metal( src.loc, 5 ) + user << "You deconstruct the frame." + var/obj/item/stack/sheet/metal/M = new (loc, 5) + M.add_fingerprint(user) del(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20)) - user << "\blue You unfasten the frame." - src.anchored = 0 - src.state = 0 + user << "You unfasten the frame." + anchored = 0 + state = 0 if(istype(P, /obj/item/weapon/circuitboard) && !circuit) var/obj/item/weapon/circuitboard/B = P if(B.board_type == "computer") playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user << "\blue You place the circuit board inside the frame." - src.icon_state = "1" - src.circuit = P + user << "You place the circuit board inside the frame." + icon_state = "1" + circuit = P user.drop_item() + circuit.add_fingerprint(user) P.loc = src else - user << "\red This frame does not accept circuit boards of this type!" + user << "This frame does not accept circuit boards of this type!" if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "\blue You screw the circuit board into place." - src.state = 2 - src.icon_state = "2" + user << "You screw the circuit board into place." + state = 2 + icon_state = "2" if(istype(P, /obj/item/weapon/crowbar) && circuit) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "\blue You remove the circuit board." - src.state = 1 - src.icon_state = "0" + user << "You remove the circuit board." + state = 1 + icon_state = "0" circuit.loc = src.loc - src.circuit = null + circuit.add_fingerprint(user) + circuit = null if(2) if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "\blue You unfasten the circuit board." + user << "You unfasten the circuit board." src.state = 1 src.icon_state = "1" if(istype(P, /obj/item/weapon/cable_coil)) @@ -326,17 +330,18 @@ if(P) P:amount -= 5 if(!P:amount) del(P) - user << "\blue You add cables to the frame." + user << "You add cables to the frame." src.state = 3 src.icon_state = "3" if(3) if(istype(P, /obj/item/weapon/wirecutters)) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) - user << "\blue You remove the cables." + user << "You remove the cables." src.state = 2 src.icon_state = "2" - var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc ) + var/obj/item/weapon/cable_coil/A = new (loc) A.amount = 5 + A.add_fingerprint(user) if(istype(P, /obj/item/stack/sheet/glass)) if(P:amount >= 2) @@ -344,20 +349,21 @@ if(do_after(user, 20)) if(P) P:use(2) - user << "\blue You put in the glass panel." + user << "You put in the glass panel." src.state = 4 src.icon_state = "4" if(4) if(istype(P, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "\blue You remove the glass panel." + user << "You remove the glass panel." src.state = 3 src.icon_state = "3" - new /obj/item/stack/sheet/glass( src.loc, 2 ) + var/obj/item/stack/sheet/glass/G = new (loc, 2) + G.add_fingerprint(user) if(istype(P, /obj/item/weapon/screwdriver)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "\blue You connect the monitor." - var/B = new src.circuit.build_path ( src.loc ) + user << "You connect the monitor." + var/obj/B = new src.circuit.build_path (src.loc) if(circuit.powernet) B:powernet = circuit.powernet if(circuit.id) B:id = circuit.id if(circuit.records) B:records = circuit.records @@ -370,4 +376,5 @@ var/obj/machinery/computer/shuttle/S = B var/obj/item/weapon/circuitboard/shuttle/C = circuit S.id = C.id + transfer_fingerprints_to(B) del(src) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 2e64c41414e..79140348099 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -70,7 +70,7 @@ return /obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob) - src.add_fingerprint(usr) + add_fingerprint(user) if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter)) usr << "You put [W] back into [src]." user.drop_item() diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 9b752a8c62a..6f501762296 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -22,6 +22,7 @@ /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user) ..() + add_fingerprint(user) if(istype(W,/obj/item/weapon/cable_coil)) var/obj/item/weapon/cable_coil/CC = W if(CC.amount < 5) @@ -29,7 +30,8 @@ return CC.use(5) user << "\blue You attach wire to the [name]." - new /obj/item/stack/light_w(user.loc) + var/obj/item/stack/light_w/new_tile = new(user.loc) + new_tile.add_fingerprint(user) src.use(1) else if( istype(W, /obj/item/stack/rods) ) var/obj/item/stack/rods/V = W @@ -89,6 +91,7 @@ W.anchored = 0 W.air_update_turf(1) src.use(1) + W.add_fingerprint(user) if("Full Window") if(!src) return 1 if(src.loc != user) return 1 @@ -104,6 +107,7 @@ W.ini_dir = SOUTHWEST W.anchored = 0 W.air_update_turf(1) + W.add_fingerprint(user) src.use(2) return 0 @@ -172,44 +176,46 @@ W.dir = dir_to_set W.ini_dir = W.dir W.anchored = 0 + W.add_fingerprint(user) src.use(1) if("Full Window") if(!src) return 1 if(src.loc != user) return 1 if(src.amount < 2) - user << "\red You need more glass to do that." + user << "You need more glass to do that." return 1 if(locate(/obj/structure/window) in user.loc) - user << "\red There is a window in the way." + user << "There is a window in the way." return 1 var/obj/structure/window/W - W = new /obj/structure/window/reinforced( user.loc, 1 ) + W = new /obj/structure/window/reinforced(user.loc, 1) W.state = 0 W.dir = SOUTHWEST W.ini_dir = SOUTHWEST W.anchored = 0 + W.add_fingerprint(user) src.use(2) if("Windoor") if(!src || src.loc != user) return 1 if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc)) - user << "\red There is already a windoor assembly in that location." + user << "There is already a windoor assembly in that location." return 1 if(isturf(user.loc) && locate(/obj/machinery/door/window/, user.loc)) - user << "\red There is already a windoor in that location." + user << "There is already a windoor in that location." return 1 if(src.amount < 5) - user << "\red You need more glass to do that." + user << "You need more glass to do that." return 1 - var/obj/structure/windoor_assembly/WD - WD = new /obj/structure/windoor_assembly(user.loc) + var/obj/structure/windoor_assembly/WD = new(user.loc) WD.state = "01" WD.anchored = 0 + WD.add_fingerprint(user) src.use(5) switch(user.dir) if(SOUTH) @@ -221,7 +227,7 @@ if(WEST) WD.dir = WEST WD.ini_dir = WEST - else//If the user is facing northeast. northwest, southeast, southwest or north, default to north + else //If the user is facing northeast. northwest, southeast, southwest or north, default to north WD.dir = NORTH WD.ini_dir = NORTH else diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 5437fdeccd5..7994a83b547 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -14,10 +14,12 @@ /obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob) ..() if(istype(O,/obj/item/weapon/wirecutters)) - var/obj/item/weapon/cable_coil/CC = new/obj/item/weapon/cable_coil(user.loc) + var/obj/item/weapon/cable_coil/CC = new (user.loc) CC.amount = 5 + CC.add_fingerprint(user) amount-- - new/obj/item/stack/sheet/glass(user.loc) + var/obj/item/stack/sheet/glass/G = new (user.loc) + G.add_fingerprint(user) if(amount <= 0) user.drop_from_inventory(src) del(src) @@ -29,7 +31,8 @@ user.drop_from_inventory(M) del(M) amount-- - new/obj/item/stack/tile/light(user.loc) + var/obj/item/stack/tile/light/L = new (user.loc) + L.add_fingerprint(user) if(amount <= 0) user.drop_from_inventory(src) del(src) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index b50225838e6..f9cd7e59526 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -6,60 +6,64 @@ var/state = 0 attackby(obj/item/W as obj, mob/user as mob) + add_fingerprint(user) if(istype(W, /obj/item/weapon/wrench) && state == 0) if(anchored && !istype(src,/obj/structure/girder/displaced)) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now disassembling the girder" + user << "Now disassembling the girder..." if(do_after(user,40)) if(!src) return - user << "\blue You dissasembled the girder!" + user << "You dissasembled the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) del(src) else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now securing the girder" + user << "Now securing the girder..." if(get_turf(user, 40)) - user << "\blue You secured the girder!" - new/obj/structure/girder( src.loc ) + user << "You secured the girder!" + var/obj/structure/girder/G = new (loc) + transfer_fingerprints_to(G) del(src) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - user << "\blue Now slicing apart the girder" + user << "Now slicing apart the girder..." if(do_after(user,30)) if(!src) return - user << "\blue You slice apart the girder!" + user << "You slice apart the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) del(src) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - user << "\blue You drill through the girder!" + user << "You drill through the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) del(src) else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user << "\blue Now unsecuring support struts" + user << "Now unsecuring support struts..." if(do_after(user,40)) if(!src) return - user << "\blue You unsecured the support struts!" + user << "You unsecured the support struts!" state = 1 else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - user << "\blue Now removing support struts" + user << "Now removing support struts..." if(do_after(user,40)) if(!src) return - user << "\blue You removed the support struts!" - new/obj/structure/girder( src.loc ) + user << "You removed the support struts!" + var/obj/structure/girder/G = new (loc) + transfer_fingerprints_to(G) del(src) else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - user << "\blue Now dislodging the girder" + user << "Now dislodging the girder..." if(do_after(user, 40)) if(!src) return - user << "\blue You dislodged the girder!" - new/obj/structure/girder/displaced( src.loc ) + user << "You dislodged the girder!" + var/obj/structure/girder/displaced/D = new (loc) + transfer_fingerprints_to(D) del(src) else if(istype(W, /obj/item/stack/sheet)) @@ -71,20 +75,21 @@ if(!anchored) if(S.amount < 2) return S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." - new /obj/structure/falsewall (src.loc) + user << "You create a false wall! Push on it to open or close the passage." + var/obj/structure/falsewall/F = new (loc) + transfer_fingerprints_to(F) del(src) else if(S.amount < 2) return ..() - user << "\blue Now adding plating..." + user << "Now adding plating..." if (do_after(user,40)) if(!src || !S || S.amount < 2) return S.use(2) - user << "\blue You added the plating!" + user << "You added the plating!" var/turf/Tsrc = get_turf(src) Tsrc.ChangeTurf(/turf/simulated/wall) for(var/turf/simulated/wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) + if(X) transfer_fingerprints_to(X) del(src) return @@ -92,31 +97,33 @@ if(!anchored) if(S.amount < 2) return S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." - new /obj/structure/falserwall (src.loc) + user << "You create a false wall! Push on it to open or close the passage." + var/obj/structure/falserwall/FW = new (loc) + transfer_fingerprints_to(FW) del(src) else if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() - user << "\blue Now finalising reinforced wall." + user << "Now finalising reinforced wall..." if(do_after(user, 50)) if(!src || !S || S.amount < 1) return S.use(1) - user << "\blue Wall fully reinforced!" + user << "Wall fully reinforced!" var/turf/Tsrc = get_turf(src) Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) + if(X) transfer_fingerprints_to(X) del(src) return else if(S.amount < 1) return ..() - user << "\blue Now reinforcing girders" + user << "Now reinforcing girders..." if (do_after(user,60)) if(!src || !S || S.amount < 1) return S.use(1) - user << "\blue Girders reinforced!" - new/obj/structure/girder/reinforced( src.loc ) + user << "Girders reinforced!" + var/obj/structure/girder/reinforced/R = new (loc) + transfer_fingerprints_to(R) del(src) return @@ -125,21 +132,22 @@ if(!anchored) if(S.amount < 2) return S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." + user << "You create a false wall! Push on it to open or close the passage." var/F = text2path("/obj/structure/falsewall/[M]") - new F (src.loc) + var/obj/structure/FW = new F (loc) + transfer_fingerprints_to(FW) del(src) else if(S.amount < 2) return ..() - user << "\blue Now adding plating..." + user << "Now adding plating..." if (do_after(user,40)) if(!src || !S || S.amount < 2) return S.use(2) - user << "\blue You added the plating!" + user << "You added the plating!" var/turf/Tsrc = get_turf(src) Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) for(var/turf/simulated/wall/mineral/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) + if(X) transfer_fingerprints_to(X) del(src) return @@ -150,7 +158,7 @@ if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. user.drop_item() P.loc = src.loc - user << "\blue You fit the pipe into the [src]!" + user << "You fit the pipe into the [src]!" else ..() @@ -198,23 +206,27 @@ attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now disassembling the girder" + user << "Now disassembling the girder..." if(do_after(user,40)) - user << "\blue You dissasembled the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) + user << "You dissasembled the girder!" + var/obj/effect/decal/remains/human/R = new (get_turf(src)) + transfer_fingerprints_to(R) del(src) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - user << "\blue Now slicing apart the girder" + user << "Now slicing apart the girder..." if(do_after(user,30)) - user << "\blue You slice apart the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) - del(src) + user << "You slice apart the girder!" + var/obj/effect/decal/remains/human/R = new (get_turf(src)) + transfer_fingerprints_to(R) + del(src) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - user << "\blue You drill through the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) - del(src) + user << "You drill through the girder!" + if(do_after(user, 5)) + var/obj/effect/decal/remains/human/R = new (get_turf(src)) + transfer_fingerprints_to(R) + del(src) blob_act() if(prob(40)) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index b43eb6352a2..c8768f63971 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -70,23 +70,26 @@ obj/structure/windoor_assembly/Del() /obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob) //I really should have spread this out across more states but thin little windoors are hard to sprite. + add_fingerprint(user) switch(state) if("01") if(istype(W, /obj/item/weapon/weldingtool) && !anchored ) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) - user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.") + user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.") playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) if(do_after(user, 40)) if(!src || !WT.isOn()) return - user << "\blue You dissasembled the windoor assembly!" - new /obj/item/stack/sheet/rglass(get_turf(src), 5) + user << "You dissasembled the windoor assembly!" + var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5) + RG.add_fingerprint(user) if(secure) - new /obj/item/stack/rods(get_turf(src), 4) + var/obj/item/stack/rods/R = new (get_turf(src), 4) + R.add_fingerprint(user) del(src) else - user << "\blue You need more welding fuel to dissassemble the windoor assembly." + user << "You need more welding fuel to dissassemble the windoor assembly." return //Wrenching an unsecure assembly anchors it in place. Step 4 complete diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 7813bc255e5..a339db1ca01 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -55,7 +55,6 @@ if(reinf) new /obj/item/stack/rods( loc) del(src) - /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 @@ -98,6 +97,7 @@ /obj/structure/window/attack_tk(mob/user as mob) user.visible_message("Something knocks on [src].") + add_fingerprint(user) playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1) /obj/structure/window/attack_hand(mob/user as mob) @@ -106,11 +106,15 @@ if(HULK in user.mutations) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") - new /obj/item/weapon/shard(loc) - if(reinf) new /obj/item/stack/rods(loc) + var/obj/item/weapon/shard/S = new (loc) + S.add_fingerprint(user) + if(reinf) + var/obj/item/stack/rods/R = new (loc) + R.add_fingerprint(user) del(src) else user.visible_message("[user] knocks on [src].") + add_fingerprint(user) playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1) @@ -151,6 +155,7 @@ /obj/structure/window/attackby(obj/item/I, mob/user) if(!can_be_reached(user)) return 1 //returning 1 will skip the afterattack() + add_fingerprint(user) if(istype(I, /obj/item/weapon/screwdriver)) if(reinf && state >= 1) state = 3 - state @@ -171,14 +176,18 @@ playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.") else if(istype(I, /obj/item/weapon/wrench) && !anchored) - var/glass_type if(reinf) - glass_type = /obj/item/stack/sheet/rglass + var/obj/item/stack/sheet/rglass/RG = new (user.loc) + RG.add_fingerprint(user) + if(is_fulltile()) //fulltiles drop two panes + RG = new (user.loc) + RG.add_fingerprint(user) else - glass_type = /obj/item/stack/sheet/glass - new glass_type(user.loc) - if(is_fulltile())//fulltiles drop two panes - new glass_type(user.loc) + var/obj/item/stack/sheet/glass/G = new (user.loc) + G.add_fingerprint(user) + if(is_fulltile()) + G = new (user.loc) + G.add_fingerprint(user) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) src.Del(1) else @@ -234,6 +243,7 @@ // updateSilicate() air_update_turf(1) ini_dir = dir + add_fingerprint(usr) return @@ -250,6 +260,7 @@ // updateSilicate() air_update_turf(1) ini_dir = dir + add_fingerprint(usr) return diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index e9f7709972f..3cd1a36d75a 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -149,4 +149,4 @@ atom/proc/add_fibers(mob/living/carbon/human/M) A.fingerprints |= fingerprints.Copy() //detective if(fingerprintshidden) A.fingerprintshidden |= fingerprintshidden.Copy() //admin - A.fingerprintslast = fingerprintslast \ No newline at end of file + A.fingerprintslast = fingerprintslast From 0c8c6a5de299e78941a40a69e4a2b388208a7386 Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 22 Dec 2013 19:21:45 +0100 Subject: [PATCH 250/315] Fixed #1119 folding boxes updates sprites properly --- code/game/objects/items/weapons/storage/boxes.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 5fae276d1ee..10cd880dadb 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -50,6 +50,8 @@ user << "You fold [src] flat." var/obj/item/I = new foldable(get_turf(src)) user.put_in_hands(I) + user.update_inv_l_hand() + user.update_inv_r_hand() del(src) From a47342d68b154c1127e4cce61186578f95747c9d Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 22 Dec 2013 21:24:16 +0100 Subject: [PATCH 251/315] Fix for the disposals fix. --- code/modules/recycling/disposal.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index a124370f6d5..5a153561583 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -720,11 +720,10 @@ H.active = 0 H.loc = src return - if(istype(T,/turf/simulated/floor && T.intact)) //intact floor, pop the tile + if(istype(T,/turf/simulated/floor)) //intact floor, pop the tile var/turf/simulated/floor/F = T //F.health = 100 - F.burnt = 1 - F.intact = 0 + F.break_tile() F.levelupdate() new /obj/item/stack/tile/plasteel(H) // add to holder so it will be thrown with other stuff F.icon_state = "Floor[F.burnt ? "1" : ""]" From 7403f17da2bd54f37b7849999231a2d9b97fa8e5 Mon Sep 17 00:00:00 2001 From: Miauw Date: Mon, 23 Dec 2013 14:33:55 +0100 Subject: [PATCH 252/315] Fixed cable coils getting negative lengths by computers. --- code/game/machinery/computer/buildandrepair.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 0d809d40a24..860e475a922 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -324,12 +324,13 @@ src.state = 1 src.icon_state = "1" if(istype(P, /obj/item/weapon/cable_coil)) - if(P:amount >= 5) + var/obj/item/weapon/cable_coil/C = P + if(C.amount >= 5) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 20)) - if(P) - P:amount -= 5 - if(!P:amount) del(P) + if(C && C.amount >= 5) + C.amount -= 5 + if(C.amount <= 0) del(C) user << "You add cables to the frame." src.state = 3 src.icon_state = "3" From 28be6cfe9872a4d983449f4f595dc5c2404de3fb Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 23 Dec 2013 13:41:50 +0000 Subject: [PATCH 253/315] * Fixes #2115 and the captain's space suit path was changed to /obj/item/clothing/suit/space/captain from /obj/item/clothing/suit/armor/captain * Updated the map with the new path. --- code/modules/clothing/spacesuits/miscellaneous.dm | 11 ++++------- maps/tgstation.2.1.2.dmm | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 8de11cefadc..6d358a8495c 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -1,6 +1,6 @@ //Captain's Spacesuit /obj/item/clothing/head/helmet/space/capspace - name = "space helmet" + name = "captain's space helmet" icon_state = "capspace" item_state = "capspacehelmet" desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads." @@ -9,15 +9,12 @@ armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50) //Captain's space suit This is not the proper path but I don't currently know enough about how this all works to mess with it. -/obj/item/clothing/suit/armor/captain - name = "Captain's armor" +/obj/item/clothing/suit/space/captain + name = "captain's armor" desc = "A bulky, heavy-duty piece of exclusive Nanotrasen armor. YOU are in charge!" icon_state = "caparmor" item_state = "capspacesuit" w_class = 4 - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.02 - flags = FPRINT | TABLEPASS | THICKMATERIAL allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) slowdown = 1.5 armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) @@ -33,7 +30,7 @@ /obj/item/clothing/head/helmet/space/deathsquad/beret name = "officer's beret" - desc = "An armored beret commonly used by special operations officers." + desc = "An armored beret commonly used by special operations officers. Uses forcefield technology to protect the head from space." icon_state = "beret_badge" armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index 7e39bdef95b..f2784332972 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -2818,7 +2818,7 @@ "bcj" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bck" = (/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bcl" = (/obj/machinery/camera/motion{c_tag = "AI Chamber South"; dir = 1; name = "motion-sensitive security camera"; network = list("RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) -"bcm" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/armor/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Command)"; pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bcm" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/space/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Command)"; pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bcn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bco" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bcp" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/weapon/melee/chainofcommand,/turf/simulated/floor/wood,/area/crew_quarters/captain) From 0338996b869efc4b928c5ce02ffc6751d4cec589 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 23 Dec 2013 14:31:19 +0000 Subject: [PATCH 254/315] * Removes a debug message. --- code/controllers/shuttle_controller.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 5a2ad069bd1..2d6af5d0c45 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -158,7 +158,7 @@ datum/shuttle_controller captain_announce("The Emergency Shuttle has left the station. Estimate [round(timeleft()/60,1)] minutes until the shuttle docks at Central Command.") else if(location == TRANSIT) move_shuttles() - message_admins("Shuttles have attempted to move to Centcom") + //message_admins("Shuttles have attempted to move to Centcom") location = ENDGAME online = 0 endtime = null From 9d0c3bf52e85f4b315d8be99f2638b8a4d5710f5 Mon Sep 17 00:00:00 2001 From: Perakp Date: Mon, 23 Dec 2013 18:12:04 +0200 Subject: [PATCH 255/315] Fixes runtimes if a non-human would somehow get the mime speech spell. Only humans have .miming --- code/datums/spells/mime.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/datums/spells/mime.dm b/code/datums/spells/mime.dm index b663b99abff..9b088bca121 100644 --- a/code/datums/spells/mime.dm +++ b/code/datums/spells/mime.dm @@ -35,6 +35,8 @@ /obj/effect/proc_holder/spell/targeted/mime/speak/Click() if(!usr) return + if(!ishuman(usr)) + return var/mob/living/carbon/human/H = usr if(H.miming) still_recharging_msg = "You can't break your vow of silence that fast!" From 4f8389ec0ea6f9fbfa4d77f79ef23637b0fdbc15 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 23 Dec 2013 21:39:27 +0400 Subject: [PATCH 256/315] Constructable machines will depend on R&D parts DNA scanner: Laser quality lessens the irradiation Manipulator quality drastically improves the precision(9 times with best part) Scanner quality allows to scan suiciders/ling husks, best part enables cloner's autoprocess button, making it scan people in the scanner automatically Clone pod: Manipulator quality improves the speed of cloning Scanning module quality affects with how much health people will be ejected, will they get negative mutation/no mutations/clean of all mutations/random good mutation, at best quality will enable clone console's autoprocess button and will try to clone all the dead people in records automatically, together with best DNA scanner parts cloning console will be able to work in full automatic regime autoscanning people and autocloning them Borg recharger: Capacitors' quality and powercell max charge affect the speed at which borgs recharge Manipulator quality allows borg to be slowly repaired while inside the recharges, best manipulator allows even fire damage to be slowly repaired Portable power generators: Capacitors' quality produce more power Better lasers consume less fuel and reduce heat production PACMAN with best parts can keep whole station powered with about sheet of plamsa per minute(approximately, wasnt potent enough to test) Protolathe: Manipulators quality affects the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), best manipulators reduces the cost 5 times (!) Imprinter: Manipulator quality affects the cost, best manipulator reduce cost(acid insluded) 4 times, i.e. 20 boards per 100 units of acid Destructive analyzer: Better parts allow items with less reliability in Redone how reliability is handled, you now see item reliability in the deconstruction menu and deconstructing items that has same or one point less research type level will rise the reliability of all known designs that has one or more research type requarements as the deconstructed item Designs of the same type raise in reliability more Removed reliability_base and reliability_mod completely because they served no purpose Critically broken things rise reliability of the design drastically Whole reliability system is not used a lot but now at least on the R&D part it finally matters Didnt touch telecomms machinery, R&D code is messy but tcomms is just another level, im not high enough to touch it yet Most of things except for pacman are tested ingame, no bugs/runtimes detected --- code/game/dna.dm | 25 ++++- code/game/machinery/autolathe.dm | 47 ++++++--- code/game/machinery/cloning.dm | 36 +++++-- code/game/machinery/computer/cloning.dm | 37 +++++++- code/game/machinery/rechargestation.dm | 41 ++++++-- code/modules/power/port_gen.dm | 15 ++- code/modules/research/circuitprinter.dm | 6 +- code/modules/research/designs.dm | 58 ++++++----- code/modules/research/destructive_analyzer.dm | 5 +- code/modules/research/protolathe.dm | 5 + code/modules/research/rdconsole.dm | 95 ++++++++++--------- code/modules/research/research.dm | 25 ++--- code/modules/research/server.dm | 1 - 13 files changed, 258 insertions(+), 138 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 04c6a091e5a..7afa8eef26a 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -336,6 +336,9 @@ use_power = 1 idle_power_usage = 50 active_power_usage = 300 + var/damage_coeff + var/scan_level + var/precision_coeff /obj/machinery/dna_scannernew/New() ..() @@ -347,8 +350,20 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(null) component_parts += new /obj/item/weapon/cable_coil(null, 1) component_parts += new /obj/item/weapon/cable_coil(null, 1) + RefreshParts() +/obj/machinery/dna_scannernew/RefreshParts() + scan_level = 0 + damage_coeff = 0 + precision_coeff = 0 + for(var/obj/item/weapon/stock_parts/scanning_module/P in component_parts) + scan_level += P.rating + for(var/obj/item/weapon/stock_parts/manipulator/P in component_parts) + precision_coeff = P.rating + for(var/obj/item/weapon/stock_parts/micro_laser/P in component_parts) + damage_coeff = P.rating + /obj/machinery/dna_scannernew/proc/toggle_open(mob/user=usr) if(!user) return @@ -582,7 +597,7 @@ if(connected) if(connected.occupant) //set occupant_status message viable_occupant = connected.occupant - if(check_dna_integrity(viable_occupant) && !(NOCLONE in viable_occupant.mutations)) //occupent is viable for dna modification + if(check_dna_integrity(viable_occupant) && (!(NOCLONE in viable_occupant.mutations) || (connected.scan_level == 3))) //occupent is viable for dna modification occupant_status += "[viable_occupant.name] => " switch(viable_occupant.stat) if(CONSCIOUS) occupant_status += "Conscious" @@ -624,7 +639,7 @@ var/stddev = radstrength*RADIATION_STRENGTH_MULTIPLIER status += "
    Output Level:
    [radstrength]
    " status += "
      \> Mutation:
    (-[stddev] to +[stddev] = 68%) (-[2*stddev] to +[2*stddev] = 95%)
    " - stddev = RADIATION_ACCURACY_MULTIPLIER/radduration + stddev = RADIATION_ACCURACY_MULTIPLIER/(radduration + (connected.precision_coeff ** 2)) var/chance_to_hit switch(stddev) //hardcoded values from a z-table for a normal distribution if(0 to 0.25) chance_to_hit = ">95%" @@ -829,7 +844,7 @@ num = Clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) - viable_occupant.radiation += rand(15,40) + viable_occupant.radiation += rand(15/(connected.damage_coeff ** 2),40/(connected.damage_coeff ** 2)) switch(href_list["text"]) if("se") if(buffer_slot["SE"]) @@ -899,12 +914,12 @@ current_screen = "mainmenu" if(viable_occupant && connected && connected.occupant==viable_occupant) - viable_occupant.radiation += RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength + viable_occupant.radiation += (RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength)/(connected.damage_coeff ** 2) switch(href_list["task"]) if("pulseui") var/len = length(viable_occupant.dna.uni_identity) num = Wrap(num, 1, len+1) - num = randomize_radiation_accuracy(num, radduration, len) + num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len) var/block = round((num-1)/DNA_BLOCK_SIZE)+1 var/subblock = num - block*DNA_BLOCK_SIZE diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 6a31eb60051..c2a68b9f567 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -89,6 +89,7 @@ var/global/list/autolathe_recipes_hidden = list( \ idle_power_usage = 10 active_power_usage = 100 var/busy = 0 + var/prod_coeff proc wires_win(mob/user as mob) @@ -104,6 +105,7 @@ var/global/list/autolathe_recipes_hidden = list( \ onclose(user, "autolathe_hack") regular_win(mob/user as mob) + var/coeff = 2 ** prod_coeff var/dat as text dat = text("Metal Amount: [src.m_amount] cm3 (MAX: [max_m_amount])
    \nGlass Amount: [src.g_amount] cm3 (MAX: [max_g_amount])
    ") var/list/objs = list() @@ -111,12 +113,13 @@ var/global/list/autolathe_recipes_hidden = list( \ if (src.hacked) objs += src.LL for(var/obj/t in objs) - var/title = "[t.name] ([t.m_amt] m /[t.g_amt] g)" - if (m_amount" - continue - dat += "
    [title]" if (istype(t, /obj/item/stack)) + var/title = "[t.name] ([t.m_amt] m /[t.g_amt] g)" + if (m_amount" + continue + dat += "[title]" + var/obj/item/stack/S = t var/max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) if (max_multiplier>1) @@ -127,6 +130,12 @@ var/global/list/autolathe_recipes_hidden = list( \ dat += " x[25]" if (max_multiplier>1) dat += " x[max_multiplier]" + else + var/title = "[t.name] ([t.m_amt/coeff] m /[t.g_amt/coeff] g)" + if (m_amount" + continue + dat += "[title]" dat += "
    " user << browse("Autolathe Control Panel[dat]", "window=autolathe_regular") onclose(user, "autolathe_regular") @@ -250,6 +259,7 @@ var/global/list/autolathe_recipes_hidden = list( \ src.add_fingerprint(usr) if (!busy) if(href_list["make"]) + var/coeff = 2 ** prod_coeff var/turf/T = get_step(src.loc, get_dir(src,usr)) var/obj/template = locate(href_list["make"]) var/multiplier = text2num(href_list["multiplier"]) @@ -260,21 +270,27 @@ var/global/list/autolathe_recipes_hidden = list( \ use_power(power) icon_state = "autolathe" flick("autolathe_n",src) - spawn(16) + spawn(16/coeff) use_power(power) - spawn(16) + spawn(16/coeff) use_power(power) - spawn(16) - src.m_amount -= template.m_amt*multiplier - src.g_amount -= template.g_amt*multiplier + spawn(16/coeff) + if(template.type == /obj/item/stack) + src.m_amount -= template.m_amt*multiplier + src.g_amount -= template.g_amt*multiplier + var/obj/new_item = new template.type(T) + var/obj/item/stack/S = new_item + S.amount = multiplier + else + src.m_amount -= template.m_amt/coeff + src.g_amount -= template.g_amt/coeff + var/obj/new_item = new template.type(T) + new_item.m_amt /= coeff + new_item.g_amt /= coeff if(src.m_amount < 0) src.m_amount = 0 if(src.g_amount < 0) src.g_amount = 0 - var/obj/new_item = new template.type(T) - if (multiplier>1) - var/obj/item/stack/S = new_item - S.amount = multiplier busy = 0 src.updateUsrDialog() if(href_list["act"]) @@ -319,11 +335,14 @@ var/global/list/autolathe_recipes_hidden = list( \ RefreshParts() ..() var/tot_rating = 0 + prod_coeff = 0 for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts) tot_rating += MB.rating tot_rating *= 25000 max_m_amount = tot_rating * 2 max_g_amount = tot_rating + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + prod_coeff += M.rating - 1 New() ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 2498538e4f2..21b4645e918 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -18,6 +18,8 @@ var/mess = 0 //Need to clean out it if it's full of exploded clone. var/attempting = 0 //One clone attempt at a time thanks var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk + var/speed_coeff + var/efficiency /obj/machinery/clonepod/New() ..() @@ -30,7 +32,16 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/cable_coil(src, 1) component_parts += new /obj/item/weapon/cable_coil(src, 1) + RefreshParts() +/obj/machinery/clonepod/RefreshParts() + speed_coeff = 0 + efficiency = 0 + for(var/obj/item/weapon/stock_parts/scanning_module/S in component_parts) + efficiency += S.rating + for(var/obj/item/weapon/stock_parts/manipulator/P in component_parts) + speed_coeff += P.rating + heal_level = (efficiency * 15) + 10 //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. @@ -132,8 +143,6 @@ return 0 - src.heal_level = rand(50,90) //Randomizes what health the clone is when ejected - src.attempting = 1 //One at a time!! src.locked = 1 @@ -150,8 +159,8 @@ src.icon_state = "pod_1" //Get the clone body ready - H.adjustCloneLoss(src.heal_level + 100) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite - H.adjustBrainLoss(heal_level) + H.adjustCloneLoss(190) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite + H.adjustBrainLoss(190) H.Paralyse(4) //Here let's calculate their health so the pod doesn't immediately eject them!!! @@ -178,7 +187,13 @@ // -- End mode specific stuff hardset_dna(H, ui, se, null, mrace) - randmutb(H) //Sometimes the clones come out wrong. + if(efficiency > 2) + for(var/A in bad_se_blocks) + setblock(H.dna.struc_enzymes, A, construct_block(0,2)) + if(efficiency > 5 && prob(20)) + randmutg(H) + if(efficiency < 3 && prob(50)) + randmutb(H) if(H.gender == MALE) H.facial_hair_style = "Full Beard" @@ -206,14 +221,15 @@ src.connected_message("Clone Rejected: Deceased.") return - else if(src.occupant.cloneloss > src.heal_level) + else if(src.occupant.cloneloss > (100 - src.heal_level)) + world.log << "This works" src.occupant.Paralyse(4) //Slowly get that clone healed and finished. - src.occupant.adjustCloneLoss(-heal_level/50) + src.occupant.adjustCloneLoss(-((speed_coeff/2))) //Premature clones may have brain damage. - src.occupant.adjustBrainLoss(-heal_level/100) + src.occupant.adjustBrainLoss(-((speed_coeff/2))) //So clones don't die of oxyloss in a running pod. if (src.occupant.reagents.get_reagent_amount("inaprovaline") < 30) @@ -222,7 +238,7 @@ use_power(7500) //This might need tweaking. return - else if((src.occupant.cloneloss <= src.heal_level) && (!src.eject_wait)) + else if((src.occupant.cloneloss <= (100 - src.heal_level)) && (!src.eject_wait)) src.connected_message("Cloning Process Complete.") src.locked = 0 src.go_out() @@ -350,7 +366,7 @@ return /obj/machinery/clonepod/emp_act(severity) - if(prob(100/severity)) malfunction() + if(prob(100/(severity*efficiency))) malfunction() ..() /obj/machinery/clonepod/ex_act(severity) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 5400185bd75..c83680469cc 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -15,6 +15,7 @@ var/datum/data/record/active_record = null var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything. var/loading = 0 // Nice loading text + var/autoprocess = 0 /obj/machinery/computer/cloning/New() ..() @@ -23,6 +24,19 @@ return return +/obj/machinery/computer/cloning/process() + if(!(scanner && pod1 && autoprocess)) + return + + if(scanner.occupant && (scanner.scan_level > 2)) + scan_mob(scanner.occupant) + + if(!(pod1.occupant || pod1.mess) && (pod1.efficiency > 5)) + for(var/datum/data/record/R in records) + if(!(pod1.occupant || pod1.mess)) + if(pod1.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"])) + records -= R + /obj/machinery/computer/cloning/proc/updatemodules() src.scanner = findscanner() src.pod1 = findcloner() @@ -82,7 +96,13 @@ var/dat = "" dat += "Refresh" - + if(scanner && pod1 && ((scanner.scan_level > 2) || (pod1.efficiency > 5))) + if(!autoprocess) + dat += "Autoprocess" + else + dat += "Stop autoprocess" + else + dat += "Autoprocess" dat += "

    Cloning Pod Status

    " dat += "
    [temp] 
    " @@ -200,7 +220,14 @@ if(loading) return - if ((href_list["scan"]) && (!isnull(src.scanner))) + if(href_list["task"]) + switch(href_list["task"]) + if("autoprocess") + autoprocess = 1 + if("stopautoprocess") + autoprocess = 0 + + else if ((href_list["scan"]) && (!isnull(src.scanner))) scantemp = "" loading = 1 @@ -296,7 +323,7 @@ temp = "Clonepod malfunction." else if(!config.revival_cloning) temp = "Unable to initiate cloning cycle." - else if(pod1.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"])) + else if(pod1.growclone(null, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"])) temp = "[C.fields["name"]] => Cloning cycle in progress..." records.Remove(C) if(active_record == C) @@ -322,10 +349,10 @@ if (!subject.getorgan(/obj/item/organ/brain)) scantemp = "No signs of intelligence detected." return - if (subject.suiciding == 1) + if (subject.suiciding == 1 && src.scanner.scan_level < 2) scantemp = "Subject's brain is not responding to scanning stimuli." return - if (NOCLONE in subject.mutations) + if (NOCLONE in subject.mutations && src.scanner.scan_level < 2) scantemp = "Subject no longer contains the fundamental materials required to create a living clone." return if ((!subject.ckey) || (!subject.client)) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 2f30bef8818..76dfa89f9e8 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -13,12 +13,32 @@ var/circuitboard = "/obj/item/weapon/circuitboard/cyborgrecharger" var/locked = 1 req_access = list(access_robotics) + var/recharge_speed + var/repairs /obj/machinery/recharge_station/New() ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/cell/high(src) + RefreshParts() build_icon() +/obj/machinery/recharge_station/RefreshParts() + recharge_speed = 0 + repairs = 0 + for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) + recharge_speed += C.rating * 100 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + repairs += M.rating - 1 + for(var/obj/item/weapon/cell/C in component_parts) + recharge_speed *= C.maxcharge / 10000 + + /obj/machinery/recharge_station/process() if(!(NOPOWER|BROKEN)) return @@ -230,22 +250,25 @@ /obj/machinery/recharge_station/proc/process_occupant() if(occupant) restock_modules() + if(repairs) + occupant.heal_organ_damage(repairs, repairs - 1) if(occupant.cell) if(occupant.cell.charge >= occupant.cell.maxcharge) occupant.cell.charge = occupant.cell.maxcharge else - occupant.cell.charge = min(occupant.cell.charge + 200, occupant.cell.maxcharge) + occupant.cell.charge = min(occupant.cell.charge + recharge_speed, occupant.cell.maxcharge) /obj/machinery/recharge_station/proc/restock_modules() if(occupant) if(occupant.module && occupant.module.modules) var/list/um = occupant.contents|occupant.module.modules // ^ makes sinle list of active (occupant.contents) and inactive modules (occupant.module.modules) + var/coeff = recharge_speed / 200 for(var/obj/O in um) // Engineering if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/rods) || istype(O,/obj/item/weapon/cable_coil)|| istype(O,/obj/item/stack/tile/plasteel)) if(O:amount < 50) - O:amount += 1 + O:amount += coeff // Security if(istype(O,/obj/item/device/flash)) if(O:broken) @@ -254,7 +277,7 @@ O:icon_state = "flash" if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg)) if(O:power_supply.charge < O:power_supply.maxcharge) - O:power_supply.give(O:charge_cost) + O:power_supply.give(O:charge_cost * coeff) O:update_icon() else O:charge_tick = 0 @@ -265,16 +288,18 @@ //Service if(istype(O,/obj/item/weapon/reagent_containers/food/condiment/enzyme)) if(O.reagents.get_reagent_amount("enzyme") < 50) - O.reagents.add_reagent("enzyme", 2) + O.reagents.add_reagent("enzyme", 2 * coeff) //Medical if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot)) var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume)) - B.reagents.add_reagent(B.reagent, 2) + B.reagents.add_reagent(B.reagent, 2 * coeff) //Janitor if(istype(O, /obj/item/device/lightreplacer)) var/obj/item/device/lightreplacer/LR = O - LR.Charge(occupant) + var/i = 1 + for(1, i < coeff, i++) + LR.Charge(occupant) if(occupant) if(occupant.module) @@ -285,6 +310,6 @@ if(istype(occupant.module.emag, /obj/item/weapon/reagent_containers/spray)) var/obj/item/weapon/reagent_containers/spray/S = occupant.module.emag if(S.name == "polyacid spray") - S.reagents.add_reagent("pacid", 2) + S.reagents.add_reagent("pacid", 2 * coeff) else if(S.name == "lube spray") - S.reagents.add_reagent("lube", 2) + S.reagents.add_reagent("lube", 2 * coeff) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index f8569d10924..edbbf4fd5f4 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -55,6 +55,7 @@ display round(lastgen) and plasmatank amount var/power_gen = 5000 var/recent_fault = 0 var/power_output = 1 + var/consumption = 0 /obj/machinery/power/port_gen/proc/HasFuel() //Placeholder for fuel check. return 1 @@ -129,15 +130,19 @@ display round(lastgen) and plasmatank amount /obj/machinery/power/port_gen/pacman/RefreshParts() var/temp_rating = 0 var/temp_reliability = 0 + var/consumption_coeff = 0 for(var/obj/item/weapon/stock_parts/SP in component_parts) if(istype(SP, /obj/item/weapon/stock_parts/matter_bin)) max_sheets = SP.rating * SP.rating * 50 - else if(istype(SP, /obj/item/weapon/stock_parts/micro_laser) || istype(SP, /obj/item/weapon/stock_parts/capacitor)) + else if(istype(SP, /obj/item/weapon/stock_parts/capacitor)) temp_rating += SP.rating + else + consumption_coeff += SP.rating for(var/obj/item/weapon/CP in component_parts) temp_reliability += CP.reliability reliability = min(round(temp_reliability / 4), 100) - power_gen = round(initial(power_gen) * (max(2, temp_rating) / 2)) + power_gen = round(initial(power_gen) * temp_rating * 2) + consumption = consumption_coeff /obj/machinery/power/port_gen/pacman/examine() ..() @@ -160,7 +165,7 @@ display round(lastgen) and plasmatank amount sheets -= amount /obj/machinery/power/port_gen/pacman/UseFuel() - var/needed_sheets = 1 / (time_per_sheet / power_output) + var/needed_sheets = 1 / (time_per_sheet * consumption / power_output) var/temp = min(needed_sheets, sheet_left) needed_sheets -= temp sheet_left -= temp @@ -175,9 +180,9 @@ display round(lastgen) and plasmatank amount var/bias = 0 if (power_output > 4) upper_limit = 400 - bias = power_output * 3 + bias = power_output - consumption * (4 - consumption) if (heat < lower_limit) - heat += 3 + heat += 4 - consumption else heat += rand(-7 + bias, 7 + bias) if (heat < lower_limit) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 5ac1762d266..90528dac641 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -13,6 +13,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). var/gold_amount = 0 var/diamond_amount = 0 var/max_material_amount = 75000.0 + var/efficiency_coeff New() ..() @@ -35,7 +36,10 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating max_material_amount = T * 75000.0 - + T = 0 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + T += M.rating + efficiency_coeff = T-1 blob_act() if (prob(50)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index e2a80bdd9d8..ec427f65ac4 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -22,7 +22,7 @@ The currently supporting non-reagent materials: Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. Design Guidlines -- The reliability formula for all R&D built items is reliability_base (a fixed number) + total tech levels required to make it + +- The reliability formula for all R&D built items is reliability (a fixed number) + total tech levels required to make it + reliability_mod (starts at 0, gets improved through experimentation). Example: PACMAN generator. 79 base reliablity + 6 tech (3 plasmatech, 3 powerstorage) + 0 (since it's completely new) = 85% reliability. Reliability is the chance it works CORRECTLY. - When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed. @@ -43,9 +43,7 @@ datum/design //Datum for object designs, used in construction var/name = "Name" //Name of the created object. var/desc = "Desc" //Description of the created object. var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols - var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements. - var/reliability_mod = 0 //Reliability modifier of the device at it's starting point. - var/reliability_base = 100 //Base reliability of a device before modifiers. + var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements. //Reliability modifier of the device at it's starting point. var/reliability = 100 //Reliability of the device. var/build_type = null //Flag as to what kind machine the design is built in. See defines. var/list/materials = list() //List of materials. Format: "id" = amount. @@ -57,11 +55,11 @@ datum/design //Datum for object designs, used in construction //A proc to calculate the reliability of a design based on tech levels and innate modifiers. //Input: A list of /datum/tech; Output: The new reliabilty. datum/design/proc/CalcReliability(var/list/temp_techs) - var/new_reliability = reliability_mod + reliability_base + var/new_reliability for(var/datum/tech/T in temp_techs) if(T.id in req_tech) new_reliability += T.level - new_reliability = Clamp(new_reliability, reliability_base, 100) + new_reliability = Clamp(new_reliability, reliability, 100) reliability = new_reliability return @@ -996,7 +994,7 @@ datum/design/super_capacitor id = "super_capacitor" req_tech = list("powerstorage" = 5, "materials" = 4) build_type = PROTOLATHE - reliability_base = 71 + reliability = 71 materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) build_path = "/obj/item/weapon/stock_parts/capacitor/super" @@ -1007,7 +1005,7 @@ datum/design/phasic_scanning req_tech = list("magnets" = 5, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) - reliability_base = 72 + reliability = 72 build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" datum/design/pico_mani @@ -1017,7 +1015,7 @@ datum/design/pico_mani req_tech = list("materials" = 5, "programming" = 2) build_type = PROTOLATHE materials = list("$metal" = 30) - reliability_base = 73 + reliability = 73 build_path = "/obj/item/weapon/stock_parts/manipulator/pico" datum/design/ultra_micro_laser @@ -1027,7 +1025,7 @@ datum/design/ultra_micro_laser req_tech = list("magnets" = 5, "materials" = 5) build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) - reliability_base = 70 + reliability = 70 build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" datum/design/super_matter_bin @@ -1037,7 +1035,7 @@ datum/design/super_matter_bin req_tech = list("materials" = 5) build_type = PROTOLATHE materials = list("$metal" = 80) - reliability_base = 75 + reliability = 75 build_path = "/obj/item/weapon/stock_parts/matter_bin/super" @@ -1134,7 +1132,7 @@ datum/design/super_cell desc = "A power cell that holds 20000 units of energy" id = "super_cell" req_tech = list("powerstorage" = 3, "materials" = 2) - reliability_base = 75 + reliability = 75 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) build_path = "/obj/item/weapon/cell/super" @@ -1145,7 +1143,7 @@ datum/design/hyper_cell desc = "A power cell that holds 30000 units of energy" id = "hyper_cell" req_tech = list("powerstorage" = 5, "materials" = 4) - reliability_base = 70 + reliability = 70 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) build_path = "/obj/item/weapon/cell/hyper" @@ -1247,7 +1245,7 @@ datum/design/pacman id = "pacman" req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER - reliability_base = 79 + reliability = 79 materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/pacman" @@ -1257,7 +1255,7 @@ datum/design/superpacman id = "superpacman" req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) build_type = IMPRINTER - reliability_base = 76 + reliability = 76 materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/pacman/super" @@ -1267,7 +1265,7 @@ datum/design/mrspacman id = "mrspacman" req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5) build_type = IMPRINTER - reliability_base = 74 + reliability = 74 materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/pacman/mrs" @@ -1283,7 +1281,7 @@ datum/design/mass_spectrometer req_tech = list("biotech" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/device/mass_spectrometer" datum/design/adv_mass_spectrometer @@ -1293,7 +1291,7 @@ datum/design/adv_mass_spectrometer req_tech = list("biotech" = 2, "magnets" = 4) build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 + reliability = 74 build_path = "/obj/item/device/mass_spectrometer/adv" datum/design/mmi @@ -1303,7 +1301,7 @@ datum/design/mmi req_tech = list("programming" = 2, "biotech" = 3) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/device/mmi" category = "Misc" @@ -1314,7 +1312,7 @@ datum/design/mmi_radio req_tech = list("programming" = 2, "biotech" = 4) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) - reliability_base = 74 + reliability = 74 build_path = "/obj/item/device/mmi/radio_enabled" category = "Misc" @@ -1325,7 +1323,7 @@ datum/design/synthetic_flash req_tech = list("magnets" = 3, "combat" = 2) build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/device/flash/synthetic" category = "Misc" @@ -1336,7 +1334,7 @@ datum/design/bluespacebeaker req_tech = list("bluespace" = 2, "materials" = 6) build_type = PROTOLATHE materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" category = "Misc" @@ -1347,7 +1345,7 @@ datum/design/noreactbeaker req_tech = list("materials" = 2) build_type = PROTOLATHE materials = list("$metal" = 3000) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" category = "Misc" @@ -1362,7 +1360,7 @@ datum/design/nuclear_gun req_tech = list("combat" = 3, "materials" = 5, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/weapon/gun/energy/gun/nuclear" locked = 1 @@ -1403,7 +1401,7 @@ datum/design/chemsprayer req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) - reliability_base = 100 + reliability = 100 build_path = "/obj/item/weapon/chemsprayer" */ datum/design/rapidsyringe @@ -1450,7 +1448,7 @@ datum/design/large_grenade req_tech = list("combat" = 3, "materials" = 2) build_type = PROTOLATHE materials = list("$metal" = 3000) - reliability_base = 79 + reliability = 79 build_path = "/obj/item/weapon/grenade/chem_grenade/large" datum/design/smg @@ -1529,7 +1527,7 @@ datum/design/plasmacutter req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3) build_type = PROTOLATHE materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500) - reliability_base = 79 + reliability = 79 build_path = "/obj/item/weapon/pickaxe/plasmacutter" datum/design/pick_diamond @@ -1548,7 +1546,7 @@ datum/design/drill_diamond req_tech = list("materials" = 6, "powerstorage" = 4, "engineering" = 4) build_type = PROTOLATHE materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. - reliability_base = 79 + reliability = 79 build_path = "/obj/item/weapon/pickaxe/diamonddrill" datum/design/mesons @@ -1580,7 +1578,7 @@ datum/design/bag_holding req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) - reliability_base = 80 + reliability = 80 build_path = "/obj/item/weapon/storage/backpack/holding" datum/design/bluespace_crystal @@ -1590,7 +1588,7 @@ datum/design/bluespace_crystal req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE materials = list("$diamond" = 1500, "$plasma" = 1500) - reliability_base = 100 + reliability = 100 build_path = "/obj/item/bluespace_crystal/artificial" ///////////////////////////////////////// diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index bee0c198916..c0d7d862032 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -25,8 +25,7 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/r_n_d/destructive_analyzer/RefreshParts() var/T = 0 for(var/obj/item/weapon/stock_parts/S in src) - T += S.rating * 0.1 - T = Clamp(T, 0, 1) + T += S.rating decon_mod = T /obj/machinery/r_n_d/destructive_analyzer/meteorhit() @@ -72,7 +71,7 @@ Note: Must be placed within 3 tiles of the R&D Console if (temp_tech.len == 0) user << "\red You cannot deconstruct this item!" return - if(O.reliability < 90 && O.crit_fail == 0) + if(O.reliability < (99-(decon_mod*3)) && O.crit_fail == 0) usr << "\red Item is neither reliable enough or broken enough to learn from." return busy = 1 diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index ec908f22d73..1e09063ca1d 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -22,6 +22,7 @@ Note: Must be placed west/left of and R&D console to function. var/diamond_amount = 0.0 var/clown_amount = 0.0 var/adamantine_amount = 0.0 + var/efficiency_coeff /obj/machinery/r_n_d/protolathe/New() @@ -50,6 +51,10 @@ Note: Must be placed west/left of and R&D console to function. for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating max_material_storage = T * 75000 + T = 0 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + T += M.rating + efficiency_coeff = T-1 /obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob) if (shocked) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 21f40240320..ac9743cd52e 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -256,15 +256,15 @@ won't update every console in existence) but it's more of a hassle to do. Also, usr <<"\red The destructive analyzer appears to be empty." screen = 1.0 return - if(linked_destroy.loaded_item.reliability >= 90) + if(linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) - files.UpdateTech(T, temp_tech[T]) - if(linked_destroy.loaded_item.reliability < 100 && linked_destroy.loaded_item.crit_fail) - files.UpdateDesign(linked_destroy.loaded_item.type) + if(prob(linked_destroy.loaded_item.reliability)) + files.UpdateTech(T, temp_tech[T]) + files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. - linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*linked_destroy.decon_mod)) - linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*linked_destroy.decon_mod)) + linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10))) + linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10))) linked_destroy.loaded_item = null for(var/obj/I in linked_destroy.contents) for(var/mob/M in I.contents) @@ -326,6 +326,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, sync = !sync else if(href_list["build"]) //Causes the Protolathe to build something. + var/coeff = linked_lathe.efficiency_coeff var/g2g = 1 if(linked_lathe) var/datum/design/being_built = null @@ -351,23 +352,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, break switch(M) if("$metal") - linked_lathe.m_amount = max(0, (linked_lathe.m_amount-being_built.materials[M])) + linked_lathe.m_amount = max(0, (linked_lathe.m_amount-(being_built.materials[M]/coeff))) if("$glass") - linked_lathe.g_amount = max(0, (linked_lathe.g_amount-being_built.materials[M])) + linked_lathe.g_amount = max(0, (linked_lathe.g_amount-(being_built.materials[M]/coeff))) if("$gold") - linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-being_built.materials[M])) + linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-(being_built.materials[M]/coeff))) if("$silver") - linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-being_built.materials[M])) + linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-(being_built.materials[M]/coeff))) if("$plasma") - linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-being_built.materials[M])) + linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(being_built.materials[M]/coeff))) if("$uranium") - linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M])) + linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-(being_built.materials[M]/coeff))) if("$diamond") - linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M])) + linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(being_built.materials[M]/coeff))) if("$clown") - linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M])) + linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-(being_built.materials[M]/coeff))) else - linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) + linked_lathe.reagents.remove_reagent(M, being_built.materials[M]/coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/R = being_built.reliability @@ -378,6 +379,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, if( new_item.type == /obj/item/weapon/storage/backpack/holding ) new_item.investigate_log("built by [key]","singulo") new_item.reliability = R + new_item.m_amt /= coeff + new_item.g_amt /= coeff if(linked_lathe.hacked) R = max((reliability / 2), 0) if(O) var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) @@ -390,6 +393,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, updateUsrDialog() else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something. + var/coeff = 2 ** linked_imprinter.efficiency_coeff if(linked_imprinter) var/datum/design/being_built = null for(var/datum/design/D in files.known_designs) @@ -409,20 +413,19 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/M in being_built.materials) switch(M) if("$glass") - linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M])) + linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M]/coeff)) if("$gold") - linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M])) + linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M]/coeff)) if("$diamond") - linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M])) + linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M]/coeff)) else - linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]) + linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]/coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/R = being_built.reliability spawn(16) var/obj/new_item = new P(src) new_item.reliability = R - if(linked_imprinter.hacked) R = max((reliability / 2), 0) new_item.loc = linked_imprinter.loc linked_imprinter.busy = 0 screen = 4.1 @@ -533,23 +536,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/check_mat(datum/design/being_built, var/M) switch(M) if("$metal") - return (linked_lathe.m_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.m_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$glass") - return (linked_lathe.g_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.g_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$gold") - return (linked_lathe.gold_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.gold_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$silver") - return (linked_lathe.silver_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.silver_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$plasma") - return (linked_lathe.plasma_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.plasma_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$uranium") - return (linked_lathe.uranium_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.uranium_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$diamond") - return (linked_lathe.diamond_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.diamond_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$clown") - return (linked_lathe.clown_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.clown_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 else - return linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) + return linked_lathe.reagents.remove_reagent(M, (being_built.materials[M]/linked_lathe.efficiency_coeff)) /obj/machinery/computer/rdconsole/attack_hand(mob/user as mob) if(..()) @@ -708,6 +711,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu
    " dat += "Deconstruction Menu
    " dat += "Name: [linked_destroy.loaded_item.name]
    " + dat += "Reliability: [linked_destroy.loaded_item.reliability]
    " dat += "Origin Tech:
    " var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) @@ -727,32 +731,33 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Protolathe Menu:

    " dat += "Material Amount: [linked_lathe.TotalMaterials()] cm3 (MAX: [linked_lathe.max_material_storage])
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] (MAX: [linked_lathe.reagents.maximum_volume])
    " + var/coeff = linked_lathe.efficiency_coeff for(var/datum/design/D in files.known_designs) if(!(D.build_type & PROTOLATHE)) continue var/temp_dat = "[D.name]" var/check_materials = 1 for(var/M in D.materials) - temp_dat += " [D.materials[M]] [CallMaterialName(M)]" + temp_dat += " [D.materials[M]/coeff] [CallMaterialName(M)]" if(copytext(M, 1, 2) == "$") switch(M) if("$glass") - if(D.materials[M] > linked_lathe.g_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.g_amount) check_materials = 0 if("$metal") - if(D.materials[M] > linked_lathe.m_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.m_amount) check_materials = 0 if("$gold") - if(D.materials[M] > linked_lathe.gold_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.gold_amount) check_materials = 0 if("$silver") - if(D.materials[M] > linked_lathe.silver_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.silver_amount) check_materials = 0 if("$plasma") - if(D.materials[M] > linked_lathe.plasma_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.plasma_amount) check_materials = 0 if("$uranium") - if(D.materials[M] > linked_lathe.uranium_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.uranium_amount) check_materials = 0 if("$diamond") - if(D.materials[M] > linked_lathe.diamond_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.diamond_amount) check_materials = 0 if("$clown") - if(D.materials[M] > linked_lathe.clown_amount) check_materials = 0 - else if (!linked_lathe.reagents.has_reagent(M, D.materials[M])) + if(D.materials[M]/coeff > linked_lathe.clown_amount) check_materials = 0 + else if (!linked_lathe.reagents.has_reagent(M, D.materials[M]/coeff)) check_materials = 0 if (check_materials) dat += "* [temp_dat]
    " @@ -840,23 +845,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Circuit Imprinter Menu:

    " dat += "Material Amount: [linked_imprinter.TotalMaterials()] cm3
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " - + var/coeff = 2 ** linked_imprinter.efficiency_coeff for(var/datum/design/D in files.known_designs) if(!(D.build_type & IMPRINTER)) continue var/temp_dat = "[D.name]" var/check_materials = 1 for(var/M in D.materials) - temp_dat += " [D.materials[M]] [CallMaterialName(M)]" + temp_dat += " [D.materials[M]/coeff] [CallMaterialName(M)]" if(copytext(M, 1, 2) == "$") switch(M) if("$glass") - if(D.materials[M] > linked_imprinter.g_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_imprinter.g_amount) check_materials = 0 if("$gold") - if(D.materials[M] > linked_imprinter.gold_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_imprinter.gold_amount) check_materials = 0 if("$diamond") - if(D.materials[M] > linked_imprinter.diamond_amount) check_materials = 0 - else if (!linked_imprinter.reagents.has_reagent(M, D.materials[M])) + if(D.materials[M]/coeff > linked_imprinter.diamond_amount) check_materials = 0 + else if (!linked_imprinter.reagents.has_reagent(M, D.materials[M]/coeff)) check_materials = 0 if (check_materials) dat += "* [temp_dat]
    " diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 7938720c0c9..f65bbad5142 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -118,8 +118,8 @@ research holder datum. /datum/research/proc/AddDesign2Known(var/datum/design/D) for(var/datum/design/known in known_designs) if(D.id == known.id) - if(D.reliability_mod > known.reliability_mod) - known.reliability_mod = D.reliability_mod + if(D.reliability > known.reliability) + known.reliability = D.reliability return known_designs += D return @@ -144,17 +144,20 @@ research holder datum. /datum/research/proc/UpdateTech(var/ID, var/level) for(var/datum/tech/KT in known_tech) if(KT.id == ID) - if(KT.level <= level) KT.level = max((KT.level + 1), (level - 1)) + if(KT.level <= level) + KT.level = max((KT.level + 1), (level - 1)) return -/datum/research/proc/UpdateDesign(var/path) - for(var/datum/design/KD in known_designs) - if(KD.build_path == path) - KD.reliability_mod += rand(1,2) - break - return - - +/datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech) + for(var/T in temp_tech) + if(temp_tech[T] - 1 >= known_tech[T]) + for(var/datum/design/D in known_designs) + if(D.req_tech[T]) + D.reliability = min(100, D.reliability + prob(35)) + if(D.build_path == I.type) + D.reliability = min(100, D.reliability + rand(1,3)) + if(I.crit_fail) + D.reliability = min(100, D.reliability + rand(3, 5)) /*************************************************************** diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index b90917b53e1..4c4daca528d 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -250,7 +250,6 @@ if(choice == "Continue") for(var/datum/design/D in temp_server.files.known_designs) if(D.id == href_list["reset_design"]) - D.reliability_mod = 0 temp_server.files.known_designs -= D break temp_server.files.RefreshResearch() From 173e1cb391532be374ebbae13d00aa2afb34050d Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 23 Dec 2013 17:56:58 +0000 Subject: [PATCH 257/315] * Refactored gib() and dust() * Refactored ex_act(), for mobs, a little. * Removed the code which gibbed dead bodies with any severity. --- code/modules/mob/dead/death.dm | 2 +- code/modules/mob/death.dm | 47 +------------- code/modules/mob/living/carbon/alien/death.dm | 48 ++++---------- .../living/carbon/alien/humanoid/humanoid.dm | 13 +--- .../mob/living/carbon/alien/larva/larva.dm | 13 +--- code/modules/mob/living/carbon/brain/death.dm | 22 +------ code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 44 +++---------- code/modules/mob/living/carbon/human/human.dm | 17 +---- .../mob/living/carbon/metroid/metroid.dm | 10 +-- .../modules/mob/living/carbon/monkey/death.dm | 44 ++----------- .../mob/living/carbon/monkey/monkey.dm | 27 ++------ code/modules/mob/living/death.dm | 62 +++++++++++++++++++ code/modules/mob/living/living.dm | 3 + code/modules/mob/living/silicon/ai/ai.dm | 9 +-- code/modules/mob/living/silicon/death.dm | 41 ++---------- code/modules/mob/living/silicon/pai/pai.dm | 5 +- .../modules/mob/living/silicon/robot/death.dm | 49 ++++----------- .../modules/mob/living/silicon/robot/robot.dm | 20 ++---- .../mob/living/simple_animal/simple_animal.dm | 6 +- tgstation.dme | 1 + 21 files changed, 139 insertions(+), 346 deletions(-) create mode 100644 code/modules/mob/living/death.dm diff --git a/code/modules/mob/dead/death.dm b/code/modules/mob/dead/death.dm index 7c827e55ffe..784b114690f 100644 --- a/code/modules/mob/dead/death.dm +++ b/code/modules/mob/dead/death.dm @@ -1,5 +1,5 @@ /mob/dead/dust() //ghosts can't be vaporised. return -/mob/dead/gib() //ghosts can't be gibbed. +/mob/dead/gib(var/animation = 1) //ghosts can't be gibbed. return diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index d0c60fb4609..90c3bb529b7 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -1,54 +1,13 @@ //This is the proc for gibbing a mob. Cannot gib ghosts. //added different sort of gibs and animations. N /mob/proc/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - gibs(loc, viruses) - - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) - + return //This is the proc for turning a mob into ash. Mostly a copy of gib code (above). //Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here. //Dusting robots does not eject the MMI, so it's a bit more powerful than gib() /N /mob/proc/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("dust-m", animation) - new /obj/effect/decal/cleanable/ash(loc) - - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) - + return /mob/proc/death(gibbed) - timeofdeath = world.time - - living_mob_list -= src - dead_mob_list += src - return ..(gibbed) + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 0f9607f16b7..e8c0ac96c79 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -1,41 +1,17 @@ -/mob/living/carbon/alien/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("gibbed-a", animation) +/mob/living/carbon/alien/spawn_gibs() xgibs(loc, viruses) - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/carbon/alien/gib_animation(var/animate) + ..(animate, "gibbed-a") -/mob/living/carbon/alien/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("dust-a", animation) +/mob/living/carbon/alien/spawn_dust() new /obj/effect/decal/remains/xeno(loc) - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/carbon/alien/spawn_dust() + new /obj/effect/decal/remains/xeno(loc) + +/mob/living/carbon/alien/dust_animation(var/animate) + ..(animate, "dust-a") + +/mob/living/carbon/alien/dust(var/animation = 1) + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 0ea869a2aec..a3dedef0122 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -59,17 +59,7 @@ ..() /mob/living/carbon/alien/humanoid/ex_act(severity) - if(!blinded) - flick("flash", flash) - - if (stat == 2 && client) - gib() - return - - else if (stat == 2 && !client) - xgibs(loc, viruses) - del(src) - return + ..() var/shielded = 0 @@ -77,7 +67,6 @@ var/f_loss = null switch (severity) if (1.0) - b_loss += 500 gib() return diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 272ed81d3b8..7f88fb56c6b 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -55,23 +55,12 @@ /mob/living/carbon/alien/larva/ex_act(severity) - if(!blinded) - flick("flash", flash) - - if (stat == 2 && client) - gib() - return - - else if (stat == 2 && !client) - gibs(loc, viruses) - del(src) - return + ..() var/b_loss = null var/f_loss = null switch (severity) if (1.0) - b_loss += 500 gib() return diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 7f5c308efaa..c39f1039943 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -19,28 +19,10 @@ return ..(gibbed) -/mob/living/carbon/brain/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("gibbed-m", animation) - gibs(loc, viruses, dna) - - dead_mob_list -= src +/mob/living/carbon/brain/gib(var/animation = 0) if(container && istype(container, /obj/item/device/mmi)) del(container)//Gets rid of the MMI if there is one if(loc) if(istype(loc,/obj/item/organ/brain)) del(loc)//Gets rid of the brain item - spawn(15) - if(animation) del(animation) - if(src) del(src) \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4f829ca40be..56903541193 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -38,7 +38,7 @@ stomach_contents.Remove(A) src.gib() -/mob/living/carbon/gib() +/mob/living/carbon/gib(var/animation = 1) for(var/mob/M in src) if(M in stomach_contents) stomach_contents.Remove(M) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index b11fa29d273..978b9b9729e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,44 +1,18 @@ -/mob/living/carbon/human/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 +/mob/living/carbon/human/gib_animation(var/animate) + ..(animate, "gibbed-h") - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src +/mob/living/carbon/human/dust_animation(var/animate) + ..(animate, "dust-h") - flick("gibbed-h", animation) +/mob/living/carbon/human/dust(var/animation = 1) + ..() + +/mob/living/carbon/human/spawn_gibs() hgibs(loc, viruses, dna) - spawn(15) - if(animation) del(animation) - if(src) del(src) - -/mob/living/carbon/human/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("dust-h", animation) +/mob/living/carbon/human/spawn_dust() new /obj/effect/decal/remains/human(loc) - spawn(15) - if(animation) del(animation) - if(src) del(src) - - /mob/living/carbon/human/death(gibbed) if(stat == DEAD) return if(healths) healths.icon_state = "health5" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 50ce92f4b6f..3eb9e044d4f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -129,20 +129,7 @@ /mob/living/carbon/human/ex_act(severity) - if(!blinded) - flick("flash", flash) - -// /obj/item/clothing/suit/bomb_suit(src) -// /obj/item/clothing/head/bomb_hood(src) - - if (stat == 2 && client) - gib() - return - - else if (stat == 2 && !client) - gibs(loc, viruses) - del(src) - return + ..() var/shielded = 0 var/b_loss = null @@ -480,4 +467,4 @@ . = 0 if(!. && error_msg && user) // Might need re-wording. - user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"]." + user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"]." diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 45f6d940dc4..6ef25327102 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -210,19 +210,13 @@ ..() /mob/living/carbon/slime/ex_act(severity) - - if (stat == 2 && client) - return - - else if (stat == 2 && !client) - del(src) - return + ..() var/b_loss = null var/f_loss = null switch (severity) if (1.0) - b_loss += 500 + del(src) return if (2.0) diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index a13342620cb..2aa321ffdee 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,43 +1,11 @@ -/mob/living/carbon/monkey/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 +/mob/living/carbon/monkey/gib_animation(var/animate) + ..(animate, "gibbed-m") - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("gibbed-m", animation) - gibs(loc, viruses, dna) - - spawn(15) - if(animation) del(animation) - if(src) del(src) - -/mob/living/carbon/monkey/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("dust-m", animation) - new /obj/effect/decal/cleanable/ash(loc) - - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/carbon/monkey/dust_animation(var/animate) + ..(animate, "dust-m") +/mob/living/carbon/monkey/dust(var/animation = 1) + ..() /mob/living/carbon/monkey/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 5562cae73a1..8217f0df4a9 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -341,33 +341,18 @@ /mob/living/carbon/monkey/var/temperature_resistance = T0C+75 /mob/living/carbon/monkey/ex_act(severity) - if(!blinded) - flick("flash", flash) - if (stat == 2 && client) - gib() - return - - if (stat == 2 && !client) - gibs(loc, viruses) - del(src) - return + ..() switch(severity) if(1.0) - if (stat != 2) - adjustBruteLoss(200) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() + gib() + return if(2.0) - if (stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() + adjustBruteLoss(60) + adjustFireLoss(60) if(3.0) - if (stat != 2) - adjustBruteLoss(30) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() + adjustBruteLoss(30) if (prob(50)) Paralyse(10) - else return /mob/living/carbon/monkey/blob_act() diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm new file mode 100644 index 00000000000..d618319ba85 --- /dev/null +++ b/code/modules/mob/living/death.dm @@ -0,0 +1,62 @@ +/mob/living/gib(var/animation = 1) + var/prev_lying = lying + death(1) + + var/atom/movable/overlay/animate = setup_animation(animation, prev_lying) + if(animate) + gib_animation(animate) + + spawn_gibs() + + end_animation(animate) // Will del(src) + +/mob/living/proc/spawn_gibs() + gibs(loc, viruses) + +/mob/living/proc/gib_animation(var/animate, var/flick_name = "gibbed") + flick(flick_name, animate) + +/mob/living/dust(var/animation = 0) + death(1) + var/atom/movable/overlay/animate = setup_animation(animation, 0) + if(animate) + dust_animation(animate) + + spawn_dust() + end_animation(animate) + +/mob/living/proc/spawn_dust() + new /obj/effect/decal/cleanable/ash(loc) + +/mob/living/proc/dust_animation(var/animate, var/flick_name = "") + flick(flick_name, animate) + +/mob/living/death(gibbed) + timeofdeath = world.time + + living_mob_list -= src + if(!gibbed) + dead_mob_list += src + + +/mob/living/proc/setup_animation(var/animation, var/prev_lying) + var/atom/movable/overlay/animate = null + monkeyizing = 1 + canmove = 0 + icon = null + invisibility = 101 + + if(!prev_lying && animation) + animate = new(loc) + animate.icon_state = "blank" + animate.icon = 'icons/mob/mob.dmi' + animate.master = src + return animate + +/mob/living/proc/end_animation(var/animate) + if(!animate) + del(src) + else + spawn(15) + if(animate) del(animate) + if(src) del(src) \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 41a4882f910..e74a6eded7f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -14,6 +14,9 @@ src << "\blue You have given up life and succumbed to death." death() +/mob/living/ex_act(severity) + if(client && !blinded) + flick("flash", src.flash) /mob/living/proc/updatehealth() if(status_flags & GODMODE) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index eb6292fa4a5..16d00f211d9 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -305,14 +305,11 @@ var/list/ai_list = list() ..() /mob/living/silicon/ai/ex_act(severity) - if(!blinded) - flick("flash", flash) + ..() switch(severity) if(1.0) - if (stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) + gib() if(2.0) if (stat != 2) adjustBruteLoss(60) @@ -321,7 +318,7 @@ var/list/ai_list = list() if (stat != 2) adjustBruteLoss(30) - updatehealth() + return /mob/living/silicon/ai/Topic(href, href_list) diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 8e1f035ce67..bc3ed069bba 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,41 +1,8 @@ -/mob/living/silicon/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("gibbed-r", animation) +/mob/living/silicon/spawn_gibs() robogibs(loc, viruses) - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/silicon/gib(var/animation = 0) // Please don't remove this thinking this proc does nothing, it is changing the default value for animation. + ..() -/mob/living/silicon/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("dust-r", animation) +/mob/living/silicon/spawn_dust() new /obj/effect/decal/remains/robot(loc) - - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 1766c59348b..8e9a4fec80f 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -143,8 +143,7 @@ src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all." /mob/living/silicon/pai/ex_act(severity) - if(!blinded) - flick("flash", src.flash) + ..() switch(severity) if(1.0) @@ -159,7 +158,7 @@ if (src.stat != 2) adjustBruteLoss(30) - src.updatehealth() + return // See software.dm for Topic() diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 41be911e75e..1fcafeb374a 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,47 +1,22 @@ -/mob/living/silicon/robot/gib() - //robots don't die when gibbed. instead they drop their MMI'd brain - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 +/mob/living/silicon/robot/gib(var/animation = 1) + ..() - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("gibbed-r", animation) +/mob/living/silicon/robot/spawn_gibs() robogibs(loc, viruses) - living_mob_list -= src - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/silicon/robot/gib_animation(var/animate) + ..(animate, "gibbed-r") -/mob/living/silicon/robot/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 +/mob/living/silicon/robot/dust(var/animation = 1) + if(mmi) + del(mmi) + ..() - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("dust-r", animation) +/mob/living/silicon/robot/spawn_dust() new /obj/effect/decal/remains/robot(loc) - if(mmi) del(mmi) //Delete the MMI first so that it won't go popping out. - - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/silicon/robot/dust_animation(var/animate) + ..(animate, "dust-r") /mob/living/silicon/robot/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ddcf73ec5ad..7a234920db6 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -292,24 +292,12 @@ /mob/living/silicon/robot/ex_act(severity) - if(!blinded) - flick("flash", flash) - - if (stat == 2 && client) - gib() - return - - else if (stat == 2 && !client) - del(src) - return + ..() switch(severity) if(1.0) - if (stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) - gib() - return + gib() + return if(2.0) if (stat != 2) adjustBruteLoss(60) @@ -318,7 +306,7 @@ if (stat != 2) adjustBruteLoss(30) - updatehealth() + return /mob/living/silicon/robot/meteorhit(obj/O as obj) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 0b5b38906a4..a3de44be600 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -209,7 +209,7 @@ else ..() -/mob/living/simple_animal/gib() +/mob/living/simple_animal/gib(var/animation = 0) if(icon_gib) flick(icon_gib, src) if(meat_amount && meat_type) @@ -438,11 +438,9 @@ return /mob/living/simple_animal/ex_act(severity) - if(!blinded) - flick("flash", flash) + ..() switch (severity) if (1.0) - adjustBruteLoss(500) gib() return diff --git a/tgstation.dme b/tgstation.dme index cfc1a9b2115..289b8deb271 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -860,6 +860,7 @@ #include "code\modules\mob\dead\observer\observer.dm" #include "code\modules\mob\dead\observer\say.dm" #include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\death.dm" #include "code\modules\mob\living\emote.dm" #include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\living_defense.dm" From d8a6cd530f4bb955532a47970f3c07bfba4367e4 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 23 Dec 2013 22:00:43 +0400 Subject: [PATCH 258/315] Quick paths fix post haste Coderbus make me do this --- code/modules/research/designs.dm | 342 +++++++++++++++---------------- 1 file changed, 161 insertions(+), 181 deletions(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index ec427f65ac4..6adcad7b422 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -73,7 +73,7 @@ datum/design/seccamera req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/security" + build_path = /obj/item/weapon/circuitboard/security datum/design/aicore name = "Circuit Design (AI Core)" @@ -82,7 +82,7 @@ datum/design/aicore req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aicore" + build_path = /obj/item/weapon/circuitboard/aicore datum/design/aiupload name = "Circuit Design (AI Upload)" @@ -91,7 +91,7 @@ datum/design/aiupload req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aiupload" + build_path = /obj/item/weapon/circuitboard/aiupload datum/design/borgupload name = "Circuit Design (Cyborg Upload)" @@ -100,7 +100,7 @@ datum/design/borgupload req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/borgupload" + build_path = /obj/item/weapon/circuitboard/borgupload datum/design/med_data name = "Circuit Design (Medical Records)" @@ -109,7 +109,7 @@ datum/design/med_data req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/med_data" + build_path = /obj/item/weapon/circuitboard/med_data datum/design/operating name = "Circuit Design (Operating Computer)" @@ -118,7 +118,7 @@ datum/design/operating req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/operating" + build_path = /obj/item/weapon/circuitboard/operating datum/design/pandemic name = "Circuit Design (PanD.E.M.I.C. 2200)" @@ -127,7 +127,7 @@ datum/design/pandemic req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pandemic" + build_path = /obj/item/weapon/circuitboard/pandemic datum/design/scan_console name = "Circuit Design (DNA Machine)" @@ -136,7 +136,7 @@ datum/design/scan_console req_tech = list("programming" = 2, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/scan_consolenew" + build_path = /obj/item/weapon/circuitboard/scan_consolenew datum/design/comconsole name = "Circuit Design (Communications)" @@ -145,7 +145,7 @@ datum/design/comconsole req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/communications" + build_path = /obj/item/weapon/circuitboard/communications datum/design/idcardconsole name = "Circuit Design (ID Console)" @@ -154,7 +154,7 @@ datum/design/idcardconsole req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/card" + build_path = /obj/item/weapon/circuitboard/card datum/design/crewconsole name = "Circuit Design (Crew monitoring computer)" @@ -163,7 +163,7 @@ datum/design/crewconsole req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/crew" + build_path = /obj/item/weapon/circuitboard/crew datum/design/teleconsole name = "Circuit Design (Teleporter Console)" @@ -172,7 +172,7 @@ datum/design/teleconsole req_tech = list("programming" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/teleporter" + build_path = /obj/item/weapon/circuitboard/teleporter datum/design/secdata name = "Circuit Design (Security Records Console)" @@ -181,7 +181,7 @@ datum/design/secdata req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/secure_data" + build_path = /obj/item/weapon/circuitboard/secure_data datum/design/atmosalerts name = "Circuit Design (Atmosphere Alert)" @@ -190,7 +190,7 @@ datum/design/atmosalerts req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/atmos_alert" + build_path = /obj/item/weapon/circuitboard/atmos_alert datum/design/air_management name = "Circuit Design (Atmospheric Monitor)" @@ -199,18 +199,7 @@ datum/design/air_management req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/air_management" - - -datum/design/general_alert - name = "Circuit Design (Station Alert Console)" - desc = "Allows for the construction of circuit boards used to build a Station Alert console." - id = "station_alert" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/station_alert" - + build_path = /obj/item/weapon/circuitboard/air_management datum/design/robocontrol name = "Circuit Design (Robotics Control Console)" @@ -219,7 +208,7 @@ datum/design/robocontrol req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/robotics" + build_path = /obj/item/weapon/circuitboard/robotics datum/design/clonecontrol name = "Circuit Design (Cloning Machine Console)" @@ -228,7 +217,7 @@ datum/design/clonecontrol req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/cloning" + build_path = /obj/item/weapon/circuitboard/cloning datum/design/clonepod name = "Circuit Design (Clone Pod)" @@ -237,7 +226,7 @@ datum/design/clonepod req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonepod" + build_path = /obj/item/weapon/circuitboard/clonepod datum/design/clonescanner name = "Circuit Design (Cloning Scanner)" @@ -246,7 +235,7 @@ datum/design/clonescanner req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonescanner" + build_path = /obj/item/weapon/circuitboard/clonescanner datum/design/arcadebattle name = "Circuit Design (Battle Arcade Machine)" @@ -255,7 +244,7 @@ datum/design/arcadebattle req_tech = list("programming" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade/battle" + build_path = /obj/item/weapon/circuitboard/arcade/battle datum/design/orion_trail name = "Circuit Design (Orion Trail Arcade Machine)" @@ -264,7 +253,7 @@ datum/design/orion_trail req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade/orion_trail" + build_path = /obj/item/weapon/circuitboard/arcade/orion_trail datum/design/powermonitor name = "Circuit Design (Power Monitor)" @@ -273,7 +262,7 @@ datum/design/powermonitor req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/powermonitor" + build_path = /obj/item/weapon/circuitboard/powermonitor datum/design/solarcontrol name = "Circuit Design (Solar Control)" @@ -282,7 +271,7 @@ datum/design/solarcontrol req_tech = list("programming" = 2, "powerstorage" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/solar_control" + build_path = /obj/item/weapon/circuitboard/solar_control datum/design/prisonmanage name = "Circuit Design (Prisoner Management Console)" @@ -291,7 +280,7 @@ datum/design/prisonmanage req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/prisoner" + build_path = /obj/item/weapon/circuitboard/prisoner datum/design/mechacontrol name = "Circuit Design (Exosuit Control Console)" @@ -300,7 +289,7 @@ datum/design/mechacontrol req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha_control" + build_path = /obj/item/weapon/circuitboard/mecha_control datum/design/mechapower name = "Circuit Design (Mech Bay Power Control Console)" @@ -309,7 +298,7 @@ datum/design/mechapower req_tech = list("programming" = 2, "powerstorage" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mech_bay_power_console" + build_path = /obj/item/weapon/circuitboard/mech_bay_power_console datum/design/rdconsole name = "Circuit Design (R&D Console)" @@ -318,7 +307,7 @@ datum/design/rdconsole req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdconsole" + build_path = /obj/item/weapon/circuitboard/rdconsole datum/design/ordercomp name = "Circuit Design (Supply ordering console)" @@ -327,7 +316,7 @@ datum/design/ordercomp req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/ordercomp" + build_path = /obj/item/weapon/circuitboard/ordercomp datum/design/supplycomp name = "Circuit Design (Supply shuttle console)" @@ -336,7 +325,7 @@ datum/design/supplycomp req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/supplycomp" + build_path = /obj/item/weapon/circuitboard/supplycomp datum/design/mining name = "Circuit Design (Outpost Status Display)" @@ -345,7 +334,7 @@ datum/design/mining req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mining" + build_path = /obj/item/weapon/circuitboard/mining datum/design/comm_monitor name = "Circuit Design (Telecommunications Monitoring Console)" @@ -354,7 +343,7 @@ datum/design/comm_monitor req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_monitor" + build_path = /obj/item/weapon/circuitboard/comm_monitor datum/design/comm_server name = "Circuit Design (Telecommunications Server Monitoring Console)" @@ -363,7 +352,7 @@ datum/design/comm_server req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_server" + build_path = /obj/item/weapon/circuitboard/comm_server datum/design/message_monitor name = "Circuit Design (Messaging Monitor Console)" @@ -372,7 +361,7 @@ datum/design/message_monitor req_tech = list("programming" = 5) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/message_monitor" + build_path = /obj/item/weapon/circuitboard/message_monitor datum/design/aifixer name = "Circuit Design (AI Integrity Restorer)" @@ -381,7 +370,7 @@ datum/design/aifixer req_tech = list("programming" = 3, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aifixer" + build_path = /obj/item/weapon/circuitboard/aifixer /////////////////////////////////// //////////AI Module Disks////////// @@ -393,7 +382,7 @@ datum/design/safeguard_module req_tech = list("programming" = 3, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/safeguard" + build_path = /obj/item/weapon/aiModule/safeguard datum/design/onehuman_module name = "Module Design (OneHuman)" @@ -402,7 +391,7 @@ datum/design/onehuman_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/oneHuman" + build_path = /obj/item/weapon/aiModule/oneHuman datum/design/protectstation_module name = "Module Design (ProtectStation)" @@ -411,7 +400,7 @@ datum/design/protectstation_module req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/protectStation" + build_path = /obj/item/weapon/aiModule/protectStation /*datum/design/notele_module name = "Module Design (TeleporterOffline Module)" @@ -420,7 +409,7 @@ datum/design/protectstation_module req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/teleporterOffline"*/ + build_path = /obj/item/weapon/aiModule/teleporterOffline"*/ datum/design/quarantine_module name = "Module Design (Quarantine)" @@ -429,7 +418,7 @@ datum/design/quarantine_module req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/quarantine" + build_path = /obj/item/weapon/aiModule/quarantine datum/design/oxygen_module name = "Module Design (OxygenIsToxicToHumans)" @@ -438,7 +427,7 @@ datum/design/oxygen_module req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/oxygen" + build_path = /obj/item/weapon/aiModule/oxygen datum/design/freeform_module name = "Module Design (Freeform)" @@ -447,7 +436,7 @@ datum/design/freeform_module req_tech = list("programming" = 4, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/freeform" + build_path = /obj/item/weapon/aiModule/freeform datum/design/reset_module name = "Module Design (Reset)" @@ -456,7 +445,7 @@ datum/design/reset_module req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/reset" + build_path = /obj/item/weapon/aiModule/reset datum/design/purge_module name = "Module Design (Purge)" @@ -465,7 +454,7 @@ datum/design/purge_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/purge" + build_path = /obj/item/weapon/aiModule/purge datum/design/freeformcore_module name = "Core Module Design (Freeform)" @@ -474,7 +463,7 @@ datum/design/freeformcore_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/freeformcore" + build_path = /obj/item/weapon/aiModule/freeformcore datum/design/asimov name = "Core Module Design (Asimov)" @@ -483,7 +472,7 @@ datum/design/asimov req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/asimov" + build_path = /obj/item/weapon/aiModule/asimov datum/design/paladin_module name = "Core Module Design (P.A.L.A.D.I.N.)" @@ -492,7 +481,7 @@ datum/design/paladin_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/paladin" + build_path = /obj/item/weapon/aiModule/paladin datum/design/tyrant_module name = "Core Module Design (T.Y.R.A.N.T.)" @@ -501,7 +490,7 @@ datum/design/tyrant_module req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/tyrant" + build_path = /obj/item/weapon/aiModule/tyrant @@ -515,7 +504,7 @@ datum/design/subspace_receiver req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/receiver" + build_path = /obj/item/weapon/circuitboard/telecomms/receiver datum/design/telecomms_bus name = "Circuit Design (Bus Mainframe)" @@ -524,7 +513,7 @@ datum/design/telecomms_bus req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/bus" + build_path = /obj/item/weapon/circuitboard/telecomms/bus datum/design/telecomms_hub name = "Circuit Design (Hub Mainframe)" @@ -533,7 +522,7 @@ datum/design/telecomms_hub req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/hub" + build_path = /obj/item/weapon/circuitboard/telecomms/hub datum/design/telecomms_relay name = "Circuit Design (Relay Mainframe)" @@ -542,7 +531,7 @@ datum/design/telecomms_relay req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/relay" + build_path = /obj/item/weapon/circuitboard/telecomms/relay datum/design/telecomms_processor name = "Circuit Design (Processor Unit)" @@ -551,7 +540,7 @@ datum/design/telecomms_processor req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/processor" + build_path = /obj/item/weapon/circuitboard/telecomms/processor datum/design/telecomms_server name = "Circuit Design (Server Mainframe)" @@ -560,7 +549,7 @@ datum/design/telecomms_server req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/server" + build_path = /obj/item/weapon/circuitboard/telecomms/server datum/design/subspace_broadcaster name = "Circuit Design (Subspace Broadcaster)" @@ -569,7 +558,7 @@ datum/design/subspace_broadcaster req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/broadcaster" + build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster /////////////////////////////////// @@ -583,7 +572,7 @@ datum/design/intellicard req_tech = list("programming" = 4, "materials" = 4) build_type = PROTOLATHE materials = list("$glass" = 1000, "$gold" = 200) - build_path = "/obj/item/device/aicard" + build_path = /obj/item/device/aicard datum/design/paicard name = "Personal Artificial Intelligence Card" @@ -592,7 +581,7 @@ datum/design/paicard req_tech = list("programming" = 2) build_type = PROTOLATHE materials = list("$glass" = 500, "$metal" = 500) - build_path = "/obj/item/device/paicard" + build_path = /obj/item/device/paicard /////////////////////////////////// //////////Mecha Module Disks/////// @@ -605,7 +594,7 @@ datum/design/ripley_main req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/main" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/main datum/design/ripley_peri name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)" @@ -614,7 +603,7 @@ datum/design/ripley_peri req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals datum/design/odysseus_main name = "Circuit Design (\"Odysseus\" Central Control module)" @@ -623,7 +612,7 @@ datum/design/odysseus_main req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/main" + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main datum/design/odysseus_peri name = "Circuit Design (\"Odysseus\" Peripherals Control module)" @@ -632,7 +621,7 @@ datum/design/odysseus_peri req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals datum/design/gygax_main name = "Circuit Design (\"Gygax\" Central Control module)" @@ -641,7 +630,7 @@ datum/design/gygax_main req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/main" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/main datum/design/gygax_peri name = "Circuit Design (\"Gygax\" Peripherals Control module)" @@ -650,7 +639,7 @@ datum/design/gygax_peri req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals datum/design/gygax_targ name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)" @@ -659,7 +648,7 @@ datum/design/gygax_targ req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting datum/design/durand_main name = "Circuit Design (\"Durand\" Central Control module)" @@ -668,7 +657,7 @@ datum/design/durand_main req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/main" + build_path = /obj/item/weapon/circuitboard/mecha/durand/main datum/design/durand_peri name = "Circuit Design (\"Durand\" Peripherals Control module)" @@ -677,7 +666,7 @@ datum/design/durand_peri req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals datum/design/durand_targ name = "Circuit Design (\"Durand\" Weapons & Targeting Control module)" @@ -686,7 +675,7 @@ datum/design/durand_targ req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting datum/design/honker_main name = "Circuit Design (\"H.O.N.K\" Central Control module)" @@ -695,7 +684,7 @@ datum/design/honker_main req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/main" + build_path = /obj/item/weapon/circuitboard/mecha/honker/main datum/design/honker_peri name = "Circuit Design (\"H.O.N.K\" Peripherals Control module)" @@ -704,7 +693,7 @@ datum/design/honker_peri req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals datum/design/honker_targ name = "Circuit Design (\"H.O.N.K\" Weapons & Targeting Control module)" @@ -713,7 +702,7 @@ datum/design/honker_targ req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting //////////////////////////////////////// /////////// Mecha Equpment ///////////// @@ -725,7 +714,7 @@ datum/design/mech_scattershot id = "mech_scattershot" build_type = MECHFAB req_tech = list("combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot category = "Exosuit Equipment" datum/design/mech_laser @@ -734,7 +723,7 @@ datum/design/mech_laser id = "mech_laser" build_type = MECHFAB req_tech = list("combat" = 3, "magnets" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser category = "Exosuit Equipment" datum/design/mech_laser_heavy @@ -743,7 +732,7 @@ datum/design/mech_laser_heavy id = "mech_laser_heavy" build_type = MECHFAB req_tech = list("combat" = 4, "magnets" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy category = "Exosuit Equipment" datum/design/mech_grenade_launcher @@ -752,7 +741,7 @@ datum/design/mech_grenade_launcher id = "mech_grenade_launcher" build_type = MECHFAB req_tech = list("combat" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang category = "Exosuit Equipment" datum/design/clusterbang_launcher @@ -761,7 +750,7 @@ datum/design/clusterbang_launcher id = "clusterbang_launcher" build_type = MECHFAB req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang category = "Exosuit Equipment" datum/design/mech_wormhole_gen @@ -770,7 +759,7 @@ datum/design/mech_wormhole_gen id = "mech_wormhole_gen" build_type = MECHFAB req_tech = list("bluespace" = 3, "magnets" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/wormhole_generator" + build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator category = "Exosuit Equipment" datum/design/mech_teleporter @@ -779,7 +768,7 @@ datum/design/mech_teleporter id = "mech_teleporter" build_type = MECHFAB req_tech = list("bluespace" = 10, "magnets" = 5) - build_path = "/obj/item/mecha_parts/mecha_equipment/teleporter" + build_path = /obj/item/mecha_parts/mecha_equipment/teleporter category = "Exosuit Equipment" datum/design/mech_rcd @@ -788,7 +777,7 @@ datum/design/mech_rcd id = "mech_rcd" build_type = MECHFAB req_tech = list("materials" = 4, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/rcd" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd category = "Exosuit Equipment" datum/design/mech_gravcatapult @@ -797,7 +786,7 @@ datum/design/mech_gravcatapult id = "mech_gravcatapult" build_type = MECHFAB req_tech = list("bluespace" = 2, "magnets" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/gravcatapult" + build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult category = "Exosuit Equipment" datum/design/mech_repair_droid @@ -806,16 +795,7 @@ datum/design/mech_repair_droid id = "mech_repair_droid" build_type = MECHFAB req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/repair_droid" - category = "Exosuit Equipment" - -datum/design/mech_plasma_generator - name = "Exosuit Module Design (Plasma Converter Module)" - desc = "Exosuit-mounted plasma converter." - id = "mech_plasma_generator" - build_type = MECHFAB - req_tech = list("plasmatech" = 2, "powerstorage"= 2, "engineering" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/plasma_generator" + build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid category = "Exosuit Equipment" datum/design/mech_energy_relay @@ -824,7 +804,7 @@ datum/design/mech_energy_relay id = "mech_energy_relay" build_type = MECHFAB req_tech = list("magnets" = 4, "powerstorage" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay" + build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay category = "Exosuit Equipment" datum/design/mech_ccw_armor @@ -833,7 +813,7 @@ datum/design/mech_ccw_armor id = "mech_ccw_armor" build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster" + build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster category = "Exosuit Equipment" datum/design/mech_proj_armor @@ -842,7 +822,7 @@ datum/design/mech_proj_armor id = "mech_proj_armor" build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 5, "engineering"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster" + build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster category = "Exosuit Equipment" datum/design/mech_syringe_gun @@ -851,7 +831,7 @@ datum/design/mech_syringe_gun id = "mech_syringe_gun" build_type = MECHFAB req_tech = list("materials" = 3, "biotech"=4, "magnets"=4, "programming"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun category = "Exosuit Equipment" datum/design/mech_diamond_drill @@ -860,7 +840,7 @@ datum/design/mech_diamond_drill id = "mech_diamond_drill" build_type = MECHFAB req_tech = list("materials" = 4, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill category = "Exosuit Equipment" datum/design/mech_generator_nuclear @@ -869,7 +849,7 @@ datum/design/mech_generator_nuclear id = "mech_generator_nuclear" build_type = MECHFAB req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/generator/nuclear" + build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear category = "Exosuit Equipment" @@ -883,7 +863,7 @@ datum/design/design_disk req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/design_disk" + build_path = /obj/item/weapon/disk/design_disk datum/design/tech_disk name = "Technology Data Storage Disk" @@ -892,7 +872,7 @@ datum/design/tech_disk req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/tech_disk" + build_path = /obj/item/weapon/disk/tech_disk //////////////////////////////////////// /////////////Stock Parts//////////////// @@ -905,7 +885,7 @@ datum/design/basic_capacitor req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor" + build_path = /obj/item/weapon/stock_parts/capacitor datum/design/basic_scanning name = "Basic Scanning Module" @@ -914,7 +894,7 @@ datum/design/basic_scanning req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module" + build_path = /obj/item/weapon/stock_parts/scanning_module datum/design/micro_mani name = "Micro Manipulator" @@ -923,7 +903,7 @@ datum/design/micro_mani req_tech = list("materials" = 1, "programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator" + build_path = /obj/item/weapon/stock_parts/manipulator datum/design/basic_micro_laser name = "Basic Micro-Laser" @@ -932,7 +912,7 @@ datum/design/basic_micro_laser req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser" + build_path = /obj/item/weapon/stock_parts/micro_laser datum/design/basic_matter_bin name = "Basic Matter Bin" @@ -941,7 +921,7 @@ datum/design/basic_matter_bin req_tech = list("materials" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin" + build_path = /obj/item/weapon/stock_parts/matter_bin datum/design/adv_capacitor name = "Advanced Capacitor" @@ -950,7 +930,7 @@ datum/design/adv_capacitor req_tech = list("powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor/adv" + build_path = /obj/item/weapon/stock_parts/capacitor/adv datum/design/adv_scanning name = "Advanced Scanning Module" @@ -959,7 +939,7 @@ datum/design/adv_scanning req_tech = list("magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module/adv" + build_path = /obj/item/weapon/stock_parts/scanning_module/adv datum/design/nano_mani name = "Nano Manipulator" @@ -968,7 +948,7 @@ datum/design/nano_mani req_tech = list("materials" = 3, "programming" = 2) build_type = PROTOLATHE materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator/nano" + build_path = /obj/item/weapon/stock_parts/manipulator/nano datum/design/high_micro_laser name = "High-Power Micro-Laser" @@ -977,7 +957,7 @@ datum/design/high_micro_laser req_tech = list("magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser/high" + build_path = /obj/item/weapon/stock_parts/micro_laser/high datum/design/adv_matter_bin name = "Advanced Matter Bin" @@ -986,7 +966,7 @@ datum/design/adv_matter_bin req_tech = list("materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin/adv" + build_path = /obj/item/weapon/stock_parts/matter_bin/adv datum/design/super_capacitor name = "Super Capacitor" @@ -996,7 +976,7 @@ datum/design/super_capacitor build_type = PROTOLATHE reliability = 71 materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/capacitor/super" + build_path = /obj/item/weapon/stock_parts/capacitor/super datum/design/phasic_scanning name = "Phasic Scanning Module" @@ -1006,7 +986,7 @@ datum/design/phasic_scanning build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) reliability = 72 - build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" + build_path = /obj/item/weapon/stock_parts/scanning_module/phasic datum/design/pico_mani name = "Pico Manipulator" @@ -1016,7 +996,7 @@ datum/design/pico_mani build_type = PROTOLATHE materials = list("$metal" = 30) reliability = 73 - build_path = "/obj/item/weapon/stock_parts/manipulator/pico" + build_path = /obj/item/weapon/stock_parts/manipulator/pico datum/design/ultra_micro_laser name = "Ultra-High-Power Micro-Laser" @@ -1026,7 +1006,7 @@ datum/design/ultra_micro_laser build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) reliability = 70 - build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" + build_path = /obj/item/weapon/stock_parts/micro_laser/ultra datum/design/super_matter_bin name = "Super Matter Bin" @@ -1036,7 +1016,7 @@ datum/design/super_matter_bin build_type = PROTOLATHE materials = list("$metal" = 80) reliability = 75 - build_path = "/obj/item/weapon/stock_parts/matter_bin/super" + build_path = /obj/item/weapon/stock_parts/matter_bin/super @@ -1047,7 +1027,7 @@ datum/design/subspace_ansible req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 80, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/ansible" + build_path = /obj/item/weapon/stock_parts/subspace/ansible datum/design/hyperwave_filter name = "Hyperwave Filter" @@ -1056,7 +1036,7 @@ datum/design/hyperwave_filter req_tech = list("programming" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 40, "$silver" = 10) - build_path = "/obj/item/weapon/stock_parts/subspace/filter" + build_path = /obj/item/weapon/stock_parts/subspace/filter datum/design/subspace_amplifier name = "Subspace Amplifier" @@ -1065,7 +1045,7 @@ datum/design/subspace_amplifier req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/amplifier" + build_path = /obj/item/weapon/stock_parts/subspace/amplifier datum/design/subspace_treatment name = "Subspace Treatment Disk" @@ -1074,7 +1054,7 @@ datum/design/subspace_treatment req_tech = list("programming" = 2, "magnets" = 1, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 10, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/treatment" + build_path = /obj/item/weapon/stock_parts/subspace/treatment datum/design/subspace_analyzer name = "Subspace Analyzer" @@ -1083,7 +1063,7 @@ datum/design/subspace_analyzer req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 10, "$gold" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/analyzer" + build_path = /obj/item/weapon/stock_parts/subspace/analyzer datum/design/subspace_crystal name = "Ansible Crystal" @@ -1092,7 +1072,7 @@ datum/design/subspace_crystal req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/crystal" + build_path = /obj/item/weapon/stock_parts/subspace/crystal datum/design/subspace_transmitter name = "Subspace Transmitter" @@ -1101,7 +1081,7 @@ datum/design/subspace_transmitter req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2) build_type = PROTOLATHE materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/transmitter" + build_path = /obj/item/weapon/stock_parts/subspace/transmitter //////////////////////////////////////// //////////////////Power///////////////// @@ -1114,7 +1094,7 @@ datum/design/basic_cell req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE |MECHFAB materials = list("$metal" = 700, "$glass" = 50) - build_path = "/obj/item/weapon/cell" + build_path = /obj/item/weapon/cell category = "Misc" datum/design/high_cell @@ -1124,7 +1104,7 @@ datum/design/high_cell req_tech = list("powerstorage" = 2) build_type = PROTOLATHE | AUTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 60) - build_path = "/obj/item/weapon/cell/high" + build_path = /obj/item/weapon/cell/high category = "Misc" datum/design/super_cell @@ -1135,7 +1115,7 @@ datum/design/super_cell reliability = 75 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) - build_path = "/obj/item/weapon/cell/super" + build_path = /obj/item/weapon/cell/super category = "Misc" datum/design/hyper_cell @@ -1146,7 +1126,7 @@ datum/design/hyper_cell reliability = 70 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) - build_path = "/obj/item/weapon/cell/hyper" + build_path = /obj/item/weapon/cell/hyper category = "Misc" datum/design/light_replacer @@ -1156,7 +1136,7 @@ datum/design/light_replacer req_tech = list("magnets" = 3, "materials" = 4) build_type = PROTOLATHE materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000) - build_path = "/obj/item/device/lightreplacer" + build_path = /obj/item/device/lightreplacer //////////////////////////////////////// //////////////MISC Boards/////////////// @@ -1169,7 +1149,7 @@ datum/design/destructive_analyzer req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/destructive_analyzer" + build_path = /obj/item/weapon/circuitboard/destructive_analyzer datum/design/protolathe name = "Protolathe Board" @@ -1178,7 +1158,7 @@ datum/design/protolathe req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/protolathe" + build_path = /obj/item/weapon/circuitboard/protolathe datum/design/circuit_imprinter name = "Circuit Imprinter Board" @@ -1187,7 +1167,7 @@ datum/design/circuit_imprinter req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/circuit_imprinter" + build_path = /obj/item/weapon/circuitboard/circuit_imprinter datum/design/autolathe name = "Autolathe Board" @@ -1196,7 +1176,7 @@ datum/design/autolathe req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/autolathe" + build_path = /obj/item/weapon/circuitboard/autolathe datum/design/rdservercontrol name = "R&D Server Control Console Board" @@ -1205,7 +1185,7 @@ datum/design/rdservercontrol req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdservercontrol" + build_path = /obj/item/weapon/circuitboard/rdservercontrol datum/design/rdserver name = "R&D Server Board" @@ -1214,7 +1194,7 @@ datum/design/rdserver req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdserver" + build_path = /obj/item/weapon/circuitboard/rdserver datum/design/mechfab name = "Exosuit Fabricator Board" @@ -1223,7 +1203,7 @@ datum/design/mechfab req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mechfab" + build_path = /obj/item/weapon/circuitboard/mechfab datum/design/cyborgrecharger @@ -1233,7 +1213,7 @@ datum/design/cyborgrecharger req_tech = list("powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/cyborgrecharger" + build_path = /obj/item/weapon/circuitboard/cyborgrecharger ///////////////////////////////////////// ////////////Power Stuff////////////////// @@ -1247,7 +1227,7 @@ datum/design/pacman build_type = IMPRINTER reliability = 79 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman" + build_path = /obj/item/weapon/circuitboard/pacman datum/design/superpacman name = "SUPERPACMAN-type Generator Board" @@ -1257,7 +1237,7 @@ datum/design/superpacman build_type = IMPRINTER reliability = 76 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/super" + build_path = /obj/item/weapon/circuitboard/pacman/super datum/design/mrspacman name = "MRSPACMAN-type Generator Board" @@ -1267,7 +1247,7 @@ datum/design/mrspacman build_type = IMPRINTER reliability = 74 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/mrs" + build_path = /obj/item/weapon/circuitboard/pacman/mrs ///////////////////////////////////////// @@ -1282,7 +1262,7 @@ datum/design/mass_spectrometer build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability = 76 - build_path = "/obj/item/device/mass_spectrometer" + build_path = /obj/item/device/mass_spectrometer datum/design/adv_mass_spectrometer name = "Advanced Mass-Spectrometer" @@ -1292,7 +1272,7 @@ datum/design/adv_mass_spectrometer build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability = 74 - build_path = "/obj/item/device/mass_spectrometer/adv" + build_path = /obj/item/device/mass_spectrometer/adv datum/design/mmi name = "Man-Machine Interface" @@ -1302,7 +1282,7 @@ datum/design/mmi build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) reliability = 76 - build_path = "/obj/item/device/mmi" + build_path = /obj/item/device/mmi category = "Misc" datum/design/mmi_radio @@ -1313,7 +1293,7 @@ datum/design/mmi_radio build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) reliability = 74 - build_path = "/obj/item/device/mmi/radio_enabled" + build_path = /obj/item/device/mmi/radio_enabled category = "Misc" datum/design/synthetic_flash @@ -1324,7 +1304,7 @@ datum/design/synthetic_flash build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) reliability = 76 - build_path = "/obj/item/device/flash/synthetic" + build_path = /obj/item/device/flash/synthetic category = "Misc" datum/design/bluespacebeaker @@ -1335,7 +1315,7 @@ datum/design/bluespacebeaker build_type = PROTOLATHE materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) reliability = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" + build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace category = "Misc" datum/design/noreactbeaker @@ -1346,7 +1326,7 @@ datum/design/noreactbeaker build_type = PROTOLATHE materials = list("$metal" = 3000) reliability = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" + build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact category = "Misc" ///////////////////////////////////////// @@ -1361,7 +1341,7 @@ datum/design/nuclear_gun build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) reliability = 76 - build_path = "/obj/item/weapon/gun/energy/gun/nuclear" + build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 datum/design/stunrevolver @@ -1371,7 +1351,7 @@ datum/design/stunrevolver req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) build_type = PROTOLATHE materials = list("$metal" = 4000) - build_path = "/obj/item/weapon/gun/energy/stunrevolver" + build_path = /obj/item/weapon/gun/energy/stunrevolver locked = 1 datum/design/lasercannon @@ -1381,7 +1361,7 @@ datum/design/lasercannon req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 10000, "$glass" = 1000, "$diamond" = 2000) - build_path = "/obj/item/weapon/gun/energy/lasercannon" + build_path = /obj/item/weapon/gun/energy/lasercannon locked = 1 datum/design/decloner @@ -1391,7 +1371,7 @@ datum/design/decloner req_tech = list("combat" = 8, "materials" = 7, "biotech" = 5, "powerstorage" = 6) build_type = PROTOLATHE materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40) - build_path = "/obj/item/weapon/gun/energy/decloner" + build_path = /obj/item/weapon/gun/energy/decloner locked = 1 /* datum/design/chemsprayer @@ -1402,7 +1382,7 @@ datum/design/chemsprayer build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) reliability = 100 - build_path = "/obj/item/weapon/chemsprayer" + build_path = /obj/item/weapon/chemsprayer" */ datum/design/rapidsyringe name = "Rapid Syringe Gun" @@ -1411,7 +1391,7 @@ datum/design/rapidsyringe req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) - build_path = "/obj/item/weapon/gun/syringe/rapidsyringe" + build_path = /obj/item/weapon/gun/syringe/rapidsyringe /* datum/design/largecrossbow name = "Energy Crossbow" @@ -1420,7 +1400,7 @@ datum/design/largecrossbow req_tech = list("combat" = 4, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 1000, "$silver" = 1000) - build_path = "/obj/item/weapon/gun/energy/crossbow/largecrossbow" + build_path = /obj/item/weapon/gun/energy/crossbow/largecrossbow" */ datum/design/temp_gun name = "Temperature Gun" @@ -1429,7 +1409,7 @@ datum/design/temp_gun req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000) - build_path = "/obj/item/weapon/gun/energy/temperature" + build_path = /obj/item/weapon/gun/energy/temperature locked = 1 datum/design/flora_gun @@ -1439,7 +1419,7 @@ datum/design/flora_gun req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 500, "$uranium" = 500) - build_path = "/obj/item/weapon/gun/energy/floragun" + build_path = /obj/item/weapon/gun/energy/floragun datum/design/large_grenade name = "Large Grenade" @@ -1449,7 +1429,7 @@ datum/design/large_grenade build_type = PROTOLATHE materials = list("$metal" = 3000) reliability = 79 - build_path = "/obj/item/weapon/grenade/chem_grenade/large" + build_path = /obj/item/weapon/grenade/chem_grenade/large datum/design/smg name = "Submachine Gun" @@ -1458,7 +1438,7 @@ datum/design/smg req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000) - build_path = "/obj/item/weapon/gun/projectile/automatic" + build_path = /obj/item/weapon/gun/projectile/automatic locked = 1 datum/design/xray @@ -1468,7 +1448,7 @@ datum/design/xray req_tech = list("combat" = 6, "materials" = 5, "biotech" = 5, "powerstorage" = 4) build_type = PROTOLATHE materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000) - build_path = "/obj/item/weapon/gun/energy/xray" + build_path = /obj/item/weapon/gun/energy/xray locked = 1 datum/design/ammo_9mm @@ -1478,7 +1458,7 @@ datum/design/ammo_9mm req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 3750, "$silver" = 100) - build_path = "/obj/item/ammo_box/c9mm" + build_path = /obj/item/ammo_box/c9mm datum/design/mag_smg name = "Submachine Gun Magazine (9mm)" @@ -1487,7 +1467,7 @@ datum/design/mag_smg req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 3750, "$silver" = 100) - build_path = "/obj/item/ammo_box/magazine/msmg9mm" + build_path = /obj/item/ammo_box/magazine/msmg9mm datum/design/stunshell name = "Stun Shell" @@ -1496,7 +1476,7 @@ datum/design/stunshell req_tech = list("combat" = 3, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 4000) - build_path = "/obj/item/ammo_casing/shotgun/stunshell" + build_path = /obj/item/ammo_casing/shotgun/stunshell ///////////////////////////////////////// /////////////////Mining////////////////// @@ -1509,7 +1489,7 @@ datum/design/jackhammer req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 500, "$silver" = 500) - build_path = "/obj/item/weapon/pickaxe/jackhammer" + build_path = /obj/item/weapon/pickaxe/jackhammer datum/design/drill name = "Mining Drill" @@ -1518,7 +1498,7 @@ datum/design/drill req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 6000, "$glass" = 1000) //expensive, but no need for miners. - build_path = "/obj/item/weapon/pickaxe/drill" + build_path = /obj/item/weapon/pickaxe/drill datum/design/plasmacutter name = "Plasma Cutter" @@ -1528,7 +1508,7 @@ datum/design/plasmacutter build_type = PROTOLATHE materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500) reliability = 79 - build_path = "/obj/item/weapon/pickaxe/plasmacutter" + build_path = /obj/item/weapon/pickaxe/plasmacutter datum/design/pick_diamond name = "Diamond Pickaxe" @@ -1537,7 +1517,7 @@ datum/design/pick_diamond req_tech = list("materials" = 6) build_type = PROTOLATHE materials = list("$diamond" = 3000) - build_path = "/obj/item/weapon/pickaxe/diamond" + build_path = /obj/item/weapon/pickaxe/diamond datum/design/drill_diamond name = "Diamond Mining Drill" @@ -1547,7 +1527,7 @@ datum/design/drill_diamond build_type = PROTOLATHE materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. reliability = 79 - build_path = "/obj/item/weapon/pickaxe/diamonddrill" + build_path = /obj/item/weapon/pickaxe/diamonddrill datum/design/mesons name = "Optical Meson Scanners" @@ -1556,7 +1536,7 @@ datum/design/mesons req_tech = list("magnets" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/meson" + build_path = /obj/item/clothing/glasses/meson ///////////////////////////////////////// //////////////Blue Space///////////////// @@ -1569,7 +1549,7 @@ datum/design/beacon req_tech = list("bluespace" = 1) build_type = PROTOLATHE materials = list ("$metal" = 20, "$glass" = 10) - build_path = "/obj/item/device/radio/beacon" + build_path = /obj/item/device/radio/beacon datum/design/bag_holding name = "Bag of Holding" @@ -1579,7 +1559,7 @@ datum/design/bag_holding build_type = PROTOLATHE materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) reliability = 80 - build_path = "/obj/item/weapon/storage/backpack/holding" + build_path = /obj/item/weapon/storage/backpack/holding datum/design/bluespace_crystal name = "Artificial Bluespace Crystal" @@ -1589,7 +1569,7 @@ datum/design/bluespace_crystal build_type = PROTOLATHE materials = list("$diamond" = 1500, "$plasma" = 1500) reliability = 100 - build_path = "/obj/item/bluespace_crystal/artificial" + build_path = /obj/item/bluespace_crystal/artificial ///////////////////////////////////////// /////////////////HUDs//////////////////// @@ -1602,7 +1582,7 @@ datum/design/health_hud req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/health" + build_path = /obj/item/clothing/glasses/hud/health datum/design/security_hud name = "Security HUD" @@ -1611,7 +1591,7 @@ datum/design/security_hud req_tech = list("magnets" = 3, "combat" = 2) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/security" + build_path = /obj/item/clothing/glasses/hud/security locked = 1 ///////////////////////////////////////// @@ -1625,7 +1605,7 @@ datum/design/security_hud build_type = PROTOLATHE req_tech = list("materials" = 1) materials = list("$gold" = 3000, "iron" = 15, "copper" = 10, "$silver" = 2500) - build_path = "/obj/item/weapon/banhammer" */ + build_path = /obj/item/weapon/banhammer" */ //////////////////////////////////////// //Disks for transporting design datums// @@ -1656,7 +1636,7 @@ datum/design/borg_syndicate_module id = "borg_syndicate_module" build_type = MECHFAB req_tech = list("combat" = 4, "syndicate" = 3) - build_path = "/obj/item/borg/upgrade/syndicate" + build_path = /obj/item/borg/upgrade/syndicate category = "Cyborg Upgrade Modules" ///////////////////////////////////////// @@ -1671,4 +1651,4 @@ datum/design/welding_mask req_tech = list("materials" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 4000, "$glass" = 2000) - build_path = "/obj/item/clothing/mask/gas/welding" + build_path = /obj/item/clothing/mask/gas/welding From 908f28dab6bb148a4f86ffe2fb13e9adf4bc886d Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 23 Dec 2013 22:30:38 +0400 Subject: [PATCH 259/315] More machinery and type path fixes Not parts are in null and not in machinery --- code/game/machinery/autolathe.dm | 12 +++---- code/game/machinery/cloning.dm | 16 ++++----- code/game/machinery/constructable_frame.dm | 36 +++++++++---------- code/game/machinery/rechargestation.dm | 10 +++--- code/game/mecha/mech_fabricator.dm | 12 +++---- code/modules/research/destructive_analyzer.dm | 8 ++--- code/modules/research/server.dm | 8 ++--- 7 files changed, 51 insertions(+), 51 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c2a68b9f567..16f4339e1fd 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -347,12 +347,12 @@ var/global/list/autolathe_recipes_hidden = list( \ New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/autolathe(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/circuitboard/autolathe(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() src.L = autolathe_recipes diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 21b4645e918..223b3b9f970 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -24,14 +24,14 @@ /obj/machinery/clonepod/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/clonepod(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - component_parts += new /obj/item/weapon/cable_coil(src, 1) - component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/circuitboard/clonepod(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + component_parts += new /obj/item/weapon/cable_coil(null, 1) RefreshParts() /obj/machinery/clonepod/RefreshParts() diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index ebe0566804d..17b64808df7 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -162,7 +162,7 @@ to destroy them and players will be able to make replacements. */ /obj/item/weapon/circuitboard/destructive_analyzer name = "circuit board (Destructive Analyzer)" - build_path = "/obj/machinery/r_n_d/destructive_analyzer" + build_path = /obj/machinery/r_n_d/destructive_analyzer board_type = "machine" origin_tech = "magnets=2;engineering=2;programming=2" req_components = list( @@ -172,7 +172,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/autolathe name = "circuit board (Autolathe)" - build_path = "/obj/machinery/autolathe" + build_path = /obj/machinery/autolathe board_type = "machine" origin_tech = "engineering=2;programming=2" req_components = list( @@ -182,7 +182,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/protolathe name = "circuit board (Protolathe)" - build_path = "/obj/machinery/r_n_d/protolathe" + build_path = /obj/machinery/r_n_d/protolathe board_type = "machine" origin_tech = "engineering=2;programming=2" req_components = list( @@ -193,7 +193,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/circuit_imprinter name = "circuit board (Circuit Imprinter)" - build_path = "/obj/machinery/r_n_d/circuit_imprinter" + build_path = /obj/machinery/r_n_d/circuit_imprinter board_type = "machine" origin_tech = "engineering=2;programming=2" req_components = list( @@ -203,7 +203,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/pacman name = "circuit board (PACMAN-type Generator)" - build_path = "/obj/machinery/power/port_gen/pacman" + build_path = /obj/machinery/power/port_gen/pacman board_type = "machine" origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3" req_components = list( @@ -214,7 +214,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/pacman/super name = "circuit board (SUPERPACMAN-type Generator)" - build_path = "/obj/machinery/power/port_gen/pacman/super" + build_path = /obj/machinery/power/port_gen/pacman/super origin_tech = "programming=3;powerstorage=4;engineering=4" /obj/item/weapon/circuitboard/pacman/mrs @@ -224,7 +224,7 @@ to destroy them and players will be able to make replacements. obj/item/weapon/circuitboard/rdserver name = "circuit board (R&D Server)" - build_path = "/obj/machinery/r_n_d/server" + build_path = /obj/machinery/r_n_d/server board_type = "machine" origin_tech = "programming=3" req_components = list( @@ -233,7 +233,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/mechfab name = "circuit board (Exosuit Fabricator)" - build_path = "/obj/machinery/mecha_part_fabricator" + build_path = /obj/machinery/mecha_part_fabricator board_type = "machine" origin_tech = "programming=3;engineering=3" req_components = list( @@ -244,7 +244,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/clonepod name = "circuit board (Clone Pod)" - build_path = "/obj/machinery/clonepod" + build_path = /obj/machinery/clonepod board_type = "machine" origin_tech = "programming=3;biotech=3" req_components = list( @@ -255,7 +255,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/clonescanner name = "circuit board (Cloning Scanner)" - build_path = "/obj/machinery/dna_scannernew" + build_path = /obj/machinery/dna_scannernew board_type = "machine" origin_tech = "programming=2;biotech=2" req_components = list( @@ -267,7 +267,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/cyborgrecharger name = "circuit board (Cyborg Recharger)" - build_path = "/obj/machinery/recharge_station" + build_path = /obj/machinery/recharge_station board_type = "machine" origin_tech = "powerstorage=3;engineering=3" req_components = list( @@ -279,7 +279,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/receiver name = "circuit board (Subspace Receiver)" - build_path = "/obj/machinery/telecomms/receiver" + build_path = /obj/machinery/telecomms/receiver board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=1" req_components = list( @@ -290,7 +290,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/hub name = "circuit board (Hub Mainframe)" - build_path = "/obj/machinery/telecomms/hub" + build_path = /obj/machinery/telecomms/hub board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -300,7 +300,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/relay name = "circuit board (Relay Mainframe)" - build_path = "/obj/machinery/telecomms/relay" + build_path = /obj/machinery/telecomms/relay board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=2" req_components = list( @@ -310,7 +310,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/bus name = "circuit board (Bus Mainframe)" - build_path = "/obj/machinery/telecomms/bus" + build_path = /obj/machinery/telecomms/bus board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -320,7 +320,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/processor name = "circuit board (Processor Unit)" - build_path = "/obj/machinery/telecomms/processor" + build_path = /obj/machinery/telecomms/processor board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -333,7 +333,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/server name = "circuit board (Telecommunication Server)" - build_path = "/obj/machinery/telecomms/server" + build_path = /obj/machinery/telecomms/server board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -343,7 +343,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/broadcaster name = "circuit board (Subspace Broadcaster)" - build_path = "/obj/machinery/telecomms/broadcaster" + build_path = /obj/machinery/telecomms/broadcaster board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=1" req_components = list( diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 76dfa89f9e8..401acff9da5 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -20,11 +20,11 @@ /obj/machinery/recharge_station/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/cell/high(src) + component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(null) + component_parts += new /obj/item/weapon/stock_parts/capacitor(null) + component_parts += new /obj/item/weapon/stock_parts/capacitor(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/cell/high(null) RefreshParts() build_icon() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 864ff0f51d2..299ec78727f 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -133,12 +133,12 @@ /obj/machinery/mecha_part_fabricator/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/mechfab(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/circuitboard/mechfab(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() // part_sets["Cyborg Upgrade Modules"] = typesof(/obj/item/borg/upgrade/) - /obj/item/borg/upgrade/ // Eh. This does it dymaically, but to support having the items referenced otherwhere in the code but not being constructable, going to do it manaully. diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index c0d7d862032..5aea5e32fd9 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -16,10 +16,10 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/r_n_d/destructive_analyzer/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) + component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) RefreshParts() /obj/machinery/r_n_d/destructive_analyzer/RefreshParts() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 4c4daca528d..ca14c2201d0 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -17,10 +17,10 @@ /obj/machinery/r_n_d/server/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/rdserver(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/cable_coil(src, 1) - component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/circuitboard/rdserver(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + component_parts += new /obj/item/weapon/cable_coil(null, 1) RefreshParts() src.initialize(); //Agouri From 375b9f08ea50b8c51bfffb6e4366bc83324430bd Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 23 Dec 2013 21:58:20 +0000 Subject: [PATCH 260/315] Fixes the flags of the beret. --- code/modules/clothing/spacesuits/miscellaneous.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 6d358a8495c..cebda622781 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -33,7 +33,8 @@ desc = "An armored beret commonly used by special operations officers. Uses forcefield technology to protect the head from space." icon_state = "beret_badge" armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags_inv = 0 //NASA Voidsuit From 02a1e9bd0fc693f991fbc7f4cf0d94202bb95627 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 23 Dec 2013 22:26:36 +0000 Subject: [PATCH 261/315] * Increased the amount of iron that spawns in the labor camp. * Decreased the amount of points you get from diamond and bananium. Increased the amount of points you get from Iron and alloys. * You can now see which minerals give you which points from the claiming console. --- code/modules/mining/laborcamp/laborminerals.dm | 2 +- code/modules/mining/laborcamp/laborstacker.dm | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/code/modules/mining/laborcamp/laborminerals.dm b/code/modules/mining/laborcamp/laborminerals.dm index dec87ade70a..78de180071e 100644 --- a/code/modules/mining/laborcamp/laborminerals.dm +++ b/code/modules/mining/laborcamp/laborminerals.dm @@ -1,2 +1,2 @@ /turf/simulated/mineral/random/labormineral - mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25/*, "Adamantine" =5, "Cave" = 1 */) //Don't suffocate the prisoners with caves \ No newline at end of file + mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 100, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25/*, "Adamantine" =5, "Cave" = 1 */) //Don't suffocate the prisoners with caves \ No newline at end of file diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 5ad5dbe1750..8a736e5bc76 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -52,6 +52,8 @@ if(check_auth()) dat += text("Proceed to Station.
    ") dat += text("Open release door.
    ") + if(machine) + dat += text("
    Mineral Value List:
    [machine.get_ore_values()]") user << browse("[dat]", "window=console_stacking_machine") @@ -117,8 +119,16 @@ /obj/machinery/mineral/stacking_machine/laborstacker - var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity. Iron = 1; Diamond = 25. - var/list/ore_values = list(("metal" = 1), ("diamond" = 25), ("solid plasma" = 2), ("gold" = 5), ("silver" = 5), ("bananium" = 9999), ("uranium" = 5), ("glass" = 1), ("reinforced glass" = 2), ("plasteel" = 3)) + var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity. + var/list/ore_values = list(("glass" = 1), ("metal" = 2), ("solid plasma" = 2), ("plasteel" = 4), ("reinforced glass" = 4), ("gold" = 5), ("silver" = 5), ("uranium" = 5), ("diamond" = 15), ("bananium" = 50)) + +/obj/machinery/mineral/stacking_machine/laborstacker/proc/get_ore_values() + var/dat = "" + for(var/ore in ore_values) + var/value = ore_values[ore] + dat += "" + dat += "
    [capitalize(ore)][value]
    " + return dat /obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp) if(istype(inp)) From 4a59eca9baad32a372d6c025aedc51b3ea78f19f Mon Sep 17 00:00:00 2001 From: ChuckTheSheep Date: Mon, 23 Dec 2013 18:42:15 -0500 Subject: [PATCH 262/315] Fixed an oversight in Wizard-Spell targeting code Added an extra safety check to check if targets selected via inputs were actually in range. Previously someone could open a bunch of inputs and activate them from what ever range. --- code/datums/spell.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 8e733d4df39..c17683d31e5 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -246,7 +246,11 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin continue possible_targets += M - targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets + //targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets + //Adds a safety check post-input to make sure those targets are actually in range. + var/mob/M = input("Choose the target for the spell.", "Targeting") as mob in possible_targets + if(M in range(range, user)) targets += M + else var/list/possible_targets = list() for(var/mob/living/target in view_or_range(range, user, selection_type)) @@ -285,4 +289,4 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin perform(targets) - return \ No newline at end of file + return From 56059f67c3e658f2a4c4dc419633c8529b5926f1 Mon Sep 17 00:00:00 2001 From: ChuckTheSheep Date: Tue, 24 Dec 2013 09:31:00 -0500 Subject: [PATCH 263/315] Update spell.dm --- code/datums/spell.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index c17683d31e5..02213ea14e3 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -249,7 +249,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin //targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets //Adds a safety check post-input to make sure those targets are actually in range. var/mob/M = input("Choose the target for the spell.", "Targeting") as mob in possible_targets - if(M in range(range, user)) targets += M + if(M in view_or_range(range, user, selection_type)) targets += M else var/list/possible_targets = list() From fb93b9ae4fbbf2ed7f150e9d9fb16a741ea6b5b4 Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 25 Dec 2013 02:15:58 +0400 Subject: [PATCH 264/315] Mech fabricator tweak Now upgrading laser part to best quality doesnt reset time coeff back to initial level 4% cost reduction per laser quality level(8% total) -> 15% cost reduction per manipulator quality level(30% total) 4% time reduction per manipulator quality level(was broken) -> 25% time reduction per manipulator quality level(50% total) Made right part of fabricator window a bit wider, more convinient this way --- code/game/mecha/mech_fabricator.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 299ec78727f..37e5547b75a 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -162,18 +162,16 @@ T = 0 for(var/obj/item/weapon/stock_parts/micro_laser/Ma in component_parts) T += Ma.rating - if(T >= 1) - T -= 1 + T -= 1 var/diff - diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/25,0.01) + diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/6,0.01) if(resource_coeff!=diff) resource_coeff = diff T = 0 for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts) T += Ml.rating - if(T>= 2) - T -= 2 - diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/25,0.01) + T -= 1 + diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/4,0.01) if(time_coeff!=diff) time_coeff = diff @@ -358,6 +356,8 @@ src.being_built = new part.type(src) src.desc = "It's building [src.being_built]." src.remove_resources(part) + part.m_amt = get_resource_cost_w_coeff(part,"metal") + part.g_amt = get_resource_cost_w_coeff(part,"glass") src.overlays += "fab-active" src.use_power = 2 src.updateUsrDialog() @@ -581,10 +581,10 @@ - - From 8b83c81a3e973d8099c657fdec935b7e2aaee845 Mon Sep 17 00:00:00 2001 From: Incoming Date: Wed, 25 Dec 2013 23:34:26 -0500 Subject: [PATCH 265/315] ENDS CHRISTMAS :( ...also Festivus --- maps/tgstation.2.1.2.dmm | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index f2784332972..83bd516a89d 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -2569,7 +2569,7 @@ "aXu" = (/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 28; pixel_y = 0},/turf/simulated/wall,/area/turret_protected/ai) "aXv" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/captain) "aXw" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"aXx" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) +"aXx" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "aXy" = (/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "aXz" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/starboard) "aXA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -8252,9 +8252,6 @@ "dcJ" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "dcK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "dcL" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"dcM" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"dcN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/flora/tree/festivus,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"}) -"dcO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "dcP" = (/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/explored) "dcQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp) "dcR" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) @@ -8381,19 +8378,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxVaCQazkazlaxPazmaxPazmaxPazmaxPazmaxPaznazoaumaCRaCSaCTaCUaCUaCUaCUaCSaCVaCWaCXaCYaCZanpaDaaoZaoZavraDbaDcawHaDdaDeaDfaDgaDhaDiaDjavsaaaaDkaaaaDlaDmaDlaaaaafaaaasqaBEasvaDnaDoaDpaDqaDrasvamIalTaryaDsaDtayAayAayAaDuaDvaryaaaaaaaDwaDxaDyaDzaDAaDBaDCaDDaDwaaaaaaaDEaDFaDGaDHatUaDIauXauXauXaxlauXauXauXaDJavRaDKavRaDLaDMarcaDNaDOaDOaDPaDQaDRaDOaDSaDOaDTaDUaDTaDVaDTaDWaDXaDXaDYaDXaDXaDZaDXaDXaDXaDXaEaaEbaCDaEcaEdaEeaEfaEgazaaEhaEiaEjaEkaElaEmaCNaEnaCOaBfaBeaBfaEoaEpaEqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEsaEtawoaxOaxPaxPaxPaEuaxPaxPaEvaxPaxPaxVaEwasbathasdaExaEyaEyaEyaEyaEyaEyaEyaEzaEAaobaobaEBaobaobavraECaEDaEEaEFaEFaEFaEFaEGaEHaEIavsaEJaEKaELaEMaENaEOaELaELaEPasqaEQasvasvasvaERaESasvasvaETavqaryaryaryaEUaEVaEWaryaryaryaEXaEYaEZaFaaDAaDAaDAaDAaDAaFbaFcaEYaFdaDEaFeaDGaFfatUatUatUatUatUatUatUatUatUaDJaFgaFhaFiaFjaFkaFlaFmaFnaDOaFoaFpaFqaFraFsaDTaFtaFuaDTaFvaDTaFwaFxaFyaFzaFAaFBaFCaFDaFEaFFaDXaFGaFHaFIaEcaFJaEeaEfaFKazaaFLaFMaFNaFOaFPaCNaCNazdazhaFQaBeaBfaFRaFSaFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEsawoawpawoawoaFUawrawoawoawpaEtaFVanjaFWasdareaFXaFXaFYaFXaFZanYaGaaGbaEAaGcaGdaGeaGfaGgaGhaGhaGiaGhaGhaGhaGhaGhaGhaGhaGjaGkaGlaGmaGnaGnaGoaGpaGnaGnaGnaGqaGraGsaGtaGnaGuaGnaGvaGwaGxaDAaGyaGzaDBaDCaDCaDCaDzaDAaDAaGAaDAaGBaGCaGDaGEaGFaGGaGHaGIaDAaDAaGJaGKaGLaGMaGLaGNaGOaGPaGQaDAaGRaDAavRaGSaGTaFhaFhaFhaFhaFkaFlaFlaGUaDOaGVaGWaFsaGXaGYaDTaGZaHaaHbaHcaDTaDXaHdaHeaHfaHgaHhaHiaHjaHkaHlaDXaEaaHmaHnaHnaHoaHpaHnaHqazaaHraHsazdaCNaCNaCNaCNazdaHtaHuaHvaBfazhazhazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfdcOaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaareatgaHwavgavgavgavgaHxatgareavianjavjaHyaumaHzaHAaHBaHBaHCanYaHDaGbaHEaHFaHGaHHaHIaHJaHKaHLaHMaGhaGhaGhaGhaGhaGhaGhaGjaGhaHNaGhaGhaGhaHOaHPaGhaGhaGhaGhaHQaGhaGhaGhaHRaGhaHSaGwaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaDAaGAaDAaHTaHUaHVaHWaHXaHYaHZaIaaDAaDAaGJaDAaDAaDAaDAaDAaDAaDAaDAaDAaIbaDAavRaFhaIcaFhaFhaFhaFhaIdaFlaGUaIeaDOaIfaIgaIhaDOaDOaDTaIiaFuaIjaHcaIkaDTaDXaDXaIlaDXaDXaDXaImaInaImaDXaEaaEbaIoaCDaCDaIpaCDaIqazaazdazdazdazdazdazdaIrazdaBfaBfaBeaBfaIsaItazhaaaaafaaaaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaukanjaumapyaumaIuaIvaIwaIxaumapyaIyaIzanjathasdaumaIAaIBaHBaHBaHCanYaICaGbaEAaHFaHGaIDaIEaIFaIFaIFaIGaIHaIIaIFaIJaIFaIFaIFaIKaILaIMaIFaIFaIFaINaIOaIPaIQaIQaIRaISaITaITaIUaIVaGhaHSaGwaDAaIWaDAaIXaIXaIXaIXaIXaIXaIXaIXaIYaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIXaIZaIXaIXaIXaIXaIXaIXaIXaIXaDAaDAaDAavRaJaaJbaJaaJaaJaaJcaJdaFlaFlaJeaDOaDOaJfaDOaDOaJgaDTaJhaFuaJiaJjaJkaDTaDXaJlaJmaJnaJoaJnaJnaJpaJqaDXaEaaEbaJraJraJsaJtaJuaJuaJvazaaJwaJxaJyazhaJzaJAaJBaBfaBfaJCaJBazhaJDazhaJEaJEaJEaaaaaaaaaaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanYasbatgasbathasdasdatiasbatgasbaJFaJGaJHasdasbaJIaJIaFYaJIaFZanYaJJaGbaEAaJKaJKaJLaJMaJKaJNaJNaJNaJNaJNaJOaJPaJNaJQaJNaJNaJNaJRaJSaJTaJSaJUaJVaJWaGhaGhaJXaJYaJZaGhaGiaGhaGhaKaaKaaDAaDAaDBaKbaEYaEYaKcaKcaKcaKcaKdaKeaKfaKgaKhaKiaKjaKiaKkaKiaKlaKgaKmaKeaKnaKcaKcaKcaKcaEYaEYaKoaDzaDAaDAaDOaKpaKqaFlaFlaFlaFlaKraKsaKtaFlaDOaKuaKvaKwaDTaDTaDTaDTaKxaDTaKyaDTaDTaDXaJnaKzaKAaKAaKAaKAaKBaJnaDXaKCaEbaKDaCDaJsaJtaCDaCDaKEazaaKFaKGaKHazhaBfaKIaKJaKKaKKaKLaKJaKMaKNazhaKOaKPaJEaKQaKRaKSaafaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaFlaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaasbaMqaMraMqaMqaMqaMqaMqaMqaMraMqaMqaMsasdasdaMtasdasdaMuasdaMvasdaMwaMxaMyaJKaMzaJLaMAaJNaMBaLhaLhaLhaLhaLhaLiaMCaLhaLhaLhaLnaJRaMDaLqaLqaJUaLsaJWaMEaMFaMFaMGaKaaMHaMIaMJaMKaMLaMMaDAaDAaDBaLyaaaaaaaaaaaaaKeaKeaKeaKeaMNaMOaMPaMQaMRaMSaMTaMUaMVaMWaMXaKeaKeaKeaKeaaaaaaaaaaaaaLKaDzaDAaDAaMYaFlaMZaNaaNbaFlaFlaXxaFlaLOaGUaNeaFlaNfaFlaNgaNhaNhaNhaNiaNjaNkaNlaNhaNmaNnaNoaMbaNpaNqaMbaNraJnaDXaEaaEbaCDaCDaJsaJtaCDaCDaCDaNsaNtaCDaNuazhaFQaNvaNwaMjaMjaNxaNwaNyazhaNzaNAaNAaNAaNAaNBaNCaKRaKRaNDaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanjanjaNEaNFaNFaNFaNFaNFaNFaNGanjanjanYaNHaNIaNJaNJaNJaNKaNJaNJaNJaNLaNJaNLaJKaMzaNMaNNaJNaNOaLhaLhaNPaNQaNRaNSaNPaLhaLhaLhaNTaJRaNUaNVaNWaJUaNXaJWaNYaNZaOaaObaKaaOcaOdaOeaMJaOfaOgaDAaDAaDBaFcaKdaOhaOiaKeaKeaOjaOkaOlaOmaOnaOnaOoaOpaOnaOqaOnaOnaOnaOraOsaOtaOuaKeaKeaOiaOhaEXaOvaDzaDAaDAaDOaOwaKqaOxaFlaFlaFlaFlaFlaLOaGUaOyaOzaFlaOAaDTaNhaOBaOCaODaOEaOFaOGaNhaOHaOIaOJaMbaOKaOLaMbaOMaONaDXaEaaEbaOOaOOaJsaJtaOPaCDaCDaOQaCDaORaOSazhaOTaOUaOVaMjaMjaOWaOVaBfazhaOXaNAaNAaNAaNAaNAaOYaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafareaKTasdarfaJHasdasdaKUarfasdaKTaJHasdasdasdaKVaKWaKWaKWaKWaKWaKWaKWaKXaEAaJKaKYaKZaLaaLbaLcaLdaLeaLfaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLqaLraJUaLsaJWaJWaLtaJWaLuaKaaKaaLvaLwaKaaKaaKaaLxaDAaDBaLyaaaaaaaaaaaaaaaaaaaaaaKeaLzaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaKeaaaaaaaaaaaaaaaaaaaaaaLKaDzaDAaLLaDOaLMaKqaLNaFlaFlaFlaLNaFlaLOaGUaLPaFlaLQaLRaDTaLSaLTaLUaLVaLWaLXaLYaLZaDTaJnaMaaMbaMbaMbaMbaMcaJnaDXaMdaEbaMeaMeaJsaJtaMfaMfaMgazaazaaMhazaazhaMiaJAaJBaMjaMjaJCaJBazhazhazhaMkaMlaMmaMnaMoaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaasbaMqaMraMqaMqaMqaMqaMqaMqaMraMqaMqaMsasdasdaMtasdasdaMuasdaMvasdaMwaMxaMyaJKaMzaJLaMAaJNaMBaLhaLhaLhaLhaLhaLiaMCaLhaLhaLhaLnaJRaMDaLqaLqaJUaLsaJWaMEaMFaMFaMGaKaaMHaMIaMJaMKaMLaMMaDAaDAaDBaLyaaaaaaaaaaaaaKeaKeaKeaKeaMNaMOaMPaMQaMRaMSaMTaMUaMVaMWaMXaKeaKeaKeaKeaaaaaaaaaaaaaLKaDzaDAaDAaMYaFlaMZaNaaNbaFlaNcaNdaNbaLOaGUaNeaFlaNfaFlaNgaNhaNhaNhaNiaNjaNkaNlaNhaNmaNnaNoaMbaNpaNqaMbaNraJnaDXaEaaEbaCDaCDaJsaJtaCDaCDaCDaNsaNtaCDaNuazhaFQaNvaNwaMjaMjaNxaNwaNyazhaNzaNAaNAaNAaNAaNBaNCaKRaKRaNDaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanjanjaNEaNFaNFaNFaNFaNFaNFaNGanjanjanYaNHaNIaNJaNJaNJaNKaNJaNJaNJaNLaNJaNLaJKaMzaNMaNNaJNaNOaLhaLhaNPaNQaNRaNSaNPaLhaLhaLhaNTaJRaNUaNVaNWaJUaNXaJWaNYaNZaOaaObaKaaOcaOdaOeaMJaOfaOgaDAaDAaDBaFcaKdaOhaOiaKeaKeaOjaOkaOlaOmaOnaOnaOoaOpaOnaOqaOnaOnaOnaOraOsaOtaOuaKeaKeaOiaOhaEXaOvaDzaDAaDAaDOaOwaKqaOxaFlaFlaFlaOxaFlaLOaGUaOyaOzaFlaOAaDTaNhaOBaOCaODaOEaOFaOGaNhaOHaOIaOJaMbaOKaOLaMbaOMaONaDXaEaaEbaOOaOOaJsaJtaOPaCDaCDaOQaCDaORaOSazhaOTaOUaOVaMjaMjaOWaOVaBfazhaOXaNAaNAaNAaNAaNAaOYaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPcaunaseaPdaPeaPfaPgaPhaPiaPjaPkaPlaPjaPmaPnaPoaPpaPqaJNaPraLhaLhaNPaNRaPsaPtaNPaLhaLhaLhaLnaJRaJUaJUaPuaJUaPvaPwaPwaPwaPwaPxaPyaPzaMJaMJaMJaMJaOgaDAaDAaDBaDCaDCaPAaPBaPCaKeaPDaPEaPFaOnaOnaOnaPGaPHaPIaPJaPKaPLaPMaPKaPNaPOaPPaKeaPQaPBaPRaPSaDCaDzaDAaDAaMYaFlaKqaLNaFlaPTaFlaLNaFlaLOaGUaPUaFlaFlaFlaPVaNhaNhaPWaPXaPYaPZaOGaQaaDTaQbaOJaQcaMbaMbaMbaOMaQdaDXaQeaEbazaazaaJsaJtaQfaQgaCDaQhaQiaFJaQjaQkaHuaQlaQmaQnaQnaQoaQpaQqaQkaQraQsaNAaNAaNAaQtaQuaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaQwaQxaQyathaQzaQAaQBaQCaQDaQEaQFaQGaQHaQCaQIaQJaQKaQLaQMaJNaQNaLhaLhaQOaLhaLhaLiaLhaLhaLhaLhaQPaQQaMzaQRaQSaQTaQUaQVaQWaQXaJKaQYaKaaQZaRaaRbaRcaRcaRdaDAaDAaDAaDAaDAaReaRfaRgaRhaRiaRjaRkaRlaRmaRnaRoaRpaRqaRraRnaRsaRtaRuaRvaRwaRxaRyaRzaRAaRBaRCaRDaREaDAaDAaDOaLMaMZaNdaNbaFlaNcaNaaNbaLOaGUaOyaOyaRFaRGaDTaNhaNhaNhaRHaNhaRIaOGaRJaDTaJnaOJaMbaMbaMbaMbaOMaJnaDXaRKaRLaRMaRNaROaRPaJsaJsaJsaJsaJsaJsaRQaRRaMjaMjaMjaMjaMjaMjaMjaRSaRTaRUaNAaNAaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbatgapyatgasdasdaNLaRVaRWaRXaRXaRXaRXaRYaRZaNJaSaaSbaScaSdaSeaSeaSeaSfaSeaSgaShaSiaSjaSkaSkaSlaLnaSmaSnaSoaSpaSqaSraSsaSsaStaSuaSvaSwaSxaSyaSyaSyaSzaKaaDAaDAaSAaSBaSCaSDaSEaSFaKeaSGaSHaSIaSJaKeaSKaKeaKeaKeaKeaSLaSKaKeaSMaSNaSOaSGaKeaSPaSEaSQaSRaSBaSSaDAaDAaMYaFlaSTaOxaFlaFlaFlaOxaFlaLOaFlaGUaGUaFlaFlaSUaSVaSWaNhaNhaNhaSXaSYaSZaDTaTaaTbaMbaTcaTcaTdaTbaTeaDXaTfaTgaThaTiaJsaJsaJsaJsaTjaJsaJsaJsaRQaRRaMjaMjaMjaMjaMjaMjaMjaRSaRTaRUaNAaNAaTkaNAaTlaMpaafaafaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaTmaTnaQyathasdaToaRWaTpaRXaRXaRXaRXaTpaRWaNJaTqaTraScaSdaTsaTtaTuaTvaSeaTwaTxaTyaJNaTzaTAaTBaLhaJNaTCaTDaTEaTEaTEaTEaTFaTEaTEaTGaTHaTHaTHaTIaTHaTJaTKaTLaTLaTMaTNaTOaTOaTOaTOaTOaTPaTQaTRaTSaSKaTTaSKaSKaTUaTVaSKaTTaSKaTWaTXaTYaTZaTZaTZaTZaTZaTZaUaaUbaTLaTLaDOaUcaUdaUeaUfaFlaFlaFlaUgaUhaUiaFlaUjaUkaUlaDTaDTaDTaUmaUnaUnaUnaDTaDTaDTaUoaMbaMbaUpaUqaUraUsaImaDXaUtaTgaUuazaaUvaUwaUxaQgaUyaUwaUzaQgaUAazhaUBaBfaUCaMjaMjaUCaBfaUDazhaUEaUFaUGaNAaNAaQtaMpaaaaafaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbasbaUHaJHaUIaNLaUJaUJaUJaRWaUKaUJaULaUJaNJaUMaUNaUOaUPaUQaUQaURaUSaUQaUTaTxaUUaJNaTzaTAaTBaLhaJNaUVaTDaTEaUWaUXaUXaUXaUYaTEaUZaVaaVbaVcaTKaTKaTKaTKaDAaDAaVdaVeaVfaVgaVhaViaVjaVkaVlaVmaSKaVnaVoaVpaVpaVqaVpaVpaVoaVpaVraVsaVtaVuaVvaVwaVxaVyaVzaVAaSSaDAaDAaDOaDOaDOaDOaDOaVBaMYaVBaVCaVDaDOaDOaDOaDOaDOaVEaVFaVFaVFaVFaVFaVFaVGaVFaVEaImaVHaVHaVIaThaThaThaThaVEaUtaVJaUuazaazaazaazaazaaVKazaazaazaazaazhaVLaVMaVNaVNaVNaVNaVOazhazhaVPaNAaVQaNAaNAaQtaNCaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaukanjaVRavgaQyanYanYanYanjanjanYaVSaCSaVTaNJaNJaNJaNJaNJaNJaNJaNJaNJaVUaQVaVVaSdaTsaVWaTvaVXaSeaVYaVZaWaaJNaTzaTAaTBaLhaJNaUVaTDaTEaUXaWbaWbaUXaWbaTEaUZaWcaWdaWdaWeaWfaWgaTKaWhaDAaSAaWiaWjaWkaWlaWmaWmaWlaWnaWoaSKaWpaVoaWqaWraWsaWtaWuaVoaWvaVraWwaVzaVzaWxaWyaWzaVzaWAaVAaSSaWBaDAaWCaWDaThaThaThaThaThaThaThaThaWEaThaThaThaThaWFaThaThaThaThaThaThaThaThaWDaThaThaThaThaThaThaThaThaWGaWHaWIaWJaWJaWKaWLaWLaWMaWNaWOaWLaWPaWLaWLaWQaWLaWLaWLaWLaWLaWLaWRaWSaWTaWUaVQaNAaNAaNAaPaaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxdcMaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxaXxaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXLaNAaNAaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPdcBaXPaXPaXPaXPaXPbbSaJKaJKaJKbbSaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYQaYRaYSaYTaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPdcxdcydczdcAbdmaXPbeUaZbaZcaZcbgoaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibajbakaKQaKRaKRaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPaYVaYXaYXaYXbdlaXPbdibdjaMzaMzbbSbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbbKbaibbLbbMaaaaafaaaaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8406,7 +8403,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbkGbkHbkGbkIbkJbdzbdzbdzbdzbdzbdzbdzbdzbkKaTEaTEbkLaWdaWdbkMbkNbkObkPaYbaWdaWdbkQbkRbiibkSbkTbkUbkVbkWbkXbkYbkZblabgMaaablbblbblcbldblebfxblfblbblbaaablgblhblhblhblhblhblhblibljblkbllbllaZNaZNblmblnbloblpaZNblqbcCbblbblbblbblblrbblblsbltbblbblbblbltbblbblbkeblublvblwblxblyblzblAbiPblBblCblDblDblEblFbcPbadblGbcUbcUblHblIbcUblJblKblLblLblMblNblNblObbHblPbbHbaibaiblQbkFblRblSblTbkFbdgbbMaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUblWbdzbdzbdzbjhbjhbjhbjhbdzbdzblXblYaTEblZaWdaWdbkMbmabicbkPaYbbmbaWdbkQbkRbmcaDAaLKbkUbmdbmebmfbmgbmgbmhbgMaafaafblbblbbmibmjbmiblbblbaafaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaDAaDAbmubmvbmwbmxbmybmzbmAbmBbmCbmBbmDbmBbmBbmEbmBbmFbmGbmBbmBbmBbmHbmIbmIbmJblubmKblwbmLbmLbmMbmNbiPbexbaabmObmPbmQbmRbmRbadbmSbmTbmUblKbmVbcUbmWblKbmXbmYbmZbnabnbbncbndbnebnfbngbnhbnibnjblRbnkbnlbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbnmbjebnnbnobdzbdzbdzbdzbdzbdzbdzbdzbdzblXbnpaTEbnqaXhaWdbkMaWdbnraWdaYbaWdbjobigbnsbmcaDAaLKbkUbgMbntbnubnvbnwbnxbgMaaaaaaaafblbblbbnyblbblbaafaaaaaabmkbnzbnAbnBbnCbnDbnDbnEbnFbnGaDAaDAbnHbnIbcCblsbnJbnKbnLbnKbnMbnKbnNbnKbnObnPbjZbnQbblbblbblbnRbnSbnSbnTbnUbnVbnWblwbnXbnYblzbmNbiPaZZbaabnZbnZboabnZbnZbadblKblKblKblKbobbocbbFblKbodboebofbngbngbogbgebgebohbgeboibojbojblRbnkblRbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUbhTbokbdzbdzbolbombonbombombomboobopaZnboqborbdHbosbdHbotbdIborboubovbjpbnsbmcaSAbowboxbgMboybozboAboBbmhbgMaaaaaaaafboCboDboEboFboCaafaaaaaaboGboHboIboIboJboKboLboMbljboNaDAaDAbiEbiEboOblsboPboQboRboSboTboUboVboWboRboSboXboXboSboRaZSaZSbnSboYbmLboZbpablublwbpbbpcbpdbpebiPbpfbpgbphbpibpjbngbngbpkbngbngbplbpmbpnbngbnfbngbpobppbpqbprbpsbptbpubpubpubpubpubpvdcNbpwbpwbpxbpybpzbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUbhTbokbdzbdzbolbombonbombombomboobopaZnboqborbdHbosbdHbotbdIborboubovbjpbnsbmcaSAbowboxbgMboybozboAboBbmhbgMaaaaaaaafboCboDboEboFboCaafaaaaaaboGboHboIboIboJboKboLboMbljboNaDAaDAbiEbiEboOblsboPboQboRboSboTboUboVboWboRboSboXboXboSboRaZSaZSbnSboYbmLboZbpablublwbpbbpcbpdbpebiPbpfbpgbphbpibpjbngbngbpkbngbngbplbpmbpnbngbnfbngbpobppbpqbprbpsbptbpubpubpubpubpubpvbpwbpwbpwbpxbpybpzbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbpAbpBbpAbpCbpDbpCbpCbpCbpCbpCbpEbpFbdzblXbpGaTEbpHbpIbpJbpKbfcbpLbpMbpNbpObpLbpLbpPbmcaFbbpQbkUbgMbpRbpSbpTbnubpUbgMaaaaaaaafboCbpVbpWbpXboCaafaaaaaabmkbpYbpZbqabqbboKboLboMbljbqcaDAaDAbqdbqebqfblsbqgbqhboRbqibqjbqkbqlbqmbqnbqobqpbqpbqqboRbblbblbnSbqrbmLbqsbqtbqubqvbqwbqxbqxbqybqzbqAbqBbqCbqDbqEbqFbqGbqFbqFbqHbqFbqIbqJbqFbqFbqFbqKbqLbqMbqNbqObqPbqQbqRbqSbqTbqUbqVbqWbojbojbqXbkFbqYbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbqZbrabjebrbaTEbrcbjebjebrbbrdbrdbrdbrebrfbrgbrdbrdbrhbrhbribrhbpLbrjbrkbrlbrmbpLbnsbmcaDBaOhaOhbgMbgMbgMbgMbgMbrnbgMaEXaEYaFdboCbrobrpbrqboCaEXaEYaFdblgblhblhblhblhblhblhblhbljbqcaDAbrrboRboRbrsbrtbruboRboRbrvbrwbrxbrybrybrzbrAbrBbrCbrAbrDbblbblbnSbrEbrFbrGbrHbrIbrJbrKbrHbrHbrLbrMbrNbrObrPbrPbrPbrPbrQbrPbrPbrPbrRbrSbrTbrUbrVbrWbrXbrYbrZbqNbsabsbbscbsdbsebsfbpubsgbshbsibsjbskbkFbqYbeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbsAbpLbsBbsCbsDbsDbsEbsDbsFbsGaWCbsHbsIbsJbsKbsKbsLbsMbsNbsObsPbsQbsRaDAaDAbsSaGQaDAaGAaDAaDAaDAbsTbsUbqcaDAbsVboRbsWbsXbsYbsZbtaboRbtbbrwbtcbrybrybrzbrAbrBbtdbtebrDbblbtfbnSbmLbtgbthbtibtjbtkbtlbtmbtnbiPbiPaZZbtobrPbtpbtqbtrbtsbttbtubrPbtvbtwbtxbtybtzbtAbrXbrYbrZbtBbtCbtDbtEbtFbtGbtHbtIbkFbkFbkFbkFbkFbkFbqYbakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaa From 15ef414627a80c21221a457a265e8b99cdfa384c Mon Sep 17 00:00:00 2001 From: ACCount Date: Fri, 27 Dec 2013 17:43:26 +1200 Subject: [PATCH 266/315] Viral fix Fixed strain_data, removed some unused code. --- code/modules/mob/mob_cleanup.dm | 34 ++------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm index 21cb737820a..0ce017c3039 100644 --- a/code/modules/mob/mob_cleanup.dm +++ b/code/modules/mob/mob_cleanup.dm @@ -51,7 +51,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup. var/datum/disease/v = new virus.type(1, virus, 0) src.viruses += v v.affected_mob = src - v.strain_data = v.strain_data.Copy() + v.strain_data = virus.strain_data.Copy() v.holder = src if(v.can_carry && prob(5)) v.carrier = 1 @@ -166,40 +166,10 @@ Put (mob/proc)s here that are in dire need of a code cleanup. if(passed) //world << "Infection in the mob [src]. YAY" - - -/* - var/score = 0 - if(istype(src, /mob/living/carbon/human)) - if(src:gloves) score += 5 - if(istype(src:wear_suit, /obj/item/clothing/suit/space)) score += 10 - if(istype(src:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10 - if(istype(src:head, /obj/item/clothing/head/helmet/space)) score += 5 - if(istype(src:head, /obj/item/clothing/head/bio_hood)) score += 5 - if(wear_mask) - score += 5 - if((istype(src:wear_mask, /obj/item/clothing/mask) || istype(src:wear_mask, /obj/item/clothing/mask/surgical)) && !internal) - score += 5 - if(internal) - score += 5 - if(score > 20) - return - else if(score == 20 && prob(95)) - return - else if(score >= 15 && prob(75)) - return - else if(score >= 10 && prob(55)) - return - else if(score >= 5 && prob(35)) - return - else if(prob(15)) - return - else*/ - var/datum/disease/v = new virus.type(1, virus, 0) src.viruses += v v.affected_mob = src - v.strain_data = v.strain_data.Copy() + v.strain_data = virus.strain_data.Copy() v.holder = src if(v.can_carry && prob(5)) v.carrier = 1 From 34afaf0ad6af569f2196633b393179d2da16d2c0 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 27 Dec 2013 15:10:06 +0000 Subject: [PATCH 267/315] Updated the changelog. --- html/changelog.html | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index f2f50876a35..e02cd9b8e51 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,8 +52,21 @@ should be listed in the changelog upon commit tho. Thanks. --> - + +
    +

    27 December 2013

    +

    Giacom updated:

    +
      +
    • Light explosions will no longer gib dead bodies anymore. C4 will function the same and gib anything attached.
    • +
    • Syringe gun projectiles will now display a message when shots are deflected by space suits, biosuits and etc...
    • +
    • You can now move out of sleepers by moving, again.
    • +
    +

    Miauw updated:

    +
      +
    • Monkeys now have a resist button on their HUD.
    • +
    +

    21 December 2013

    From bd051a68c299471ab3e5792e4f2a038d3e1abf80 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 27 Dec 2013 15:15:39 +0000 Subject: [PATCH 268/315] Emergency commit to fix #2150 mime.dm was not included into the .dme --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index 289b8deb271..a0785564e26 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -185,6 +185,7 @@ #include "code\datums\spells\horsemask.dm" #include "code\datums\spells\inflict_handler.dm" #include "code\datums\spells\knock.dm" +#include "code\datums\spells\mime.dm" #include "code\datums\spells\mind_transfer.dm" #include "code\datums\spells\projectile.dm" #include "code\datums\spells\trigger.dm" From 7331768b01375d69db084ed08d88150eadb795e8 Mon Sep 17 00:00:00 2001 From: Metacide Date: Fri, 27 Dec 2013 18:20:41 +0000 Subject: [PATCH 269/315] Updated MetaStation.v38R.dmm to MetaStation.v38S.dmm *Moved lightbulb on top of vendor in medical storage. *Removed Christmas items. *Removed ID requirement from the counterfeit fabricator. *Replaced all arcades with random-game arcades. *Added suit storage unit to toxins launch area to allow for test site remodelling. *Added missing air alarm to toxins launch area. *Added medical eyepatch, blindfold, and earmuffs to the linen bin outside surgery. *Fixed medical secpost having a cargo security locker, and fixed incorrect secpost area designation below medbay. *Incinerator gas removal vent now starts off, and the incinerator air alarm should now be all-access. *Improved toxins, which is now larger, better laid out, and has a gas filter and disposals unit. *Implemented Giacom's latest update to the labor camp. --- ...aStation.v38R.dmm => MetaStation.v38S.dmm} | 547 +++++++++--------- 1 file changed, 278 insertions(+), 269 deletions(-) rename maps/{MetaStation.v38R.dmm => MetaStation.v38S.dmm} (98%) diff --git a/maps/MetaStation.v38R.dmm b/maps/MetaStation.v38S.dmm similarity index 98% rename from maps/MetaStation.v38R.dmm rename to maps/MetaStation.v38S.dmm index bd6ddc7f813..d440f6458d6 100644 --- a/maps/MetaStation.v38R.dmm +++ b/maps/MetaStation.v38S.dmm @@ -77,7 +77,7 @@ "aby" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/crew_quarters) "abz" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/crew_quarters) "abA" = (/turf/simulated/floor/plating,/area/crew_quarters) -"abB" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) +"abB" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) "abC" = (/turf/space,/area/solar/auxstarboard) "abD" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abE" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -644,7 +644,7 @@ "amt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "amu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/engineering) -"amw" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm Close"; dir = 4; network = list("Singulo")},/turf/space,/area) +"amw" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/camera{c_tag = "Engineering - Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "amx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/carpet,/area/security/detectives_office) "amy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "amz" = (/obj/structure/closet,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -898,7 +898,7 @@ "arn" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aro" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/miningdock) "arp" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/holodeck) -"arq" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm Far"; dir = 2; network = list("Singulo")},/turf/simulated/floor/plating/airless,/area/engine/engineering) +"arq" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm - Near"; dir = 4; network = list("Singulo")},/turf/space,/area) "arr" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/holodeck) "ars" = (/obj/item/weapon/storage/bag/plants/portaseeder,/obj/structure/table,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "art" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) @@ -1280,7 +1280,7 @@ "ayF" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/crew_quarters) "ayG" = (/obj/machinery/computer/shuttle/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "ayH" = (/obj/structure/closet/secure_closet/detective,/obj/effect/landmark{name = "blobstart"},/obj/machinery/camera{c_tag = "Detective's Office"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"ayI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/camera{c_tag = "Engineering Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) +"ayI" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm - Far"; dir = 2; network = list("Singulo")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "ayJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters) "ayK" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "ayL" = (/obj/machinery/turret{dir = 8},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) @@ -1420,7 +1420,7 @@ "aBp" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/nuke_storage) "aBq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBr" = (/obj/machinery/camera{c_tag = "Interrogation"; dir = 8; network = list("interrogation")},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"aBs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"aBs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aBt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) "aBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) "aBv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/prison) @@ -1500,7 +1500,7 @@ "aCR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aCS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "aCT" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) -"aCU" = (/obj/structure/table,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/apron,/obj/item/clothing/head/pumpkinhead,/obj/item/weapon/corncob,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aCU" = (/obj/structure/table,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/apron,/obj/item/weapon/corncob,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "aCV" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/airless,/area) "aCW" = (/turf/simulated/wall,/area/hallway/secondary/construction{name = "\improper Garden"}) "aCX" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 0},/obj/item/device/radio/off{pixel_x = 0; pixel_y = 3},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -1612,7 +1612,7 @@ "aEZ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor,/area/construction) "aFa" = (/turf/space,/area/supply/station) "aFb" = (/obj/structure/target_stake,/obj/item/target/syndicate,/turf/simulated/floor,/area/security/range) -"aFc" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Armory - External Camera"; desc = "A special camera with a long lasting battery."; dir = 1; invuln = 0; light = null; name = "security camera"; network = list("SS13"); use_power = 0},/turf/space,/area) +"aFc" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Armory - Internal"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "aFd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Cabin7"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters) "aFe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) "aFf" = (/turf/simulated/wall,/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1814,7 +1814,7 @@ "aIT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/starboard) "aIU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "aIV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/morgue{name = "Zone of Quiet Contemplation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters) -"aIW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Armory APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Armory"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) +"aIW" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Armory - External"; desc = "A special camera with a long lasting battery."; dir = 1; invuln = 0; light = null; name = "security camera"; network = list("SS13"); use_power = 0},/turf/space,/area) "aIX" = (/obj/machinery/photocopier,/obj/machinery/power/apc{dir = 4; name = "Head of Security's Office APC"; pixel_x = 24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "hosprivacy"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = -26},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 8; network = list("SS13")},/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "aIY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "aIZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/starboard) @@ -2183,16 +2183,16 @@ "aPY" = (/obj/machinery/light/small,/obj/structure/janitorialcart,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aPZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "aQa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 22},/turf/simulated/floor,/area/hallway/primary/central) -"aQb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) +"aQb" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/item/clothing/suit/space/captain,/obj/item/clothing/head/helmet/space/capspace,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aQc" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light_switch{pixel_x = 8; pixel_y = 30},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aQd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/primary/central) "aQe" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aQf" = (/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aQg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"aQh" = (/obj/machinery/computer/card,/obj/machinery/light{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) +"aQh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering - Entrance"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "aQi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "aQj" = (/obj/machinery/computer/secure_data,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) -"aQk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) +"aQk" = (/obj/machinery/computer/card,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/camera{c_tag = "Customs Checkpoint"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2{name = "Customs"}) "aQl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"}) "aQm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard) "aQn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"}) @@ -2366,7 +2366,7 @@ "aTz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) "aTA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "aTB" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/wirecutters,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"aTC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) +"aTC" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aTD" = (/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aTE" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aTF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -2675,7 +2675,7 @@ "aZw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aZx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "aZy" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aZz" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aZz" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aZA" = (/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aZB" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmospherics Desk"; req_access_txt = "24"},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/maintenance/storage) "aZC" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2837,7 +2837,7 @@ "bcC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/port) "bcD" = (/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/turf/space,/area) "bcE" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"bcF" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"bcF" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/camera{c_tag = "Engineering - Transit Tube Access"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bcG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bcH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/wood,/area/bridge) "bcI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) @@ -3041,7 +3041,7 @@ "bgy" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge) "bgz" = (/turf/simulated/wall,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bgA" = (/obj/machinery/door/window{dir = 1; name = "Captain's Bedroom"; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bgB" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/armor/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bgB" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Engineering - Foyer - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) "bgC" = (/obj/structure/closet/secure_closet/captains,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bgD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "bgE" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -3315,7 +3315,7 @@ "blM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fitness Area"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/fitness) "blN" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) "blO" = (/obj/machinery/power/emitter,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engine/engineering) -"blP" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/clothing/head/helmet/space/santahat,/obj/item/weapon/paper{info = "Dear Captain,
    \n
    \nWhile I try my best to reach all the children of the world I have to say getting to space stations is a bit b'yond me! Please take this spare suit to spread chrismas cheer, with my blessing!"; name = "paper- 'season's greetings!'"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"blP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad{pixel_y = -16},/turf/simulated/floor/carpet,/area/hallway/primary/port) "blQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/bridge) "blR" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/courtroom) "blS" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3436,7 +3436,7 @@ "bod" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage) "boe" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) "bof" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) -"bog" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Engineering Foyer Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/break_room) +"bog" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/vending/coffee,/obj/machinery/camera{c_tag = "Engineering - Foyer - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "boh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera{c_tag = "Port Primary Hallway - Starboard"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port) "boi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "boj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3696,8 +3696,8 @@ "btd" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes{capacity = 9e+006; charge = 1e+006; chargelevel = 50000; chargemode = 1; charging = 1; output = 50000},/obj/machinery/light_switch{pixel_x = -24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) "bte" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) "btf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"btg" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/vending/coffee,/obj/machinery/camera{c_tag = "Engineering Foyer Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) -"bth" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) +"btg" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering - Secure Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) +"bth" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "bti" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Storage Wing - Security Access Door"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "btj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "btk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) @@ -3725,7 +3725,7 @@ "btG" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 0; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "btH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/crew_quarters/locker) "btI" = (/turf/simulated/wall,/area/crew_quarters/heads) -"btJ" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm Far"; dir = 1; network = list("Singulo")},/turf/simulated/floor/plating/airless,/area/engine/engineering) +"btJ" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering - Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "btK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/qm) "btL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) "btM" = (/obj/machinery/power/apc{cell_type = 2500; dir = 2; name = "Courtroom APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -3814,14 +3814,14 @@ "bvr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) "bvs" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bvt" = (/obj/structure/table,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) -"bvu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/flora/tree/pine/xmas{pixel_y = -16},/turf/simulated/floor/carpet,/area/hallway/primary/port) +"bvu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering - Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "bvv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvx" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bvy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bvz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/qm) "bvA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) -"bvB" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) +"bvB" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm - Far"; dir = 1; network = list("Singulo")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "bvC" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bvD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/locker) "bvE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Quarters Access"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/locker) @@ -3978,7 +3978,7 @@ "byz" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/surgery) "byA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"}) "byB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper{name = "Sleepers"}) -"byC" = (/obj/structure/flora/tree/pine/xmas{pixel_x = -16; pixel_y = -4},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) +"byC" = (/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) "byD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "byE" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) "byF" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals - Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -4010,7 +4010,7 @@ "bzf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/crew_quarters/locker) "bzg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bzh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) -"bzi" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/ai_status_display{pixel_x = 16; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) +"bzi" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "bzj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/crew_quarters/locker) "bzk" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bzl" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = 0; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -4144,8 +4144,8 @@ "bBJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/lab) "bBK" = (/obj/structure/rack,/obj/item/weapon/hatchet,/obj/item/weapon/butch,/turf/simulated/floor/plating,/area/maintenance/starboard) "bBL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer's Office"; req_access_txt = "56"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/chiefs_office) -"bBM" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) -"bBN" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm Close"; dir = 4; network = list("Singulo")},/turf/space,/area) +"bBM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) +"bBN" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "bBO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics) "bBP" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bBQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) @@ -4243,7 +4243,7 @@ "bDE" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bDF" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) "bDG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) -"bDH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bDH" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Engineering - Power Monitoring"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) "bDI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bDJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "bDK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering) @@ -4259,7 +4259,7 @@ "bDU" = (/turf/simulated/wall,/area/toxins/telesci) "bDV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bDW" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) -"bDX" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) +"bDX" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm - Near"; dir = 4; network = list("Singulo")},/turf/space,/area) "bDY" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "bDZ" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 0; pixel_y = 6},/obj/item/weapon/pen,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bEa" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) @@ -4303,7 +4303,7 @@ "bEM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Prisoner Education Gallery"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/prison/solitary{name = "Prisoner Education Chamber"}) "bEN" = (/obj/machinery/chem_master,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bEO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bEP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) +"bEP" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/weapon/gun/syringe,/obj/item/clothing/glasses/eyepatch,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/ears/earmuffs,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) "bEQ" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bER" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/library) "bES" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) @@ -4417,7 +4417,7 @@ "bGW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Storage Access"; req_access = null; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "bGX" = (/obj/structure/closet/emcloset{pixel_x = -2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) "bGY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/gateway) -"bGZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/toxins/storage) +"bGZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "off"; initialize_directions = 1; internal_pressure_bound = 4000; on = 0; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bHa" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bHb" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bHc" = (/obj/structure/table,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) @@ -4497,7 +4497,7 @@ "bIy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bIz" = (/obj/structure/kitchenspike,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bIA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bIB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"bIB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/toxins/storage) "bIC" = (/obj/structure/table,/obj/item/seeds/harebell,/obj/item/seeds/berryseed,/obj/item/nutrient/rh,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) "bID" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bIE" = (/obj/machinery/icecream_vat,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -4524,7 +4524,7 @@ "bIZ" = (/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJa" = (/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bJb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bJc" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bJc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) "bJd" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJe" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bJf" = (/obj/item/weapon/paper,/obj/structure/table,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -4546,7 +4546,7 @@ "bJv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bJw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bJx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bJy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"bJy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bJz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bJA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/construction) "bJB" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4567,7 +4567,7 @@ "bJQ" = (/obj/machinery/door/window/northleft{dir = 8; name = "Jetpack Storage"; pixel_x = -1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide{pixel_x = -2; pixel_y = 3},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bJR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central) "bJS" = (/obj/structure/cable/yellow,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/teleporter{name = "\improper Teleporter Room"}) -"bJT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bJT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bJU" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/port) "bJV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bJW" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) @@ -4594,7 +4594,7 @@ "bKr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bKs" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bKu" = (/obj/machinery/mecha_part_fabricator{dir = 1; name = "counterfeit fabricator"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"bKu" = (/obj/machinery/mecha_part_fabricator{dir = 1; id = "0"; name = "counterfeit fabricator"; req_access = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bKv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bKw" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "O2 to Airmix"; on = 1},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage) "bKx" = (/obj/structure/window/reinforced,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage) @@ -4711,7 +4711,7 @@ "bME" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) "bMF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bMG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bMH" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) +"bMH" = (/obj/item/clothing/glasses/hud/health,/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bMI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bMJ" = (/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "bMK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 10; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -4743,7 +4743,7 @@ "bNk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bNl" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bNm" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bNn" = (/obj/item/clothing/glasses/hud/health,/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; req_access = "0"; req_one_access = "0"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bNo" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNp" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bNq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/turret_protected/ai_upload) @@ -4937,7 +4937,7 @@ "bQW" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway) "bQX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Fore Primary Hallway Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) "bQY" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/space,/area) -"bQZ" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/closet/secure_closet/security/cargo,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) +"bQZ" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) "bRa" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "bRb" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/storage) "bRc" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/device/radio/intercom{pixel_y = -25},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) @@ -4963,7 +4963,7 @@ "bRw" = (/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) "bRx" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bRy" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/door_control{id = "kitchenhydro"; name = "Service Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bRz" = (/obj/machinery/vending/medical,/obj/machinery/light/small,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRz" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bRA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bRB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bRC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -5008,7 +5008,7 @@ "bSp" = (/obj/machinery/light_construct,/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "bSq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bSr" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bSs" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/monitor{name = "Engineering Power Monitoring Console"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Engineering Power Monitoring"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) +"bSs" = (/obj/structure/stool,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "bSu" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/camera{c_tag = "AI Upload Chamber - Starboard"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bSv" = (/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) @@ -5240,7 +5240,7 @@ "bWN" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bWO" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) "bWP" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) -"bWQ" = (/obj/structure/flora/tree/festivus{pixel_x = -16},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"bWQ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bWR" = (/turf/simulated/floor/airless{icon_state = "solarpanel"},/area) "bWS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5430,7 +5430,7 @@ "cav" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/science{pixel_x = 32},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "caw" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics) "cax" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) -"cay" = (/obj/structure/closet,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cay" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "caz" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "caA" = (/turf/simulated/wall,/area/medical/surgery) "caB" = (/obj/structure/closet/wardrobe/pjs,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) @@ -5716,7 +5716,7 @@ "cfV" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - N2O"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine/n20,/area/maintenance/storage) "cfW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cfX" = (/obj/structure/stool/bed/chair/wood/wings{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"cfY" = (/obj/machinery/camera/motion{c_tag = "E.V.A. Storage #2"; dir = 8},/obj/machinery/requests_console{department = "EVA"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"cfY" = (/obj/machinery/atmospherics/trinary/filter{req_access = "0"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cfZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cga" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboard) "cgb" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/library) @@ -5753,7 +5753,7 @@ "cgG" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "cgH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "cgI" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cgJ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"cgJ" = (/obj/machinery/camera/motion{c_tag = "E.V.A. Storage"; dir = 8},/obj/machinery/requests_console{department = "EVA"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cgK" = (/obj/structure/closet,/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/maintenance/storage) "cgM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 2; icon_state = "blackcorner"},/area/maintenance/storage) @@ -5811,7 +5811,7 @@ "chM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "chN" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "chO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "CMO Maintenance"; req_access_txt = "40"},/turf/simulated/floor/plating,/area/medical/cmo) -"chP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) +"chP" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "chQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/carpet,/area/security/vacantoffice) "chR" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) "chS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5856,7 +5856,7 @@ "ciF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/medical/surgery) "ciG" = (/obj/structure/stool/bed/roller,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciH" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"ciI" = (/obj/machinery/atmospherics/trinary/filter,/turf/simulated/floor/plating,/area/maintenance/starboard) +"ciI" = (/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "ciJ" = (/obj/machinery/light/small,/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft"; dir = 1; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "ciK" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) "ciL" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/cryo) @@ -5941,7 +5941,7 @@ "ckm" = (/obj/structure/lamarr,/obj/machinery/light/small{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/hor) "ckn" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "cko" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/vending/dinnerware,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) -"ckp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) +"ckp" = (/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "ckq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "ckr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cks" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/storage) @@ -5985,7 +5985,7 @@ "cle" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "clf" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clg" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) -"clh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) +"clh" = (/obj/item/weapon/cigbutt/cigarbutt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cli" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/closet/secure_closet/CMO,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "clj" = (/obj/machinery/light_construct{dir = 4},/turf/simulated/floor/wood,/area/security/vacantoffice) "clk" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -6042,7 +6042,7 @@ "cmj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cmk" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/light/small{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "cml" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) -"cmm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor,/area/toxins/storage) +"cmm" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/contraband/poster,/obj/item/weapon/retractor,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cmo" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/light{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmp" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/library) @@ -6053,7 +6053,7 @@ "cmu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cmv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cmw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cmx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cmx" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "cmy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cmz" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmA" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior Aft"; dir = 2; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -6140,7 +6140,7 @@ "cod" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "coe" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "cof" = (/obj/item/weapon/cigbutt,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) -"cog" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/toxins/storage) +"cog" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/bodybag,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "coh" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/weapon/wrench,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage) "coi" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "coj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10.1-Aft-Port-Corner"; location = "10-Aft-Central"},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) @@ -6196,7 +6196,7 @@ "cph" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Command Hallway - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/main) "cpj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/sortjunction{sortType = 21},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"cpk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/turf/simulated/floor,/area/toxins/storage) +"cpk" = (/obj/structure/closet,/obj/item/clothing/glasses/science,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) "cpl" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgical_drapes,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/assembly/robotics) "cpm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpn" = (/turf/simulated/floor/wood{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/library) @@ -6271,7 +6271,7 @@ "cqE" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/assembly/robotics) "cqF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cqH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"cqH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqI" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cqJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cqK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -6332,7 +6332,7 @@ "crN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "crP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"crQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"crQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "crR" = (/obj/machinery/door/window/eastleft{dir = 4; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor/plating,/area/chapel/main) "crS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "crT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -6364,7 +6364,7 @@ "cst" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "csu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/assembly/robotics) "csv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/assembly/robotics) -"csw" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"csw" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "csx" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/genetics) "csy" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/robotics) "csz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -6441,7 +6441,7 @@ "ctS" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/port) "ctT" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "ctU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"ctV" = (/obj/machinery/light/small,/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"ctV" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "ctW" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "ctX" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "ctY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -6449,7 +6449,7 @@ "cua" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cub" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuc" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cud" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"cud" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cue" = (/obj/structure/stool,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cuf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cug" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -6584,7 +6584,7 @@ "cwF" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/cable_coil,/turf/simulated/floor,/area/assembly/chargebay) "cwG" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) "cwH" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) -"cwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cwK" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "cwL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -6612,8 +6612,8 @@ "cxh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cxi" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) "cxj" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) -"cxk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"cxl" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) +"cxk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cxl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/dispenser,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cxm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/robotics) "cxn" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) "cxo" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) @@ -6629,7 +6629,7 @@ "cxy" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cxz" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "cxA" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 8; name = "Genetics Desk"; req_access_txt = "5;9"},/obj/machinery/door/window/southleft{dir = 4; name = "Outer Window"},/obj/machinery/door/poddoor/shutters/preopen{id = "genetics"; name = "genetics desk shutters"},/turf/simulated/floor/plating,/area/medical/genetics) -"cxB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/stool,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"cxB" = (/obj/machinery/disposal{pixel_x = -2; pixel_y = -2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cxC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cxE" = (/turf/simulated/floor{icon_state = "bluefull"},/area/medical/genetics) @@ -6641,7 +6641,7 @@ "cxK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/hologram/holopad,/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "cxL" = (/turf/simulated/wall,/area/security/checkpoint/medical) "cxM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/xenobiology) -"cxN" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) +"cxN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cxO" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxP" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "cxQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6678,11 +6678,11 @@ "cyv" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cyw" = (/obj/machinery/power/smes{charge = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cyx" = (/obj/machinery/door/airlock/maintenance{name = "Robotics Maintenance"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) -"cyy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/maintenance/aft{name = "Aft Maintenance"}) +"cyy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cyz" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) "cyA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cyC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"cyC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cyD" = (/obj/structure/stool/bed/chair{pixel_y = -2},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cyE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyF" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology) @@ -6739,7 +6739,7 @@ "czE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "czF" = (/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "czG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"czH" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"czH" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "czI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "czJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) "czK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/assembly/chargebay) @@ -6759,10 +6759,10 @@ "czY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) "czZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) "cAa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cAb" = (/obj/item/weapon/cigbutt/cigarbutt,/turf/simulated/floor/plating,/area/security/checkpoint/medical) -"cAc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cAb" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/obj/structure/table/reinforced,/obj/machinery/light,/turf/simulated/floor,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cAc" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cAd" = (/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/contraband/poster,/obj/item/weapon/retractor,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cAe" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cAf" = (/obj/structure/closet/l3closet/virology,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cAg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/toxins/server{name = "\improper Research Division Server Room"}) "cAh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) @@ -6821,10 +6821,10 @@ "cBi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/medical/virology) "cBj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cBl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cBl" = (/obj/item/device/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/device/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cBm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bedsheet/medical,/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cBn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) -"cBo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cBo" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area) "cBp" = (/obj/machinery/space_heater,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/weapon/extinguisher,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) @@ -6838,10 +6838,10 @@ "cBz" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBA" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher{pixel_x = 4; pixel_y = 3},/obj/item/weapon/extinguisher,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cBB" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/port) -"cBC" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/bodybag,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cBC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cBD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) -"cBF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"cBF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cBG" = (/obj/machinery/biogenerator,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cBH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7313,7 +7313,7 @@ "cKG" = (/turf/space,/area/shuttle/escape_pod3/centcom) "cKH" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "cKI" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"cKJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) +"cKJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cKK" = (/obj/structure/stool/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) "cKL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) "cKM" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/device/analyzer/plant_analyzer,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7342,7 +7342,7 @@ "cLj" = (/obj/machinery/vending/cigarette,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cLk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cLl" = (/obj/machinery/vending/cola,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"cLm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cLm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cLn" = (/turf/simulated/shuttle/floor,/area/supply/dock) "cLo" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cLp" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/plating,/area/supply/dock) @@ -7490,7 +7490,7 @@ "cOb" = (/turf/unsimulated/wall,/area/centcom/holding) "cOc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cOd" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"cOe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cOe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cOf" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) "cOg" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "cOh" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) @@ -8879,20 +8879,20 @@ "doM" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doO" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless,/area/mine/abandoned) -"doP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"doP" = (/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "doQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/north_outpost) "doR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doS" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "doT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/mine/explored) "doU" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless,/area/mine/abandoned) -"doV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"doV" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "doW" = (/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) "doX" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "warning"},/area/mine/north_outpost) "doY" = (/turf/space,/area/mine/unexplored) "doZ" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/explored) "dpa" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) "dpb" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dpc" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dpc" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_x = 24; pixel_y = -24},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; dir = 8; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dpd" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dpe" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) "dpf" = (/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) @@ -8909,7 +8909,7 @@ "dpq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dpr" = (/turf/simulated/mineral/random/high_chance,/area/mine/unexplored) "dps" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/mine/west_outpost) -"dpt" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dpt" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dpu" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "dpv" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dpw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -9052,8 +9052,8 @@ "dsd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) "dse" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsf" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dsg" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dsh" = (/obj/structure/dispenser,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsg" = (/obj/item/device/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/device/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/device/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/device/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsh" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) "dsj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/living_quarters) "dsk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) @@ -9061,11 +9061,11 @@ "dsm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters) "dsn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) "dso" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/production) -"dsp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsp" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsq" = (/turf/simulated/floor,/area/mine/production) "dsr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dss" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dst" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dss" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dst" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsu" = (/turf/simulated/floor,/area/mine/eva) "dsv" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/eva) "dsw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/eva) @@ -9074,7 +9074,7 @@ "dsz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/eva) "dsA" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/mine/west_outpost) "dsB" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/mine/west_outpost) -"dsC" = (/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dsC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "dsD" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters) "dsE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dsF" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/mine/west_outpost) @@ -9118,7 +9118,7 @@ "dtr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dts" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dtt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"dtu" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dtu" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; dir = 8; invuln = 1; light = null; name = "Hardened Bomb-Test Camera"; network = list("Toxins"); use_power = 0},/obj/item/target/alien{anchored = 1},/turf/simulated/shuttle/plating{dir = 4; icon_state = "warnplate"; luminosity = 2; nitrogen = 0.01; oxygen = 0.01},/area) "dtv" = (/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "loadingarea"},/area/mine/production) "dtw" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "dtx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) @@ -9126,7 +9126,7 @@ "dtz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance) "dtA" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance) "dtB" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/mine/production) -"dtC" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_x = 24; pixel_y = -24},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dtC" = (/obj/structure/table,/obj/item/clothing/mask/gas,/obj/item/weapon/crowbar,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dtD" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/turf/simulated/floor,/area/mine/eva) "dtE" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/mine/eva) "dtF" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/eva) @@ -9159,7 +9159,7 @@ "dug" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) "duh" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "dui" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"duj" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"duj" = (/obj/structure/table,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) "duk" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "dul" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/mine/living_quarters) "dum" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) @@ -9175,7 +9175,7 @@ "duw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) "dux" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/production) "duy" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) -"duz" = (/obj/item/device/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/device/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/device/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/device/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"duz" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "duA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "duB" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "duC" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) @@ -9195,7 +9195,7 @@ "duQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) "duR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "duS" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/mine/living_quarters) -"duT" = (/obj/item/device/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/device/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table,/obj/machinery/light,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"duT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "duU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/medical/medbay3{name = "Medbay Aft"}) "duV" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "duW" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/machinery/mineral/output,/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) @@ -9222,7 +9222,7 @@ "dvr" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters) "dvs" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters) "dvt" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"dvu" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dvu" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dvv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) "dvw" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Airlock"; dir = 8; network = list("MINE")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/production) "dvx" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production) @@ -9471,8 +9471,8 @@ "dAg" = (/obj/machinery/door/airlock/maintenance{name = "Mech Bay Maintenance"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAh" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "dAi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/virology) -"dAj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"dAk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"dAj" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dAk" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dAl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dAm" = (/obj/structure/table,/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "dAn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -9489,17 +9489,17 @@ "dAy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/robotics) "dAz" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/assembly/robotics) "dAA" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Virology APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology) -"dAB" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dAB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dAC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dAD" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "dAE" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dAF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dAG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/aft) -"dAH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dAI" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dAH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"dAI" = (/obj/structure/closet,/obj/item/device/assembly/prox_sensor{pixel_x = 2; pixel_y = -2},/obj/item/device/assembly/signaler{pixel_x = -2; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAJ" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "dAK" = (/obj/machinery/atmospherics/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dAL" = (/obj/effect/decal/cleanable/robot_debris,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dAL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "dAM" = (/obj/machinery/door/airlock/maintenance{name = "Toxins Lab Maintenance"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dAN" = (/obj/structure/showcase/fakesec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) "dAO" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) @@ -9507,8 +9507,8 @@ "dAQ" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "dAR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "dAS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) -"dAT" = (/obj/item/weapon/storage/box,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dAU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dAT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dAU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "dAV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dAW" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dAX" = (/turf/unsimulated/wall/fakedoor{name = "Shuttle Bay B"},/area/centcom/holding) @@ -9518,7 +9518,7 @@ "dBb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) "dBc" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "dBd" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dBe" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dBe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "dBf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/laborcamp/station) "dBg" = (/obj/machinery/door/poddoor{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBh" = (/obj/structure/rack,/obj/item/weapon/tank/air,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -9537,7 +9537,7 @@ "dBu" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) "dBv" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod4/station) "dBw" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dBx" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dBx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dBy" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod4/station) "dBz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) "dBA" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) @@ -9641,7 +9641,7 @@ "dDu" = (/turf/simulated/mineral/random/labormineral,/area/mine/explored) "dDv" = (/turf/simulated/floor{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored) "dDw" = (/turf/simulated/wall,/area/mine/laborcamp) -"dDx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"dDx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dDy" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dDz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area) "dDA" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area) @@ -9766,10 +9766,10 @@ "dFP" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security) "dFQ" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "dFR" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"dFS" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) -"dFT" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=NMine"; location = "SMine"},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) +"dFS" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar/red,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dFT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dFU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp/security) -"dFV" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"dFV" = (/obj/item/weapon/broken_bottle,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dFW" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "dFX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "dFY" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) @@ -9802,23 +9802,23 @@ "dGz" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp/security) "dGA" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGB" = (/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dGC" = (/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dGD" = (/obj/item/stack/sheet/metal,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"dGC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) +"dGD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dGE" = (/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) -"dGF" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dGF" = (/obj/structure/stool,/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/item/weapon/handcuffs,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dGG" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGH" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dGI" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps,/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dGI" = (/obj/item/weapon/dnainjector/stuttmut,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/wirerod,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dGJ" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGK" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp) "dGL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp) -"dGM" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dGM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Scientist"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/toxins/storage) "dGN" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "dGO" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGP" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGQ" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGR" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dGS" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dGS" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dGT" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) "dGU" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGV" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) @@ -9826,18 +9826,18 @@ "dGX" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGY" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGZ" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp) -"dHa" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"dHa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) "dHb" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp) -"dHc" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dHc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/stool,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "dHd" = (/obj/machinery/door/airlock{name = "Vending"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHe" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHf" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHg" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHh" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Sleeper"; location = "Vending"},/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dHi" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) -"dHj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) +"dHi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/toxins/storage) +"dHj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "dHk" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dHl" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dHl" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dHm" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) "dHn" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dHo" = (/obj/machinery/vending/sustenance,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) @@ -9866,11 +9866,11 @@ "dHL" = (/obj/machinery/bot/secbot/beepsky{desc = "Ofitser Beyepsky. Powered by tears and swet of laborer."; name = "Ofitser Beyepsky"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=SMine"; location = "Storage"},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) "dHM" = (/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) "dHN" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dHO" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dHO" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dHP" = (/obj/structure/rack,/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) "dHQ" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/explored) -"dHR" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dHS" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dHR" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dHS" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/clothing/mask/gas,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dHT" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) "dHU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/north_outpost) "dHV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) @@ -9905,7 +9905,7 @@ "dIy" = (/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "dIz" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIA" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"dIB" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dIB" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dIC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/tcommsat/server) "dID" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dIE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/lattice,/turf/space,/area) @@ -9938,15 +9938,15 @@ "dJf" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJg" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Research Division Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) -"dJi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) +"dJi" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "dJj" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJl" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJm" = (/obj/machinery/mass_driver{dir = 2; id = "chapelgun"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main) "dJn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dJo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"dJo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dJp" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dJq" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dJq" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins - Lab"; dir = 2; network = list("SS13","RD")},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJs" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/virology) "dJt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -9978,7 +9978,7 @@ "dJT" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJU" = (/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"},/area) "dJV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"dJW" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; dir = 8; invuln = 1; light = null; name = "Hardened Bomb-Test Camera"; network = list("Toxins"); use_power = 0},/obj/item/target/alien{anchored = 1},/turf/simulated/shuttle/plating{dir = 4; icon_state = "warnplate"; luminosity = 2},/area) +"dJW" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dJX" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/wood,/area/library) "dJY" = (/obj/machinery/door/airlock{id_tag = "AuxToilet1"; name = "Unit 1"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJZ" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/virology) @@ -10006,12 +10006,12 @@ "dKv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/crema_switch{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "dKw" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dKx" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"dKy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar/red,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dKy" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dKz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "dKB" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dKC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/security/checkpoint/medical) -"dKD" = (/obj/item/weapon/broken_bottle,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dKC" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dKD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dKE" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dKF" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/virology) "dKG" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -10020,7 +10020,7 @@ "dKJ" = (/obj/item/clothing/suit/ianshirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dKK" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "dKL" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology) -"dKM" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/flora/kirbyplants/dead{desc = "A rather demotivating prison decoration."; layer = 4.1; name = "potted plant"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dKM" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dKN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) "dKO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area) "dKP" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area) @@ -10033,23 +10033,23 @@ "dKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 26; pixel_y = 26; req_access_txt = "39"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dKX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -26; pixel_y = 28; req_access_txt = "39"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) "dKY" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) -"dKZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dKZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dLb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "dLc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dLd" = (/obj/machinery/door/airlock/maintenance{name = "airlock access"; req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dLe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"dLe" = (/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dLf" = (/obj/machinery/door/airlock/research{name = "Toxins Space Access"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"dLg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"dLh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dLg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/toxins/storage) +"dLh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dLi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor/plating,/area/medical/virology) "dLj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) "dLk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dLl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/virology) "dLm" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dLn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) -"dLo" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) -"dLp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/ore_box,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dLo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/obj/machinery/light/small{dir = 8},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dLp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dLq" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/folder/red,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/security/vacantoffice) "dLr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dLs" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) @@ -10077,7 +10077,7 @@ "dLO" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "dLP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "dLQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dLR" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins - Lab"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dLR" = (/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dLS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) "dLT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "dLU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/gateway) @@ -10091,7 +10091,7 @@ "dMc" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dMd" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "dMe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"dMf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dMf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dMg" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "dMh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "dMi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) @@ -10110,7 +10110,7 @@ "dMv" = (/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 0; pixel_y = 24; req_access_txt = "39"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) "dMw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay3{name = "Medbay Aft"}) "dMx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dMy" = (/obj/structure/stool,/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/item/weapon/handcuffs,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dMy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dMz" = (/obj/structure/table,/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "dMA" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/gloves/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "dMB" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -10129,8 +10129,8 @@ "dMO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) "dMP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) "dMQ" = (/obj/machinery/light,/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) -"dMR" = (/obj/item/weapon/dnainjector/stuttmut,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/wirerod,/turf/simulated/floor/plating,/area/security/checkpoint/medical) -"dMS" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/security/checkpoint/medical) +"dMR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dMS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Scientist"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dMT" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/stool/bed/roller,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) "dMU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Aft Primary Hallway - Middle"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "dMV" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair,/mob/living/carbon/human{name = "Artificial Test Subject Alpha"; real_name = "Artificial Test Subject Alpha"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area) @@ -10152,17 +10152,17 @@ "dNl" = (/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dNm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/assembly/chargebay) "dNn" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/assembly/chargebay) -"dNo" = (/obj/machinery/portable_atmospherics/canister,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNp" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNq" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNr" = (/obj/machinery/portable_atmospherics/canister,/obj/structure/window/reinforced{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNs" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNt" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Toxins - Launch Area"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNu" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNv" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNw" = (/obj/machinery/atmospherics/portables_connector,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNy" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) +"dNp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNr" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNs" = (/obj/machinery/atmospherics/trinary/filter{dir = 8; req_access = "0"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNu" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/camera{c_tag = "Toxins - Launch Area"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNw" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNx" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"dNy" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=NMine"; location = "SMine"},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) "dNz" = (/obj/item/trash/chips,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dNA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) "dNB" = (/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) @@ -10174,8 +10174,8 @@ "dNH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNK" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"dNL" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/wall,/area/mine/laborcamp/security) "dNM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNN" = (/obj/machinery/light{dir = 2},/obj/machinery/camera{c_tag = "Xenobiology Lab - Test Chamber"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dNO" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -10183,16 +10183,16 @@ "dNQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNR" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNV" = (/obj/structure/table,/obj/item/clothing/mask/gas,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNT" = (/obj/structure/ore_box,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) +"dNU" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) +"dNV" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dNW" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/effect/landmark{name = "blobstart"},/obj/structure/closet/firecloset,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dNZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dOa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dOb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dOc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dNX" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dNY" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored) +"dNZ" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor,/area/mine/laborcamp) +"dOa" = (/turf/simulated/floor,/area/mine/laborcamp) +"dOb" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored) +"dOc" = (/turf/simulated/floor{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored) "dOd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dOe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dOf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/assembly/chargebay) @@ -10200,11 +10200,11 @@ "dOh" = (/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/alien,/obj/item/target/syndicate,/obj/structure/closet/crate/secure{desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; req_access_txt = "8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dOi" = (/obj/machinery/doppler_array{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dOj" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dOk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dOl" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 30; pixel_y = 0},/obj/structure/table,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOk" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored) +"dOl" = (/obj/structure/ore_box,/obj/machinery/mineral/input,/turf/simulated/floor{tag = "icon-asteroidwarning (WEST)"; icon_state = "asteroidwarning"; dir = 8; temperature = 273.15},/area/mine/explored) "dOm" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/obj/machinery/meter,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dOn" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"dOo" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"dOo" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) "dOp" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area) "dOq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/storage) "dOr" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) @@ -10298,13 +10298,22 @@ "dQb" = (/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/mine/production) "dQc" = (/obj/machinery/computer/shuttle/mining{req_access = null},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/mine/production) "dQd" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 4; name = "west outpost outlet"; pixel_y = -2},/turf/simulated/wall/r_wall,/area/mine/production) -"dQe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"dQe" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp) "dQf" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area) "dQg" = (/obj/machinery/door/airlock/glass_security{name = "Centcom Security"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "dQh" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Xenobiology Lab - Central"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"dQi" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp/security) -"dQj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/laborcamp) +"dQi" = (/obj/machinery/mineral/unloading_machine{dir = 1},/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) +"dQj" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/mineral/output,/turf/simulated/floor{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored) "dQk" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/mine/north_outpost) +"dQl" = (/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/explored) +"dQm" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp) +"dQn" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dQo" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dQp" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dQq" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dQr" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dQs" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dQt" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10378,13 +10387,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaauWaaiaajaaiaaiaDmawZaayaaxawXaxcaxmaaoaaWazRaaiauNahqaxyaxpaxAaxzaxoabjabhahXahXahXabhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaadaaaaopaseawIawFawGawKawJanyanyanyanyanyaadaadaaaaaaaaaaaaaaaabaaaaabCabCaupabCabCaadagTaaaabCabCaupabCabCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaOaaOaaTaaTaaOaaaabYaaaaaTaaOaaTaaOaaTaaaaaaaaaaaaaadauWaaiauUauVaaRaaRauRaaRauSauTaaUauPauQaayaayauOauNauMauDauCauzahqaaaaadahTahRahRahRahTaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaadaadaaaanyanyanyapmauvaurauqapVausauuautanuaaaaadaaaaaaaacaaaaaaaakaadafgafgafgafgafgaupafMaupafgafgafgafgafgaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadavuavtavtavtdehaadaadaadaadaadaadaakauNaaiavGavMaayaayavCavDavzavBadbavyavwaaRaaRavrauNavsavoavnavqavpaadaadahaahmahmahmahpaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaanuauYavbauXaxJavjavhavfaIfaqOavkaopaaaaadaaaaaaaaaaaaaaaaakaaaafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaFcaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaOWaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaadauWaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiauNahqaEGaEBaEAahqaaaaadaaaaaaaaaaIWaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaadaaaaopavNaEIaOWaEKaDoaELanyanyanyanyanyaadaadaaaaaaaaaaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaadaaaaadaadabYaadaadaaaaaaaaaaaaaaaauWabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiauNawyavoavnavqavpaaaaadaaaabvabvabvabvabvaaaaadaaaaaaabwabwaWyaWMaYuabwabwaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadanyanyanyapmamRaurauqapVaFdavbauYanuaaaaadaaaaaaaaaaaaaaaaaEaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaadaaaaaaajEajFajEaadaaaaaaaaaaaaaadauWaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauNahqaDtauCaDrahqaadaadabvabvaDwaDvaNBabvabvaadaadabwabwaNTaDAaDCaSMaDOabwabwaadahwahwaLRahwahwaadaadaadaadaadaadaadaadaaaanuatRauuaDWanyavjarIaDXawaavSavNaopaaaaadaadaadaadaadaadaakaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaadaaaakhaQJakhaadaadaadaadaadaadauNaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiaajayOaWfaWeaWkayOaadabvabvaOJaEqaEpaEpaErabvabvaadabwaDYaEaaEbaEeaUCaVuaEmabwaadahwaSNaSPaWxahwaaaaaaaaaaadaaaaaaaaaaadaaaaopaseaExaONaEwaDoaEuanyanyanyanyanyaaaaaaaadaaaaaaaaaaaaaakaadafJafKafKafKafKaaAafMaazafOafOafOafOafPaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadakEakFakGakHakIaaaaadaaaaaaaadauWaBuaBvaBwaByaBAaAQaARaATaAWaBfaBqaCYaBtaBLaFVaBJaBIaBWaBRaBOaBNaadabvaDiaBBaBHaBGaBFaBEaCtabvaadaIsaJRaLCaCvaCwaCbaEVaEyaERaadaGWaAqaFbaCAaLRaaacxdcxdcxdcxdaaaaaaaadaaaanyanyapmamRamRauraCBaCFaCCbsMcgaaaaaaacxdcxdcxdcxdaaaaaaaakaadawoawoawoawoawoaadafMaadawoawoawoawoawoaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaadaadakTakUaFRanWakTaaaaadaaaaaaaadauWaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaNbaFYaCLaDgaCHaDhaSLaGcaCTaDkaadabvaOiaBBaBHaBGaBFaBEaDaabvaadaSJaDbaQgaDcaSKaNdaQgaCXaRvaadahwaAqaAraCAahwadradradYagRadradradraadaaaanuavvaDpavxapVaDoaOpavAavAbnBavAavAavAavAaUnbUsavAavAaaaaadaadaaaaadaadaaaaaaaaaafMaaaaaaaadaaaaaaaadaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFaoFaKCalGalGalGalHakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaEhazmazlaIWazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaKGadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaoFaoFaKCalGalGalGalHakTaqaalJareakTaWoagVaWoajeaadauNaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaexaexaexabvabvabvaEhazmazlaFcazjazjazEabvaadabwaKYaCeaBYaCcaAIaBXaIXabwaadahwaAqaAraCAahwaAcadraAdadsaAeaKGadraadaaaaopaBDamfaAhanyaAjaAiajyavAbsLasSasSasSasSasSasSbsMavAaaaaadaaaaaaaaaaadaaaaaaaaaafMaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaMzaMuaoHamnaMmaMlakTamoarHamqakTaLOaLEaEHaWoajeauNauNaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaAuaLnaAvabvabvabvaAtaAsabvabvabvabvabvaBKabwabwaEgaElaEnaDGaEfabwabwaBKahnaDeaDjaEoahwadradradsadsaALaAManyanyanyanyanyaAPanyanyawKaAiajyaCWaCWaCWaCWaCWaCWaCWaCWbnBavAavAavAaaaaaaaaaaadaadaadaadafMaadaadaadaadaadaakaadaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaoFaugaoFaveamnavXaxbalDakTaleanbakTaxDazoawYatCajeaadaadaadaaaaadaaaaaaaaaaaaaaaakBakAakCatUarGasBaqvaqAaexaknailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadradranyajHatBajJatzajzajzajBajkajxajyaCWaiVaiXaiYajfaiTaiUaCWbsLaiPaiQcgaaaaaaaaaaaadaaaaaaagUaiOagUaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaqjamZaqjaqXargaqlaqmarkarJarjbGxaWoarTamuasFatQasnaadaadaadaadaadaadaadaadaadaadafQaeMaeMaeMaeMajLacZajMaexaikailaimabvaqcaipaiqairaiJakbacBanHakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaibadrapXahFahYahUahSahQahPahOahNaigaihaCWaCWaifaFwaFwaFxaFyaFzaCWavAaieavAavAavAacnaaaaadaaaaaaamXamYamXaaaaaaaadaaaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10399,51 +10408,51 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaadaadaaeaadaBVaadaaeaaeaaeaaeaaeaaeaCDaAxaCDafRaqhaKBaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBbHMbrTavabHMaGPaAfaGJazTaFubJhazYadraaaaaaaaaaaaaaaaaaaaaaaaaaaaczaqiaqeaqdaqgaqfazgaqxaqtaquaqpaqsaqnaqoaqsazcaqDaqoaqBaqCawgawvaqQaqPaqsaqNaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMarharmariarrarpabVamiamiamiamiamiabVarcabXabZaCWarDarFaCUarKarQarsaCWavAaznartarwazqaryarUarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaeaaeaaeaadaaeaaeaaeaadaKBaKBaKBarnaqhbrTaKBaaaaaaauIauJauKauJauLaaaaadaadaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaowaoxadraaaavUavUavUavUavUavUavUaaaaczaotaosaoraoqaooacKapoapqaiGayMapfapnaiGapzapfapqapAapraiMapwapxaoNaoMaoQaoPaoJaozaoLaxnapaaoZapcapbaoVaoUaoXaoWapNapLaeMaocadrarLakWakWakWamiamiamiamiamiaoAantabXapIaCWaCWaCWaCWapJaCWaCWaCWapCapDapHaonaonaonaolarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaaeaaeaaeaaeaaeawHaaeaadaadaadaadaKBbHMaqhardafUaaaaaaavLaUaayGavOavLavPavQavRawVawVawVawVanOawVawVadradraKBanNaKBadrakYadraaaavUavVavWaBTavYavZavUaaaalLanPanRalBamPamPacKajjavKajlaeMajmavJajoaeMajpawPajraeMaxPajpanvaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocadranXaobamaakWamiamiamiamiamiapsantaofaokalkaUwaUoaQsaodbvHbvHbvHaomaonaolarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMazxaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBarqaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkayaanZayIaxYbwtamlaycaycaycaycampamvamtawNawOasPamwaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaaaaaaauKawQawRawQauKawSawTawUawVawWazFaBeanharuawVatqarMazxaxdaxeadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaalLamNamNamQamPamOacKajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLamMaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansadranranqanpakWamiamiamiamiamiaqWantanlanmankaydanianjangarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaadaadauBavHauBauBauBauBauBavIauBauBayIaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaalLalIalCalBalFalEacKakqajRakraeMakqajRaksaeMakqajRaktaeMalNacRalMaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWadralZambamaakWafDafCafCafCafFakWamcabXamdalkalkaQsamhamjarNamkayaanZamwaxYbwtamlaycaycaycaycampamvamtawNawOasParqaadaadaaaaaaaaaaadaadaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyaxVawVazNazOazPazQahZadrakYadraaaazSazwazUazVazWauwavUaaaaczakXakRakQakJakDaczakLakMakNafQakLakMakNafQakLakMakNafQakOakPaliafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqbbDbaabaaaltalsalralralwaxZaluabXabZaljalkaUoaQsallarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaaaaaaavLaBaaBbaBcavLaBdavQavRawVdCoaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaacKbnzbnGbnEbnEbnzacKbnNbnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywblxafQainanebCWaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbngboHaZHbnebmWbnabmVbmVbmUbmVbmRabZaljalkaSZaQsallarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCybDdadrakYadraaabbxaaabgobgnbgoaaaaadaaaacKbphbnGbnEbnEbpiacKarvbpkbpjbEBbpobplbplbEIbplbprbpobpvbpubptbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEboFboGbotbovbowboCbonboqborbonbonbpbbpcalkaRLaQsallarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaadapBaaaaaaaaaaaaapBaaaaaaapBaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMacKbqVbGgbGObFMbGcbEMbELbELbELbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbqObAnbANbAPbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxbcEbCCbaabpUbpSbpTbpVaEDaEDbkoaEDbkoaEDaEDaEDbAjallarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbBMaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubymbsebaVbaybkJbbUboubaTbaUbaRbitbisbiqbkxbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbthaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbvBasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaawVawVawVblgbmIawVawVbrxbrAbrzbrpbrobrwbrvbrFbrGbrHbrIbrBbrCbrDbGUbrLbrMacKacKbGWaczbHlaczaczaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabpUabXbqYaEDaEDbqZbrabrhbrebrkbriaEDaEDallarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbtJaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaGubymbsebaVbaybkJbbUboubaTbaUbaRbitbisbiqbkxbikbicbidbtmbipbimbDpbAObAQbAfbtibDebDoaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEadqbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaabhPbhMbhOaEDbhGbhFbhwbhwbhwbhwbhvbyiaEDallarNbhAbhzbtgaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaadapBaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaHZbcKbcGaIcaIdaIebpRbcIbdzbdMbdMbnlbdMbdMbdMbnmaYhbjqbjsbjtbjgbjjaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphapiapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaabiGaJVbiHaEDaINbhwaIPbiLbiLbjbbiQbyQaEDallarNbhzbhzbjcaHFaHGazrampaGhbjdbthasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldblabkZbJibJibJibUraYhbAcbkUbkWbkRbkTbkNbkPbkLbkMaCQaGUaGUbkIbkKbwJbkHbkBaLUaLUaBzbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaBSbyWaBUbwoaqLbkpbkqbkfbkgbkcbjGbkkbklbkibkjbwmbiGaIGbiHbkoaINbknaKaaKcaKcbjUbjTbjXbjWbjVarNaKhaKhaHEaHFaHGbkbbypbyobjHbjRaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkbytaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhbmybmzbmzbmwbmxbmxbmxbmvbjlaaaaFsbAdaGYaGYaGYaGYaGYblVaFsaaaaxwblUavgblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBblFblHblJblMblNaNFaKaaKcaKcaKdbhwbwOaEDacjarNaKhblOaHDaGaasPbyraAJbysaAOblfasPaJeblhaDxaDxaDxaDyazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQabzKaKBaUDaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBasNaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbyKaJGbyLaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbyYbyZaIFaJSaKRbtHbztbzubzqbzsbzhbzjbzfbzgbzdbzebzabzcaMsaMsaMtbknbzvaEDacjarNasPbwtbwtasPasPbwtbzNbzMbzObzxasPasPaCfasPasPaCgbdIbzwaKpaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbSsbAmbzPbhxaAJbysaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbAibAbbzVbxfbBPaMDaMDaMEbBQayiaMGazDbBNaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbzTbBHbBHbBHbBHbZMbBHbBHbBHbBHbzSbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbSfaLQbPVbPTbPVaLQbSrbSiaaaaxwbiBawnbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbAeaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbAHaEDbAsbAybAzaNFbhwbhwbApbAoaEDacjarNbAlbAkbDHbAmbzPbhxaAJbysaAObAMbpebALaLhbAKayiayjaAUbAJaadapBaaaaaaapBaaaaaaaaaaaaapBaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwcXQcWwcWwcWwcWwaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSWaLQbTmaGYbSubSDaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoacTidtNdAubBabTobBbbBabBcbChbChbCebCgbClaKRbCibCjbBTaKRbBRbBSaEDaEDbBUbUPbCQbCPbCMbCIaEDaEDacjarNbCrbCqbCpbCobCAbAibAbbzVbxfbBPaMDaMDaMEbBQayiaMGazDbDXaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXdDNbUobBHbBHbBHbzTbBHbBHbBHbBHbZMbBHbBHbBHbBHbzSbBHbBHbBHaXfcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebKZaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaadaFsaFsaFsbCYaNlaNkaFsaFsaFsaadaxwbjuaIvblTaBQcbbaueaueaueaojaueauebCUaojaBQbkcdDPbCVbwLaIFbvDaIFaIEaJSaIFbDOaIFaIFaJSaKRaIFaKRaJSbDLbDMaEDaEDaEDaEDapJaEDaEDaEDaEDbbNacjarNbWcaTgbDCbDBbDIbAVbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlbDvbDrbDraFUbDrbDrbDrbDraJUbDrbDrbDrbDraFUbDrbDrbDsaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaPyaPyaPyaPyaPyaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbmfaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbEPbtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbqlaJnaKvaKvaKwaKvaIeaJuaIebuKaPybqjbqdbmtbmOaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbqqaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbyxaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaaaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaPyaPyaPyaPyaPyaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbATavlarPbmfaojaojbsDbsIaojaChbkcbsjbslbsmbsrbsubsrbsvbECbsrbsKbsrbsrbsrbsrbsJbsrbsrbsPbuHbbObsOaUobyOahrbWIbsRbsQaUoaUnacjarNbtdbtcbtcbtabsZbsVbsTbsSbtkbtlbvubtnbteawMawNaPoasPaaaaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbFjavAaQNaaaaFaaFaaFaaFaaFaaFaaFaaaaaaaaZpbqlaJnaKvaKvaKwaKvaIeaJuaIebuKaPybqjbqdbmtbmOaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbHwbukbqqaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbyxaoabkcbtLbtHbuHaCZaCZaCZaCZaCZbuFbuGbuLbuBbuCbuDaCZbuSbuSbuSbuSavAbuObYbbYbbutbusbYbbYbbYbbupbuqaNLaNLaNLaNLaNLbuvbuubwtbuybuVbuWbuUaAJbuTavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbvBaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaTpaZDbrsbIdaZfbsfbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaaaZpbvgaJnaKvaKvaKwaKvaIeaTAbumbujbwKbtqbtjbxSbyyaKBasNaYhaYhaYhbjqbvMbvNbjlbVcbjgbjlbSXbTHbNpaNnbvAaNpbvraNnbyCbIVbvdbIUbvebqFbuZbuYbuMbLGbOOaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbvCaJzaJzaJzaJzaJzaJzaJzaJzavAavAavAavAavAacjaVMaVMaVMapJaVMaVMavAbvSavAaNLbvZbvUbvTaNLbEnbBLaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaEaakaakaakaaEaadaaEaakaakaaEaaEaakaakaakaaEaadaadaadaadaadaAXaNKbIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbyFaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbEzbGdbFFbBjbBzaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbMHaQbaVsbziaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbzmaVkaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbzHbxpbxpbOdbxpbzIaNLbxubuVbzkaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbJaaxxbJCbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbyFaQNaaaaaaaadaadaaaaaaaaaaaaaaaaaaaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbEzbGdbFFbBjbBzaKBbJhbxbbOSbITbxebuzbwXbwYchmbXWbXZaVkcdbaVkbBNbBMaVsbziaVtaVkbJRaVvbwMaVxaVybuEaVAaVBaVCaVDaVDaVDbvbbzmaVkaVDaVHaVDbwIbwHaVkbwxaVkbwvbwwaJzbxBbxJbxLbxNbxObxPaJzbxQaQsaQsaQsaQsacjaVMbxRbxkbxjbxmaVMciUbKvbNoaNLbzHbxpbxpbOdbxpbzIaNLbxubuVbzkaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaAXbtoaIlcCmaaaaFUatXatXayKbJjbJaaxxbJCbJjayLatXaGvaFUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaPzaOmaOlaPyaPyaPyaPyaPxaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVaWKaOBaWKaWKaWKaWKaODaOCaJzaOyaOuaOuaOtaOsaOraHUaHUaHUaHUavAavAacjaVMaOqaRNaRZaWiaVMaQsaOhaThaNLaOdaOgaNXaQFaOjaUNaNLaNUaNSaNRaHoaUIaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaEaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaAXaAXaAXaAXaAXaAXaAXaNKaIlcCmaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaMfaIlcCmaMbaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHfaNDaNEaHfaNNaNPaHfaOvaOxaOwaOLaOzaSWaUHaYpaNzaNCaNCaPgaOMaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUEaNiaTjaSYaNjaSXaSYaSYaLdaYGaUFaJzaMAaMHaMFaMyaMwaTBaHUaMvaTraHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaUtbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaTCaHoaSEaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaNyawqatXawlawkawjatXawiaSCaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaULaadaaaaadaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaaXOaXOaXOaXOaXOaXOaXOaNJaXOaNmaNraNsaQSaKzaSbaSAaUPaNqaHfaNDaNEaHfaNNaNPaHfaOvaOxaOwaOLaOzaSWaUHaYpaNzaNCaNCaPgaOMaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaUEaNiaTjaSYaNjaSXaSYaSYaLdaYGaUFaJzaMAaMHaMFaMyaMwaTBaHUaMvaTraHUaaaavAacjaVMaMraNIaNVaUfaVMaQsaUtbPMaNLaMTaMUaMVaMWaMPaQKaNLaMSaMoaQhaHoaSEaMkaMiaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacXQaMcaIlcCmaaaaFUatXaNyawqatXawlawkawjatXawiaSCaGvaFUaaaaMfaIlcWuaaaaMbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaSeaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaHfaHfaHfaTwaTwaTwaHfaHfaNxaHfaTHaTFaTGaTDaTEaTvaTuaGRaGQaHdaTtaSWaRmaYpaRpaZNaZNaTRaZNaRoaZLaZLaRqaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaJzaQZaQYaQXaRdaRbaQLaRaaQLaQHaQGaaacgaacjaVMaXGaSBaTkaXEaVMaTNaiQaTMaNLaQxaQzaQwaQwaQBaQDaNLaQAaRgaQAaHoaRhaRjaXHaHoaRlasPasPasPasPasPasPasPasPasPbtpasPasPaRfasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaAXaQtaQraQoaUVaFUaFUaFUatXaTsawfavmatXatXatXauZavdaSHaGvaFUaFUaFUaUYaXfcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQhaQjaSGaZlaZmaPFaPVaPWaPQaPJaPQaPQaPSaPQaQCaHfaQVaQlaQqaQvaQyaREaReaSyaSnaRcaKTbbcaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCaURbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaPAaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaXabaHaMCbaJbaKaQkaQjaSGaZlaZmaPFaPVaPWaPQaPJaPQaPQaPSaPQaQCaHfaQVaQlaQqaQvaQyaREaReaSyaSnaRcaKTbbcaHiaQaaPZaZNaQcaIBbchbaOaZLaTfaQdaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTbdnbbCaURbflbdDbdpbdoaZTaWabbFbbGaJzaPeaPiaPhaPkaPjaPmaHUaPcaPbaHUaaaavAaudaVMaPdaPGaPIaPKaVMavAavAavAaNLaPnaPpaPwaTbaPCaPDaNLbwtaPNbwtaHoaPMaPPaPOaHoaJqaJqaJqajCajcaaaaaaaaaaaaaadaaaaaaasPaMqasPaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcWwcWwaLKaOYaIlaOXaLLaaaaaaaFUaPaaEjaWZatXatXaSUatXatXbycaPAaOZaFUaaaaaabcgaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpaGObckbcqbcraTpaZjaSeaROaRJaRFaRKbcxaRAbczbcAbaeaTlaHuaHtaHtaIaaIbaHIaHfaHfaHfaHfaHgaHraHsaHjaHqaGZaGXaGRaGQaHdaHbaHaaIHaYpbRAaZNaSDaIDaMeaIzaItaLPaIuaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaICaLAbdqaIAbdqbdraSvaZTaIpaYpaHmaJzaJzaJzaJzaIhaIgaJzaHUaHUaHUaHUaVaavAaIkaVMaIiaHCaHHaHBaVMaHzaHAaHyaNLaHMaHKaNLaNLaHJaHKaNLaHpaHvaHpaHoaHwaHlaHkaHoaHnaHxdBLdBvdBvdBKaaaaaaaaaaadaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaeaJJaJEaIqaJEaJTcCmaaaaaaaaaaFUaImaweaJBaJWbBfbBgaJQaJWaxsaweaGvaFUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaFWaFXaGdaGiaGsaGyaGzaFmaFpaFqaFEaFKaFNaFPaFQaGBaGAaGFaGEaGIaGHaGNaHiaYpaRnaZNaGKaGMaYDaJPaZLaADaBxaTLaadaadbeVaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkaGTaGLaDVaDzaZTaEMaGxaGwaFvbfAbfAaFAaFtaFraCSaFhbfAbfAbfAbfAayuaFBaFFaFDaFrbfwbfAaFIbfAaCSaCSbfAaFDaFDaQuaTmaFJaFLaFMaFnaFoaFnaOPaFlaFkaFjaFgbcebcedBCdBBdBzdBJaaaaaaaaaaadaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaeaJJaJEaGbaJEaJKcCmaaaaaaaaaaFUaGfaGgayKaEiaFiaJMaweaEkaJLatXaGvaFUaFUaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaNvaNxaHfaNuaNfaNtaMXaMZaMKaMNaHfaMxaLWaMnaHjaLVaHfaLTaLqaKVaKUaKTbbcaIHaYpbRAaZNaLSaPYaSwaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAbgBbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaQkaKgaKfaKebcCaKiaKkaHfaKyaJwaJyaJNaKmaIRaISaHfaJgaIKaILaIOaIQaHfaKHaKNaKIaKFaKDaSWaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIraIUaFOaGjaOGbiwbiwbiyaIJaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHfbiobiIbjebixaHfaHfaHfaHfaHfaHfaHfbjEaHfaHfbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbogaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbrKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaNvaNxaHfaNuaNfaNtaMXaMZaMKaMNaHfaMxaLWaMnaHjaLVaHfaLTaLqaKVaKUaKTbbcaIHaYpbRAaZNaLSaPYaSwaLMaZLbbRbbsaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaQebgAaQbbgCaZTaPlaLZaLYaLbbgMbgMbgMbgOaLeaLcbgMbgMbgMbgMbgMaLvaLiaLgaLfaKKaKLaKJaQmbgMaKObgSaKMbgMaKQaKPaTmaLaaKWaKWaKZaLxaKWaKWaLzbbEaLBaLDbcebcedBsdBvdBvdByaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddlJaaaaaaaaaaadaLLaLLaLKaLJaIlcCmaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHfaKyaJwaJyaJNaKmaIRaISaHfaJgaIKaILaIOaIQaHfaKHaKNaKIaKFaKDaSWaKEbbFaKlbleblebleblebleaZLaHhaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaCEaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCbilaKnaITbiwaFObiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIraIUaFOaGjaOGbiwbiwbiyaIJaFOaIYaIZaJaaJbaJcaJdaJfaMjaJlaJlaJhaZbaJtaJqaTmaTmaTmajCaDZaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaJAaJvaJDaJCaJHaJFajeaJIaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHfbiobiIbjebixaHfaHfaHfaHfaHfaHfaHfbjEaHfaHfbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybbqbjQaTLboLbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbcUbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbdtavAavAavAavAbdmavAbddbdgbcZbdabcXbcYbcVbhuaJlbcNbcRbcQaZbbgBaJqaTmbhsbcFbcLbcubcubctbcDaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaJAbbSbbQaaaaadbbIbbHbfWbbBbhNbrKaJXbhibkYbhobhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbiabkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaPLblnbloblpblqbeobqyboQboRbqzbqRblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbijaZTbkhaYpceXbaIbaGbaPbgibkdbawbazbfrbaubatbavaSRaQsbDEavAaUqaSRbasbWIbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnbgcbgabfYbeGbeybfRbfGbfGbfObfIbfEbfCbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfEbfEbfEbfEbfEbfCbfEbfFbfHbfGbfGbfGbeabdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIbrJcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbktbdKbvubdKbspaSWbsxbjxbfubmCbtPbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBblebdLbeibpHbtIbfBblqbmYbeobskbsYbvibndblGbeJburboPboybvkbnjbnkbvtaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbtgbjybgTbwbbwWbwnbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbruaSWbktbdKblPbdKbspaSWbsxbjxbfubmCbtPbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBblebdLbeibpHbtIbfBblqbmYbeobskbsYbvibndblGbeJburboPboybvkbnjbnkbvtaZTboobnnbnobnpbnqaZTaZTaZTaEMbnrbnsbkdbgKbgJbgIbkdbgPbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabgWbgYbhebhgbhbavAbddaYabgQaTmbgUbgVbogbjybgTbwbbwWbwnbmmbhrbafbadbkybjDcXlaaaaaabyhbbQaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaUkbezbcDaaaaadaMfbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpaadaaaaadaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbpxbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbvhbvhbySbosbmnbohbkVbdvbosbosbnDboAboBbkQblebbubbVbbfboNbbfbbvbbfbtIbtIboJbsqboLboLboLbszbppbndbdEbsyboLboLboLbrZbrPaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpabnsbcTbeIbeObeMbkdbeRbtNbeSbjfaSaaSaavAavAbeHavAbOobeDbeEaQsavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqaJqbtObjrbsaaTmaTmbffbfebeUaaaaJAbqUaaaaaaaadaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaUkbezbcDaadbeubesbqSbexbqKbtBaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaUSaWJaWIaXwaSTbdsaSTaPEaWFaUBbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaEMbqFblIbkdbkdbkdbkdbkdaTTaTSaSaaSaaSabdJbdJavAaTUavAavAaUnbbNbbMavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwarwarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaYxbcuaYdaXqaadaadaadaadaadaadaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaddlJaaaaUkaUjaJCaUmaUlajeaLJaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaWjaWzaXdaMQaMQbePaYYaZaaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaZuaZxboLaZnaXRaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaZzavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaZKaZOaZQaTJaTKaTVaTWaUuaUAaUKaVcaWcaLIaLIaSQaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaZyaUcaUeaUeaUeaUebiebhyaZSbcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuablPbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlaZVaYebncbgXbnfbabbdHbkuaVRbkabtubjCbjBbcwbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUbnKboKbniaTJbfbbfJbdRbeqbfNbfXbfKaTJaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqabwEaWEbrXbrYbscbqaaWwaWvbqaaWwaWvbqaaWAaYpbCxbleaVqaRGbaMbleaVJaOoaNwaVpbtIaZuaZxboLaZnaXRaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFbsHaSaaTPaSdaTQaRWaRUaRYaRXaStaSoaSzaSxaSmaSjaTCavAavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaadaaaaaaaaaaadaaaaadaaaaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaAXaQtaIlcCmaSSaFUaZKaZOaZQaTJaTKaTVaTWaUuaUAaUKaVcaWcaLIaLIaSQaFUaFUckMcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaZyaUcaUeaUeaUeaUebiebhyaZSbcaaZEbiAbacaXjaKebgebhpbgRbhtaXeaXhaXgbbKbcJbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqabqgaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuaaZzbucbudaZTbhHaYtaYPbqFbqGaSaaRUbhYaRUaXsaRUbhZbcPaRUaRUaVXaXuaXzaXyaXxaXvaXPaXUaXAaXCbiiavAaRPavAaXXaYaaXWbgXaYkaYlaZVaYebncbgXbnfbabbdHbkuaVRbkabtubjCbjBbcwbjPbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUbnKboKbniaTJbfbbfJbdRbeqbfNbfXbfKaTJaFUaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFbqGaSaaVNaVPaVOaVOaXIaVQaVOaRUaVUaVWaVVaRUaVXaRUaVYaVfaVhaVfaViaZAavAaRPavAaXkaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaZXaZZaZWaTJaYSaZgaZkaZqaZraZtaZvaTJaFUaaaaaacWwaOYaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYcsQaUxacpcbObqabwFbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpcaVbgzcsPcsMcsNcsOcsOcsOcsWcsTblsbwPbwQaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtcsScsRbqGcjqcjscjscjsaUzcjscjtcjsaRUaRUcjxaXuaVUcsVchpchYcimdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcnVcsXbVZbWjbocbodbodbgXaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaFUaFUaFUaFUaTJcoIconcpubfNcrjcpRcrqaTJaFUaaaaMfdIJbBHdLCcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBacpbWqcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcnPcbhcrHcrCcrucrAcrucrucrucrAcrucsacrWcrTcrScrVcrUcrMcrIcrIcrNcrJcrIcrLcrKcsGcsHcrTcsKcstcszcsFcrMcsocsqcrMcsrcsccsmbyDcnTchWaRUaRUaRUaRUaRUaRYaRUaRUaVXaRUaXuaVUciachpchYcimcigaXUcidcnUavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaadbNCbpJbodbpKbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcCmaaaaaaaaaaaadIDbUtbMUbMUdICclMdICbMUbMUaSOaLGaFUaFUckMdIEciNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCbNSbGxbuQcfmbxHccRbxHbxHchQbuQaUxdJPaUxdJRdJQcrkaUxacpbrTbqabwFbJpbXibWUbvabvabvabvabvacbPbvabeYcmMcqVcqZcrecpNcrfcrgcricmjcqNcqMcqLcqKcqdcqRcqncqOcqncqmcqmcqkcqJcqmcqpcqocpQcpScpNcpOcqdcqjcpVcqccpxcpBcprcpscpHcpMcpEclWchlcdpchnchdchdchechkaRUaVUaVWchpaXuaVUchochpchqcfZcfXcgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWbQYbRbbrqbodaPUbgXaadaacaRDaaaaRCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaWBcXPcWwcWwaaaaaaaJUdIvcnIdIwbHidIybHidIzcnOdIAaJUaaaaMfaIlcCmaMbaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxacpahccdabrVbrVbtEbZfbzobrVbrVbrVbrVcpnckVaXcaWCbWCbnUbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqcpmblscoNcoMcoPcoOcpacoMcphblscpmbCGbCGcdkccWbCGbCGbDRcdycdrbCGcdlcBKcmYbByclLcdQcdRcdKcdNcdAcdEcdncdpcdpcepcdpcejcdpcdTcdpcdSceFceCceycewcesavAbxhavAcfjcfhcfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaadbgXbgXbgXbgXbgXaadaaaaRDaaaaRCaaaaRDaakaaEaadaaEaakaakaaEaaEaakaakaakaAXaAXaAXaAXaQtdLmbBHbBHcppajeajeaJUcDBcdOcdVcLMclMcLMcdVcdOdAZaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVaKBacpaKSaUDbuQdLZccRbCfcnlchQbxHbuQdKmctXaUxdKkdKjctWaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaadcufcutcoMcoMcuscoMcoMcuqcugaadbCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSaduvcjsaRUcnWaRUaRUaRUcnJaXucnKaRUaRUaRUaRUcnQcimcnCcnFcnDcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcltbHnbVZbWjbuIbuJbuJbgXaadaadaWsaadaWuaadaRDaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaAXaaadEnbDrbDsaIlcCmaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadctIctNctKctJctQctKctJctMctLaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlctVcmBbnAbjScmVbjSbjSavAbxhciocvZcvYciobgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaMLdAbbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaadctIctNctKctJctQctKctJctMctLaadckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcmGcmGbEjcmybEjcLicLjcLlchPcmBbnAbjScmVbjSbjSavAbxhciocvZcvYciobgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaadbNCbwcbwdbwebgXaadaaaaRDaaaaRCaaaaWtaAXaAXaAXaAXaaEaAXaAXaAXaAXaaEaAXaadaaEaAXaAXaAXaAXaAXaMfaIlcCmaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrsbrsdLPbrrbrsbpNcuPaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQdKgasdarnctrdKedKhaKBacpbMbbqabCtbEYbtEbrYbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhcmobFCbFBclZcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSclOclNbgbavAbxhciocvRcuUcvXciodIYctCaQsaSRbgXbxqcfKcfJcfNcuQbxvbxwbxxbxychHbbmcficcCbHWbQYbRbbxCbuJcfVbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMbaQtctBaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIctwcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMcumdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpctmbqacjUbxXckacjZbrVccDckdckcctncdtbqacdFbqgaYpcdIbSAcbRbFvdLGcfYcbicbicbUcbXcdPctZbBqctcctactdbGzbGAbGBdLDclGcticthctlbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhciocuOcuNcuMcioaQsaQsaQsckFbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUcuucdOcdOcisdINciwcunaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzclybuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfciQcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtciocjPciSckwcioapCdJCckCciIbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZcltbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUycfwbuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcinchPcxwcfLcgNcgJcfEcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHacftbKbbIEbEjbfTcfFcQmbTlavAbxhciociociociociocluaQsaQscelbgXbArbZqbZpbUebBXbAvbBYbnTbxwbAwbbmcaObMhbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtciJbZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaXFbwBaUMaUMbfUaUMaUMcumdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpctmbqacjUbxXckacjZbrVccDckdckcctncdtbqacdFbqgaYpcdIbSAcbRbFvdLGcgJcbicbicbUcbXcdPctZbBqctcctactdbGzbGAbGBdLDclGcticthctlbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRbgxckNavAbxhciocuOcuNcuMcioaQsaQsaQsckFbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUcuucdOcdOcisdINciwcunaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzclybuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfciQcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVadJJbEjbEQbHacchbHabIzbEjbbwclEbVlclFbVmbVtciocjPciSckwcioapCdJCckCcfYbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZcltbHnbVZbWjbAAbABbACbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaXFbeNaXFaaaaaaaaaaadaaaaaaaaaaadaaaaKBbUwarXbUxbUybUzbUycfwbuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbJWbqabqgaYpbWgbSAbDQbFvbGCbHxbDQcbibJSbIocMCbJObBqcincaycxwcfLcgNbWQcfEcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHacftbKbbIEbEjbfTcfFcQmbTlavAbxhciociociociociocluaQsaQscelbgXbArbZqbZpbUebBXbAvbBYbnTbxwbAwbbmcaObMhbUiaadbNCbCabCbbCcbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaJUclBbMUbZtciJbZFbMUclCaJUaaaaaaaMfaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaULceQaULaadaadaadaadaadaadaadaadaadaKBbSFaXOaXOaXOaGGbrTaqhbHMaUDbtwbrTaDnccJbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPcekbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTedJFcbibDlcKpcJWbBqbBqcegcdDbLdcdjccMccLcdvcdscuhcdqceibCGbEadJDbDYdJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCbRcbRebOlbRYbRZbSbbScbRBbRCbRMbRSbEjbjSbjSbjSbjSavAbxhavAcxnckFaQsaQsaOhaThckEaQsbgXbgXcfpaSkbAubiJccgbDhblXbDibOybbmchBccCbHWbQYbRbbDkbABcPDbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaQtckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaKBaKBaKBaKBbQsbQHaXObQhbKtbQlbKtbKtbKtccabKtbKtbKtbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqcdMbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjbCSbQfbEjbOobPMbEqaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJcdLblXbEDbEEbbmcbGbMhbUiaadbgXbgXbgXbgXbgXaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcCmaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaMfaIlcCmaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaKBaKBceEccPaWoaKBccQaKBaKBaKBcoLbYwbYwbYwbYwbYwbYwbYwbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgcorbYeccrccnccicciccicclcdoccrdBiccidAScosccrccrcoycowcowcowcoxcowcovccccccccKcoEbXwcfSdBoccocciccicciccObTzcccccmbqFciechbcbocbrbOacbscbtbRacdcccxcipbShbNZckxbEjcbecbjcbWcbVbvHbRPasMbLMaQsavAavAavAavAavAcAkcxnbgXbgXbgXccbbmcaSkbFPbFQcoqbnIbFSbFTbFUbOzchXcltbHnbVZbWjbFWbFXbFXbgXaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaMfaIlcXPcWwcWwcWwcWwcWwcWwbQgcWwcWwcWwcWwcWwcWwaOYaIlcXlaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10453,80 +10462,80 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqbSkbYwbSlbSmbRKbYwbRRbQLbREbYwczGbYwbYwbYwbYwbYwbYwbYwbRzbRpbRxbRlbRnbRmcxLbQZbRkbRicxLbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbPObPObPObPObPOcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbBpbPwbMNatJaTZbMibMibMibMibMibMibMjavAbSBbSCbSCbgXbXNbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaadaadaadaadaadaadaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaabMqbMrbMrbMtbMsbMBbMAaaaaadaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbUKbUJbUHbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbTXbZIbTWbTVbTZbSMbPObZKbYZbZLbPObWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUncivbUpbUpchScpjaQsaUobULbNaavAavAavAavAavAbUMbVGbVObgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaabIWaaaaadbKmbKjbKjbKeaadaadaadaadaadbYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbJDbIZbKabJEbKpbXxbZabYYbGybGvcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFybTkbSgbRJbQubPObWwbMNbzlbEJbWDbWEbTJbUlbBObFxbznbVxbVybASbARbARbzpbMNcfQbICbMNatJaQsavAavAavAavAbLAbLIbLJbLWbLZbVQbNRbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaadaaaaaaaaaaadaaaaRDaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaadaadaadaaaaaaaaaaaaaaaaadaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzdDYdEcbYwbNnbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAbNJbOqbOBbObbOcbTvdQebgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaAXaadaaEaAXaadaaabIWaaaaadaadaadaaaaaaaaaaaaaaaaadaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzdDYdEcbYwbMHbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbXsbXrbXsbXEbTLbWrbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwbMNbMNbMNbMNbMNbMNbLbbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAbNJbOqbOBbObbOcbTvbNnbgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaadaaaaaaaaaaadaaaaRDaaaaadaadaadaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYRaaaaaaaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaaaaacaadaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwbMmbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbXcbYIbXdbYQbZcccwccvbSEczybSEcctcctdJAbUIbTLbTSbTTcwbbZBbUYbTGbTpcbcccHbXGbXHccIbPOccyccqcbAbPObOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXbXXbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAbZObYXbZjbZkbZrbZybZzbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaadaadaadaadaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaadaadbYwcaTbPlcaCbYwbYwbYwcanbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBcafcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbPOccAcczccBbPObGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfcbgcaZcbacbncbucbkcblaadbPBaadbPCaadbPBaadbPEbPubPqaadbPqcaWaadaadaadaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadaaabYwbVYbYwbGbbFZbFZbFZbFZbFZbVRbZxbZxbZxbZxbZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbJfbDNbWQbNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAbVdbWsbTsbBWbWybCybTsbTsbWbbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaaeaaaaadaaabYwbVYbYwbGbbFZbFZbFZbFZbFZbVRbZxbZxbZxbZxbZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbXAbZPbCvbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbJfbDNbSsbNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAbVdbWsbTsbBWbWybCybTsbTsbWbbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaaaaAXaaaaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzbNIcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAarNbWZbXbbWYbTsdQfbWXbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaadaadaaabYwcfdceZcfncfrcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbyubyvaXDaYHbWBcaqbaZbGfckTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbBnbYwbBobVHbVIbBKbVKbVTbWearNbBWbCsbCybTsbLCaadbgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQsbQLcpqbENbYvbCHbCRbDHbDPbLCaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbGqbGrbzUbIIbYwbIKbzGbIkbIlbImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkcbzbZNciWbTScgobYPbKSbKhbKhbLfbDFbJXbYPbzBbZvbWzbVNbWBbdObYvbGTbfDbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQsbQLcpqbENbYvbCHbCRbGZbDPbLCaadbgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaadaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaadaaacacbZGbZocaicajcalcaubYwbYwbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNcbycfvbEUbUqbZNbZNbDbbTScavbYPbYPbDacdBcfIbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbDWbEkbEebYBbYhbEbbZgbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwbYvbTsbMpbTsbTsbBiaadbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaadaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbDXbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraadbTsbNtbTsbCzbBlaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaadaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbIBbIGbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadbTsbBmbTsbYtdOUaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJybJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraadbFRbFYbFRbZZaadaadaaEaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaadaadaaacacbOHcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbGZcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKbQLbQLbQLbHhbYwaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaadaadcaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvckpbOQbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaadaaaaaaaaaaadaadaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaadaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaadaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLdNecuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmlcmmcwScuobYvdKZdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaadaadaadaadaadaadaadaaebYwdNlbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldLecnicJRbYvbJTcotbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizdNkbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPdNgdNfcwzdNidNhcwFcvHdNjckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofcogcxXcoibYvdJwdKHbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLdNzbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRdNAcmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcjkbYvbYwbYwbYwbZgbYwbQLdLhcubdLgcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLczXcBOcKNcKJdrxdNsdNqdNrdNodNpdLRdNudNvdNwdNxdNydoBcdYdBxclpclpcpYbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbdOfcmScmScmSdBtcmTcmTcmTcOAdAdcqGcqHdOcdOddOedOedOedOedOedOodOmdOndOkdOldoBdovcqQdBwdovdovdovdOjdOhdOidOgaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdNDdNCdNBdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjcdNEdNfdNFdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNLdNMdNJdNKdNXdNYdNZdOadNUdNVdoBdNWdNQdNRdNSdNTdNtdNOdNOdNPdObaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqldrxdujdujduzduTdvudsgdshdsedsfdssdstdspdsrdtidtkdsCdsEdtJdufdtudtCduiaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddDGdDIdEodEpdDGcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcwucwucwucyJcwucwucwuaaaaadaaaaaaaaaaadaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDdrYdoBdoBdoBdoBdoBdowdoBdoPdoVdpcdptdoBdpvdpwdpxdovdpydqGdrbdovdrxdovaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwudCudCvdCudCrdCucwucwucyJcwucyJcwucwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPdBIclIclKclIduAduNcDRckOdBFbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjecswdoBdvPdzPdCpdCqdBddBadBddAEdAKdABdoBdoBdovcqQdBwdovdBpdBjdBkdBgcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedJWajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadcwudzYdzXdAhdzZdzYdAidAAdApdzSdzRdzUcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjecrQdrxdvPdzPdwfdwfdwsdvBdvEdvHdvIdvAdoBcvmbQLdACcvpdovdovdovdovdovcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwuczcdJLdJIdJBczcczcdJzdJsczgdJZdJScwuaaaaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdKbctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuacuddoBdvPdzPdwfdKfdBddIIdBddIBdIHdJqdoBcuScdXcvobQLbQLbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKRdKSdKPdKQdKOcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcwudEUdDSdEAdEydDFdDBdDQdDMdEIcBedIndAfdAedzVcAhdAfdwbdwFdxxcwudCJdCNctvdvVcrXdzOdDycxLcxLcxLcxLckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtdAjdAkcAxdExdExdExdExdExdExdBUdExdCzdAMdCCdoBbZhbZhcvobQLbQLbYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddCFcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacyJdMddMcdDHdMadMmdMldMhdMedMsdMrdMpdModDCdMudKWdMtdKXdDHdDDdMvdDKdDLdMwdDJdDOdMxcrXcxLdMRdMSdMybYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFcyCdDxcASdJhdJidKsdLsdLJdLOdJbcBPbYidBeckBckBckBckBcwIbQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwudKFdKEdKYdKVdLjdLidLldLkdLrdLndJacwudDpdDodDqcwudKqdIRcyMcwudBqdIZctvdCsdCxdCydKwcxLdKydKCdKDbYwdAWbZxbZxbZxbZxdKlcARclpcsldKpdKncwecLkcsecPTcrhcsycsycsycxmcvLcwRdwycxkdAVdKicAIdIxdIPdIQdIMdIOdGmcBPdATdAUdAIdALbGwbGwdAHckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucACcAGczccAFcACcADcAycAzcAlcAwcAfcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvcxLcAecAccAbbYwcwocuxcuxcuxcuxcuxcuxcuxcuxcnpczJczZczDczFdMbdBccsJcplcuicxucmHcnLcvJbWacvVclqcAIcAtcyWcxNcAgczkcDgcBPcwNcmxbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaadaadaadbYwcmzcdYbQLcxgcBJcBIclpcBLcBHdKtdKucxLcBCcBocBFcBDcwMcuxcBacBbcAZcuxcAXcAYcANcuxcALcAMcAHczFcokcvcdBucsAcuicmQcsedAYcsecvKcwPbWBcBPcBPcBPcBPcBPcBPcBPcBPcwNcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwucCacCbczccBRcCecBicCccCdcBNcJTcBMcwuaaaaadaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCcxLcxLcxLcxLbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsecyycytcyzcymcykcytcyoclpclpclpclpclpclpcLmdJodJncAjcAdczHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJcCKcyJaaaaaacxdbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbcAmcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcDlcDIcAQcDGclpclpclpcBkcBjclpcBlcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaadaadcxdcGkcGjbGhcMocGbcGacDTcMccLEbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwcOzcdYcxqbWubYwbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwdMfcygcLucyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaadaadbYtcWRcNJcNKcOtcOGcPtcPFcPRcwuaaaaaacxddKvcMQbGhcMYcMDcMhcMLbGhbGhbpYcRucPrcRvcQLcQwcRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaabYwcNnbYwclrbYwbYwaadaaacxpcwicxpaadaadaadaadbYwcuJbQLbQLdMgbGwcNRbGwbJccOecygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaaadwIaadaadcwucwucwucwucwucwucwuaaaaaacxdcoKcRMbGhcOMcOZcONbJZbGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaabYwdKxbYwaadaaaaaaaadaadcxMclvcxMaadaaaaaaaadbYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaaaaaaadaadaadaaaaaaaaaaadaaaaaaaaacxdcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxcLAcuvcvlaaabYwcNnbYwaadaaaaaaaadaaacyccydcycaaaaaaaaaaaabYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaacxdcoKcoJbGhcoHcoGcoFcoDcoAcozbGhbKEbwzcvkbxTcvibwAduMdKocvfcvgcvhcuVcuWcuXcuZcuycuzcuCcuTcuvcuxaaaaadaaaaaaaadaaaaaaaadcwXcwZciKcwZcwXaaaaaaaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaadaaEaakaaEaadaaEaaEaaEaadcxdbpYbGhbGhbGhbGhbGhcoQcoRbGhbGhbGhcvwbxUcvybxTcvubxVcvvbpYbpYcvgcvhcvhcvhcuvcvtcvgcvhcvncvrcuvcvlaadaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaaaaaaaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacvAcoTbKBbpYcvPcoXcvNcpicpgcpdbpYcvMcvIcvFcvCbxTcvibwAduMcwkbpYcwlcwncwwcvScwxcwDcvQcvScvUcvhcwjcuxaaaaadaaaaaaaaaaaaaaaaaacwZcyPcodcwacyScnxaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaacwTcqYbKBcqrcqscqscqscqxcqPcqBcqbcqhcwJcqhcpUcqscwKcpUcwLcxldKocxecwWcwVcwWcwWcwWcwWcwWcwVcwWcxbcvlaaaaadaaacwZcwZcwZcwZcwZcwZcznclzcwUcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaadaadaaaaaaaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacwTcqYcrRcpgccscyDccscrPbDtcrOcsDcspcyNduHduHcyLduHduHcyKcwcbpYcyacxGcxDcxGcxGcxHcxGcxGcyAcyBcypcuxaadaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaczpctxbKBcpgccsccsccscwgbpYbpYbpYbpYcwsczjbxTczhbxTczjczibpYbpYczbczacyZczacyQcyXczfczaczaczeczdcuxaaaaadaaacxpcAocApcApcAqcApcArcAscwdcAucAucAucAucAucxpaadaaaaadaadaadaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdbpYbpYctzbxTbxTczrbxTctTdJmbpYczxczvcztcztcvacztcztczzbpYaaaczAcxGczAcxGczAaaaczAcxGcxGczAaaaaaaaaaaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdcuYbIYbIYcvdcvacvscvebpYbpYbpYbQJbPUbPUbPUbQIbpYbpYaadczBczaczCczaczBaadczBczaczaczBaadaadaadaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcxdbpYbQJbPUbPUbQIbpYbOLbpYaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcCvcCvcCNcCOcCPcCQcCRcCScCTcCocCocCUcwZaadaaaaaaaaaaadaadaAXaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfdQhcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocDmcCqcCrcDfcAucDncDocCvcCvcCvcwZaadaadaaaaaaaaaaadaAXaadcDAcDAcDAcDAcDAaaacDiaadcDAcDAcDAcDAcDAaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcDxcCvcpPcrccCrcDfcAucpLcoZcCvcCvcCvcwZaadaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaacDUaaaaadaaaaadaadaadaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcDCcDDcCPcDEcApcCScDFcCocCocCUcwZaadaaaaaaaaaaaaaadaAXaaacDhcDhcDhcDhcDhaadcDXaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcBScBScBScBScDdcDHcDfcAucDdcBScBScBScBScwZcwZaadaadaadaadaadaAXaadcDpcDqcDqcDqcDqcDZcEacDZcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCncCocCocDJcCqdwHcDKcDfcAucAudwGcTPcTOcCvcCvcwZaaaaaaaaaaaaaaaaadaadcDAcDAcDAcDAcDAaaacAWaaacDAcDAcDAcDAcDAaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvccpcibcAucAudBHcAucAucjfclVcTNcCvcCvcwZaaaaaaaaaaaaaaaaaEaaaaaaaadaadaadaaaaaacAWaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvcDQdEWcTEcTHcTycTxcTrdEVcTDcTzcCocCUcwZaadaadaaaaadaadaAXaaEaAXaAXaAXaaaaaaaaacAWaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcwZcwZcwZdETcSYcTccTfcTecThdOLcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaAXaadcEcaadaAXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcSDcSIdKKcSqdEScSkcbpcSbcRCcRBdKLcOHcRrcwZaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcwZcPPcwZcRacRhcRjcaRcRmcRqcRacwZcOHcwZcwZaadaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadaadcwZcPPcwZcwZcQKcQtcCvcQUcQKcwZcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcCvcCvcQtcCvcCvcCvdEQcwZcOHcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaacaaaaaacwZcPPcwZcQxcCvcQucCvcQJcCvdERcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaadbPNbPNbPNbPNbPNaaaaAXaaaaadaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbFNcaAbCBbDnbEPbYwbFAbyqbFlcflbGmbHUbPPbNYbPQcembPXbCKcfqbDjclicemctGbZNceOcfvbHLbHDbGibFVbykcfBbxAbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraadbTsbNtbTsbCzbBlaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabIWaaaaadaaaaadaadaadaadaSgaaaaadaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpctecembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbAxbBxbJsbURbBCbIRbUTbUTbUTbIybIpbIDbJybIGbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaadbTsbBmbTsbYtdOUaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbJUaadbSjbSjbSjbSjbSjaadaAXaaaaadaaacaccvqcaicvjcaicaicaubYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmchJchKbDgchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJTbJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraadbFRbFYbFRbZZaadaadaaEaRCaRCaRCaRCaRCaRCaaEaRCaRDaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaadaadaaacacbOHcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbLkbLkcjkcjkbIBcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKbQLbQLbQLbHhbYwaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaabUWaaabPNbPNbPNbPNbPNaaaaAXaaaaadaadcaccalchrcalcjJbZlcjBcjTbYwbQKbYwcjzcjAcjVcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehcjabAtbTMbIbbKVcjMbHFcjObHTcembPAbPzbPKbPzbxYbxWbuXbokbHVbHXbHYbHZbIabPzbHIbHGbHKbHJbHNbHIbHQbHOckfckgckhckibtGckkcklckmckncjkdJvbJcbOQbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaadaaaaaaaaaaadaadaadaaEaRDaRDaRDaaEaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaadaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJctOcxJcxJctPcrncrobYwcmzdEddEcbYwcjccjcdAgcjcckUctYckYckZckhclaclbclccldclecylcjkclgdHadHccxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaadaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaadaaaaaaaSgaaaaadaaaaaaaaaaaaaadbYwbYwbYwbYwcgKbQKbZhcucdCMbQLdNecuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctoctpctqbTSbYNbYwdDWdDUdDYbYwctEdBlclXctFckUcAJcmbcmccmdcmecmfcmgdDXcmidDZcjkcmkcmldGMcwScuobYvdGSdttdEadEbbZhdLadEadLbcotclraadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacvTaaaaaaaaaaAXaAXaAXaSgaAXaadaadaadaadaadaadaadaaebYwdNlbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJcwHcwYcxicwGcoCcxjcxocxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEcmZcnacnbcnccnccndcxycjkcnfcmldHjcnicJRbYvdJwdKHbYwbZgbQLcOzbYwbQLcpZbYwaaaaadaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaadaadajIcnEbPlckAcxtckAdJrbQLbQLbQLbQLcizdNkbQLbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocvBcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPdNgdNfcwzdNidNhcwFcvHdNjckUcpJcjeczqbLkdEfcnZcoacobcocdCmcjkcoecofdHicxXcoibYvbYwbYwbYwbZgbYwdLdbYwbYwbYwbYwaadaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaadaadaadaadaaaaaaaaaaadaadaaaaaeaaebYwdBhbYwbQLbZhbQLbQLdNzbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIcMJcMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRdNAcmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkdLgcjkcjkbYvcpXclpclpcpYbYwbQLdLecubdKZcubaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaebYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVcyjdMOdMNdMMdMLdMKdEvcyIcyRcAKdEwcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLczXcBOcKNdJidovdIBdHRdHSdHldHOdJqdJWdKydKCdKDdKMdoBcdYdJobQLbQLbYwbYwdLfbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadaadaadaadaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdELdEKdEMcnRdENcnNcNBcpbdOfcmScmScmSdBtcmTcmTcmTcOAdAdcqGdNodNpdOddOedNqdNrdNsdOndNrdOmdOndNvdNwdoBdovcqQdBwdovdovdNudOjdOhdOidNtaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaadaaaaaaaaaaadaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCdNDdNCdNBdMQdMTcoCdEBcKOcKOcxJdMUbTSbYNcjcdNEdNfdNFdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNMdLhdNJdNJdMfdMydMRdMSdLpdLRdoBdNWdNQdNRdNSdLodNOdNOdNOdNPdOgaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddKRcxddMVcxddKRaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaabYwbZhcpWbYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCcxTcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqldrxdssdptdsgdshdspcBCcBFdsedsfcLmcOecKJdsrdtidtkdoPdsEdtJdufdoVdpcduiaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcBodDGdDIdEodEpdDGcBoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadcwucwucwucyJcwucwucwuaaaaadaaaaaaaaaaadaaaaaabYwcizcpWbYwbYgdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFbRvcjSdnJcsCcvbdBEcvzcttcnncvJcqUbSTcqDdovcAecAecBlcAbcAccxlcxBcxNcyycyCczHdoBdpvdpwdpxdovdpydqGdrbdovdrxdovaaeaadaaaaaaaadaaaaaaaadaadaadaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaddCGdCLdDzaaeaaeaaedDAdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwudCudCvdCudCrdCucwucwucyJcwucyJcwucwuaadaadbYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPdBIclIclKclIduAduNcDRckOdBFbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzcqacvJbTXcjeduTdrYdoBdoBdoBdoBdoBdowdoBduzdvIdtCdujdoBdovcqQdBwdovdBpdBjdBkdBgcpGaaeaaeaadaadaadaadaadaadaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcpGdJUcpGaaedKaaaedtuajCcxdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaAXaadcwudzYdzXdAhdzZdzYdAidAAdApdzSdzRdzUcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsncpecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEcopcvJcpJcjedsCdoBdvPdzPdCpdCqdBddBadBddAEdAKdstdoBbYvcvpdACbQLdovdovdovdovdovcomcxdaaeaadaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaddCGdCLdIKaaeaaeaaedILdCGdCLaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwuczcdJLdJIdJBczcczcdJzdJsczgdJZdJScwuaaaaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdKbctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBcrZcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuadALdrxdvPdzPdwfdwfdwsdvBdvEdvHdvIdvAdoBcuScdXcvobQLdAIbYwaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcBodKRdKSdKPdKQdKOcBoaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcwudEUdDSdEAdEydDFdDBdDQdDMdEIcBedIndAfdAedzVcAhdAfdwbdwFdxxcwudCJdCNctvdvVcrXdzOdDybYwbYwbYwbYwckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSctscsecqAcpAcsucsvctycqzctRcupdwtcAJdABdAHdoBdvPdzPdwfdKfdBddIIdBddAjdIHdAkdoBcvmbQLcvobQLdvubYwaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaddDGcxddCFcxddKNaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacyJdMddMcdDHdMadMmdMldMhdMedMsdMrdMpdModDCdMudKWdMtdKXdDHdDDdMvdDKdDLdMwdDJdDOdMxcrXbYwdGIbIXdGFbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLOcxFdGCdGDcAxdExdExdExdExdExdExdBUdExdCzdAMdCCdoBbQLbQLcvobQLbYwbYwbYwaadaadaaaaaaaadaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxddKUcxdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwudKFdKEdKYdKVdLjdLidLldLkdLrdLndJacwudDpdDodDqcwudKqdIRcyMcwudBqdIZctvdCsdCxdCydKwbYwdFSdFTdFVbYwdAWbZxbZxbZxbZxdKlcARclpcsldKpdKncwecLkcsecPTcrhcsycsycsycxmcvLcwRdwydBedDxcASdJhdBxdKsdLsdLJdLOdJbcBPbYidAUclpclpclpclpdATckBcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucACcAGczccAFcACcADcAycAzcAlcAwcAfcwucwEaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvbYwcmmcwNclhbYwcwocuxcuxcuxcuxcuxcuxcuxcuxcnpczJczZczDczFdMbdBccsJcplcuicxucmHcnLcvJckpdAVdKicAIdIxdIPdIQdIMdIOdGmcBPclwcxCbYwbYwbYwbYwbYwbQLcxsclTbPlcmnbPlcmFaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaadaadaadbYwcmzcdYbQLcxgcBJcBIclpcBLcBHdKtdKubYwcogbJbbGwcBDcwMcuxcBacBbcAZcuxcAXcAYcANcuxcALcAMcAHczFcokcvcdBucsAcuicmQcsedAYcsebWacvVclqcAIcAtcyWcmxcAgczkcDgcBPbQLcxCbYwcmIcmwcpkbYwbQLdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaacwucCacCbczccBRcCecBicCccCdcBNcJTcBMcwuaaaaadaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCbYwbYwbYwbYwbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsectGcsecvKcwPbWBcBPcBPcBPcBPcBPcBPcBPcBPbQLcrQdJncAjcAdcqHcygcygcyhcyicygaaaaaaaaaaaaaadaadaaaaaaaadaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJcCKcyJaaaaaacxdbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbcAmcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcDlcDIcAQcDGclpclpclpcBkcBjclpcslcytcyzcymcykcytcyoclpclpclpclpclpclpclpcudbYwbWNctVcswcygcyudArcywcygaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaadaadcxdcGkcGjbGhcMocGbcGacDTcMccLEbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwbYwcdYcOzbWucxqbQLcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcLucyHcoYcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaadaadbYtcWRcNJcNKcOtcOGcPtcPFcPRcwuaaaaaacxddKvcMQbGhcMYcMDcMhcMLbGhbGhbpYcRucPrcRvcQLcQwcRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaaaadbYwbYwcNnbYwclrbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwbEucygcyVdAscqFcygaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaaadwIaadaadcwucwucwucwucwucwucwuaaaaaacxdcoKcRMbGhcOMcOZcONbJZbGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaaaadaaabYwdKxbYwaaaaadaaacxpcwicxpaaaaaaaadaaabYwcuJbQLbQLdMgbGwcNRbGwcxkcwIcygcqfczscqgcygaaaaadaaaaadaadaaaaaaaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaaaaaaaaaaadaadaadaaaaaaaaaaadaaaaaaaaacxdcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxcLAcuvcvlaaaaadaadbYwcNnbYwaadaadaadcxMclvcxMaadaadaadaaabYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygczWdAtczWaadaaaaadaaaaaaaadaadaadaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaacxdcoKcoJbGhcoHcoGcoFcoDcoAcozbGhbKEbwzcvkbxTcvibwAduMdKocvfcvgcvhcuVcuWcuXcuZcuycuzcuCcuTcuvcuxaaaaadaaaaaaaadaaaaadaaaaaacyccydcycaaaaaaaadaadbYwcqCcqwcqvbYwcqycqtcqvbYwaaaaadcAvczscAvaadaaaaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaaaaaaaadaaEaakaaEaadaaEaaEaaEaadcxdbpYbGhbGhbGhbGhbGhcoQcoRbGhbGhbGhcvwbxUcvybxTcvubxVcvvbpYbpYcvgcvhcvhcvhcuvcvtcvgcvhcvncvrcuvcvlaadaadaaaaaaaadaaaaadaaacwXcwZciKcwZcwXaaaaadaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaadaaacAWaaaaadaadaadaadaadaadaaaaaaaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacvAcoTbKBbpYcvPcoXcvNcpicpgcpdbpYcvMcvIcvFcvCbxTcvibwAduMcwkbpYcwlcwncwwcvScwxcwDcvQcvScvUcvhcwjcuxaaaaadaadaadaadaadaadaadcwZcjNclxcyFcwZaadaadaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaadaaacAWaaaaadaadaaaaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaakaaaaaacwTcqYbKBcqrcqscqscqscqxcqPcqBcqbcqhcwJcqhcpUcqscwKcpUcwLciIdKocxecwWcwVcwWcwWcwWcwWcwWcwVcwWcxbcvlaaaaadaaaaaaaadaaaaaaaaacwZcyPcodcwacyScnxaadaadaadaadaadaadaadaadaadaadaadaadaadaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaacwTcqYcrRcpgccscyDccscrPbDtcrOcsDcspcyNduHduHcyLduHduHcyKcwcbpYcyacxGcxDcxGcxGcxHcxGcxGcyAcyBcypcuxaadaadaaacwZcwZcwZcwZcwZcwZcznclzcwUcwZcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaacAWaaaaaaaadaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaadaaaczpctxbKBcpgccsccsccscwgbpYbpYbpYbpYcwsczjbxTczhbxTczjczibpYbpYczbczacyZczacyQcyXczfczaczaczeczdcuxaaaaadaadcwZczMczNczOczPcwZczQckHcwZcwZczSczTczUczVcwZaadaadaadaaaaaaaadaadaSgaAXaSgaadaadaadaadcAWaadaadaadaadaadaaEaAXaAXaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdbpYbpYctzbxTbxTczrbxTctTdJmbpYczxczvcztcztcvacztcztczzbpYaaaczAcxGczAcxGczAaaaczAcxGcxGczAaaaaaaaaaaadaaacxpcAocApcApcAqcApcArcAscwdcAucAucAucAucAucxpaadaaaaadaadaadaadaadaaaaadaaaaadaaaaaaaaacCVaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcxdcuYbIYbIYcvdcvacvscvebpYbpYbpYbQJbPUbPUbPUbQIbpYbpYaadczBczaczCczaczBaadczBczaczaczBaadaadaadaadaaacyccAucAOcAPctUcAPctkculcATcATcATcAUcAVcAucycaadaaaaaaaaaaaaaaaaaEaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcxdbpYbQJbPUbPUbQIbpYbOLbpYaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBpcBqcBrcBscBtcBucBvcAucBwcBxcBycBzcBAcwZaadaaaaaaaaaaaaaaaaAXaadcDpcDqcDqcDqcDqcDrcDscDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScBTcBUcBVcBWcBTcBScBScBScBScwZaadaadaadaadaadaadaAXaadcDAcDAcDAcDAcDAaaacDiaaacDAcDAcDAcDAcDAaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocCpcCqcCrcCscAucCtcCucCvcCvcCvcwZaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacDiaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcrscrwcCrcCscAucrrcrlcCvcDxcCvcwZaadaaaaaaaaaaaaaaaaAXaaacDhcDhcDhcDhcDhaadcDiaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcCvcCvcCNcCOcCPcCQcCRcCScCTcCocCocCUcwZaadaaaaaaaaaaadaadaAXaadcDpcDqcDqcDqcDqcDrcDicDtcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcBScBScBScBScDdcDecDfdQhcDdcBScBScBScBScwZaadaaaaaaaaaaaaaadaAXaadcDAcDAcDAcDAcDAaaacDiaadcDAcDAcDAcDAcDAaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCncCocCocDmcCqcCrcDfcAucDncDocCvcCvcCvcwZaadaadaaaaaaaaaaadaSgaaaaadaaaaadaaaaadaaacDUaaaaadaaaaadaadaadaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaadaaacwZcCvcDxcCvcpPcrccCrcDfcAucpLcoZcCvcCvcCvcwZaadaaaaaaaaaaaaaaaaAXaaacDhcDhcDhcDhcDhaadcDXaadcDhcDhcDhcDhcDhaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadcwZcCvcCvcCvcDCcDDcCPcDEcApcCScDFcCocCocCUcwZaadaaaaaaaaaaaaaadaAXaadcDpcDqcDqcDqcDqcDZcEacDZcDucDucDucDucDvaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcBScBScBScBScDdcDHcDfcAucDdcBScBScBScBScwZcwZaadaadaadaadaadaadaadcDAcDAcDAcDAcDAaaacAWaaacDAcDAcDAcDAcDAaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCncCocCocDJcCqdwHcDKcDfcAucAudwGcTPcTOcCvcCvcwZaaaaaaaaaaaaaaaaaEaaaaaaaadaadaadaaaaaacAWaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvccpcibcAucAudBHcAucAucjfclVcTNcCvcCvcwZaaaaaaaaaaaaaaaaAXaaEaAXaAXaAXaaaaaaaaacAWaaaaaaaaaaAXaAXaAXaSgaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcCvcCvcCvcDQdEWcTEcTHcTycTxcTrdEVcTDcTzcCocCUcwZaadaadaaaaadaadaaaaaaaaaaaaaadaaaaAXaadcEcaadaAXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaacwZcwZcwZcwZcwZdETcSYcTccTfcTecThdOLcwZcwZcwZcwZcwZaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaadaaaaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcSDcSIdKKcSqdEScSkcbpcSbcRCcRBdKLcOHcRrcwZaaaaadaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaaaaaacwZcwZcPPcwZcRacRhcRjcaRcRmcRqcRacwZcOHcwZcwZaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaadaadaadaadcwZcPPcwZcwZcQKcQtcCvcQUcQKcwZcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcCvcCvcQtcCvcCvcCvdEQcwZcOHcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaacaaaaaacwZcPPcwZcQxcCvcQucCvcQJcCvdERcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaadcwZcPPcwZcCwcCvcCvdNNcCvcPsdEPcwZcOHcwZaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaadaaacwZcPPcwZcwZcwZcwZcwZcwZcwZcwZcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaadaadaaaaaacZYaaaaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaadaaacwZcPPcwZcwZcwZcwZcwZcwZcwZcwZcwZcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaaaaaacwZcPhcOJcOJcOJcOUcOIcOHcOHcOHcOHcOHcwZaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaacwZcwZcwZcwZcwZcDVcDWcDVcwZcwZcwZcwZcwZaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaadaadaaaaaacZYaaaaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaaaaaaaaaaaadaiaaaaaaaadaaaaadaaaaadaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaakaaEaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaakaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaakaaEaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaEaakaakaadaaaaaaaaaaaaaaaaadaakaaEaakaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaEaakaaaaaaaadaakaakaakaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaakaaEaakaaaaaaaadaakaakaakaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdcEdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11411,21 +11420,21 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlHdmudlNdmPdnCdmfdlHdlFdmFdlLdlFdlMdHEdHEdHPdlFdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaadaadaaddmydmydHUdHVdmydOCdOBdoEdoDdOxdobdDtdDtdDtdDtdDtdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDsdDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlLdmfdmidlHdmCdlLdmhdlFdogdlFdlFdmUdmFdHEdHYdmkdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoJdoKdoKdoKdoKdoKdoKdoLdoHdoIdDtdDtdHXdmadHWdmydODdnrdoQdOxdobdDtdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdDsdDsdDsdDsdDsdDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdlFdlFdlFdlFdlFdlFdlFdlFdlFdogdlFdmUdmFdlwdmFdHPdlzdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdHQdoTdoTdoTdoTdoTdoTdoTdoTdHQdDtdDtdDtdlDdlDdlDdmydOwdoWdoXdOxdobdDtdDtdDtdDtdDtdDtdFqdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdHRdHRdHRdHSdEJdDsdDsdDsdDudDudDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYaaaaaaaaaaaaaaadoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdogdogdogdFrdogdogdogdogdogdogdlFdmUdlwdlwdlwdlEdlFdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoZdpadpadpadpadpadpadpadoHdoIdDtdDtdDtdDtdDtdmydOydHTdoDdOxdOAdOzdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdEJdEJdEJdEJdEJdQsdQsdQsdQtdEJdDsdDsdDsdDudDudDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYaaaaaaaaaaaaaaadoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdogdogdogdogdFrdogdogdogdogdogdogdlFdmUdlwdlwdlwdlEdlFdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdoHdoIdoZdpadpadpadpadpadpadpadoHdoIdDtdDtdDtdDtdDtdmydOydHTdoDdOxdOAdOzdDtdDtdDtdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEJdHAdHBdHCdHDdDwdHydGBdGBdGBdEJdnTdnTdnTdnTdGndDudDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlFdlrdHzdlsdlFdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdDtdDtdDtdDtdDtdDtdOtdOvdOudOsdOrdkYdkXdDtdDtdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaadEJdHIdHJdHGdHHdDwdHOdGBdHNdHLdHMdHKdGvdGvdnTdGndHFdDudDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdHEdHEdlwdlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkIdkNdkNdkNdkMdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdQjdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdLpdGBdHydHvdGAdGBdGCdDwdLodGEdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdkHdkHdkHdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHgdHhdHddHedGXdHfdGBdGAdHcdGBdHbdGhdGhdGvdGvdGvdGvdGndDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlldljdlkdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdnTdlBdDtdDtdFldFldlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdkHdkHdkHdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodKMdEsdHndGXdHmdGBdHldDwdHkdDwdHjdGhdGhdHidGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdkHdkHdlcdlhdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdDwdDwdDwdGUdGBdGVdGXdGWdGZdGYdDwdHadGhdGvdGhdGvdGndGndGTdDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdlidEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaadlfdlfaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdlcdlhdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGOdGPdGOdGQdGBdGBdGAdGBdGSdDwdGRdDwdGhdGhdGhdGvdGvdGndGndGNdDudDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdlidEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfaaaaaaaaaaaadlddlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdlcdlhdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdEJdEJdGJdGBdGBdGAdGLdGKdDwdGMdDwdGEdGhdGhdGndGndGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdEJdGCdGBdGAdGIdGHdGGdGFdDwdLodGDdGndGndGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFcdFcdFcdFcdGzdGydFUdFUdFUdGwdFedFedGxdGndGvdGndGndGndDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaadEJdHIdHJdHGdHHdDwdQrdGBdHNdHLdHMdHKdGvdGvdnTdGndHFdDudDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdHEdHEdlwdlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlBdlBdlBdlBdlBdDtdDtdDtdDtdDtdkIdkNdkNdkNdkMdDtdDtdlBdlBdlddlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadEJdEJdEJdDwdHrdHsdHrdDwdEHdHqdDwdDwdEJdEJdEJdHudwedHtdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlFdlndlmdlndlFdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtdDtaaaaaaaaaaaaaaaaaaaaaaaadlBdlBdlBdlddlddlddlddlBdlBdlBdDtdDtdDtdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlddlddlddlddlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlJaadaadaadaadaaddEJdHwdHxdDwdGAdGBdHydHvdQqdGBdQpdDwdGhdGhdGhdGndGvdGvdDudDudDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdlFdlqdHzdlpdlFdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdFpdDtdDtdDtdDtdDtdlBdlBdlBaaaaaaaaaaaaaaaaaaaaaaaaaaadlddlddlddlddlddlddlddlddlBdlBdlBdDtdDtdkHdkHdkHdDtdlBdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlddlddlddlddlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHgdHhdHddHedGXdHfdGBdGAdGBdGBdHbdGhdGhdGvdGvdGvdGvdNTdDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlldljdlkdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdlBdnTdlBdDtdDtdFldFldlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdDtdkHdkHdkHdDtdlBdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlddlddlddlddlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdHodQodEsdHndGXdHmdGBdGAdQndGBdDwdQmdQldQldGvdGvdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdlidEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlBdlBdlBdlBdlBdlBdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlddlddlddlddlddlddlBdDtdkHdkHdlcdlhdDtdlBdlddlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlddlddlddlfdldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdDwdDwdDwdGUdGBdGVdGXdGWdGLdHkdQedOodQjdQidOldGvdGndGndGTdDudDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdlidEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlddlddlddlddldaaaaaaaaaaaadlfdlfaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkHdlcdlhdkHdDtdlBdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdNZdGPdGOdGQdOadGBdGAdGBdGBdGZdGYdDwdOkdOcdObdGvdGvdGndGndGNdDudDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdlidEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddlddlddlfdlfaaaaaaaaaaaadlddlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdlcdlhdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdEJdEJdEJdEJdGBdGBdGAdGLdGKdDwdGRdDwdGhdGhdGhdGndGndGndGndNYdnTdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaadlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTaaaaaadEJdGJdGBdGBdGAdNXdGHdGGdNVdDwdGEdNUdGndGndGndGndNTdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDEdDEdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFcdFcdFcdFcdGzdGydFUdFUdFUdGwdFedFedGxdGndGvdGndGndNTdDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdDtdkHdkHdkHdDtdDtdlBdlBdlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdGsdFLdFLdFLdGudGtdGpdGqdGpdGpdGodFLdGrdGhdGhdGndGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdEDdEDdEDdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdlBdDtdkHdkHdkHdDtdDtdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedQidFedFedGidGkdGjdFedFedGEdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdkHdlcdlgdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdGfdGedGddGcdGbdGadFZdFYdFXdFWdFVdFUdFTdFSdGgdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdkHdlcdlgdlhdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdFedFedGldFedNLdFedFedGidGkdGjdFedFedGhdGhdGndGndDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadldaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlddlBdDtdkHdkHdlcdlgdlhdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlfdlfdlfdlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFcdGfdGedGddGcdGbdGadFZdFYdFXdFWdNKdFUdNydNxdGgdDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdkHdlcdlgdlhdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddDTdDTdDTdDTdDTdFKdFMdFLdFNdFLdFOdFedFQdFPdFPdFRdFJdFedDudDudDudDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaadlfdlfdlfaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdDtdlcdlgdlhdkHdkHdDVdnTdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaddFkdFjdFidFodFndFmdFedFIdFHdFGdFFdFJdFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlfdlddlBdlBdDtdDtdkHdkHdkHdDtdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddlddlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaadFfdFhdFgdFddFcdFcdFedFedFedFedFedFedFedDudDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdDsdoYdoYdoYdoYdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlfdlfdlfdlfdlfdlfdlddlddlBdDtdkQdkYdkYdkYdkXdlBdlddlddlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlfdlddldaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a8eeb943cdac06dab430c7a695dbecb0681b0152 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Fri, 27 Dec 2013 15:40:01 -0800 Subject: [PATCH 270/315] Succesful fixes Fixes instances of "succesful" and "succesfully". --- code/game/machinery/computer/ai_core.dm | 8 ++++---- code/game/mecha/mech_fabricator.dm | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index daf8d4585e7..1f17d21badb 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -274,7 +274,7 @@ That prevents a few funky behaviors. A.loc = T.loc A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." - U << "\blue Transfer succesful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." del(T) if("AIFIXER")//AI Fixer terminal. var/obj/machinery/computer/aifixer/T = target @@ -298,7 +298,7 @@ That prevents a few funky behaviors. T.overlays -= image('icons/obj/computer.dmi', "ai-fixer-empty") A.cancel_camera() A << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here." - U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." else if(!C.contents.len && T.occupant && !T.active) C.name = "inteliCard - [T.occupant.name]" @@ -310,7 +310,7 @@ That prevents a few funky behaviors. C.icon_state = "aicard-full" T.overlays -= image('icons/obj/computer.dmi', "ai-fixer-full") T.occupant << "You have been downloaded to a mobile storage device. Still no remote access." - U << "\blue Transfer succesful: \black [T.occupant.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory." + U << "\blue Transfer successful: \black [T.occupant.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory." T.occupant.loc = C T.occupant.cancel_camera() T.occupant = null @@ -335,7 +335,7 @@ That prevents a few funky behaviors. T.overlays -= image('icons/obj/computer.dmi', "ai-fixer-empty") A.cancel_camera() A << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here." - U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." + U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." else if(!C.AI && T.occupant && !T.active) if (T.occupant.stat) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 864ff0f51d2..c985f93d0d1 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -514,7 +514,7 @@ temp += "Return" src.updateUsrDialog() if(i || tech_output) - src.visible_message("\icon[src] [src] beeps, \"Succesfully synchronized with R&D server. New data processed.\"") + src.visible_message("\icon[src] [src] beeps, \"Successfully synchronized with R&D server. New data processed.\"") if(!silent && !found) temp = "Unable to connect to local R&D Database.
    Please check your connections and try again.
    Return" src.updateUsrDialog() From dec6e4cd89d5cc0218ae51f2e63ca8edb7931de2 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Fri, 27 Dec 2013 15:45:27 -0800 Subject: [PATCH 271/315] Makes ninja gloves heat resistant. Ninjas will no longer burn their hands on mere lights. --- code/modules/clothing/gloves/ninja.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/clothing/gloves/ninja.dm b/code/modules/clothing/gloves/ninja.dm index 15e7c40c3b3..870324f7159 100644 --- a/code/modules/clothing/gloves/ninja.dm +++ b/code/modules/clothing/gloves/ninja.dm @@ -15,6 +15,10 @@ icon_state = "s-ninja" item_state = "s-ninja" siemens_coefficient = 0 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT var/draining = 0 var/candrain = 0 var/mindrain = 200 From 2482fd07024ccd54b2dae36cffcf941ac0f6b8a4 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Fri, 27 Dec 2013 15:49:21 -0800 Subject: [PATCH 272/315] Makes cards pocketable. Adds w_classes to cards so you can actually pocket the things. --- code/game/objects/items/toys.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 8a200bcbe84..f7c5a220721 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -9,6 +9,7 @@ * Crayons * Snap pops * Water flower + * Cards */ @@ -572,6 +573,7 @@ obj/item/toy/cards desc = "A deck of space-grade playing cards." icon = 'icons/obj/toy.dmi' icon_state = "deck_full" + w_class = 2.0 var/list/cards = list() obj/item/toy/cards/New() @@ -689,6 +691,7 @@ obj/item/toy/cardhand desc = "A number of cards not in a deck, customarily held in ones hand." icon = 'icons/obj/toy.dmi' icon_state = "hand2" + w_class = 1.0 var/list/currenthand = list() var/obj/item/toy/cards/parentdeck = null var/choice = null @@ -773,6 +776,7 @@ obj/item/toy/singlecard desc = "a card" icon = 'icons/obj/toy.dmi' icon_state = "singlecard_down" + w_class = 1.0 var/cardname = null var/obj/item/toy/cards/parentdeck = null var/flipped = 0 From 27c347661dae5e3bb7153e0334126d3e3f6d955a Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Fri, 27 Dec 2013 16:02:56 -0800 Subject: [PATCH 273/315] We require at least 1 sample of compatible DNA. Fixes not having DNA to use powers like stasis. --- code/game/gamemodes/changeling/changeling.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index be0b2314f2c..145dab5e135 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -219,7 +219,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" /datum/changeling //stores changeling powers, changeling recharge thingie, changeling absorbed DNA and changeling ID (for changeling hivemind) var/list/absorbed_dna = list() var/dna_max = 4 //How many extra DNA strands the changeling can store for transformation. - var/absorbedcount = 0 + var/absorbedcount = 1 //We would require at least 1 sample of compatible DNA to have taken on the form of a human. var/chem_charges = 20 var/chem_storage = 50 var/chem_recharge_rate = 0.5 From 71dc46d4cdaa7e084bbe1488ef348be1a11d2f0e Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Fri, 27 Dec 2013 16:46:00 -0800 Subject: [PATCH 274/315] Adds ckey logging to canisters Lets admins see the ckey as well as the name of those who toggle release valves on canisters. --- code/game/machinery/atmoalter/canister.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 49e23c55c05..6db3878d187 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -264,14 +264,14 @@ Release Pressure: - air
    " + release_log += "Valve was closed by [usr] ([usr.ckey]), stopping the transfer into the air
    " else if (holding) - release_log += "Valve was opened by [usr], starting the transfer into the [holding]
    " + release_log += "Valve was opened by [usr] ([usr.ckey]), starting the transfer into the [holding]
    " else - release_log += "Valve was opened by [usr], starting the transfer into the air
    " + release_log += "Valve was opened by [usr] ([usr.ckey]), starting the transfer into the air
    " valve_open = !valve_open if (href_list["remove_tank"]) From b1ed5792f601810148636e517cb8d2367392fbc0 Mon Sep 17 00:00:00 2001 From: Nienhaus Date: Fri, 27 Dec 2013 20:44:01 -0600 Subject: [PATCH 275/315] Changelog update Added myself to the changlog under spriters. --- html/changelog.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index e02cd9b8e51..b9f40f238ac 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -36,7 +36,7 @@ Current Project Maintainers:
    -Click Here-
    Currently Active GitHub contributor list: -Click Here-
    Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve, Giacom, Ikarrus, trubble_bass, Aranclanos, Cael_Aislinn, Cheridan, Intigracy, Malkevin, SuperSayu, DumpDavidson, Tastyfish, Yvar, Elo001.
    - Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut, Pewtershmitz, Firecage
    + Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut, Pewtershmitz, Firecage, Nienhaus2
    Sounds: Skie, Lasty/Vinyl
    Main Testers: Tenebrosity
    Thanks to: Baystation 12, CDK Station devs, FacepunchStation, GoonStation devs, the original SpaceStation developers and Invisty for the title image.
    Also a thanks to anybody who has contributed who is not listed here :( Ask to be added here on irc.
    From dc92b7d1cb6b5a6bf7ddaf63a2e501d5359edd21 Mon Sep 17 00:00:00 2001 From: rymd Date: Sat, 28 Dec 2013 14:13:30 +0000 Subject: [PATCH 276/315] Fixed destructive analyzer failure messages. --- code/modules/research/destructive_analyzer.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index bee0c198916..64601cf03de 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -59,10 +59,10 @@ Note: Must be placed within 3 tiles of the R&D Console if (disabled) return if (!linked_console) - user << "\red The protolathe must be linked to an R&D console first!" + user << "\red The destructive analyzer must be linked to an R&D console first!" return if (busy) - user << "\red The protolathe is busy right now." + user << "\red The destructive analyzer is busy right now." return if (istype(O, /obj/item) && !loaded_item) if(!O.origin_tech) @@ -73,7 +73,7 @@ Note: Must be placed within 3 tiles of the R&D Console user << "\red You cannot deconstruct this item!" return if(O.reliability < 90 && O.crit_fail == 0) - usr << "\red Item is neither reliable enough or broken enough to learn from." + usr << "\red Item is neither reliable enough nor broken enough to learn from." return busy = 1 loaded_item = O From 171147b1bf2f9de275bf365bec4e50e77e313405 Mon Sep 17 00:00:00 2001 From: fleure Date: Sat, 28 Dec 2013 14:51:35 +0000 Subject: [PATCH 277/315] Fixed toolbox parent object giving error --- code/game/objects/items/weapons/storage/toolbox.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index ccea8b916fe..4e8aff02267 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -15,9 +15,6 @@ New() ..() - if (src.type == /obj/item/weapon/storage/toolbox) - world << "BAD: [src] ([src.type]) spawned at [src.x] [src.y] [src.z]" - del(src) /obj/item/weapon/storage/toolbox/emergency name = "emergency toolbox" From b07bca861f61892a7bb901ac6edb1ff632265d5a Mon Sep 17 00:00:00 2001 From: fleure Date: Sat, 28 Dec 2013 16:30:50 +0000 Subject: [PATCH 278/315] Fixes paper with no input looking populated --- code/modules/paperwork/paper.dm | 20 ++++++++++++-------- code/modules/paperwork/photocopier.dm | 27 ++++++++++++++------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ca2921c503d..b2663a00cdc 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -159,6 +159,9 @@ /obj/item/weapon/paper/proc/parsepencode(t, obj/item/weapon/pen/P, mob/user, iscrayon = 0) + if(length(t) < 1) //No input means nothing needs to be parsed + return + // t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) t = replacetext(t, "\[center\]", "
    ") @@ -249,15 +252,16 @@ return t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html + + if(t != null) //No input from the user means nothing needs to be added + if(id!="end") + addtofield(text2num(id), t) // He wants to edit a field, let him. + else + info += t // Oh, he wants to edit to the end of the file, let him. + updateinfolinks() - if(id!="end") - addtofield(text2num(id), t) // He wants to edit a field, let him. - else - info += t // Oh, he wants to edit to the end of the file, let him. - updateinfolinks() - - usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window - update_icon() + usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window + update_icon() /obj/item/weapon/paper/attackby(obj/item/weapon/P, mob/user) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index ef929633873..9633c118ee2 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -65,19 +65,20 @@ for(var/i = 0, i < copies, i++) if(toner > 0 && !busy && copy) var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc) - if(toner > 10) //lots of toner, make it dark - c.info = "" - else //no toner? shitty copies for you! - c.info = "" - var/copied = html_decode(copy.info) - copied = replacetext(copied, "" - c.name = copy.name - c.fields = copy.fields - c.updateinfolinks() - toner-- + if(length(copy.info) > 0) //Only print and add content if the copied doc has words on it + if(toner > 10) //lots of toner, make it dark + c.info = "" + else //no toner? shitty copies for you! + c.info = "" + var/copied = html_decode(copy.info) + copied = replacetext(copied, "" + c.name = copy.name + c.fields = copy.fields + c.updateinfolinks() + toner-- busy = 1 sleep(15) busy = 0 From faf61858f8f0b175f1380985a9ef364c4be7abf1 Mon Sep 17 00:00:00 2001 From: Rockdtben Date: Sat, 28 Dec 2013 12:05:02 -0600 Subject: [PATCH 279/315] Refactored throw_at --- code/game/atoms_movable.dm | 101 ++++++++++--------------------------- 1 file changed, 28 insertions(+), 73 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index d17300571b8..f2bd6dc26c2 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -70,89 +70,44 @@ src.throwing = 1 - if(usr) - if(HULK in usr.mutations) - src.throwing = 2 // really strong throw! + if(usr && HULK in usr.mutations) + src.throwing = 2 // really strong throw! var/dist_x = abs(target.x - src.x) var/dist_y = abs(target.y - src.y) - - var/dx - if (target.x > src.x) - dx = EAST - else - dx = WEST - - var/dy - if (target.y > src.y) - dy = NORTH - else - dy = SOUTH + var/dx = (target.x > src.x) ? EAST : WEST + var/dy = (target.y > src.y) ? NORTH : SOUTH var/dist_travelled = 0 var/dist_since_sleep = 0 var/area/a = get_area(src.loc) - if(dist_x > dist_y) - var/error = dist_x/2 - dist_y + var/tdist_x = dist_x; + var/tdist_y = dist_y; + var/tdx = dx; + var/tdy = dy; + if(dist_x <= dist_y) + tdist_x = dist_y; + tdist_y = dist_x; + tdx = dy; + tdy = dx; - while(src && target &&((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) - // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up - if(error < 0) - var/atom/step = get_step(src, dy) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check() - error += dist_x - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) - else - var/atom/step = get_step(src, dx) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check() - error -= dist_y - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) - a = get_area(src.loc) - else - var/error = dist_y/2 - dist_x - while(src && target &&((((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH)) && dist_travelled < range) || (a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) - // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up - if(error < 0) - var/atom/step = get_step(src, dx) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check() - error += dist_y - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) - else - var/atom/step = get_step(src, dy) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check() - error -= dist_x - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) + var/error = tdist_x/2 - tdist_y + while(((dist_x > dist_y) && (src && target &&((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf))) || ((dist_x <= dist_y) && (src && target &&((((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH)) && dist_travelled < range) || (a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)))) + // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up + var/atom/step = get_step(src, (error < 0) ? tdy : tdx) + if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge + break + src.Move(step) + hit_check() + error += (error < 0) ? tdist_x : -tdist_y; // Also swap the two. + dist_travelled++ + dist_since_sleep++ + if(dist_since_sleep >= speed) + dist_since_sleep = 0 + sleep(1) - a = get_area(src.loc) + a = get_area(src.loc) //done throwing, either because it hit something or it finished moving src.throwing = 0 From 2ed39904bab7d1a5c3731443f2c1d27e6fb85f40 Mon Sep 17 00:00:00 2001 From: Rockdtben Date: Sat, 28 Dec 2013 12:55:34 -0600 Subject: [PATCH 280/315] v2.0 --- code/game/atoms_movable.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f2bd6dc26c2..cf0707a6022 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -93,14 +93,17 @@ tdy = dx; var/error = tdist_x/2 - tdist_y - while(((dist_x > dist_y) && (src && target &&((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf))) || ((dist_x <= dist_y) && (src && target &&((((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH)) && dist_travelled < range) || (a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)))) + while(target && (((((dist_x > dist_y) && ((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST))) || ((dist_x <= dist_y) && ((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH))) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space))) // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up + if(!src.throwing) break + if(!istype(src.loc, /turf)) break + var/atom/step = get_step(src, (error < 0) ? tdy : tdx) if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge break src.Move(step) hit_check() - error += (error < 0) ? tdist_x : -tdist_y; // Also swap the two. + error += (error < 0) ? tdist_x : -tdist_y; dist_travelled++ dist_since_sleep++ if(dist_since_sleep >= speed) From 74c0ca499856d33a94c22e09318c3f82f982c6e2 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Sat, 28 Dec 2013 20:24:49 -0300 Subject: [PATCH 281/315] centcomAway will stop runtiming at roundstart. --- maps/RandomZLevels/centcomAway.dmm | 1 - 1 file changed, 1 deletion(-) diff --git a/maps/RandomZLevels/centcomAway.dmm b/maps/RandomZLevels/centcomAway.dmm index 9a4aba792cc..ede743ee3df 100644 --- a/maps/RandomZLevels/centcomAway.dmm +++ b/maps/RandomZLevels/centcomAway.dmm @@ -831,4 +831,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - From 819bb9451d00aa7b92bc9266547034310349e164 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sun, 29 Dec 2013 00:52:13 +0000 Subject: [PATCH 282/315] <3 Aranclanos, You always know what's best. --- .../advance/symptoms/damage_converter.dm | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 8d34148ee7c..3414ebabc3c 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -37,19 +37,20 @@ Bonus var/get_damage = rand(1, 2) - if(istype(M, /mob/living/carbon/human)) //is it human? (thus augmentable) + if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M - for(var/obj/item/organ/limb/affecting in H.organs) //Find limb - if(affecting.status == ORGAN_ORGANIC) //is it organic? - if(affecting.burn_dam > 0 || affecting.brute_dam > 0)// is it damaged? - affecting.heal_robotic_damage(get_damage, get_damage) // get_damage brute, get_damage burn - M.adjustToxLoss(get_damage) - return 1 - else //Usual routine - if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) - M.adjustFireLoss(-get_damage) - M.adjustBruteLoss(-get_damage) + var/parts = H.get_damaged_organs(1,1) //1,1 because it needs inputs. + + for(var/obj/item/organ/limb/L in parts) + if(L.status == ORGAN_ROBOTIC) + L.heal_robotic_damage(get_damage, get_damage) + else + L.heal_damage(get_damage, get_damage) + M.adjustToxLoss(get_damage) return 1 + + + From 08ec9df96766f1e1e347f022394b91dc83e8af1a Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sun, 29 Dec 2013 02:25:12 +0000 Subject: [PATCH 283/315] Fixes it for Nonhuman mobs. --- .../datums/diseases/advance/symptoms/damage_converter.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 3414ebabc3c..40d599fdf7e 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -48,8 +48,13 @@ Bonus else L.heal_damage(get_damage, get_damage) - M.adjustToxLoss(get_damage) - return 1 + else + if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) + M.adjustFireLoss(-get_damage) + M.adjustBruteLoss(-get_damage) + + M.adjustToxLoss(get_damage) + return 1 From b49604a48591c33d2ffc7f7f440d7d0a24cac560 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Sun, 29 Dec 2013 02:54:42 -0800 Subject: [PATCH 284/315] Ups the genome requirement objectives by one to prevent ling ezwin with 5 genome objectives --- code/game/gamemodes/changeling/changeling.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 145dab5e135..7cfc2686299 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -102,7 +102,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/datum/objective/absorb/absorb_objective = new absorb_objective.owner = changeling - absorb_objective.gen_amount_goal(5, 7) + absorb_objective.gen_amount_goal(6, 7) changeling.objectives += absorb_objective var/datum/objective/assassinate/kill_objective = new From 2f2fc92742080298a147bd29ed5b7e99fe5b7452 Mon Sep 17 00:00:00 2001 From: fleure Date: Sun, 29 Dec 2013 13:50:35 +0000 Subject: [PATCH 285/315] Toggling vending machine's voice now works --- code/game/machinery/vending.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d7b3aa81b6a..9a93e3a54a1 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -266,9 +266,6 @@ usr << "The vending machine refuses to interface with you, as you are not in its target demographic!" return - if(panel_open) - usr << "The vending machine cannot dispense products while its service panel is open!" - return if(href_list["remove_coin"]) if(!coin) usr << "There is no coin in this machine." @@ -283,6 +280,9 @@ usr.set_machine(src) if((href_list["vend"]) && (vend_ready)) + if(panel_open) + usr << "The vending machine cannot dispense products while its service panel is open!" + return if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH usr << "Access denied." //Unless emagged of course From 0b299990e5481cbe802f9af8120fff4001b188e0 Mon Sep 17 00:00:00 2001 From: fleure Date: Sun, 29 Dec 2013 16:08:05 +0000 Subject: [PATCH 286/315] Also machines actually vend now! --- code/game/machinery/vending.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 9a93e3a54a1..512ce30f8fe 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -282,7 +282,7 @@ if((href_list["vend"]) && (vend_ready)) if(panel_open) usr << "The vending machine cannot dispense products while its service panel is open!" - return + return if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH usr << "Access denied." //Unless emagged of course From 53bfd06609f9bf0b1d6ecab7ece8d0a3ac0f4403 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sun, 29 Dec 2013 16:12:32 +0000 Subject: [PATCH 287/315] Fixes #2180 - Augmented limb healing issues --- code/game/objects/items/stacks/medical.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 04131676224..eceb1874564 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -12,7 +12,7 @@ /obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob) var/mob/living/carbon/human/H = M - var/obj/item/organ/limb/affecting = H.get_organ("chest") + var/obj/item/organ/limb/affecting = H.get_organ(user.zone_sel.selecting) if(affecting.status == ORGAN_ORGANIC) //Limb must be organic to be healed - RR From 5153fa4cef99e8fd28e183718f28dbd24ac08002 Mon Sep 17 00:00:00 2001 From: errorage Date: Sun, 29 Dec 2013 18:13:32 +0100 Subject: [PATCH 288/315] Changes damage overlay threshold from 10 and on to 35 and on - Changes the damage overlay thresholds so they start displaying when you are a bit more damaged than currently. There are six damage overlays, their thresholds used to be 10-25; 25-40; 40-55; 55-70; 70-85; 85-infinity. This change sets them to 35-45; 45-55; 55-65; 65-75; 75-85; 85-infinity. (The thresholds are the sum of fireloss, bruteloss and the hit indicator variable) - Oxyloss overlay left unchanged, since you pass out at 50 or something, so you need the visual cue quicker. Main reason for this proposed change is that I feel the overlays kick in too quickly. I think it'd be good to leave a little room, so you don't get an overlay as soon as the first moron boops you over the head with his crowbar. --- code/modules/mob/living/carbon/human/life.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 94e0f6a5b81..5798d8878ab 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -996,15 +996,15 @@ if(hurtdamage) var/image/I switch(hurtdamage) - if(10 to 25) + if(35 to 45) I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay1") - if(25 to 40) + if(45 to 55) I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay2") - if(40 to 55) + if(55 to 65) I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay3") - if(55 to 70) + if(65 to 75) I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay4") - if(70 to 85) + if(75 to 85) I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay5") if(85 to INFINITY) I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay6") From d3d4c79946f3a8892e065bd05dd673577b71a286 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Sun, 29 Dec 2013 17:40:12 +0000 Subject: [PATCH 289/315] Merges Heal_Damage and Heal_robotic_damage procs like I should have done in the first place. Corrects all usages of Heal_damage so it works with the changed version. Same goes for Heal_robotic_damage --- .../advance/symptoms/damage_converter.dm | 4 ++-- code/game/gamemodes/cult/runes.dm | 2 +- code/game/objects/items/stacks/medical.dm | 3 +-- .../objects/items/weapons/storage/bible.dm | 2 +- .../mob/living/carbon/human/human_damage.dm | 4 ++-- .../mob/living/carbon/human/human_defense.dm | 4 ++-- code/modules/surgery/organs/organ.dm | 21 +++++++------------ 7 files changed, 16 insertions(+), 24 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 40d599fdf7e..ed89fd53f41 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -44,9 +44,9 @@ Bonus for(var/obj/item/organ/limb/L in parts) if(L.status == ORGAN_ROBOTIC) - L.heal_robotic_damage(get_damage, get_damage) + L.heal_damage(get_damage, get_damage, 1) else - L.heal_damage(get_damage, get_damage) + L.heal_damage(get_damage, get_damage, 0) else if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 5b4efd72951..ccec9e51165 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -288,7 +288,7 @@ var/list/sacrificed = list() return fizzle() for(var/obj/item/organ/limb/affecting in corpse_to_raise.organs) - affecting.heal_damage(1000, 1000) + affecting.heal_damage(1000, 1000, 0) corpse_to_raise.setToxLoss(0) corpse_to_raise.setOxyLoss(0) corpse_to_raise.SetParalysis(0) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index eceb1874564..c143ddd39e6 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -63,9 +63,8 @@ if(!istype(affecting, /obj/item/organ/limb) || affecting:burn_dam <= 0) affecting = H.get_organ("head") - if(affecting.status == ORGAN_ORGANIC) // Just in case a robotic limb SOMEHOW got down to this point of the proc all you get is a message - RR - if (affecting.heal_damage(src.heal_brute, src.heal_burn)) + if (affecting.heal_damage(src.heal_brute, src.heal_burn, 0)) H.update_damage_overlays(0) M.updatehealth() diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index b9d760bdf11..fbcd8280015 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -28,7 +28,7 @@ var/heal_amt = 10 for(var/obj/item/organ/limb/affecting in H.organs) if(affecting.status == ORGAN_ORGANIC) //No Bible can heal a robotic arm! - if(affecting.heal_damage(heal_amt, heal_amt)) + if(affecting.heal_damage(heal_amt, heal_amt, 0)) H.update_damage_overlays(0) return diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 77148d3dcfb..bdf34462d77 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -79,7 +79,7 @@ var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) if(!parts.len) return var/obj/item/organ/limb/picked = pick(parts) - if(picked.heal_damage(brute,burn)) + if(picked.heal_damage(brute,burn,0)) update_damage_overlays(0) updatehealth() @@ -106,7 +106,7 @@ var/brute_was = picked.brute_dam var/burn_was = picked.burn_dam - update |= picked.heal_damage(brute,burn) + update |= picked.heal_damage(brute,burn,0) brute -= (brute_was-picked.brute_dam) burn -= (burn_was-picked.burn_dam) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 435bb15ba1a..fc245264c18 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -129,7 +129,7 @@ emp_act if(affecting.status == ORGAN_ROBOTIC) if (WT.remove_fuel(0)) if(affecting.brute_dam > 0) - affecting.heal_robotic_damage(30,0) //Repair Brute + affecting.heal_damage(30,0,1) //Repair Brute update_damage_overlays(0) updatehealth() for(var/mob/O in viewers(user, null)) @@ -147,7 +147,7 @@ emp_act var/obj/item/weapon/cable_coil/coil = I if(affecting.status == ORGAN_ROBOTIC) if(affecting.burn_dam > 0) - affecting.heal_robotic_damage(0,30) //Repair Burn + affecting.heal_damage(0,30,1) //Repair Burn updatehealth() coil.use(1) for(var/mob/O in viewers(user, null)) diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index bbd1faf8f0f..6fbc2f55fbd 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -136,8 +136,13 @@ //Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. //Damage cannot go below zero. //Cannot remove negative damage (i.e. apply damage) -/obj/item/organ/limb/proc/heal_damage(brute, burn) - if(status == ORGAN_ROBOTIC) // This makes robolimbs not healable by chems +/obj/item/organ/limb/proc/heal_damage(brute, burn, var/robotic) + + if(robotic && status != ORGAN_ROBOTIC) // This makes organic limbs not heal when the proc is in Robotic mode. + brute = max(0, brute - 3) + burn = max(0, burn - 3) + + if(!robotic && status == ORGAN_ROBOTIC) // This makes robolimbs not healable by chems. brute = max(0, brute - 3) burn = max(0, burn - 3) @@ -146,18 +151,6 @@ return update_organ_icon() -/obj/item/organ/limb/proc/heal_robotic_damage(brute, burn) //so you can heal robotic limbs but not with the original proc - RR - if(status == ORGAN_ORGANIC) //This is a robotic heal proc so no healing organic limbs - RR - brute = max(0, brute - 3) - burn = max(0, burn - 3) - - brute_dam = max(brute_dam - brute, 0) - burn_dam = max(burn_dam - burn, 0) - return update_organ_icon() - - - - //Returns total damage...kinda pointless really /obj/item/organ/limb/proc/get_damage() return brute_dam + burn_dam From 89faaaf999dc0235e98d29c9a94577af0f78c881 Mon Sep 17 00:00:00 2001 From: Rockdtben Date: Sun, 29 Dec 2013 12:12:41 -0600 Subject: [PATCH 290/315] Moved Speech Modification via masks to masks. say and whisper now call the speechModification(message) proc in wear_mask. Moved derpspeech modification to mob_helpers.dm --- code/modules/clothing/masks/boxing.dm | 23 +++++++++ code/modules/clothing/masks/gasmask.dm | 22 +++++++++ code/modules/clothing/masks/miscellaneous.dm | 13 ++++- code/modules/mob/living/carbon/human/say.dm | 47 +------------------ .../mob/living/carbon/human/whisper.dm | 20 +------- code/modules/mob/living/say.dm | 15 +----- code/modules/mob/mob_helpers.dm | 17 +++++++ 7 files changed, 78 insertions(+), 79 deletions(-) diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 129c69e90ff..19c5d2c9d47 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -16,6 +16,29 @@ flags_inv = HIDEFACE w_class = 2 +/obj/item/clothing/mask/luchador/speechModification(message) + if(copytext(message, 1, 2) != "*") + message = replacetext(message, "captain", "CAPITÁN") + message = replacetext(message, "station", "ESTACIÓN") + message = replacetext(message, "sir", "SEÑOR") + message = replacetext(message, "the ", "el ") + message = replacetext(message, "my ", "mi ") + message = replacetext(message, "is ", "es ") + message = replacetext(message, "it's", "es") + message = replacetext(message, "friend", "amigo") + message = replacetext(message, "buddy", "amigo") + message = replacetext(message, "hello", "hola") + message = replacetext(message, " hot", " caliente") + message = replacetext(message, " very ", " muy ") + message = replacetext(message, "sword", "espada") + message = replacetext(message, "library", "biblioteca") + message = replacetext(message, "traitor", "traidor") + message = replacetext(message, "wizard", "mago") + message = uppertext(message) //Things end up looking better this way (no mixed cases), and it fits the macho wrestler image. + if(prob(25)) + message += " OLE!" + return message + /obj/item/clothing/mask/luchador/tecnicos name = "Tecnicos Mask" desc = "Worn by robust fighters who uphold justice and fight honorably." diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index d36c1da37a7..61706427b28 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -199,6 +199,28 @@ item_state = "s-ninja_mask" vchange = 1 +/obj/item/clothing/mask/gas/voice/space_ninja/speechModification(message) + if(voice == "Unknown") + if(copytext(message, 1, 2) != "*") + var/list/temp_message = text2list(message, " ") + var/list/pick_list = list() + for(var/i = 1, i <= temp_message.len, i++) + pick_list += i + for(var/i=1, i <= abs(temp_message.len/3), i++) + var/H = pick(pick_list) + if(findtext(temp_message[H], "*") || findtext(temp_message[H], ";") || findtext(temp_message[H], ":")) continue + temp_message[H] = ninjaspeak(temp_message[H]) + pick_list -= H + message = dd_list2text(temp_message, " ") + message = replacetext(message, "o", "¤") + message = replacetext(message, "p", "þ") + message = replacetext(message, "l", "£") + message = replacetext(message, "s", "§") + message = replacetext(message, "u", "µ") + message = replacetext(message, "b", "ß") + return message + + /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 1baca831718..d7259f9edf5 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -1,3 +1,8 @@ + +//Override this to modify speech like luchador masks. +/obj/item/clothing/mask/proc/speechModification(message) + return message + /obj/item/clothing/mask/muzzle name = "muzzle" desc = "To stop that awful noise." @@ -56,4 +61,10 @@ flags = FPRINT|TABLEPASS|BLOCKHAIR flags_inv = HIDEFACE w_class = 2 - var/voicechange = 0 \ No newline at end of file + var/voicechange = 0 + +/obj/item/clothing/mask/horsehead/speechModification(message) + if(voicechange) + if(!(copytext(message, 1, 2) == "*" || (usr.mind && usr.mind.changeling && (copytext(message, 1, 3) == ":g" || copytext(message, 1, 3) == ":G" || copytext(message, 1, 3) == ":ï")))) + message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") + return message \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index aa9ea615239..73a7961d649 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -55,52 +55,7 @@ message = dd_list2text(temp_message, " ") if(wear_mask) - if(istype(wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja) && wear_mask:voice == "Unknown") - if(copytext(message, 1, 2) != "*") - var/list/temp_message = text2list(message, " ") - var/list/pick_list = list() - for(var/i = 1, i <= temp_message.len, i++) - pick_list += i - for(var/i=1, i <= abs(temp_message.len/3), i++) - var/H = pick(pick_list) - if(findtext(temp_message[H], "*") || findtext(temp_message[H], ";") || findtext(temp_message[H], ":")) continue - temp_message[H] = ninjaspeak(temp_message[H]) - pick_list -= H - message = dd_list2text(temp_message, " ") - message = replacetext(message, "o", "¤") - message = replacetext(message, "p", "þ") - message = replacetext(message, "l", "£") - message = replacetext(message, "s", "§") - message = replacetext(message, "u", "µ") - message = replacetext(message, "b", "ß") - - else if(istype(wear_mask, /obj/item/clothing/mask/luchador)) - if(copytext(message, 1, 2) != "*") - message = replacetext(message, "captain", "CAPITÁN") - message = replacetext(message, "station", "ESTACIÓN") - message = replacetext(message, "sir", "SEÑOR") - message = replacetext(message, "the ", "el ") - message = replacetext(message, "my ", "mi ") - message = replacetext(message, "is ", "es ") - message = replacetext(message, "it's", "es") - message = replacetext(message, "friend", "amigo") - message = replacetext(message, "buddy", "amigo") - message = replacetext(message, "hello", "hola") - message = replacetext(message, " hot", " caliente") - message = replacetext(message, " very ", " muy ") - message = replacetext(message, "sword", "espada") - message = replacetext(message, "library", "biblioteca") - message = replacetext(message, "traitor", "traidor") - message = replacetext(message, "wizard", "mago") - message = uppertext(message) //Things end up looking better this way (no mixed cases), and it fits the macho wrestler image. - if(prob(25)) - message += " OLE!" - - else if(istype(wear_mask, /obj/item/clothing/mask/horsehead)) - var/obj/item/clothing/mask/horsehead/hoers = wear_mask - if(hoers.voicechange) - if(!(copytext(message, 1, 2) == "*" || (mind && mind.changeling && (copytext(message, 1, 3) == ":g" || copytext(message, 1, 3) == ":G" || copytext(message, 1, 3) == ":ï")))) - message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") + message = wear_mask.speechModification(message) if ((HULK in mutations) && health >= 25 && length(message)) if(copytext(message, 1, 2) != "*") diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 43b05920d33..d5ec65900b0 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -44,24 +44,8 @@ var/italics = 1 var/message_range = 1 - if(istype(src.wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)&&src.wear_mask:voice=="Unknown") - if(copytext(message, 1, 2) != "*") - var/list/temp_message = text2list(message, " ") - var/list/pick_list = list() - for(var/i = 1, i <= temp_message.len, i++) - pick_list += i - for(var/i=1, i <= abs(temp_message.len/3), i++) - var/H = pick(pick_list) - if(findtext(temp_message[H], "*") || findtext(temp_message[H], ";") || findtext(temp_message[H], ":")) continue - temp_message[H] = ninjaspeak(temp_message[H]) - pick_list -= H - message = dd_list2text(temp_message, " ") - message = replacetext(message, "o", "¤") - message = replacetext(message, "p", "þ") - message = replacetext(message, "l", "£") - message = replacetext(message, "s", "§") - message = replacetext(message, "u", "µ") - message = replacetext(message, "b", "ß") + if(src.wear_mask) + message = wear_mask.speechModification(message) if (src.stuttering) message = stutter(message) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 5539a1b74a3..27aaae5e1a0 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -142,20 +142,7 @@ var/list/department_radio_keys = list( // :downs: if (getBrainLoss() >= 60) - message = replacetext(message, " am ", " ") - message = replacetext(message, " is ", " ") - message = replacetext(message, " are ", " ") - message = replacetext(message, "you", "u") - message = replacetext(message, "help", "halp") - message = replacetext(message, "grief", "grife") - message = replacetext(message, "space", "spess") - message = replacetext(message, "carp", "crap") - message = replacetext(message, "reason", "raisin") - if(prob(50)) - message = uppertext(message) - message += "[stutter(pick("!", "!!", "!!!"))]" - if(!stuttering && prob(15)) - message = stutter(message) + message = derpspeech(message, stuttering) if (stuttering) message = stutter(message) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 1d109b80f5b..61f4ca99546 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -215,6 +215,23 @@ proc/isorgan(A) p++//for each letter p is increased to find where the next letter will be. return copytext(sanitize(t),1,MAX_MESSAGE_LEN) +/proc/derpspeech(message, stuttering) + message = replacetext(message, " am ", " ") + message = replacetext(message, " is ", " ") + message = replacetext(message, " are ", " ") + message = replacetext(message, "you", "u") + message = replacetext(message, "help", "halp") + message = replacetext(message, "grief", "grife") + message = replacetext(message, "space", "spess") + message = replacetext(message, "carp", "crap") + message = replacetext(message, "reason", "raisin") + if(prob(50)) + message = uppertext(message) + message += "[stutter(pick("!", "!!", "!!!"))]" + if(!stuttering && prob(15)) + message = stutter(message) + return message + proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added /* Turn text into complete gibberish! */ From 47ba33c50c1840a755f7010246404c838cf136c0 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 29 Dec 2013 13:46:29 -0500 Subject: [PATCH 291/315] Removes a pair of well meaning but apparently poorly realized code fixes for edge cases. --- code/modules/mob/living/carbon/metroid/powers.dm | 2 -- code/modules/projectiles/projectile/magic.dm | 2 -- 2 files changed, 4 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 40b18333adc..c16039c5baf 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -230,8 +230,6 @@ src.mind.transfer_to(new_slime) else new_slime.key = src.key - for (var/obj/effect/proc_holder/spell/S in src.spell_list) - new_slime.spell_list += new S.type new_slime << "You are now a slime!" del(src) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index ffe04022c3f..2e790b36383 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -202,8 +202,6 @@ proc/wabbajack(mob/living/M) new_mob << "Your form morphs into that of a [randomize]." del(M) - if(!new_mob.canmove) //edge case of someone getting hit with two bolts at the same time - new_mob.update_canmove() return new_mob /obj/item/projectile/magic/animate From c8bdf9420c3d531ab8d3f1f250e1cbf2459ce59f Mon Sep 17 00:00:00 2001 From: Rockdtben Date: Sun, 29 Dec 2013 16:09:35 -0600 Subject: [PATCH 292/315] Put this in the right place --- code/modules/clothing/clothing.dm | 5 +++++ code/modules/clothing/masks/miscellaneous.dm | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index ab501d7dd1c..7490b3f4c09 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -72,6 +72,11 @@ BLIND // can't see anything body_parts_covered = HEAD slot_flags = SLOT_MASK + +//Override this to modify speech like luchador masks. +/obj/item/clothing/mask/proc/speechModification(message) + return message + //Shoes /obj/item/clothing/shoes name = "shoes" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index d7259f9edf5..3e8d6999482 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -1,8 +1,3 @@ - -//Override this to modify speech like luchador masks. -/obj/item/clothing/mask/proc/speechModification(message) - return message - /obj/item/clothing/mask/muzzle name = "muzzle" desc = "To stop that awful noise." From e7338e1b1a10505ee6409265b97bd198ca1a329a Mon Sep 17 00:00:00 2001 From: fleure Date: Sun, 29 Dec 2013 22:46:24 +0000 Subject: [PATCH 293/315] Building arcade machines now works --- code/game/machinery/computer/arcade.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 5a4854349b6..fb922c6fb9a 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -70,7 +70,7 @@ desc = "Does not support Pinball." icon = 'icons/obj/computer.dmi' icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/arcade + circuit = /obj/item/weapon/circuitboard/arcade/battle var/enemy_name = "Space Villian" var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc var/player_hp = 30 //Player health/attack points From c710b19154b875390f35db717e0bf1053f13dfd2 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Sun, 29 Dec 2013 15:26:11 -0800 Subject: [PATCH 294/315] Adds ckey logging to PDA message sending Allows admins to see the ckey of those who send messages. --- code/game/machinery/computer/message.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index b4ff2130b89..8be739d4b89 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -439,7 +439,7 @@ if( customrecepient.loc && ishuman(customrecepient.loc) ) var/mob/living/carbon/human/H = customrecepient.loc H << "\icon[customrecepient] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)" - log_pda("[usr] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]") + log_pda("[usr]/([usr.ckey]) (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]") customrecepient.overlays.Cut() customrecepient.overlays += image('icons/obj/pda.dmi', "pda-r") //Sender is faking as someone who exists @@ -453,7 +453,7 @@ if( customrecepient.loc && ishuman(customrecepient.loc) ) var/mob/living/carbon/human/H = customrecepient.loc H << "\icon[customrecepient] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)" - log_pda("[usr] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]") + log_pda("[usr]/([usr.ckey]) (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]") customrecepient.overlays.Cut() customrecepient.overlays += image('icons/obj/pda.dmi', "pda-r") //Finally.. From 6a034809763ebd5e2f13a5a7040114da50738bb7 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Sun, 29 Dec 2013 15:37:40 -0800 Subject: [PATCH 295/315] More adjustments Raises the genome cap for absorb objectives by 1, making objectives range from 6-8 genomes. Also adds a message explaining your starting one genome. --- code/game/gamemodes/changeling/changeling.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 7cfc2686299..72cc8216f65 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -102,7 +102,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/datum/objective/absorb/absorb_objective = new absorb_objective.owner = changeling - absorb_objective.gen_amount_goal(6, 7) + absorb_objective.gen_amount_goal(6, 8) changeling.objectives += absorb_objective var/datum/objective/assassinate/kill_objective = new @@ -131,7 +131,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" /datum/game_mode/proc/greet_changeling(var/datum/mind/changeling, var/you_are=1) if (you_are) - changeling.current << "\red You are a changeling!" + changeling.current << "\red You are a changeling! You have absorbed and taken the form of a human." changeling.current << "\red Use say \":g message\" to communicate with your fellow changelings." changeling.current << "You must complete the following tasks:" From a348534ab15df777e7602d9d888b48f861970bb1 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Sun, 29 Dec 2013 15:54:50 -0800 Subject: [PATCH 296/315] Personnelly, I feel this pull request was successfull. Spelling fixes. --- code/game/machinery/newscaster.dm | 4 ++-- .../structures/crates_lockers/closets/secure/personal.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 35385ec64ff..b04ecad5106 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -409,10 +409,10 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co dat+="Wanted issue for [src.channel_name] successfully edited.

    " dat+="
    Return
    " if(20) - dat+="Printing successfull. Please receive your newspaper from the bottom of the machine.

    " + dat+="Printing successful. Please receive your newspaper from the bottom of the machine.

    " dat+="Return" if(21) - dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnell to refill machine storage.

    " + dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.

    " dat+="Return" else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index c09bbb8f538..1dad4811ea5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/personal - desc = "It's a secure locker for personell. The first card swiped gains control." + desc = "It's a secure locker for personnel. The first card swiped gains control." name = "personal closet" req_access = list(access_all_personal_lockers) var/registered_name = null From 579be8953f325eacc6ca321fa7bf1b38b5ac14ef Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 30 Dec 2013 03:56:45 +0400 Subject: [PATCH 297/315] Tweak of destructive analyzer and span classes Now instead of flat out refusing low reliability things it will be able to take them inside and show the potential technology and reliability level It will also be able to deconstruct them, but if reliability is too low it will show you that usual message but in the console window instead of chat Changed all the \red to span class in destructive analyzer's file --- code/modules/research/destructive_analyzer.dm | 15 ++++++--------- code/modules/research/rdconsole.dm | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 5aea5e32fd9..7cca1ef967f 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -53,32 +53,29 @@ Note: Must be placed within 3 tiles of the R&D Console default_deconstruction_crowbar() return 1 else - user << "\red You can't load the [src.name] while it's opened." + user << "You can't load the [src.name] while it's opened." return 1 if (disabled) return if (!linked_console) - user << "\red The protolathe must be linked to an R&D console first!" + user << "The protolathe must be linked to an R&D console first!" return if (busy) - user << "\red The protolathe is busy right now." + user << " The protolathe is busy right now." return if (istype(O, /obj/item) && !loaded_item) if(!O.origin_tech) - user << "\red This doesn't seem to have a tech origin!" + user << " This doesn't seem to have a tech origin!" return var/list/temp_tech = ConvertReqString2List(O.origin_tech) if (temp_tech.len == 0) - user << "\red You cannot deconstruct this item!" - return - if(O.reliability < (99-(decon_mod*3)) && O.crit_fail == 0) - usr << "\red Item is neither reliable enough or broken enough to learn from." + user << " You cannot deconstruct this item!" return busy = 1 loaded_item = O user.drop_item() O.loc = src - user << "\blue You add the [O.name] to the machine!" + user << "You add the [O.name] to the machine!" flick("d_analyzer_la", src) spawn(10) icon_state = "d_analyzer_l" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index ac9743cd52e..587c71c94d9 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -256,16 +256,21 @@ won't update every console in existence) but it's more of a hassle to do. Also, usr <<"\red The destructive analyzer appears to be empty." screen = 1.0 return - if(linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) + if((linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) || linked_destroy.loaded_item.crit_fail) var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) if(prob(linked_destroy.loaded_item.reliability)) files.UpdateTech(T, temp_tech[T]) files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) + screen = 1.0 + else + screen = 2.3 if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10))) linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10))) linked_destroy.loaded_item = null + else + screen = 1.0 for(var/obj/I in linked_destroy.contents) for(var/mob/M in I.contents) M.death() @@ -282,7 +287,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, del(I) linked_destroy.icon_state = "d_analyzer" use_power(250) - screen = 1.0 updateUsrDialog() else if(href_list["lock"]) //Lock the console from use by anyone without tox access. @@ -563,7 +567,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, files.RefreshResearch() switch(screen) //A quick check to make sure you get the right screen when a device is disconnected. if(2 to 2.9) - if(linked_destroy == null) + if(screen == 2.3) + ; + else if(linked_destroy == null) screen = 2.0 else if(linked_destroy.loaded_item == null) screen = 2.1 @@ -718,6 +724,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "* [CallTechName(T)] [temp_tech[T]]
    " dat += "
    Deconstruct Item || " dat += "Eject Item || " + if(2.3) + dat += "Item is neither reliable enough or broken enough to learn from.

    " + dat += "Main Menu" /////////////////////PROTOLATHE SCREENS///////////////////////// if(3.0) From df7fd3f98aecf33ea4e5d3024d82e032f8daf5b7 Mon Sep 17 00:00:00 2001 From: Cluwnes Honk Date: Sun, 29 Dec 2013 16:03:01 -0800 Subject: [PATCH 298/315] Gives the chicken suit head some hiding flags The chicken suit helmet now has the same inv_flags as a xeno helm. --- code/modules/clothing/head/misc.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 37a495992c3..70cc4b22744 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -164,6 +164,7 @@ icon_state = "chickenhead" item_state = "chickensuit" flags = FPRINT | TABLEPASS | BLOCKHAIR + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE /obj/item/clothing/head/bearpelt name = "bear pelt hat" From e4b251a4880a80631145fcced8cf777bf557f2ba Mon Sep 17 00:00:00 2001 From: Tenebrosity Date: Mon, 30 Dec 2013 20:08:20 +1300 Subject: [PATCH 299/315] Adds different radio frequency colours for engineering, security, medical, service and supply. --- code/game/communications.dm | 10 +++-- code/game/machinery/telecomms/broadcaster.dm | 45 ++++++++++++------- .../game/objects/items/devices/radio/radio.dm | 22 ++++++--- interface/stylesheet.dm | 8 +++- 4 files changed, 58 insertions(+), 27 deletions(-) diff --git a/code/game/communications.dm b/code/game/communications.dm index c5fc236456c..c60d68b1483 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -110,10 +110,14 @@ var/list/radiochannels = list( "Service" = 1349, ) //depenging helpers -var/list/DEPT_FREQS = list(1351,1355,1357,1213,1441,1347,1349) -var/const/SEC_FREQ = 1359 //security, colored cyan in chat window +var/const/SYND_FREQ = 1213 //nuke op frequency, coloured congo brown in chat window +var/const/SUPP_FREQ = 1347 //supply, coloured twine in chat window +var/const/SERV_FREQ = 1349 //service, coloured swamp green in chat window +var/const/SCI_FREQ = 1351 //science, coloured plum in chat window var/const/COMM_FREQ = 1353 //command, colored gold in chat window -var/const/SYND_FREQ = 1213 +var/const/MED_FREQ = 1355 //medical, coloured blue in chat window +var/const/ENG_FREQ = 1357 //engineering, coloured orange in chat window +var/const/SEC_FREQ = 1359 //security, colored red in chat window #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 9a600d06112..1ce0f5dd6c2 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -340,17 +340,17 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept freq_text = "#unkn" if(COMM_FREQ) freq_text = "Command" - if(1351) + if(SCI_FREQ) freq_text = "Science" - if(1355) + if(MED_FREQ) freq_text = "Medical" - if(1357) + if(ENG_FREQ) freq_text = "Engineering" if(SEC_FREQ) freq_text = "Security" - if(1349) + if(SERV_FREQ) freq_text = "Service" - if(1347) + if(SUPP_FREQ) freq_text = "Supply" //There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO @@ -372,11 +372,18 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept part_a = "" else if (display_freq==COMM_FREQ) part_a = "" + else if (display_freq==SCI_FREQ) + part_a = "" + else if (display_freq==MED_FREQ) + part_a = "" + else if (display_freq==ENG_FREQ) + part_a = "" else if (display_freq==SEC_FREQ) part_a = "" - else if (display_freq in DEPT_FREQS) - part_a = "" - + else if (display_freq==SERV_FREQ) + part_a = "" + else if (display_freq==SUPP_FREQ) + part_a = "" // --- Filter the message; place it in quotes apply a verb --- @@ -626,17 +633,17 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept freq_text = "#unkn" if(COMM_FREQ) freq_text = "Command" - if(1351) + if(SCI_FREQ) freq_text = "Science" - if(1355) + if(MED_FREQ) freq_text = "Medical" - if(1357) + if(ENG_FREQ) freq_text = "Engineering" if(SEC_FREQ) freq_text = "Security" - if(1349) + if(SERV_FREQ) freq_text = "Service" - if(1347) + if(SUPP_FREQ) freq_text = "Supply" //There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO @@ -662,10 +669,18 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept part_a = "" else if (display_freq==COMM_FREQ) part_a = "" + else if (display_freq==SCI_FREQ) + part_a = "" + else if (display_freq==MED_FREQ) + part_a = "" + else if (display_freq==ENG_FREQ) + part_a = "" else if (display_freq==SEC_FREQ) part_a = "" - else if (display_freq in DEPT_FREQS) - part_a = "" + else if (display_freq==SERV_FREQ) + part_a = "" + else if (display_freq==SUPP_FREQ) + part_a = "" // --- This following recording is intended for research and feedback in the use of department radio channels --- diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index f4ebb92017d..66caa97c733 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -481,17 +481,17 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use freq_text = "#unkn" if(COMM_FREQ) freq_text = "Command" - if(1351) + if(SCI_FREQ) freq_text = "Science" - if(1355) + if(MED_FREQ) freq_text = "Medical" - if(1357) + if(ENG_FREQ) freq_text = "Engineering" if(SEC_FREQ) freq_text = "Security" - if(1349) + if(SERV_FREQ) freq_text = "Service" - if(1347) + if(SUPP_FREQ) freq_text = "Supply" //There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO @@ -505,10 +505,18 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use part_a = "" else if (display_freq==COMM_FREQ) part_a = "" + else if (display_freq==SCI_FREQ) + part_a = "" + else if (display_freq==MED_FREQ) + part_a = "" + else if (display_freq==ENG_FREQ) + part_a = "" else if (display_freq==SEC_FREQ) part_a = "" - else if (display_freq in DEPT_FREQS) - part_a = "" + else if (display_freq==SERV_FREQ) + part_a = "" + else if (display_freq==SUPP_FREQ) + part_a = "" var/quotedmsg = M.say_quote(message) diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 770dc1b5571..ef7758d989b 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -25,9 +25,13 @@ em {font-style: normal; font-weight: bold;} .say {} .deadsay {color: #5c00e6;} .radio {color: #008000;} -.deptradio {color: #993399;} +.sciradio {color: #993399;} .comradio {color: #ACA82D;} -.secradio {color: #3182ac;} +.secradio {color: #B22222;} +.medradio {color: #337296;} +.engradio {color: #fb5613;} +.suppradio {color: #a8732b;} +.servradio {color: #6eaa2c;} .syndradio {color: #6D3F40;} .alert {color: #ff0000;} From 6397796058f2440b1a1781f0d0338b1588a7e1d9 Mon Sep 17 00:00:00 2001 From: Robson Richards Date: Mon, 30 Dec 2013 17:31:39 +0000 Subject: [PATCH 300/315] Removes a Check by Aran's request --- code/datums/diseases/advance/symptoms/damage_converter.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index ed89fd53f41..4c549377ccd 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -43,10 +43,7 @@ Bonus var/parts = H.get_damaged_organs(1,1) //1,1 because it needs inputs. for(var/obj/item/organ/limb/L in parts) - if(L.status == ORGAN_ROBOTIC) - L.heal_damage(get_damage, get_damage, 1) - else - L.heal_damage(get_damage, get_damage, 0) + L.heal_damage(get_damage, get_damage, 0) else if(M.getFireLoss() > 0 || M.getBruteLoss() > 0) From 02a91e4c76e4d353e43ed605624441e94d81da58 Mon Sep 17 00:00:00 2001 From: Incoming Date: Mon, 30 Dec 2013 14:26:37 -0500 Subject: [PATCH 301/315] Changes the initialism for stat collecting on summon magic to SU because SM was taken by smoke. On the stat page this will result in smoke being overreported until a full month after this change has been live on both servers. For judgement purposes you can probably assume that nearly all "smoke" spells on the stat page are actually summon magic, because who the hell takes smoke? --- code/game/gamemodes/wizard/spellbook.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 3627da60f5b..618850f4411 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -253,7 +253,7 @@ max_uses-- temp = "You have cast summon guns." if("summonmagic") - feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + feedback_add_details("wizard_spell_learned","SU") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells H.rightandwrong(1) max_uses-- temp = "You have cast summon magic." From bb9c09df4628ee3c19d8b5d4d72f5e8e0b6212d2 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 30 Dec 2013 15:03:17 -0600 Subject: [PATCH 302/315] Obsoletes flags = FPRINT | TABLEPASS* *TABLEPASS was already totally obsolete. FPRINT was used, but it was on virtually everything anyway. Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense. If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only where it was intentional (holodeck items could use this for example). --- code/defines/obj.dm | 1 - code/defines/obj/weapon.dm | 66 ++++--------------- code/game/atoms.dm | 4 +- code/game/gamemodes/cult/cult_items.dm | 8 +-- code/game/gamemodes/cult/ritual.dm | 1 - code/game/gamemodes/nuclear/nuclearbomb.dm | 1 - code/game/gamemodes/nuclear/pinpointer.dm | 2 +- code/game/gamemodes/wizard/artefact.dm | 3 - code/game/gamemodes/wizard/soulstone.dm | 2 - code/game/gamemodes/wizard/spellbook.dm | 1 - code/game/machinery/alarm.dm | 4 +- code/game/machinery/atmoalter/canister.dm | 1 - code/game/machinery/bots/cleanbot.dm | 1 - code/game/machinery/bots/floorbot.dm | 2 - .../machinery/computer/HolodeckControl.dm | 2 +- code/game/machinery/pipe/construction.dm | 2 - code/game/machinery/shieldgen.dm | 2 +- code/game/machinery/spaceheater.dm | 2 - code/game/machinery/syndicatebomb.dm | 2 - code/game/mecha/mecha_parts.dm | 5 +- code/game/objects/effects/effect_system.dm | 2 - code/game/objects/items.dm | 1 - code/game/objects/items/apc_frame.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 1 - code/game/objects/items/devices/aicard.dm | 1 - .../objects/items/devices/chameleonproj.dm | 2 +- code/game/objects/items/devices/flash.dm | 2 +- code/game/objects/items/devices/flashlight.dm | 7 +- .../objects/items/devices/laserpointer.dm | 2 +- .../objects/items/devices/lightreplacer.dm | 2 +- code/game/objects/items/devices/multitool.dm | 1 - code/game/objects/items/devices/paicard.dm | 1 - code/game/objects/items/devices/powersink.dm | 2 +- .../items/devices/radio/electropack.dm | 2 +- .../objects/items/devices/radio/intercom.dm | 2 +- .../game/objects/items/devices/radio/radio.dm | 2 +- code/game/objects/items/devices/scanners.dm | 7 +- .../objects/items/devices/taperecorder.dm | 2 - .../objects/items/devices/traitordevices.dm | 2 +- code/game/objects/items/robot/robot_parts.dm | 2 +- code/game/objects/items/stacks/rods.dm | 2 +- .../game/objects/items/stacks/sheets/light.dm | 2 +- .../items/stacks/sheets/sheet_types.dm | 7 +- .../objects/items/stacks/sheets/sheets.dm | 1 - code/game/objects/items/stacks/tiles/light.dm | 2 +- .../objects/items/stacks/tiles/plasteel.dm | 2 +- .../objects/items/stacks/tiles/tile_types.dm | 3 - code/game/objects/items/toys.dm | 9 +-- code/game/objects/items/weapons/AI_modules.dm | 2 +- code/game/objects/items/weapons/RCD.dm | 2 +- code/game/objects/items/weapons/RSF.dm | 1 - .../objects/items/weapons/airlock_painter.dm | 2 +- .../objects/items/weapons/cigs_lighters.dm | 2 +- code/game/objects/items/weapons/cosmetics.dm | 3 +- code/game/objects/items/weapons/explosives.dm | 2 +- .../objects/items/weapons/extinguisher.dm | 4 +- .../objects/items/weapons/flamethrower.dm | 2 +- .../items/weapons/grenades/ghettobomb.dm | 2 +- .../objects/items/weapons/grenades/grenade.dm | 2 +- .../items/weapons/grenades/smokebomb.dm | 1 - code/game/objects/items/weapons/handcuffs.dm | 2 +- code/game/objects/items/weapons/kitchen.dm | 8 +-- .../objects/items/weapons/melee/energy.dm | 7 +- code/game/objects/items/weapons/melee/misc.dm | 3 +- code/game/objects/items/weapons/mop.dm | 1 - .../game/objects/items/weapons/power_cells.dm | 1 - code/game/objects/items/weapons/scrolls.dm | 1 - code/game/objects/items/weapons/shields.dm | 4 +- .../items/weapons/singularityhammer.dm | 4 +- .../objects/items/weapons/storage/backpack.dm | 1 - .../objects/items/weapons/storage/bags.dm | 1 - .../objects/items/weapons/storage/belt.dm | 1 - .../objects/items/weapons/storage/bible.dm | 1 - .../objects/items/weapons/storage/boxes.dm | 1 - .../items/weapons/storage/briefcase.dm | 2 +- .../objects/items/weapons/storage/fancy.dm | 2 - .../objects/items/weapons/storage/secure.dm | 2 - .../objects/items/weapons/storage/toolbox.dm | 2 +- code/game/objects/items/weapons/stunbaton.dm | 1 - .../objects/items/weapons/tanks/tank_types.dm | 4 +- .../game/objects/items/weapons/tanks/tanks.dm | 2 +- .../objects/items/weapons/teleportation.dm | 2 +- code/game/objects/items/weapons/tools.dm | 10 +-- code/game/objects/items/weapons/twohanded.dm | 4 +- .../objects/items/weapons/vending_items.dm | 2 +- code/game/objects/items/weapons/weaponry.dm | 9 +-- .../structures/crates_lockers/closets.dm | 3 +- .../crates_lockers/closets/statue.dm | 1 - .../structures/crates_lockers/crates.dm | 1 - .../structures/crates_lockers/largecrate.dm | 1 - code/game/objects/structures/grille.dm | 2 +- code/game/objects/structures/mop_bucket.dm | 2 +- code/game/objects/structures/noticeboard.dm | 1 - .../structures/stool_bed_chair_nest/stools.dm | 1 - code/game/objects/structures/tables_racks.dm | 1 - code/modules/assembly/assembly.dm | 2 +- code/modules/assembly/bomb.dm | 2 +- code/modules/assembly/holder.dm | 2 +- code/modules/assembly/infrared.dm | 1 - code/modules/assembly/shock_kit.dm | 2 +- code/modules/clothing/clothing.dm | 6 +- code/modules/clothing/head/hardhat.dm | 5 +- code/modules/clothing/head/helmet.dm | 12 ++-- code/modules/clothing/head/jobs.dm | 10 +-- code/modules/clothing/head/misc.dm | 28 +++----- code/modules/clothing/head/misc_special.dm | 10 ++- code/modules/clothing/head/soft_caps.dm | 2 +- code/modules/clothing/masks/boxing.dm | 4 +- code/modules/clothing/masks/breath.dm | 2 +- code/modules/clothing/masks/gasmask.dm | 2 +- code/modules/clothing/masks/miscellaneous.dm | 9 ++- .../clothing/spacesuits/miscellaneous.dm | 8 +-- code/modules/clothing/suits/armor.dm | 11 ++-- code/modules/clothing/suits/bio.dm | 4 +- code/modules/clothing/suits/miscellaneous.dm | 9 +-- code/modules/clothing/suits/utility.dm | 10 +-- code/modules/clothing/under/color.dm | 16 +---- code/modules/clothing/under/jobs/civilian.dm | 11 ---- .../clothing/under/jobs/engineering.dm | 3 - code/modules/clothing/under/jobs/medsci.dm | 7 -- code/modules/clothing/under/jobs/security.dm | 4 -- code/modules/clothing/under/miscellaneous.dm | 5 -- code/modules/clothing/under/shorts.dm | 1 - code/modules/clothing/under/ties.dm | 1 - code/modules/detectivework/detective_work.dm | 4 -- code/modules/detectivework/scanner.dm | 2 +- code/modules/events/holiday/xmas.dm | 1 - code/modules/hydroponics/growninedible.dm | 5 -- code/modules/hydroponics/hydroitemdefines.dm | 18 +---- code/modules/hydroponics/seeds.dm | 1 - code/modules/library/lib_items.dm | 2 - code/modules/mining/mine_items.dm | 4 +- code/modules/mining/money_bag.dm | 2 +- code/modules/mining/ores_coins.dm | 2 +- .../living/carbon/alien/special/facehugger.dm | 2 +- .../mob/living/carbon/brain/brain_item.dm | 1 - .../mob/living/carbon/metroid/metroid.dm | 6 +- .../mob/living/silicon/robot/robot_modules.dm | 2 +- code/modules/paperwork/clipboard.dm | 1 - code/modules/paperwork/pen.dm | 1 - code/modules/paperwork/photography.dm | 2 +- code/modules/paperwork/stamps.dm | 1 - code/modules/power/antimatter/shielding.dm | 2 +- code/modules/power/cable.dm | 2 +- code/modules/power/lighting.dm | 5 +- code/modules/power/switch.dm | 1 - code/modules/projectiles/ammunition.dm | 4 +- code/modules/projectiles/gun.dm | 2 +- .../projectiles/guns/energy/special.dm | 2 +- code/modules/projectiles/guns/magic.dm | 2 +- .../projectiles/guns/projectile/shotgun.dm | 4 +- code/modules/projectiles/projectile.dm | 1 - .../reagents/reagent_containers/borghydro.dm | 1 - .../reagent_containers/food/condiment.dm | 5 +- .../reagent_containers/food/drinks.dm | 4 +- .../reagents/reagent_containers/glass.dm | 13 ++-- .../reagent_containers/glass/bottle.dm | 2 +- .../reagent_containers/glass/bottle/robot.dm | 2 +- .../reagents/reagent_containers/hypospray.dm | 2 +- .../reagents/reagent_containers/spray.dm | 2 +- code/modules/reagents/reagent_dispenser.dm | 1 - code/modules/recycling/sortingmachinery.dm | 6 +- code/modules/surgery/tools.dm | 12 ++-- code/modules/telesci/gps.dm | 1 - code/modules/telesci/telepad.dm | 2 +- 165 files changed, 195 insertions(+), 430 deletions(-) diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 707d14390bb..6b1d728535b 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -75,7 +75,6 @@ throwforce = 0.0 throw_speed = 1 throw_range = 20 - flags = FPRINT | TABLEPASS afterattack(atom/target as mob|obj|turf|area, mob/user as mob) user.drop_item() src.throw_at(target, throw_range, throw_speed) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 257b52e098e..7c94a4bf869 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -3,7 +3,6 @@ desc = "Should anything ever go wrong..." icon = 'icons/obj/items.dmi' icon_state = "red_phone" - flags = FPRINT | TABLEPASS | CONDUCT force = 3.0 throwforce = 2.0 throw_speed = 1 @@ -22,7 +21,6 @@ anchored = 0.0 var/matter = 0 var/mode = 1 - flags = TABLEPASS w_class = 3.0 /obj/item/weapon/spacecash @@ -145,7 +143,6 @@ icon = 'icons/obj/weapons.dmi' icon_state = "cane" item_state = "stick" - flags = FPRINT | TABLEPASS| CONDUCT force = 5.0 throwforce = 7.0 w_class = 2.0 @@ -182,7 +179,7 @@ gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "handcuff" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT throwforce = 0 w_class = 3.0 origin_tech = "materials=1" @@ -241,7 +238,6 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS attack_verb = list("warned", "cautioned", "smashed") /obj/item/weapon/caution/cone @@ -254,48 +250,9 @@ desc = "Parts of a rack." icon = 'icons/obj/items.dmi' icon_state = "rack_parts" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT m_amt = 3750 -/*/obj/item/weapon/syndicate_uplink - name = "station bounced radio" - desc = "Remain silent about this..." - icon = 'icons/obj/radio.dmi' - icon_state = "radio" - var/temp = null - var/uses = 10.0 - var/selfdestruct = 0.0 - var/traitor_frequency = 0.0 - var/mob/currentUser = null - var/obj/item/device/radio/origradio = null - flags = FPRINT | TABLEPASS | CONDUCT | ONBELT - w_class = 2.0 - item_state = "radio" - throw_speed = 4 - throw_range = 20 - m_amt = 100 - origin_tech = "magnets=2;syndicate=3"*/ - -/obj/item/weapon/SWF_uplink - name = "station-bounced radio" - desc = "used to comunicate it appears." - icon = 'icons/obj/radio.dmi' - icon_state = "radio" - var/temp = null - var/uses = 4.0 - var/selfdestruct = 0.0 - var/traitor_frequency = 0.0 - var/obj/item/device/radio/origradio = null - flags = FPRINT | TABLEPASS| CONDUCT - slot_flags = SLOT_BELT - item_state = "radio" - throwforce = 5 - w_class = 2.0 - throw_speed = 4 - throw_range = 20 - m_amt = 100 - origin_tech = "magnets=1" - /obj/item/weapon/staff name = "wizards staff" desc = "Apparently a staff used by the wizard." @@ -306,7 +263,7 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD attack_verb = list("bludgeoned", "whacked", "disciplined") /obj/item/weapon/staff/broom @@ -326,7 +283,7 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD /obj/item/weapon/table_parts name = "table parts" @@ -335,7 +292,7 @@ icon = 'icons/obj/items.dmi' icon_state = "table_parts" m_amt = 3750 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked") /obj/item/weapon/table_parts/reinforced @@ -344,7 +301,7 @@ icon = 'icons/obj/items.dmi' icon_state = "reinf_tableparts" m_amt = 7500 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT /obj/item/weapon/table_parts/wood name = "wooden table parts" @@ -357,8 +314,7 @@ icon_state = "std_module" w_class = 2.0 item_state = "electronic" - flags = FPRINT|TABLEPASS|CONDUCT - var/mtype = 1 // 1=electronic 2=hardware + flags = CONDUCT /obj/item/weapon/module/card_reader name = "card reader module" @@ -390,7 +346,7 @@ desc = "Meat that appears...strange..." icon = 'icons/obj/food.dmi' icon_state = "meat" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT w_class = 1.0 origin_tech = "biotech=2" @@ -399,7 +355,7 @@ desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood." icon = 'icons/obj/weapons.dmi' icon_state = "hatchet" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 12.0 w_class = 1.0 throwforce = 15.0 @@ -422,7 +378,7 @@ throw_speed = 1 throw_range = 3 w_class = 4.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = CONDUCT | NOSHIELD slot_flags = SLOT_BACK origin_tech = "materials=2;combat=2" attack_verb = list("chopped", "sliced", "cut", "reaped") @@ -445,7 +401,7 @@ w_class = 1 throwforce = 2 var/cigarcount = 6 - flags = ONBELT | TABLEPASS */ +*/ /obj/item/weapon/pai_cable desc = "A flexible coated cable with a universal jack on one end." diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 4c91bbbb2a0..400d6961ae7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1,7 +1,7 @@ /atom layer = 2 var/level = 2 - var/flags = FPRINT + var/flags = null var/list/fingerprints var/list/fingerprintshidden var/fingerprintslast = null @@ -249,8 +249,6 @@ var/list/blood_splatter_icons = list() return 0 if(!check_dna_integrity(M)) //check dna is valid and create/setup if necessary return 0 //no dna! - if(!(flags & FPRINT)) - return 0 if(!istype(blood_DNA, /list)) //if our list of DNA doesn't exist yet (or isn't a list) initialise it. blood_DNA = list() return diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 6da4a22f51f..bc0ef8bd8ad 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -3,7 +3,7 @@ desc = "An arcane weapon wielded by the followers of Nar-Sie" icon_state = "cultblade" item_state = "cultblade" - flags = FPRINT | TABLEPASS + flags = CONDUCT w_class = 4 force = 30 throwforce = 10 @@ -34,7 +34,7 @@ icon_state = "culthood" desc = "A hood worn by the followers of Nar-Sie." flags_inv = HIDEFACE - flags = FPRINT|TABLEPASS|HEADCOVERSEYES + flags = HEADCOVERSEYES armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT @@ -55,7 +55,6 @@ desc = "A set of armored robes worn by the followers of Nar-Sie" icon_state = "cultrobes" item_state = "cultrobes" - flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) @@ -71,7 +70,7 @@ item_state = "magus" desc = "A helm worn by the followers of Nar-Sie." flags_inv = HIDEFACE - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/suit/magusred @@ -79,7 +78,6 @@ desc = "A set of armored robes worn by the followers of Nar-Sie" icon_state = "magusred" item_state = "magusred" - flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 31b7ea0c884..8f2081b683d 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -306,7 +306,6 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS var/notedat = "" var/tomedat = "" var/list/words = list("ire" = "ire", "ego" = "ego", "nahlizet" = "nahlizet", "certum" = "certum", "veri" = "veri", "jatkaa" = "jatkaa", "balaq" = "balaq", "mgar" = "mgar", "karazet" = "karazet", "geeri" = "geeri") diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index b0ac6ef8bc0..fee836ca6b5 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -14,7 +14,6 @@ var/bomb_set var/yes_code = 0.0 var/safety = 1.0 var/obj/item/weapon/disk/nuclear/auth = null - flags = FPRINT use_power = 0 /obj/machinery/nuclearbomb/New() diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index d11836bc69f..60b08593e64 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -2,7 +2,7 @@ name = "pinpointer" icon = 'icons/obj/device.dmi' icon_state = "pinoff" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT w_class = 2.0 item_state = "electronic" diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 3d404dfc846..27b164554a3 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -10,7 +10,6 @@ throw_range = 5 w_class = 1.0 var/used = 0 - flags = FPRINT | TABLEPASS /obj/item/weapon/contract/attack_self(mob/user as mob) @@ -116,7 +115,6 @@ icon = 'icons/obj/wizard.dmi' icon_state = "render" item_state = "render" - flags = FPRINT | TABLEPASS force = 15 throwforce = 10 w_class = 3 @@ -196,7 +194,6 @@ throwforce = 15 damtype = BURN force = 15 - flags = FPRINT | TABLEPASS hitsound = 'sound/items/welder2.ogg' /obj/item/weapon/scrying/attack_self(mob/user as mob) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 5db247ee458..81d819b3a00 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -5,7 +5,6 @@ item_state = "electronic" desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power." w_class = 1.0 - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT origin_tech = "bluespace=4;materials=4" var/imprinted = "empty" @@ -81,7 +80,6 @@ icon = 'icons/obj/wizard.dmi' icon_state = "construct" desc = "A wicked machine used by those skilled in magical arts. It is inactive" - flags = FPRINT | TABLEPASS /obj/structure/constructshell/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/device/soulstone)) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 3627da60f5b..a38040c2901 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -6,7 +6,6 @@ throw_speed = 1 throw_range = 5 w_class = 1.0 - flags = FPRINT | TABLEPASS var/uses = 5 var/temp = null var/max_uses = 5 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index cd34e0f4ff5..31773227ac8 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -874,7 +874,7 @@ Code shamelessly copied from apc_frame desc = "Used for building Air Alarms" icon = 'icons/obj/monitors.dmi' icon_state = "alarm_bitem" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT /obj/item/alarm_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) @@ -1208,7 +1208,7 @@ Code shamelessly copied from apc_frame desc = "Used for building Fire Alarms" icon = 'icons/obj/monitors.dmi' icon_state = "fire_bitem" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT /obj/item/firealarm_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 6db3878d187..217e61338b2 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -4,7 +4,6 @@ icon_state = "yellow" density = 1 var/health = 100.0 - flags = FPRINT | CONDUCT var/valve_open = 0 var/release_pressure = ONE_ATMOSPHERE diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 0e7ece90483..2d5371fa9a0 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -9,7 +9,6 @@ throw_speed = 2 throw_range = 5 w_class = 3.0 - flags = TABLEPASS var/created_name = "Cleanbot" diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index 118586c31a8..3d76b9cd7a4 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -9,7 +9,6 @@ throw_speed = 2 throw_range = 5 w_class = 3.0 - flags = TABLEPASS var/created_name = "Floorbot" /obj/item/weapon/toolbox_tiles_sensor @@ -22,7 +21,6 @@ throw_speed = 2 throw_range = 5 w_class = 3.0 - flags = TABLEPASS var/created_name = "Floorbot" //Floorbot diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 64fa4a6985e..6479c5d9344 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -371,7 +371,7 @@ throw_range = 5 throwforce = 0 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD var/active = 0 /obj/item/weapon/holo/esword/green diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index c104200abb9..4cec3d742c7 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -32,7 +32,6 @@ Buildable meters icon = 'icons/obj/pipe-item.dmi' icon_state = "simple" item_state = "buildpipe" - flags = TABLEPASS|FPRINT w_class = 3 level = 2 @@ -559,7 +558,6 @@ Buildable meters icon = 'icons/obj/pipe-item.dmi' icon_state = "meter" item_state = "buildpipe" - flags = TABLEPASS|FPRINT w_class = 4 /obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index eeb7d9bac10..473ad23024f 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -334,7 +334,7 @@ // var/maxshieldload = 200 var/obj/structure/cable/attached // the attached cable var/storedpower = 0 - flags = FPRINT | CONDUCT + flags = CONDUCT use_power = 0 /obj/machinery/shieldwallgen/proc/power() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index ac09b26735a..8161c2c51f1 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -11,8 +11,6 @@ var/set_temperature = 50 // in celcius, add T0C for kelvin var/heating_power = 40000 - flags = FPRINT - New() ..() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 678d9407a66..e01e034fcd2 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -147,7 +147,6 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "bombcore" item_state = "eshield0" - flags = FPRINT | TABLEPASS w_class = 3.0 origin_tech = "syndicate=6;combat=5" @@ -161,7 +160,6 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "bigred" item_state = "electronic" - flags = FPRINT | TABLEPASS w_class = 1.0 origin_tech = "syndicate=2" var/cooldown = 0 diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index ccb4040a3e3..265bf1695e0 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -7,7 +7,7 @@ icon = 'icons/mecha/mech_construct.dmi' icon_state = "blank" w_class = 20 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT origin_tech = "programming=2;materials=2" var/construction_time = 100 var/list/construction_cost = list("metal"=20000,"glass"=5000) @@ -18,7 +18,6 @@ icon_state = "backbone" var/datum/construction/construct construction_cost = list("metal"=20000) - flags = FPRINT | CONDUCT attackby(obj/item/W as obj, mob/user as mob) if(!construct || !construct.action(W, user)) @@ -405,7 +404,7 @@ icon_state = "std_mod" item_state = "electronic" board_type = "other" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 5.0 w_class = 2.0 throwforce = 5.0 diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 07690b96b47..f4f81c07388 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -11,14 +11,12 @@ would spawn and follow the beaker, even if it is carried or thrown. icon = 'icons/effects/effects.dmi' mouse_opacity = 0 unacidable = 1//So effect are not targeted by alien acid. - flags = TABLEPASS /obj/effect/effect/water name = "water" icon = 'icons/effects/effects.dmi' icon_state = "extinguish" var/life = 15.0 - flags = TABLEPASS mouse_opacity = 0 /obj/effect/effect/smoke diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0d161121de8..ed813c12dd6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -8,7 +8,6 @@ var/burning = null var/hitsound = null var/w_class = 3.0 - flags = FPRINT | TABLEPASS var/slot_flags = 0 //This is used to determine on which slots an item can fit. pass_flags = PASSTABLE pressure_resistance = 5 diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 658f7673e0b..b0001e65c8f 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -5,7 +5,7 @@ desc = "Used for repairing or building APCs" icon = 'icons/obj/apc_repair.dmi' icon_state = "apc_frame" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT /obj/item/apc_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 792bfa55b74..e409e1efbbb 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -11,7 +11,6 @@ var/global/list/obj/item/device/pda/PDAs = list() icon_state = "pda" item_state = "electronic" w_class = 1.0 - flags = FPRINT | TABLEPASS slot_flags = SLOT_ID | SLOT_BELT //Main variables diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index abc5d6b2fdd..26fab873bb0 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -4,7 +4,6 @@ icon_state = "aicard" // aicard-full item_state = "electronic" w_class = 2.0 - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT var/flush = null origin_tech = "programming=4;materials=4" diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index b97ef5746c1..a51decc1379 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -1,7 +1,7 @@ /obj/item/device/chameleon name = "chameleon-projector" icon_state = "shield0" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT item_state = "electronic" throwforce = 5.0 diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 5fa3f153db6..2e1096009d7 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -7,7 +7,7 @@ w_class = 1.0 throw_speed = 4 throw_range = 10 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT origin_tech = "magnets=2;combat=1" var/times_used = 0 //Number of times it's been used. diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9bb8d49df9e..d8428fb72ef 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -5,7 +5,7 @@ icon_state = "flashlight" item_state = "flashlight" w_class = 2 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT m_amt = 50 g_amt = 20 @@ -104,7 +104,7 @@ desc = "A pen-sized light, used by medical staff." icon_state = "penlight" item_state = "" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT brightness_on = 2 @@ -116,7 +116,7 @@ item_state = "lamp" brightness_on = 5 w_class = 4 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT m_amt = 0 g_amt = 0 on = 1 @@ -205,7 +205,6 @@ icon_state = "slime" item_state = "slime" w_class = 2 - flags = FPRINT | TABLEPASS | CONDUCT slot_flags = SLOT_BELT m_amt = 0 g_amt = 0 diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 061feddbdce..d5d400e183a 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -6,7 +6,7 @@ icon_state = "pointer" item_state = "pen" var/pointer_icon_state - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT m_amt = 500 g_amt = 500 diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 08cd98d04ea..9cb72a9b928 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -47,7 +47,7 @@ icon_state = "lightreplacer0" item_state = "electronic" - flags = FPRINT | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT origin_tech = "magnets=3;materials=2" diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index cf4a93e3fb5..9a17fff3770 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -8,7 +8,6 @@ name = "multitool" desc = "Used for pulsing wires to test which to cut. Not recommended by doctors." icon_state = "multitool" - flags = FPRINT | TABLEPASS| CONDUCT force = 5.0 w_class = 2.0 throwforce = 5.0 diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index dfefefddd8b..c38169c621b 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -4,7 +4,6 @@ icon_state = "pai" item_state = "electronic" w_class = 2.0 - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT origin_tech = "programming=2" var/obj/item/device/radio/radio diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index e637426a541..aee901aad5f 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -6,7 +6,7 @@ icon_state = "powersink0" item_state = "electronic" w_class = 4.0 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT throwforce = 5 throw_speed = 1 throw_range = 2 diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 847082b8593..095849c6f9f 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -4,7 +4,7 @@ icon_state = "electropack0" item_state = "electropack" frequency = 1449 - flags = FPRINT | CONDUCT | TABLEPASS + flags = CONDUCT slot_flags = SLOT_BACK w_class = 5.0 g_amt = 2500 diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 52c4945ef18..8e03f22f48f 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -5,7 +5,7 @@ anchored = 1 w_class = 4.0 canhear_range = 2 - flags = FPRINT | CONDUCT | TABLEPASS + flags = CONDUCT var/number = 0 var/anyai = 1 var/mob/living/silicon/ai/ai = list() diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index f4ebb92017d..b96310ea445 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -27,7 +27,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use var/maxf = 1499 var/emped = 0 //Highjacked to track the number of consecutive EMPs on the radio, allowing consecutive EMP's to stack properly. // "Example" = FREQ_LISTENING|FREQ_BROADCASTING - flags = FPRINT | CONDUCT | TABLEPASS + flags = CONDUCT slot_flags = SLOT_BELT throw_speed = 2 throw_range = 9 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 27b99ccfece..06f79cf01cd 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -13,7 +13,6 @@ MASS SPECTROMETER desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." icon_state = "t-ray0" var/on = 0 - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT w_class = 2 item_state = "electronic" @@ -65,7 +64,7 @@ MASS SPECTROMETER icon_state = "health" item_state = "analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 w_class = 1.0 @@ -168,7 +167,7 @@ MASS SPECTROMETER icon_state = "atmos" item_state = "analyzer" w_class = 2.0 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 @@ -235,7 +234,7 @@ MASS SPECTROMETER icon_state = "spectrometer" item_state = "analyzer" w_class = 2.0 - flags = FPRINT | TABLEPASS| CONDUCT | OPENCONTAINER + flags = CONDUCT | OPENCONTAINER slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 724295a2b81..d7af7b71b03 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -7,7 +7,6 @@ slot_flags = SLOT_BELT m_amt = 60 g_amt = 30 - flags = FPRINT | TABLEPASS | CONDUCT force = 2 throwforce = 2 var/recording = 0 @@ -265,7 +264,6 @@ w_class = 1 m_amt = 20 g_amt = 5 - flags = FPRINT | TABLEPASS | CONDUCT force = 1 throwforce = 1 var/max_capacity = 600 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 62eb994bfd4..1004baad5f7 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -22,7 +22,7 @@ effective or pretty fucking useless. w_class = 1.0 throw_speed = 4 throw_range = 10 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT item_state = "electronic" origin_tech = "magnets=3;combat=3;syndicate=3" diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index eff66fb38c6..b0980069aac 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/robot_parts.dmi' item_state = "buildpipe" icon_state = "blank" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT var/construction_time = 100 var/list/construction_cost = list("metal"=20000,"glass"=5000) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index ce2698da703..5f8b93a6f6d 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -3,7 +3,7 @@ desc = "Some rods. Can be used for building, or something." singular_name = "metal rod" icon_state = "rods" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT w_class = 3.0 force = 9.0 throwforce = 15.0 diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 675a2620b77..0617eb0c5d1 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -8,7 +8,7 @@ throwforce = 5.0 throw_speed = 5 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT max_amount = 60 /obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 7219be973f0..7d2fff791d9 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -50,7 +50,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ icon_state = "sheet-metal" m_amt = 3750 throwforce = 14.0 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT origin_tech = "materials=1" /obj/item/stack/sheet/metal/cyborg @@ -60,7 +60,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ icon_state = "sheet-metal" m_amt = 0 throwforce = 14.0 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT /obj/item/stack/sheet/metal/New(var/loc, var/amount=null) recipes = metal_recipes @@ -82,7 +82,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ item_state = "sheet-metal" m_amt = 7500 throwforce = 15.0 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT origin_tech = "materials=2" /obj/item/stack/sheet/plasteel/New(var/loc, var/amount=null) @@ -143,7 +143,6 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ desc = "Large sheets of card, like boxes folded flat." singular_name = "cardboard sheet" icon_state = "sheet-card" - flags = FPRINT | TABLEPASS origin_tech = "materials=1" /obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null) diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index fdcc6747b64..bcd953e4531 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -1,6 +1,5 @@ /obj/item/stack/sheet name = "sheet" - flags = FPRINT | TABLEPASS w_class = 3.0 force = 5 throwforce = 5 diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index e869c8d0ee4..a2db9c0bd5f 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -8,7 +8,7 @@ throwforce = 5.0 throw_speed = 5 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT max_amount = 60 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed") var/on = 1 diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm index 870624124fd..dde17228d16 100644 --- a/code/game/objects/items/stacks/tiles/plasteel.dm +++ b/code/game/objects/items/stacks/tiles/plasteel.dm @@ -9,7 +9,7 @@ throwforce = 15.0 throw_speed = 5 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT max_amount = 60 /obj/item/stack/tile/plasteel/cyborg diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 3046209b1a8..b37db4b246a 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -18,7 +18,6 @@ throwforce = 1.0 throw_speed = 5 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT max_amount = 60 origin_tech = "biotech=1" @@ -35,7 +34,6 @@ throwforce = 1.0 throw_speed = 5 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT max_amount = 60 origin_tech = "biotech=1" /* @@ -51,5 +49,4 @@ throwforce = 1.0 throw_speed = 5 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT max_amount = 60 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f7c5a220721..edf84e2cd08 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -112,7 +112,7 @@ icon = 'icons/obj/gun.dmi' icon_state = "revolver" item_state = "gun" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT w_class = 3.0 g_amt = 10 @@ -168,7 +168,6 @@ desc = "There are 7 caps left! Make sure to recyle the box in an autolathe when it gets empty." icon = 'icons/obj/ammo.dmi' icon_state = "357-7" - flags = FPRINT | TABLEPASS| CONDUCT w_class = 1.0 g_amt = 10 m_amt = 10 @@ -189,7 +188,6 @@ icon = 'icons/obj/gun.dmi' icon_state = "crossbow" item_state = "crossbow" - flags = FPRINT | TABLEPASS w_class = 2.0 attack_verb = list("attacked", "struck", "hit") var/bullets = 5 @@ -285,7 +283,6 @@ desc = "Its nerf or nothing! Ages 8 and up." icon = 'icons/obj/toy.dmi' icon_state = "foamdart" - flags = FPRINT | TABLEPASS w_class = 1.0 /obj/effect/foam_dart_dummy @@ -308,7 +305,7 @@ item_state = "sword0" var/active = 0.0 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD attack_verb = list("attacked", "struck", "hit") var/hacked = 0 @@ -395,7 +392,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "katana" item_state = "katana" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 5 throwforce = 5 diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index f55625cbde5..f684f98bb08 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -12,7 +12,7 @@ AI MODULES icon_state = "std_mod" item_state = "electronic" desc = "An AI Module for transmitting encrypted instructions to the AI." - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 5.0 w_class = 2.0 throwforce = 5.0 diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 7260f834bda..fd240c23491 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -12,7 +12,7 @@ RCD opacity = 0 density = 0 anchored = 0.0 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 10.0 throwforce = 10.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index fa55fc8e624..1712f52d6f2 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -13,7 +13,6 @@ RSF anchored = 0.0 var/matter = 0 var/mode = 1 - flags = TABLEPASS w_class = 3.0 /obj/item/weapon/rsf/New() diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm index a0eb361aebd..3c7156cc6e6 100644 --- a/code/game/objects/items/weapons/airlock_painter.dm +++ b/code/game/objects/items/weapons/airlock_painter.dm @@ -11,7 +11,7 @@ g_amt = 50 origin_tech = "engineering=1" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT var/obj/item/device/toner/ink = null diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 05e8dc655a3..cde95aa5f1c 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -330,7 +330,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/icon_off = "lighter-g" w_class = 1 throwforce = 4 - flags = TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT attack_verb = list("burnt", "singed") var/lit = 0 diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index cc0a230a848..c40f89ddc7b 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -4,7 +4,6 @@ desc = "A generic brand of lipstick." icon = 'icons/obj/items.dmi' icon_state = "lipstick" - flags = FPRINT | TABLEPASS w_class = 1 var/colour = "red" var/open = 0 @@ -94,7 +93,7 @@ desc = "The latest and greatest power razor born from the science of shaving." icon = 'icons/obj/items.dmi' icon_state = "razor" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT w_class = 1 diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 5531dda9ca1..b00dd4efbf3 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -7,7 +7,7 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "plastic-explosive0" item_state = "plasticx" - flags = FPRINT | TABLEPASS | NOBLUDGEON + flags = NOBLUDGEON w_class = 2.0 origin_tech = "syndicate=2" var/datum/wires/explosive/plastic/wires = null diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 5632e971ef0..d54af233904 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -5,7 +5,7 @@ icon_state = "fire_extinguisher0" item_state = "fire_extinguisher" hitsound = 'sound/weapons/smash.ogg' - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT throwforce = 10 w_class = 3.0 throw_speed = 2 @@ -24,7 +24,7 @@ icon_state = "miniFE0" item_state = "miniFE" hitsound = null //it is much lighter, after all. - flags = FPRINT | TABLEPASS + flags = null //doesn't CONDUCT throwforce = 2 w_class = 2.0 force = 3.0 diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index c2df5d93659..c45e40cb96e 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/flamethrower.dmi' icon_state = "flamethrowerbase" item_state = "flamethrower_0" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 3.0 throwforce = 10.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 326f5b0dc46..13ba2b81d11 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -23,7 +23,7 @@ item_state = "flashbang" throw_speed = 4 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT var/assembled = 0 active = 1 diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 630224d05ac..940c1404c40 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -7,7 +7,7 @@ item_state = "flashbang" throw_speed = 4 throw_range = 20 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT var/active = 0 var/det_time = 50 diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 803d16d7271..508d3e6f7c9 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -4,7 +4,6 @@ icon_state = "flashbang" det_time = 20 item_state = "flashbang" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT var/datum/effect/effect/system/bad_smoke_spread/smoke diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index bb3761a00e9..462fcf813d5 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -4,7 +4,7 @@ gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "handcuff" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 w_class = 2.0 diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 6a5d949a2eb..e5f13167d13 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -22,7 +22,7 @@ throwforce = 5.0 throw_speed = 3 throw_range = 5 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT origin_tech = "materials=1" attack_verb = list("attacked", "stabbed", "poked") @@ -103,7 +103,7 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "knife" desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 10.0 w_class = 3.0 throwforce = 6.0 @@ -133,7 +133,7 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "butch" desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products." - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 15.0 w_class = 2.0 throwforce = 8.0 @@ -204,7 +204,7 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT m_amt = 3000 var/list/carrying = list() // List of things on the tray. - Doohl var/max_carry = 10 // w_class = 1 -- takes up 1 diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 3ae20446c88..e318eaa2d89 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -1,6 +1,5 @@ /obj/item/weapon/melee/energy var/active = 0 - flags = FPRINT | TABLEPASS /obj/item/weapon/melee/energy/suicide_act(mob/user) viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ @@ -19,7 +18,7 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS + flags = CONDUCT | NOSHIELD origin_tech = "combat=3" attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") @@ -53,7 +52,7 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD origin_tech = "magnets=3;syndicate=4" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/hacked = 0 @@ -155,7 +154,7 @@ throw_speed = 1 throw_range = 1 w_class = 4.0//So you can't hide it in your pocket or some such. - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/datum/effect/effect/system/spark_spread/spark_system diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 379e1f319a5..8d9a12edccd 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -3,7 +3,7 @@ desc = "A tool used by great men to placate the frothing masses." icon_state = "chain" item_state = "chain" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 10 throwforce = 7 @@ -23,7 +23,6 @@ icon = 'icons/obj/weapons.dmi' icon_state = "baton" item_state = "classic_baton" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT force = 10 diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 1dec414ff71..0011cbab9a5 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -8,7 +8,6 @@ throw_speed = 5 throw_range = 10 w_class = 3.0 - flags = FPRINT | TABLEPASS attack_verb = list("mopped", "bashed", "bludgeoned", "whacked") var/mopping = 0 var/mopcount = 0 diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 22c206a10d8..92487dd540b 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -5,7 +5,6 @@ icon_state = "cell" item_state = "cell" origin_tech = "powerstorage=1" - flags = FPRINT|TABLEPASS force = 5.0 throwforce = 5.0 throw_speed = 3 diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index 326d1c49829..56e04af2d1a 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/wizard.dmi' icon_state = "scroll" var/uses = 4.0 - flags = FPRINT | TABLEPASS w_class = 2.0 item_state = "paper" throw_speed = 4 diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 582099b89da..ca03ea5a96b 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -6,7 +6,6 @@ desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." icon = 'icons/obj/weapons.dmi' icon_state = "riot" - flags = FPRINT | TABLEPASS| CONDUCT slot_flags = SLOT_BACK force = 5.0 throwforce = 5.0 @@ -40,7 +39,6 @@ desc = "A shield capable of stopping most projectile and melee attacks. Energy projectiles are reflected. It can be retracted, expanded, and stored anywhere." icon = 'icons/obj/weapons.dmi' icon_state = "eshield0" // eshield1 for expanded - flags = FPRINT | TABLEPASS| CONDUCT force = 3.0 throwforce = 5.0 throw_speed = 1 @@ -86,7 +84,7 @@ icon = 'icons/obj/device.dmi' icon_state = "shield0" var/active = 0.0 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT item_state = "electronic" throwforce = 10.0 throw_speed = 2 diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm index 88deea093c6..52a75164cf3 100644 --- a/code/game/objects/items/weapons/singularityhammer.dm +++ b/code/game/objects/items/weapons/singularityhammer.dm @@ -3,7 +3,7 @@ name = "singularity hammer" desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows." icon_state = "mjollnir0" - flags = FPRINT | TABLEPASS + flags = CONDUCT slot_flags = SLOT_BACK force = 5 force_unwielded = 5 @@ -75,7 +75,7 @@ name = "Mjollnir" desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy." icon_state = "mjollnir0" - flags = FPRINT | TABLEPASS + flags = CONDUCT slot_flags = SLOT_BACK force = 5 force_unwielded = 5 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 49e9ae665bd..007c7e000a7 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -15,7 +15,6 @@ icon_state = "backpack" item_state = "backpack" w_class = 4.0 - flags = FPRINT|TABLEPASS slot_flags = SLOT_BACK //ERROOOOO max_w_class = 3 max_combined_w_class = 21 diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 59fde425b6c..2245642a35c 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -20,7 +20,6 @@ display_contents_with_number = 1 // should work fine now use_to_pickup = 1 slot_flags = SLOT_BELT - flags = FPRINT | TABLEPASS // ----------------------------- // Trash bag diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index c732d71c36d..2fee9e123b7 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/clothing/belts.dmi' icon_state = "utilitybelt" item_state = "utility" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index fbcd8280015..3d720b1c4d0 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -5,7 +5,6 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - flags = FPRINT | TABLEPASS var/mob/affecting = null var/deity_name = "Christ" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 02602b61cd0..b1673bd3286 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -458,7 +458,6 @@ item_state = "zippo" storage_slots = 10 w_class = 1 - flags = TABLEPASS slot_flags = SLOT_BELT New() diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 23b73d51474..1503c518aba 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -2,7 +2,7 @@ name = "briefcase" desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional." icon_state = "briefcase" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 8.0 throw_speed = 1 throw_range = 4 diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 7305201a646..bb77943ea63 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -88,7 +88,6 @@ item_state = "candlebox5" storage_slots = 5 throwforce = 2 - flags = TABLEPASS slot_flags = SLOT_BELT @@ -152,7 +151,6 @@ item_state = "cigpacket" w_class = 1 throwforce = 2 - flags = TABLEPASS slot_flags = SLOT_BELT storage_slots = 6 can_hold = list("/obj/item/clothing/mask/cigarette") diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 007fefdc9f0..aac2ed48915 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -146,7 +146,6 @@ icon_state = "secure" item_state = "sec-case" desc = "A large briefcase with a digital locking system." - flags = FPRINT | TABLEPASS force = 8.0 throw_speed = 1 throw_range = 4 @@ -223,7 +222,6 @@ icon_opened = "safe0" icon_locking = "safeb" icon_sparking = "safespark" - flags = FPRINT | TABLEPASS force = 8.0 w_class = 8.0 max_w_class = 8 diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 4e8aff02267..09b7476a2e0 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "red" item_state = "toolbox_red" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 10.0 throwforce = 15.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 6e5ee52781b..cceaf7e281d 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -3,7 +3,6 @@ desc = "A stun baton for incapacitating people with." icon_state = "stunbaton" item_state = "baton" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT force = 10 throwforce = 7 diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index f84e6c8ab3b..042b9fec2e3 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -91,7 +91,7 @@ name = "plasma tank" desc = "Contains dangerous plasma. Do not inhale. Warning: extremely flammable." icon_state = "plasma" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = null //they have no straps! @@ -125,7 +125,7 @@ name = "emergency oxygen tank" desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it." icon_state = "emergency" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT w_class = 2.0 force = 4.0 diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 9fdc6955405..8c468fe9957 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -1,7 +1,7 @@ /obj/item/weapon/tank name = "tank" icon = 'icons/obj/tank.dmi' - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BACK pressure_resistance = ONE_ATMOSPHERE*5 diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index c35d49dc9ec..59217a3b363 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -16,7 +16,7 @@ var/frequency = 1451 var/broadcasting = null var/listening = 1.0 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT w_class = 2.0 item_state = "electronic" throw_speed = 4 diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index a66aca73e29..a17fed909f4 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -19,7 +19,7 @@ desc = "A wrench with common uses. Can be found in your hand." icon = 'icons/obj/items.dmi' icon_state = "wrench" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 5.0 throwforce = 7.0 @@ -37,7 +37,7 @@ desc = "You can be totally screwy with this." icon = 'icons/obj/items.dmi' icon_state = "screwdriver" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 5.0 w_class = 1.0 @@ -97,7 +97,7 @@ desc = "This cuts wires." icon = 'icons/obj/items.dmi' icon_state = "cutters" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 6.0 throw_speed = 2 @@ -129,7 +129,7 @@ name = "welding tool" icon = 'icons/obj/items.dmi' icon_state = "welder" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 3 throwforce = 5 @@ -400,7 +400,7 @@ desc = "Used to hit floors" icon = 'icons/obj/items.dmi' icon_state = "crowbar" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 5.0 throwforce = 7.0 diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index e6bdbbb1f69..bd619d21103 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -165,7 +165,7 @@ force_wielded = 34 wieldsound = 'sound/weapons/saberon.ogg' unwieldsound = 'sound/weapons/saberoff.ogg' - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD origin_tech = "magnets=3;syndicate=4" item_color = "green" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -250,7 +250,7 @@ force_unwielded = 10 force_wielded = 18 // Was 13, Buffed - RR throwforce = 15 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = NOSHIELD hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm index 9b49f566ed1..a93a9f8abf0 100644 --- a/code/game/objects/items/weapons/vending_items.dm +++ b/code/game/objects/items/weapons/vending_items.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/vending_restock.dmi' icon_state = "refill_snack" item_state = "restock_unit" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 7.0 throwforce = 15.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 4b2a27aa54d..f9d03caf9e0 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -3,7 +3,6 @@ name = "banhammer" icon = 'icons/obj/items.dmi' icon_state = "toyhammer" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT throwforce = 0 w_class = 1.0 @@ -25,7 +24,6 @@ desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers." icon_state = "nullrod" item_state = "nullrod" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT force = 15 throw_speed = 1 @@ -42,7 +40,6 @@ desc = "This thing is so unspeakably shitty you are having a hard time even holding it." icon_state = "sord" item_state = "sord" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT force = 2 throwforce = 1 @@ -59,7 +56,7 @@ desc = "What are you standing around staring at this for? Get to killing!" icon_state = "claymore" item_state = "claymore" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 40 throwforce = 10 @@ -82,7 +79,7 @@ desc = "Woefully underpowered in D20" icon_state = "katana" item_state = "katana" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 40 throwforce = 10 @@ -102,7 +99,7 @@ obj/item/weapon/wirerod desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." icon_state = "wiredrod" item_state = "rods" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 9 throwforce = 10 w_class = 3 diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 125b2ee1087..3696c7196c3 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/closet.dmi' icon_state = "closed" density = 1 - flags = FPRINT var/icon_closed = "closed" var/icon_opened = "open" var/opened = 0 @@ -322,4 +321,4 @@ broken = 1 //applies to secure lockers only visible_message("[user] successfully broke out of [src]!") user << "You successfully break out of [src]!" - open() + open() diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 30fa750b85d..24a84fb13e3 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -5,7 +5,6 @@ icon_state = "human_male" density = 1 anchored = 1 - flags = FPRINT health = 0 //destroying the statue kills the mob within var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils. diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index ab397404dcc..8ef89a1215b 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -10,7 +10,6 @@ icon_closed = "crate" req_access = null opened = 0 - flags = FPRINT // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 var/sound_effect_open = 'sound/machines/click.ogg' diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 5dee6e48347..0df0d40e6d8 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/storage.dmi' icon_state = "densecrate" density = 1 - flags = FPRINT /obj/structure/largecrate/attack_hand(mob/user as mob) user << "You need a crowbar to pry this open!" diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 146d22002a0..c3a04fb3315 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -5,7 +5,7 @@ icon_state = "grille" density = 1 anchored = 1 - flags = FPRINT | CONDUCT + flags = CONDUCT pressure_resistance = 5*ONE_ATMOSPHERE layer = 2.9 explosion_resistance = 5 diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index d59b4661135..7a98605ce26 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -5,7 +5,7 @@ icon_state = "mopbucket" density = 1 pressure_resistance = 5 - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 1f23e10411d..a5ad84c20eb 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -3,7 +3,6 @@ desc = "A board for pinning important notices upon." icon = 'icons/obj/stationobjs.dmi' icon_state = "nboard00" - flags = FPRINT density = 0 anchored = 1 var/notices = 0 diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index f19a90ace79..f0a46e0ce2f 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/objects.dmi' icon_state = "stool" anchored = 1.0 - flags = FPRINT pressure_resistance = 15 /obj/structure/stool/ex_act(severity) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 5a81d92b0c6..1315b1ceaa2 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -468,7 +468,6 @@ icon = 'icons/obj/objects.dmi' icon_state = "rack" density = 1 - flags = FPRINT anchored = 1.0 throwpass = 1 //You can throw objects over this, despite it's density. diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 62efb6ea31c..94e106fb5f9 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -3,7 +3,7 @@ desc = "A small electronic device that should never exist." icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT w_class = 2.0 m_amt = 100 g_amt = 0 diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 0b21b2aa101..ed66e22a18f 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -6,7 +6,7 @@ w_class = 3.0 throw_speed = 2 throw_range = 4 - flags = FPRINT | TABLEPASS| CONDUCT //Copied this from old code, so this may or may not be necessary + flags = CONDUCT var/status = 0 //0 - not readied //1 - bomb finished with welder var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device var/obj/item/weapon/tank/bombtank = null //the second part of the bomb is a plasma tank diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 6fdc7f2af8a..ee24d531631 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "holder" item_state = "assembly" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT throwforce = 5 w_class = 2.0 throw_speed = 3 diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 9bedd1cb957..516e63d2c43 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -178,7 +178,6 @@ var/visible = 0.0 var/left = null anchored = 1.0 - flags = TABLEPASS /obj/effect/beam/i_beam/proc/hit() diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 3dfb314be81..69f596a0138 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -7,7 +7,7 @@ var/obj/item/device/radio/electropack/part2 = null var/status = 0 w_class = 5.0 - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT /obj/item/assembly/shock_kit/Del() del(part1) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index ab501d7dd1c..361e913d7a8 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -91,7 +91,6 @@ BLIND // can't see anything icon = 'icons/obj/clothing/suits.dmi' name = "suit" var/fire_resist = T0C+100 - flags = FPRINT | TABLEPASS allowed = list(/obj/item/weapon/tank/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) slot_flags = SLOT_OCLOTHING @@ -104,7 +103,7 @@ BLIND // can't see anything name = "space helmet" icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL item_state = "space" permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) @@ -123,7 +122,7 @@ BLIND // can't see anything w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = STOPSPRESSUREDMAGE | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) slowdown = 3 @@ -141,7 +140,6 @@ BLIND // can't see anything name = "under" body_parts_covered = CHEST|GROIN|LEGS|ARMS permeability_coefficient = 0.90 - flags = FPRINT | TABLEPASS slot_flags = SLOT_ICLOTHING armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) var/fitted = 1// For use in alternate clothing styles for women, if clothes vary from a jumpsuit in shape, set this to 0 diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 1bb4d69a1f5..bfbfb686269 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -2,7 +2,6 @@ name = "hard hat" desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." icon_state = "hardhat0_yellow" - flags = FPRINT | TABLEPASS item_state = "hardhat0_yellow" var/brightness_on = 4 //luminosity when on var/on = 0 @@ -45,7 +44,7 @@ item_state = "hardhat0_red" item_color = "red" name = "firefighter helmet" - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = STOPSPRESSUREDMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD @@ -55,7 +54,7 @@ icon_state = "hardhat0_white" item_state = "hardhat0_white" item_color = "white" - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = STOPSPRESSUREDMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 27b30336e02..f690f4cf747 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -2,7 +2,7 @@ name = "helmet" desc = "Standard Security gear. Protects the head from impacts." icon_state = "helmet" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES + flags = HEADCOVERSEYES item_state = "helmet" armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0) flags_inv = HIDEEARS|HIDEEYES @@ -15,7 +15,7 @@ name = "head of security hat" desc = "The hat of the Head of Security. For showing the officers who's in charge." icon_state = "hoscap" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES + flags = HEADCOVERSEYES armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) flags_inv = 0 flags_inv = HIDEEARS @@ -50,7 +50,7 @@ desc = "It's a helmet specifically designed to protect against close range attacks." icon_state = "riot" item_state = "helmet" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES + flags = HEADCOVERSEYES armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) flags_inv = HIDEEARS @@ -58,7 +58,7 @@ name = "\improper SWAT helmet" desc = "They're often used by highly trained Swat Members." icon_state = "swat" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES + flags = HEADCOVERSEYES item_state = "swat" armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) flags_inv = HIDEEARS|HIDEEYES @@ -71,7 +71,7 @@ name = "\improper Thunderdome helmet" desc = "'Let the battle commence!'" icon_state = "thunderdome" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES + flags = HEADCOVERSEYES item_state = "thunderdome" armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) cold_protection = HEAD @@ -83,6 +83,6 @@ name = "gladiator helmet" desc = "Ave, Imperator, morituri te salutant." icon_state = "gladiator" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR item_state = "gladiator" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES \ No newline at end of file diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 69b95a8c5d0..20c4ae1cf11 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -6,14 +6,12 @@ icon_state = "chef" item_state = "chef" desc = "The commander in chef's head wear." - flags = FPRINT | TABLEPASS -//Captain: This probably shouldn't be space-worthy +//Captain /obj/item/clothing/head/caphat name = "captain's hat" icon_state = "captain" desc = "It's good being the king." - flags = FPRINT|TABLEPASS item_state = "that" //Captain: This probably shouldn't be space-worthy @@ -21,7 +19,6 @@ name = "captain's cap" desc = "You fear to wear it for the negligence it brings." icon_state = "capcap" - flags = FPRINT|TABLEPASS flags_inv = 0 cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT @@ -33,14 +30,14 @@ name = "chaplain's hood" desc = "It's hood that covers the head. It keeps you warm during the space winters." icon_state = "chaplain_hood" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR + flags = HEADCOVERSEYES|BLOCKHAIR //Chaplain /obj/item/clothing/head/nun_hood name = "nun hood" desc = "Maximum piety in this star system." icon_state = "nun_hood" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR + flags = HEADCOVERSEYES|BLOCKHAIR /obj/item/clothing/head/det_hat name = "hat" @@ -54,7 +51,6 @@ name = "beret" desc = "A beret, a mime's favorite headwear." icon_state = "beret" - flags = FPRINT | TABLEPASS //Security /obj/item/clothing/head/beret/sec diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 37a495992c3..478990d5078 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -4,7 +4,6 @@ name = "\improper Centcom hat" icon_state = "centcom" desc = "It's good to be emperor." - flags = FPRINT|TABLEPASS item_state = "that" /obj/item/clothing/head/powdered_wig @@ -18,52 +17,47 @@ desc = "It's an amish looking hat." icon_state = "tophat" item_state = "that" - flags = FPRINT|TABLEPASS /obj/item/clothing/head/redcoat name = "redcoat's hat" icon_state = "redcoat" desc = "'I guess it's a redhead.'" - flags = FPRINT | TABLEPASS /obj/item/clothing/head/mailman name = "mailman's hat" icon_state = "mailman" desc = "'Right-on-time' mail service head wear." - flags = FPRINT | TABLEPASS /obj/item/clothing/head/plaguedoctorhat name = "plague doctor's hat" desc = "These were once used by Plague doctors. They're pretty much useless." icon_state = "plaguedoctor" - flags = FPRINT | TABLEPASS permeability_coefficient = 0.01 /obj/item/clothing/head/hasturhood name = "hastur's hood" desc = "It's unspeakably stylish" icon_state = "hasturhood" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR + flags = HEADCOVERSEYES|BLOCKHAIR /obj/item/clothing/head/nursehat name = "nurse's hat" desc = "It allows quick identification of trained medical personnel." icon_state = "nursehat" - flags = FPRINT|TABLEPASS /obj/item/clothing/head/syndicatefake name = "red space-helmet replica" icon_state = "syndicate" item_state = "syndicate" desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" - flags = FPRINT | TABLEPASS | BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE /obj/item/clothing/head/cueball name = "cueball helmet" desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?" icon_state = "cueball" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR item_state="cueball" flags_inv = 0 @@ -72,7 +66,6 @@ desc = "It's an amish looking armored top hat." icon_state = "tophat" item_state = "that" - flags = FPRINT|TABLEPASS flags_inv = 0 /obj/item/clothing/head/greenbandana @@ -80,7 +73,6 @@ desc = "It's a green bandana with some fine nanotech lining." icon_state = "greenbandana" item_state = "greenbandana" - flags = FPRINT|TABLEPASS flags_inv = 0 /obj/item/clothing/head/cardborg @@ -88,7 +80,7 @@ desc = "A helmet made out of a box." icon_state = "cardborg_h" item_state = "cardborg_h" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH + flags = HEADCOVERSEYES | HEADCOVERSMOUTH flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE /obj/item/clothing/head/justice @@ -96,7 +88,7 @@ desc = "fight for what's righteous!" icon_state = "justicered" item_state = "justicered" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR /obj/item/clothing/head/justice/blue icon_state = "justiceblue" @@ -118,7 +110,6 @@ name = "rabbit ears" desc = "Wearing these makes you looks useless, and only good for your sex appeal." icon_state = "bunny" - flags = FPRINT | TABLEPASS /obj/item/clothing/head/flatcap name = "flat cap" @@ -149,33 +140,32 @@ desc = "Gentleman, elite aboard!" icon_state = "bowler" item_state = "bowler" - flags = FPRINT | TABLEPASS /obj/item/clothing/head/witchwig name = "witch costume wig" desc = "Eeeee~heheheheheheh!" icon_state = "witch" item_state = "witch" - flags = FPRINT | TABLEPASS | BLOCKHAIR + flags = BLOCKHAIR /obj/item/clothing/head/chicken name = "chicken suit head" desc = "Bkaw!" icon_state = "chickenhead" item_state = "chickensuit" - flags = FPRINT | TABLEPASS | BLOCKHAIR + flags = BLOCKHAIR /obj/item/clothing/head/bearpelt name = "bear pelt hat" desc = "Fuzzy." icon_state = "bearpelt" item_state = "bearpelt" - flags = FPRINT | TABLEPASS | BLOCKHAIR + flags = BLOCKHAIR /obj/item/clothing/head/xenos name = "xenos helmet" icon_state = "xenos" item_state = "xenos_helm" desc = "A helmet made out of chitinous alien hide." - flags = FPRINT | TABLEPASS | BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 36614435fa7..868303b0e75 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -15,7 +15,7 @@ name = "welding helmet" desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye." icon_state = "welding" - flags = (FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH) + flags = HEADCOVERSEYES | HEADCOVERSMOUTH item_state = "welding" m_amt = 3000 g_amt = 1000 @@ -23,7 +23,7 @@ flash_protect = 2 tint = 2 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE action_button_name = "Toggle Welding Helmet" visor_flags = HEADCOVERSEYES | HEADCOVERSMOUTH visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE @@ -47,7 +47,7 @@ name = "cake-hat" desc = "It's tasty looking!" icon_state = "cake0" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES + flags = HEADCOVERSEYES var/onfire = 0.0 var/status = 0 var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage @@ -111,7 +111,7 @@ icon_state = "hardhat0_pumpkin" item_state = "hardhat0_pumpkin" item_color = "pumpkin" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR + flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE action_button_name = "Toggle Pumpkin Light" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -124,7 +124,6 @@ name = "kitty ears" desc = "A pair of kitty ears. Meow!" icon_state = "kitty" - flags = FPRINT | TABLEPASS var/icon/mob var/icon/mob2 @@ -151,7 +150,6 @@ icon_state = "hardhat0_reindeer" item_state = "hardhat0_reindeer" item_color = "reindeer" - flags = FPRINT | TABLEPASS flags_inv = 0 action_button_name = "Toggle Nose Light" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 3c5ded3c055..356d04302fe 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -2,7 +2,7 @@ name = "cargo cap" desc = "It's a baseball hat in a tasteless yellow colour." icon_state = "cargosoft" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES + flags = HEADCOVERSEYES item_state = "helmet" item_color = "cargo" var/flipped = 0 diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 129c69e90ff..13e81e07a56 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -3,7 +3,7 @@ desc = "LOADSAMONEY" icon_state = "balaclava" item_state = "balaclava" - flags = FPRINT|TABLEPASS|BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEFACE w_class = 2 @@ -12,7 +12,7 @@ desc = "Worn by robust fighters, flying high to defeat their foes!" icon_state = "luchag" item_state = "luchag" - flags = FPRINT|TABLEPASS|BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEFACE w_class = 2 diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 17512b3254c..ef61321a694 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -3,7 +3,7 @@ name = "breath mask" icon_state = "breath" item_state = "m_mask" - flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKINTERNALS + flags = MASKCOVERSMOUTH | MASKINTERNALS w_class = 2 gas_transfer_coefficient = 0.10 permeability_coefficient = 0.50 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index d36c1da37a7..ff9b79f2005 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -2,7 +2,7 @@ name = "gas mask" desc = "A face-covering mask that can be connected to an air supply." icon_state = "gas_alt" - flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE w_class = 3.0 item_state = "gas_alt" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 1baca831718..003c57dd6aa 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -3,7 +3,7 @@ desc = "To stop that awful noise." icon_state = "muzzle" item_state = "blindfold" - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + flags = MASKCOVERSMOUTH w_class = 2 gas_transfer_coefficient = 0.90 @@ -27,7 +27,7 @@ icon_state = "sterile" item_state = "sterile" w_class = 1 - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + flags = MASKCOVERSMOUTH gas_transfer_coefficient = 0.90 permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 25, rad = 0) @@ -36,7 +36,6 @@ name = "fake moustache" desc = "Warning: moustache is fake." icon_state = "fake-moustache" - flags = FPRINT|TABLEPASS flags_inv = HIDEFACE /obj/item/clothing/mask/pig @@ -44,7 +43,7 @@ desc = "A rubber pig mask." icon_state = "pig" item_state = "pig" - flags = FPRINT|TABLEPASS|BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEFACE w_class = 2 @@ -53,7 +52,7 @@ desc = "A mask made of soft vinyl and latex, representing the head of a horse." icon_state = "horsehead" item_state = "horsehead" - flags = FPRINT|TABLEPASS|BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEFACE w_class = 2 var/voicechange = 0 \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index cebda622781..7e3876a9103 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -33,7 +33,7 @@ desc = "An armored beret commonly used by special operations officers. Uses forcefield technology to protect the head from space." icon_state = "beret_badge" armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = STOPSPRESSUREDMAGE flags_inv = 0 @@ -58,7 +58,7 @@ name = "Santa's hat" desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE /obj/item/clothing/suit/space/santa name = "Santa's suit" @@ -66,7 +66,7 @@ icon_state = "santa" item_state = "santa" slowdown = 0 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE + flags = STOPSPRESSUREDMAGE allowed = list(/obj/item) //for stuffing exta special presents @@ -77,7 +77,7 @@ icon_state = "pirate" item_state = "pirate" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE /obj/item/clothing/suit/space/pirate name = "pirate coat" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index c1440bbe0b0..14ab6be99f7 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -2,7 +2,6 @@ /obj/item/clothing/suit/armor allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) body_parts_covered = CHEST - flags = FPRINT | TABLEPASS cold_protection = CHEST|GROIN min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT @@ -16,7 +15,6 @@ icon_state = "armor" item_state = "armor" blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) /obj/item/clothing/suit/armor/hos @@ -92,7 +90,7 @@ item_state = "swat_suit" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 @@ -130,7 +128,6 @@ item_state = "reactiveoff" blood_overlay_type = "armor" slowdown = 1 - flags = FPRINT | TABLEPASS armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/suit/armor/reactive/IsShield() @@ -169,7 +166,7 @@ w_class = 4//bulky item body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT @@ -183,7 +180,7 @@ item_state = "swat_suit" w_class = 4//bulky item gas_transfer_coefficient = 0.90 - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 3 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -191,7 +188,7 @@ /obj/item/clothing/suit/armor/tdome body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 452b6f22784..962bde57df9 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -4,7 +4,7 @@ icon_state = "bio" desc = "A hood that protects the head and face from biological comtaminants." permeability_coefficient = 0.01 - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES @@ -16,7 +16,7 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 1.0 allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 474ae29f5b5..e6a00857467 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -34,7 +34,6 @@ desc = "Yarr." icon_state = "pirate" item_state = "pirate" - flags = FPRINT | TABLEPASS /obj/item/clothing/suit/hgpirate @@ -42,7 +41,6 @@ desc = "Yarr." icon_state = "hgpirate" item_state = "hgpirate" - flags = FPRINT | TABLEPASS flags_inv = HIDEJUMPSUIT @@ -51,7 +49,7 @@ desc = "Suit for a cyborg costume." icon_state = "death" item_state = "death" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT fire_resist = T0C+5200 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -61,7 +59,6 @@ desc = "A Nazi great coat" icon_state = "nazi" item_state = "nazi" - flags = FPRINT | TABLEPASS /obj/item/clothing/suit/johnny_coat @@ -69,7 +66,6 @@ desc = "Johnny~~" icon_state = "johnny" item_state = "johnny" - flags = FPRINT | TABLEPASS /obj/item/clothing/suit/justice @@ -77,7 +73,6 @@ desc = "this pretty much looks ridiculous" icon_state = "justice" item_state = "justice" - flags = FPRINT | TABLEPASS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -86,7 +81,6 @@ desc = "This robe commands authority." icon_state = "judge" item_state = "judge" - flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash) flags_inv = HIDEJUMPSUIT @@ -115,7 +109,6 @@ item_state = "space_suit_syndicate" desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" w_class = 3 - flags = FPRINT | TABLEPASS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index ff1e72895db..275d6085e7e 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -21,7 +21,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher) slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = STOPSPRESSUREDMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -47,7 +47,7 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 40, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES cold_protection = HEAD @@ -64,7 +64,7 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 2 armor = list(melee = 40, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) @@ -93,7 +93,7 @@ name = "radiation hood" icon_state = "rad" desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) @@ -105,7 +105,7 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 - flags = FPRINT | TABLEPASS | THICKMATERIAL + flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1.5 diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 97ce5446bdb..d07e8f27792 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -3,7 +3,6 @@ icon_state = "black" item_state = "bl_suit" item_color = "black" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/blackf name = "feminine black jumpsuit" @@ -18,21 +17,18 @@ icon_state = "blue" item_state = "b_suit" item_color = "blue" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/green name = "green jumpsuit" icon_state = "green" item_state = "g_suit" item_color = "green" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/grey name = "grey jumpsuit" icon_state = "grey" item_state = "gy_suit" item_color = "grey" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/orange name = "orange jumpsuit" @@ -42,35 +38,30 @@ item_color = "orange" has_sensor = 2 sensor_mode = 3 - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/pink name = "pink jumpsuit" icon_state = "pink" item_state = "p_suit" item_color = "pink" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" item_state = "r_suit" item_color = "red" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/white name = "white jumpsuit" icon_state = "white" item_state = "w_suit" item_color = "white" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" item_state = "y_suit" item_color = "yellow" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/psyche name = "psychedelic jumpsuit" @@ -89,7 +80,6 @@ desc = "aqua" icon_state = "aqua" item_color = "aqua" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/purple name = "purple jumpsuit" @@ -121,14 +111,12 @@ desc = "lightbrown" icon_state = "lightbrown" item_color = "lightbrown" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/brown name = "brown jumpsuit" desc = "brown" icon_state = "brown" item_color = "brown" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/yellowgreen name = "yellowgreen jumpsuit" @@ -141,7 +129,6 @@ desc = "darkblue" icon_state = "darkblue" item_color = "darkblue" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/lightred name = "lightred jumpsuit" @@ -153,5 +140,4 @@ name = "darkred jumpsuit" desc = "darkred" icon_state = "darkred" - item_color = "darkred" - flags = FPRINT | TABLEPASS + item_color = "darkred" \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 7a8d714d4f6..1b150e281ff 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -6,7 +6,6 @@ icon_state = "ba_suit" item_state = "ba_suit" item_color = "ba_suit" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. @@ -15,7 +14,6 @@ icon_state = "captain" item_state = "caparmor" item_color = "captain" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/cargo @@ -32,7 +30,6 @@ icon_state = "cargotech" item_state = "lb_suit" item_color = "cargo" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/chaplain @@ -41,7 +38,6 @@ icon_state = "chaplain" item_state = "bl_suit" item_color = "chapblack" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/chef @@ -49,7 +45,6 @@ name = "chef's uniform" icon_state = "chef" item_color = "chef" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/clown @@ -58,7 +53,6 @@ icon_state = "clown" item_state = "clown" item_color = "clown" - flags = FPRINT | TABLEPASS fitted = 0 @@ -68,7 +62,6 @@ icon_state = "hop" item_state = "b_suit" item_color = "hop" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/hydroponics @@ -78,7 +71,6 @@ item_state = "g_suit" item_color = "hydroponics" permeability_coefficient = 0.50 - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/janitor @@ -87,13 +79,11 @@ icon_state = "janitor" item_color = "janitor" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/lawyer desc = "Slick threads." name = "Lawyer suit" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/lawyer/black @@ -148,7 +138,6 @@ icon_state = "mime" item_state = "mime" item_color = "mime" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/miner desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty." diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index f348b801a53..0b8cebe57aa 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -6,7 +6,6 @@ item_state = "g_suit" item_color = "chief" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians." @@ -14,7 +13,6 @@ icon_state = "atmos" item_state = "atmos_suit" item_color = "atmos" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." @@ -23,7 +21,6 @@ item_state = "engi_suit" item_color = "engine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 6691f62619a..8f87209cfc0 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -8,7 +8,6 @@ item_state = "g_suit" item_color = "director" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/scientist desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist." @@ -18,7 +17,6 @@ item_color = "toxinswhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/chemist @@ -50,7 +48,6 @@ item_color = "geneticswhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." @@ -78,28 +75,24 @@ item_color = "medical" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/medical/blue name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue." icon_state = "scrubsblue" item_color = "scrubsblue" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/medical/green name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green." icon_state = "scrubsgreen" item_color = "scrubsgreen" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/medical/purple name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubspurple" item_color = "scrubspurple" - flags = FPRINT | TABLEPASS diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index dc444ea6224..13f1825d0c2 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -16,7 +16,6 @@ item_state = "r_suit" item_color = "warden" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/security name = "security officer's jumpsuit" @@ -25,7 +24,6 @@ item_state = "r_suit" item_color = "secred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS /* * Detective @@ -37,7 +35,6 @@ item_state = "det" item_color = "detective" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS /* * Head of Security @@ -49,7 +46,6 @@ item_state = "r_suit" item_color = "hosred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS /* * Jensen cosplay gear diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ddd4470ba7a..642d7585a75 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -24,7 +24,6 @@ name = "amish suit" icon_state = "sl_suit" item_color = "sl_suit" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/roman name = "roman armor" @@ -40,7 +39,6 @@ icon_state = "waiter" item_state = "waiter" item_color = "waiter" - flags = FPRINT | TABLEPASS /obj/item/clothing/under/rank/mailman name = "mailman's jumpsuit" @@ -87,7 +85,6 @@ w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS cold_protection = CHEST | GROIN | LEGS | ARMS //Needs gloves and shoes with cold protection to be fully protected. min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT @@ -102,7 +99,6 @@ desc = "it's a cybernetically enhanced jumpsuit used for administrative duties." gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100) cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS @@ -115,7 +111,6 @@ desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" icon_state = "owl" item_color = "owl" - flags = FPRINT | TABLEPASS fitted = 0 /obj/item/clothing/under/johnny diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 864ca602f51..8c72be2b4b0 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -2,7 +2,6 @@ name = "athletic shorts" desc = "95% Polyester, 5% Spandex!" gender = PLURAL - flags = FPRINT | TABLEPASS body_parts_covered = GROIN fitted = 0 diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index b1f82dbe241..662908e4814 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -5,7 +5,6 @@ icon_state = "bluetie" item_state = "" //no inhands item_color = "bluetie" - flags = FPRINT | TABLEPASS slot_flags = 0 w_class = 2.0 diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 3cd1a36d75a..a5ff7f12801 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -50,8 +50,6 @@ atom/proc/add_fibers(mob/living/carbon/human/M) /atom/proc/add_hiddenprint(mob/living/M as mob) if(isnull(M)) return if(isnull(M.key)) return - if(!( flags ) & FPRINT) - return if(ishuman(M)) var/mob/living/carbon/human/H = M if(!istype(H.dna, /datum/dna)) @@ -76,8 +74,6 @@ atom/proc/add_fibers(mob/living/carbon/human/M) /atom/proc/add_fingerprint(mob/living/M as mob, ignoregloves = 0) if(isnull(M)) return if(isnull(M.key)) return - if(!(flags & FPRINT)) - return if(ishuman(M)) //Add the list if it does not exist. if(!fingerprintshidden) diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 0fb2e322a54..771aa9a77d2 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -8,7 +8,7 @@ icon_state = "forensic1" w_class = 3.0 item_state = "electronic" - flags = FPRINT | TABLEPASS | CONDUCT | NOBLUDGEON + flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT var/scanning = 0 var/list/log = list() diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index e66a1c815f8..dcd7eccb03b 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -77,5 +77,4 @@ icon_state = "xmashat" desc = "A crappy paper hat that you are REQUIRED to wear." flags_inv = 0 - flags = FPRINT|TABLEPASS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) \ No newline at end of file diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 11e8e7c3c20..a238ff1dd2e 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -28,7 +28,6 @@ icon = 'icons/obj/harvest.dmi' icon_state = "logs" force = 5 - flags = TABLEPASS throwforce = 5 w_class = 3.0 throw_speed = 3 @@ -61,7 +60,6 @@ icon_state = "sunflower" damtype = "fire" force = 0 - flags = TABLEPASS slot_flags = SLOT_HEAD throwforce = 1 w_class = 1.0 @@ -77,7 +75,6 @@ icon_state = "novaflower" damtype = "fire" force = 0 - flags = TABLEPASS slot_flags = SLOT_HEAD throwforce = 1 w_class = 1.0 @@ -100,7 +97,6 @@ icon_state = "nettle" damtype = "fire" force = 15 - flags = TABLEPASS throwforce = 1 w_class = 1.0 throw_speed = 1 @@ -122,7 +118,6 @@ icon_state = "deathnettle" damtype = "fire" force = 30 - flags = TABLEPASS throwforce = 1 w_class = 1.0 throw_speed = 1 diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 6cadee4b764..861e6bc7b84 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -20,7 +20,7 @@ name = "weed-spray" icon_state = "weedspray" item_state = "spray" - flags = TABLEPASS | OPENCONTAINER | FPRINT + flags = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 4 w_class = 2.0 @@ -39,7 +39,7 @@ name = "pest-spray" icon_state = "pestspray" item_state = "spray" - flags = TABLEPASS | OPENCONTAINER | FPRINT + flags = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 4 w_class = 2.0 @@ -58,7 +58,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "hoe" item_state = "hoe" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 5.0 throwforce = 7.0 w_class = 2.0 @@ -73,7 +73,6 @@ name = "bottle of nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - flags = FPRINT | TABLEPASS w_class = 1.0 var/mutmod = 0 var/yieldmod = 0 @@ -85,7 +84,6 @@ name = "bottle of E-Z-Nutrient" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - flags = FPRINT | TABLEPASS mutmod = 1 yieldmod = 1 New() @@ -96,7 +94,6 @@ name = "bottle of Left 4 Zed" icon = 'icons/obj/chemical.dmi' icon_state = "bottle18" - flags = FPRINT | TABLEPASS mutmod = 2 yieldmod = 0 New() @@ -107,7 +104,6 @@ name = "bottle of Robust Harvest" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" - flags = FPRINT | TABLEPASS mutmod = 0 yieldmod = 2 New() @@ -122,7 +118,6 @@ name = "bottle of pestkiller" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - flags = FPRINT | TABLEPASS var/toxicity = 0 var/PestKillStr = 0 New() @@ -133,7 +128,6 @@ name = "bottle of carbaryl" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - flags = FPRINT | TABLEPASS toxicity = 4 PestKillStr = 2 New() @@ -144,7 +138,6 @@ name = "bottle of lindane" icon = 'icons/obj/chemical.dmi' icon_state = "bottle18" - flags = FPRINT | TABLEPASS toxicity = 6 PestKillStr = 4 New() @@ -155,7 +148,6 @@ name = "bottle of phosmet" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" - flags = FPRINT | TABLEPASS toxicity = 8 PestKillStr = 7 New() @@ -170,7 +162,6 @@ name = "bottle of weedkiller" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - flags = FPRINT | TABLEPASS var/toxicity = 0 var/WeedKillStr = 0 @@ -178,7 +169,6 @@ name = "bottle of glyphosate" icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" - flags = FPRINT | TABLEPASS toxicity = 4 WeedKillStr = 2 @@ -186,7 +176,6 @@ name = "bottle of triclopyr" icon = 'icons/obj/chemical.dmi' icon_state = "bottle18" - flags = FPRINT | TABLEPASS toxicity = 6 WeedKillStr = 4 @@ -194,6 +183,5 @@ name = "bottle of 2,4-D" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" - flags = FPRINT | TABLEPASS toxicity = 8 WeedKillStr = 7 \ No newline at end of file diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 4bd87828b18..6037851e121 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -6,7 +6,6 @@ name = "pack of seeds" icon = 'icons/obj/seeds.dmi' icon_state = "seed" // unknown plant seed - these shouldn't exist in-game - flags = FPRINT | TABLEPASS w_class = 1.0 // Makes them pocketable var/plantname = "Plants" var/product //a type path diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 4c04ea6ce13..285450cfaa2 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -166,7 +166,6 @@ throw_speed = 1 throw_range = 5 w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) - flags = FPRINT | TABLEPASS attack_verb = list("bashed", "whacked", "educated") var/dat //Actual page content var/due_date = 0 //Game time in 1/10th seconds @@ -300,7 +299,6 @@ throw_speed = 1 throw_range = 5 w_class = 1.0 - flags = FPRINT | TABLEPASS var/obj/machinery/librarycomp/computer //Associated computer - Modes 1 to 3 use this var/obj/item/weapon/book/book //Currently scanned book var/mode = 0 //0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 4cd738f51ff..03dfe0b58be 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -61,7 +61,7 @@ name = "pickaxe" icon = 'icons/obj/items.dmi' icon_state = "pickaxe" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 15.0 throwforce = 4.0 @@ -149,7 +149,7 @@ desc = "A large tool for digging and moving dirt." icon = 'icons/obj/items.dmi' icon_state = "shovel" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT force = 8.0 throwforce = 4.0 diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index bb1db7a86d3..2894701367e 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/storage.dmi' name = "Money bag" icon_state = "moneybag" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 10.0 throwforce = 2.0 w_class = 4.0 diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 60ce30b3917..6da5e3e2451 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -71,7 +71,7 @@ icon = 'icons/obj/economy.dmi' name = "coin" icon_state = "coin" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 1 throwforce = 3 w_class = 1.0 diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index b9b04c90203..953d5f71b1b 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -15,7 +15,7 @@ var/const/MAX_ACTIVE_TIME = 400 icon_state = "facehugger" item_state = "facehugger" w_class = 1 //note: can be picked up by aliens unlike most other items of w_class below 4 - flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | MASKINTERNALS + flags = MASKCOVERSMOUTH | MASKCOVERSEYES | MASKINTERNALS throw_range = 5 var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 2fc616e6106..4cb61fb0a40 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -3,7 +3,6 @@ desc = "A piece of juicy meat found in a person's head." icon = 'icons/obj/surgery.dmi' icon_state = "brain" - flags = TABLEPASS force = 1.0 w_class = 2.0 throwforce = 1.0 diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 6ef25327102..a3c360b8588 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -589,7 +589,6 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"." icon = 'icons/mob/slimes.dmi' icon_state = "grey slime extract" - flags = TABLEPASS | FPRINT force = 1.0 w_class = 1.0 throwforce = 1.0 @@ -836,7 +835,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 body_parts_covered = FULL_BODY slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ABSTRACT + flags = STOPSPRESSUREDMAGE | ABSTRACT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS | HEAD max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS | HEAD @@ -893,7 +892,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 desc = "a golem's head" canremove = 0 unacidable = 1 - flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ABSTRACT + flags = STOPSPRESSUREDMAGE | ABSTRACT heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0) @@ -973,7 +972,6 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"." icon = 'icons/mob/slimes.dmi' icon_state = "slime extract" - flags = TABLEPASS force = 1.0 w_class = 1.0 throwforce = 1.0 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index a27c794711e..69b24f68207 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -4,7 +4,7 @@ icon_state = "std_module" w_class = 100.0 item_state = "electronic" - flags = FPRINT|TABLEPASS | CONDUCT + flags = CONDUCT var/list/modules = list() var/obj/item/emag = null diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 0a6d614b517..895170f6f6f 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -9,7 +9,6 @@ throw_range = 10 var/obj/item/weapon/pen/haspen //The stored pen. var/obj/item/weapon/paper/toppaper //The topmost piece of paper. - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 444469268a2..cdc51142a9e 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -15,7 +15,6 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "pen" item_state = "pen" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT | SLOT_EARS throwforce = 0 w_class = 1.0 diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 527530b9147..6af3aa2b6eb 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -99,7 +99,7 @@ icon_state = "camera" item_state = "electropack" w_class = 2.0 - flags = FPRINT | CONDUCT | TABLEPASS + flags = CONDUCT slot_flags = SLOT_BELT m_amt = 2000 var/pictures_max = 10 diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 4f4503cdc08..c5e89f4ece4 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "stamp-ok" item_state = "stamp" - flags = FPRINT | TABLEPASS throwforce = 0 w_class = 1.0 throw_speed = 7 diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 2ab4d320218..fac070f0928 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -206,7 +206,7 @@ proc/cardinalrange(var/center) icon_state = "box" item_state = "electronic" w_class = 4.0 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT throwforce = 5 throw_speed = 1 throw_range = 2 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 0c4bd97519a..8b88102db8e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -208,7 +208,7 @@ throw_range = 5 m_amt = 50 g_amt = 20 - flags = TABLEPASS | FPRINT | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined", "flogged") diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 7914d94a6c3..1e583669394 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -16,7 +16,7 @@ desc = "Used for building lights." icon = 'icons/obj/lighting.dmi' icon_state = "tube-construct-item" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT var/fixture_type = "tube" var/obj/machinery/light/newlight = null var/sheets_refunded = 2 @@ -63,7 +63,7 @@ desc = "Used for building small lights." icon = 'icons/obj/lighting.dmi' icon_state = "bulb-construct-item" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT fixture_type = "bulb" sheets_refunded = 1 @@ -632,7 +632,6 @@ /obj/item/weapon/light icon = 'icons/obj/lighting.dmi' - flags = FPRINT | TABLEPASS force = 2 throwforce = 5 w_class = 1 diff --git a/code/modules/power/switch.dm b/code/modules/power/switch.dm index efdce94f440..e4899acdf23 100644 --- a/code/modules/power/switch.dm +++ b/code/modules/power/switch.dm @@ -10,7 +10,6 @@ icon_state = "switch-dbl-up" var/icon_state_on = "switch-dbl-down" var/icon_state_off = "switch-dbl-up" - flags = FPRINT density = 0 anchored = 1 var/on = 0 //up is off, down is on diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 3108698b378..91c1706d7cf 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -3,7 +3,7 @@ desc = "A bullet casing." icon = 'icons/obj/ammo.dmi' icon_state = "s-casing" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT throwforce = 1 w_class = 1.0 @@ -34,7 +34,7 @@ desc = "A box of ammo" icon_state = "357" icon = 'icons/obj/ammo.dmi' - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT item_state = "syringe_kit" m_amt = 50000 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 77059f87eb8..4afd2a7a420 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/gun.dmi' icon_state = "detective" item_state = "gun" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT m_amt = 2000 w_class = 3.0 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index c1ed4531c26..1663bcc1071 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -5,7 +5,7 @@ fire_sound = 'sound/weapons/Laser.ogg' origin_tech = "combat=2;magnets=4" w_class = 5 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BACK charge_cost = 100 projectile_type = "/obj/item/projectile/ion" diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index b5146ca47ed..2786136427e 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -5,7 +5,7 @@ icon_state = "staffofnothing" item_state = "staff" fire_sound = 'sound/weapons/emitter.ogg' - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT w_class = 5 var/projectile_type = "/obj/item/projectile/magic" var/max_charges = 6 diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 497367c1c06..241ab5faceb 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -5,7 +5,7 @@ item_state = "shotgun" w_class = 4.0 force = 10 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=4;materials=2" ammo_type = /obj/item/ammo_casing/shotgun/beanbag @@ -83,7 +83,7 @@ item_state = "shotgun" w_class = 4.0 force = 10 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=3;materials=1" ammo_type = /obj/item/ammo_casing/shotgun/beanbag diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f3914a580e8..836c496cd80 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -16,7 +16,6 @@ density = 1 unacidable = 1 anchored = 1 //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots. - flags = FPRINT | TABLEPASS pass_flags = PASSTABLE mouse_opacity = 0 var/bumped = 0 //Prevents it from hitting more than one guy at once diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index b823d37fc95..643db71b524 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -17,7 +17,6 @@ Borg Hypospray amount_per_transfer_from_this = 5 volume = 30 possible_transfer_amounts = null - flags = FPRINT var/mode = 1 var/charge_cost = 50 var/charge_tick = 0 diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index bd6e2a02e27..e07f14f6eda 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -10,7 +10,7 @@ desc = "Just your average condiment container." icon = 'icons/obj/food.dmi' icon_state = "emptycondiment" - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER possible_transfer_amounts = list(1,5,10) volume = 50 //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. @@ -34,7 +34,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, 10) + reagents.trans_to(M, 10) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 @@ -156,7 +156,6 @@ volume = 10 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(10) - flags = FPRINT | TABLEPASS possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index c4fe671ebec..b05fe1d7d47 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -6,7 +6,7 @@ desc = "yummy" icon = 'icons/obj/drinks.dmi' icon_state = null - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it. possible_transfer_amounts = list(5,10,25) volume = 50 @@ -128,7 +128,7 @@ amount_per_transfer_from_this = 20 possible_transfer_amounts = null volume = 150 - flags = FPRINT | CONDUCT | TABLEPASS | OPENCONTAINER + flags = CONDUCT | OPENCONTAINER /obj/item/weapon/reagent_containers/food/drinks/golden_cup/tournament_26_06_2011 desc = "A golden cup. It will be presented to a winner of tournament 26 june and name of the winner will be graved on it." diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 4a86e0a7ba4..a70af0898b9 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -10,7 +10,7 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5, 10, 15, 25, 30, 50) volume = 50 - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER var/list/can_be_placed_into = list( /obj/machinery/chem_master/, @@ -147,7 +147,7 @@ volume = 100 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100) - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER /obj/item/weapon/reagent_containers/glass/beaker/noreact name = "cryostasis beaker" @@ -156,7 +156,7 @@ g_amt = 500 volume = 50 amount_per_transfer_from_this = 10 - flags = FPRINT | TABLEPASS | OPENCONTAINER | NOREACT + flags = OPENCONTAINER | NOREACT /obj/item/weapon/reagent_containers/glass/beaker/bluespace name = "bluespace beaker" @@ -166,7 +166,7 @@ volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100,300) - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER /obj/item/weapon/reagent_containers/glass/beaker/cryoxadone New() @@ -198,7 +198,7 @@ amount_per_transfer_from_this = 20 possible_transfer_amounts = list(10,20,30,50,70) volume = 70 - flags = FPRINT | OPENCONTAINER + flags = OPENCONTAINER attackby(var/obj/D, mob/user as mob) if(isprox(D)) @@ -238,7 +238,6 @@ amount_per_transfer_from_this = 20 possible_transfer_amounts = list(10,20,30,60) volume = 120 - flags = FPRINT /obj/item/weapon/reagent_containers/glass/dispenser name = "reagent glass" @@ -246,7 +245,7 @@ icon = 'icons/obj/chemical.dmi' icon_state = "beaker0" amount_per_transfer_from_this = 10 - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER /obj/item/weapon/reagent_containers/glass/dispenser/surfactant name = "reagent glass (surfactant)" diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index a9e2028ea10..35707c8792a 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -9,7 +9,7 @@ item_state = "atoxinbottle" amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30) - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER volume = 30 New() diff --git a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm index 9286e5ab03b..7c8bf02a5bb 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm @@ -2,7 +2,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/robot amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100) - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER volume = 60 var/reagent = "" diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index b24dd1219c5..c1cadf3adbf 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -7,7 +7,7 @@ amount_per_transfer_from_this = 5 volume = 30 possible_transfer_amounts = null - flags = FPRINT | TABLEPASS | OPENCONTAINER + flags = OPENCONTAINER slot_flags = SLOT_BELT var/ignore_flags = 0 diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index e16899118b4..57d77408756 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/janitor.dmi' icon_state = "cleaner" item_state = "cleaner" - flags = TABLEPASS|OPENCONTAINER|FPRINT|NOBLUDGEON + flags = OPENCONTAINER | NOBLUDGEON slot_flags = SLOT_BELT throwforce = 3 w_class = 2.0 diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 706b407dfe7..af020c4b2c3 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -7,7 +7,6 @@ icon_state = "watertank" density = 1 anchored = 0 - flags = FPRINT pressure_resistance = 2*ONE_ATMOSPHERE var/amount_per_transfer_from_this = 10 diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 39b581abdb7..949f1536ccd 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/storage.dmi' icon_state = "deliverycloset" density = 1 - flags = FPRINT mouse_drag_pointer = MOUSE_ACTIVE_POINTER var/obj/wrapped = null var/sortTag = 0 @@ -55,7 +54,6 @@ desc = "A small wrapped package." icon = 'icons/obj/storage.dmi' icon_state = "deliverycrateSmall" - flags = FPRINT var/obj/item/wrapped = null var/sortTag = 0 @@ -98,7 +96,7 @@ name = "package wrapper" icon = 'icons/obj/items.dmi' icon_state = "deliveryPaper" - flags = FPRINT | NOBLUDGEON + flags = NOBLUDGEON w_class = 3.0 var/amount = 25.0 @@ -183,7 +181,7 @@ w_class = 1 item_state = "electronic" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT slot_flags = SLOT_BELT proc/openwindow(mob/user as mob) diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 6336c920166..dd368880ef7 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -5,7 +5,7 @@ icon_state = "retractor" m_amt = 10000 g_amt = 5000 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT w_class = 1.0 origin_tech = "materials=1;biotech=1" @@ -17,7 +17,7 @@ icon_state = "hemostat" m_amt = 5000 g_amt = 2500 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT w_class = 1.0 origin_tech = "materials=1;biotech=1" attack_verb = list("attacked", "pinched") @@ -30,7 +30,7 @@ icon_state = "cautery" m_amt = 5000 g_amt = 2500 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT w_class = 1.0 origin_tech = "materials=1;biotech=1" attack_verb = list("burnt") @@ -44,7 +44,7 @@ hitsound = 'sound/weapons/circsawhit.ogg' m_amt = 15000 g_amt = 10000 - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 15.0 w_class = 3.0 origin_tech = "materials=1;biotech=1" @@ -61,7 +61,7 @@ desc = "Cut, cut, and once more cut." icon = 'icons/obj/surgery.dmi' icon_state = "scalpel" - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 10.0 w_class = 1.0 throwforce = 5.0 @@ -85,7 +85,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "saw" hitsound = 'sound/weapons/circsawhit.ogg' - flags = FPRINT | TABLEPASS | CONDUCT + flags = CONDUCT force = 15.0 w_class = 3.0 throwforce = 9.0 diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 3850d439d21..b8fe1897fd3 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -5,7 +5,6 @@ var/list/GPS_list = list() icon = 'icons/obj/telescience.dmi' icon_state = "gps-c" w_class = 2.0 - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT origin_tech = "programming=2;engineering=2" var/gpstag = "COM0" diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index c54d079afde..2b689bd2290 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -68,7 +68,7 @@ desc = "Use this to send crates and closets to cargo telepads." icon = 'icons/obj/telescience.dmi' icon_state = "rcs" - flags = FPRINT | TABLEPASS| CONDUCT + flags = CONDUCT force = 10.0 throwforce = 10.0 throw_speed = 1 From 0184a61ef9041f61e56c5ffbfdc0ae230aec3b9d Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Mon, 30 Dec 2013 19:44:58 -0300 Subject: [PATCH 303/315] Syringe guns will now work on aliens properly --- code/modules/projectiles/projectile/bullets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index b319ea8ab8d..d2e0a4063f3 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -80,7 +80,7 @@ on_hit(var/atom/target, var/blocked = 0, var/hit_zone) if(istype(target, /mob/living/carbon)) var/mob/living/carbon/M = target - if(M.can_inject(target_zone = hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + if(M.can_inject(null,0,hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. reagents.trans_to(M, reagents.total_volume) return 1 else From de466f72f78c321c03e8b117b766dfd0eac528be Mon Sep 17 00:00:00 2001 From: fleure Date: Tue, 31 Dec 2013 00:46:56 +0000 Subject: [PATCH 304/315] Updated changelog for recent bugfixes --- html/changelog.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index b9f40f238ac..516f47cde9c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,7 +52,15 @@ should be listed in the changelog upon commit tho. Thanks. --> - +
    +

    31 December 2013

    +

    Fleure updated:

    +
      +
    • Paper no longer appears with words on it when blank input written or photocopied
    • +
    • Vending machine speaker toggle button now works
    • +
    • Building arcade machines works again
    • +
    +

    27 December 2013

    From b3d37e1d0ac2e466d11a09830616fa5ffc61c657 Mon Sep 17 00:00:00 2001 From: Tenebrosity Date: Tue, 31 Dec 2013 16:48:58 +1300 Subject: [PATCH 305/315] Makes deathsquad frequency (144.1) a different colour again, this time grey to differentiate it from science's plum. --- code/game/communications.dm | 9 +++++---- code/game/machinery/telecomms/broadcaster.dm | 4 ++++ code/game/objects/items/devices/radio/radio.dm | 2 ++ interface/stylesheet.dm | 1 + 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/code/game/communications.dm b/code/game/communications.dm index c60d68b1483..d314da430ca 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -110,14 +110,15 @@ var/list/radiochannels = list( "Service" = 1349, ) //depenging helpers -var/const/SYND_FREQ = 1213 //nuke op frequency, coloured congo brown in chat window -var/const/SUPP_FREQ = 1347 //supply, coloured twine in chat window -var/const/SERV_FREQ = 1349 //service, coloured swamp green in chat window +var/const/SYND_FREQ = 1213 //nuke op frequency, coloured dark brown in chat window +var/const/SUPP_FREQ = 1347 //supply, coloured light brown in chat window +var/const/SERV_FREQ = 1349 //service, coloured green in chat window var/const/SCI_FREQ = 1351 //science, coloured plum in chat window var/const/COMM_FREQ = 1353 //command, colored gold in chat window var/const/MED_FREQ = 1355 //medical, coloured blue in chat window var/const/ENG_FREQ = 1357 //engineering, coloured orange in chat window -var/const/SEC_FREQ = 1359 //security, colored red in chat window +var/const/SEC_FREQ = 1359 //security, coloured red in chat window +var/const/DSQUAD_FREQ = 1441 //death squad frequency, coloured grey in chat window #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 1ce0f5dd6c2..e1ae4223a80 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -384,6 +384,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept part_a = "" else if (display_freq==SUPP_FREQ) part_a = "" + else if (display_freq==DSQUAD_FREQ) + part_a = "" // --- Filter the message; place it in quotes apply a verb --- @@ -681,6 +683,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept part_a = "" else if (display_freq==SUPP_FREQ) part_a = "" + else if (display_freq==DSQUAD_FREQ) + part_a = "" // --- This following recording is intended for research and feedback in the use of department radio channels --- diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 66caa97c733..19238c0d2b8 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -517,6 +517,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use part_a = "" else if (display_freq==SUPP_FREQ) part_a = "" + else if (display_freq==DSQUAD_FREQ) + part_a = "" var/quotedmsg = M.say_quote(message) diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index ef7758d989b..bd881f81190 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -33,6 +33,7 @@ em {font-style: normal; font-weight: bold;} .suppradio {color: #a8732b;} .servradio {color: #6eaa2c;} .syndradio {color: #6D3F40;} +.dsquadradio {color: #686868;} .alert {color: #ff0000;} h1.alert, h2.alert {color: #000000;} From b33efbfa6be0f6bda68cd6ea219be65a24df5dba Mon Sep 17 00:00:00 2001 From: Incoming Date: Tue, 31 Dec 2013 01:11:20 -0500 Subject: [PATCH 306/315] Improves logging on the bolt of change so admins can follow the paper trail of terrible mobs who get turned into other terrible mobs --- code/modules/projectiles/projectile/magic.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 2e790b36383..b7d19dea00d 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -193,6 +193,9 @@ proc/wabbajack(mob/living/M) for (var/obj/effect/proc_holder/spell/S in M.spell_list) new_mob.spell_list += new S.type + new_mob.attack_log = M.attack_log + M.attack_log += text("\[[time_stamp()]\] [M.real_name] ([M.ckey]) became [new_mob.real_name].") + new_mob.a_intent = "harm" if(M.mind) M.mind.transfer_to(new_mob) From a7ead625bea2e7a9960fdd26cf811681b82e9384 Mon Sep 17 00:00:00 2001 From: Perakp Date: Tue, 31 Dec 2013 17:28:50 +0200 Subject: [PATCH 307/315] Fixes Ethereal Jaunt notransformation protection was stopping movement calls to the holder object. Refractored code so wraith phase shift isn't copypaste just to change animations. --- code/datums/spells/construct_spells.dm | 13 +++- code/datums/spells/ethereal_jaunt.dm | 89 ++++++++++--------------- icons/mob/mob.dmi | Bin 181091 -> 181091 bytes 3 files changed, 47 insertions(+), 55 deletions(-) diff --git a/code/datums/spells/construct_spells.dm b/code/datums/spells/construct_spells.dm index 74f5de75e09..ed3248d776a 100644 --- a/code/datums/spells/construct_spells.dm +++ b/code/datums/spells/construct_spells.dm @@ -83,10 +83,21 @@ invocation_type = "none" range = -1 include_user = 1 - phaseshift = 1 jaunt_duration = 50 //in deciseconds centcom_cancast = 0 //Stop people from getting to centcom +/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_disappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "phase_shift" + animation.dir = target.dir + flick("phase_shift",animation) + +/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_reappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "phase_shift2" + animation.dir = target.dir + flick("phase_shift2",animation) + +/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_steam(var/mobloc) + return /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser name = "Lesser Magic Missile" diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index 347361cc8ea..20de7205d71 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -11,8 +11,6 @@ cooldown_min = 100 //50 deciseconds reduction per rank include_user = 1 centcom_cancast = 0 //Prevent people from getting to centcom - - var phaseshift = 0 var/jaunt_duration = 50 //in deciseconds /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded @@ -26,63 +24,46 @@ animation.density = 0 animation.anchored = 1 animation.icon = 'icons/mob/mob.dmi' - animation.icon_state = "liquify" animation.layer = 5 animation.master = holder target.ExtinguishMob() if(target.buckled) target.buckled.unbuckle() - if(phaseshift == 1) - animation.dir = target.dir - flick("phase_shift",animation) - target.loc = holder - sleep(jaunt_duration) - mobloc = get_turf(target.loc) - animation.loc = mobloc - target.canmove = 0 - holder.reappearing = 1 - sleep(20) - animation.dir = target.dir - flick("phase_shift2",animation) - sleep(5) - if(!target.Move(mobloc)) - for(var/direction in list(1,2,4,8,5,6,9,10)) - var/turf/T = get_step(mobloc, direction) - if(T) - if(target.Move(T)) - break - target.canmove = 1 - target.notransform = 0 - target.client.eye = target - del(animation) - del(holder) - else - flick("liquify",animation) - target.loc = holder - var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() - steam.set_up(10, 0, mobloc) - steam.start() - sleep(jaunt_duration) - mobloc = get_turf(target.loc) - animation.loc = mobloc - steam.location = mobloc - steam.start() - target.canmove = 0 - holder.reappearing = 1 - sleep(20) - flick("reappear",animation) - sleep(5) - if(!target.Move(mobloc)) - for(var/direction in list(1,2,4,8,5,6,9,10)) - var/turf/T = get_step(mobloc, direction) - if(T) - if(target.Move(T)) - break - target.canmove = 1 - target.notransform = 0 - target.client.eye = target - del(animation) - del(holder) + jaunt_disappear(animation, target) + target.loc = holder + target.notransform=0 //mob is safely inside holder now, no need for protection. + jaunt_steam(mobloc) + sleep(jaunt_duration) + mobloc = get_turf(target.loc) + animation.loc = mobloc + jaunt_steam(mobloc) + target.canmove = 0 + holder.reappearing = 1 + sleep(20) + jaunt_reappear(animation, target) + sleep(5) + if(!target.Move(mobloc)) + for(var/direction in list(1,2,4,8,5,6,9,10)) + var/turf/T = get_step(mobloc, direction) + if(T) + if(target.Move(T)) + break + target.canmove = 1 + target.client.eye = target + del(animation) + del(holder) + +/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_disappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "liquify" + flick("liquify",animation) + +/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_reappear(var/atom/movable/overlay/animation, var/mob/living/target) + flick("reappear",animation) + +/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_steam(var/mobloc) + var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() + steam.set_up(10, 0, mobloc) + steam.start() /obj/effect/dummy/spell_jaunt name = "water" diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index d2221d97303ac522b69361ba81b255d96b8496d7..0ffd3ebd1a0dd27fb267fdeb82472fdac05caa10 100644 GIT binary patch delta 671 zcmV;Q0$}~)h703{3y?Yn&2ri>5XX@~D}U?9?rOixE%|o;{o#phA0M)3uud9HHstQp zGMnus^MY*1s>o&nBo}`8;ym?0HsnSWt+(>5kJ5S@t^ROqIwr*pQr@YtnQm8KPvAoD+`pVfL}z;lrdfK2+o!aHB>Sj(|<0s z(SXVJ|q~@ryqSb*| zV-4CH-;@Ms#Ho`K|2)r^;h-EjET#30Zt7LiRMzf0N_&Twr6w@SdB!6LmqWnjEV(SIwTSnqrk zG|fTQJ0A`G2T-xF=LqT@CKm8%7P*C%`WHp(>qXb#TcWYnSX8EE8`g|+c{N{;^25ZI zzvV@z#{(PhJ5EprWm03KwlzKOF121ZvIbmP_X;026$ogJ7x-;Z`wY$}{4N*9`N&K< zNvZXGJzrm#lR0Yp(4#qDaDQv|DZ_1a0H3d&pbknWWD{AYKDfi4aEq&g8)c{;1tL}t z%lYf)UDQhpc&ZM{O3@mBD}2@Vc(Dx91E}bnI}>vYkhmz7olJO%9i;Ukb^R*Y1lL%4 zaM={k*aUmIjr|L8j-7NB>{5Jh$^FxoY#$%8zqo|9b4$M6e}8x)+sB9O8LX2=lMT81 zw9ICE$-E#NvMREf0Lg_PzBo@kkPW#JMQij94ma71N$bdl}D&QB9Gi6K{T!OPDLj#oz$A7d7 zZ8V@V3(qNb``s(a;s{@CII8LQdVe*R)c0y$ETrmVJE9&0L9?I!d_|?Ab&(Gq!G9<&ZCiXVVsv#Ckyc&#f5QxCpAZv6|D}$ z8f(zr_@*R4Bc@J{_~&`P3@7EtVJWR|EMI6-8;f^e%6jF~d>y6f#!e5+AEQYN-WnM( zvp%hrmnWQ>F^zC_+95uMN9_DFfp@iho`K#d_zX zplJqK?|d}%A3(*@o+GGtm{`K6MdTJ*>R%K+UoW}_za<)LjYVZzwqebvmRIxjs6I^W z^0&NbdOWc4zT*UCP$o4tYFpFecB%EUku~7Tx>xwHsX#z$yuf#Z+GlV+;di+(&PQg_ zNlC5e>-qY^oXpYKhaS!Of`41HPZ@5b1^9gJ1a(k4A)Cl$YEmCLp%quaHOf#wG99b^ z<^1*YF2kh-yetQ0rD%=60lsQ`{9p{y1E}asI}>vYka#I7JDKppI!Nn7>Q$>`6RffH z>{5Pj$^FxoY#$%8zbwqL?Y;i*nE(JF0E6ZNhvotSx8?!@ FeZZ68Nv!|? From be0f52b6236fc8c6c2f819f97feed0ea6ada6cf2 Mon Sep 17 00:00:00 2001 From: fleure Date: Tue, 31 Dec 2013 17:06:34 +0000 Subject: [PATCH 308/315] Fixed bruisepacks not working --- code/game/objects/items/stacks/medical.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index c143ddd39e6..4369c3b99b6 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -64,10 +64,10 @@ affecting = H.get_organ("head") - if (affecting.heal_damage(src.heal_brute, src.heal_burn, 0)) - H.update_damage_overlays(0) + if (affecting.heal_damage(src.heal_brute, src.heal_burn, 0)) + H.update_damage_overlays(0) - M.updatehealth() + M.updatehealth() else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) From 61f2cf929261e5cf1108a985c811a685fac516d7 Mon Sep 17 00:00:00 2001 From: fleure Date: Tue, 31 Dec 2013 23:39:30 +0000 Subject: [PATCH 309/315] Fixed stabbing head with thick suit on --- code/modules/mob/living/carbon/human/human.dm | 15 +++++++-------- code/modules/mob/mob_helpers.dm | 6 ++++++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3eb9e044d4f..d9aaa28c2ac 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -458,13 +458,12 @@ target_zone = user.zone_sel.selecting // If targeting the head, see if the head item is thin enough. // If targeting anything else, see if the wear suit is thin enough. - switch(target_zone) - if("head") - if(head && head.flags & THICKMATERIAL) - . = 0 - else - if(wear_suit && wear_suit.flags & THICKMATERIAL) - . = 0 + if(above_neck(target_zone)) + if(head && head.flags & THICKMATERIAL) + . = 0 + else + if(wear_suit && wear_suit.flags & THICKMATERIAL) + . = 0 if(!. && error_msg && user) // Might need re-wording. - user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"]." + user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"]." \ No newline at end of file diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 1d109b80f5b..088e208b8ac 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -169,6 +169,12 @@ proc/isorgan(A) return zone +/proc/above_neck(zone) + var/list/zones = list("head", "mouth", "eyes") + if(zones.Find(zone)) + return 1 + else + return 0 /proc/stars(n, pr) if (pr == null) From 4a01ed176cab9c3a21d68a78041eaac06a4637cd Mon Sep 17 00:00:00 2001 From: fleure Date: Wed, 1 Jan 2014 15:33:49 +0000 Subject: [PATCH 310/315] Fixed stabbing error message target check --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d9aaa28c2ac..41ddbb312f6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -466,4 +466,4 @@ . = 0 if(!. && error_msg && user) // Might need re-wording. - user << "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"]." \ No newline at end of file + user << "There is no exposed flesh or thin material [above_neck(target_zone) ? "on their head" : "on their body"]." \ No newline at end of file From 40ce9dfeb717d51b6b734ddfc0e1fe6f30b8d183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matev=C5=BE=20Baloh?= Date: Wed, 1 Jan 2014 16:57:25 +0100 Subject: [PATCH 311/315] Changelog for PR 2181 Link to pull request: https://github.com/tgstation/-tg-station/pull/2181 --- html/changelog.html | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index 516f47cde9c..4d1fade3f8a 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,7 +52,17 @@ should be listed in the changelog upon commit tho. Thanks. --> -
    + + +
    +

    1 January 2014

    +

    Errorage updated:

    +
      +
    • The damage overlay for humans starts a little later than before. It used to start at 10 points of fire + brute damage, it now starts at 35.
    • +
    +
    + +

    31 December 2013

    Fleure updated:

    + [left_part] + [list_queue()]